text:
==================================
Block Implementation Specification
==================================

.. contents::
   :local:

History
=======

* 2008/7/14 - created.
* 2008/8/21 - revised, C++.
* 2008/9/24 - add ``NULL`` ``isa`` field to ``__block`` storage.
* 2008/10/1 - revise block layout to use a ``static`` descriptor structure.
* 2008/10/6 - revise block layout to use an unsigned long int flags.
* 2008/10/28 - specify use of ``_Block_object_assign`` and
  ``_Block_object_dispose`` for all "Object" types in helper functions.
* 2008/10/30 - revise new layout to have invoke function in same place.
* 2008/10/30 - add ``__weak`` support.
* 2010/3/16 - rev for stret return, signature field.
* 2010/4/6 - improved wording.
* 2013/1/6 - improved wording and converted to rst.

This document describes the Apple ABI implementation specification of Blocks.

The first shipping version of this ABI is found in Mac OS X 10.6, and shall be
referred to as 10.6.ABI. As of 2010/3/16, the following describes the ABI
contract with the runtime and the compiler, and, as necessary, will be referred
to as ABI.2010.3.16.

Since the Apple ABI references symbols from other elements of the system, any
attempt to use this ABI on systems prior to SnowLeopard is undefined.

High Level
==========

The ABI of ``Blocks`` consist of their layout and the runtime functions required
by the compiler.  A ``Block`` consists of a structure of the following form:

.. code-block:: c

    struct Block_literal_1 {
        void *isa; // initialized to &_NSConcreteStackBlock or &_NSConcreteGlobalBlock
        int flags;
        int reserved;
        void (*invoke)(void *, ...);
        struct Block_descriptor_1 {
        unsigned long int reserved;         // NULL
            unsigned long int size;         // sizeof(struct Block_literal_1)
            // optional helper functions
            void (*copy_helper)(void *dst, void *src);     // IFF (1<<25)
            void (*dispose_helper)(void *src);             // IFF (1<<25)
            // required ABI.2010.3.16
            const char *signature;                         // IFF (1<<30)
        } *descriptor;
        // imported variables
    };

The following flags bits are in use thusly for a possible ABI.2010.3.16:

.. code-block:: c

    enum {
        BLOCK_HAS_COPY_DISPOSE =  (1 << 25),
        BLOCK_HAS_CTOR =          (1 << 26), // helpers have C++ code
        BLOCK_IS_GLOBAL =         (1 << 28),
        BLOCK_HAS_STRET =         (1 << 29), // IFF BLOCK_HAS_SIGNATURE
        BLOCK_HAS_SIGNATURE =     (1 << 30),
    };

In 10.6.ABI the (1<<29) was usually set and was always ignored by the runtime -
it had been a transitional marker that did not get deleted after the
transition. This bit is now paired with (1<<30), and represented as the pair
(3<<30), for the following combinations of valid bit settings, and their
meanings:

.. code-block:: c

    switch (flags & (3<<29)) {
      case (0<<29):      10.6.ABI, no signature field available
      case (1<<29):      10.6.ABI, no signature field available
      case (2<<29): ABI.2010.3.16, regular calling convention, presence of signature field
      case (3<<29): ABI.2010.3.16, stret calling convention, presence of signature field,
    }

The signature field is not always populated.

The following discussions are presented as 10.6.ABI otherwise.

``Block`` literals may occur within functions where the structure is created in
stack local memory.  They may also appear as initialization expressions for
``Block`` variables of global or ``static`` local variables.

When a ``Block`` literal expression is evaluated the stack based structure is
initialized as follows:

1. A ``static`` descriptor structure is declared and initialized as follows:

  a. The ``invoke`` function pointer is set to a function that takes the
  ``Block`` structure as its first argument and the rest of the arguments (if
  any) to the ``Block`` and executes the ``Block`` compound statement.

  b. The ``size`` field is set to the size of the following ``Block`` literal
  structure.

  c. The ``copy_helper`` and ``dispose_helper`` function pointers are set to
  respective helper functions if they are required by the ``Block`` literal.

2. A stack (or global) ``Block`` literal data structure is created and
   initialized as follows:

   a. The ``isa`` field is set to the address of the external
   ``_NSConcreteStackBlock``, which is a block of uninitialized memory supplied
   in ``libSystem``, or ``_NSConcreteGlobalBlock`` if this is a static or file
   level ``Block`` literal.

   b. The ``flags`` field is set to zero unless there are variables imported
   into the ``Block`` that need helper functions for program level
   ``Block_copy()`` and ``Block_release()`` operations, in which case the
   (1<<25) flags bit is set.

As an example, the ``Block`` literal expression:

.. code-block:: c

    ^ { printf("hello world\n"); }

would cause the following to be created on a 32-bit system:

.. code-block:: c

    struct __block_literal_1 {
        void *isa;
        int flags;
        int reserved;
        void (*invoke)(struct __block_literal_1 *);
        struct __block_descriptor_1 *descriptor;
    };

    void __block_invoke_1(struct __block_literal_1 *_block) {
        printf("hello world\n");
    }

    static struct __block_descriptor_1 {
        unsigned long int reserved;
        unsigned long int Block_size;
    } __block_descriptor_1 = { 0, sizeof(struct __block_literal_1), __block_invoke_1 };

and where the ``Block`` literal itself appears:

.. code-block:: c

    struct __block_literal_1 _block_literal = {
         &_NSConcreteStackBlock,
         (1<<29), <uninitialized>,
         __block_invoke_1,
         &__block_descriptor_1
    };

A ``Block`` imports other ``Block`` references, ``const`` copies of other
variables, and variables marked ``__block``.  In Objective-C, variables may
additionally be objects.

When a ``Block`` literal expression is used as the initial value of a global
or ``static`` local variable, it is initialized as follows:

.. code-block:: c

    struct __block_literal_1 __block_literal_1 = {
          &_NSConcreteGlobalBlock,
          (1<<28)|(1<<29), <uninitialized>,
          __block_invoke_1,
          &__block_descriptor_1
    };

that is, a different address is provided as the first value and a particular
(1<<28) bit is set in the ``flags`` field, and otherwise it is the same as for
stack based ``Block`` literals.  This is an optimization that can be used for
any ``Block`` literal that imports no ``const`` or ``__block`` storage
variables.

Imported Variables
==================

Variables of ``auto`` storage class are imported as ``const`` copies.  Variables
of ``__block`` storage class are imported as a pointer to an enclosing data
structure.  Global variables are simply referenced and not considered as
imported.

Imported ``const`` copy variables
---------------------------------

Automatic storage variables not marked with ``__block`` are imported as
``const`` copies.

The simplest example is that of importing a variable of type ``int``:

.. code-block:: c

    int x = 10;
    void (^vv)(void) = ^{ printf("x is %d\n", x); }
    x = 11;
    vv();

which would be compiled to:

.. code-block:: c

    struct __block_literal_2 {
        void *isa;
        int flags;
        int reserved;
        void (*invoke)(struct __block_literal_2 *);
        struct __block_descriptor_2 *descriptor;
        const int x;
    };

    void __block_invoke_2(struct __block_literal_2 *_block) {
        printf("x is %d\n", _block->x);
    }

    static struct __block_descriptor_2 {
        unsigned long int reserved;
        unsigned long int Block_size;
    } __block_descriptor_2 = { 0, sizeof(struct __block_literal_2) };

and:

.. code-block:: c

    struct __block_literal_2 __block_literal_2 = {
          &_NSConcreteStackBlock,
          (1<<29), <uninitialized>,
          __block_invoke_2,
          &__block_descriptor_2,
          x
     };

In summary, scalars, structures, unions, and function pointers are generally
imported as ``const`` copies with no need for helper functions.

Imported ``const`` copy of ``Block`` reference
----------------------------------------------

The first case where copy and dispose helper functions are required is for the
case of when a ``Block`` itself is imported.  In this case both a
``copy_helper`` function and a ``dispose_helper`` function are needed.  The
``copy_helper`` function is passed both the existing stack based pointer and the
pointer to the new heap version and should call back into the runtime to
actually do the copy operation on the imported fields within the ``Block``. The
runtime functions are all described in :ref:`RuntimeHelperFunctions`.

A quick example:

.. code-block:: c

    void (^existingBlock)(void) = ...;
    void (^vv)(void) = ^{ existingBlock(); }
    vv();

    struct __block_literal_3 {
       ...; // existing block
    };

    struct __block_literal_4 {
        void *isa;
        int flags;
        int reserved;
        void (*invoke)(struct __block_literal_4 *);
        struct __block_literal_3 *const existingBlock;
    };

    void __block_invoke_4(struct __block_literal_2 *_block) {
       __block->existingBlock->invoke(__block->existingBlock);
    }

    void __block_copy_4(struct __block_literal_4 *dst, struct __block_literal_4 *src) {
         //_Block_copy_assign(&dst->existingBlock, src->existingBlock, 0);
         _Block_object_assign(&dst->existingBlock, src->existingBlock, BLOCK_FIELD_IS_BLOCK);
    }

    void __block_dispose_4(struct __block_literal_4 *src) {
         // was _Block_destroy
         _Block_object_dispose(src->existingBlock, BLOCK_FIELD_IS_BLOCK);
    }

    static struct __block_descriptor_4 {
        unsigned long int reserved;
        unsigned long int Block_size;
        void (*copy_helper)(struct __block_literal_4 *dst, struct __block_literal_4 *src);
        void (*dispose_helper)(struct __block_literal_4 *);
    } __block_descriptor_4 = {
        0,
        sizeof(struct __block_literal_4),
        __block_copy_4,
        __block_dispose_4,
    };

and where said ``Block`` is used:

.. code-block:: c

    struct __block_literal_4 _block_literal = {
          &_NSConcreteStackBlock,
          (1<<25)|(1<<29), <uninitialized>
          __block_invoke_4,
          & __block_descriptor_4
          existingBlock,
    };

Importing ``__attribute__((NSObject))`` variables
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

GCC introduces ``__attribute__((NSObject))`` on structure pointers to mean "this
is an object".  This is useful because many low level data structures are
declared as opaque structure pointers, e.g. ``CFStringRef``, ``CFArrayRef``,
etc.  When used from C, however, these are still really objects and are the
second case where that requires copy and dispose helper functions to be
generated.  The copy helper functions generated by the compiler should use the
``_Block_object_assign`` runtime helper function and in the dispose helper the
``_Block_object_dispose`` runtime helper function should be called.

For example, ``Block`` foo in the following:

.. code-block:: c

    struct Opaque *__attribute__((NSObject)) objectPointer = ...;
    ...
    void (^foo)(void) = ^{  CFPrint(objectPointer); };

would have the following helper functions generated:

.. code-block:: c

    void __block_copy_foo(struct __block_literal_5 *dst, struct __block_literal_5 *src) {
         _Block_object_assign(&dst->objectPointer, src-> objectPointer, BLOCK_FIELD_IS_OBJECT);
    }

    void __block_dispose_foo(struct __block_literal_5 *src) {
         _Block_object_dispose(src->objectPointer, BLOCK_FIELD_IS_OBJECT);
    }

Imported ``__block`` marked variables
-------------------------------------

Layout of ``__block`` marked variables
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The compiler must embed variables that are marked ``__block`` in a specialized
structure of the form:

.. code-block:: c

    struct _block_byref_foo {
        void *isa;
        struct Block_byref *forwarding;
        int flags;   //refcount;
        int size;
        typeof(marked_variable) marked_variable;
    };

Variables of certain types require helper functions for when ``Block_copy()``
and ``Block_release()`` are performed upon a referencing ``Block``.  At the "C"
level only variables that are of type ``Block`` or ones that have
``__attribute__((NSObject))`` marked require helper functions.  In Objective-C
objects require helper functions and in C++ stack based objects require helper
functions. Variables that require helper functions use the form:

.. code-block:: c

    struct _block_byref_foo {
        void *isa;
        struct _block_byref_foo *forwarding;
        int flags;   //refcount;
        int size;
        // helper functions called via Block_copy() and Block_release()
        void (*byref_keep)(void  *dst, void *src);
        void (*byref_dispose)(void *);
        typeof(marked_variable) marked_variable;
    };

The structure is initialized such that:

    a. The ``forwarding`` pointer is set to the beginning of its enclosing
    structure.

    b. The ``size`` field is initialized to the total size of the enclosing
    structure.

    c. The ``flags`` field is set to either 0 if no helper functions are needed
    or (1<<25) if they are.

    d. The helper functions are initialized (if present).

    e. The variable itself is set to its initial value.

    f. The ``isa`` field is set to ``NULL``.

Access to ``__block`` variables from within its lexical scope
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

In order to "move" the variable to the heap upon a ``copy_helper`` operation the
compiler must rewrite access to such a variable to be indirect through the
structures ``forwarding`` pointer.  For example:

.. code-block:: c

    int __block i = 10;
    i = 11;

would be rewritten to be:

.. code-block:: c

    struct _block_byref_i {
      void *isa;
      struct _block_byref_i *forwarding;
      int flags;   //refcount;
      int size;
      int captured_i;
    } i = { NULL, &i, 0, sizeof(struct _block_byref_i), 10 };

    i.forwarding->captured_i = 11;

In the case of a ``Block`` reference variable being marked ``__block`` the
helper code generated must use the ``_Block_object_assign`` and
``_Block_object_dispose`` routines supplied by the runtime to make the
copies. For example:

.. code-block:: c

    __block void (voidBlock)(void) = blockA;
    voidBlock = blockB;

would translate into:

.. code-block:: c

    struct _block_byref_voidBlock {
        void *isa;
        struct _block_byref_voidBlock *forwarding;
        int flags;   //refcount;
        int size;
        void (*byref_keep)(struct _block_byref_voidBlock *dst, struct _block_byref_voidBlock *src);
        void (*byref_dispose)(struct _block_byref_voidBlock *);
        void (^captured_voidBlock)(void);
    };

    void _block_byref_keep_helper(struct _block_byref_voidBlock *dst, struct _block_byref_voidBlock *src) {
        //_Block_copy_assign(&dst->captured_voidBlock, src->captured_voidBlock, 0);
        _Block_object_assign(&dst->captured_voidBlock, src->captured_voidBlock, BLOCK_FIELD_IS_BLOCK | BLOCK_BYREF_CALLER);
    }

    void _block_byref_dispose_helper(struct _block_byref_voidBlock *param) {
        //_Block_destroy(param->captured_voidBlock, 0);
        _Block_object_dispose(param->captured_voidBlock, BLOCK_FIELD_IS_BLOCK | BLOCK_BYREF_CALLER)}

and:

.. code-block:: c

    struct _block_byref_voidBlock voidBlock = {( .forwarding=&voidBlock, .flags=(1<<25), .size=sizeof(struct _block_byref_voidBlock *),
        .byref_keep=_block_byref_keep_helper, .byref_dispose=_block_byref_dispose_helper,
        .captured_voidBlock=blockA )};

    voidBlock.forwarding->captured_voidBlock = blockB;

Importing ``__block`` variables into ``Blocks``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

A ``Block`` that uses a ``__block`` variable in its compound statement body must
import the variable and emit ``copy_helper`` and ``dispose_helper`` helper
functions that, in turn, call back into the runtime to actually copy or release
the ``byref`` data block using the functions ``_Block_object_assign`` and
``_Block_object_dispose``.

For example:

.. code-block:: c

    int __block i = 2;
    functioncall(^{ i = 10; });

would translate to:

.. code-block:: c

    struct _block_byref_i {
        void *isa;  // set to NULL
        struct _block_byref_voidBlock *forwarding;
        int flags;   //refcount;
        int size;
        void (*byref_keep)(struct _block_byref_i *dst, struct _block_byref_i *src);
        void (*byref_dispose)(struct _block_byref_i *);
        int captured_i;
    };

    struct __block_literal_5 {
        void *isa;
        int flags;
        int reserved;
        void (*invoke)(struct __block_literal_5 *);
        struct __block_descriptor_5 *descriptor;
        struct _block_byref_i *i_holder;
    };

    void __block_invoke_5(struct __block_literal_5 *_block) {
       _block->forwarding->captured_i = 10;
    }

    void __block_copy_5(struct __block_literal_5 *dst, struct __block_literal_5 *src) {
         //_Block_byref_assign_copy(&dst->captured_i, src->captured_i);
         _Block_object_assign(&dst->captured_i, src->captured_i, BLOCK_FIELD_IS_BYREF | BLOCK_BYREF_CALLER);
    }

    void __block_dispose_5(struct __block_literal_5 *src) {
         //_Block_byref_release(src->captured_i);
         _Block_object_dispose(src->captured_i, BLOCK_FIELD_IS_BYREF | BLOCK_BYREF_CALLER);
    }

    static struct __block_descriptor_5 {
        unsigned long int reserved;
        unsigned long int Block_size;
        void (*copy_helper)(struct __block_literal_5 *dst, struct __block_literal_5 *src);
        void (*dispose_helper)(struct __block_literal_5 *);
    } __block_descriptor_5 = { 0, sizeof(struct __block_literal_5) __block_copy_5, __block_dispose_5 };

and:

.. code-block:: c

    struct _block_byref_i i = {( .forwarding=&i, .flags=0, .size=sizeof(struct _block_byref_i) )};
    struct __block_literal_5 _block_literal = {
          &_NSConcreteStackBlock,
          (1<<25)|(1<<29), <uninitialized>,
          __block_invoke_5,
          &__block_descriptor_5,
          2,
    };

Importing ``__attribute__((NSObject))`` ``__block`` variables
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

A ``__block`` variable that is also marked ``__attribute__((NSObject))`` should
have ``byref_keep`` and ``byref_dispose`` helper functions that use
``_Block_object_assign`` and ``_Block_object_dispose``.

``__block`` escapes
^^^^^^^^^^^^^^^^^^^

Because ``Blocks`` referencing ``__block`` variables may have ``Block_copy()``
performed upon them the underlying storage for the variables may move to the
heap.  In Objective-C Garbage Collection Only compilation environments the heap
used is the garbage collected one and no further action is required.  Otherwise
the compiler must issue a call to potentially release any heap storage for
``__block`` variables at all escapes or terminations of their scope.  The call
should be:

.. code-block:: c

    _Block_object_dispose(&_block_byref_foo, BLOCK_FIELD_IS_BYREF);

Nesting
^^^^^^^

``Blocks`` may contain ``Block`` literal expressions.  Any variables used within
inner blocks are imported into all enclosing ``Block`` scopes even if the
variables are not used. This includes ``const`` imports as well as ``__block``
variables.

Objective C Extensions to ``Blocks``
====================================

Importing Objects
-----------------

Objects should be treated as ``__attribute__((NSObject))`` variables; all
``copy_helper``, ``dispose_helper``, ``byref_keep``, and ``byref_dispose``
helper functions should use ``_Block_object_assign`` and
``_Block_object_dispose``.  There should be no code generated that uses
``*-retain`` or ``*-release`` methods.

``Blocks`` as Objects
---------------------

The compiler will treat ``Blocks`` as objects when synthesizing property setters
and getters, will characterize them as objects when generating garbage
collection strong and weak layout information in the same manner as objects, and
will issue strong and weak write-barrier assignments in the same manner as
objects.

``__weak __block`` Support
--------------------------

Objective-C (and Objective-C++) support the ``__weak`` attribute on ``__block``
variables.  Under normal circumstances the compiler uses the Objective-C runtime
helper support functions ``objc_assign_weak`` and ``objc_read_weak``.  Both
should continue to be used for all reads and writes of ``__weak __block``
variables:

.. code-block:: c

    objc_read_weak(&block->byref_i->forwarding->i)

The ``__weak`` variable is stored in a ``_block_byref_foo`` structure and the
``Block`` has copy and dispose helpers for this structure that call:

.. code-block:: c

    _Block_object_assign(&dest->_block_byref_i, src-> _block_byref_i, BLOCK_FIELD_IS_WEAK | BLOCK_FIELD_IS_BYREF);

and:

.. code-block:: c

    _Block_object_dispose(src->_block_byref_i, BLOCK_FIELD_IS_WEAK | BLOCK_FIELD_IS_BYREF);

In turn, the ``block_byref`` copy support helpers distinguish between whether
the ``__block`` variable is a ``Block`` or not and should either call:

.. code-block:: c

    _Block_object_assign(&dest->_block_byref_i, src->_block_byref_i, BLOCK_FIELD_IS_WEAK | BLOCK_FIELD_IS_OBJECT | BLOCK_BYREF_CALLER);

for something declared as an object or:

.. code-block:: c

    _Block_object_assign(&dest->_block_byref_i, src->_block_byref_i, BLOCK_FIELD_IS_WEAK | BLOCK_FIELD_IS_BLOCK | BLOCK_BYREF_CALLER);

for something declared as a ``Block``.

A full example follows:

.. code-block:: c

    __block __weak id obj = <initialization expression>;
    functioncall(^{ [obj somemessage]; });

would translate to:

.. code-block:: c

    struct _block_byref_obj {
        void *isa;  // uninitialized
        struct _block_byref_obj *forwarding;
        int flags;   //refcount;
        int size;
        void (*byref_keep)(struct _block_byref_i *dst, struct _block_byref_i *src);
        void (*byref_dispose)(struct _block_byref_i *);
        id captured_obj;
    };

    void _block_byref_obj_keep(struct _block_byref_voidBlock *dst, struct _block_byref_voidBlock *src) {
        //_Block_copy_assign(&dst->captured_obj, src->captured_obj, 0);
        _Block_object_assign(&dst->captured_obj, src->captured_obj, BLOCK_FIELD_IS_OBJECT | BLOCK_FIELD_IS_WEAK | BLOCK_BYREF_CALLER);
    }

    void _block_byref_obj_dispose(struct _block_byref_voidBlock *param) {
        //_Block_destroy(param->captured_obj, 0);
        _Block_object_dispose(param->captured_obj, BLOCK_FIELD_IS_OBJECT | BLOCK_FIELD_IS_WEAK | BLOCK_BYREF_CALLER);
    };

for the block ``byref`` part and:

.. code-block:: c

    struct __block_literal_5 {
        void *isa;
        int flags;
        int reserved;
        void (*invoke)(struct __block_literal_5 *);
        struct __block_descriptor_5 *descriptor;
        struct _block_byref_obj *byref_obj;
    };

    void __block_invoke_5(struct __block_literal_5 *_block) {
       [objc_read_weak(&_block->byref_obj->forwarding->captured_obj) somemessage];
    }

    void __block_copy_5(struct __block_literal_5 *dst, struct __block_literal_5 *src) {
         //_Block_byref_assign_copy(&dst->byref_obj, src->byref_obj);
         _Block_object_assign(&dst->byref_obj, src->byref_obj, BLOCK_FIELD_IS_BYREF | BLOCK_FIELD_IS_WEAK);
    }

    void __block_dispose_5(struct __block_literal_5 *src) {
         //_Block_byref_release(src->byref_obj);
         _Block_object_dispose(src->byref_obj, BLOCK_FIELD_IS_BYREF | BLOCK_FIELD_IS_WEAK);
    }

    static struct __block_descriptor_5 {
        unsigned long int reserved;
        unsigned long int Block_size;
        void (*copy_helper)(struct __block_literal_5 *dst, struct __block_literal_5 *src);
        void (*dispose_helper)(struct __block_literal_5 *);
    } __block_descriptor_5 = { 0, sizeof(struct __block_literal_5), __block_copy_5, __block_dispose_5 };

and within the compound statement:

.. code-block:: c

    truct _block_byref_obj obj = {( .forwarding=&obj, .flags=(1<<25), .size=sizeof(struct _block_byref_obj),
                     .byref_keep=_block_byref_obj_keep, .byref_dispose=_block_byref_obj_dispose,
                     .captured_obj = <initialization expression> )};

    truct __block_literal_5 _block_literal = {
         &_NSConcreteStackBlock,
         (1<<25)|(1<<29), <uninitialized>,
         __block_invoke_5,
         &__block_descriptor_5,
         &obj,        // a reference to the on-stack structure containing "captured_obj"
    };

    functioncall(_block_literal->invoke(&_block_literal));

C++ Support
===========

Within a block stack based C++ objects are copied into ``const`` copies using
the copy constructor.  It is an error if a stack based C++ object is used within
a block if it does not have a copy constructor.  In addition both copy and
destroy helper routines must be synthesized for the block to support the
``Block_copy()`` operation, and the flags work marked with the (1<<26) bit in
addition to the (1<<25) bit.  The copy helper should call the constructor using
appropriate offsets of the variable within the supplied stack based block source
and heap based destination for all ``const`` constructed copies, and similarly
should call the destructor in the destroy routine.

As an example, suppose a C++ class ``FOO`` existed with a copy constructor.
Within a code block a stack version of a ``FOO`` object is declared and used
within a ``Block`` literal expression:

.. code-block:: c++

    {
        FOO foo;
        void (^block)(void) = ^{ printf("%d\n", foo.value()); };
    }

The compiler would synthesize:

.. code-block:: c++

    struct __block_literal_10 {
        void *isa;
        int flags;
        int reserved;
        void (*invoke)(struct __block_literal_10 *);
        struct __block_descriptor_10 *descriptor;
        const FOO foo;
    };

    void __block_invoke_10(struct __block_literal_10 *_block) {
       printf("%d\n", _block->foo.value());
    }

    void __block_literal_10(struct __block_literal_10 *dst, struct __block_literal_10 *src) {
         FOO_ctor(&dst->foo, &src->foo);
    }

    void __block_dispose_10(struct __block_literal_10 *src) {
         FOO_dtor(&src->foo);
    }

    static struct __block_descriptor_10 {
        unsigned long int reserved;
        unsigned long int Block_size;
        void (*copy_helper)(struct __block_literal_10 *dst, struct __block_literal_10 *src);
        void (*dispose_helper)(struct __block_literal_10 *);
    } __block_descriptor_10 = { 0, sizeof(struct __block_literal_10), __block_copy_10, __block_dispose_10 };

and the code would be:

.. code-block:: c++

    {
      FOO foo;
      comp_ctor(&foo); // default constructor
      struct __block_literal_10 _block_literal = {
        &_NSConcreteStackBlock,
        (1<<25)|(1<<26)|(1<<29), <uninitialized>,
        __block_invoke_10,
        &__block_descriptor_10,
       };
       comp_ctor(&_block_literal->foo, &foo);  // const copy into stack version
       struct __block_literal_10 &block = &_block_literal;  // assign literal to block variable
       block->invoke(block);    // invoke block
       comp_dtor(&_block_literal->foo); // destroy stack version of const block copy
       comp_dtor(&foo); // destroy original version
    }

C++ objects stored in ``__block`` storage start out on the stack in a
``block_byref`` data structure as do other variables.  Such objects (if not
``const`` objects) must support a regular copy constructor.  The ``block_byref``
data structure will have copy and destroy helper routines synthesized by the
compiler.  The copy helper will have code created to perform the copy
constructor based on the initial stack ``block_byref`` data structure, and will
also set the (1<<26) bit in addition to the (1<<25) bit.  The destroy helper
will have code to do the destructor on the object stored within the supplied
``block_byref`` heap data structure.  For example,

.. code-block:: c++

    __block FOO blockStorageFoo;

requires the normal constructor for the embedded ``blockStorageFoo`` object:

.. code-block:: c++

    FOO_ctor(& _block_byref_blockStorageFoo->blockStorageFoo);

and at scope termination the destructor:

.. code-block:: c++

    FOO_dtor(& _block_byref_blockStorageFoo->blockStorageFoo);

Note that the forwarding indirection is *NOT* used.

The compiler would need to generate (if used from a block literal) the following
copy/dispose helpers:

.. code-block:: c++

    void _block_byref_obj_keep(struct _block_byref_blockStorageFoo *dst, struct _block_byref_blockStorageFoo *src) {
         FOO_ctor(&dst->blockStorageFoo, &src->blockStorageFoo);
    }

    void _block_byref_obj_dispose(struct _block_byref_blockStorageFoo *src) {
         FOO_dtor(&src->blockStorageFoo);
    }

for the appropriately named constructor and destructor for the class/struct
``FOO``.

To support member variable and function access the compiler will synthesize a
``const`` pointer to a block version of the ``this`` pointer.

.. _RuntimeHelperFunctions:

Runtime Helper Functions
========================

The runtime helper functions are described in
``/usr/local/include/Block_private.h``.  To summarize their use, a ``Block``
requires copy/dispose helpers if it imports any block variables, ``__block``
storage variables, ``__attribute__((NSObject))`` variables, or C++ ``const``
copied objects with constructor/destructors.  The (1<<26) bit is set and
functions are generated.

The block copy helper function should, for each of the variables of the type
mentioned above, call:

.. code-block:: c

     _Block_object_assign(&dst->target, src->target, BLOCK_FIELD_<appropo>);

in the copy helper and:

.. code-block:: c

    _Block_object_dispose(->target, BLOCK_FIELD_<appropo>);

in the dispose helper where ``<appropo>`` is:

.. code-block:: c

    enum {
        BLOCK_FIELD_IS_OBJECT   =  3,  // id, NSObject, __attribute__((NSObject)), block, ...
        BLOCK_FIELD_IS_BLOCK    =  7,  // a block variable
        BLOCK_FIELD_IS_BYREF    =  8,  // the on stack structure holding the __block variable

        BLOCK_FIELD_IS_WEAK     = 16,  // declared __weak

        BLOCK_BYREF_CALLER      = 128, // called from byref copy/dispose helpers
    };

and of course the constructors/destructors for ``const`` copied C++ objects.

The ``block_byref`` data structure similarly requires copy/dispose helpers for
block variables, ``__attribute__((NSObject))`` variables, or C++ ``const``
copied objects with constructor/destructors, and again the (1<<26) bit is set
and functions are generated in the same manner.

Under ObjC we allow ``__weak`` as an attribute on ``__block`` variables, and
this causes the addition of ``BLOCK_FIELD_IS_WEAK`` orred onto the
``BLOCK_FIELD_IS_BYREF`` flag when copying the ``block_byref`` structure in the
``Block`` copy helper, and onto the ``BLOCK_FIELD_<appropo>`` field within the
``block_byref`` copy/dispose helper calls.

The prototypes, and summary, of the helper functions are:

.. code-block:: c

    /* Certain field types require runtime assistance when being copied to the
       heap.  The following function is used to copy fields of types: blocks,
       pointers to byref structures, and objects (including
       __attribute__((NSObject)) pointers.  BLOCK_FIELD_IS_WEAK is orthogonal to
       the other choices which are mutually exclusive.  Only in a Block copy
       helper will one see BLOCK_FIELD_IS_BYREF.
    */
    void _Block_object_assign(void *destAddr, const void *object, const int flags);

    /* Similarly a compiler generated dispose helper needs to call back for each
       field of the byref data structure.  (Currently the implementation only
       packs one field into the byref structure but in principle there could be
       more).  The same flags used in the copy helper should be used for each
       call generated to this function:
    */
    void _Block_object_dispose(const void *object, const int flags);

Copyright
=========

Copyright 2008-2010 Apple, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.


text:
Respighi Reviews
Concerto in modo misolidio
Concerto a cinque *
Konstantin Scherbakov, piano
* Igor Fábera, oboe
* Jurjaz Bartoš, trumpet
* Jarolin Ružička, violin
* Radoslav Šaslina, double bass
Slovak Radio Symphony (Bratislava)/Howard Griffiths
* Capella Istropolitana/Ewald Daniel
Naxos 8.553366 61:02
Summary for the Busy Executive: The other Respighi.
Listeners know Respighi best for his blockbuster Roman trilogy of tone poems – Fountains of Rome, Pines of Rome, and Roman Festivals – all written within roughly a decade (and, by the way, attracting a fan in Mussolini), and for his arrangements of Renaissance lute and keyboard works, collected mainly in his three Ancient Airs and Dances suites. All of these works represent a search for a renewed Italian music, particularly instrumental music, modern yet rooted in the Italian past.
Unfortunately, Respighi's work, despite its enormous attractions, hasn't quite the strength to take on the responsibilities he puts on it. However, Respighi began to explore Gregorian chant as basic material around the end of World War I. Earlier works, even juvenilia, had quoted chant, but a little like tourists with a phrasebook. In the later scores, Respighi makes a new language, based heavily on chant, the music becomes more abstract and the rhetoric deeper. Although it lacks the colorful thrills of the composer's most popular works, this music comes closest to Respighi's ambitions.
From 1925, the three-movement Concerto in modo misolidio for piano and orchestra was designed for Respighi's own abilities at the keyboard. As a pianist, the composer was a good string player. Consequently, this is no virtuoso showcase. The interest of the work comes down to the quality and working-out of ideas, rather than on feats of digital derring-do. The number of movements may be standard, but not the movements themselves. The first takes four ideas – the plainchant Viri Galilaei, an "oriental" arabesque, a descending fanfare, and a lilting ascending theme, which Respighi sometimes treats in canon. It moves along sturdily enough until the end and then falls apart at the third (!) cadenza, although the composer manages to pull it together for a poetic close. The slow movement, marked Lento, my favorite of the concerto, begins with a beautiful modal theme in the strings. For the first few minutes, the piano confines itself to essentially embroidery, while the orchestra takes the burden of the argument. The piano then begins a more equal dialogue with the orchestra, which leads to a noble chorale idea in the brass, against which the piano comments. Eventually, we encounter a "pastoral" duet between oboe and bassoon against radiant strings. Again, the piano confines itself to comment. A variant of the initial idea returns, with piano again in subsidiary role. The orchestra drops out, the piano strikes up something new and sprightlier, and we find ourselves in the finale, which Respighi designates as a passacaglia. It lies squarely in the Romantic tradition of homage to the Baroque (see Brahms' Haydn Variations, for example), rather than any Stravinskian pastiche or Hindemithian homage. It's far from a strict example of the form, and indeed the subject, with an insistence on the tonic note, is not all that promising. "Passacaglia-inspired" rather than a true passacaglia hits closer to the mark, but it bubbles with so much inventive music, I don't complain.
The Concerto a cinque represents Respighi's rapprochement with international neoclassicism. A late work from 1933 (Respighi died in 1936), it bears a dedication to the great American patron of modern music Elizabeth Sprague Coolidge. He modeled it rather heavily on the Baroque concerto grosso, particularly on the examples of Telemann and Vivaldi. The first movement, dominated by the solo violin, begins with a majestic opening, which insists on the tonic note, slightly reminiscent of Bloch's Concerto Grosso #1. Indeed, there are so many similarities with the that score, it wouldn't surprise me to learn that Bloch provided a model closer to hand. After some cadenza-like passages for solo instruments, it settles into an allegro based on the opening declaration. Toward the end, it slows down in a transition passage leading to the adagio second movement. This is yet another of Respighi's quasi-passacaglias. Most of its material comes from an ascending bass line, usually not strictly repeated, denoting the key of d-minor. Indeed, the bass line also appears in major modes as well. Against the bass, Respighi usually weaves a beautiful contrapuntal interplay among the solo instruments, with long free, lyric episodes in between. This is the longest, most substantial movement in the work. The finale begins as a bouncy fugal gigue. Along the way, it changes to duple time. Then the gigue returns and plays out against its duple-time self. Toward the end, Respighi springs a surprise, which I won't give away here.
The performers are merely okay, Scherbakov excepted. Although Daniel outdoes Griffiths (who, to be fair, has the more difficult job), I don't feel either one quite understands what Respighi's up to. Griffiths and the orchestra let Scherbakov down by failing to provide what we used to call moxie. Pages of the score just lie there like a beautiful red snapper, dead on the boat deck. The Concerto a cinque moves better, and as far as I know, this is the only recording. Both pieces are definitely worth your time, although I'd go with Edward Downes and soloist Geoffrey Tozer on Chandos CHAN9285, even with its weak-sister coupling of Repighi's 1902 piano concerto, nowhere up to the later one.
Copyright © 2008, Steve Schwartz

redpajama_set_name: RedPajamaCommonCrawl


MMA fighter Denver Lewis has been watching Cherry Peyton for a long time. He has been watching and wanting her fiercely. But her flirting with other men has been holding him back from making his move. Cherry has wanted Denver since she first met him but when he made it obvious that he wasn't interested in her, she flirted, nothing serious but just enough to soothe her wounded ego. Denver has seen enough, he's determined to finally make Cherry his and once he does she will be ONLY his. Now that they have found their way to each other, can they survive the monster from Cherry's past who won't let go of his obsession with her?
The first two words that pop into my head when I think about Holding Strong is smoking hot!! I fell in love with Denver and Cherry and I am finding myself obsessed with their story. Lori Foster knocked it out of the park with her new Ultimate series. I'm so hooked!!! I'm not sure whose story I want next. I just know I want it right now!!!


We provide a variety of specialized soil analyses. Pricing depends on the required analysis, sample type and quantity. In addition to Elemental Analysis, we perform specialized tests such as Acid-Base Potential, Cation Exchange Capacity, Sodium Adsorption Ratio, Particle Size, exchangeable Acidity, Extractable Anions and Cations, Saturation Capacity, Sulfate Adsorption Isotherms, etc. We maintain a USDA permit to allow for processing of soil samples from agriculturally quarantined areas. Please contact us for additional information.


I would just like to pass on my thanks to all of the hard working team for the performance of 45305 on RTC's "Coast to Coast" on Saturday 2nd July. It was an outstanding and most enjoyable performance, both from the loco and crew; particularly the long suffering support crew! :-) The loco was turned out immaculately and was a credit to all. The challenging climb to Miles Platting and the long ascent to Summit Tunnel westbound from Wakefield will remain with me for a very long time; the music from the front end was truly superb! Again, my thanks to all. Regards, A. Kennett.
A brief testimonial: I was at Hatfield Peverel on Saturday when 70013 thundered through. Awesome! Paul Holt.
Many thanks to the people who sent these compliments, and also to the various people who have complimented the engines and the association elsewhere on the internet – it's always good to know that people have enjoyed seeing these locomotives performing – that's what we do it for.


LED Lighting | Royal Electrical Services, Inc.
Royal Electrical Services, Inc., are the LED Lighting experts. We provide residential, commercial and industrial lighting service.
We have over $1 MILLION returned to customers in rebates.
Up to 50% savings on total project cost through Black Hills Energy.
to get our customers the largest rebate possible.
In the table below are lighting comparisons. Which will you use?


text:
Using Poetry to Reflect Upon the Civil War – Part 3: Walt Whitman
Walt Whitman (1819-1892) is known as "America's Poet," and for good reason. His poetry captured the spirit of a country that was growing, expanding, tearing down, and building up, while still carrying the weight of its past.
Whitman may also be known as the poet of America's Civil War. He wrote some 71 poems about the conflict, both during the war and after. Many of these poems were incorporated into various editions of Leaves of Grass. The first edition of Leaves of Grass , published in 1855, held just 12 poems. He kept revising, editing, and adding until the final edition had more than 400 poems, including many of the ones he wrote about the Civil War.
Whitman was 41 when the war began. The Civil War began with a burst of enthusiasm on both sides (mirrored 53 years later in Europe with the outbreak of World War I). You can read that enthusiasm in Whitman's early war poems, including "Drum Taps," "Cavalry crossing a ford," and "Song of the Banner at Day-Break." These are almost poems of celebration and patriotism, and to read them today is to make one wonder, with the benefit of hindsight, whether Whitman really knew what he was writing about.
The substance and tenor of his Civil War poems changed in December 1862. His younger brother George had been wounded at the Battle of Fredericksburg that month, and Whitman headed south in a desperate search to find him. He did find him, and it turned out that George had only been lightly wounded.
He had been one of the fortunate ones. The battle had been horrific for both sides, but especially for the Union forces. Some 1,300 Union soldiers had been killed and more than 9,000 were wounded. Many of them ended up in hospitals in Washington, D.C., and it was there that Whitman traveled, after assuring himself that George was safe.
Whitman spent the next 11 years in Washington. He spent the war years visiting the wounded and dying in hospitals. It changed his view of the war completely. He could see the devastation and destruction firsthand. He watched young men and boys die. He wrote letters for the injured. His poems about the war became darker.
Some of the poems, including one of the most famous ones about the war, involve Abraham Lincoln. Whitman was a deep admirer of the president, and often saw him in his carriage on the streets of Washington. In many ways, Lincoln represented what was right about America, including his determination to preserve the Union. His assassination in April 1865 devastated Whitman. And it resulted in one of the best known and best loved poems in American history.
O Captain! My Captain! (1865)
O Captain! my Captain! our fearful trip is done,
The ship has weather'd every rack, the prize we sought is won,
The port is near, the bells I hear, the people all exulting,
While follow eyes the steady keel, the vessel grim and daring;
But O heart! heart! heart!
O the bleeding drops of red,
Where on the deck my Captain lies,
Fallen cold and dead.
O Captain! my Captain! rise up and hear the bells;
Rise up—for you the flag is flung—for you the bugle trills,
For you bouquets and ribbon'd wreaths—for you the shores a-crowding,
For you they call, the swaying mass, their eager faces turning;
Here Captain! dear father!
This arm beneath your head!
It is some dream that on the deck,
You've fallen cold and dead.
My Captain does not answer, his lips are pale and still,
My father does not feel my arm, he has no pulse nor will,
The ship is anchor'd safe and sound, its voyage closed and done,
From fearful trip the victor ship comes in with object won;
Exult O shores, and ring O bells!
But I with mournful tread,
Walk the deck my Captain lies,
In 2015, for the 150th anniversary of the end of the Civil War, a special edition of Whitman's poems was published. Drum Taps: The Complete Civil War Poems includes all 71 poems, several short essays by Whitman, an introduction by Civil War historian James MacPherson, the original introduction to the Drum Taps collection published in 1915, and numerous photographs and artworks from the Civil War period. It's a beautiful volume, itself an artifact of memory and remembrance.
Walt Whitman was the American everyman. His poetry celebrated the energy and drive associated with this relatively young nation, and it initially celebrated the onset of the Civil War. He embraced wild-eyed and enthusiastic patriotism and partisanship. But as the human deaths and suffering mounted, he could no longer ignore the costs. And so his poetry changed, and because it did, our understanding of the Civil War changed as well.
By Glynn Young
Source: tweetspeakpoetry.com
This entry was posted in ebook, Publishing and tagged civil war, poet, poetry, poets on July 10, 2018 by First Edition Design Publishing.
← Grammar Rules: Fewer vs. Less 5 Things a Writer Needs to Know About a Character with a Mental Illness →


text:
Mon premier blog
« Books downloads for free pdf The Years That Matter - Free download audiobooks to cd The Boy with Big, »
Download free books online pdf format The Dutch House by Ann Patchett
Par petrone jesusa le samedi, octobre 24 2020, 06:28 - Lien permanent
The Dutch House. Ann Patchett
The-Dutch-House.pdf
ISBN: 9780062963673 | 352 pages | 9 Mb
The Dutch House
Publisher: HarperCollins Publishers
Download The Dutch House
Ann Patchett, the New York Times bestselling author of Commonwealth and State of Wonder, returns with her most powerful novel to date: a richly moving story that explores the indelible bond between two siblings, the house of their childhood, and a past that will not let them go. "'Do you think it's possible to ever see the past as it actually was?' I asked my sister. We were sitting in her car, parked in front of the Dutch House in the broad daylight of early summer." At the end of the Second World War, Cyril Conroy combines luck and a single canny investment to begin an enormous real estate empire, propelling his family from poverty to enormous wealth. His first order of business is to buy the Dutch House, a lavish estate in the suburbs outside of Philadelphia. Meant as a surprise for his wife, the house sets in motion the undoing of everyone he loves. The story is told by Cyril's son Danny, as he and his older sister, the brilliantly acerbic and self-assured Maeve, are exiled from the house where they grew up by their stepmother. The two wealthy siblings are thrown back into the poverty their parents had escaped from and find that all they have to count on is one another. It is this unshakeable bond between them that both saves their lives and thwarts their futures. Set over the course of five decades, The Dutch House is a dark fairy tale about two smart people who cannot overcome their past. Despite every outward sign of success, Danny and Maeve are only truly comfortable when they're together. Throughout their lives they return to the well-worn story of what they've lost with humor and rage. But when at last they're forced to confront the people who left them behind, the relationship between an indulged brother and his ever-protective sister is finally tested. The Dutch House is the story of a paradise lost, a tour de force that digs deeply into questions of inheritance, love and forgiveness, of how we want to see ourselves and of who we really are. Filled with suspense, you may read it quickly to find out what happens, but what happens to Danny and Maeve will stay with you for a very long time.
The Dutch House by by Ann Patchett: Summary and reviews
Summary and reviews of The Dutch House by Ann Patchett, plus links to a book excerpt from The Dutch House and author biography of Ann Patchett. House of Orange | European dynasty | Britannica.com
House of Orange, princely dynasty that derived its name from the medieval principality of Under the Dutch house of Orange, the north was to be predominant. Ann Patchett - The Dutch House (San Francisco Ferry Building Store
Those with a Book Passage receipt for The Dutch House may join the signing line to meet Ann Patchett. The book can be preordered at either Book Passage Dutch House / Rem Koolhaas | ArchDaily
In the case of the Dutch House by Rem Koolhaas, the unique and very challenging environmental conditions and topography of the site led to a The Dutch House: Ann Patchett: Bloomsbury Publishing
Danny Conroy grows up in the Dutch House, a lavish mansion. Though his father is distant and his mother is absent, Danny has his beloved sister Maeve: THE DUTCH HOUSE by Ann Patchett | Kirkus Reviews
Like The Children's Crusade by Ann Packer or Life Among Giants by Bill Roorbach, this is a deeply pleasurable book about a big house and Beautiful iconic Dutch house, 4 min. to the centre - Townhouses for
Aug 19, 2019 - Private room for $46. The room is in a classical Dutch " gentleman's" style house in a great neighbourhood. The location is very good, it is located The Dutch House - Ann Patchett - E-book - HarperCollins Publishers
Ann Patchett, the New York Times bestselling author of Commonwealth and State of Wonder, returns with her most powerful novel to date: a richly moving story
Free ebooks english literature download Atlas of Men 9781732348400 by David Sklar in English MOBI iBook
E book for free download Avatar, The Last Airbender: The Rise of Kyoshi in English
Descargar ebooks para iphone 4 The Gentleman's Guide to Getting Lucky DJVU iBook ePub en español
Descarga gratuita de libros de audio torrent SIGO SIENDO YO de JOJO MOYES 9788466346511 in Spanish
Descargas de audiolibros en línea gratis FRANKENSTEIN (CATALÀ) 9788448930387
Busca y descarga libros por isbn REBELION EN LA GRANJA
Descargas gratuitas de libros en google Mi vida y mi carcel con Pablo Escobar de Victoria Eugenia Henao PDB 9786070755941
Libros en línea descarga gratuita pdf MI ISLA (BETA COQUETA) 9788491290148


text:
package org.jenkinsci.plugins.p4.tagging;

import hudson.AbortException;
import hudson.EnvVars;
import hudson.FilePath;
import hudson.Launcher;
import hudson.model.Job;
import hudson.model.Result;
import hudson.model.Run;
import hudson.model.TaskListener;
import jenkins.model.Jenkins;
import jenkins.tasks.SimpleBuildStep;
import org.jenkinsci.plugins.p4.workspace.Expand;

import java.io.IOException;
import java.util.logging.Logger;

public class TagNotifierStep extends TagNotifier implements SimpleBuildStep {

	private static final Logger logger = Logger.getLogger(TagNotifierStep.class.getName());

	public TagNotifierStep(String rawLabelName, String rawLabelDesc, boolean onlyOnSuccess) {
		super(rawLabelName, rawLabelDesc, onlyOnSuccess);
	}

	@Override
	public void perform(Run<?, ?> run, FilePath workspace, Launcher launcher, TaskListener listener)
			throws InterruptedException, IOException {

		// return early if label not required
		if (onlyOnSuccess && run.getResult() != Result.SUCCESS) {
			return;
		}
		try {
			// Expand label name and description
			EnvVars env = run.getEnvironment(listener);
			Expand expand = new Expand(env);
			String name = expand.format(rawLabelName, false);
			String description = expand.format(rawLabelDesc, false);

			// Get TagAction and check for promoted builds
			TagAction tagAction = getTagAction(env, run);

			// Label with TagAction
			tagAction.labelBuild(listener, name, description, workspace);
		} catch (Exception e) {
			final String err = "P4: Could not label: " + e;
			logger.severe(err);
			throw new AbortException(err);
		}
	}

	private TagAction getTagAction(EnvVars env, Run<?, ?> run) {
		TagAction tagAction = TagAction.getLastAction(run);

		// process promoted builds?
		if (tagAction == null) {
			String jobName = env.get("PROMOTED_JOB_NAME");
			if (jobName == null || jobName.isEmpty()) {
				logger.warning("No tag information; not a promotion job.");
				return tagAction;
			}

			String buildNumber = env.get("PROMOTED_NUMBER");
			if (buildNumber == null || buildNumber.isEmpty()) {
				logger.warning("No tag information; not a promotion job.");
				return tagAction;
			}

			Jenkins j = Jenkins.getInstance();
			Job<?, ?> job = j.getItemByFullName(jobName, Job.class);
			if (job == null) {
				logger.warning("No job information; is it a valid Perforce job?");
				return tagAction;
			}

			int buildNum = Integer.parseInt(buildNumber);
			run = job.getBuildByNumber(buildNum);
			if (run == null) {
				logger.warning("No build number; is it a valid Perforce job?");
				return tagAction;
			}

			tagAction = run.getAction(TagAction.class);

			if (tagAction == null) {
				logger.warning("No tag information; is it a valid Perforce job?");
				return tagAction;
			}
		}
		return tagAction;
	}
}

redpajama_set_name: RedPajamaGithub


At this years' OKHR State Conference in Norman, TAHRA's own, Heidi Hartman, SHRM-SCP, SPHR was the chosen as the recipient of the 2017 Oklahoma Excellence in Human Resources Award. This award, presented annually at the Oklahoma Human Resources (OKHR) State Conference, is given to recognize and honor outstanding achievement in the field of Human Resource Management. The award signifies a professional who demonstrates the SHRM mission of "STP – Serving the HR Professional" and "ATP – Advancing the Profession." Candidates should be viewed as role models for the profession, leaders rather than followers, who apply and share their professional expertise and leadership both within and outside of the organization.
Heidi has been an active member of TAHRA for 20 years and has served on the board in various capacities, including president, for the past 6 years. Heidi also serves on the OKHR State Council as the Eastern District Director. Other groups in Tulsa that benefit from Heidi's dedication and service include, YWCA, Mosaic, HOPE, Planned Parenthood, The FORGE and Community Health Connection.
TAHRA is proud to have such high caliber volunteers and members! Join us in congratulating Heidi on this amazing honor!
We also wanted to share a SHRM Blog written about Heidi by our SHRM Field Services Director, Sherry Johnson. Heidi was highlighted for her volunteerism for Volunteer Week.


text:
Lipstick & Dynamite, Piss & Vinegar: The First Ladies of Wrestling
This spring grab life in a headlock.
83 min 6 2005
IMDb R. Tomatoes
Ring legends such as The Fabulous Moolah and Gladys "Kill 'Em" Gillem Long provide candid insights into the history of women's professional wrestling.
Lillian Ellison
Gladys Gillem
Johnnie Mae Young
Ida May Martinez
Penny Banner
Ella Waldek
Louis Vincent Albano
Freddy Blassie
Set during a sultry summer in a French suburb, Marie is desperate to join the local pool's synchronized swimming team, but is her interest solely for the sake of sport or for a chance to get close to Floriane, the bad girl of the team? Sciamma, and the two leads, capture the uncertainty of teenage sexuality with a sympathetic eye in this delicate drama of the angst of coming-of-age.
A young woman's plans to propose to her girlfriend while at her family's annual holiday party are upended when she discovers her partner hasn't yet come out to her conservative parents.
An American girl, Daphne, heads to Europe in search of the father she's never met. But instead of finding a British version of her bohemian mother, she learns the love of her mom's life is an uptight politician. The only problem now is that her long-lost dad is engaged to a fiercely territorial social climber with a daughter who makes Daphne's life miserable.
What a Girl Wants
Despite her sheltered upbringing, Jenny is a teen with a bright future; she's smart, pretty, and has aspirations of attending Oxford University. When David, a charming but much older suitor, motors into her life in a shiny automobile, Jenny gets a taste of adult life that she won't soon forget.
An unexpected affair quickly escalates into a heart-stopping reality for two women whose passionate connection changes their lives forever.
Below Her Mouth
Adèle's life is changed when she meets Emma, a young woman with blue hair, who will allow her to discover desire, to assert herself as a woman and as an adult. In front of others, Adele grows, seeks herself, loses herself, finds herself.
The tender, heartbreaking story of a young man's struggle to find himself, told across three defining chapters in his life as he experiences the ecstasy, pain, and beauty of falling in love, while grappling with his own sexuality.
Feeling pressured to become more sexually experienced before she goes to college, Brandy Klark makes a list of things to accomplish before hitting campus in the fall.
The To Do List
When three parents discover their daughters' pact to lose their virginity at prom, they launch a covert one-night operation to stop the teens from sealing the deal.
On an isolated island in Brittany at the end of the eighteenth century, a female painter is obliged to paint a wedding portrait of a young woman.
In 1950s New York, a department-store clerk who dreams of a better life falls for an older, married woman.
A 17-year old Missouri teen named Veronica discovers she has gotten pregnant, a development that threatens to end her dreams of matriculating at an Ivy League college, and the career that could follow.
Dr. Jean Markham returns to the town she left as a teenager to take over her late father's medical practice. When a school-yard scuffle lands Charlie in her surgery, she invites him to visit the hives in her garden and tell his secrets to the bees, as she once did. The new friendship between the boy and the bee keeper brings his mother Lydia into Jean's world.
Tell It to the Bees
19-year old Belle practices playing the violin diligently, but is unable to impart her music with a sensitive undertone. Her life changes when she discovers that sexual desire stimulates passion in her music.
LelleBelle
Pennsylvania, 1993. After getting caught with another girl, teenager Cameron Post is sent to a conversion therapy center run by the strict Dr. Lydia Marsh and her brother, Reverend Rick, whose treatment consists in repenting for feeling "same sex attraction." Cameron befriends fellow sinners Jane and Adam, thus creating a new family to deal with the surrounding intolerance.
Two high school girls are best friends until one dates the other's older brother, who is totally his sister's nemesis.
Alice, a young innocent Catholic girl, is tempted into masturbating after an AOL chat suddenly turns sexual, however is conflicted as the act would be considered a sin.
The star of a team of teenage crime fighters falls for the alluring villainess she must bring to justice.
D.E.B.S.
A father and daughter live a perfect but mysterious existence in Forest Park, a beautiful nature reserve near Portland, Oregon, rarely making contact with the world. But when a small mistake tips them off to authorities, they are sent on an increasingly erratic journey in search of a place to call their own.
Thirteen-year-old Kayla endures the tidal wave of contemporary suburban adolescence as she makes her way through the last week of middle school — the end of her thus far disastrous eighth grade year — before she begins high school.
© 2021 Cinema One, All rights reserved.
Thanks for reaching out to us.


and your own common sense."
Nice quote, huh? But, it could be better. Instead of following one's own reason and common sense....one should believe something only after careful observation and analysis. Then perhaps adjust your common sense to those findings.
Really sorry for the lack of system trading posts these past few weeks. Doesn't mean I've changed focus...just means I've been extremely busy in system development work. I'm building several tools to aid in my trading idea validations. Along with tools to aid in identifying the core components that lead to success in my current systems. Needless to say, it has been a learning experience. For one, this work has led me to understand more about the systems I trade. And secondly, has driven home the importance of keeping systems simple.
Spend time trying to understand Group 3's Lousy Losers. What caused those really awful losses?
But don't forget to check out Group 2's Churners. The trades that didn't do anything for your bottom line still have a cost...they tie up valuable capital and keep those brokers fat and happy.
And of course, don't forget to take a look or two at Group 1's Great Performers. That's where your Gordon Gekko personality needs to kick in and ask yourself...Could I have made more?


text:
Q: D3.js, Global Chloropleth / Heat Map . Make Legend Horizontal and Add Black Borders Around Countries I've been playing around with d3.js for the first time and have managed to create a basic chloropleth map.

In essence there are 3 things remaining that i'd like to do, but am not familiar enough with d3 or Javascript to do them:

*

*Make legend horizontal and move it below the coast of Africa

*Add thin black border to all of the countries.

*Perhaps automatically crop out antartica? This can be done in post processing if not possible
Not sure if these tasks are impossible or easy as I have not worked much with d3.js and wasn't making much headway.
<!DOCTYPE html>
<meta charset="utf-8">
<style>
  @import url(//fonts.googleapis.com/css?family=Times+New+Roman);

  .countries {
    fill: none;
    stroke: #fff;
    stroke-linejoin: round;
  }
  .legendThreshold {
      font-size: 12px;
      font-family: sans-serif;
  }
  .caption {
      fill: #000;
      text-anchor: start;
      font-size: 14px;
  }
  /*      font-weight: bold;*/

  .anchorNode {
       font-family: "Times New Roman";
      font-size: 2px;
  }
  .legendLinear text.label {
     fill: '#fff'
       font-family: "Times New Roman";
      font-size: 2px;
}

  .legendThreshold text.label {
     fill: '#fff'
       font-family: "Times New Roman";
     font-size: 12px;

}
* {
 font-family: "Times New Roman", Times, serif;

}

/* font-size: 100%;*/

</style>
<svg width="960" height="600"></svg>
<script src="https://d3js.org/d3.v4.min.js"></script>
<script src="https://d3js.org/d3-scale-chromatic.v1.min.js"></script>
<script src="https://d3js.org/d3-geo-projection.v2.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3-legend/2.24.0/d3-legend.js"></script>
<script>
// The svg
var svg = d3.select("svg"),
    width = +svg.attr("width"),
    height = +svg.attr("height");

// Map and projection
var path = d3.geoPath();
var projection = d3.geoMercator()
    .scale(width / 2 / Math.PI)
    .translate([width / 2, height / 2])
var path = d3.geoPath()
    .projection(projection);

// Data and color scale
var data = d3.map();
var colorScheme = d3.schemeReds[6];
colorScheme.unshift("#eee")
var colorScale = d3.scaleThreshold()
    .domain([1, 3, 5, 10, 20, 100])
    .range(colorScheme);

// Legend
var g = svg.append("g")

    .attr("class", "legendThreshold")
    .attr("transform", "translate(190,300)");

g.append("text")
    .attr("class", "caption")
    .attr("x", 0)
    .attr("y", -6)
    .style("font-size","12px")

    .text("Subscribers");
var labels = ['0', '1-3', '3-5', '5-10', '10-20', '20-100', '> 100'];
var legend = d3.legendColor()
    .labels(function (d) { return labels[d.i]; })
    .shapePadding(0)
    .scale(colorScale);
svg.select(".legendThreshold")
    .call(legend);

// Load external data and boot
d3.queue()
    .defer(d3.json, "http://enjalot.github.io/wwsd/data/world/world-110m.geojson")
    .defer(d3.csv, "https://gist.githubusercontent.com/palewire/d2906de347a160f38bc0b7ca57721328/raw/3429696a8d51ae43867633ffe438128f8c396998/mooc-countries.csv", function(d) { data.set(d.code, +d.total); })
    .await(ready);

function ready(error, topo) {
    if (error) throw error;

    // Draw the map
    svg.append("g")
        .attr("class", "countries")
        .selectAll("path")
        .data(topo.features)
        .enter().append("path")
            .attr("fill", function (d){
                // Pull data for this country
                d.total = data.get(d.id) || 0;
                // Set the color
                return colorScale(d.total);
            })
            .attr("d", path);
}
</script>

A: The first 2 are trivial.
1 is just a matter of changing the translate position of the legend
and making it horizontal is just from looking at the d3-legend doc (https://d3-legend.susielu.com/#color-linear):
var g = svg.append("g")
    .attr("class", "legendThreshold")
    .attr("transform", "translate(440,440)");

...and jump ahead for next bit...

var legend = d3.legendColor()
    .labels(function (d) { return labels[d.i]; })
    .shapePadding(0)
    .orient('horizontal')
    .shapeWidth(40)
    .scale(colorScale);

2 you change the stroke colour to black (#000) for .countries in the css
  .countries {
    fill: none;
    stroke: #000;
    stroke-linejoin: round;
  }

3 is a bit more involved, but in the data (after a bit of console.logging the returned object) we know the key for Antarctica is "ATA", so we can filter that out of the returned topo.features data
function ready(error, topo) {
    if (error) throw error;

  topo.features = topo.features.filter (function(d) { return d.id !== "ATA"; });

See
https://jsfiddle.net/13zqyvrL/

redpajama_set_name: RedPajamaStackExchange


Ottlite 24w refresh floor lamp with flexible neck the, flexible goose neck floor lamp w metal base, lamp stand. Ol91203ch 02 bob chrome twin flexible neck floor lamp e14. Flexi floor lamp flex neck steve'sroofing.
Bobo flexible neck chrome floor lamp gunmetal (oriel, lloytron sentinel floor standing flexible reading lamp. Endon lighting floor lamp reading light touch dimmer. Flexible goose neck floor lamp w metal base, lamp stand.


text:
Q: Tikz: rotating point coordinates over a labelled coordinate From Tikz: drawing a straight line down in a rotated scope, Paul Gessler pointed out that rotating labelled coordinate (P) in the opposite direction of the initial rotation would counter act it.  However, if we do this to the point, it doesn't work.
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\begin{scope}[rotate = 45]
  \draw (-0.5cm, -1cm) rectangle (0.5cm, -2cm) coordinate (P);

  \draw[rotate = -45] (P) -- +(0, -1);

  \draw[rotate = -45] (0.5cm, -2cm) -- +(0, -1);
\end{scope}
\end{tikzpicture}
\end{document}

Considering (P) and (-0.5cm, -2cm) are the same location, why does using the coordinate point and not the name not work?

A: Nodes don't move except if you say it explicitely.

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\begin{scope}[rotate = 45]
  \draw (-0.5cm, -1cm) rectangle (0.5cm, -2cm) coordinate (P);

  \draw[rotate = -45,yellow] (P) -- ++(0, -1);
  \draw[rotate = -45,very thick,blue!50] (0.5cm, -2cm) -- ++(0, -1);
  \draw[rotate = -45,red] ([rotate = -45]P) -- ++(0, -1);

\end{scope}

  \draw[rotate = -45,yellow,dashed] (P) -- ++(0, -1);
  \draw[rotate = -45,very thick,blue!50,dashed] (0.5cm, -2cm) -- ++(0, -1);
  \draw[rotate = -45,red,dashed] ([rotate = -45]P) -- ++(0, -1);

\end{tikzpicture}
\end{document}


hat the patient needs is only one medicine at a time and not a mixture of medicines to suppress complaints.
Health is to be restored by giving proper medicines on correct indications and principles, in correct potency, and repetition, by properly assessing the sequence of dissappearance of symptoms.
Strictly avoid use of mixtures of homeopathic medicines and so-called specifics.
Don't get yourself treated from quacks; consult a registered homeopath and not a retired person who practices homeopathy as a hobby.
Avoid self-medication and use of different marketed products. These are shortcuts to ill health.
Homeopathy does not have any side effects - Yes.
But it has direct effects, good or bad!


text:
Home / Jobs / Jobs in Zhejiang / Deputy Head of Primary
Huili School Hangzhou
Deputy Head of Primary
British college founded in China in a partnership with Xiaoshan Science and Technology Polis Learn more about this school
Huili School Hangzhou is seeking an experienced Deputy Head of Primary to provide guidance and support to all primary school Chinese staff. The Deputy Head of Primary must provide professional and energetic leadership of learning and teaching and secure the highest quality of pastoral care, together with the Head of Primary and in association with the middle leaders.
1. Liaise with administrative departments to ensure efficient administrative management of the school
2. To be a figurehead in the promotion of Wellington College Bilingual Hangzhou its aims, standards and ideals and to model these both in the school and in the wider community
3. Report to the Head of Primary on all issues relating to the efficient management and organisation of the Primary School together with the Head of Primary
4. Under the direction of the Head of Primary, to be responsible for the recruitment and employment of all primary school local academic and administrative support staff
Bachelor's degree or above
English native speaker
A minimum of 10 years working experience in education required 3 years of working in an international school desirable but not essential
A minimum of 2 years' management experience
Monthly Salary:Negotiable
Accommodation allowance:Negotiable
Annual flight
Deputy Head of DUCKS
Dulwich College, Suzhou
Head of CCA & Sports
Wuxi Dipont School of Arts and Science
Deputy Head of School
Hangzhou Dipont School of Arts and Science
Hangzhou Shi, Zhejiang Sheng
Deputy Head of Senior School(Pastoral)
Head of Senior School


Hands down the best place to rent mainstream and hard to find DVDs, blu-rays, and video games. It's one of the last in the Whyte ave area that rents movies and games (they're also independent!). While the shelves are close together and really packed... they really do have a bit of everything. Like every other rental store, it's layout has the newer releases on the outer wall (separated by genre), the older movies in the center, with their anime vault on the back east wall. They have sections for kids, foreign movies (separated by country), comedy, horror,science fiction, drama, thrillers, documentaries, alternative (I think that's what they call it)... but my favourite section would have to be the TV series. It was the first (and only) place I was able to find Farscape! While the blu-ray, Xbox 360, and PS3 sections are relatively small, they do have enough of a selection to keep the hi-def crowd happy. The selection keeps growing and growing.


Many of the incredible natural wonders of Turkey are accessible by vehicle and foot but the most beautiful are most easily approached by boat. Lucky for tourists in Turkey, affordable cruises run throughout the summer, often stopping at the top 5 beaches mentioned below.
Famous for the 2,000 meter high cliffs surrounding this sandy beach, Butterfly Valley is the perfect combination of colors so often pleasing to the human eye. A bleached shoreline and aquamarine waters meet at the shore. The cliffs above are dotted with greenery and are home to over 100 different butterfly species. Inland from the sandy shore, a small amount of land is free from hotels, restaurants, or shops and instead is sprinkled with the colorful nylon tents of brave hikers who successfully descended the steep and extremely dangerous foot path that connects high above to the 500km long Lycian Way. If attempting the steep descent is not your preference, Blue Voyage Turkey can ease you into the bay, gliding over clear waters as you approach this relaxing destination. Butterfly Valley is the perfect spot to anchor and allow the soft waves to rock you to sleep, eventually giving way to the soft colors of an early morning Mediterranean sunrise.
Kabak bay is a secluded beach sandwiched between steep forest and turquoise sea. Accessible by minibus, car, foot, or boat, Kabak is a steep drop from the main road and arriving on foot (and also by vehicle) is recommended only for the most adventurous. However, given its limited accessibility, it makes for a quiet experience, far from the maddening crowd. Above the beach are a number of hideaways of all comfort levels to spend the night and enjoy delicious Turkish cuisine. Kabak is also located along the Lycian Way and avid hikers can enjoy stunning views of the valley from above, as the footpath winds around the mountain ridges and provides a number of opportunities for photos of the shimmering bay far below.
Olympos beach is a popular summer destination for Turks and foreigners alike. A single road lined with bungalows, markets, and shaded cafes leads directly to the beach, passing ancient city ruins spread out along the shore and nearby cliffs. The shoreline is stunning, with Mount Olympos in clear view towards the east. Far removed from the seclusion of Kabak and Butterfly Valley, Olympos beach is bustling with food and drink sellers and tourists from all over the world lounging on thick towels spread across the pebbled shore. A large jagged rock juts out from the sea and those with motivation can be seen climbing the rock face and jumping off from the top. Affordable kayak rentals are also popular in Olympos, giving tourists the opportunity to intimately explore the caves and ruins that sprinkle the shoreline. Olympos is also the starting point for the Fethiye Blue Cruise, the perfect way to continue exploring the natural wonders of Turkey's Turquoise Coast. The blue cruise heads east and passes both Kabak and Butterfly Valleys en route to Fethiye.
Patara Beach is a magical destination, unspoiled by the eyesores of popular tourism. At 11 miles, it is Turkey's longest beach and a protected area where sea turtles can lay their eggs. Because of the turtles, development is off limits and tourists can enjoy the sandy stretch during the daytime. From May to October, the beach is off limits at night to allow space for the turtles to breed. Patara is one of the most beautiful beaches in Turkey and its sandy shores are ideal for swimming (in comparison to many of the rocky beaches that are commonly found in Turkey). Even in the height of summer, Patara is never crowded and is perfect for exercising your legs after too many lazy days of sunbathing.
If you blink you might miss it. Kaputas Beach is located directly below the Antalya to Fethiye coastal road. Only 12 miles from the pleasant coastal town of Kas, Kaputas is located at the bottom of another extremely low valley and can be spotted by the congregation of cars parked along the main road. If you are able to find a parking spot, the beach is reachable by close to 200 stairs that make it impossible for the construction of facilities or businesses. The untouched natural beauty makes it yet another popular destination for gulets cruising the coastline.


Mistral Ltd is a company born in the Greek yachting field at the year 2008 after the fusion of Italian and Greek experience owners.
Mistral is mainly involved in new building and re-construction projects and can cover a complete range of interior and exterior wood works as exterior ceiling, cap-rails, teak decks, complete bespoke interior outfitting, custom orders and also can offer the service of the internal varnishing, restoration, touch up works and special decorative effects.
Respecting always the yacht quality standards as well as the timeframe of each project, Mistral has succeed to deliver a lot works to some of the most well known yacht of the Greek and European area.


Today the year 5 scientists created an experiment based on their thinking about reversible and irreversible changes. Although they have just begun this subject, year 5 already had some good ideas about the changes that might occur. They had 4 substances including oil, water, vinegar and bicarbonate of soda and had to devise an experiment to create a reversible or irreversible change. They could choose 2 substances and predict what might happen when they were combined. The pupils then tested out their theory and spoke about the results. Today was about investigating and learning. We will continue to learn from this experiment and do more research and testing to cement our understanding about the changes and explain them.
One group demonstrated their learning to the whole class and as predicted, an exciting irreversible change occurred.
St Rule Street flower bed design.


I've always had itchy feet, can't do a thing about it. Always want to keep moving, its either been my own willing or I've been a part of the family migration. A recent trip to India and I've uncovered more secrets on this undying thirst to travel.
To be honest, I've hated to travel when I was a kid. During my childhood vacations in India, the whole family would pile up into an ambassador and travel through the pothole infested roads. My uncle would ocassionally swing to the back and chatter about how the govt was busy fixing the roads…. sadly that never happened or I stopped traveling to India.
My mom would have this book about the half-destroyed temples in some nook of a forgotten hamlet and we would spend the hot dusty afternoons through half eaten ceramic and forest regained structures.
Anyway back to my story, I've recently discovered that my Granddad was a citizen of the Malaya Federation, to be more precise, he used to live in present day Singapore…. How cool is it when you stumble unto an old passport. So the story goes that I've got Singaporean blood in me and his travels led him to India. My dad picked it from there and traveled to Oman and me being the Wanderlust fellow continue my Granddad's adventures. Golly, he must be proud of me.
So my main story, I've always dreamt of the beautiful island of New Zealand and I've done it ….. after a year of rigorous surfing through jobs in Australia and New Zealand. I've finally managed to land on the Greener Side of the Ditch.
I get to work as a fire engineer in Christchurch (or) Chch as its fondly called. This city has survived a massive earthquake and has borne its scars quite spectacularly. Till date, I've haven't met a Canterburian, who talks about leaving the city or bemoans about the earthquake. I hear lively tales on experiencing Nature's fury and a promise for a safer future. Afterall there is only so much that man can do.
As a part of the company process, I got a 2 week accommodation at a hostel close to the Canterbury Botanical Garden. Oh did I tell you guys, that this city used to be called as the Garden City. It was a sprawling town by NZ standards before the 2011 earthquakes. Must have been awesomely beautiful.
Having studied fire and explosion engineering, I got to see my first ever building demolition, they were blowing up the old Police Building that had sustained heavy damage from the earthquakes, pretty cool actually.
The following weekend in Chch, was sunny and clear. Beautiful weather when its clear and sunny. The Ozone layer being thin in this region of the world allows it to warm up quite quickly, which means that even in winters when its a clear day, you could expect a temperature in the low 20s (deg C), perfect. A trip to the Gondola with its awesome views of the city and a history of the recent devastation is an afternoon well spent.


The directors are responsible for preparing the Director's Report and the financial statements in accordance with applicable law and regulations. Company law requires the Directors to prepare financial statements for each financial year.
The financial reporting framework that has been elected to prepare the financial statements is the applicable law and International Financial Reporting Standards ("IFRSs").
The group and parent company financial statements are required by law to give a true and fair view of the state of affairs of the group and the parent company and of the profit or loss for that period.
In preparing these financial statements, the directors are required to: select suitable accounting policies and then apply them consistently; make judgements and estimates that are reasonable and prudent; state whether applicable accounting standards have been followed, subject to any material departures disclosed and explained in the financial statements; and prepare the financial statements on the going concern basis unless it is inappropriate to presume that the group and parent company will continue in business.
The directors are responsible for keeping proper accounting records that disclose with reasonable accuracy, at any time, the financial position of the parent company and enable them to ensure that the financial statements comply with the Companies Act 1985. They have a general responsibility for taking such steps as are reasonably open to them to safeguard the assets of the group and to prevent and detect fraud and other irregularities.
The role of the Audit Committee is to oversee the nature and scope of the annual audit, management's reporting on internal accounting standards and practices, financial information and accounting systems and procedures and the Company's financial reporting statements. The Audit Committee's primary objectives include assisting the Directors in meeting their responsibilities in respect of the Company's financial continuous disclosure obligations and overseeing the work of the Company's external auditors. The Audit Committee comprises Paul Turner (committee chairman) and Dipak Pandya.
The Nomination Committee is responsible for identifying candidates to fill vacancies on the Board, as and when they arise, and nominate them for approval by the Board. The Nomination Committee comprises Paul Turner (committee chairman), Samir Shasha and Dipak Pandya.
The Remuneration Committee makes recommendations to the Board on the remuneration policy that applies to Executive Directors and senior employees. The Remuneration Committee comprises Dipak Pandya (committee chairman) and Paul Turner.
The purpose of the Corporate Governance Committee is to assist the Board of Directors in developing and implementing the Company's corporate governance guidelines and with applicable legal, regulatory and listing requirements in respect of corporate governance. The committee also assists the nomination committee with determining the composition of the Board of Directors and its Committees. Lastly, it is tasked with developing and overseeing a process to assess the Board Chair, the Board, Board Committees, Chairs of Committees, and individual Directors; and overseeing the Company's policies concerning business conduct, ethics, public disclosure of material information and other matters.


text:
Mesomyzostoma är ett släkte av ringmaskar. Mesomyzostoma ingår i ordningen Myzostomida, klassen havsborstmaskar, fylumet ringmaskar och riket djur.

Kladogram enligt Catalogue of Life:

Källor

Externa länkar

Havsborstmaskar
Mesomyzostoma

redpajama_set_name: RedPajamaWikipedia


text:
Sexual assault charges dropped against Kevin Spacey 3 MIN <% if ( weatherAlerts > 0 ) { %> Severe Weather: <% var weatherAlertsMessage = "There " + ( weatherAlerts > 1 ? "are" : "is" ) + " currently " + weatherAlerts + " active weather " + ( weatherAlerts > 1 ? "alerts" : "alert" ); %> <% if ( weatherAlerts > 1 ) { %>
Senate passes marijuana bill calling for revisions to law
Updated: 10:13 PM EDT Jun 22, 2017
WCVB SOURCE: WCVB
The Massachusetts Senate passed a bill Thursday calling for revisions to the state voter-approved recreational marijuana law, setting the stage for negotiations with the House, which just a day earlier backed a more far-reaching overhaul.The debate in the Senate over the reshaping of the law which allows adults to possess up to 1 ounce of marijuana and grow up to 12 pot plants per household focused mostly on regulatory matters. It unfolded after the House angered many supporters of legalized marijuana by voting to repeal the existing law and replace it with a measure that would, among other things, raise the tax rate on marijuana from 12 percent to 28 percent. The Senate bill, approved on a 30-5 vote, would keep the current measure in place but with proposed changes in the way both recreational and medical marijuana would be overseen by the state. "We should not repeal and replace ... we should amend and improve," said Sen. Patricia Jehlen, co-chair of the Legislature's Marijuana Policy Committee, at the outset of debate. "That is what this bill will do." "We need to try to restore some trust in government by not overriding the will of the people," added the Somerville Democrat, a veiled reference to criticism leveled at the House bill by pro-marijuana activists. The next step will be naming a conference committee made up of three senators and three representatives that will attempt to reach a compromise. Legislative leaders self-imposed a July 1 deadline to deliver a bill to Republican Gov. Charlie Baker's desk, acknowledging that further delays would jeopardize the planned July 1, 2018 start of retail marijuana sales. The Senate bill holds the tax rate at a maximum of 12 percent, as approved by voters. Keeping taxes relatively low, Jehlen said, would entice consumers to buy pot from legal suppliers, while a higher tax might persuade them to continue purchasing from an illegal dealer or perhaps even drive to Maine, where recreational marijuana will be taxed at 10 percent. The House and Senate bills both change the structure of the Cannabis Control Commission, the state agency that will regulate marijuana. The ballot question called for a three-member panel appointed by the state treasurer, while lawmakers want a five-person board consisting of members named by the treasurer, attorney general and governor. A key difference, however, is while the House envisions all five commissioners working full-time at their jobs, under the Senate bill only the chairman of the panel would be full-time and the others unpaid volunteers. Sen. Jason Lewis, a Winchester Democrat who opposed marijuana legalization, promised to support the Senate bill but sought assurances that the cannabis industry would not become dominated by large national companies. "We don't want to see big marijuana like we have big tobacco or big alcohol," said Lewis, who joined other lawmakers in calling for programs that encouraged women, minorities, veterans and small farmers to own or find employment in legal marijuana businesses.
BOSTON —
The Massachusetts Senate passed a bill Thursday calling for revisions to the state voter-approved recreational marijuana law, setting the stage for negotiations with the House, which just a day earlier backed a more far-reaching overhaul.
The debate in the Senate over the reshaping of the law which allows adults to possess up to 1 ounce of marijuana and grow up to 12 pot plants per household focused mostly on regulatory matters. It unfolded after the House angered many supporters of legalized marijuana by voting to repeal the existing law and replace it with a measure that would, among other things, raise the tax rate on marijuana from 12 percent to 28 percent.
The Senate bill, approved on a 30-5 vote, would keep the current measure in place but with proposed changes in the way both recreational and medical marijuana would be overseen by the state.
"We should not repeal and replace ... we should amend and improve," said Sen. Patricia Jehlen, co-chair of the Legislature's Marijuana Policy Committee, at the outset of debate. "That is what this bill will do."
"We need to try to restore some trust in government by not overriding the will of the people," added the Somerville Democrat, a veiled reference to criticism leveled at the House bill by pro-marijuana activists.
The next step will be naming a conference committee made up of three senators and three representatives that will attempt to reach a compromise. Legislative leaders self-imposed a July 1 deadline to deliver a bill to Republican Gov. Charlie Baker's desk, acknowledging that further delays would jeopardize the planned July 1, 2018 start of retail marijuana sales.
The Senate bill holds the tax rate at a maximum of 12 percent, as approved by voters. Keeping taxes relatively low, Jehlen said, would entice consumers to buy pot from legal suppliers, while a higher tax might persuade them to continue purchasing from an illegal dealer or perhaps even drive to Maine, where recreational marijuana will be taxed at 10 percent.
The House and Senate bills both change the structure of the Cannabis Control Commission, the state agency that will regulate marijuana. The ballot question called for a three-member panel appointed by the state treasurer, while lawmakers want a five-person board consisting of members named by the treasurer, attorney general and governor.
A key difference, however, is while the House envisions all five commissioners working full-time at their jobs, under the Senate bill only the chairman of the panel would be full-time and the others unpaid volunteers.
Sen. Jason Lewis, a Winchester Democrat who opposed marijuana legalization, promised to support the Senate bill but sought assurances that the cannabis industry would not become dominated by large national companies.
"We don't want to see big marijuana like we have big tobacco or big alcohol," said Lewis, who joined other lawmakers in calling for programs that encouraged women, minorities, veterans and small farmers to own or find employment in legal marijuana businesses.
Lawmakers meet privately to draft compromise marijuana bill


Happy Thanksgiving! Enjoying good food with loved ones is in my DNA so this is my favorite holiday. This year we are excited to be hosting Thanksgiving at our new home in Lexington, MA.
So, what's new? Let's start with the new special Olio Taibi organic extra virgin olive oil holiday promotion on Amazon that will run through December 31. Several customers have recently told me that a bottle of Biancolilla or Nocellara EVOO makes a great gift. It's perfect for any food lover and can be enjoyed for much longer than a bottle of wine. Now you can buy any three bottles and get one free Biancolilla. Type the code OTBUYTHR at checkout and share a bottle or two of your favorite organic extra virgin olive oil with your favorite foodie (or treat yourself!). Gift wrapping is available and you will be eligible for FREE SHIPPING. Here's what the gift wrap looks like.
What else? It's been a busy few months. We've been settling into our new home in Lexington, Massachusetts and have enjoyed getting to know this fantastic community. Some of you may have seen my blog post about the Lexington Farmer's Market or the piece in Lexington's Colonial Times Magazine about Olio Taibi's participation in the First Annual Taste of Lexington. It's been a wonderful welcome and we thank everyone for making us feel so at home.
We haven't forgotten about our Cambridge/Somerville friends, though. Last month, I did an Olio Taibi tasting at Dave's Fresh Pasta. And, I'm excited to share that Olio Taibi is featured at the newly opened Central Bottle, the wine and provisions shop in Central Square, started by our friends and foodies extraordinaire Maureen, Dave, Liz and Nick. This is a great addition to the Central Square Cambridge food scene! The opening was picked up by the popular DailyCandy newsletter and I am proud to report that I were mentioned in it, too. Thanks, Nick for talking us up! Plans are in the making for an Olio Taibi tasting at Central Bottle in the next month or two. I'll keep you posted.
I'm still blogging at The Olive Oil Blog and welcome recipes and comments. For those of you on FoodBuzz, please buzz me. I am also on Twitter@theoliveoiblog. Soon, I'll also be on Facebook. Stay tuned!


So you want to lose weight or give your life a health kick. But how are you going to do it? With so many diets available to try, it can be difficult to know which one is the right one for you. The DASH diet, which stands for Dietary Approaches to Stop Hypertension, has been ranked the best diet for the 8th year in a row by the News & World Report. Could this be the healthy diet that you've been looking for?
The diet, which is promoted by the US National Heart, sLung and Blood Institute (NHLBI), was originally developed to lower blood pressure, but the healthy eating plan also helps lower cholesterol and even promotes weight loss.
What exactly does the DASH diet involve?
Rather than calorie counting, it's an eating pattern based on a recommended number of daily servings of fruit, vegetables, whole grains, low-fat dairy, fish, poultry, beans, lentils, nuts, seeds and non-tropical (not coconut/palm) vegetable oils.
According to Sian Porter, consultant dietician and spokesperson for the British Dietetic Association, the diet works because it's low in sodium, sugar and saturated fat, and moderate in protein, high in fibre and other nutrients, including potassium, magnesium and calcium.'The combined changes in your diet, eating the appropriate number of calories and other lifestyle choices, such as exercise, all work together to help lower blood pressure,' says Sian.
'Weight loss is often a natural part of the DASH diet and is devised around two phases,' adds Nicola Shubrook, a nutritional therapist from Urban Wellness.
Phase one is a kickstarter, and the first two weeks aim to curb craving and balance blood sugars. It focuses on a low-carb diet, including no wholegrains, fruits or starchy vegetables, such as potatoes.
After 14 days, in phase two, you will continue to eat foods from phase one, but introduce more wholegrains, fruits and non-starchy vegetables to help you lose weight at a steady rate and improve your body's response to hypertension.
Fast becoming our favourite supermarket of all time, Lidl has released its largest home-gym range ever, and it starts at just £3.99.
Saving us from the actual gym and hefty membership fees, the collection includes full-on equipment such as the Crivit Exercise Bike (£199), Rowing Machine (£199), Workout Bench (£29.99) and Vibration Plate (£79).
The 21-strong collection also includes kettlebells, resistance bands, suspension trainers, fitness trackers and protein powder, with most costing under £20. If a bargain won't motivate us, we don't know what will!
What does a typical meal look like?
Based on how many calories you need, a typical meal plan is designed around servings within each food category. 'For example, on a 2,000-calorie diet you would have 7-8 whole grain servings a day, with one serving being the equivalent of a slice of bread or half a cup of cooked rice,' says Nicola.
Breakfast: Eggs on wholegrain toast with mushrooms and tomatoes cooked in a little olive oil.
Lunch: Bean and avocado brown rice salad with peppers, a small amount of light dressing using unsaturated oil and a portion of fruit.
Dinner: Turkey and vegetable stir-fry, Soba (buckwheat) or other wholegrain noodles, a portion fruit.
Snacks: Fruit, vegetables, seeds and nuts, low-fat (2% or less) unsweetened yogurt, a small piece of low-fat cheese, a wholegrain cracker with peanut butter, unsalted/unsweetened popcorn.
What foods are banned on the DASH plan? Is alcohol allowed?
Foods high in saturated fat (fatty meats, full-fat dairy, coconut and palm oil), sugary drinks and sweets should all be limited, according to Sian. It's also important to completely avoid all trans-fats, such as fried foods, pastries and cakes, along with refined sugar, processed foods and, of course, sodium.
Alcohol can be reintroduced in phase 2, says Nicola, in the form of wine. 'As long as it's a small glass, and occasionally,' she says.
What are the advantages of the DASH diet?
The DASH diet was initially designed to help lower blood pressure, but it has also proven highly effective in lowering cholesterol, as well weight loss.
A study, looking at 459 people with slightly high blood pressure, randomly assigned different diets, including DASH. Researchers found that the DASH plan lowered participants' blood pressure and cholesterol – as well as their risk of developing heart disease in the next 10 years compared to the other diets.
According to Sian, other health benefits include a reduced risk of diabetes, stroke, colorectal cancer and kidney disease.
As with any diet, it depends on how much time you're willing to commit to it. 'It needs planning and portion size control – but there is plenty of practical advice and tips available. It may also be more expensive, depending on what food you previously bought,' says Sian.
Nicola agrees that it may be initially quite hard to get used to the dietary changes, especially in the first 14-day phase, but, after some preparation, it can quickly become an easy way to eat. 'Cutting out sugars may also be a challenge. But taste buds do adapt, and those who follow DASH will notice their need for sweet food reduces,' she says.