Function diff(of:withRespectTo:)
public func diff(of symbol: Symbol?, withRespectTo dSymbol: Symbol?) -> Symbol?
Take the derivative of a symbol with respect to the given symbol.
This function is non-mutating.
Parameters
| Name | Type | Description |
|---|---|---|
| withRespectTo | Symbol? |
|
Returns
A new symbol representing the derivative of the current Symbol
.


The web is constructed of 4 different components:
HTML stands for Hypertext Markup Language. It is the skeleton of most web pages and other languages structure themselves around it.
HTML is made up 4 things:
There are certain tag elements that can style the text.
You can make any text bold with using the strong tag. This Video will show how it works
Another example is, you can make any text italic with em tag. This Video will show how to implement it in the HTML
Inline elements only separate itself from other elements from top to bottom. Whereas, block element separate itself from other elements with an invisible box. this video will explain the difference
Anchor tags make it where any text can be made a link to any web page and other miscellaneous places by using the word href and enclosing the link in parentheses and then brackets.
Images are similar since you have to provide a link but, you have to use the word src instead of href. Also, you do not have to encapsulate any word with images. Technically the image will work without the attribute alt, it is standard practice to use it which describes what the image displays. This attribute is used for seeing impaired This video will explain more about images


Add novalidate attribute to form tag.
novalidate
Add required attribute to field for required validation.
required
Add data-validation-match-match attribute with the field name as value to match with it.
data-validation-match-match
Add maxlength attribute for maximum number of characters to accept. Also use data-validation-maxlength-message attribute for maxlength failure message
maxlength
data-validation-maxlength-message
Add minlength attribute for minimum number of characters to accept. Also use data-validation-minlength-message attribute for minlength failure message
minlength
data-validation-minlength-message
Add max attribute for maximum number to accept. Also use data-validation-max-message attribute for max failure message
max
data-validation-max-message
Add min attribute for minimum number to accept. Also use data-validation-min-message attribute for min failure message
min
data-validation-min-message
Add data-validation-required-message attribute for Custom required failure message
data-validation-required-message
Add pattern attribute to set input pattern. Also use data-validation-pattern-message attribute for pattern failure message
pattern
data-validation-pattern-message
Add data-validation-regex-regex attribute for regular expression. Also use data-validation-regex-message attribute for regex failure message
data-validation-regex-regex
data-validation-regex-message
Select any 2 options


manual_ptr
manual_ptr
The class template manual_ptr
is a Smart Interface Pointer
which supports manual resource management. Objects managed by instances of manual_ptr
are never freed automatically; instead, manual_ptr
allows the programmer to free the bound object using the member function free
.
It is recommended that programmers use the other Smart Interface Pointers and Smart References most of the time. Manual resource management is appropriate somtimes, however; for example, without something like manual_ptr
it would not be possible to implement release()
functions for unique_ptr
and unique_obj
.
<boost/interfaces/manual_ptr.hpp>
namespace boost { namespace interfaces { template<typename Interface> class manual_ptr { public: typedef typename fixed_view<Interface> element_type; // Constructors manual_ptr(); template<typename T> explicit manual_ptr(T* t); manual_ptr(const manual_ptr& ptr); template<typename Subinterface> manual_ptr(const manual_ptr<Subinterface>& ptr); // Assignment manual_ptr& operator=(manual_ptr ptr); template<typename Subinterface> manual_ptr& operator=(manual_ptr<Subinterface> ptr); // Smart pointer interface element_type* get() const; element_type& operator*() const; element_type* operator->() const; void reset(); template<typename T> void reset(T* t); operator unspecified-bool-type() const; void swap(manual_ptr& p); void free(); }; } } // End namespace boost::interfaces
manual_ptr
| Interface | - |
An interface defined using the Interface Definition Language (IDL). |
manual_ptr::element_type
typedef typename fixed_view<T> element_type;
Used by the dereferencing operators, in place of the template parameter Interface, to help prevent resource leaks and double deletes. See Example.
manual_ptr::manual_ptr
manual_ptr();
Constructs an empty manual_ptr
. Never throws.
manual_ptr::manual_ptr
manual_ptr(const manual_ptr& ptr); template<typename Subinterface> manual_ptr(const manual_ptr<Subinterface>& ptr);
Constructs a manual_ptr
bound to the same object as the given manual_ptr
. Never throws.
manual_ptr::manual_ptr
template<typename T> explicit manual_ptr(T* t);
| T | - |
A class implementing |
Constructs an instance of manual_ptr
bound to the given object.
manual_ptr::operator=
manual_ptr& operator=(manual_ptr ptr); template<typename Subinterface> manual_ptr& operator=(manual_ptr<Subinterface> ptr);
Binds this
instance of manual_ptr
to the same object as the given manual_ptr
. Never throws.
manual_ptr::get
element_type* get() const;
Returns a pointer through which member functions of the bound object can be accessed. Never throws.
manual_ptr::operator*
element_type& operator*() const;
Returns a reference through which member functions of the bound object can be accessed. Never throws.
manual_ptr::operator->
element_type* operator->() const;
Returns a pointer through which member functions of the bound object can be accessed. Never throws.
manual_ptr::reset
void reset();
If there is currently a bound object, this member causes it to become unbound.
manual_ptr::reset
template<typename T> void reset(T* t);
| T | - |
A class implementing |
If there is currently a bound object, this member causes it to become unbound. Next, it binds this
instance of manual_ptr
to the given object. Never throws
manual_ptr::operator unspecified-bool-type()
operator unspecified-bool-type() const;
Returns an unspecified value which, when used in boolean contexts, is equivalent to get() != 0
. Never throws.
manual_ptr::swap
void swap(manual_ptr& p);
Exchanges the content of this
instance of manual_ptr
with that of the given instance. Never throws.
manual_ptr::free
void free();
Frees the bound object. Throws only if the destructor of the bound object throws.
Revised 16 Jan, 2005
© Copyright Jonathan D. Turkanis, 2005
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


| Figure 1 |
Overview of the environmental events (left) and anthropogeni ... |
| Figure 2 |
Frequency verses cost and several fit functions for natural ... |
| Figure 3 |
Cost frequency plots and fits for natural (left) and anthrop ... |
| Figure 4 |
Sketch of a set of hypothetical events and Δ t of similar co ... |
| Figure 5 |
Frequency verses Δ t plots (top) with Poisson fits (bottom) ... |
| Figure 6 |
Delay plots for natural (left) and anthropogenic (right) acc ... |
| Figure 7 |
A climate delay plot for anthropogenic pollution events incl ... |


|
tesseract
5.0.0-alpha-619-ge9db
|
Public Member Functions | |
| BlockGroup () | |
| BlockGroup (BLOCK *block) | |
Public Attributes | |
| TBOX | bounding_box |
| FCOORD | rotation |
| float | angle |
| float | min_xheight |
| GenericVector< BLOCK * > | blocks |
Definition at line 712 of file tordmain.cpp.
|
inline |
Definition at line 713 of file tordmain.cpp.
|
inlineexplicit |
Definition at line 714 of file tordmain.cpp.
| float tesseract::BlockGroup::angle |
Definition at line 726 of file tordmain.cpp.
| GenericVector<BLOCK*> tesseract::BlockGroup::blocks |
Definition at line 730 of file tordmain.cpp.
| TBOX tesseract::BlockGroup::bounding_box |
Definition at line 722 of file tordmain.cpp.
| float tesseract::BlockGroup::min_xheight |
Definition at line 728 of file tordmain.cpp.
| FCOORD tesseract::BlockGroup::rotation |
Definition at line 724 of file tordmain.cpp.


Your keys and data are kept confidential by performing all cryptographic operations in your web browser, using the Web Crypto API. JavaScript is left unminified, allowing you to view the page source and scrutinise the source code for yourself. Full source code is viewable at: https://github.com/garfunkel/rsa-webcrypto-tool.


pgmhist(1) pgmhist(1) NAME pgmhist - print a histogram of the values in a portable graymap SYNOPSIS pgmhist [pgmfile] DESCRIPTION Reads a portable graymap as input. Prints a histogram of the gray val‐ ues. SEE ALSO pgmnorm(1), pgm(5), ppmhist(1) AUTHOR Copyright (C) 1989 by Jef Poskanzer. 28 February 1989 pgmhist(1)


Package com.sun.msv.verifier.regexp
package com.sun.msv.verifier.regexp
VGM implementation by using regular expression derivation algorithm.
This implementation bridges a gap between neutral grammar model (com.sun.msv.grammar) and Verifier grammar model (com.sun.msv.verifier).
Performance Analysis
This bridge is tuned for client-side use, where MSV is repeatedly invoked from command line. Particularly,
-
No preprocessing of grammar is necessary. Abstract grammar model can be directly used. This results in faster schema loading, at the expense of slower validation.
-
Extensive error recovery and detailed error diagnosis is provided.
Also, this bridge covers full expressiveness of RELAX and TREX.
Algorithm
Those who are interested in the algorithm of this package may want to see the following resources.
- regexp.tar.gz
- regular expression matching algorithm by Mark Hopkins.
- How to validate XML
- A brief introduction of the above algorithm by Joe English
- TREX implementation
- This implementation by James Clark employs the algorithm of Mark Hopkins.
-
ClassDescriptionspecial Token that matchs any element.Feeds AttributeToken to the expression and obtains the residual (content model).removes all unnecessary expressions and creates an expression that consists of required attributes and choices only.Creates an expression whose AttributeExp is completely replaced by nullSet.Creates an expression whose AttributeExp is completely replaced by epsilon.represents attribute and its value.creates "combined child content expression" and gathers "elements of concern" and its "attribute-pruned" content model.Accept that is used when more than one pattern can be applicable to the current context.base implementation of ComplexAcceptor.base implementation for SimpleAcceptor and ComplexAcceptorNon-recursive ReferenceExpRemover with a cache.Collects "elements of concern".a token that represents an XML element.
Acceptor
implementation.DocumentDeclaration
implementation Grammar object can be shared among multiple threads, but this object cannot be shared.computes regular expression derivative.Acceptor that will be used when only one ElementExp matches the start tag.calculates how character literals should be treated.chunk of string.primitive unit of XML instance.


The bomb from Tärnaby
For some years now, skiing legend Ingemar Stenmark has no longer been the only star from Tärnaby, a village of 500 people in the north of Sweden. In 1999, a young woman named Anja Pärson won her first World Cup race in the Californian sunshine. Ten years at the top of world skiing has resulted in an impressive collection of Olympic and world medals for Anja: 16 in all!
Duel of the queens
On her way, Anja from Sweden encountered Janica the Croat. Pärson and Kostelic, a formidable rivalry which drove the pair to dominate the world of alpine skiing. For Anja, the Olympic Games began in 2002 in Salt Lake City. Like most Scandinavians, she excelled in the technical events, winning two Olympic medals, silver in the giant slalom (behind Kostelic) and bronze in the slalom. As time went on, the Swede improved in the speed events. In 2006 at the Games in Turin, she placed third in the combined, a performance she repeated in the downhill. But slalom was still her favourite event. On 22 February 2006, Anja Pärson won the Olympic slalom…and her first gold medal.
A champion in every event
The following year, at the World Championships held at Åre, in her home country of Sweden, she finished on the podium in all her races, three of the five in first place. She became the first female alpine skier in history to be world champion in all the events. In 2008, her victory in the combined at Crans Montana in Switzerland took her into the exclusive circle of women skiers who have won all five events of the World Cup (slalom, special slalom, combined, super-G and downhill).
A crash and a bronze
In Vancouver, Anja was hoping to excel once more. It was now in the speed events that she could best display her talent. In the downhill, she was on course for a medal but lost her balance on the last jump and fell over more than 60 metres. It looked worse than it was, but the champion was badly shaken. The next day, she overcame her fear and was back on the course at Whistler for the combined. This time, there was no fall and a splendid third place. This bronze was her sixth Olympic medal. With seven small and large crystal globes and 41 World Cup victories, the bomb from Tärnaby is quite simply one of the greatest female skiers.


At least 10 killed in eastern DR Congo by ADF militia
by AFPMore by this AuthorGoma. At least 10 civilians were killed in two attacks by militia gunmen in eastern Democratic Republic of Congo, where government forces have vowed to root out armed groups, sources said Wednesday.
Seven people were killed in the city of Beni and between three and 14 were killed near Oicha, 30 kilometres (18 miles) away, according to the UN radio Okapi, which quoted the military, and local civil society.
The attacks late Tuesday were blamed on the Allied Democratic Forces (ADF), a militia of Ugandan origin targeted by an army campaign to restore peace to DR Congo's troubled east.
Around 10 people were also kidnapped, sources in the local NGOs said.
In Oicha, "a Catholic church and 14 houses were burned down," said civil society worker Teddy Kataliko.
"There's been non-stop firing of heavy- and light-calibre weapons," a Catholic cleric in Beni told AFP during the night. "I don't know if we are going to get out alive."
Advertisement
At least 60 people have been killed by the ADF since the offensive in North Kivu province began on October 30, according to a toll compiled by AFP.
Commentators see the massacres as warnings to the local population against collaborating with government forces.
Beni, a trading hub of around 100,000 people, lies in an area that has long been troubled by the ADF.
It also sits in the heart of DR Congo's Ebola zone, and is the site of a base used by the UN's peacekeeping force.
- Local anger -
The latest attacks sparked an exodus in the Beni district of Boikene and in the Mavete district of Oichi.
Protests erupted against poor security, and members of the UN peacekeeping force, MONUSCO, were advised not to go out on the streets of Beni.
The force's base is at the airport, around 10 kilometres (six miles) from the city centre.
Kataliko said the authorities had been tipped off by local people as early as last Friday about the presence of armed men near Oicha.
"The public are afraid of the ADF infiltrating towns in the region," he said. "You can sense when they are in the town. They are in disguise."
Anger has been building since the start of the army's campaign over the choice of tactics.
The offensive has focussed on the area around Beni rather than on the so-called "triangle of death" farther north around Oicha, where the ADF has its reputed stronghold.
The ADF's historical roots lie in Islamist Ugandans opposed to Ugandan President Yoweri Museveni.
The group has plagued the North Kivu region bordering Uganda since the Congo Wars in the 1990s, although its membership has since broadened to non-Ugandans and it has not carried out an attack on Uganda for years.
Hundreds of deaths have been attributed to the shadowy organisation since 2015.
The so-called Islamic State group has claimed some of the attacks ascribed to the ADF this year, but there is no clear evidence of any affiliation between the two groups.


This example shows how to make a multi-threaded handler for the built in Console commands.
You can set Console.Out to any TextWriter. So you simply have to create your own TextWriter to handle cross-threaded handling of messages to your user interface.
Below is an example of a writing Console messages to a TextBox from two different threads.
TextBoxOutputter.cs
using
System;
using
System.IO;
using
System.Text;
using
System.Windows.Controls;
namespace
WpfApplication68
{
public
class
TextBoxOutputter : TextWriter
{
TextBox textBox =
null
;
public
TextBoxOutputter(TextBox output)
{
textBox = output;
}
public
override
void
Write(
char
value)
{
base
.Write(value);
textBox.Dispatcher.BeginInvoke(
new
Action(() =>
{
textBox.AppendText(value.ToString());
}));
}
public
override
Encoding Encoding
{
get
{
return
System.Text.Encoding.UTF8; }
}
}
}
Note: It's using the TextBox's Dispatcher to append the text. This prevents threading problems.
MainWindow.xaml
<
Window
x:Class
=
"WpfApplication68.MainWindow"
Title
=
"MainWindow"
Height
=
"350"
Width
=
"525"
xmlns:local
=
"clr-namespace:WpfApplication68"
>
<
Grid
>
<
TextBox
Height
=
"200"
Width
=
"400"
x:Name
=
"TestBox"
/>
</
Grid
>
</
Window
>
MainWindow.xaml.cs
using
System;
using
System.Windows;
using
System.Threading;
namespace
WpfApplication68
{
public
partial
class
MainWindow : Window
{
TextBoxOutputter outputter;
public
MainWindow()
{
InitializeComponent();
outputter =
new
TextBoxOutputter(TestBox);
Console.SetOut(outputter);
Console.WriteLine(
"Started"
);
var timer1 =
new
Timer(TimerTick,
"Timer1"
, 0, 1000);
var timer2 =
new
Timer(TimerTick,
"Timer2"
, 0, 500);
}
void
TimerTick(
object
state)
{
var who = state
as
string
;
Console.WriteLine(who);
}
}
}
This small article is part of a series of WPF "How To" articles, in response to real user questions on the MSDN WPF Forum.


The problem was what could grow in the pumice and ash soil and in the shade of the forest canopy? It was suggested they try ginseng, a plant best known in Asia where wild ginseng is prized for its medicinal qualities. Glen Katu and his team found little was known about growing the plant in the wild here.


A less technical post and some light analysis on my 2018 New Year resolutions.
I think December of 2017 I came up with a spreadsheet for New Years Resolutions. I’m not going to put all of my resolutions on display because some are decently personal, but I’ve linked the template here. Below, you can see a screenshot of some of my resolutions for 2018.
The template provides some various nice features - like color coding and then automatically generating some basic visualizations.
I’m not really going to talk about that however. This post is going to be (unsurprisingly for me) self centered and talking more about my past year.
This isn’t going to be long. But I thought it was important. I decided I was going to push up a blog post on my year as a way of ensuring accountability - even if it’s just for my own sake, publically listing some of my resolutions and how I did overall will help me internally have a sense of accountability.
I broke my resolutions into a couple of different categories - Physical, Reading, Italian, Extracurricular, Stretch goal, Relationships.
A basic summary of how I did is here.
| Category | Made | In Progress | Missed |
|---|---|---|---|
| Physical | 2 | 1 | 1 |
| Reading | 3 | 2 | 8 |
| Italian | 8 | 2 | 5 |
| Extracurricular | 55 | 3 | 14 |
| Work | 2 | 0 | 2 |
| Stretch goal | 0 | 1 | 0 |
| Relationships | 0 | 0 | 2 |
Which really ends up generating the following graph in terms of percentages:
Which to be honest is pretty embarassing. Lot of red there… I need to start reading way more. I think I’ve done a better job towards the end of 2018 but yeah that’s pretty abysmal. Relationships I also tanked. Granted there were only two goals I set in that department and one was kind of a stretch, but pretty disappointed with that. Work I did ok with but it was hard to keep the motivation up. Physical I did well. I was happy with where I ended up. One of them that I missed was run another marathon, but I did a triathlon instead and in my opinion that was a much better decision.
In addition, I didn’t push enough to this blog. I like blogging and I like doing fun coding challenges and projects in my spare time or taking classes. And I really didn’t even give myself enough of a chance to do that. Partially because I was pretty low on time and still trying to adjust.
I think that 2018 was a strong year for me. I struggled with adjusting fully to Chicago and the cadence of a working life. However, I do think I started to adapt well - from teaching tennis after work to volunteering the extracurriculars really started to make me feel better about how I was living my life on a day to day basis. Also the time that I spent with my friends in Chicago and exploring the city is time that I wouldn’t give up for anything.
I also have decided that for 2019, I’m going to break my goals up more into quarters and when each quarter of the year ends, I’ll have a day over the weekend where I review the past quarter and can kind of analyze my status. That way I’ll have a better grip over how I’m doing and making sure that I’m still growing and learning at a good pace.
With this post, I’ve pretty much finalized by goals for 2019. I think I’m going to continue the tradition and post a 2019 year in review as well. So count on a similar post next December. Hopefully with a little bit more statistics.


Drop Us A Line.
Visit Us
TATA Institute Of Social Sciences.
Address:
V N Purav Marg, Sion Trombay road, Opp. Deonar Bus Depot, Deonar, Mumabai-88, Maharashtra, IndiaPhone: (+91)22 25561548, (+91)22 255075486
Email<EMAIL_ADDRESS>Address:
V N Purav Marg, Sion Trombay road, Opp. Deonar Bus Depot, Deonar, Mumabai-88, Maharashtra, IndiaPhone: (+91)22 25561548, (+91)22 255075486
Email: info@tisshrmlr.com


Title
July 11, 2012 2:17:16 PM CDT
There was an unexpected error (type=
Bad
, status=
500
).
Fake content
Please contact the operator with the above information.


Covers 4 u is the Arkansas largest online mobile accessory retailer - offering the latest tablet and mobile phone accessories. We put our success down to responding to what our customers want and our extensive range of the latest mobile accessories, teamed with world-class customer service. You can read what our customers say on our testimonials page.


Basically, it's a certain set of rules to play RPG. There are a lot of classical RPG systems out there, like D&D, Storytelling, GURPS and so on. But maybe you would like an easier system to play an online RPG. Here I have some suggestion of free and simple systems for you.
Inspired in D&D, but with simple rules. A lot of suplements made by fans. This is the "Purest Essence" version. Despite of the name, it's pretty complete.
A minimalistic Sci-Fi RPG.

A simple system to play investigative horror scenarios. Inpired on the so called Cthulhu mythos by H.P. Lovecraft.
I very interesting RPG to play games with a lot of action scenes. Inspired on Kung-Fu movies. A system when you roleplay first and then roll the dices.


A minimal, responsive CSS framework built on flexbox
Note: this is still under early development, and probably isn't worth using yet.
The typical row/column layout is easier than ever with Flex CSS. Start with a .grid
element, and add .cell
elements inside it. You can place as many .cell
elements as you need and they'll fit the full width automatically. Grid items can also be nested.
You can use nested cells by putting another .grid
within a .cell
.
If you need to specify column widths, you can add a fractional class like one-half
, one-fifth
, two-thirds
, etc. When using width classes or other custom widths, cells will wrap to new lines automatically when there isn't enough width to fit them all.
By default, all .cell
s display as rows on small devices, and columns on desktop. You can add classes to the .grid
to control when the cell layout switches.
| Phones | Tablets | Laptops | Desktop | |
|---|---|---|---|---|
| Class | xs |
sm |
md |
lg |
| Width | <768px | >768px | >992px | >1200px |
.cell
s can be aligned within a .grid
by adding .cell-top
, .cell-center
, or .cell-bottom
.
Flex CSS includes basic form styles, including support for input add-ons.
Forms work well with the grid system, allowing flexible layouts
Merge buttons, inputs, and spans into single components
Media objects can represent comments, blog posts, and more.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Donec tortor massa, eleifend nec viverra in, aliquet at eros. Mauris laoreet condimentum mauris, non tempor massa fermentum ut.
Etiam posuere lectus sed sapien malesuada molestie. Aliquam vitae pharetra dolor. Nullam non mattis nunc.
You can reverse the order of a media object by adding a .reverse
to the element.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
By Alan Hardman, under the MIT License


I am a freelance front-End and Server-side developer. I have done several high profile projects from companies like Hp, Canon and Dell. I am also the author of "Marketing and Programming" blog and Youtube.
I enjoy writing front-end coding like HTML, CSS and Javascript. In addition, i am also skilled in PHP and mySQL coding to form websites which are wordpress as well as commerically capable.


Provide a meaningful name for your service. This name will be used as the primary listing method of your subscribed servicess
The service configuration options you've chosen. You can always make changes before checkout.
Compliance Frequency (Daily)
Compliance Type (Gold)


Polymorphic minimal propositional logic
Redo that exercise ,
proving universally quantified closed statements instead of using
some predeclared propositional variables.
For instance, instead of declaring P:Prop and proving the
proposition P->P, prove the proposition
forall P:Prop, P->P.
You may do this exercice by removing every call to auto from this file


Without even taking a look, Rand stepped through the gateway into a large dark room. The strain of holding the weave, of fighting saidin, made him sway; he wanted to gag, to double over and spew up everything in him. Holding himself upright was an effort. A little light crept through cracks between the shutters on a few small windows set high in one wall, just enough to see by with the Power in him. Furniture and large cloth-covered shapes nearly filled the room, interspersed with wide barrels of the sort used to store crockery, chests of all shapes and sizes, boxes and crates and knickknacks. Little more than walkways a pace or two wide remained clear. He had been sure he would not find servants hunting for something, or cleaning up. The highest floor of the Royal Palace had several such storerooms, looking like the attics of huge farmhouses and just about forgotten. Besides, he was ta’veren, after all. A good thing no one had been there when the gateway opened. One edge of it had sliced the corner off an empty chest bound in cracked, rotting leather, and the other had taken a glass-smooth shaving down the length of a long, inlaid table stacked with vases and wooden boxes. Maybe some Queen of Andor had eaten at that table, a century or two gone.
A century or two, Lews Therin laughed thickly in his head. A very long time. For the love of the Light, let go! This is the Pit of Doom! The voice dwindled as the man fled into the recesses of Rand’s mind.
For once, he had his own reasons to listen to Lews Therin’s complaints. Hastily he motioned Min to follow him from the forest clearing on the other side of the gateway, and as soon as she did, he let it close behind her in a quick vertical slash of light by releasing saidin. Blessedly, the nausea went with it. His head still spun a little, but he did not feel as if he were going to vomit or fall over or both. The feel of filth remained, though, the Dark One’s taint oozing into him from the weaves he had tied off around himself. Shifting the strap of his leather scrip from one shoulder to the other, he tried to use the motion to hide wiping sweat from his face with his sleeve. He did not have to worry about Min noticing after all, however.
Her blue, heeled boots stirred the dust on the floor at her first step, and her second made it rise. She pulled a lace-edged handkerchief from her coatsleeve just in time to catch a violent sneeze, followed by a second and third, each worse than the last. He wished she had been willing to stay in a dress. Embroidered white flowers decorated the sleeves and lapels of her blue coat, and paler blue breeches molded her legs snugly. With yellow-embroidered bright blue riding gloves tucked behind her belt, and a cloak edged with yellow scrollwork and held by a golden pin in the shape of a rose, she did look as if she had arrived by more normal means, but she would draw every eye. He was in coarse brown woolens any laborer might wear. Most places in the last few days, he had been blatant with his presence; this time he did not want just to be gone before anyone knew he had been here, he did not want anyone but a special few to ever know he had been.
 Suspicion filled her big, dark eyes.
“I was just thinking how beautiful you are,” he said quietly. She was. He could not look at her without thinking so. Or without regretting that he was too weak to send her away to safety.
She drew a deep breath, and sneezed before she could even clap a hand over her mouth, then glared at him as if it were somehow his fault. “I abandoned my horse for you, Rand al’Thor. I curled my hair for you. I gave up my life for you! I will not give up my coat and breeches! Besides, no one here has ever seen me in a dress for more time than it took me to change out of it. You know this won’t work unless I’m recognized. You certainly can’t pretend you wandered in off the street with that face.”
Unthinking, he ran a hand across his jaw, feeling his own face, but that was not what Min saw. Anyone looking at him would see a man inches shorter and years older than Rand al’Thor, with lank black hair, dull brown eyes and a wart on his bulbous nose. Only someone who touched him could pierce the Mask of Mirrors. Even an Asha’man would not see it, with the weaves inverted. Though if there were Asha’man in the Palace, it might mean his plans had gone further awry than he believed. This visit could not, must not, come to killing. In any case, she was right; it was not a face that would have been allowed into the Royal Palace of Andor unescorted.
“As long as we can finish this and be gone quickly,” he said. “Before anyone has time to think that if you’re here, maybe I am, too.”
“Rand,” she said, her voice soft, and he eyed her warily. Resting a hand on his chest, she looked up at him with a serious expression. “Rand, you really need to see Elayne. And Aviendha, I suppose; you know she’s probably here, too. If you—”
He shook his head, and wished he had not. The dizziness had still not gone completely. “No!” he said curtly. Light! No matter what Min said, he just could not believe that Elayne and Aviendha both loved him. Or that the fact they did, if it was a fact, did not upset her. Women were not that strange! Elayne and Aviendha had reason to hate him, not love him, and Elayne, at least, had made herself clear. Worse, he was in love with both of them, as well as with Min! He had to be as hard as steel, but he thought he might shatter if he had to face all three at once. “We find Nynaeve and Mat, and go, as fast as we can.” She opened her mouth, but he gave her no chance to speak. “Don’t argue with me, Min. This is no time for it!”
Tilting her head to one side, Min put on a small, amused smile. “When do I ever argue with you? Don’t I always do exactly as you tell me?” If that lie were not bad enough, she added, “I was going to say, if you want to hurry, why are we standing in this dusty storeroom all day?” For punctuation, she sneezed again.
She was the least likely to cause comment, even dressed as she was, so she put her head out of the room first. Apparently the storeroom was not entirely forgotten; the heavy door’s hinges barely creaked. A quick look both ways, and she hurried out, gesturing him to follow. Ta’veren or no, he was relieved to find the long corridor empty. The most timid servant might have wondered at seeing them emerge from a storeroom in the upper reaches of the Palace. Still, they would encounter people soon enough. The Royal Palace did not run as heavily to servants as the Sun Palace or the Stone of Tear, but there were still hundreds of them in a place this size. Walking along beside Min, he tried to shamble and gawk at bright tapestries and carved wall panels and polished highchests. None were so fine this high as they would be lower down, but a common workman would gawk.
“We need to get down to a lower floor as fast as we can,” he murmured. There was still no one in sight, but there might be ten people around the next corner. “Remember, just ask the first servant we see where to find Nynaeve and Mat. Don’t elaborate unless you have to.”
“Why, thank you for reminding me, Rand. I knew something had slipped my mind, and I just couldn’t imagine what.” Her brief smile was much too tight, and she muttered something under her breath.
Rand sighed. This was too important for her to play games, but she was going to, if he let her. Not that she saw it that way. Sometimes, though, her ideas of important differed widely from his. Very widely. He would have to keep a close eye on her.
“Why, Mistress Farshaw,” a woman’s voice said behind them. “It is Mistress Farshaw, isn’t it?”
The scrip swung and thumped Rand’s back heavily as he spun around. The plump graying woman staring at Min in astonishment was perhaps the last person he wanted to meet, besides Elayne or Aviendha. Wondering why she was wearing a red tabard with the White Lion large on the front, he slouched and avoided looking at her directly. Just a workman doing his job. No reason to glance at him twice.
“Mistress Harfor?” Min exclaimed, beaming delightedly. “Yes, it’s me. And you are just the woman I was looking for. I’m afraid I am lost. Can you tell me where to find Nynaeve al’Meara? And Mat Cauthon? This fellow has something Nynaeve asked him to deliver.”
The First Maid frowned slightly at Rand before returning her attention to Min. She raised an eyebrow at Min’s garments, or maybe at the dust on them, but she mentioned neither. “Mat Cauthon? I don’t believe I know him. Unless he’s one of the new servants or Guardsmen?” she added doubtfully. “As for Nynaeve Sedai, she’s very busy. I suppose it will be all right with her if I accept whatever it is and put it in her room.”
Rand jerked upright. Nynaeve Sedai? Why would the others—the real Aes Sedai—let her play at that still? And Mat was not here? Had never been here, apparently. Colors whirled in his head, almost an image he could make out. In a heartbeat it vanished, but he staggered. Mistress Harfor frowned at him again, and sniffed. Likely she thought him drunk.
Min frowned, too, but in thought, tapping a finger on her chin, and that only lasted a moment. “I think Nynaeve . . . Sedai wants to see him.” The hesitation was barely noticeable. “Could you have him shown to her rooms, Mistress Harfor? I have another errand before I go. You mind your manners, now, Nuli, and do as you’re told. There’s a good fellow.”
Rand opened his mouth, but before he could get out a word she darted away down the corridor, almost running. Her cloak flared behind her, she was moving so quickly. Burn her, she was going to try finding Elayne! She could ruin everything!
 Lews Therin’s voice was a rough, sweaty whisper. Accept that you are dead. Accept it, and stop tormenting me, madman! Rand suppressed the voice to a muted buzz, a biteme buzzing in the darkness of his head. Nuli? What kind of name was Nuli?
Mistress Harfor gaped after Min until she vanished around a corner, then gave her tabard an adjusting tug it did not need. She turned her disapproval on Rand. Even with the Mask of Mirrors she saw a man who towered over her, but Reene Harfor was not a woman to let a small thing like that put her off stride for an instant. “I mistrust the looks of you, Nuli,” she said, her eyebrows drawn down sharply, “so you watch your step. You’ll watch it very carefully, if you have any brain at all.”
Holding the scrip’s shoulder strap with one hand, he tugged his forelock with the other. “Yes, Mistress,” he muttered gruffly. The First Maid might recognize his real voice. Min had been supposed to do all the talking until they found Nynaeve and Mat. What in the Light was he going to do if she did bring Elayne? And maybe Aviendha. She probably was here, too. Light! “Pardon, Mistress, but we ought to hurry. It’s urgent I see Nynaeve as soon as possible.” He hefted the scrip slightly. “She wanted this real important like.” If he was done when Min returned, he might be able to get away with her before he had to face the other two.
“If Nynaeve Sedai thought it was urgent,” the plump woman told him tartly, placing heavy emphasis on the honorific he had omitted, “she would have left word you were expected. Now, follow me, and keep your comments and opinions to yourself.”
She started off without waiting for a reply, without looking back, gliding along with a stately grace. After all, what could he do except as he had been told? As he recalled, the First Maid was accustomed to everyone doing as they were told. Striding to catch up, he took only one step at her side before her startled look made him drop back, tugging his forelock and mumbling apologies. He was not used to having to walk behind anyone. It was not calculated to moderate his mood. The tag end of dizziness hung on, too, and the filth of the taint. He seemed to be in a foul mood more often than not of late, unless Min was with him.
Before they had gone very far, liveried servants began to appear in the hallway, polishing and dusting and carrying, scurrying every which way. Plainly the absence of people when he and Min left the storeroom was a rare occurrence. Ta’veren again. Down a flight of narrow service stairs built into the wall, and there were even more. And something else, a great many women who were not in livery. Copper-skinned Domani women, short pale Cairhienin, women with olive skins and dark eyes who were certainly not Andoran. They made him smile, a tight satisfied smile. None had what he could call an ageless face, and a number even bore lines and wrinkles that never decorated any Aes Sedai’s face, but sometimes goose bumps danced on his skin when he came near one of them. They were channeling, or least holding saidar. Mistress Harfor led him past closed doors where that prickling raced, too. Behind those doors, still other women had to be channeling.
“Pardon, Mistress,” he said in the coarse voice he had adopted for Nuli. “How many Aes Sedai are there in the Palace?”
“That is no concern of yours,” she snapped. Glancing over one shoulder at him, though, she sighed and relented. “I don’t suppose there is any harm in you knowing. Five, counting the Lady Elayne and Nynaeve Sedai.” A touch of pride entered her voice. “It has been a long time since that many Aes Sedai claimed guestright here at one time.”
Rand could have laughed, though without amusement. Five? No, that included Nynaeve and Elayne. Three real Aes Sedai. Three! Whoever the rest were did not really matter. He had begun to believe that the rumors of hundreds of Aes Sedai moving toward Caemlyn with an army meant there really might be that many ready to follow the Dragon Reborn. Instead, even his original hope for a double handful of them had been wildly optimistic. The rumors were only rumors. Or else some scheme of Elaida’s making. Light, where was Mat? Color flashed in his head—for an instant he thought it was Mat’s face—and he stumbled.
“If you came here drunk, Nuli,” Mistress Harfor said firmly, “you will leave regretting it bitterly. I will see to it myself!”
“Yes, Mistress,” Rand muttered, jerking at his forelock. Inside his head, Lews Therin cackled in mad, weeping laughter. He had had to come here—it was necessary—but he was already beginning to regret it.
Surrounded by the light of saidar, Nynaeve and Talaan faced one another at four paces in front of the fireplace, where a brisk blaze had managed to take all chill out of the air. Or maybe it was effort that had warmed her, Nynaeve thought sourly. This lesson had lasted an hour already, by the ornate clock on the carved mantel. An hour of channeling without rest would warm anyone. Sareitha was supposed to be here, not her, but the Brown had slipped out of the Palace leaving a note about an urgent errand in the city. Careane had refused to take two days in a row, and Vandene still refused to take any, on the ridiculous grounds that teaching Kirstian and Zarya left her no time.
“Like this,” she said, whipping her flow of Spirit around the boy-slim Sea Folk apprentice’s attempt at fending her off. Adding the force of her own flow, she pushed the girl’s further away and at the same time channeled Air in three separate weaves. One tickled Talaan’s ribs through her blue linen blouse. A simple ploy, but the girl gasped in surprise, and for an instant her embrace of the Source lessened just a hair, the faintest flicker in the Power filling her. In that heartbeat Nynaeve stopped the pushing she had just begun on the other’s flow and snapped her own back to its original target. Forcing the shield onto Talaan still felt much like slapping a wall—except the sting was spread evenly across her skin rather than just in her palm, hardly an improvement—but the glow of saidar vanished just as the last two flows of Air trapped Talaan’s arms at her sides and pulled her knees together in their wide, dark trousers.
Very neatly done, if Nynaeve did think so herself. The girl was very agile, very deft with her weaves. Besides, trying to shield someone who held the Power was chancy at best and futile at worst, unless you were very much stronger than they—sometimes if you were—and Talaan matched her as closely as made no difference. That helped keep a satisfied smile from her face. It seemed a very short time ago that sisters had been startled at her strength and believed that only some of the Forsaken possessed greater. Talaan had not slowed, yet; she was little more than a child. Fifteen? Maybe younger! The Light alone knew what her potential was. At least, none of the Windfinders had mentioned it, and Nynaeve was not about to ask. She had no interest in knowing how much stronger than she a Sea Folk girl was going to be. None at all.
Bare feet shuffling on the patterned green carpet, Talaan made one futile attempt to break the shield that Nynaeve held easily, then sighed in defeat and lowered her eyes. Even when she had succeeded in following Nynaeve’s instruction, she behaved as if she had failed, and now she slumped so dejectedly you might have thought the weaves of Air were all that held her upright.
Letting her flows dissipate, Nynaeve adjusted her shawl and opened her mouth to tell Talaan what she had done wrong. And to point out—once again—that it was useless to try breaking free unless you were much stronger than whoever had shielded you. The Sea Folk hardly seemed to believe anything she told them until she told them ten times and showed them twenty.
“She used your own force against you,” Senine din Ryal said bluntly before Nynaeve could speak. “And distraction, again. It is like wrestling, girl. You know how to wrestle.”
“Try again,” Zaida commanded with a brisk gesture of one dark, tattooed hand.
All of the chairs in the room had been moved against the wall, though there was no real need for a clear space, and Zaida sat watching the lesson flanked by six Windfinders, a riot of reds and yellows and blues in brocaded silks and brightly dyed linens, a flinch-inducing display of earrings and nose rings and medallion-laden chains. That was always the way; one of the two apprentices was used for the actual lesson—or Merilille, Nynaeve had heard, actually forced to take the part of an apprentice unless she herself was teaching—while Zaida and one group or another of Windfinders watched. The Wavemistress could not channel, of course, though she was always present, and none of the Windfinders would actually stoop to participating personally. Oh, never that.
In Nynaeve’s estimation, today’s grouping was very odd, considering the Sea Folks’ obsession with rank. Zaida’s own Windfinder, Shielyn, sat on her right, a slender, coolly reserved woman almost as tall as Aviendha and towering over Zaida. That was proper, as far as Nynaeve understood, but at Zaida’s left was Senine, and she served on a soarer, one of the Sea Folk’s smaller vessels, and hers among the smallest of those. Of course, the weathered woman, with her creased face and hair thick with gray, had worn more than her present six earrings in the past, and more golden medallions on the chain across her dark left cheek. She had been Windfinder to the Mistress of the Ships before Nesta din Reas was elected to the post, but by their law, when the Mistress of the Ships or a Wavemistress died, her Windfinder had to begin again at the lowest level. There was more to it than respect for Senine’s former position, though, Nynaeve was certain. Rainyn, an apple-cheeked young woman who also served on a soarer, occupied the chair next to Senine, and stone-faced, flat-eyed Kurin sat beside Shielyn like a black carving. This relegated Caire and Tebreille to the outermost chairs, and they were both Windfinders to Wavemistresses themselves, with four fat earrings in each ear and nearly as many medallions as Zaida herself. Perhaps it was just to keep the haughty-eyed sisters apart, though. They hated one another with a passion only blood kin could achieve. Perhaps that was it. Understanding the Atha’an Miere was worse than trying to understand men. A woman could go mad trying.
 The pure joy of holding saidar could hardly compete with her vexation. Try again, Nynaeve. One more time, Nynaeve. Do it now, Nynaeve. At least Renaile was not there. Often they wanted her to teach things she did not know as well as others—too often, things she barely knew at all, she admitted reluctantly; she had not really had much training in the Tower—and whenever she fumbled in the slightest, Renaile positively delighted in making her sweat. The others made her sweat, too, but they did not seem to take so much pleasure in it. Anyway, after a solid hour, she was tired. Drat Sareitha and her errand!
She struck out again, but this time Talaan’s flow of Spirit met hers much more lightly than she expected, and her own flow swept the other further aside than she had meant. Abruptly six weaves of Air shot out from the girl, darting toward Nynaeve, and Nynaeve quickly sliced them with Fire. The severed flows snapped back into Talaan, jolting her visibly, but before they had vanished properly, six more appeared, faster than before. Nynaeve slashed. And gaped as Talaan’s weave of Spirit flickered around hers and wrapped around her, cutting off saidar. She was shielded! Talaan had shielded her! For the final indignity, flows of Air pinioned her arms and legs tightly, crushing her skirts. If she had not been so upset at Sareitha, it never would have happened.
“The girl has her,” Caire said, sounding surprised. No one would think she was Talaan’s mother by the cold look she gave her. Indeed, Talaan seemed embarrassed by her own success, releasing the flows immediately and dropping her eyes to the floor.
“Very good, Talaan,” Nynaeve said, since no one else was offering a word of praise or encouragement. Irritably she shook out her shawl behind her and settled it into the crooks of her elbows. No need to tell the girl she had been lucky. She was quick, true, but Nynaeve was not sure she herself could keep channeling much longer. She certainly was not at her best now. “I’m afraid that is all the time I have today, so—”
“Try again,” Zaida commanded, leaning forward intently. “I want to see something.” That was not an explanation, or anything near apology, simply a statement of fact. Zaida never explained or apologized. She just expected obedience.
Nynaeve considered telling the woman she could not see anything they were doing anyway, but she rejected the thought immediately. Not with six Windfinders in the room. Two days earlier she had voiced her opinions freely, and she certainly did not want a repeat of that. She had tried thinking of it as a penance, for speaking without thinking, but that did not help very much. She wished she had never taught them to link.
“One more time,” she said tightly, turning back to Talaan, “and then I must go.”
She was ready for the girl’s trick this time. Channeling, she met Talaan’s weave more dexterously, and without so much force. The girl smiled at her uncertainly. Thinking Nynaeve would not be distracted by extraneous flows of Air this time, was she? Talaan’s weave began to curl around hers, and she nimbly spun her own to catch it. She would be ready when the woman produced her flows of Air. Or maybe not Air, this time. Nothing dangerous surely. This was practice. Only, Talaan’s flow of Spirit did not complete that curl, and Nynaeve’s swung wide while Talaan’s struck straight at her and latched on. Once again, saidar winked out of her, and bonds of Air snapped her arms to her sides, fastened her knees.
Carefully, she drew breath. She would have to congratulate the young woman. There was no getting out of it. If she had had a hand free, she would have yanked her braid right out of her scalp.
“Hold!” Zaida commanded, rising to stride gracefully toward Nynaeve, her red silk trousers whisking softly above her bare feet, intricately knotted red sash swaying against her thigh. The Windfinders stood with her and followed, in order of rank. Caire and Tebreille icily ignored one another as they hurried to take places nearest the Wavemistress while Senine and Rainyn fell a pace to the rear.
 And fuming like a kettle too long on the boil.  Caire and Tebreille studied her with icy disdain, Kurin with the hard contempt she had for all land dwellers. The stone-eyed woman did not sneer or grimace or wear any real expression at all, but you could not be with her long without becoming aware of her opinion. Only Rainyn displayed the smallest touch of sympathy, a slight rueful smile.
Zaida’s eyes met Nynaeve’s levelly. They were much the same height. “She is held as tightly as you can, apprentice?”
Talaan bowed deeply, parallel to the floor, touching her forehead, lips and heart. “As you commanded, Wavemistress,” she all but whispered.
“What is the meaning of this?” Nynaeve demanded. “Let me go. You may get away with treating Merilille this way, but if you think for one minute—!”
“You say there is no way to break this shield unless you are much stronger,” Zaida cut her off. Her tone was not harsh, but she meant to be heard, not to listen. “The Light willing, we will learn whether you told us correctly. It is well known how Aes Sedai make truth spin like a whirlpool. Windfinders, you will form a circle. Kurin, you will lead. If she does break free, see that she causes no harm. For incentive . . . Apprentice, prepare to turn her upside down at my count of five. One.”
The light of saidar enveloped the Windfinders, all of them together, as they linked. Kurin stood with her feet apart and her hands on her hips, as if balancing on the deck of a ship. Her very lack of expression seemed to convey that she was already convinced they would uncover prevarication if not an outright lie. Talaan drew a deep breath, and for once stood very straight, not even blinking as she kept her anxious eyes on Zaida.
Nynaeve blinked. No! They could not do this to her! Not again! “I am telling you,” she said, much more calmly than she felt, “there is no way for me to break the shield. Talaan is too strong.”
“Two,” Zaida said, folding her arms beneath her breasts and staring at Nynaeve as though she really could see the weaves.
Nynaeve pushed tentatively at the shield. She might as well push at a stone wall for all the give in it. “Listen to me, Za . . . uh . . . Wavemistress.” There was certainly no need to antagonize the woman further. They were sticklers for proper forms of address. Sticklers for all too many things. “I’m sure Merilille has told you something about shielding, at least. She swore the Three Oaths. She can’t lie.” Maybe Egwene was right about the Oath Rod.
Zaida’s gaze never wavered, her expression never changed. “Three.”
“Listen to me,” Nynaeve said, not caring at all if she sounded a bit desperate. Maybe more than just a bit. She pushed against the shield harder, then as hard as she could. She might as well have beat her head against a boulder for all the effect it had. Instinctively, uselessly, she struggled in the bonds of Air holding her, the fringe and loose folds of her shawl dancing around her. She had as much chance of breaking free of those bonds as she did of breaking through the shield, but she could not stop herself. Not again! She could not face that! “You have to listen!”
“Four.”
No! No! Not again! Frantically she scrabbled at the shield. It might be as hard as stone, but it felt more like glass, sleek and slippery. She could feel the Source beyond it, almost see the Source, like light and warmth just beyond the corner of vision. In desperation, panting, she felt her way across the smooth surface. It had an edge, like a circle at once small enough to hold in her hands and large enough to cover the world, but when she attempted to slip around that edge, she found herself right back in the center of the slick hard circle again. This was useless. She had learned all this long ago, tried it all long ago. Her heart pounded fit to burst out of her ribs. Struggling vainly for calm, she hurriedly felt her way back to the edge, felt along it without trying to go around. There was one place where it felt . . . softer. She had never noticed that before. The soft point—a slight lump?—seemed no different in any other way from the rest, and it was not much softer, but she hurled herself at it. And found herself back in the center. In a frenzy, she flung all of her strength at the soft spot, again and again, being hurled back to the center, not even pausing before launching herself at it again. Again. Oh, Light! Please! She had to, before . . . !
Abruptly she realized that Zaida still had not said five. Gulping air as if she had run ten miles, she stared. Sweat rolled down her face, her back. It trickled between her breasts, slid down her belly. Her legs wobbled. The Wavemistress looked straight into her eyes, thoughtfully tapping full lips with a slim finger. The glow still enveloped the circle of six, Kurin still could have been a scornfully stony statue, but Zaida had not said five.
“Did she truly try as hard as it seemed, Kurin,” the Wavemistress asked finally, “or was all that thrashing about and whimpering just a show?” Nynaeve tried to summon an indignant glare. She had not whimpered! Had she? Her scowl, such as it was, made no more impression on Zaida than rain on a rock.
“With that much effort, Wavemistress,” Kurin said reluctantly, “she could have carried a raker on her back.” The flat black pebbles of her eyes still held contempt, though. Only those who lived at sea got any respect from her.
“Release her, Talaan,” Zaida commanded, and shield and bonds vanished as she turned away, starting back toward the chairs without another glance at Nynaeve. “Windfinders, I will have words with you after she goes. I will see you at the same hour tomorrow, Nynaeve Sedai.”
Smoothing her rumpled skirts and irritably shaking out her shawl again, Nynaeve attempted to regather a little dignity. It was not easy, sweat-slicked and trembling. She certainly had not whimpered! She tried not to look at the woman who had shielded her. Twice! Standing there meek as butter, with her eyes fixed on the carpet. Ha! Nynaeve jerked her shawl around her shoulders. “Sareitha Sedai will take her turn tomorrow, Wavemistress.” At least her voice was steady. “I will be busy until—”
“Your instruction is more edifying than that of the others,” Zaida said, still not bothering to look at her.  You may leave now.” And that had the sound of you will leave now.
With an effort, Nynaeve swallowed her arguments. They had a bitter taste. More edifying? What did that mean? She did not think she really wanted to know.
Until she actually left the room, she was still the teacher—the Sea Folk were rigid in their rules; Nynaeve supposed that lax rules on ships could lead to trouble, but she wished they would realize they were not on a ship—she was still the teacher, and that meant she could not simply stalk out, however much she wanted to. Worse, their rules were quite specific about teachers from among the shorebound. She could simply have refused to cooperate, she supposed, but if she violated their bargain by a hair, these women would spread it from Tear to the Light knew where! The whole world would know that Aes Sedai had broken their word. What that would do to Aes Sedai standing did not bear thinking about.  Egwene was right, and burn her for it!
“Thank you, Wavemistress, for allowing me to instruct you,” she said, bowing and touching fingers to forehead, lips and heart. Not a very deep bow, but a quick bob was all they were getting today. Well, two. The Windfinders had to have one. “Thank you, Windfinders, for allowing me to instruct you.” The sisters who finally went to the Atha’an Miere would explode when they learned that their pupils could tell them what to teach and when, and even order what they did when not teaching. On a Sea Folk vessel, a land-dwelling teacher outranked the common deckhands, but only just. And the sisters would not even get the fat purses of gold used to lure other teachers on board.
Zaida and the Windfinders reacted very much as if the lowest deckhand had announced her departure. That is, they stood in a silent cluster, plainly waiting for her to go, and not very patient about it. Only Rainyn favored her with as much as a glance. An impatient glance. She was a Windfinder, after all was said and done. Talaan still stood where she had been left, a meek figure gazing at the carpet in front of her bare feet.
Head high and back straight, Nynaeve left the room with every shred of dignity she could wrap around herself. Sweaty, rumpled shreds. In the hall, she seized the door in both hands and slammed it as hard as she could. The great, echoing crash was very satisfying. She could always say it had slipped out of her hands, if anyone complained. It really had, once she got a good swing going.
Turning from the door, she dusted her hands with satisfaction. And gave a start at who was waiting in the corridor for her.
In a simple dark blue dress provided by one of the Kinswomen, Alivia did not look at all unusual at first glance, a woman a little taller than Nynaeve, with fine lines at the corners of her blue eyes and threads of white in her golden yellow hair.
“Mistress Corly sent me to tell you she’d like to see you at dinner tonight,” the blue-eyed hawk said in a slow Seanchan drawl. “Mistress Karistovan, Mistress Arman, and Mistress Juarde will be there.”
“What are you doing here alone?” Nynaeve demanded. She wished she could be like most other sisters, aware of another woman’s strength without ever really thinking about it, but that was something else she had not had time to learn. Maybe some of the Forsaken topped Alivia, but surely no one else. And she was Seanchan. Nynaeve wished there was someone else there besides the two of them. Even Lan, and she had ordered him to stay away from her lessons with the Sea Folk. She was not certain he believed her story about slipping on the stairs the other day. “You aren’t supposed to go anywhere without an escort!”
Alivia shrugged, a slight movement of one shoulder. A few days ago, she had been a bundle of simpers that made Talaan look bold. She did not simper for anybody, now. “There wasn’t anyone free, so I slipped out by myself. Anyway, if you always guard me, you’ll never come to trust me, and I’ll never get to kill sul’dam.” Somehow that sounded even more chilling, delivered in such a casual tone. “You ought to be learning from me. Those Asha’man say they’re weapons, and they aren’t bad, I know for a fact, but I’m better.”
“That’s as may be,” Nynaeve replied sharply, shifting her shawl. “And maybe we know more than you think we do.” She would not mind demonstrating a few of the weaves she had learned from Moghedien for this woman. Including a few they had all agreed were too nasty to do to anyone. Except . . . She was fairly certain the other woman could overpower her easily, whatever she did. Keeping her feet from shifting under that intense stare was not easy. “Until—unless!—we decide differently, you won’t let me see you without two or three Kinswomen again, if you know what’s good for you.”
“If you say so,” Alivia said, not at all abashed. “What message do you want me to take back to Mistress Corly?”
“Tell Mistress Corly I have to decline her kind invitation. And remember what I told you!”
“I’ll tell her,” the Seanchan woman drawled, completely ignoring the admonition. “But I don’t think it was exactly an invitation. An hour after first dark, she said. You might want to remember that.” With a slight, knowing smile, she walked away, not hurrying at all to return where she belonged.
Nynaeve glared at the retreating woman’s back, and not because of her lack of a curtsy. Well, not only that. A pity she had not hung on to a few of her simpers, for sisters, anyway. With a glance at the door that hid the Atha’an Miere, Nynaeve considered following Alivia to make sure she did as she had been told. Instead, she went in the opposite direction. She did not hurry. It would be unpleasant if the Sea Folk came out and decided she had been eavesdropping, but she definitely did not hurry. She merely wanted to walk briskly. That was all.
The Atha’an Miere were hardly the only ones in the Palace she wanted to avoid. Not exactly an invitation, was it? Sumeko Karistovan, Chilares Arman and Famelle Juarde had been in the Knitting Circle with Reanne Corly. Dinner was only an excuse. They would want to talk to her about the Windfinders. More specifically, about the relationship between the Aes Sedai in the Palace and the Sea Folk “wilders.” They would not quite upbraid her for failing to maintain the dignity of the White Tower. They had not gone that far; not yet, though they seemed to be coming closer. But the whole dinner would be full of pointed questions and sharper comments. Nothing she could simply order them to stop. She doubted they would for less than a command. And they were quite capable of coming to find her if she did not go to them. Trying to teach them to show backbone had been a terrible mistake. At least she was not the only one who had to put up with it, though she thought Elayne had managed to avoid the worst. Oh, how she looked forward to seeing them back in novice white or Accepted’s dresses. How she looked forward to seeing the last of the Atha’an Miere!
“Nynaeve!” came a strangely muted cry behind her. In Sea Folk accents. “Nynaeve!”
Forcing her hand away from her braid, Nynaeve spun on her heel, ready to deliver a tongue-lashing.
Talaan skidded to a halt in front of her, bare feet sliding on the dark red floor tiles. Panting, the young woman swiveled her head as if afraid someone would sneak up on her. She flinched every time a liveried servant moved just on the edge of her sight, and only breathed again when she saw it was just a servant. “Can I go to the White Tower?” she asked breathlessly, wringing her hands and dancing from foot to foot. “I will never be chosen. A sacrifice, they call it, leaving the sea forever, but I dream of becoming a novice. I will miss my mother terribly, but . . . Please. You must take me to the Tower. You must!”
Nynaeve blinked at the onslaught. Many women dreamed of becoming Aes Sedai, but she had never before heard one say she dreamed of becoming a novice. Besides . . . The Atha’an Miere refused passage to Aes Sedai on any ship whose Windfinder could channel, but to keep sisters from trying to look deeper, every so often an apprentice was chosen to go to the White Tower. Egwene said there were only three sisters from among the Sea Folk at present, all weak in the Power. For three thousand years that had been enough to convince the Tower that the ability was rare and small with Atha’an Miere women, not worth investigating. Talaan was right; no one as strong as she would ever be allowed to go to the Tower, even now that their subterfuge was coming to an end. In fact, it was part of the bargain with them that Atha’an Miere sisters be allowed to give up being Aes Sedai and return to the ships. The Hall of the Tower would not half howl about that!
“Well, the training is very hard, Talaan,” she said gently, “and you must be at least fifteen. Besides . . . ” Something else the young woman had said struck her suddenly. “You will miss your mother?” she said incredulously, not caring how it sounded.
“I am nineteen!” Talaan replied indignantly. Looking at that boyish face and form, Nynaeve was not sure she believed.  Do I look unnatural? Oh; I see. You do not understand. We are very affectionate in private, but she must avoid any sign of favor in public. That is a serious crime, with us. It could have mother stripped of her rank, and both of us hung upside down in the rigging to be flogged.”
Nynaeve grimaced at the mention of upside down. “I certainly can see where you would want to avoid that,” she said. “Even so—”
“Everyone tries to avoid even a hint of favor, but it is worse for me, Nynaeve!” Really, the girl—woman—young woman—would have to learn not to step on what a sister was saying if she did become a novice. Not that she could, of course. Nynaeve tried to regain the initiative, but words poured out of Talaan in a torrent. “My grandmother is Windfinder to the Wavemistress of Clan Rossaine, my great-grandmother is Windfinder to Clan Dacan, and her sister to Clan Takana. My family is honored that five of us have risen so high. And everyone watches for signs that Gelyn abuses its influence. Rightly so, I know—favor cannot be allowed—but my sister was kept an apprentice five years longer than normal, and my cousin six! Just so no one can claim they were favored. When I cast the stars and give our position correctly, I am punished for being slow even when I have the answer as fast as Windfinder Ehvon! When I taste the sea and name the coast we are approaching, I am punished because the taste I name is not quite what Windfinder Ehvon tastes! I shielded you twice, but tonight I will hang by my ankles for not doing so sooner! I am punished for flaws ignored in others, for flaws I never make, because I might!  She wished the woman would not keep bringing up being hung by the ankles. “Yes. Well. You really don’t want to hear about that.” Four generations of women with the ability? Light! Even daughter following mother was rare enough. The Tower really would want Talaan. That was not going to happen, though. “I suppose Caire and Tebreille really love one another, too?” she said, trying to change the subject.
Talaan sneered. “My aunt is sly and deceitful. She celebrates any humiliation she can cause my mother. But my mother will bring her low, as she deserves. One day, Tebreille will find herself serving on a soarer, beneath a Sailmistress with an iron hand and sore teeth!” She gave a grim, satisfied nod at the thought. And then jumped, wide-eyed as a fawn, when a serving man hurried by behind her. That recalled her to her purpose. She went back to trying to look every way at once as she spoke hastily. “You cannot speak out during the lessons, of course, but any other time will do. Announce that I am to go the Tower, and they will not be able to deny you. You are Aes Sedai!”
Nynaeve goggled at the girl. And they would have forgotten all about it by the next time she gave a lesson? The fool had seen what they did to her! “I can see how much you want to go, Talaan,” she said, “but—”
“Thank you,” Talaan broke in, making a quick bow. “Thank you!” And she darted back the way she had come at a dead run.
“Wait!” Nynaeve shouted, taking a few steps after her. “Come back! I didn’t promise anything!”
Servants turned to stare at her, and continued to shoot wondering glances in her direction even after returning to their tasks.  And the fool would probably gush out that she was going to the Tower, that Nynaeve had promised. Light, she would probably tell them anyway!
“You look as if you just swallowed a rotten plum,” Lan said, appearing at her side, tall and starkly handsome in his well-fitting green coat. She wondered how long he had been there. It did not seem possible that a man so large, so commanding in his presence, could stand still enough that you failed to notice him, even without a Warder’s cloak.
“A basketful of them,” she murmured, pressing her face against her husband’s broad chest. It felt very good to lean against his strength, just for a moment, while he stroked her hair softly. Even if she did have to shift his sword hilt out of her ribs. And anyone who wanted to stare at such a public display of affection could go hang themselves. She could see disaster piling up on disaster. Even if she told Zaida and the others she had no intention of taking Talaan anywhere, they were going to skin her. There would be no hiding it from Lan this time. If she had managed to the first. Reanne and the others would learn of it. And Alise! They would start treating her the way they did Merilille, ignoring her orders, giving her about as much respect as the Windfinders did Talaan. Somehow she would be saddled with guarding Alivia, and some catastrophe would come of it, some utter humiliation. That was all she seemed fit to do, lately; find another way to be humiliated. And every fourth day, she would still have to face Zaida and the Windfinders.
“Do you remember how you kept me in our rooms yesterday morning?” she murmured, looking up in time to catch a grin replacing concern on his face. Of course he remembered. Her face grew hot. Talking to friends was one thing, but being forward with her own husband still seemed quite another. “Well, I want you to take me back there right now and keep me from putting on any clothes for about a year!” She had been quite furious about that, at first. But he had ways to make her forget to be furious.
He threw back his head and laughed, a great booming sound, and after a moment, she echoed him. She wanted to weep, though. She had not really been joking.
Having a husband meant that she did not have to share a bed with another woman, or two, and it gained her a sitting room. It was not large, but it always seemed snug, with a good fireplace and a small table with four chairs. Certainly as much as she and Lan needed. Her hopes for privacy were dashed as soon as they entered the sitting room, though. The First Maid was waiting in the middle of the flowered carpet, as stately as a queen, as neatly turned out as if she had just finished dressing, and not at all pleased.
“This man claims he has something you want urgently,” Mistress Harfor said once she had made brief courtesies. Very brief, if proper; she did not waste them on anyone except Elayne. She sounded equally disapproving of Nynaeve and the fellow with the wart. “I don’t mind telling you, I do not like the looks of him.”
Tired as Nynaeve was, embracing the Source was almost beyond her, but she managed it in a flash, spurred by thoughts of assassins and the Light knew what. Lan must have caught some change in her face, because he took a step toward the warty fellow; he did not touch his sword, but suddenly his whole stance seemed as if the blade were already drawn. How he sometimes managed to read her mind when another held his bond, she could not say, but she was pleased. She had managed to match Talaan—in strength, at least!—but she was not sure she could channel enough right then to knock over a chair. “I never,” she began.
“Pardon, Mistress,” the lumpy fellow muttered hurriedly, tugging his greasy forelock. “Mistress Thane said you wanted to see me right away. Women’s Circle business, she said. Something about Cenn Buie.”
Nynaeve gave herself a shake, and after a moment remembered to close her mouth. “Yes,” she said slowly, staring at the fellow. Seeing anything but that awful wart was difficult, but she was certain she had never laid eyes on him before. Women’s Circle business. No man would be allowed a sniff of that. It was secret. She held on to saidar, though. “I . . . remember, now. Thank you, Mistress Harfor. I’m sure you have all sorts of things to see to.”
Rather than take the hint, the First Maid hesitated, frowning at her suspiciously. That frown slid around to the lumpy man, then settled on Lan and vanished. She nodded to herself, as if his presence somehow made the difference! “I will leave you, then. I’m sure Lord Lan can handle this fellow.”
Stifling her indignation, Nynaeve barely waited for the door to close before rounding on the lumpy fellow and his wart. “Who are you?” she demanded. “How do you know those names? You’re no Two Riv—”
The man . . . rippled. There was no other word for it. He rippled and stretched taller, and suddenly it was Rand, grimacing and swallowing, in rumpled woolens with those awful heads glittering red-and-gold on the backs of his hands and a leather scrip on his shoulder. Where had he learned that? Who had taught him? She resisted the idea of disguising herself, just for a moment, to show him she could do as much.
“I see you didn’t take your own advice,” Rand said to Lan, just as if she were not there. “But why do you let her pretend to be Aes Sedai? Even if the real Aes Sedai let her, she can get hurt.”
“Because she is Aes Sedai, sheepherder,” Lan replied quietly. He did not look at her either! And he still seemed ready to draw his sword in a heartbeat. “As for the other . . . Sometimes, she is stronger than you. Did you take it?”
Rand looked at her then. To frown disbelievingly. Even when she pointedly adjusted her shawl so the yellow fringe swayed. What he said though, shaking his head slowly, was “No. You’re right. Sometimes you’re just too weak to do what you should.”
“What are you two blathering about?” she said sharply.
“Just things that men talk about,” Lan replied.
“You wouldn’t understand,” Rand said.
She sniffed at that. Gossip and idle chatter, that was what men’s talk was, nine times in ten. At best. Wearily, she let go of saidar. Reluctantly. She did not need to protect herself against Rand, certainly, but she would have liked to hold on a little longer, just to touch it, tired or not.
“We know about Cairhien, Rand,” she said, sinking gratefully into a chair. Those cursed Sea Folk had worn her out! “Is that why you’re here, dressed that way? If you’re trying to hide from whoever it was . . . ” He looked tired. Harder than she remembered, but very tired. He remained standing, though. Strangely, he seemed much like Lan, ready to draw a sword he was not wearing.  “Rand, Egwene can help you.”
“I’m not hiding exactly,” he said. “At least, just until I kill some men who need killing.” Light, he was as matter of fact about it as Alivia! Why did he and Lan keep eyeing one another and pretending they were not? “Anyway, how could Egwene help?” he went on, setting the scrip on the table. It made a soft but solid sound of weight inside. “I suppose she’s Aes Sedai, too?” He sounded amused! “Is she here, as well? You three, and two real Aes Sedai. Only two! No. I don’t have time for that. I need you to keep something until—”
“Egwene is the Amyrlin Seat, you fool woolhead,” she growled. It was nice to be able to interrupt someone else for a change. “Elaida is a usurper. I hope you’ve had sense enough not to go near her! You wouldn’t leave that meeting on your own two legs, I can tell you! There are five real Aes Sedai here, including me, and three hundred more with Egwene and an army, ready to pull Elaida down. Look at yourself!  What safer place for you than with Egwene? Even those Asha’man of yours wouldn’t dare go against three hundred sisters!” Oh, yes; very nice indeed. He tried to mask his surprise, but he made a poor job of it, staring at her.
“You’d be surprised what my Asha’man would dare,” he said dryly after a minute. “I suppose Mat is with Egwene’s army?” Putting a hand to his head, he staggered.
Only half a step, but she was out of her chair before he could right himself. Embracing saidar with an effort, she reached up to clasp his head between her hands, and laboriously wove a Delving around him. She had tried finding a better way to find what ailed someone, so far without success. It was enough. No sooner had the weave settled on him than her breath caught. She had known about the wound in his side from Falme, never healing completely, resisting all the Healing she knew, like a pustule of evil in his flesh. Now there was another half-healed wound atop the old, and that pulsed with evil, too. A different sort of evil, somehow, like a mirror of the other, yet just as virulent. And she could not touch either with the Power. She did not really want to—just thinking of it made her skin crawl!—but she tried. And something unseen held her away. Like a ward. A ward she could not see. A ward of saidin?
That made her stop channeling and step back. She clung to the Source; no matter how tired she was, she would have had to force herself to let go. No sister could think of the male half of the Power without at least a touch of fear. He looked down at her calmly, and that made her shiver. He seemed another man entirely from the Rand al’Thor she had watched grow up. She was very glad that Lan was there, hard as that was to admit. Suddenly she realized that he had not relaxed by a whisker. He might chatter with Rand like two men over pipes and ale, but he thought Rand was dangerous. And Rand looked at Lan as if he knew it, and accepted it.
“None of that is important now,” Rand said, turning to the scrip on the table. She did not know whether he meant his wounds or where Mat was. From the scrip he produced two statuettes a foot high, a wise-looking, bearded man and an equally wise and serene woman, each in flowing robes and holding aloft a clear crystal sphere. From the way he handled them, they were heavier than they appeared. “I want you to keep these hidden for me until I send for them, Nynaeve.” One hand on the figure of the woman, he hesitated. “And for you. I’ll need you when I use them. When we use them. After I take care of those men. That has to come first.”
“Use them?” she said suspiciously. Why did killing anyone have to come first? That was hardly the important question, though. “For what? Are they ter’angreal?”
He nodded. “With this, you can touch the greatest sa’angreal ever made for a woman. It’s buried on Tremalking, I understand, but that doesn’t matter.” His hand moved to the figure of the man. “With this one, I can touch its male twin. I was told by . . . someone . . . once, that a man and woman using those sa’angreal could challenge the Dark One. They might have to be used for that, one day, but in the meantime, I hope they’re enough to cleanse the male half of the Source.”
“If it could be done, wouldn’t they have done it in the Age of Legends?” Lan said quietly. Quiet the way steel sliding from a scabbard was quiet. “You said once that I could get her hurt.” It seemed impossible his voice could grow any harder, but it did. “You could kill her, sheepherder.” And his tone made clear that he would not allow that.
Rand met Lan’s cold blue stare with one just as cold. “I don’t know why they didn’t. I don’t care why. It has to be tried.”
Nynaeve bit her lower lip. She supposed Rand made this a public occasion—shifting from public to private, deciding which was which, made her dizzy sometimes—but she did not care that Lan had spoken out of turn. He was bad that way, in any case, but she liked an outspoken man. She needed to think. Not about her decision. She had made that. About how to implement it. Rand might not like it. Lan certainly would not. Well, men always wanted their own way. Sometimes you just had to teach them they could not always have it.
“I think it is a wonderful idea,” she said. That was not exactly a lie. It was wonderful, compared to the alternatives. “But I don’t see why I should sit here waiting for your summons like a serving maid. I’ll do it, but we all go together.”
She had been right. They did not like it one bit.


Playground
Documentation
Examples
Codes
+
Loading...
Build
Run
Entrance:
Build Log
Console
clear
clear


|
s2n-doxygen-full
|
#Fuzz Tests Every test in this directory will be run as a Fuzz test for several minutes during builds. To run all fuzz tests simply run make fuzz
from the top s2n
directory to compile s2n with the proper flags and run the fuzz tests.
*_test.c
or *_negative_test.c
.*_test.c
, it is expected to pass fuzzing and return 0 (hereafter referred to as a "Positive test")*_negative_test.c
the test is expected to fail in some way or return a non-zero integer (hereafter referred to as a "Negative test").int LLVMFuzzerTestOneInput(const uint8_t *buf, size_t len)
that will pass buf
to one of s2n's API'sint LLVMFuzzerInitialize(const uint8_t *buf, size_t len)
that will perform any initialization that will be run only once at startup.For a test with name $TEST_NAME
, its files should be layed out with the following structure:
Required: The actual Fuzz test to run:
s2n/tests/fuzz/${TEST_NAME}.c
Required: The Corpus directory with inputs that provide good branch coverage:
s2n/tests/fuzz/corpus/${TEST_NAME}/*
Optional: Any LD_PRELOAD
function overrides:
s2n/tests/fuzz/LD_PRELOAD/${TEST_NAME}_overrides.c
#Corpus A Corpus is a directory of "interesting" inputs that result in a good branch/code coverage. These inputs will be permuted in random ways and checked to see if this permutation results in greater branch coverage or in a failure (Segfault, Memory Leak, Buffer Overflow, Non-zero return code, etc). If the permutation results in greater branch coverage, then it will be added to the Corpus directory. If a Memory leak or a Crash is detected, that file will not be added to the corpus for that test, and will instead be written to the current directory (s2n/tests/fuzz/crash-*
or s2n/tests/fuzz/leak-*
). These files will be automatically deleted for any Negative Fuzz tests that are expected to crash or leak memory so as to not clutter the directory.
#LD_PRELOAD The LD_PRELOAD
directory contains function overrides for each Fuzz test that will be used instead of the original functions defined elsewhere. These function overrides will only be used during fuzz tests, and will not effect the rest of the s2n codebase when not fuzzing. Using LD_PRELOAD
instead of C Preprocessor #ifdef
's is preferable in the following ways:
#ifdef
's that end up cluttering the original s2n codebase and increases developer cognative load when developing other features for s2n. Using LD_PRELOAD
helps keep s2n's code clean, and reduces developer cognative load when working with the core codebase.LD_PRELOAD
provides better flexibility than #ifdef
's in that it allows different Fuzz tests to efficiently have different function overrides for the same functions.Each Fuzz test will have up to two LD_PRELOAD
function override files used:
${TEST_NAME}_overrides.c
file that contains overrides specific to that test.global_overrides.c
file that contains overrides that will be used in every fuzz test.


Artist & Technologist
Oxford, UK
Worked for 10yrs in web consultancy for culture, education and third-sector
Also over 15yrs in creative applications of Java
Now, freelancing related to open-source Java technologies
Audio-visual performances
Generative / interactive spaces and projections
hybrid visual IDE for (live) creative coding
easily create projections, interactive spaces, custom VJ tools, sonic instruments, creative IoT
use it as a live digital sketchbook, test out ideas, experiment with code
hybrid visual IDE and runtime for (live) creative coding
PraxisCORE brings aspects of Erlang, Smalltalk and Extempore into the Java world ...
a powerful platform for media processing, data visualisation, sensors, robotics, IoT, and lots more!
built on top of many great projects, including
Alt-TAB now!
Custom OpenGL pipeline, GStreamer 0.10, limited coding components
Major rewrite, Processing included,
Fork All - custom component coding and real editor
Java 8, Processing 3, GStreamer 1.x, Syphon/Spout, Pi support, third-party libs
PraxisCORE LGPL, recode anything, custom data handling, bezier connections!
Real-time programming of real-time systems
Turtles all the way down
No scripting components, complex plugin API, etc.
Code down to the sample, or pixel
maxD - @supermedia_art
Mattias Wright / Punkomat
@y8
PraxisLIVE is an amazing hybrid of programming and node-based. It's a great way to build friendly reusable code.
Howard Wong
Overall, speed of development with PraxisLIVE is stunning. Real-time coding FTW! @y8
I'm a big fan of PraxisLIVE ... very fun thing to noodle with.
Dan Hett
Monumental! MaxD
Well sir, if I were you, I wouldn’t start from here
Binding for GStreamer 0.10
First developed by Wayne Meissner in 2007
Various other contributors including
Farkas Levente, Tal Shalif, David Hoyt, Andrés Colubri
I became involved in 2013
Java Native Access is a binding to libFFI,
with additional utilities
Write all native bindings in Java
No need for native compilation on each platform
void g_object_set_property(GObject obj, String property, GValue data);
void g_object_get_property(GObject obj, String property, GValue data);
void g_object_set(GObject obj, String propertyName, Object... data);
void g_object_get(GObject obj, String propertyName, Object... data);
Pointer g_object_class_list_properties(Pointer oclass, IntByReference size);
Pointer g_object_new(GType object_type, Object... args);
interface GClosureNotify extends Callback {
void callback(Pointer data, Pointer closure);
}
NativeLong g_signal_connect_data(GObject obj, String signal,
Callback callback, Pointer data,
GClosureNotify destroy_data, int connect_flags);
Evolution or revolution?
Manual -> automated (headers, introspection data)
Processing GSoC. Andrés Colubri talked about at the GStreamer conference in 2015.
Unfortunately, development stalled before these became viable
GStreamer-Java maps GStreamer, and GLib / GObject
Fork of original 0.10 bindings
Actually a fork of some initial work by Tom Greenwood
Modularize and pare down - usage more aligned with C
Fix memory issues, enhance performance
Lots of contributions - Christophe Lafolet, Matthias Bläsing, Isaac Raño Jares, Victor Nazarov, Ingo Randolf, and more ...
Is it stable? Is it useful?
More stable and performant than the 0.10 bindings
Fork not complete - API is not yet stable
.. but it's being used in real things!
PraxisLIVE & PraxisCORE! ;-)
ReCAP - real-time content analysis with custom GStreamer elements. Bindings used to facilitate analysis and extract data.
onCore (discontinued) - experimental visual automation platform.
Using the Java bindings to develop their smart property management / security system.
Java backbone combining GStreamer, OpenCV, Tensorflow, Caffe, OpenPose, Darkflow with YOLO, and more
Open-source libraries on top of gst1-java-core, Java 8 style
try (final GstScope scope = new GstScope();) {
final Pipeline pipe = new BinManager()
.delayed("uridecodebin").with("uri", "rtsp://bla/bla/bla")
.scope(scope)
.make("videoconvert")
.caps("video/x-raw,format=BGR")
.add(new BreakoutFilter("do-something-in-java")
.connect((final CvRasterAndCaps rac) -> {
rac.raster.matAp(mat -> {
// do something with the Mat
});
}))
.make("fakesink").with("sync", true)
.buildPipeline();
pipe.play();
Gst.main();
}
v2 in beta
Various others including managing video on a web server, streaming between live events, an industrial product ...
Finish the fork - stable API
Java 11 LTS - memory management, modules
Extension API - define and register types from outside
Version API - safer mapping of GStreamer > 1.8
JNA - direct mapping, v5 support, and more
Improved infrastructure, automated testing, etc.
www.praxislive.org
https://github.com/praxis-live/
https://github.com/gstreamer-java/
https://twitter.com/PraxisLIVE


| | |
- builtins.object
-
- Bot
- State
-
- EndState
- ForwardState
- IdleState
- IntersectionState
- LeftState
- ReceivingState
- RightState
class Bot(builtins.object) |
| |
Main class of the program. Handles all the functions of the car.
This class runs through the programs main logic every program tick.
It:
- Runs the logic of the current state (the states handle the wheels)
- Adjusts the leds based on current state
- Reads if the button is pressed
- Asks the server if any new orders are available
- Adjusts the state depending on the data read from the sensors |
| |
Methods defined here:
- __init__(self)
- Create all the different objects the bot uses.
- motor: MotorController class which controls both wheels
- sens: Sensor class which reads the sensor data and returns an INPUT
- btn: Button class to read the button data
- led: LedController to work with the front and side leds
- state: State the program is currently in, constantly changes
- destination. Destination Enumeration to represent the bots current goal
- get_destination(self)
- Make contact with the server to see if new deliveries are available
If a new delivery is found we change the destination of the bot.
- tick(self)
- Main logic of the program that gets looped through every tick
Data descriptors defined here:
- __dict__
- dictionary for instance variables (if defined)
- __weakref__
- list of weak references to the object (if defined)
|
class ForwardState(State) |
| |
The default state the moving robot wants to return to. Any adjustments made
eg. turning left, turning right or taking an intersection are ways to get back to
this state. |
| |
- Method resolution order:
- ForwardState
- State
- builtins.object
Methods defined here:
- __init__(self, bot)
- on_event(self, event)
- run(self)
Methods inherited from State:
- __repr__(self)
- __str__(self)
Data descriptors inherited from State:
- __dict__
- dictionary for instance variables (if defined)
- __weakref__
- list of weak references to the object (if defined)
|
class IntersectionState(State) |
| |
When all sensors detect black we transitioin to IntersectionState
The first time this state is reached we check the destination of the bot
and turn accordingly. After that we always set the destination to END and
try to go back to ForwardState like normal.
The second time an intersection is reached we're in END destination,
which is then reached. We go forward till no sensor data is read and stop the
car by going to EndState |
| |
- Method resolution order:
- IntersectionState
- State
- builtins.object
Methods defined here:
- __init__(self, bot)
- on_event(self, event)
- run(self)
- Check the current Destination of the Bot and execute accordingly
Methods inherited from State:
- __repr__(self)
- __str__(self)
Data descriptors inherited from State:
- __dict__
- dictionary for instance variables (if defined)
- __weakref__
- list of weak references to the object (if defined)
|
class LeftState(State) |
| |
When a sensor on the left detects black we transition to LeftState. |
| |
- Method resolution order:
- LeftState
- State
- builtins.object
Methods defined here:
- __init__(self, bot)
- on_event(self, event)
- run(self)
- Tell the MotorController to go right 1 step
Pulls the left wheel back and the right wheel forward
Methods inherited from State:
- __repr__(self)
- __str__(self)
Data descriptors inherited from State:
- __dict__
- dictionary for instance variables (if defined)
- __weakref__
- list of weak references to the object (if defined)
|
class ReceivingState(State) |
| |
The active waiting state of the bot. If no new orders are in this
state continously checks to see if new orders are in.
If a new_delivery event is fired |
| |
- Method resolution order:
- ReceivingState
- State
- builtins.object
Methods defined here:
- __init__(self, bot)
- on_event(self, event)
- run(self)
Methods inherited from State:
- __repr__(self)
- __str__(self)
Data descriptors inherited from State:
- __dict__
- dictionary for instance variables (if defined)
- __weakref__
- list of weak references to the object (if defined)
|
class RightState(State) |
| |
When a sensor on the right detects black we transition to LeftState. |
| |
- Method resolution order:
- RightState
- State
- builtins.object
Methods defined here:
- __init__(self, bot)
- on_event(self, event)
- run(self)
- Tell the MotorController to go left 1 step
Pulls the left wheel back and the right wheel forward
Methods inherited from State:
- __repr__(self)
- __str__(self)
Data descriptors inherited from State:
- __dict__
- dictionary for instance variables (if defined)
- __weakref__
- list of weak references to the object (if defined)
|
class State(builtins.object) |
| |
The bot is a StateMachine running through different states to represent its
current job.
Every tick of the program the bot object runs the run() of the state it's in.
State changes are triggered by Sensor Data changing, a new delivery coming in or
the button being pressed. These will be named events.
This is the abstract state State class and all other classes implement this class
to ensure that every child class implements on_event() and run()
Also gives access to an overaching function to print the name of the state the program
is in by using __class__.__name__ and returning that as a string |
| |
Methods defined here:
- __init__(self)
- __repr__(self)
- __str__(self)
- on_event(self, event)
- run(self)
Data descriptors defined here:
- __dict__
- dictionary for instance variables (if defined)
- __weakref__
- list of weak references to the object (if defined)
| |