Storage
Storage
This describes some implementation details of storage layer.
Ensemble Placement Policy
EnsemblePlacementPolicy encapsulates the algorithm that bookkeeper client uses to select a number of bookies from the cluster as an ensemble for storing data. The algorithm is typically based on the data input as well as the network topology properties.
By default, BookKeeper offers a RackawareEnsemblePlacementPolicy for placing the data across racks within a datacenter, and a RegionAwareEnsemblePlacementPolicy for placing the data across multiple datacenters.
How does EnsemblePlacementPolicy work?
The interface of EnsemblePlacementPolicy is described as below.
public interface EnsemblePlacementPolicy { /** * Initialize the policy. * * @param conf client configuration * @param optionalDnsResolver dns resolver * @param hashedWheelTimer timer * @param featureProvider feature provider * @param statsLogger stats logger * @param alertStatsLogger stats logger for alerts */ public EnsemblePlacementPolicy initialize(ClientConfiguration conf, Optional<DNSToSwitchMapping> optionalDnsResolver, HashedWheelTimer hashedWheelTimer, FeatureProvider featureProvider, StatsLogger statsLogger, AlertStatsLogger alertStatsLogger); /** * Uninitialize the policy */ public void uninitalize(); /** * A consistent view of the cluster (what bookies are available as writable, what bookies are available as * readonly) is updated when any changes happen in the cluster. * * @param writableBookies * All the bookies in the cluster available for write/read. * @param readOnlyBookies * All the bookies in the cluster available for readonly. * @return the dead bookies during this cluster change. */ public Set<BookieSocketAddress> onClusterChanged(Set<BookieSocketAddress> writableBookies, Set<BookieSocketAddress> readOnlyBookies); /** * Choose numBookies bookies for ensemble. If the count is more than the number of available * nodes, {@link BKNotEnoughBookiesException} is thrown. * * @param ensembleSize * Ensemble Size * @param writeQuorumSize * Write Quorum Size * @param excludeBookies * Bookies that should not be considered as targets. * @return list of bookies chosen as targets. * @throws BKNotEnoughBookiesException if not enough bookies available. */ public ArrayList<BookieSocketAddress> newEnsemble(int ensembleSize, int writeQuorumSize, int ackQuorumSize, Set<BookieSocketAddress> excludeBookies) throws BKNotEnoughBookiesException; /** * Choose a new bookie to replace bookieToReplace. If no bookie available in the cluster, * {@link BKNotEnoughBookiesException} is thrown. * * @param bookieToReplace * bookie to replace * @param excludeBookies * bookies that should not be considered as candidate. * @return the bookie chosen as target. * @throws BKNotEnoughBookiesException */ public BookieSocketAddress replaceBookie(int ensembleSize, int writeQuorumSize, int ackQuorumSize, Collection<BookieSocketAddress> currentEnsemble, BookieSocketAddress bookieToReplace, Set<BookieSocketAddress> excludeBookies) throws BKNotEnoughBookiesException; /** * Reorder the read sequence of a given write quorum writeSet. * * @param ensemble * Ensemble to read entries. * @param writeSet * Write quorum to read entries. * @param bookieFailureHistory * Observed failures on the bookies * @return read sequence of bookies */ public List<Integer> reorderReadSequence(ArrayList<BookieSocketAddress> ensemble, List<Integer> writeSet, Map<BookieSocketAddress, Long> bookieFailureHistory); /** * Reorder the read last add confirmed sequence of a given write quorum writeSet. * * @param ensemble * Ensemble to read entries. * @param writeSet * Write quorum to read entries. * @param bookieFailureHistory * Observed failures on the bookies * @return read sequence of bookies */ public List<Integer> reorderReadLACSequence(ArrayList<BookieSocketAddress> ensemble, List<Integer> writeSet, Map<BookieSocketAddress, Long> bookieFailureHistory); }
The methods in this interface covers three parts - 1) initialization and uninitialization; 2) how to choose bookies to place data; and 3) how to choose bookies to do speculative reads.
Initialization and uninitialization
The ensemble placement policy is constructed by jvm reflection during constructing bookkeeper client. After the EnsemblePlacementPolicy is constructed, bookkeeper client will call #initialize to initialize the placement policy.
The #initialize method takes a few resources from bookkeeper for instantiating itself. These resources include:
- ClientConfiguration : The client configuration that used for constructing the bookkeeper client. The implementation of the placement policy could obtain its settings from this configuration.
- DNSToSwitchMapping: The DNS resolver for the ensemble policy to build the network topology of the bookies cluster. It is optional.
- HashedWheelTimer: A hashed wheel timer that could be used for timing related work. For example, a stabilize network topology could use it to delay network topology changes to reduce impacts of flapping bookie registrations due to zk session expires.
- FeatureProvider: A feature provider that the policy could use for enabling or disabling its offered features. For example, a region-aware placement policy could offer features to disable placing data to a specific region at runtime.
- StatsLogger: A stats logger for exposing stats.
- AlertStatsLogger: An alert stats logger for exposing critical stats that needs to be alerted.
The ensemble placement policy is a single instance per bookkeeper client. The instance will be #uninitialize when closing the bookkeeper client. The implementation of a placement policy should be responsible for releasing all the resources that allocated during #initialize.
How to choose bookies to place
The bookkeeper client discovers list of bookies from zookeeper via BookieWatcher - whenever there are bookie changes, the ensemble placement policy will be notified with new list of bookies via onClusterChanged(writableBookie, readOnlyBookies). The implementation of the ensemble placement policy will react on those changes to build new network topology. Subsequent operations like newEnsemble or replaceBookie hence can operate on the new network topology.
- newEnsemble(ensembleSize, writeQuorumSize, ackQuorumSize, excludeBookies)
- Choose ensembleSize bookies for ensemble. If the count is more than the number of available nodes, BKNotEnoughBookiesException is thrown.
- replaceBookie(ensembleSize, writeQuorumSize, ackQuorumSize, currentEnsemble, bookieToReplace, excludeBookies)
- Choose a new bookie to replace bookieToReplace. If no bookie available in the cluster, BKNotEnoughBookiesException is thrown.
Both RackAware and RegionAware placement policies are TopologyAware policies. They build a NetworkTopology on responding bookie changes, use it for ensemble placement and ensure rack/region coverage for write quorums - a write quorum should be covered by at least two racks or regions.
Network Topology
The network topology is presenting a cluster of bookies in a tree hierarchical structure. For example, a bookie cluster may be consists of many data centers (aka regions) filled with racks of machines. In this tree structure, leaves represent bookies and inner nodes represent switches/routes that manage traffic in/out of regions or racks.
For example, there are 3 bookies in region A. They are bk1, bk2 and bk3. And their network locations are /region-a/rack-1/bk1, /region-a/rack-1/bk2 and /region-a/rack-2/bk3. So the network topology will look like below:
root | region-a / \ rack-1 rack-2 / \ \ bk1 bk2 bk3
Another example, there are 4 bookies spanning in two regions A and B. They are bk1, bk2, bk3 and bk4. And their network locations are /region-a/rack-1/bk1, /region-a/rack-1/bk2, /region-b/rack-2/bk3 and /region-b/rack-2/bk4. The network topology will look like below:
root / \ region-a region-b | | rack-1 rack-2 / \ / \ bk1 bk2 bk3 bk4
The network location of each bookie is resolved by a DNSResolver (interface is described as below). The DNSResolver resolves a list of DNS-names or IP-addresses into a list of network locations. The network location that is returned must be a network path of the form /region/rack, where / is the root, and region is the region id representing the data center where rack is located. The network topology of the bookie cluster would determine the number of components in the network path.
/** * An interface that must be implemented to allow pluggable * DNS-name/IP-address to RackID resolvers. * */ @Beta public interface DNSToSwitchMapping { /** * Resolves a list of DNS-names/IP-addresses and returns back a list of * switch information (network paths). One-to-one correspondence must be * maintained between the elements in the lists. * Consider an element in the argument list - x.y.com. The switch information * that is returned must be a network path of the form /foo/rack, * where / is the root, and 'foo' is the switch where 'rack' is connected. * Note the hostname/ip-address is not part of the returned path. * The network topology of the cluster would determine the number of * components in the network path. *
 * * If a name cannot be resolved to a rack, the implementation * should return {@link NetworkTopology#DEFAULT_RACK}. This * is what the bundled implementations do, though it is not a formal requirement * * @param names the list of hosts to resolve (can be empty) * @return list of resolved network paths. * If names is empty, the returned list is also empty */ public List<String> resolve(List<String> names); /** * Reload all of the cached mappings. * * If there is a cache, this method will clear it, so that future accesses * will get a chance to see the new data. */ public void reloadCachedMappings(); }
By default, the network topology responds to bookie changes immediately. That means if a bookie's znode appears in or disappears from zookeeper, the network topology will add the bookie or remove the bookie immediately. It introduces instability when bookie's zookeeper registration becomes flapping. In order to address this, there is a StabilizeNetworkTopology which delays removing bookies from network topology if they disappear from zookeeper. It could be enabled by setting the following option.
# enable stabilize network topology by setting it to a positive value. bkc.networkTopologyStabilizePeriodSeconds=10
RackAware and RegionAware
RackAware placement policy basically just chooses bookies from different racks in the built network topology. It guarantees that a write quorum will cover at least two racks.
RegionAware placement policy is a hierarchical placement policy, which it chooses equal-sized bookies from regions, and within each region it uses RackAware placement policy to choose bookies from racks. For example, if there is 3 regions - region-a, region-b and region-c, an application want to allocate a 15-bookies ensemble. First, it would figure out there are 3 regions and it should allocate 5 bookies from each region. Second, for each region, it would use RackAware placement policy to choose 5 bookies.
How to choose bookies to do speculative reads?
reorderReadSequence and reorderReadLACSequence are two methods exposed by the placement policy, to help client determine a better read sequence according to the network topology and the bookie failure history.
In RackAware placement policy, the reads will be tried in following sequence:
- bookies are writable and didn't experience failures before
- bookies are writable and experienced failures before
- bookies are readonly
- bookies already disappeared from network topology
In RegionAware placement policy, the reads will be tried in similar following sequence as RackAware placement policy. There is a slight different on trying writable bookies: after trying every 2 bookies from local region, it would try a bookie from remote region. Hence it would achieve low latency even there is network issues within local region.
How to enable different EnsemblePlacementPolicy?
Users could configure using different ensemble placement policies by setting following options in distributedlog configuration files.
# enable rack-aware ensemble placement policy bkc.ensemblePlacementPolicy=org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicy # enable region-aware ensemble placement policy bkc.ensemblePlacementPolicy=org.apache.bookkeeper.client.RegionAwareEnsemblePlacementPolicy
The network topology of bookies built by either RackawareEnsemblePlacementPolicy or RegionAwareEnsemblePlacementPolicy is done via a DNSResolver. The default DNSResolver is a script based DNS resolver. It reads the configuration parameters, executes any defined script, handles errors and resolves domain names to network locations. The script is configured via following settings in distributedlog configuration.
bkc.networkTopologyScriptFileName=/path/to/dns/resolver/script
Alternatively, the DNSResolver could be configured in following settings and loaded via reflection. DNSResolverForRacks is a good example to check out for customizing your dns resolver based our network environments.
bkEnsemblePlacementDnsResolverClass=org.apache.distributedlog.net.DNSResolverForRacks


What devices may I use for jailed testing with NowSecure Gadget? What iOS versions?
You may use any Apple device for jailed testing running iOS 11.0 - 11.4.
Will I continue to have the ability to conduct tests on jailbroken devices?
Yes. NowSecure Workstation 5.2.1 will provide the flexibility to test on both jailbroken and jailed (protected) devices. Do not upgrade your NowSecure provided jailbroken device to conduct jailed testing. Jailed testing does not require additional configuration from NowSecure or your organization, so customers may leverage their own devices for jailed tests.
Can I use jailed testing option for 3rd party public App Store apps?
Not at this time. The NowSecure Gadget injects a dynamic library into the debug build of a mobile app when it is launched. If the app is encrypted and non-debug, we’re unable to hook into the app and inject the code. Jailed testing may only be leveraged for debuggable, first-party developed apps at this time.
Are there any differences in NowSecure Findings for jailbroken tests vs. jailed tests?
Jailed testing produces the same findings as jailbroken tests, except jailed testing does not include Snapshots at this time. This is because Snapshot requires system level permissions and jailed testing operates with only app level permissions. A workaround is planned for the future.
Are there differences in workflow between jailed and jailbroken testing?
Yes, there is one slight difference. When conducting jailbroken tests, Analysts must first launch the application on the mobile device to get started. With jailed testing, NowSecure Workstation will launch the chosen application on the Analyst’s behalf.
How do I provision a non-jailbroken device?
For Jailed testing, there is no provisioning method for new devices, the jailed agent only communicates via the API once the dynamic lib is injected into the app. There are three overall requirements to use a jailed device:
If Workstation isn’t seeing the device, make sure it is passed through to the VM, and that you have selected the “Trust” option on the device to make sure it gets mounted into the OS properly. If you connected the device before updating the Workstation deb, then the device may be stuck in an odd state, and to fix it, you should just need to disconnect/reconnect it (this is related to some dependency updates that were pulled down upon deb install).
The application was unable to launch. This could be caused from the build expiring, or that it is no longer trusted. Check the trust settings under General -> Device Management to ensudre the app is verified. Other, you may need to reinstall the application.
If you are receiving this error:
On the iOS device, navigate to Settings
> General
> Profiles & Device Mangement
, Click on the email address under the Developer App
section. Then click Verify App
Try re-installing the application on the device:
Download Cydia Impactor from http://www.cydiaimpactor.com/
Create an Apple ID: https://appleid.apple.com/account#!&page=create
Make sure you have DISABLED 2-Factor Authentication on your Apple ID.
With your iOS device connected to your computer and iTunes closed out, launch Cydia Impactor
With Cydia Impactor launched, you will see the device name in top field of the window.
Drag your application
You will be prompted to enter an Apple ID. Enter your Apple ID Username and Password.
Impactor will sign and sideload the IPA automatically to your device.
On the iOS device, navigate to Settings
> General
> Profiles & Device Mangement
, Click on the email address under the Developer App
section. Then click Verify App
Try remounting the Developer Image for the iOS Device Version:
In Workstation, click on Options
> Device Manger
Jailed
button and click the Test
button.This will automatically mount the developer image for the iOS device version.


The font family property allows you to specify the typeace that should be used for any text inside the element to which a CSS rule applies. Typically the user has to have the specified typeface installed but there are way to import unavailable typefaces from within the CSS document itself. Its good practice to end with a generic font name for the type of font you would like. If a font name is made up of more than one word it should be put in double quotes. It is also good practice to not use more than 3 typefaces on a singe page
There are three different ways to specify the size of a font
Using "@font-face" in Css allows you to use a font that is not on the users computer. The 'font-family' property specifies the name of the fotn that will be used in the rest of the style sheet. The 'src'property specifies the path to the font. The 'format' property specifies the format that the font is supplied in.Different browsers support different formats for fonts so different formats must be supplied to reach all browsers
The 'font-weight' and 'font-style' properties allow you to make certain elements to be 'normal'/'bold' and 'normal'/'italic'/'oblique
The 'text-transform' element is used to change the text of an aelement to 'uppercase', 'lowercase', or 'capitalize'.Setting the 'text-transform' element to 'capitalize' capitalizes the first letter of each word
The 'text-decoration'can be set to
'line-height' is an property that is used to set the vertical space between the lines of text. Pronounced "ledding", it is defined by typographers as the distance between the highest part of the lower line of text and the lowest part of the higher line of text. It is good practice to set the value in 'em' so that users can adjust the default size of their text in their browser and have the value of 'line-height' scale automatically.You may have noticed that this paragraph is set to a value of 2 ems
Interesting Fact: The difference between the font-size and line-height is equal to the leading.
Kerning is the term for the space between ech letter. This can be controlled with the 'letter-spacing' element. The 'word-spacing' element can also be used to change the spacing between words. By default word spcing is set to 0.25em.
The 'text-align' property allows you to control the alignment of text. It can be set to
The 'vertical-align' property is typically used to align text with inline elements such as 'em', or 'img', or 'strong'
The 'text-indent' property allows you to indent the first line of text within an element. The amount to indent is usually doen in px or em.
The 'text-shadow' property is used to create a drop shadow behind words. It can also be used to create an embossed effect by adding a shadow that is slightly lighter than the text. There are four values for this property:
The ':first-letter' and ':first-line' properties are pseudo-elements because they come directly afterthe end of the CSS selector
The ':link' and ':visited' are considered pseudo-classes that allow you to set styles for links that have and have not been visited yet.
The :hover, :active, and :focus pseudo-classes are used to change the appearance of elements when a user is interacting with them. :hover applies when the mouse is above the element.: active is for when the user clicks the element. This is often used to make it look like the button is actually being pressed when the user presses down on their mouse.It should be kept in mind that the pseudo classes must always appear in the following order:


Golden-retriever is big furry nice dog, good at taking care of sheep.
They are big guys. They live at Judy and Mike's house. Their names are Max and Rex.


{% extends "base.html" %} {% block page_title %}Page Not Found{% endblock %} {% block content %} 404 Sorry, that page doesn't exist. {% endblock %}
Sorry, that page doesn't exist.


Declare the actions for the current selected table. Must be called before connect()
Actions are created like this:
.actions([
{
name:"action-name",
args: ["array","of","arguments"],
call: function(args) {
// Because of our "args" array the args input of this function will look like this:
// SomeSQL will not let any other arguments into this function.
args:{
array:'',
of:'',
arguments:''
}
//We can use them in our query
return this.query("upsert",{balance:0}).where(['name','IN',args.array]).exec();
}
}
])
Then later in your app..
SomeSQL("users").doAction("action-name",{array:'',of:"",arguments:""}).then(function(result) {
console.log(result) <=== result of your view will be there.
})
Optionally you can type cast the arguments at run time typescript style, just add the types after the arguments in the array. Like this:
.actions[{
name:...
args:["name:string","balance:float","active:bool"]
call:...
}]
SomeSQL will force the arguments passed into the function to those types.
Possible types are string, bool, float, int, map, array and bool.
Add a filter to the usable list of filters for this database. Must be called BEFORE connect(). Example:
SomeSQL().addFilter('addOne',function(rows) {
return rows.map((row) => row.balance + 1);
})
Then to use it in a query:
SomeSQL("users").query("select").filter('addOne').exec();
Set a filter to always be applied, on every single query.
Inits the backend database for use.
Perform a custom action supported by the database driver. This currently does nothing.
Init an action for the current selected table. Reference the "actions" method for more info.
Example:
SomeSQL("users").doAction('action-name',{foo:"bar"}).then(function(result) {
console.log(result) <== result of your action
});
Executes the current pending query to the db engine.
Adds a custom filter to the query.  The memory DB supports sum, first, last, min, max, average, and count
Example:
//get number of results
SomeSQL("users").query("select").filter('count').exec();
Execute a specific view. Refernece the "views" function for more description.
Example:
SomeSQL("users").getView('view-name',{foo:"bar"}).then(function(result) {
console.log(result) <== view result.
})
Limits the result to a specific amount. Example:
.limit(20) // Limit to the first 20 results
Load a CSV file into the DB. Headers must exist and will be used to identify what columns to attach the data to.
This function performs a bunch of upserts, so expect appropriate behavior based on the primary key.
Load JSON directly into the DB. JSON must be an array of maps, like this:
[
{"name":"billy","age":20},
{"name":"johnny":"age":30}
]
Declare the data model for the current selected table.
Please reference the DataModel interface for how to impliment this, a quick example:
.model([
{key:"id",type:"int",props:["ai","pk"]} //auto incriment and primary key
{key:"name",type:"string"}
])
Remove a specific event handler from being triggered anymore.
Offsets the results by a specific amount from the beginning. Example:
.offset(10) //Skip the first 10 results.
Adds an event listener to the selected database table.
Order the results by a given column or columns.
Examples:
.orderBy({username:"asc"}) // order by username column, ascending
.orderBy({balance:"desc",lastName:"asc"}) // order by balance descending, then lastName ascending.
Start a query into the current selected table. Possibl querys are "select", "upsert", "delete", and "drop";
Select is used to pull a set of rows or other data from the table. When you use select the optional second argument of the query is an array of strings that allow you to show only specific columns.
Select examples:
.query("select") // No arguments, select all columns
.query("select",['username']) // only get the username column
.query("select",["username","balance"]) //Get two columns, username and balance.
Upsert is used to add data into the database. If the primary key rows are null or undefined, the data will always be added. Otherwise, you might be updating existing rows. The second argument of the query with upserts is always an Object of the data to upsert.
Upsert Examples:
.query("upsert",{id:1,username:"Scott"}) //Set username to "Scott" where the row ID is 1.
.query("upsert",{username:"Scott"}) //Add a new row to the db with this username in the row. Optionally, if you use a WHERE statement this data will be applied to the rows found with the where statement.
Delete is used to remove data from the database. It works exactly like select, except it removes data instead of selecting it. The second argument is an array of columns to clear. If no second argument is passed, the database is dropped.
Delete Examples:
.query("delete",['balance']) //Clear the contents of the balance column. If a where statment is passed you'll only clear the columns of the rows selected by the where statement.
Drop is used to completely clear the contents of a database. There are no arguments.
Drop Examples:
.query("drop")
Changes the table pointer to a new table.
Export the current query to a CSV file.
Declare the views for the current selected table. Must be called before connect()
Views are created like this:
.views([
{
name:"view-name",
args: ["array","of","arguments"],
call: function(args) {
// Because of our "args" array the args input of this function will look like this:
// SomeSQL will not let any other arguments into this function.
args:{
array:'',
of:'',
arguments:''
}
//We can use them in our query
return this.query('select').where(['name','IN',args.array]).exec();
}
}
])
Then later in your app..
SomeSQL("users").getView("view-name",{array:'',of:"",arguments:""}).then(function(result) {
console.log(result) <=== result of your view will be there.
})
Optionally you can type cast the arguments at run time typescript style, just add the types after the arguments in the array. Like this:
.views[{
name:...
args:["name:string","balance:float","active:bool"]
call:...
}]
SomeSQL will force the arguments passed into the function to those types.
Possible types are string, bool, float, int, map, array and bool.
Used to select specific rows based on a set of conditions. You can pass in a single array with a conditional statement or an array of arrays seperated by "and", "or" for compound selects. A single where statement has the column name on the left, an operator in the middle, then a comparison on the right.
Where Examples:
.where(['username','=','billy'])
.where(['balance','>',20])
.where(['catgory','IN',['jeans','shirts']])
.where([['name','=','scott'],'and',['balance','>',200]])
.where([['id','>',50],'or',['postIDs','IN',[12,20,30]],'and,['name','LIKE','Billy']])
Generate a unique hash from a given string. The same string will always return the same hash. Stolen shamelessly from http://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript-jquery
Generate a Psudo Random UUID Stolen shamelessly from http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript
Generated using TypeDoc
The primary abstraction class, there is no database implimintation code here. Just events, quries and filters.
SomeSQLInstance


| Key | {{constraint.key}} | Severity | {{constraint.severity}} | Human | {{constraint.human}} | Expression | {{constraint.expression}} | XPath | {{constraint.xpath}} |
|---|
| Name | Common | Strength | {{binding.strength}} | Description | {{binding.description}} | ValueSet | {{binding.valueSetReference.reference}} |
|---|


Syria downs Israeli missiles over Damascus: State media
by AFPSyrian anti-aircraft defences on Wednesday brought down missiles fired from "Israeli warplanes" over the capital Damascus, state media said.
"At 1:20 am (2320 GMT) on Wednesday, Israeli warplanes... targeted the vicinity of the city of Damascus with a number of missiles," SANA news agency quoted a military source as saying.
"Our air defence confronted the heavy attack and intercepted the hostile missiles, and was able to destroy most of them before reaching their targets."
An AFP correspondent in Damascus heard several large explosions.
SANA added that the aggression was carried out from "Lebanese and Palestinian territories".
Israel sometimes launches its attacks on Syria from planes flying over neighbouring Lebanon.
Since the start of Syria's war in 2011, Israel has carried out hundreds of strikes on the country's territory against what it says are Iranian and Hezbollah targets.
It comes after Israel's air defences intercepted four rockets fired from Syria on Tuesday morning, prompting reported retaliatory missile strikes.
The Syrian Observatory for Human Rights said Tuesday's rockets were fired from positions around the capital held by groups loyal to the Damascus government.
The flare-up comes after a major escalation in and around Gaza last week following Israel's targeted killing of a commander of Palestinian militant group Islamic Jihad, which is allied with Damascus.


Jane Doe
Chief Technical Officer @Luxon
You can put a nice description hereChief Technical Officer @Luxon
You can put a nice description hereHereafter you'll find the latest articles I've written mostly about tech and science stuffs!
You can describe yourself here with a few words…


After a year of work, Herbie 1.2 has been released. This release focuses on creativity and accuracy, with a new system to infer better branches and more accurate defaults for Herbie's various parameters. Read about all the changes in the release notes.
We teamed up with Heiko and Eva on the Daisy team to combine our tools and evaluate how best to use them together—it'll be published at FM’18. If you're using Herbie with other floating point tools, let us know!
Pavel wrote a retrospective on the early history of Herbie, and some lessons learned.
Pavel gave a talk at MPI-SWS Saarbrücken on Herbie, Herbgrind, lessons learned, and what comes next. Thank you Eva Darulova and her students for the invitation and the warm welcome. The video was recorded and can be watched on YouTube.
After incubating on this website, Herbgrind has moved to a new website hosted at UCSD, where Alex, Herbie star and the main Herbgrind developer, is now doing his PhD. We'll continue our close collaboration, including in the FPBench project, and are hoping the new, more-focused websites help users.
Just one month after the beta, Herbie 1.1 has been released. This release adds a browser interface for Herbie, and includes significant bug fixes, usability tweaks, and improvements. Read about all the changes in the release notes.
Our sister project Herbgrind has released version 0.42. This pre-release is a reworked, faster, and more stable Herbgrind, which can find root causes for floating-point errors in the largest and gnarliest of codebases!
After months of work, a beta of Herbie 1.1 has been released. This release adds a browser interface for Herbie, and includes significant bug fixes, usability tweaks, and improvements. Read about all the changes in the release notes.
Zach is giving a talk at the University of Utah about Herbie, FPBench, and Herbgrind. Please come to learn about automated tools for floating point!
After months of work, the Herbie developers are proud to announce the release of Herbie 1.0. This release transitions to the FPCore format from the FPBench initiative, and includes significant bug fixes, usability tweaks, and improvements. Read about all the changes in the release notes.
In preparation for the Version 1.0 release, we've renamed the pi and e constants to upper case. This matches libm and should make it a little harder to cause bugs. Herbie will now optimize expressions like (exp 1) to E.
We're proud to announce that we've been collaborating with Prof. Martel and his students to build a common benchmark suite and format for floating point tools. Version 1.0 of Herbie will support only the FPBench format.
Pavel is giving a talk at Google on how Herbie works and what our plans for the future are.
Pavel is giving a talk at MIT on how Herbie works internally.
In preparation for the Version 1.0 release, we've renamed several functions in Herbie to match the libm names. In particular, look out for abs, which is now fabs, and expt, which is now pow.
Pavel is giving a talk at MathWorks on how Herbie works answered questions on how it could be extended.
The Herbie Rust Linter plugs into the Rust compiler to add warnings for numerically unstable expressions, and suggests Herbie's more accurate output as a hint.
The Herbie GHC Plugin by Mike Izbicki automatically runs Herbie on applicable expressions in a Haskell program. He's also scanned all of Stackage LTS-3.5 for numerical inaccuracies with Herbie.
Herbie is chiefly developed at the University of Washington Programming Languages and Software Engineering group, with contributions from a supportive community.


We know that staring at a bunch of monochromatic text is annoying. Give your work some color! Take control of your code with over 100 supported syntax highlighting languages, as well as autocompletion.
SUCH COLORS. MUCH CHOICE
No more guessing about what colors you're going to use, with the built-in color picker.
TWO HEADS ARE BETTER THAN ONE
Combine brainpower with others by collaborating via TogetherJS.
GOOGLE!
Open, save, upload, and create files easily with a high level of Google Drive integration.
Have internet access? Great! You could be viewing, editing, and testing your code right now.
You code is here. And here. And here.
...ON ANY DEVICE
Code Your Cloud is based on Bootstrap, which is designed to work well on mobile devices. As a result, so does Code Your Cloud.
Mac, Windows, iPhone, oh my!
CONSOLES GALORE
Why settle with just writing code? Test it, too! With code your cloud, you can run javascript code right in the browser. You can also use the built-in javascript console to make calculations or test code.
MEASURE ONCE TWICE, CUT ONCE
Test out your masterpiece at every step of development with our built-in previewer. See how your HTML files look in real life, test the appearance of SVGs, and more.
Mistakes are important, but shouldn't be part of your final product.
LOREM IPSUM DOLOR...
If you need to test how your project looks with large amounts of text, random text generators are invaluable tools. Luckily, Code Your Cloud has a built-in lorem generator. Create any number of words, sentences, or paragraphs in seconds.
YOUR EDITOR, YOUR WAY
Customize your editor with almost 40 themes, along with various other options.
PUBLISH HTML
Publish html files to your personal directory, and then access it anywhere.
Start coding in the cloud. All you need is a Google account.
CREDITS
Code Your Cloud would not have been possible without the generosity of many developers. A list of credits is available here. We highly recommend that you check them out, and thank the creators.
Thank you for helping to make this page look great!


Before Change
Tests whether the computation of the normalizing factor does the correct
job (i.e. actually normalizes the signal in l1 or l2)
rng = check_random_state(random_state)
size_signal = [2**j for j in range(5, 10)]
norm_type = ["l1", "l2"]
for N in size_signal:
x = rng.randn(N) + 1j * rng.randn(N)
After Change
Tests whether the computation of the normalizing factor does the correct
job (i.e. actually normalizes the signal in l1 or l2)
rng = np.random.RandomState(random_state)
size_signal = [2**j for j in range(5, 10)]
norm_type = ["l1", "l2"]
for N in size_signal:
x = rng.randn(N) + 1j * rng.randn(N)


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 4
Treat yourself to James Martin's easy fishcakes made with the king of smoked fish, Arbroath smokies.
For the Arbroath smokie fishcakes, place the Arbroath smokies (or smoked fish) into a large frying pan and pour over the milk. Bring the milk to the boil, then remove the pan from the heat.
Take the smokies out of the milk and set aside to cool. When cool enough to handle, remove as many bones from the fish as possible, flaking and reserving the flesh as you go. Set aside.
Meanwhile, cook the potatoes in a pan of boiling, salted water for 15-20 minutes, or until tender. Drain well and return the potatoes to the pan, then return the pan to the heat for a further minute or two to dry the potatoes out.
Mash the potatoes until smooth using a potato masher or ricer, then mix them in a bowl with the parsley, chives, egg yolk and flaked fish until well combined. Season, to taste, with salt and freshly ground black pepper.
 Chill in the fridge until firm so that they don’t collapse when you fry them.
Sprinkle the flour onto a plate. Beat the eggs in a bowl. Sprinkle the breadcrumbs onto another plate. Dredge each fishcake in the flour, then dip it into the egg, then roll it in the flour until coated.
Heat the olive oil in a large frying over a medium heat. Add the fishcakes for 3-4 minutes on each side, or until crisp and golden-brown on both sides and completely warmed through.
For the sauce, heat a small frying pan until hot, add a knob of the butter and, when melted, fry the shallots for 1-2 minutes, or until softened.
Add the white wine, chicken stock and cream and bring the mixture to the boil. Reduce the heat until the mixture is simmering and simmer until the volume of liquid has reduced by half and thickened.
Strain the mixture through a fine sieve into a clean pan, then whisk in the remaining butter, the lime juice and zest and the chives. Season, to taste, with salt and freshly ground black pepper.
To serve, divide the mizuna leaves among four serving plates. Place the fishcakes on top and spoon some of the sauce over each portion.


|
IVT
|
Loading of images using HighGUI from OpenCV. More...
Functions | |
| bool | LoadFromFile (CByteImage *pImage, const char *pFilePath) |
| Loads an image from a file. More... | |
| bool | SaveToFile (const CByteImage *pImage, const char *pFilePath) |
| Saves an image to a file. More... | |
Loading of images using HighGUI from OpenCV.
The funtions offered here are useful in case access to JPEG or PNG files is needed. In all other cases (BMP, PPM, PGM), it is recommended to use CByteImage::LoadFromFile(const char *) instead.
| bool ImageAccessCV::LoadFromFile | ( | CByteImage * | pImage, |
| const char * | pFilePath | ||
| ) |
Loads an image from a file.
If an image is already loaded, reinitialization is performed automatically.
Use the file endings .JPG, .JPEG, .jpg or .jpeg for JPEG files, .PNG or .png for PNG files, and .TIFF or .tiff for TIFF files.
For BMP, PPM and PGM files, it is recommended to use CByteImage::LoadFromFile(const char *) instead.
| [in,out] | pImage | The target instance. pImage must contain an allocated instance of CByteImage, but does not need to contain a valid image. |
| [in] | pFilePath | The path to the image file to be loaded. |
Definition at line 57 of file ImageAccessCV.cpp.
| bool ImageAccessCV::SaveToFile | ( | const CByteImage * | pImage, |
| const char * | pFilePath | ||
| ) |
Saves an image to a file.
If an image is already loaded, reinitialization is performed automatically.
Use the file endings .JPG, .JPEG, .jpg or .jpeg for JPEG files, .PNG or .png for PNG files, and .TIFF or .tiff for TIFF files.
For BMP, PPM and PGM files, it is recommended to use CByteImage::LoadFromFile(const char *) instead.
| [in,out] | pImage | The instance of the image to be saved. |
| [in] | pFilePath | The path to the destination file. |
Definition at line 116 of file ImageAccessCV.cpp.


WITNESS LIST Nominations Committee April 14, 2003 - 3:00P Correctional Managed Health Care Committee FOR: Griffin, James Dale (Self) State Office of Risk Management Registering, but not testifying: On: Josselet, Ron E.D. (Martha Rider) Josselet, Ron E.D. (Ronald Beals) Texas Depatment of Insurance FOR: Montemayor, Jose Commissioner of Insurance (Self) Texas Funeral Service Commission FOR: Greenlaw, Martha (Self) Whittington, Harry M. Attorney (Self) ON: Howard, Janice B. (Self) Registering, but not testifying: On: Robbins, O.C. E.D. (Texas Funeral Service Commission Commissioners) Texas School for the Blind On: Hatlen, Phil Superintendent (Texas School for the Blind Board of Trustees) Texas School for the Blind and Visually Impaired Governing Board FOR: Bautista, Jesus Educator (Self) Brooks, Gene Iran Consultant (Self) Galindo, Otilio (Self) Swift, Frankie Lecturer (Self) Vaden Clopton, Donna F. Consultant (Self) Welch, Mary Sue (Self) Wheeler, Jamie L. Teacher (Self)


The TColor32Gradient contains information about the 1D color gradient, that is used as reference for the drawing. Internally it encapsulates an array of TColor32GradientStop
For easy access to the first and last color in the array, theproperties start color and end color are present, but whithout information about the offset. Further color stops may be added by calling AddColorStop.
The color gradient can be stored to a stream by using SaveToStream and recalled by using LoadFromStream with a proprietary format.


Druid components
Button
Basic game button
Text
Wrap on text node with text size adjusting
Blocker
Block input in node zone
Back Handler
Handle back button (Android, backspace)
Locale
Text component with handle localization system
Timer
Run timer on text node
Progress
Basic progress bar
Scroll
Basic scroll component
Grid
Component for manage node positions
Slider
Basic slider component
Checkbox
Basic checkbox component
Checkbox group
Several checkboxes in one group
Radio group
Several checkboxes in one group with single choice
Hover
Trigger component for check node hover state
Input
Component to process user text input


Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima maxime quam architecto quo inventore harum ex magni, dicta impedit.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima maxime quam architecto quo inventore harum ex magni, dicta impedit.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima maxime quam architecto quo inventore harum ex magni, dicta impedit.
This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.
This card has supporting text below as a natural lead-in to additional content.
This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.


Genesis 34:1
And Dinah the daughter of Leah, which she bare unto Jacob, went out to see the daughters of the land.


|
G24Lib
A set of convenient classes, functions and other utilities mainly for quickly writing numerical code. Provides relatively easy integration with CUDA, general Runge-Kutta methods, linear equation solvers and more.
|
Implements some useful macros for the code itself. More...
Go to the source code of this file.
Macros | |
| #define | CUDA_AVAILABLE 0 |
Evaluates to 1 if CUDA is available, 0 otherwise. More... | |
| #define | CUDA_HOS_DEV |
If CUDA is available, evaluates to the attributes __host__ __device__ . Otherwise, to nothing. More... | |
| #define | CUDA_ONLY_DEV |
If CUDA is available, evaluates to the attribute __device__ . Otherwise, to nothing. More... | |
| #define | CUDA_ONLY_HOS |
If CUDA is available, evaluates to the attribute __host__ . Otherwise, to nothing. More... | |
| #define | G24_LIB_CLEAN_UP_MACROS 0 |
Controls if all the macros defined in the library will be #undef ined after use. Default is false . More... | |
| #define | G24_LIB_COMMA_HACK , |
| #define | G24_LIB_FUNC_CHECKER(FUNCNAME) |
| Provides a way to check for the existence of a non-static member function. More... | |
| #define | G24_LIB_MEMBER_CHECKER(MEMBERNAME, INVALID_TYPE, INVALID_INIT) |
| Provides a way to check for the existence of a non-static member variable (and to get the corresponding type). More... | |
| #define | G24_LIB_STATIC_FUNC_CHECKER(FUNCNAME) |
| Provides a way to check for the existence of a static member function. More... | |
| #define | G24_LIB_STATIC_MEMBER_CHECKER(MEMBERNAME, INVALID_INIT) |
| Provides a way to check for the existence of a static member variable (and to get the corresponding type and value). More... | |
| #define | G24_LIB_TYPEDEF_CHECKER(MEMBERNAME, INVALID_TYPE) |
| Provides a way to check for the existence of a member typedef or type alias (and to get the corresponding type). More... | |
Implements some useful macros for the code itself.
Definition in file preliminary_macros.h.
| #define CUDA_AVAILABLE 0 |
Evaluates to 1 if CUDA
is available, 0 otherwise.
| #define CUDA_HOS_DEV |
If CUDA
is available, evaluates to the attributes __host__ __device__
. Otherwise, to nothing.
CUDA
. | #define CUDA_ONLY_DEV |
If CUDA
is available, evaluates to the attribute __device__
. Otherwise, to nothing.
CUDA
. | #define CUDA_ONLY_HOS |
If CUDA
is available, evaluates to the attribute __host__
. Otherwise, to nothing.
CUDA
. | #define G24_LIB_CLEAN_UP_MACROS 0 |
Controls if all the macros defined in the library will be #undef
ined after use. Default is false
.
G24_LIB_
.Definition at line 120 of file preliminary_macros.h.
| #define G24_LIB_COMMA_HACK , |
Definition at line 240 of file preliminary_macros.h.
| #define G24_LIB_FUNC_CHECKER | ( | FUNCNAME | ) |
Provides a way to check for the existence of a non-static member function.
| FUNCNAME | The member function to check for. |
FUNCNAME_f_checker
and FUNCNAME_f_exists
at the current scope.FUNCNAME_f_exists<T>
to check if type T
has the relevant member function. Definition at line 150 of file preliminary_macros.h.
| #define G24_LIB_MEMBER_CHECKER | ( | MEMBERNAME, | |
| INVALID_TYPE, | |||
| INVALID_INIT | |||
| ) |
Provides a way to check for the existence of a non-static member variable (and to get the corresponding type).
| MEMBERNAME | The member variable to check for. |
MEMBERNAME_m_exists<T>
to check if type T
has the relevant member variable, MEMBERNAME_m_type<T>
to get the type, if existent, or void
, if not. Definition at line 229 of file preliminary_macros.h.
| #define G24_LIB_STATIC_FUNC_CHECKER | ( | FUNCNAME | ) |
Provides a way to check for the existence of a static member function.
| FUNCNAME | The static member function to check for. |
FUNCNAME_sf_checker
and FUNCNAME_sf_exists
at the current scope.FUNCNAME_sf_exists<T>
to check if type T
has the relevant static member function. Definition at line 132 of file preliminary_macros.h.
| #define G24_LIB_STATIC_MEMBER_CHECKER | ( | MEMBERNAME, | |
| INVALID_INIT | |||
| ) |
Provides a way to check for the existence of a static member variable (and to get the corresponding type and value).
| MEMBERNAME | The static member variable to check for. |
| INVALID_INIT | The expression to be used to initialize the invalid value, with parenthesis, brackets, whatever is necessary to perform the initialization. (In essence, it returns INVALID_INIT ). |
MEMBERNAME_sm_checker
, MEMBERNAME_sm_type
, MEMBERNAME_sm_value
and MEMBERNAME_sm_exists
at the current scope.MEMBERNAME_sm_exists<T>
to check if type T
has the relevant static variable, MEMBERNAME_sm_type<T>
to get the type, if existent, or INVALID_TYPE
, if not, and MEMBERNAME_sm_value<T>
to get the value. Definition at line 201 of file preliminary_macros.h.
| #define G24_LIB_TYPEDEF_CHECKER | ( | MEMBERNAME, | |
| INVALID_TYPE | |||
| ) |
Provides a way to check for the existence of a member typedef or type alias (and to get the corresponding type).
| MEMBERNAME | The member typedef/type alias to check for. |
| INVALID_TYPE | A type to be attributed to MEMBERNAME_t_checker whenever the member typedef/type alias is not defined. |
MEMBERNAME_t_checker
, MEMBERNAME_t_type
and MEMBERNAME_t_exists
at the current scope.MEMBERNAME_t_exists<T>
to check if type T
has the relevant typedef/type alias and MEMBERNAME_t_type<T>
to get the type, if existent, or INVALID_TYPE
, if not. Definition at line 172 of file preliminary_macros.h.


THE NEWTON BOYS A film review by Mark R. Leeper
Capsule: Lying somewhere between a Western and a gangster film, THE NEWTON BOYS tells the story of a five-year bank-robbing spree of a family gang, culminating in the biggest train robbery in United States History. An odd film for Richard Linklater to make, but entertaining, if a bit formless. The film does have a good feel for 1919-1924 setting. Rating: 7 (0 to 10), low +2 (-4 to +4)
Neither Sifakis's ENCYCLOPEDIA OF AMERICAN CRIME nor Nash's BLOODLETTERS AND BAD MEN seems to know the Newtons existed. What research I tried to do before seeing the film turned up nothing. But the film turns up some corroborating evidence that the story must have at the very minimum some truth. Apparently the Newton Gang were the most successful bank robbers in American history. From 1919 to 1925 this Texas-based gang robbed banks all over the country, eighty in all, though their biggest job was the three-million-dollar train robbery in Rondout, Illinois.
With Andy Warhol being dead, it is hard to imagine a director less likely to make an atmosphere-heavy period film than Richard Linklater, director of Generation X films like SLACKER. Nevertheless, Linklater breaks from his mold and does a fair job of recreating America of the early 1920s. And ironically his Generation X serves him well when showing members of the gang in their casual moments relaxing in postures you would never see in a Bogart or Cagney gangster film.
Willis Newton (played by Matthew McConaughey) is newly out of prison where he was railroaded for a crime he did not commit. What particularly galls him is that friends and neighbors willingly perjured themselves to abet the railroading. He decides really to turn to crime, stealing from the banks and implicitly from the insurance companies who, he rationalizes, are all crooks anyway. After helping someone else with a daylight robbery he decides it is safer to plan his own crimes and to rob banks only at night.
Soon Willis is bringing his brothers in to assist him in his robberies. Realizing that he knows how to open a square-door safe but not a round-door one, he has a bank manager list for him all the banks he knows of that have square-door safes, a list that contains banks all over the country. The film takes a very whimsical look at their crimes. These are very clearly lucky amateurs who do not know what they are doing, as we see in several comic scenes. They seem to have an incredible run of luck, neither killing anybody nor being killed themselves. Willis is the serious planner, brothers Jess (Ethan Hawke) and Dock (Vincent D'Onofrio) are in it just for the wild times. Joe (Skeet Ulrich) is the youngest and most thoughtful of the boys. Rounding out the gang is Glasscock (Dwight Yoakam).
McConaughey clearly provides what acting interest there is in the film and he gives the only performance that is above being just adequate. He is a little too handsome and polished for the role. The viewer knows this because of the very intelligent device of having interviews with the real-life Joe and Willis play with the credits--in the 1970s Willis was interviewed in a documentary and Joe appeared on the "Tonight Show" in 1980. The big surprise is how under-utilized Vincent D'Onofrio is. He is a fine actor and should have gotten a meatier role.
The story of the Newton Boys is apparently a neglected chapter of American crime. I cannot verify the accuracy of the film but I can say it was entertaining. I would rat it 7 on the 0 to 10 scale and a low +2 on the -4 to +4 scale.
In the film there is considerable mention square-door safes and round-door safes. The Newtons say they can open square-door safes but not the round-door ones. In order to decide what banks they will rob, they need a list of banks with square-door safes. What is this all about? Well, a square-door safe has a (rectangular) door. It is like the door to your home, only it is made of steel so it is a lot stronger. But it is still held in place by bolts and it is possible to get behind the door and sheer the bolt, possibly by blowing the whole door off its hinges. A round-door safe does not have hinges. The door is a disk with threads around the edge. The door is a separate piece which screws out of the safe. (In the 1953 WAR OF THE WORLDS the ports on the Martian spacecraft use the same principle. Remember Paul Birch's line "It's the damnedest thing the way that's unscrewin'.") In place a round screw-in door is just as secure as any other wall of the safe. There is no way you can get explosive behind it. At the time of THE NEWTON BOYS round-door safes (usually in spherical safes called "cannonballs") were absolutely secure. Cannonball safes were eventually defeated, but only by ignoring the opening mechanism and cutting right through the wall.
Mark R. Leeper<EMAIL_ADDRESS>Copyright 1998 Mark R. Leeper
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Welcome to devops
Want to wern
Then you come
So something
if you want to learn
you can learn if you keep learningin? .?
Also, join an
email
list


We'll email you a link to reset your password.
Or go to Log In.
{{vm.successMessage}}
Please check your email.
You may have signed up for accessibleGO with Facebook or Google. If you don't receive a password reset email, try logging in with Facebook or Google instead.


{% extends 'base_registration_form.html' %}
{% block title %}Forgot your password?{% endblock %}
{% block form_title %}Password reset form{% endblock %}
{% block description %}Enter your email address below, and we'll email instructions for setting a new one.{%endblock%}
{% block button_name %}Submit{% endblock %}


Esper says US providing Vietnam with coast guard ship
by ROBERT BURNS, AP National Security WriterHANOI, Vietnam (AP) - U.S. Defense Secretary Mark Esper says the United States is providing Vietnam with a surplus American ship for its coast guard.
Esper made the announcement during a speech Wednesday at the Diplomatic Academy of Vietnam, a government university in Hanoi. He said it would be provided next year, but he gave no details on payment or exact timing.
Esper also was meeting in Hanoi with senior Vietnamese government officials. It is his first visit to the country since becoming defense secretary in July.
Vietnam is one of the most vocal critics of China's sweeping territorial claims in the South China Sea and has accused Beijing of encroaching into its waters.
Copyright 2019 The Associated Press. All rights reserved. This material may not be published, broadcast, rewritten or redistributed.


Rules: At the Double, Forward to Victory, Inspiring Presence
Categories: AURIC RUNEFATHER, DUARDIN, HERO, MAGMADROTH, MONSTER, FYRESLAYERS, ORDER, Leader, Behemoth
Command Abilities: Steadfast Advance, Damage Table: Wounds0, Wounds1, Wounds2, Wounds3, Wounds4, Wounds5, Unit: Auric Runefather on Magmadroth, Unit Abilities: Lashing Tail, Roaring Fyrestream, Stare Down, Volcanic Blood, Weapon-breaker, Weapon: Blazing Maw, Claws and Horns, Fyresteel Throwing Axe (Hero), Latchkey Grandaxe, Roaring Fyrestream
| Command Abilities | Command Ability Details | Ref |
|---|---|---|
| Steadfast Advance | You can use this command ability at the start of your hero phase. If you do so, pick a friendly model with this command ability. Until the start of your next hero phase, do not take battleshock tests for friendly FYRESLAYERS units while they are wholly within 18" of that model. | Battletome: Fyreslayers Errata, July 2018 |
| Damage Table | Variable 1 | Variable 2 | Variable 3 | Variable 4 | Ref |
|---|---|---|---|---|---|
| Wounds0 | Wounds Suffered | Move | Roaring Fyrestream | Claws and Horns | |
| Wounds1 | 0-3 | 12" | D6 | 6 | |
| Wounds2 | 4-6 | 10" | D6 | 5 | |
| Wounds3 | 7-9 | 8" | 2D6 | 4 | |
| Wounds4 | 10-12 | 7" | 2D6 | 3 | |
| Wounds5 | 13+ | 6" | 3D6 | 2 |
| Unit | Move | Wounds | Bravery | Save | Ref |
|---|---|---|---|---|---|
| Auric Runefather on Magmadroth | * | 14 | 8 | 4+ |
| Unit Abilities | Ability Details | Ref |
|---|---|---|
| Lashing Tail | At the end of the combat phase, roll a dice for each enemy unit within 3" of this model. If the roll is less than the number of models in that unit, it suffers D3 mortal wounds. | |
| Roaring Fyrestream | Do not use the attack sequence for an attack made with a Roaring Fyrestream. Instead, make the dice roll shown on the damage table above. If the roll is equal to or less than the number of models in the target unit, that unit suffers D3 mortal wounds. If the roll is equal to or less than the number of models in the target unit, and the target unit is within 6" of this model, the target unit suffers D6 mortal wounds instead. | |
| Stare Down | In your hero phase, pick an enemy unit within 3" of this model. Subtract D3 from that unit’s Bravery characteristic until the start of your next hero phase. | |
| Volcanic Blood | Roll a dice each time a wound is allocated to this model that was inflicted by a melee weapon. On a 4+ the attacking unit suffers 1 mortal wound. | |
| Weapon-breaker | At the end of the combat phase, pick an enemy HERO within 3" of this model and roll a dice. On a 6, pick one of the melee weapons that model is armed with. Subtract 1 from hit rolls for attacks made with that weapon for the rest of the battle. You cannot pick the same weapon to be affected by this ability more than once per battle. |
| Weapon | Type | Range | Attacks | To Hit | To Wound | Rend | Damage | Ref |
|---|---|---|---|---|---|---|---|---|
| Blazing Maw | Melee | 1 | 1 | 4+ | 2+ | -2 | D3 | |
| Claws and Horns | Melee | 1" | * | 4+ | 3+ | -1 | 2 | |
| Fyresteel Throwing Axe (Hero) | Missile | 8" | 1 | 5+ | 5+ | - | 1 | |
| Latchkey Grandaxe | Melee | 3" | 3 | 3+ | 3+ | -1 | 3 | |
| Roaring Fyrestream | Missile | 12" | - | - | - | - | - |
Selections: Runic Iron
Categories: AURIC RUNESMITER, DUARDIN, HERO, PRIEST, FYRESLAYERS, ORDER, Leader
Unit: Auric Runesmiter, Unit Abilities: Magmic Tunnelling, Runic Empowerment, Weapon: Fyresteel Throwing Axe (Hero), Latch-axe, Runic Iron
| Unit | Move | Wounds | Bravery | Save | Ref |
|---|---|---|---|---|---|
| Auric Runesmiter | 4" | 5 | 7 | 5+ |
| Unit Abilities | Ability Details | Ref |
|---|---|---|
| Magmic Tunnelling | Instead of setting up this model on the battlefield, you can place this model to one side and say that it is set up underground as a reserve unit. If you do so, when you would set up another friendly FYRESLAYERS unit, instead of setting up that unit on the battlefield, you can say that it is joining this model underground as a reserve unit. 1 unit can join this model in this way. At the end of your movement phase, you can set up this model anywhere on the battlefield, more than 9" from any enemy units; then set up any unit that joined this model wholly within 12" of this model and more than 9" from any enemy units. Any reserve units underground that are not set up on the battlefield before the start of the fourth battle round are destroyed. | |
| Runic Empowerment | At the start of your hero phase, this model can chant this prayer. If they do so, make a prayer roll by rolling a dice. On a 1-2, the prayer is not answered. On a 3+ the prayer is answered. If this prayer is answered, pick a friendly FYRESLAYERS unit wholly within 12" of this model, or wholly within 18" of this model if this model is armed with a Forge Key. You can re-roll wound rolls for attacks made by that unit until the start of your next hero phase. |
| Weapon | Type | Range | Attacks | To Hit | To Wound | Rend | Damage | Ref |
|---|---|---|---|---|---|---|---|---|
| Fyresteel Throwing Axe (Hero) | Missile | 8" | 1 | 5+ | 5+ | - | 1 | |
| Latch-axe | Melee | 1" | 1 | 4+ | 3+ | - | 2 | |
| Runic Iron | Melee | 1" | 2 | 3+ | 4+ | - | 1 |
Selections: 2x 10 Vulkite Berzerkers [320pts], Fyresteel War-pick
Categories: DUARDIN, VULKITE BERZERKERS, FYRESLAYERS, ORDER, Battleline
Unit: Vulkite Berzerkers, Unit Abilities: Berzerk Fury, Bladed Slingshields, Horn of Grimnir, Karl, Weapon: Fyresteel Throwing Axe (Unit), Fyresteel Warpick
| Unit | Move | Wounds | Bravery | Save | Ref |
|---|---|---|---|---|---|
| Vulkite Berzerkers | 4" | 2 | 7 | 5+ |
| Unit Abilities | Ability Details | Ref |
|---|---|---|
| Berzerk Fury | Once per battle, at the start of the combat phase, you can choose to unleash this unit’s berserk fury. If you do so, until the end of that phase, if a model from this unit is slain, before that model is removed from play, that model can make a pile-in move and then attack with all of the melee weapons it is armed with. | |
| Bladed Slingshields | After a unit armed with Bladed Slingshields makes a charge move, pick 1 enemy unit and roll a dice for each model from the charging unit within 8" of that enemy unit. For each 6, the enemy unit suffers 1 mortal wound. In addition, add 1 to save rolls for attacks made with melee weapons that target a unit armed with Bladed Slingshields if the target unit did not make a charge move in the same turn. | |
| Horn of Grimnir | 1 in every 5 models in this unit can have a Horn of Grimnir. Add 1 to charge rolls for units that include any Horns of Grimnir. | |
| Karl | 1 model in this unit can be a Karl. Add 1 to the Attacks characteristic of that model’s melee weapons. |
| Weapon | Type | Range | Attacks | To Hit | To Wound | Rend | Damage | Ref |
|---|---|---|---|---|---|---|---|---|
| Fyresteel Throwing Axe (Unit) | Missile | 8" | 1 | 5+ | 5+ | - | 1 | |
| Fyresteel Warpick | Melee | 1" | 2 | 3+ | 4+ | -1 | 1 |
Selections: 5 Hearthguard Berzerkers [120pts], Flamestrike Poleaxe
Categories: DUARDIN, HEARTHGUARD BERZERKERS, FYRESLAYERS, ORDER, Other
Unit: Hearthguard Berzerkers, Unit Abilities: Duty Unto Death, Karl, Smouldering Braziers, Weapon: Flamestrike Poleaxe, Fyresteel Throwing Axe (Unit)
| Unit | Move | Wounds | Bravery | Save | Ref |
|---|---|---|---|---|---|
| Hearthguard Berzerkers | 4" | 2 | 8 | 5+ |
| Unit Abilities | Ability Details | Ref |
|---|---|---|
| Duty Unto Death | Roll a dice each time you allocate a wound or mortal wound to this unit. Add 2 to the roll if there are any friendly FYRESLAYER HEROS within 10" of this unit. On a 6+ that wound or mortal wound is negated. | |
| Karl | 1 model in this unit can be a Karl. Add 1 to the Attacks characteristic of that model’s melee weapons. | |
| Smouldering Braziers | If the unmodified hit roll for an attack made with a Flamestrike Poleaxe is 6, that attack inflicts 2 mortal wounds on the target in addition to any normal damage. |
| Weapon | Type | Range | Attacks | To Hit | To Wound | Rend | Damage | Ref |
|---|---|---|---|---|---|---|---|---|
| Flamestrike Poleaxe | Melee | 2" | 2 | 3+ | 3+ | - | 1 | |
| Fyresteel Throwing Axe (Unit) | Missile | 8" | 1 | 5+ | 5+ | - | 1 |
Selections: Allegiance: Order
Categories: Allegiance
Battle Trait: Defiant Avengers
| Battle Trait | Battle Trait Details | Ref |
|---|---|---|
| Defiant Avengers | You can re-roll battleshock tests for friendly ORDER units in the battleshock phase. |
Selections: 2000 Points - Battlehost
Categories: Game Options, Battlehost
Rules: At the Double, Forward to Victory, Inspiring Presence
Selections: Heavy Sky Cannon
Categories: ARKANAUT FRIGATE, DUARDIN, SKYVESSEL, WAR MACHINE, KHARADRON OVERLORDS, ORDER, Behemoth
Damage Table: WoundTable0, WoundTable1, WoundTable2, WoundTable3, WoundTable4, WoundTable5, Unit: Arkanaut Frigate, Unit Abilities: Aetheric Navigation, All Hands to the Guns, Bomb Racks, Disembark, Embark, Fly, Overburdened, Set-up, Skymines, Tireless Endrinrigger, Vessel, Weapon: Aethershot Carbine, Belaying Valves, Heavy Sky Cannon
| Damage Table | Variable 1 | Variable 2 | Variable 3 | Variable 4 | Ref |
|---|---|---|---|---|---|
| WoundTable0 | Wounds Suffered | Move | Aethershot Carbine | Belaying Valves | |
| WoundTable1 | 0-3 | 10" | 4 | 3 | |
| WoundTable2 | 4-6 | 9" | 4 | 3 | |
| WoundTable3 | 7-9 | 9" | 3 | 3 | |
| WoundTable4 | 10-12 | 8" | 3 | 2 | |
| WoundTable5 | 13+ | 8" | 2 | 1 |
| Unit | Move | Wounds | Bravery | Save | Ref |
|---|---|---|---|---|---|
| Arkanaut Frigate | * | 14 | 7 | 5+ |
| Unit Abilities | Ability Details | Ref |
|---|---|---|
| Aetheric Navigation | If there is a friendly Aetheric Navigator visible to it, an Arkanaut Frigate can move an extra D3" in the movement phase. | |
| All Hands to the Guns | In each of your hero phases, the Captain of an Arkanaut Frigate can give this order. If they do so, until your next hero phase you can re-roll hit rolls of 1 in the shooting phase for the Arkanaut Frigate, but its Move characteristic is halved and it may not run. | |
| Bomb Racks | If any enemy unit ends its charge within 1" of the Gunhauler, it can drop Detonation Drills or Grudgesettler Bombs. Choose which bombs it will drop, and then roll a dice. On a roll of 4 or more the enemy unit suffers the following effect: Detonation Drills: The enemy unit cannot be chosen to pile in and attack until all other units have done so. Units that can fly are not affected. Grudgesettler Bombs: The enemy unit suffers D3 mortal wounds. Units that can fly are not affected. | |
| Disembark | At the start of your hero phase, any friendly units embarked within this model can disembark. When a unit disembarks, set it up so that all its models are within 3" of the vessel and none are within 3" of any enemy models – any disembarking model that cannot be set up in this way is slain. Units that disembark can then act normally, including using abilities that can be used in the hero phase, for the remainder of their turn. Note that a unit cannot both disembark and embark in the same turn. | |
| Embark | If all models in a SKYFARER unit can move to within 3" of a friendly Arkanaut Frigate in the movement phase, they can embark within it. Remove the unit from the battlefield and place it to one side – it is now embarked inside the vessel. Embarked units cannot normally do anything or be affected in any way whilst they are embarked. Unless specifically stated, abilities that affect other units within a certain range have no effect on a unit that is embarked or whilst the unit that has the ability is embarked, and you cannot measure from or to an embarked unit. If the Arkanaut Frigate is destroyed, the passengers immediately bail out: roll a dice for each model embarked within it. For each roll of 1, a model from that model’s unit (your choice) is slain. The embarked units must then disembark before the vessel is removed. | |
| Fly | This unit can fly. | |
| Overburdened | If you wish, your Arkanaut Frigate can carry up to 15 SKYFARER models. For each SKYFARER over 10 that it carries, reduce the Frigate’s Move characteristic by 1". | |
| Set-up | When you set up an Arkanaut Frigate, units of Skyfarers can start the battle embarked within it instead of being set up separately – declare which units are embarked inside the Arkanaut Frigate when you set it up. | |
| Skymines | An Arkanaut Frigate will release clusters of spiked Skymines to defend itself from flying enemies. When an enemy unit that can fly ends its charge within 1" of a Frigate, roll a dice for each model in the charging unit. On each roll of 6 the unit suffers a mortal wound. | |
| Tireless Endrinrigger | Roll a dice for this model in each of your hero phases. On a 4 or more it heals 1 wound. | |
| Vessel | An Arkanaut Frigate can carry 10 Skyfarer models, allowing them to move swiftly across the battlefield and in relative safety. |
| Weapon | Type | Range | Attacks | To Hit | To Wound | Rend | Damage | Ref |
|---|---|---|---|---|---|---|---|---|
| Aethershot Carbine | Missile | 12" | * | 3+ | 4+ | -1 | 1 | |
| Belaying Valves | Melee | 1" | * | 4+ | 4+ | - | 1 | |
| Heavy Sky Cannon | Missile | 18" | 1 | 4+ | 2+ | -2 | D6 |
Selections: 10 Arkanaut Company [120pts], Aetherflare Pistol, Aethermatic Volley Gun, Light Skyhook, 7x Privateer Pistol and Arkanaut Cutter, Skypike
Categories: ARKANAUT COMPANY, DUARDIN, SKYFARERS, KHARADRON OVERLORDS, ORDER, Battleline
Unit: Arkanaut Company, Unit Abilities: Company Captain, Glory-seekers, Weapon: Aetherflare Pistol, Aethermatic Volley Gun, Arkanaut Cutter, Arkanaut Cutter (Company Captain), Gun Butt, Light Skyhook, Privateer Pistol, Skypike
| Unit | Move | Wounds | Bravery | Save | Ref |
|---|---|---|---|---|---|
| Arkanaut Company | 4" | 1 | 6 | 5+ |
| Unit Abilities | Ability Details | Ref |
|---|---|---|
| Company Captain | The leader of this unit is the Company Captain. A Company Captain has a modified Privateer Pistol – either a Volley Pistol, which makes 3 Attacks rather than 2, or an Aetherflare Pistol, which has a To Wound characteristic of 3+ rather than 4+. A Company Captain makes 2 Attacks rather than 1 with their Arkanaut Cutter. | |
| Glory-seekers | Add 1 to the hit rolls for any model in this unit if the target for all of its attacks in that phase is a HERO or MONSTER. |
| Weapon | Type | Range | Attacks | To Hit | To Wound | Rend | Damage | Ref |
|---|---|---|---|---|---|---|---|---|
| Aetherflare Pistol | Missile | 12" | 2 | 4+ | 3+ | - | 1 | |
| Aethermatic Volley Gun | Missile | 18" | 6 | 5+ | 4+ | -1 | 1 | |
| Arkanaut Cutter | Melee | 1" | 1 | 4+ | 4+ | - | 1 | |
| Arkanaut Cutter (Company Captain) | Melee | 1" | 2 | 4+ | 4+ | - | 1 | |
| Gun Butt | Melee | 1" | 1 | 4+ | 5+ | - | 1 | |
| Light Skyhook | Missile | 24" | 1 | 4+ | 3+ | -2 | D3 | |
| Privateer Pistol | Missile | 12" | 2 | 4+ | 4+ | - | 1 | |
| Skypike | Melee | 2" | 2 | 4+ | 4+ | -1 | D3 |
Selections: Allegiance: *Order*
Categories: Allegiance
Selections: 2000 Points - Battlehost
Categories: Game Options, Battlehost
Rules: At the Double, Forward to Victory, Inspiring Presence
Selections: Allegiance: *Order*
Categories: Allegiance
Selections: 2. Thermalrider Cloak, Celestite Greatblade, General
Categories: CARNASAUR, CELESTIAL, DAEMON, HERO, MONSTER, SAURUS, SAURUS SCAR-VETERAN, ORDER, SERAPHON, Leader, General, Artefact
Artefact: Thermalrider Cloak, Carnosaur: 00-02, 03-04, 05-07, 08-09, 10+, Command Abilities: Saurian Savagery, Unit: Saurus Scar-Veteran on Carnosaur, Unit Abilities: Blood Frenzy, Bloodroar, Pinned Down, Stardrake Shields, Weapon: Carnosaur's Clawed Forelimbs, Carnosaur's Massive Jaws, Celestite Greatblade, Fearsome Jaws and Stardrake Shield
| Artefact | Artefact Details | Ref |
|---|---|---|
| Thermalrider Cloak | Add 4 to the bearer’s Movement characteristic. In addition, the bearer may fly. |
| Carnosaur | Move | Clawed Forelimbs | Massive Jaws | Ref |
|---|---|---|---|---|
| 00-02 | 10" | 3+ | 5 | |
| 03-04 | 10" | 4+ | 4 | |
| 05-07 | 8" | 4+ | 3 | |
| 08-09 | 8" | 5+ | 2 | |
| 10+ | 6" | 5+ | 1 |
| Command Abilities | Command Ability Details | Ref |
|---|---|---|
| Saurian Savagery | If the Saurus Scar-Veteran on Carnosaur use this ability, pick a SAURUS unit within 15". Until your next hero phase, whenever you roll a hit roll of 6 or more for a model in that unit, that model can immediately make one additional attack using the same weapon. |
| Unit | Move | Wounds | Bravery | Save | Ref |
|---|---|---|---|---|---|
| Saurus Scar-Veteran on Carnosaur | * | 12 | 10 | 4+ |
| Unit Abilities | Ability Details | Ref |
|---|---|---|
| Blood Frenzy | Once this model has slain an enemy with its Massive Jaws, it can run and charge in the same turn for the rest of the battle. | |
| Bloodroar | If your opponent takes a battleshock test for a unit within 8" of any Carnosaurs, roll a dice. If the result is higher than the result on your opponent's dice, D3 models flee from the unit (as well as any that flee because of the test). | |
| Pinned Down | If an enemy Monster is hit twice with the Carnosaur's Clawed Forelimbs, you can add 2 to the result when rolling to hit that target with the Carnosaur's Massive Jaws in the same turn. | |
| Stardrake Shields | When you make save rolls for this unit, ignore the enemy's Rend characteristic unless it is -2 or better. |
| Weapon | Type | Range | Attacks | To Hit | To Wound | Rend | Damage | Ref |
|---|---|---|---|---|---|---|---|---|
| Carnosaur's Clawed Forelimbs | Melee | 2" | 2 | * | 3+ | - | 2 | |
| Carnosaur's Massive Jaws | Melee | 2" | * | 3+ | 3+ | -1 | D3 | |
| Celestite Greatblade | Melee | 1" | 3 | 4+ | 3+ | -1 | 2 | |
| Fearsome Jaws and Stardrake Shield | Melee | 1" | 1 | 4+ | 3+ | - | 1 |
Categories: CELESTIAL, DAEMON, HERO, PRIEST, SKINK, SKINK STARPRIEST, WIZARD, ORDER, SERAPHON, Leader
Magic: Skink Starpriest, Spell: Arcane Bolt, Mystic Shield, Summon Starlight, Unit: Skink Starpriest, Unit Abilities: Serpent Staff, Weapon: Star-stone Dagger
| Magic | Cast/Unbind | Spells Known | Ref |
|---|---|---|---|
| Skink Starpriest | 1/1 | Arcane Bolt, Mystic Shield, Summon Starlight |
| Spell | Casting Value | Description | Ref |
|---|---|---|---|
| Arcane Bolt | 5 | If successfully cast, pick an enemy unit within 18" of the caster that is visible to them. That unit suffers 1 mortal wound. If the casting roll was 10 or more, the unit suffers D3 mortal wounds instead. | |
| Mystic Shield | 6 | If successfully cast, pick a friendly unit within 18" of the caster that is visible to them. Re-roll save rolls of 1 for that unit until your next hero phase. | |
| Summon Starlight | 6 | If successfully cast, pick a unit within 20" to be bathed in starlight. If the unit is SERAPHON, subtract 1 from the hit rolls of any attacks that target it until your next hero phase. Otherwise, subtract 1 from the hit rolls of any attacks that it makes until your next hero phase. If a unit of CHAOS DAEMONS is bathed in starlight, it also suffers D3 mortal wounds. |
| Unit | Move | Wounds | Bravery | Save | Ref |
|---|---|---|---|---|---|
| Skink Starpriest | 8" | 4 | 10 | 5+ |
| Unit Abilities | Ability Details | Ref |
|---|---|---|
| Serpent Staff | In your hero phase, a Skink Starpriest can level its staff at a SERAPHON unit in your army that is within 8". Until your next hero phase, whenever models from that unit attack wtih their bite or jaws, a wound roll of 6 or more causes twice the normal amount of Damage. |
| Weapon | Type | Range | Attacks | To Hit | To Wound | Rend | Damage | Ref |
|---|---|---|---|---|---|---|---|---|
| Star-stone Dagger | Melee | 1" | 3 | 3+ | 4+ | -1 | 1 |
Selections: Solar Engine
Categories: BASTILADON, CELESTIAL, DAEMON, MONSTER, SKINK, ORDER, SERAPHON, Behemoth
Unit: Bastiladon, Unit Abilities: Impervious Defence, Light of the Heavens, Weapon: Bludgeoning Tail, Meteoric Javelins (Stegadon), Searing Beam
| Unit | Move | Wounds | Bravery | Save | Ref |
|---|---|---|---|---|---|
| Bastiladon | 5" | 8 | 10 | 3+ |
| Unit Abilities | Ability Details | Ref |
|---|---|---|
| Impervious Defence | When you make save rolls for a Bastiladon, ignore the attacker's Rend characteristic.  On a result of 4 or higher, the wound is ignored. | |
| Light of the Heavens | If this model's Searing Beam targets a unit of CHAOS DAEMONS, its Damage characteristic is 3 rather than 2. |
| Weapon | Type | Range | Attacks | To Hit | To Wound | Rend | Damage | Ref |
|---|---|---|---|---|---|---|---|---|
| Bludgeoning Tail | Melee | 2" | 3 | 3+ | 3+ | -1 | D3 | |
| Meteoric Javelins (Stegadon) | Missile | 8" | 4 | 5+ | 4+ | - | 1 | |
| Searing Beam | Missile | 20" | 2D6 | 4+ | 3+ | -1 | 2 |
Selections: 10 Saurus Warriors [90pts], Celestite Spear, Stardrake Icon, Wardrum
Categories: CELESTIAL, DAEMON, SAURUS, SAURUS WARRIORS, ORDER, SERAPHON, Battleline
Unit: Saurus Warriors, Unit Abilities: Alpha Talon, Ordered Cohort, Stardrake Icon, Stardrake Shields, Wardrum, Weapon: Celestite Spear, Powerful Jaws and Stardrake Shield
| Unit | Move | Wounds | Bravery | Save | Ref |
|---|---|---|---|---|---|
| Saurus Warriors | 5" | 1 | 10 | 5+ |
| Unit Abilities | Ability Details | Ref |
|---|---|---|
| Alpha Talon | The leader of this unit is the Alpha Talon which makes 2 attacks rather than 1 with its Celestite Club or Spear. | |
| Ordered Cohort | Add 1 to this unit's hit rolls if it has at least 20 models, and 1 to the number of attacks each model makes with its Celestite weapon if it has at least 30 models. | |
| Stardrake Icon | Models in this unit may carry stardrake icons that pulse with the terrifying essence of a celestial predator. If a battleshock test is made for an enemy unit within 5" of any stardrake icons, add 1 to the result. | |
| Stardrake Shields | When you make save rolls for this unit, ignore the enemy's Rend characteristic unless it is -2 or better. | |
| Wardrum | Models in this unit may carry wardrums. A unit that includes any wardrums can march in its movement phase. When it does so, it doubles its Move characteritic but cannot run or charge in the same turn. |
| Weapon | Type | Range | Attacks | To Hit | To Wound | Rend | Damage | Ref |
|---|---|---|---|---|---|---|---|---|
| Celestite Spear | Melee | 2" | 1 | 4+ | 4+ | - | 1 | |
| Powerful Jaws and Stardrake Shield | Melee | 1" | 1 | 5+ | 4+ | - | 1 |
Selections: 2000 Points - Battlehost
Categories: Game Options, Battlehost
Selections: Origin: Aqshy
Categories: Realm of Origin
Categories: ENDLESS SPELL, AZYR, CHRONOMANTIC COGS, Malign Sorcery
Spell: Summon Chronomatic Cogs, Unit Abilities: Mechanisms of Time
| Spell | Casting Value | Description | Ref |
|---|---|---|---|
| Summon Chronomatic Cogs | 7 | If successfully cast, set up a Chronomantic Cogs model wholly within 12" of the caster. |
| Unit Abilities | Ability Details | Ref |
|---|---|---|
| Mechanisms of Time | In their controlling player’s hero phase, a single Wizard within 9" of this model may manipulate the cogs to increase or decrease the flow of time. They may do this in the same phase as the Chronomantic Cogs are set up. If they do so, choose one of the effects opposite. The effect lasts until their next hero phase, or until an enemy Wizard chooses to manipulate the cogs. Speed Up Time: Add 2" to the Move characteristic of all units on the battlefield. In addition, add 2 to charge rolls for all units on the battlefield. Slow Down Time: The wizard manipulating the cogs can cast 1 additional spell in this hero phase. In addition, re-roll failed save rolls for that wizard. |
Categories: ENDLESS SPELL, ULGU, UMBRAL SPELLPORTAL, Malign Sorcery
Spell: Summon Umbral Spellportal, Unit Abilities: Arcane Passage, Empowered by Ulgu
| Spell | Casting Value | Description | Ref |
|---|---|---|---|
| Summon Umbral Spellportal | 5 | If successfully cast, set up the first Umbral Spellportal model wholly within 12" of the caster, and then set up the second Umbral Spellportal model wholly within 18" of the first. |
| Unit Abilities | Ability Details | Ref |
|---|---|---|
| Arcane Passage | If a Wizard successfully casts a spell while they are within 1" of an Umbral Spellportal model, the range and visibility of the spell can be measured from the other Umbral Spellportal model from this endless spell. After the range and visibility for a spell has been measured from an Umbral Spellportal, you cannot use the Arcane Passage ability again for that Umbral Spellportal in that phase. If a predatory endless spell finishes a move within 6" of an Umbral Spellportal model, remove it from the battlefield and set it up again anywhere within 6" of the other Umbral Spellportal model from this endless spell. After an endless spell finishes a move within 6" of an Umbral Spellportal and is set up again, it cannot move again in that phase, and you cannot use the Arcane Passage ability again for that Umbral Spellportal in that phase. | Malign Sorcery; Errata, July 2018 |
| Empowered by Ulgu | If your battle is taking place in the Realm of Shadow, the second Umbral Spellportal model can be set up anywhere on the battlefield, instead of within 18" of the first. |
At the Double: You can use this command ability after you make a run roll for a friendly unit that is within 6" of a friendly HERO, or 12" of a friendly HERO that is a general.  (Core Rules p3)
Forward to Victory: You can use this command ability after you make a charge roll for a friendly unit that is within 6" of a friendly HERO, or 12" of a friendly HERO that is a general. If you do so, re-roll the charge roll. (Core Rules p3)
Inspiring Presence: You can use this command ability at the start of the battleshock phase. If you do so, pick a friendly unit that is within 6" of friendly HERO, or 12" of a friendly HERO that is a general. That unit does not have to take battleshock tests in that phase. (Core Rules p3)
Created with BattleScribe


The text-field
package provides useful utilities for working with text input fields such as
<input>
and <textarea>
.
<textarea>
The cdkTextareaAutosize
directive can be applied to any <textarea>
to make it automatically
resize to fit its content. The minimum and maximum number of rows to expand to can be set via the
cdkAutosizeMinRows
and cdkAutosizeMaxRows
properties respectively.
The resize logic can be triggered programmatically by calling resizeToFitContent
. This method
takes an optional boolean parameter force
that defaults to false
. Passing true will force the
<textarea>
to resize even if its text content has not changed, this can be useful if the styles
affecting the <textarea>
have changed.
<input>
The AutofillMonitor
is an injectable service that allows the user to monitor the autofill state of
an <input>
. It has a monitor
method that takes an element to monitor and returns an
Observable
of autofill event objects with a target
and isAutofilled
property. The observable
emits every time the autofill state of the given <input>
changes. Any element you monitor should
eventually be unmonitored by calling stopMonitoring
with the same element.
To simplify this process, there is also a cdkAutofill
directive that automatically handles
monitoring and unmonitoring and doubles as an @Output
binding that emits when the autofill state
changes.
Note: This service requires some CSS to install animation hooks when the autofill statechanges. If
you are using Angular Material, this CSS is included as part of the mat-core
mixin. If you are not
using Angular Material, you should include this CSS with the text-field-autofill
mixin.
@use '@angular/cdk';
@include cdk.text-field-autofill();
<input>
It can be difficult to override the browser default background
and color
properties on an
autofilled <input>
. To make this simpler, the CDK includes a mixin text-field-autofill-color
which can be used to set these properties. It takes a background
value as the first parameter and
an optional color
value as the second parameter.
@use '@angular/cdk';
// Set custom autofill inputs to have no background and red text.
input.custom-autofill {
@include cdk.text-field-autofill-color(transparent, red);
}


|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object javax.management.openmbean.CompositeDataSupport
public class CompositeDataSupport
The CompositeDataSupport class is the open data class which implements the CompositeData interface.
| Constructor Summary | |
|---|---|
CompositeDataSupport(CompositeType compositeType,
Map items)
Constructs a CompositeDataSupport instance with the specified compositeType, whose item names and corresponding values are given by the mappings in the map items. |
|
CompositeDataSupport(CompositeType compositeType,
String[] itemNames,
Object[] itemValues)
Constructs a CompositeDataSupport instance with the specified compositeType, whose item values are specified by itemValues[], in the same order as in itemNames[]. |
| Method Summary | |
|---|---|
boolean |
containsKey(String key)
Returns true if and only if this CompositeData instance contains an item whose name is key. |
boolean |
containsValue(Object value)
Returns true if and only if this CompositeData instance contains an item whose value is value. |
boolean |
equals(Object obj)
Compares the specified obj parameter with this CompositeDataSupport instance for equality. |
Object |
get(String key)
Returns the value of the item whose name is key. |
Object[] |
getAll(String[] keys)
Returns an array of the values of the items whose names are specified by keys, in the same order as keys. |
CompositeType |
getCompositeType()
Returns the composite type of this composite data instance. |
int |
hashCode()
Returns the hash code value for this CompositeDataSupport instance. |
String |
toString()
Returns a string representation of this CompositeDataSupport instance. |
Collection |
values()
Returns an unmodifiable Collection view of the item values contained in this CompositeData instance. |
| Methods inherited from class java.lang.Object |
|---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
public CompositeDataSupport(CompositeType compositeType, String[] itemNames, Object[] itemValues) throws OpenDataException
Constructs a CompositeDataSupport instance with the specified compositeType, whose item values are specified by itemValues[], in the same order as in itemNames[]. As a CompositeType does not specify any order on its items, the itemNames[] parameter is used to specify the order in which the values are given in itemValues[]. The items contained in this CompositeDataSupport instance are internally stored in a TreeMap, thus sorted in ascending lexicographic order of their names, for faster retrieval of individual item values.
The constructor checks that all the constraints listed below for each parameter are satisfied, and throws the appropriate exception if they are not.
compositeType
- the composite type of this composite data instance;
must not be null.
itemNames
- itemNames must list, in any order, all the item names defined in compositeType;
the order in which the names are listed, is used to match values in itemValues[];
must not be null or empty.
itemValues
- the values of the items, listed in the same order as their respective names in itemNames;
each item value can be null, but if it is non-null it must be
a valid value for the open type defined in compositeType for the corresponding item;
must be of the same size as itemNames; must not be null or empty.
IllegalArgumentException
- compositeType is null, or itemNames[] or itemValues[] is null or empty,
or one of the elements in itemNames[] is a null or empty string,
or itemNames[] and itemValues[] are not of the same size.
OpenDataException
- itemNames[] or itemValues[]'s size differs from
the number of items defined in compositeType,
or one of the elements in itemNames[] does not exist as an item name defined in compositeType,
or one of the elements in itemValues[] is not a valid value for the corresponding item
as defined in compositeType.
public CompositeDataSupport(CompositeType compositeType, Map items) throws OpenDataException
Constructs a CompositeDataSupport instance with the specified compositeType, whose item names and corresponding values are given by the mappings in the map items. This constructor converts the keys to a string array and the values to an object array and calls CompositeDataSupport(javax.management.openmbean.CompositeType, java.lang.String[], java.lang.Object[]).
compositeType
- the composite type of this composite data instance;
must not be null.
items
- the mappings of all the item names to their values;
items must contain all the item names defined in compositeType;
must not be null or empty.
IllegalArgumentException
- compositeType is null, or items is null or empty,
or one of the keys in items is a null or empty string,
or one of the values in items is null.
OpenDataException
- items' size differs from the number of items defined in compositeType,
or one of the keys in items does not exist as an item name defined in compositeType,
or one of the values in items is not a valid value for the corresponding item
as defined in compositeType.
ArrayStoreException
- one or more keys in items is not of the class java.lang.String.
| Method Detail |
|---|
public CompositeType getCompositeType()
getCompositeType
in interface CompositeData
public Object get(String key)
get
in interface CompositeData
key
- the name of the item.
IllegalArgumentException
- if key is a null or empty String.
InvalidKeyException
- if key is not an existing item name for this CompositeData instance.public Object[] getAll(String[] keys)
getAll
in interface CompositeData
keys
- the names of the items.
IllegalArgumentException
- if an element in keys is a null or empty String.
InvalidKeyException
- if an element in keys is not an existing item name for this CompositeData instance.public boolean containsKey(String key)
containsKey
in interface CompositeData
key
- the key to be tested.
public boolean containsValue(Object value)
containsValue
in interface CompositeData
value
- the value to be tested.
public Collection values()
values
in interface CompositeData
public boolean equals(Object obj)
CompositeDataSupport
instance for equality.
Returns true if and only if all of the following statements are true:
CompositeData
interface,CompositeData
interface, with the restrictions mentioned in the
equals
method of the java.util.Collection interface.
equals
in interface CompositeData
equals
in class Object
obj
- the object to be compared for equality with this CompositeDataSupport
instance;
true
if the specified object is equal to this CompositeDataSupport
instance.Object.hashCode()
,
Hashtable
public int hashCode()
CompositeDataSupport
instance.
The hash code of a CompositeDataSupport
instance is the sum of the hash codes
of all elements of information used in equals
comparisons
(ie: its composite type and all the item values).
This ensures that t1.equals(t2)
implies that t1.hashCode()==t2.hashCode()
for any two CompositeDataSupport
instances t1
and t2
,
as required by the general contract of the method
Object.hashCode()
.
However, note that another instance of a class implementing the CompositeData
interface
may be equal to this CompositeDataSupport
instance as defined by equals(java.lang.Object)
,
but may have a different hash code if it is calculated differently.
hashCode
in interface CompositeData
hashCode
in class Object
CompositeDataSupport
instanceObject.equals(java.lang.Object)
,
Hashtable
public String toString()
CompositeDataSupport
instance.
The string representation consists of the name of this class (ie javax.management.openmbean.CompositeDataSupport
),
the string representation of the composite type of this instance, and the string representation of the contents
(ie list the itemName=itemValue mappings).
toString
in interface CompositeData
toString
in class Object
CompositeDataSupport
instance
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright © 2004, 2010 Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.


Resume
Gollum - originally known as Smeagol
|
Biographical information
|
|
Titles:Ring-bearer
|
|
Birth:TA 2430
|
|
Death:March 25, 3019
|
Physical description
|
|
Race:Hobbits
|
|
Eyes:Blue-gray
|
|
Culture:Stoor-hobbits
|
Biography
- Early life: Sméagol spent the early years of his life living with his extended family under a Matriarch
- Life under the Misty Mountains: He lived in the Misty Mountains for over four hundred years, living on raw blind fish (which he caught from his small row boat), bats and small Goblins when he could get them.
- Search for the Ring: Gollum eventually left the Mountains and pursued Bilbo a few years later, but the trail was cold. He made his way south into Mordor where all evil was being drawn at the time
- Death: The ring was burned in the molten lava with Gollum consumed with it as well.
Video games
- Middle-earth: Shadow of Mordor
- Middle-earth: Shadow of War
- LEGO Dimensions
- LEGO The Lord of the Rings
- The Battle for Middle-earth II (as an NPC only)


--- layout: data_model title: ReportsType this_version: 1.2 ---
| Field Name | Type | Description |
|---|---|---|
| Report1..n | ReportBaseType |
Characterizes a single cyber threat Report. This field is implemented through the xsi:type extension mechanism. The default and strongly recommended type is ReportType in the http://stix.mitre.org/Report-1 namespace. This type is defined in the report.xsd file or at the URL http://stix.mitre.org/XMLSchema/report/1.2/report.xsd. |