text:
<?php

namespace Drupal\entity_browser\Plugin\Field\FieldWidget;

use Drupal\Core\Entity\EntityInterface;
use Drupal\entity_browser\Element\EntityBrowserElement;
use Symfony\Component\Validator\ConstraintViolationInterface;
use Drupal\Component\Utility\Html;
use Drupal\Component\Utility\NestedArray;
use Drupal\Core\Entity\ContentEntityInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Field\FieldDefinitionInterface;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Field\WidgetBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\Core\Url;
use Drupal\Core\Validation\Plugin\Validation\Constraint\NotNullConstraint;
use Drupal\entity_browser\FieldWidgetDisplayManager;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\Validator\ConstraintViolation;
use Symfony\Component\Validator\ConstraintViolationListInterface;
use Drupal\Core\Extension\ModuleHandlerInterface;

/**
 * Plugin implementation of the 'entity_reference' widget for entity browser.
 *
 * @FieldWidget(
 *   id = "entity_browser_entity_reference",
 *   label = @Translation("Entity browser"),
 *   description = @Translation("Uses entity browser to select entities."),
 *   multiple_values = TRUE,
 *   field_types = {
 *     "entity_reference"
 *   }
 * )
 */
class EntityReferenceBrowserWidget extends WidgetBase implements ContainerFactoryPluginInterface {

  /**
   * Entity type manager service.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected $entityTypeManager;

  /**
   * Field widget display plugin manager.
   *
   * @var \Drupal\entity_browser\FieldWidgetDisplayManager
   */
  protected $fieldDisplayManager;

  /**
   * The depth of the delete button.
   *
   * This property exists so it can be changed if subclasses.
   *
   * @var int
   */
  protected static $deleteDepth = 4;

  /**
   * The module handler interface.
   *
   * @var \Drupal\Core\Extension\ModuleHandlerInterface
   */
  protected $moduleHandler;

  /**
   * Constructs widget plugin.
   *
   * @param string $plugin_id
   *   The plugin_id for the plugin instance.
   * @param mixed $plugin_definition
   *   The plugin implementation definition.
   * @param \Drupal\Core\Field\FieldDefinitionInterface $field_definition
   *   The definition of the field to which the widget is associated.
   * @param array $settings
   *   The widget settings.
   * @param array $third_party_settings
   *   Any third party settings.
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   Entity type manager service.
   * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher
   *   Event dispatcher.
   * @param \Drupal\entity_browser\FieldWidgetDisplayManager $field_display_manager
   *   Field widget display plugin manager.
   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
   *   The module handler service.
   */
  public function __construct($plugin_id, $plugin_definition, FieldDefinitionInterface $field_definition, array $settings, array $third_party_settings, EntityTypeManagerInterface $entity_type_manager, EventDispatcherInterface $event_dispatcher, FieldWidgetDisplayManager $field_display_manager, ModuleHandlerInterface $module_handler) {
    parent::__construct($plugin_id, $plugin_definition, $field_definition, $settings, $third_party_settings);
    $this->entityTypeManager = $entity_type_manager;
    $this->fieldDisplayManager = $field_display_manager;
    $this->moduleHandler = $module_handler;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
    return new static(
      $plugin_id,
      $plugin_definition,
      $configuration['field_definition'],
      $configuration['settings'],
      $configuration['third_party_settings'],
      $container->get('entity_type.manager'),
      $container->get('event_dispatcher'),
      $container->get('plugin.manager.entity_browser.field_widget_display'),
      $container->get('module_handler')
    );
  }

  /**
   * {@inheritdoc}
   */
  public static function defaultSettings() {
    return array(
      'entity_browser' => NULL,
      'open' => FALSE,
      'field_widget_display' => 'label',
      'field_widget_edit' => TRUE,
      'field_widget_remove' => TRUE,
      'field_widget_display_settings' => [],
      'selection_mode' => EntityBrowserElement::SELECTION_MODE_APPEND,
    ) + parent::defaultSettings();
  }

  /**
   * {@inheritdoc}
   */
  public function settingsForm(array $form, FormStateInterface $form_state) {
    $element = parent::settingsForm($form, $form_state);

    $browsers = [];
    /** @var \Drupal\entity_browser\EntityBrowserInterface $browser */
    foreach ($this->entityTypeManager->getStorage('entity_browser')->loadMultiple() as $browser) {
      $browsers[$browser->id()] = $browser->label();
    }

    $element['entity_browser'] = [
      '#title' => $this->t('Entity browser'),
      '#type' => 'select',
      '#default_value' => $this->getSetting('entity_browser'),
      '#options' => $browsers,
    ];

    $target_type = $this->fieldDefinition->getFieldStorageDefinition()->getSetting('target_type');
    $entity_type = $this->entityTypeManager->getStorage($target_type)->getEntityType();

    $displays = [];
    foreach ($this->fieldDisplayManager->getDefinitions() as $id => $definition) {
      if ($this->fieldDisplayManager->createInstance($id)->isApplicable($entity_type)) {
        $displays[$id] = $definition['label'];
      }
    }

    $id = Html::getUniqueId('field-' . $this->fieldDefinition->getName() . '-display-settings-wrapper');
    $element['field_widget_display'] = [
      '#title' => $this->t('Entity display plugin'),
      '#type' => 'select',
      '#default_value' => $this->getSetting('field_widget_display'),
      '#options' => $displays,
      '#ajax' => [
        'callback' => array($this, 'updateSettingsAjax'),
        'wrapper' => $id,
      ],
    ];

    $edit_button_access = TRUE;
    if ($entity_type->id() == 'file') {
      // For entities of type "file", it only makes sense to have the edit
      // button if the module "file_entity" is present.
      $edit_button_access = $this->moduleHandler->moduleExists('file_entity');
    }
    $element['field_widget_edit'] = [
      '#title' => $this->t('Display Edit button'),
      '#type' => 'checkbox',
      '#default_value' => $this->getSetting('field_widget_edit'),
      '#access' => $edit_button_access,
    ];

    $element['field_widget_remove'] = [
      '#title' => $this->t('Display Remove button'),
      '#type' => 'checkbox',
      '#default_value' => $this->getSetting('field_widget_remove'),
    ];

    $element['open'] = [
      '#title' => $this->t('Show widget details as open by default'),
      '#description' => $this->t('If marked, the fieldset container that wraps the browser on the entity form will be loaded initially expanded.'),
      '#type' => 'checkbox',
      '#default_value' => $this->getSetting('open'),
    ];

    $element['selection_mode'] = [
      '#title' => $this->t('Selection mode'),
      '#description' => $this->t('Determines how selection in entity browser will be handled. Will selection be appended/prepended or it will be replaced in case of editing.'),
      '#type' => 'select',
      '#options' => EntityBrowserElement::getSelectionModeOptions(),
      '#default_value' => $this->getSetting('selection_mode'),
    ];

    $element['field_widget_display_settings'] = [
      '#type' => 'fieldset',
      '#title' => $this->t('Entity display plugin configuration'),
      '#tree' => TRUE,
      '#prefix' => '
',
      '#suffix' => '
',
    ];

    if ($this->getSetting('field_widget_display')) {
      $element['field_widget_display_settings'] += $this->fieldDisplayManager
        ->createInstance(
          $form_state->getValue(
            ['fields', $this->fieldDefinition->getName(), 'settings_edit_form', 'settings', 'field_widget_display'],
            $this->getSetting('field_widget_display')
          ),
          $form_state->getValue(
            ['fields', $this->fieldDefinition->getName(), 'settings_edit_form', 'settings', 'field_widget_display_settings'],
            $this->getSetting('field_widget_display_settings')
          ) + ['entity_type' => $this->fieldDefinition->getFieldStorageDefinition()->getSetting('target_type')]
        )
        ->settingsForm($form, $form_state);
    }

    return $element;
  }

  /**
   * Ajax callback that updates field widget display settings fieldset.
   */
  public function updateSettingsAjax(array $form, FormStateInterface $form_state) {
    return $form['fields'][$this->fieldDefinition->getName()]['plugin']['settings_edit_form']['settings']['field_widget_display_settings'];
  }

  /**
   * {@inheritdoc}
   */
  public function settingsSummary() {
    $summary = $this->summaryBase();
    $field_widget_display = $this->getSetting('field_widget_display');

    if (!empty($field_widget_display)) {
      $plugin = $this->fieldDisplayManager->getDefinition($field_widget_display);
      $summary[] = $this->t('Entity display: @name', ['@name' => $plugin['label']]);
    }
    return $summary;
  }

  /**
   * {@inheritdoc}
   */
  public function flagErrors(FieldItemListInterface $items, ConstraintViolationListInterface $violations, array $form, FormStateInterface $form_state) {
    if ($violations->count() > 0) {
      /** @var \Symfony\Component\Validator\ConstraintViolation $violation */
      foreach ($violations as $offset => $violation) {
        // The value of the required field is checked through the "not null"
        // constraint, whose message is not very useful. We override it here for
        // better UX.
        if ($violation->getConstraint() instanceof NotNullConstraint) {
          $violations->set($offset, new ConstraintViolation(
            $this->t('@name field is required.', ['@name' => $items->getFieldDefinition()->getLabel()]),
            '',
            [],
            $violation->getRoot(),
            $violation->getPropertyPath(),
            $violation->getInvalidValue(),
            $violation->getPlural(),
            $violation->getCode(),
            $violation->getConstraint(),
            $violation->getCause()
          ));
        }
      }
    }

    parent::flagErrors($items, $violations, $form, $form_state);
  }

  /**
   * Returns a key used to store the previously loaded entity.
   *
   * @param \Drupal\Core\Field\FieldItemListInterface $items
   *   The field items.
   *
   * @return string
   *   A key for form state storage.
   */
  protected function getFormStateKey(FieldItemListInterface $items) {
    return $items->getEntity()->uuid() . ':' . $items->getFieldDefinition()->getName();
  }

  /**
   * {@inheritdoc}
   */
  public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
    $entity_type = $this->fieldDefinition->getFieldStorageDefinition()->getSetting('target_type');
    $entities = $this->formElementEntities($items, $element, $form_state);

    // Get correct ordered list of entity IDs.
    $ids = array_map(
      function (EntityInterface $entity) {
        return $entity->id();
      },
      $entities
    );

    // We store current entity IDs as we might need them in future requests. If
    // some other part of the form triggers an AJAX request with
    // #limit_validation_errors we won't have access to the value of the
    // target_id element and won't be able to build the form as a result of
    // that. This will cause missing submit (Remove, Edit, ...) elements, which
    // might result in unpredictable results.
    $form_state->set(['entity_browser_widget', $this->getFormStateKey($items)], $ids);

    $hidden_id = Html::getUniqueId('edit-' . $this->fieldDefinition->getName() . '-target-id');
    $details_id = Html::getUniqueId('edit-' . $this->fieldDefinition->getName());

    $element += [
      '#id' => $details_id,
      '#type' => 'details',
      '#open' => !empty($entities) || $this->getSetting('open'),
      '#required' => $this->fieldDefinition->isRequired(),
      // We are not using Entity browser's hidden element since we maintain
      // selected entities in it during entire process.
      'target_id' => [
        '#type' => 'hidden',
        '#id' => $hidden_id,
        // We need to repeat ID here as it is otherwise skipped when rendering.
        '#attributes' => ['id' => $hidden_id],
        '#default_value' => implode(' ', array_map(
            function (EntityInterface $item) {
              return $item->getEntityTypeId() . ':' . $item->id();
            },
            $entities
        )),
        // #ajax is officially not supported for hidden elements but if we
        // specify event manually it works.
        '#ajax' => [
          'callback' => [get_class($this), 'updateWidgetCallback'],
          'wrapper' => $details_id,
          'event' => 'entity_browser_value_updated',
        ],
      ],
    ];

    // Get configuration required to check entity browser availability.
    $cardinality = $this->fieldDefinition->getFieldStorageDefinition()->getCardinality();
    $selection_mode = $this->getSetting('selection_mode');

    // Enable entity browser if requirements for that are fulfilled.
    if (EntityBrowserElement::isEntityBrowserAvailable($selection_mode, $cardinality, count($ids))) {
      $persistentData = $this->getPersistentData();

      $element['entity_browser'] = [
        '#type' => 'entity_browser',
        '#entity_browser' => $this->getSetting('entity_browser'),
        '#cardinality' => $cardinality,
        '#selection_mode' => $selection_mode,
        '#default_value' => $entities,
        '#entity_browser_validators' => $persistentData['validators'],
        '#widget_context' => $persistentData['widget_context'],
        '#custom_hidden_id' => $hidden_id,
        '#process' => [
          ['\Drupal\entity_browser\Element\EntityBrowserElement', 'processEntityBrowser'],
          [get_called_class(), 'processEntityBrowser'],
        ],
      ];
    }

    $element['#attached']['library'][] = 'entity_browser/entity_reference';

    $field_parents = $element['#field_parents'];

    $element['current'] = $this->displayCurrentSelection($details_id, $field_parents, $entities);

    return $element;
  }

  /**
   * Render API callback: Processes the entity browser element.
   */
  public static function processEntityBrowser(&$element, FormStateInterface $form_state, &$complete_form) {
    $uuid = key($element['#attached']['drupalSettings']['entity_browser']);
    $element['#attached']['drupalSettings']['entity_browser'][$uuid]['selector'] = '#' . $element['#custom_hidden_id'];
    return $element;
  }

  /**
   * {@inheritdoc}
   */
  public function massageFormValues(array $values, array $form, FormStateInterface $form_state) {
    $entities = empty($values['target_id']) ? [] : explode(' ', trim($values['target_id']));
    $return = [];
    foreach ($entities as $entity) {
      $return[]['target_id'] = explode(':', $entity)[1];
    }

    return $return;
  }

  /**
   * AJAX form callback.
   */
  public static function updateWidgetCallback(array &$form, FormStateInterface $form_state) {
    $trigger = $form_state->getTriggeringElement();
    // AJAX requests can be triggered by hidden "target_id" element when
    // entities are added or by one of the "Remove" buttons. Depending on that
    // we need to figure out where root of the widget is in the form structure
    // and use this information to return correct part of the form.
    if (!empty($trigger['#ajax']['event']) && $trigger['#ajax']['event'] == 'entity_browser_value_updated') {
      $parents = array_slice($trigger['#array_parents'], 0, -1);
    }
    elseif ($trigger['#type'] == 'submit' && strpos($trigger['#name'], '_remove_')) {
      $parents = array_slice($trigger['#array_parents'], 0, -static::$deleteDepth);
    }

    return NestedArray::getValue($form, $parents);
  }

  /**
   * {@inheritdoc}
   */
  public function errorElement(array $element, ConstraintViolationInterface $violation, array $form, FormStateInterface $form_state) {
    if (($trigger = $form_state->getTriggeringElement())) {
      // Can be triggered by "Remove" button.
      if (end($trigger['#parents']) === 'remove_button') {
        return FALSE;
      }
    }
    return parent::errorElement($element, $violation, $form, $form_state);
  }

  /**
   * Submit callback for remove buttons.
   */
  public static function removeItemSubmit(&$form, FormStateInterface $form_state) {
    $triggering_element = $form_state->getTriggeringElement();
    if (!empty($triggering_element['#attributes']['data-entity-id']) && isset($triggering_element['#attributes']['data-row-id'])) {
      $id = $triggering_element['#attributes']['data-entity-id'];
      $row_id = $triggering_element['#attributes']['data-row-id'];
      $parents = array_slice($triggering_element['#parents'], 0, -static::$deleteDepth);
      $array_parents = array_slice($triggering_element['#array_parents'], 0, -static::$deleteDepth);

      // Find and remove correct entity.
      $values = explode(' ', $form_state->getValue(array_merge($parents, ['target_id'])));
      foreach ($values as $index => $item) {
        if ($item == $id && $index == $row_id) {
          array_splice($values, $index, 1);

          break;
        }
      }
      $target_id_value = implode(' ', $values);

      // Set new value for this widget.
      $target_id_element = &NestedArray::getValue($form, array_merge($array_parents, ['target_id']));
      $form_state->setValueForElement($target_id_element, $target_id_value);
      NestedArray::setValue($form_state->getUserInput(), $target_id_element['#parents'], $target_id_value);

      // Rebuild form.
      $form_state->setRebuild();
    }
  }

  /**
   * Builds the render array for displaying the current results.
   *
   * @param string $details_id
   *   The ID for the details element.
   * @param string[] $field_parents
   *   Field parents.
   * @param \Drupal\Core\Entity\ContentEntityInterface[] $entities
   *   Array of referenced entities.
   *
   * @return array
   *   The render array for the current selection.
   */
  protected function displayCurrentSelection($details_id, $field_parents, $entities) {

    $field_widget_display = $this->fieldDisplayManager->createInstance(
      $this->getSetting('field_widget_display'),
      $this->getSetting('field_widget_display_settings') + ['entity_type' => $this->fieldDefinition->getFieldStorageDefinition()->getSetting('target_type')]
    );

    return [
      '#theme_wrappers' => ['container'],
      '#attributes' => ['class' => ['entities-list']],
      'items' => array_map(
        function (ContentEntityInterface $entity, $row_id) use ($field_widget_display, $details_id, $field_parents) {
          $display = $field_widget_display->view($entity);
          $edit_button_access = $this->getSetting('field_widget_edit');
          if ($entity->getEntityTypeId() == 'file') {
            // On file entities, the "edit" button shouldn't be visible unless
            // the module "file_entity" is present, which will allow them to be
            // edited on their own form.
            $edit_button_access &= $this->moduleHandler->moduleExists('file_entity');
          }
          if (is_string($display)) {
            $display = ['#markup' => $display];
          }
          return [
            '#theme_wrappers' => ['container'],
            '#attributes' => [
              'class' => ['item-container', Html::getClass($field_widget_display->getPluginId())],
              'data-entity-id' => $entity->getEntityTypeId() . ':' . $entity->id(),
              'data-row-id' => $row_id,
            ],
            'display' => $display,
            'remove_button' => [
              '#type' => 'submit',
              '#value' => $this->t('Remove'),
              '#ajax' => [
                'callback' => [get_class($this), 'updateWidgetCallback'],
                'wrapper' => $details_id,
              ],
              '#submit' => [[get_class($this), 'removeItemSubmit']],
              '#name' => $this->fieldDefinition->getName() . '_remove_' . $entity->id() . '_' . $row_id . '_' . md5(json_encode($field_parents)),
              '#limit_validation_errors' => [array_merge($field_parents, [$this->fieldDefinition->getName()])],
              '#attributes' => [
                'data-entity-id' => $entity->getEntityTypeId() . ':' . $entity->id(),
                'data-row-id' => $row_id,
              ],
              '#access' => (bool) $this->getSetting('field_widget_remove'),
            ],
            'edit_button' => [
              '#type' => 'submit',
              '#value' => $this->t('Edit'),
              '#ajax' => [
                'url' => Url::fromRoute(
                  'entity_browser.edit_form', [
                    'entity_type' => $entity->getEntityTypeId(),
                    'entity' => $entity->id(),
                  ]
                ),
                'options' => [
                  'query' => [
                    'details_id' => $details_id,
                  ],
                ],
              ],
              '#access' => $edit_button_access,
            ],
          ];
        },
        $entities,
        empty($entities) ? [] : range(0, count($entities) - 1)
      ),
    ];
  }

  /**
   * Gets data that should persist across Entity Browser renders.
   *
   * @return array
   *   Data that should persist after the Entity Browser is rendered.
   */
  protected function getPersistentData() {
    return [
      'validators' => [
        'entity_type' => ['type' => $this->fieldDefinition->getFieldStorageDefinition()->getSetting('target_type')],
      ],
      'widget_context' => [],
    ];
  }

  /**
   * Gets options that define where newly added entities are inserted.
   *
   * @return array
   *   Mode labels indexed by key.
   */
  protected function selectionModeOptions() {
    return ['append' => $this->t('Append'), 'prepend' => $this->t('Prepend')];
  }

  /**
   * Provides base for settings summary shared by all EB widgets.
   *
   * @return array
   *   A short summary of the widget settings.
   */
  protected function summaryBase() {
    $summary = [];

    $entity_browser_id = $this->getSetting('entity_browser');
    if (empty($entity_browser_id)) {
      return [$this->t('No entity browser selected.')];
    }
    else {
      if ($browser = $this->entityTypeManager->getStorage('entity_browser')->load($entity_browser_id)) {
        $summary[] = $this->t('Entity browser: @browser', ['@browser' => $browser->label()]);
      }
      else {
        drupal_set_message($this->t('Missing entity browser!'), 'error');
        return [$this->t('Missing entity browser!')];
      }
    }

    $selection_mode = $this->getSetting('selection_mode');
    $selection_mode_options = EntityBrowserElement::getSelectionModeOptions();
    if (isset($selection_mode_options[$selection_mode])) {
      $summary[] = $this->t('Selection mode: @selection_mode', ['@selection_mode' => $selection_mode_options[$selection_mode]]);
    }
    else {
      $summary[] = $this->t('Undefined selection mode.');
    }

    return $summary;
  }

  /**
   * Determines the entities used for the form element.
   *
   * @param \Drupal\Core\Field\FieldItemListInterface $items
   *   The field item to extract the entities from.
   * @param array $element
   *   The form element.
   * @param \Drupal\Core\Form\FormStateInterface $form_state
   *   The form state.
   *
   * @return \Drupal\Core\Entity\EntityInterface[]
   *   The list of entities for the form element.
   */
  protected function formElementEntities(FieldItemListInterface $items, array $element, FormStateInterface $form_state) {
    $entities = [];
    $entity_type = $this->fieldDefinition->getFieldStorageDefinition()->getSetting('target_type');
    $entity_storage = $this->entityTypeManager->getStorage($entity_type);

    // Find IDs from target_id element (it stores selected entities in form).
    // This was added to help solve a really edge casey bug in IEF.
    if (($target_id_entities = $this->getEntitiesByTargetId($element, $form_state)) !== FALSE) {
      return $target_id_entities;
    }

    // Determine if we're submitting and if submit came from this widget.
    $is_relevant_submit = FALSE;
    if (($trigger = $form_state->getTriggeringElement())) {
      // Can be triggered by hidden target_id element or "Remove" button.
      if (end($trigger['#parents']) === 'target_id' || (end($trigger['#parents']) === 'remove_button')) {
        $is_relevant_submit = TRUE;

        // In case there are more instances of this widget on the same page we
        // need to check if submit came from this instance.
        $field_name_key = end($trigger['#parents']) === 'target_id' ? 2 : static::$deleteDepth + 1;
        $field_name_key = count($trigger['#parents']) - $field_name_key;
        $is_relevant_submit &= ($trigger['#parents'][$field_name_key] === $this->fieldDefinition->getName()) &&
          (array_slice($trigger['#parents'], 0, count($element['#field_parents'])) == $element['#field_parents']);
      }
    };

    if ($is_relevant_submit) {
      // Submit was triggered by hidden "target_id" element when entities were
      // added via entity browser.
      if (!empty($trigger['#ajax']['event']) && $trigger['#ajax']['event'] == 'entity_browser_value_updated') {
        $parents = $trigger['#parents'];
      }
      // Submit was triggered by one of the "Remove" buttons. We need to walk
      // few levels up to read value of "target_id" element.
      elseif ($trigger['#type'] == 'submit' && strpos($trigger['#name'], $this->fieldDefinition->getName() . '_remove_') === 0) {
        $parents = array_merge(array_slice($trigger['#parents'], 0, -static::$deleteDepth), ['target_id']);
      }

      if (isset($parents) && $value = $form_state->getValue($parents)) {
        $entities = EntityBrowserElement::processEntityIds($value);
        return $entities;
      }
      return $entities;
    }
    // IDs from a previous request might be saved in the form state.
    elseif ($form_state->has([
      'entity_browser_widget',
      $this->getFormStateKey($items),
    ])
    ) {
      $stored_ids = $form_state->get([
        'entity_browser_widget',
        $this->getFormStateKey($items),
      ]);
      $indexed_entities = $entity_storage->loadMultiple($stored_ids);

      // Selection can contain same entity multiple times. Since loadMultiple()
      // returns unique list of entities, it's necessary to recreate list of
      // entities in order to preserve selection of duplicated entities.
      foreach ($stored_ids as $entity_id) {
        if (isset($indexed_entities[$entity_id])) {
          $entities[] = $indexed_entities[$entity_id];
        }
      }
      return $entities;
    }
    // We are loading for for the first time so we need to load any existing
    // values that might already exist on the entity. Also, remove any leftover
    // data from removed entity references.
    else {
      foreach ($items as $item) {
        if (isset($item->target_id)) {
          $entity = $entity_storage->load($item->target_id);
          if (!empty($entity)) {
            $entities[] = $entity;
          }
        }
      }
      return $entities;
    }
  }

  /**
   * {@inheritdoc}
   */
  public function calculateDependencies() {
    $dependencies = parent::calculateDependencies();

    // If an entity browser is being used in this widget, add it as a config
    // dependency.
    if ($browser_name = $this->getSetting('entity_browser')) {
      $dependencies['config'][] = 'entity_browser.browser.' . $browser_name;
    }

    return $dependencies;
  }

  /**
   * Get selected elements from target_id element on form.
   *
   * @param array $element
   *   The form element.
   * @param \Drupal\Core\Form\FormStateInterface $form_state
   *   The form state.
   *
   * @return \Drupal\Core\Entity\EntityInterface[]|false
   *   Return list of entities if they are available or false.
   */
  protected function getEntitiesByTargetId(array $element, FormStateInterface $form_state) {
    $target_id_element_path = array_merge(
      $element['#field_parents'],
      [$this->fieldDefinition->getName(), 'target_id']
    );

    if (!NestedArray::keyExists($form_state->getUserInput(), $target_id_element_path)) {
      return FALSE;
    }

    // TODO Figure out how to avoid using raw user input.
    $current_user_input = NestedArray::getValue($form_state->getUserInput(), $target_id_element_path);
    if (!is_array($current_user_input)) {
      $entities = EntityBrowserElement::processEntityIds($current_user_input);
      return $entities;
    }

    return FALSE;
  }

}


text:
Sir Nicholas Pedley (17 September 1615 – 6 July 1685) was an English politician who sat in the House of Commons variously between 1656 and 1679.

Pedley was the son of the Reverend Nicholas Pedley of Huntingdonshire and his wife Susan Brathwayte. His grandfather had only a small estate, but his uncle James acquired considerable wealth, which Nicholas inherited. He made an advantageous marriage into the Bernard family, and became accepted as one of the landed gentry of Huntingtonshire. He matriculated from Queens' College, Cambridge at Easter 1633 and was awarded BA in 1637. He was admitted at Lincoln's Inn on 23 April 1638 and was called to the Bar  in 1646. He became Recorder of Huntingdon.

In 1656, Pedley was elected Member of Parliament for Huntingdonshire in the Second Protectorate Parliament and was re-elected MP for Huntingdonshire in 1659 for the Third Protectorate Parliament. He was regarded by his colleagues as a legal expert, and was active on those committees which dealt with legal and financial issues, although he rarely spoke in the House.

In 1660, Pedley was elected MP for Huntingdon in the Convention Parliament. He was awarded MA in 1671 and was knighted on 29 February 1672 at a dinner at Sir Francis Goodricke's at Lincoln's Inn. He was elected MP for Huntingdonshire in 1673 and sat until 1679. In 1675 he became Serjeant-at-law.

As a lawyer, he was noted for integrity and impartiality. Although he was no friend to Thomas Osborne, 1st Earl of Danby, Chief Minister from 1673 to 1679, during Danby's impeachment in 1678 he urged Parliament to act strictly according to the letter of the law. He expressed doubts as to whether any of the charges against Danby amounted to treason, and recommended moderation and clemency: "where it concerns a person's blood we ought to be tender".

Pedley lived at Abbotsley, Huntingdonshire. He died at the age of 69. He had married firstly Lucy Bernard, daughter of Sir Robert Bernard, 1st Baronet and his first wife Elizabeth Tallakerne, by whom he had eight children, and secondly Anne Dorrington, daughter of Richard Dorrington and widow of Lawrence Torkington, but had no issue by his second marriage.

References

1615 births
1685 deaths
Alumni of Queens' College, Cambridge
Members of Lincoln's Inn
Members of the Parliament of England (pre-1707) for constituencies in Huntingdonshire
Serjeants-at-law (England)
English MPs 1656–1658
English MPs 1659
English MPs 1660
English MPs 1661–1679
English MPs 1679

redpajama_set_name: RedPajamaWikipedia


text:
New Albums (list)
Listening Post
We cast out our net for all notable new album releases & check they're on Spotify, We use 20 Source Websites for reviews: The 405, All Music, AV Club, Clash Music, Consequence Of Sound, DIY, Exclaim, Guardian, Loud And Quiet, Music OMH, NME, No Ripcord, Paste, Pitchfork, Pop Matters, Slant, The Line Of Best Fit, The Skinny, Tiny Mix Tapes, Under The Radar. We use a Spotify API but we are not affiliated with Spotify.
New Music for Spotify
Celine Dion - Courage (Deluxe Edition)
Celine Dion - Courage (Deluxe Edition) (Columbia)
Spotify Genres
canadian pop
Céline Marie Claudette Dion, (born March 30, 1968 in Charlemagne, Quebec) is a Canadian singer, songwriter, and actress. Born to a large, impoverished family, Dion emerged as a teenage star in the French-speaking world after her manager and future husband René Angélil mortgaged his home to finance her first record. In 1990, she released the anglophone album Unison, establishing herself as a viable pop artist in North America and other English-speaking areas of the world. Read more on Last.fm
Our Online Sources Reviews 4/20
Average6
Music OMH4/5
Guardian3/5
The Line Of Best Fit5/10
Slant2.5/5
Click headphones to add to your listening post.
We use a Spotify API but we are not affiliated with Spotify.

redpajama_set_name: RedPajamaCommonCrawl


text:
HR & CAREERS
SUBMIT A TRAVEL BLOG
UPLOAD AN EVENT
FOR JOB SEEKER
Travel Daily - Informing, connecting and developing the world's travel industry professionals.
Free Online Training Courses
Airports & AviationTechnologyGlobal
Airports to move to "invisible" passenger screening
By Mark Elliott	 On Sep 2, 2015
The rise of automated technologies, biometric data collection and the pre-screening of passengers will lead to unobtrusive, "invisible" passenger screening at airports in the future, a new report has predicted.
According to the new 'Global Airport Passenger Screening Market' by Frost & Sullivan, new technologies and processes will "reduce the physical interaction with travellers" at airport security areas. These will include portal scanners, biometric collection devices, and pre-clearance based on background investigations, and will "transform the passenger screening process", according to the report.
A full-body scanner at Moscow Airport (photo by mariakraynova)
As a result, global spending on passenger screening technologies, which stood at US$1.42 billion in 2014, is expected to reach US$1.63 billion in 2020.
"To deal with the escalating passenger traffic, airports need to implement swifter and more efficient methods of passenger screening," said Frost & Sullivan's senior industry analyst for aerospace & defence, John Hernandez. "One solution could be to supply passengers with alternate venues and automated tools to pre-screen them before they arrive at the airport."
The report states that identifying high-risk passengers prior to their arrival at the airport is a key element in improving security. But for a more thorough system, airports are looking for innovative technologies capable of screening large numbers of passengers quickly and accurately.
Additionally, scanners than can detect non-metallic improvised explosive devices will be "imperative", the report states.
But Frost & Sullivan cautioned that passenger screening technology "is only as efficient as those operating it", and that accelerating the passenger screening process has been "met with resistance from officials".
"Airports already employ automated systems such as automated passport control kiosks and automated border control, eGates, for international travel," observed Hernandez. "The next step is to transition automated passenger screening to airport checkpoints. Equipment maintenance and recurring training will be critical selling points to agencies responsible for procurement."
BiometricsFrost & SullivanAirport security
Narita International installs 'state of the art people screening' after national…
World's first "self-cleaning" airport security bins rolled out in…
Brain Waves: the latest bright ideas from Hertz, Delta Air Lines and more
Travellers shrug off concerns to embrace biometrics
South Africa to offer e-visa facility for Indian tourists
Top 10 travel risks for 2020 – 5 is already happening
Australia's tourism industry is ready to grow back
Philippines' Taal volcano ash fall suspends flights in…
About Travel Daily (TD)
© 2020 - Travel Daily. All Rights Reserved.
Welcome back, Log in to your account.
Continue with FacebookContinue with TwitterContinue with LinkedIn
Log in using your email
(New User)
Be part of our community of seasoned travel and hospitality industry professionals from all over the world.
Username Only letters and numbers are allowed
Password Must be between 6-8 characters
Confirm password Must be the same with Password
By clicking SIGN UP, you agree to traveldailyjobs.com User Agreement, Privacy Policy, and Cookie Policy.


text:
Буевский Борис Николаевич () — советский украинский композитор, автор балетов, симфоний, камерно-инструментальной музыки, романсов, эстрадных песен, музыки к фильмам. Отец композитора Тараса Буевского.

Биография
Родился 7 июня 1935 года в городе Кривой Рог.

В 1959 году окончил Харьковскую консерваторию по классу композиции Дмитрия Клебанова.

В период с 1959 по 1961 год — преподаватель теоретических предметов в Донецком музыкальном училище.

В 1961 году становится членом Союза композиторов Украины, переезжает в Киев. В этом же году начинает писать для кино — музыка к игровым, анимационным, документальным и научно-популярным фильмам.

С 1993 года живёт в Брюсселе.

Сочинения
 балет — Песня синего моря (1966);
 оратория — Странствия сердца (сл. Л. Кутенко, 1964);
 для оркестра — Весенняя увертюра (1959), Украинская сюита (1959), Увертюра (1961), Симфония (1966), Балетная сюита (1968);
 для квартета деревянных духовых инструментов — Сюита (1960);
 для фортепиано — три прелюдии (1960), Этюд (1961);
 для органа — Прелюд (1960);
 для виолончели с фортепиано — Экспромт (1960);
 для хора без сопровождения — Триптих (сл. Н. Винграновского);
 для голоса с оркестром — романсы (сл. П. Верлена, 1965);
 для голоса с джазовым оркестром — циклы романсов (сл. Н. Винграновского, Р. Бернса), 9 детских песенок (сл. Н. Винграновского);
 для голоса, виолончели и фортепиано — три сонета (сл. В. Шекспира);

Музыка к фильмам:
 1964 — Аистёнок (мультфильм);
 1965 — Зелёная кнопка (мультфильм);
 1966 — Медвежонок и тот, кто живёт в речке (мультфильм), Лишний хлеб;
 1967 — Десятый шаг;
 1969 — Падающий иней;
 1971 — Весёлые Жабокричи; Страшный, серый, лохматый (мультфильм); Удивительный китёнок (мультфильм);
 1972 — Софья Грушко;
 1972 — Адрес вашего дома, Тихие берега;
 1973 — Огонь;
 1974 — Анна и Командор, Белый круг;
 1975 — Канал;
 1977 — Если ты уйдёшь…, Солдатки;
  — Вожак;
 1978 — Мятежный «Орионъ», Ночные капитаны (мультфильм);
 1980 — Однажды я пришёл домой (мультфильм).

Примечания

Источники

 Буєвський Борис Миколайович // Українська музична енциклопедія. Т. 1 [А—Д] / Гол. редкол. Г. Скрипник; Національна академія наук України; Інститут мистецтвознавства, фольклористики та етнології ім. М. Т. Рильського. — : Видавництво Інституту мистецтвознавства, фольклористики та етнології НАН України, 2006. — 680 c. — С. 279.
 Союз композиторов Украины. Справочник / : Муз. Україна, 1978. — 264 с.
 Розенфельд Б. М. Сергей Есенин и музыка: справочник [Текст] / Б. М. Розенфельд. — : Советский композитор, 1988. — 88 с.
 Музыка: большой энциклопедический словарь / гл. ред. Г. В. Келдыш; ред. М. Г. Арановский. — 2-е изд. — : Большая Российская энциклопедия, 1998. — 672 с. ISBN 5-85270-254-4.

 Большая биографическая энциклопедия. 2009.
 Історія української музики XX століття: навч. посіб. для студ. муз. спец. ВНЗ / О. Є. Верещагіна, Л. П. Холодкова. — : Освіта України, 2010. — 268 c. — ISBN 978-966-188-009-1.
 Сопівник М. Звучіть, маестро! [Текст]: (7 червня 2011 року виповнилося 76 років композитору Борису Миколайовичу Буєвському) / М. Сопівник // Слово Просвіти. — 2011. — № 25 (23—29 червня). — С. 8.
 Центральний державний архів-музей літератури і мистецтва України. Буєвський Борис Миколайович.
 Буєвський Борис Миколайович // Музика в кінематографі України: каталог. Ч. 1: Автори музики художньо-ігрових фільмів, які створювалися на кіностудіях України / О. У. Литвинова. — : Логос, 2009. — 453 с. — С. 103—104. ISBN 978-966-171-144-9.
 Буєвський Борис Миколайович // Мистецтво України: енциклопедія: у 5 т. / редкол.: А. В. Кудрицький (відп. ред.) [та ін.]. — : «Українська енциклопедія» ім. М. П. Бажана, 1995. — Т. 1: А-В. — 1995. — 399 c. — С. 261.

Ссылки
 Борис Буевский на сайте animator.ru.
 Борис Буевский на сайте «Музыкальные личности».

Выпускники Харьковской консерватории
Члены Национального союза композиторов Украины


The U.S. Drug Enforcement Administration's (DEA's) Final Rule for the Disposal of Controlled Substances, which implements the Secure and Responsible Drug Disposal Act of 2010, was recently made available online (click here). The Act, in an effort to curtail the prescription drug abuse epidemic, authorized DEA to develop and implement regulations that outline methods to transfer unused or unwanted pharmaceutical controlled substances to authorized collectors for the purpose of disposal. The Act also permits long-term-care facilities to do the same on behalf of residents or former residents of their facilities. The Final Rule took effect on October 9 and can be viewed here.
Looking for Compounding CEss? Click here for resources.


The Melbern G. Glasscock Center for Humanities Research at Texas A&M University has awarded the 19th annual Susanne M. Glasscock Humanities Book Prize for Interdisciplinary Scholarship to Ruth Carbonette Yow for her book, "Students of the Dream: Resegregation in a Southern City," published by Harvard University Press in 2017.
Yow is a historian and ethnographer of justice struggles and public education. In her book, she draws from more than 100 interviews with current and former Marietta High School students, parents and teachers, as well as community leaders and politicians, to write an innovative and compelling ethnographic history. She invites readers onto the key battlegrounds of the school's struggle against resegregation.
The failure of local, state and national policies to stem the tide of resegregation is leading activists — students, parents and teachers — to reject traditional integration models and look for other ways to improve educational outcomes among African-American and Latino students.
The book begins with the first generations of Marietta High's desegregators after the landmark Brown v. Board of Education ruling and follows the stories of later generations who saw the dream of integration fall apart. Yow argues for a revitalized commitment to integration, but one that challenges many of the orthodoxies, including colorblindness, inherited from the mid-20th century civil rights struggle.
Yow plans to visit Texas A&M in March 2019 to receive the award and participate in campus and community events in celebration of the prize. "Students of the Dream: Resegregation in a Southern City" was a finalist for the Ralph Henry Gabriel Dissertation Prize and shortlisted for the Victor Turner Prize.
Yow continues to work with the youth who populate the pages of her book through her service as a board member and volunteer with Marietta YELLS (Youth Empowerment through Learning, Leading and Serving). She also teaches and tutors with a prison education nonprofit, Common Good Atlanta.
Her current position as Service Learning and Partnerships Specialist at Georgia Tech's Center for Serve-Learn-Sustain allows her to engage her background in equity and community-based movements to facilitate transformative teaching, learning and long-term projects across the campus and the city of Atlanta. She has a doctorate in American studies and African-American studies from Yale University.
The Susanne M. Glasscock Humanities Book Prize for Interdisciplinary Scholarship was endowed in December 2000 by Melbern G. Glasscock, Texas A&M University Class of '59, in honor of his wife. Among many other generous gifts to Texas A&M, in 2002, the couple provided a naming endowment for the Glasscock Center.


Tata Power Solar, India's largest integrated solar player, has announced the completion of 25 years in the global renewable energy space.
A pioneer in the Indian solar market, Tata Power Solar has influenced more than 30 million people and reduced carbon footprint by more than 6.2 million tonnes as of 2014.
With businesses in cell & module manufacturing, EPC (engineering, procurement & construction) services and off-grid solutions, Tata Power Solar is one the oldest solar energy companies in the world.
As well as being recently ranked the number one third-party EPC player, the company is also the leading domestic module supplier and rooftop solar player in the industrial and commercial segment, for 2014, by Bridge to India; as a consequence of its quality, efficiency, customer care and reliability.
Commenting on the occasion, Ajay Goel, CEO, Tata Power Solar said, "Our 25 year journey is a testimony to the path-breaking work done in transforming lives of communities across the country.
The company has strived to make solar power accessible to the far-flung regions of India, touching thousands of lives in every corner of the country, energising communities.
Having built strong partnerships with numerous governments, non-profits and rural banks, Tata Power Solar has empowered those mired in energy poverty, and provided many access to electricity for the first time.
To mark the anniversary, Tata Power Solar has launched a coffee table book titled "Chasing The Sun", showcasing the impact of solar across India.


Tax and Estate Planning Attorney and CPA Stuart W. Moskowitz has been providing legal and accounting advice and representation to individuals and small businesses throughout the metropolitan area including Nassau County and Queens County for more than 27 years as an attorney and for more than 30 years as a CPA. Call (516) 409-0769 for a free initial consultation today.
You are never too old or too young to begin estate planning. An estate plan can accomplish many different goals, and people make an estate plan for many different reasons.
Some people want an estate plan in order to ensure that their assets and real estate are transferred according to their wishes, either while they are alive or after they pass away. People may want an estate plan in order to establish a legacy for a charity or other worthwhile cause. Some people seek an estate plan to avoid the paying of estate taxes. Some individuals with business holdings or significant assets seek an estate plan designed to protect their assets and shield them from liability to whatever extent is possible.
Regardless of your motivation for creating an estate plan, and whether your estate plan is a simple will or a more comprehensive and complex plan involving trusts and other estate planning tools, you want an experienced attorney who can provide these services and ensure that you fully understand your options and can make informed decisions.
Woodbury Estate Planning Attorney Stuart W. Moskowitz is a CPA as well as a lawyer and has more than 25 years of experience assisting individuals and small businesses with their estate planning needs. He offers advice based on experience and will take the time to understand your goals and customize an estate plan to fit your needs and budget. For additional information about Stuart W. Moskowitz and the benefits of retaining our law firm, please visit our Benefits of Retaining Stuart W. Moskowitz page.
We also represent individuals in probate and estate administration matters.
To discuss your matter in confidence, please schedule a free one half hour initial consultation with skilled Nassau County attorney and CPA Stuart W. Moskowitz by calling us at (516) 409-0769. If you prefer, you may fill out our intake form, and we will contact you to schedule a consultation. Your matter, your future and your family are too important to be handled by a less experienced lawyer, so call today.
Tax and Estate Planning Attorney and CPA Stuart W. Moskowitz has been providing legal and accounting advice and representation to individuals and small businesses throughout Nassau and Suffolk County including the Long Island, Garden City, Hempstead, Massapequa, Freeport, Oceanside, Melville, Woodbury, Syosset, Hicksville, Plainview & West Babylon, NY.
Name Phone Email How can I help?
© 2010 Law Office of Stuart W. Moskowitz, Esq., CPA All rights reserved.


text:
Q: CSS Cell Margin In my HTML document, I have a table with two columns and multiple rows. How can I increase the space in between the first and second column with css? I've tried applying "margin-right: 10px;" to each of the cells on the left hand side, but to no effect.

A: Try padding-right. You're not allowed to put margin's between cells.

      one
      two

A: This solution work for td's that need both border and padding for styling.
 (Tested on Chrome 32, IE 11, Firefox 25)
CSS:
table {border-collapse: separate; border-spacing:0; }   /*  separate needed      */
td { display: inline-block; width: 33% }  /*  Firefox need inline-block + width  */
td { position: relative }                 /*  needed to make td move             */
td { left: 10px; }                        /*  push all 10px                      */
td:first-child { left: 0px; }             /*  move back first 10px               */
td:nth-child(3) { left: 20px; }           /*  push 3:rd another extra 10px       */

/*  to support older browsers we need a class on the td's we want to push
    td.col1 { left: 0px; }
    td.col2 { left: 10px; }
    td.col3 { left: 20px; }
*/

HTML:

        Player
        Result
        Average

Updated 2016
Firefox now support it without inline-block and a set width

table {border-collapse: separate; border-spacing:0; }
td { position: relative; padding: 5px; }
td { left: 10px; }
td:first-child { left: 0px; }
td:nth-child(3) { left: 20px; }
td { border: 1px solid gray; }

/* CSS table */
.table {display: table; }
.tr { display: table-row; }
.td { display: table-cell; }

.table { border-collapse: separate; border-spacing:0; }
.td { position: relative; padding: 5px; }
.td { left: 10px; }
.td:first-child { left: 0px; }
.td:nth-child(3) { left: 20px; }
.td { border: 1px solid gray; }

    Player
    Result
    Average

Player

Result

Average

A: Using border-collapse: separate; didn't work for me, because I only need a margin in-between the table cells not on the sides of the table.
I came up with the next solution:
-CSS
.tableDiv{
    display: table;
}

.cellSeperator {
    display: table-cell;
    width: 20px;
}

.cell1 {
    display: table-cell;
    width: 200px;
}

.cell2 {
    display: table-cell;
    width: 50px;
}

-HTML

A: If you can't use padding (for example you have borders in td) try this
table {
           border-collapse: separate;
           border-spacing: 2px;
}

A: You can't single out individual columns in a cell in that manner.  In my opinion, your best option is to add a style='padding-left:10px' on the second column and apply the styles on an internal div or element.  This way you can achieve the illusion of a greater space.

A: If you have control of the width of the table, insert a padding-left on all table cells and insert a negative margin-left on the whole table.
table {
    margin-left: -20px;
    width: 720px;
}

table td {
    padding-left: 20px;
}

Note, the width of the table needs to include the padding/margin width. Using the above as an example, the visual width of the table will be 700px.
This is not the best solution if you're using borders on your table cells.

A: SOLUTION
I found the best way to solving this problem was a combination of trial and error and reading what was written before me:
http://jsfiddle.net/MG4hD/

As you can see I have some pretty tricky stuff going on... but the main kicker of getting this to looking good are:
PARENT ELEMENT (UL): border-collapse: separate; border-spacing: .25em; margin-left: -.25em;
CHILD ELEMENTS (LI): display: table-cell; vertical-align: middle;
HTML

3yr

in
stall

9x5

on
site

globe

back
to hp

CSS
ul { border: none !important; border-collapse: separate; border-spacing: .25em; margin: 0 0 0 -.25em; }
li { background: #767676 !important; display: table-cell; vertical-align: middle; position: relative; border-radius: 5px 0; text-align: center; color: white; padding: 0 !important; font-size: .65em; width: 4em; height: 3em; padding: .25em !important; line-height: .9; text-transform: uppercase; }

A: A word of warning: though padding-right might solve your particular (visual) problem, it is not the right way to add spacing between table cells. What padding-right does for a cell is similar to what it does for most other elements: it adds space within the cell. If the cells do not have a border or background colour or something else that gives the game away, this can mimic the effect of setting the space between the cells, but not otherwise.
As someone noted, margin specifications are ignored for table cells:
CSS 2.1 Specification – Tables – Visual layout of table contents

Internal table elements generate
rectangular boxes with content and
borders. Cells have padding as well.
Internal table elements do not have
margins.

What's the "right" way then? If you are looking to replace the cellspacing attribute of the table, then border-spacing (with border-collapse disabled) is a replacement. However, if per-cell "margins" are required, I am not sure how that can be correctly achieved using CSS. The only hack I can think of is to use padding as above, avoid any styling of the cells (background colours, borders, etc.) and instead use container DIVs inside the cells to implement such styling.
I am not a CSS expert, so I could well be wrong in the above (which would be great to know! I too would like a table cell margin CSS solution).

A: I realize this is quite belated, but for the record, you can also use CSS selectors to do this (eliminating the need for inline styles.) This CSS applies padding to the first column of every row:
table > tr > td:first-child { padding-right:10px }

And this would be your HTML, sans CSS!:

data	more data

This allows for much more elegant markup, especially in cases where you need to do lots of specific formatting with CSS.

A: margin does not work unfortunately on individual cells, however you could add extra columns between the two cells you want to put a space between...  another option is to use a border with the same colour as the background...

A: You can simply do that:

        one

        two

No CSS is required :) This 10px is your space.

A: Apply this to your first :
padding-right:10px;

HTML example:

      data
      more data

A: Following Cian's solution of setting a border in place of a margin, I discovered you can set border color to transparent to avoid having to color match the background. Works in FF17, IE9, Chrome v23. Seems like a decent solution provided you don't also need an actual border.

A:

<!DOCTYPE html>

    Jill
    Smith
    50

    Eve
    Jackson
    94

    John
    Doe
    80

Using padding is not correct way of doing it, it may change the look but it is not what you wanted. This may solve your issue.

A: You can use both of them:
padding-right:10px;

padding-right:10%;

But it's better to use with %.

A: If padding isn't working for you, another work around is to add extra columns and set a margin via width using <colgroup>. None of the padding solutions above were working for me as I was trying to give the cell border itself a margin, and this is what solved the problem in the end:

  <colgroup>
    <col>
    <col width="20px">
    <col>
  </colgroup>

     data

     more data

Style the borders of the table cells using :nth-child so that the 2nd and third columns appear to be a single column.
table tr td:nth-child(2) { border: 1px solid black; border-right:0; }
table tr td:nth-child(3) { border: 1px solid black; border-left:0; }

redpajama_set_name: RedPajamaStackExchange


text:
Ascanio Arosemena Chávez (Panamá, 22 de diciembre de 1944 - 9 de enero de 1964) fue un dirigente estudiantil y uno de los panameños que falleció durante los incidentes del Día de los Mártires, cuando un grupo de estudiantes panameños ingresó a la antigua Zona del Canal de Panamá, bajo administración estadounidense, a enarbolar la bandera de Panamá en la Balboa High School y fue duramente reprimida por las fuerzas policiales y militares de Estados Unidos.

Ascanio Arosemena fue estudiante del Instituto Nacional, aunque posteriormente estudia en la Escuela Profesional Isabel Herrera Obaldía. Fue un dirigente estudiantil que participó en actividades culturales, humanitarias y deportivas.

Cuando ocurrió el incidente de la bandera, él no estaba en la protesta inicial sino que se sumó en la lucha posterior cuando cientos de panameños comenzaron a intentar a entrar a la Zona del Canal, siendo reprimidos por los estadounidenses. Arosemena estuvo ayudando a varios panameños heridos cuando fue herido mortalmente por un disparo y fue el primero en fallecer en el suceso. En total, fallecieron 21 panameños y cuatro estadounidenses, y también dejó a más de 300 panameños heridos.

Póstumamente, la antigua Balboa High School, ahora a manos panameñas cambió su nombre a Centro de Capacitación Ascanio Arosemena, y sirve de entrenamiento para los empleados de la Autoridad del Canal de Panamá.

Enlaces externos
 Biografía en la Biblioteca Nacional de Panamá

Zona del Canal de Panamá
Fallecidos en Ciudad de Panamá
Nacidos en Ciudad de Panamá


text:
'Only 4% of UK citizens trust politicians to be honest about the environment'
Politicians were the second-least trusted group after celebrities, who were trusted by only 3% of the populace
Only 4% of UK citizens trust politicians to tell the truth about the state of the environment and the battle against climate change.
That's the finding from a new survey of 2,000 people carried out for renewable energy firm Pure Planet, which found politicians were the second-least trusted group after celebrities, who were trusted by only 3% of the populace.
It highlights campaign groups such as Extinction Rebellion and Greenpeace are eight times more trusted than politicians, while individual activists such as Greta Thunberg are five times more trusted.
Family and friends scored 13% and 12% respectively, while more than a third of people said they don't trust anybody at all on climate change and pollution issues.
Londoners are the most likely to believe politicians – 9% of those in the nation's capital said they trust politicians to tell the truth, compared with just 1% of residents in Belfast, Manchester and Leeds.
Steven Day, Co-Founder of Pure Planet, said: "The public is clearly fed up with inaction and indifference from politicians when it comes to the current climate emergency.
"And that one in three people trusts no one on the climate is deeply worrying. We need the stark findings of experts on climate to be more widely understood."
Change Climate election emergency general Policy politicians trust truth


text:
Susana Fontana (Buenos Aires, 3 de abril de 1937 – Buenos Aires, 15 de octubre de 2010) fue una periodista de espectáculos, presentadora de televisión, publicista y productora argentina.

Biografía
En su juventud se recibió de maestra con un promedio de nueve puntos. Atraída por el espectáculo, abandonó el magisterio e inició su carrera en el programa Buenas tardes, mucho gusto, a mediados de la década de 1960 como cocinera en la sección «Hoy colabora usted». El programa, emitido por Canal 13, batió récords de audiencia hasta los años 1980. Del ciclo, intervinieron a su vez Petrona Carrizo de Gandulfo y el médico Alberto Cormillot. También concurrían personas que tenían algo para enseñar o preparar, en distintos tipos de rubros como la gastronomía, jardinería, tejido, etc. Finalmente, Fontana incursionó en este haciendo manualidades.

Luego continuó en el periodismo y en la ciudad de Mar del Plata trabajó en publicidad y relaciones públicas. A su vez, fue contratada para participar de programas de televisión de Canal 11, a pesar de que comenzó en Canal 13.

Junto a Jorge Jacobson y Lucho Avilés, nuevamente radicada en su ciudad natal, en 1970 encabezó Radiolandia en TV en Teleonce y dirigiéndose al público femenino, condujo durante quince años Femenino y singular. A sus primeros labores le sucedieron Sintonía, el conductoral del noticiero de Canal 9, Astros y estrellas, Indiscreciones, entre otros.

Miembro de APTRA (Asociación de Periodistas de la Televisión y la Radiofonía Argentinas), fue parte de los elencos de Telepasillo (1999-2001), con Mario Caira y Siempre listos. Además, se presentó en Radio 10 y produjo varios programas musicales.

Desde 2002 hasta 2010 fue panelista del programa de televisión Convicciones, por canal Magazine y con Lucho Avilés, Teto Medina, Pilar Smith y Cristina Clement.

Fue partenaire de Avilés durante cuarenta años, y se le atribuyó el apelativo de "La decana de los chimentos". En 2009 fue diagnosticada con cáncer de ovario, por lo cual dejó temporalmente su trabajo.

Falleció en su hogar el 15 de octubre de 2010 a las 23:10 (UTC-3) a los 73 años. Sus restos fueron inhumados en el Jardín de Paz, de Pilar; y cremados días después. Estuvo casada en dos oportunidades: con su primer marido tuvo dos hijas y la segunda vez, con el director de televisión Eduardo Tedesco, tuvo dos mellizas.

Televisión
 1962-1980: "Buenas Tardes, Mucho Gusto" - Conductora
 1970: "Radiolandia en TV" - Conductora
 1970-1985: "Femenino y Singular" - Conductora
 1988-1989: "Astros y Estrellas" - Panelista
 1990-1999: "Indiscreciones" - Panelista
 1999-2001: "Telepasillo" - Panelista
 2002: "Siempre Listos" - Panelista
 2003-2010: "Convicciones" - Panelista

Referencias

Enlaces externos
 Television-Medios.blogspot.com (entrevista a Susana Fontana).
  (Susana Fontana: «Lucho está muy contento con su equipo»).

Mujeres periodistas de Argentina
Presentadores de televisión de Argentina
Porteños
Fallecidas por cáncer de ovario
Fallecidos por cáncer en Argentina


text:
Identifying factors affecting the succession of terrestrial lichen communities in the Omineca Region of north-central British Columbia Sulyma, Randy
Abstract: In the Omineca region of BC, Government has implemented ungulate winter range (UWR) legislation to manage low-elevation pine-lichen woodlands on more than 190,000 ha of forests used by woodland caribou (Rangifer tarandus caribou). Woodland caribou are: a species at risk under the Forest and Range Practices Act in BC, are commonly considered to be a leading indicator of biodiversity and ecosystem health (e.g., see ENGO programs such as Caribou Nation, Grey Ghosts, and Staring at Extinction), and depend on UWRs with abundant terrestrial lichens for their over-winter survival. Legally designated UWR in the Omineca was stratified into units of terrestrial lichen habitat within which management direction is focused on the maintenance of forage. It was assumed that forage could be maintained using a 2-pass, 140-year rotation of forests where disturbance from logging would restartthe ecological succession of terrestrial forage lichens (Province of BC 2005). Development of management direction was, at the time, limited in ecological scope and taken from resource conditions prior to attack by the mountain pine beetle (Dendroctonus ponderosae; MPB). After 3 years, implementation of UWR policy in the region is now considered to have been impeded by 2 fundamental assumptions: 1) all sites with terrestrial lichen follow the same ecological succession trajectory and 2) pine-lichen woodlands have sufficient economic viability to attract industrial development. In a recent workshop (Whittaker and Wiensczyk 2007), domain experts from around BC acknowledged considerable variation in succession trajectories of lichen-plant associations both within and between 3 broad regions of the province; the Chilcotin, the Entiako, and the Omineca. Current management direction for UWRs in the Omineca does not take this ecological variation into consideration. Discussion at this workshop also focused on the fact that MPB attack is replete in these regions and the effect of MPB-killed timber on UWR value is still unclear. For example, in the Omineca, uncertainties such as shelf lifeof MPB-attacked pine, current economic factors in the industry, and policy constraints will likely lead to avoidance of UWRs by licensees; hence, largely due to the MPB, the tools assumed to manage UWRs may not be as available as initially expected. Active management of UWRs is crucial to the long-term supply of habitat for caribou. Lack of management was predicted to lead to mid-term shortages in the supply of UWR (McNay et al. 2006; Sulyma 2001). We seek to undertake research that synthesizes several aspects of UWR ecology building new understanding of relationships among site factors, terrestrial lichen abundance, MPB-killed timber, and snowpack development. With this new knowledge, a second phase of research is focused on the relationships between fire and lichens to test management for regenerating terrestrial forage lichens. Outcomes are expected to improve local UWR management and aid the persistence of caribou populations by: a) distinguishing UWRs that require active management from those that do not; b) specifying management options for sites requiring active disturbance; c) improving the understanding of regional differences in UWR ecology; and d) improving the understanding of the likely response of caribou to MPB-attacked range. The ecology of pine-lichen woodlands can be summarized as a sere which develops to a zonal plant community with lichens being replaced by either Arctostaphylos uva-ursi or feather moss (Coxson and Marsh 2001; Johnson 1981; Morneau and Payette 1988; Pharo and Vitt 2000; Rowe 1984; Sulyma and Coxson 2001; Williston et al. 2006). However, this generalization is too simplistic (Ahti 1977) to guide management of UWRs for caribou in northern BC. In the Chilcotin lichen ecology is driven by climate; in the Omineca lichen presence it is a function of site factors; and in the Entiako lichen ecology is driven by both climate and site f ...
Sulyma, Randy, Wildlife Infometrics Inc.; McNay, R. Scott; Haughian, Sean R.. 2009. Identifying factors affecting the succession of terrestrial lichen communities in the Omineca Region of north-central British Columbia. Forest Investment Account (FIA) - Forest Science Program. Forest Investment Account Report


NFRC (National Fenestration Rating Council®): a non-profit organization that certifies the energy ratings for doors, windows and skylights.
Nailing Fin: a flange around a window frame used for attachment to the stud wall.
National Certified Testing Laboratories: an independent testing lab that tests home products for certification groups such as the NFRC.
North-light roof: a roof having a saw tooth configuration with clerestory windows on the north-facing side.


It seems like every time I turn around lately someone else I know is pregnant. Two of which have already welcomed their little ones into the world this week. Congrats again!!
As some of you may know I make ribbon blankets a.k.a Lulu Loveys that I consign at a local baby store. Well whenever I find out someone is having a baby the Lulu is my go to gift. I found the cutest flannel at Joanne's. I wish I could buy that whole section! So many adorable patterns to choose from.
How cute is that argyle? LOVE it! And the little animals...eek! Flannel has come a long way since lumberjack shirts!
The two bibs were made out of the the same flannel I used for the Lulu (obviously :-)) with solid white flannel to back and pearl snaps to close. I usually make larger bibs with terry cloth to back but they are more for babies who are eating solid food. I thought an all flannel bib was perfect for drool bibs. And the flannel is soft enough that it won't irritate a newborn baby's skin.
My husband's cousin and my friend from college both had girls so I made two of these lulu and bib sets. I hope they like them as much as I do!
These are really cute! Love them. You're very creative.
These are great! Thanks for linking up to Olivia Renn!
Super cute fabrics, I've made blankets of both of those! Your ribbon blankies are adorable!
Love the tag blankie! The bibs are darling too!
So cute! Love the taggie blankies!
LOVE that argyle too! Really cute projects, thanks for linking up! See you next week!
Those are adorable. Love the fabric.


text:
Q: Disable OK button in alert Is there any way to disable 'Ok' button of alert in java script?
I have a java script function which calls two different window , the second window pop up is delayed by an alert as I need to open it after some operation is complete in the first window opened . I need to disable the alert till some operation in complete in first window. Please suggest some way.
Below is the js function(myFunction()) which is called on a button click an opens two window :
    function myFunction() {
        myFunction2();
        alert("Please wait...");
        myFunction1();
    }

    function myFunction2() {
        var x ="sce";
        var URL ="Multiple.jsp?viewStatus="+x;
        var windowName = "showDeb";
          var width  = screen.availWidth;
          var height = screen.availHeight;
          var w = 900;
          var h =   500;
          var features =
            'width='          + w +
            ',height='        + h +
            ',left='          + ((width - w - 10) * .5)  +
            ',top='           + ((height - h - 30) * .5) +
            ',directories=no' +
            ',location=no'    +
            ',menubar=no'     +
            ',scrollbars=yes' +
            ',status=no'      +
            ',toolbar=no'     +
            ',resizable=false';

           var strOpen = window.open (URL, windowName, features);
           strOpen.focus();
           myFunction1();
    }
    function myFunction1() {
        var x ="deb";
        var URL ="Multiple.jsp?viewStatus="+x;
        var windowName = "showSce";
           var width  = screen.availWidth;
           var height = screen.availHeight;
           var w = 900;
           var h =  500;
           var features =
               'width='          + w +
               ',height='         + h +
               ',left='       + ((width - w - 10) * .5)  +
               ',top='            + ((height - h - 30) * .5) +
               ',directories=no' +
               ',location=no'     +
               ',menubar=no'      +
               ',scrollbars=yes' +
               ',status=no'   +
               ',toolbar=no'      +
               ',resizable=false';

            var strOpen = window.open (URL, windowName, features);
            strOpen.focus();
    }

A: I would recommend to use cookies to communicate between your windows.
In window 1 set cookie once process is completed.
var date = new Date();
date.setDate(date.getDate()+1);
document.cookie = "name=win1; path=/; expires="+date.toGMTString()

In parent file which will open window 2, add timer to wait until window 1 sets cookie.
   var myVar = setInterval(myTimer, 1000); // Poll every second to check if window 1 has completed its execution by checking cookie.
   function myTimer() {
      var cookies = document.cookie.split(";");

      for (var i = 0; i < cookies.length; i++) {
        if (cookies[i].trim() == "name=win1") {
          // stop timer and open win 2
          clearTimeout(myVar);
          document.getElementById("msg2").innerHTML = "Process in window 1 completed";

         // <<< Open window 2 here >>>

          var dateNow = new Date();
          document.cookie = "name=win1; path=/; expires="+dateNow.toGMTString();
        }
      }

Make sure that you delete the cookie before window one is opened and after window 2 is opened else it will cause issue in re-run as cookie will be already present before window 1 completes the process.
To delete the cookie just set expiry date as current time or privious.
var dateNow = new Date();
document.cookie = "name=win1; path=/; expires="+dateNow.toGMTString();

Here is an example which demonstrates the same. Make sure you allow pop up as it will try to open new window.
http://embed.plnkr.co/MVa45iwYuW9asQuYRzBV/


text:
Charles Manson Is Getting Married
© myapp.com.tw
Convicted Murderer Charles Manson Is Getting Married… To A 26-Year-Old
Johnny Testa
It's official — this is probably the weirdest thing you'll read all day. Convicted murderer Charles Manson has been granted a marriage license by the State of California to wed 26-year-old Afton Elaine Burton.
The Associated Press broke the news earlier today by obtaining a copy of the marriage license, which was actually issued on November 7, 2014. The two have 90 days to wed, otherwise they will have to apply for another license.
Manson was convicted for the gruesome killings of actress Sharon Tate and four others on August 9, 1969, for which he is not eligible for parole until 2027. And soon he'll have 26-year-old Burton to call his wife.
This West Indo-Guyanese Gay Man Is Canadian Drag Royalty at Its Finest
It's Possible to Drink Pumpkin Spice While Buying Kettlebells, Says Tom Segura
Guy Perspective
A Black Man's Experience of the American Justice System
Connecting the New Netflix Film With My Dad's War Experiences
Teen Heartthrob to Proud Parent: Nick Carter Talks Being a Dad in Quarantine


This arts-based phenomenological study intended to extend themes from Jarrett's (2016) artsbased phenomenological study, which explored the evolving identity of a graduate art therapy student. The researcher/participant of this study specifically explored how her past medical trauma continues to influence her current personal and professional identity development, while at her current clinical internship at a pediatric hospital. This participant replicated Jarrett's (2016) methodology by completing the Twenty-StatementTest (TST), following the creation of artwork for six weeks. Upon the completion of data collection, the participant took part in a semi-structured interview with an independent reviewer. The purpose of the independent reviewer was to aid in the process of the interpretive phenomenological systematic analysis, which included the TST responses to recognize and categorize themes to further understand certain influences of one's personal and professional identity. The researcher utilized three of the four categories that Jarrett (2016) identified; familial, sociocultural, and educational, as a framework for the early development of data analysis. The researcher extended categories in this study to include medical and trauma influences. As a result of this process, further themes evolved in the understanding of how traumatic experiences influence one's identity. The researcher's pediatric medical experience influenced the artwork and TST. The results of the interpretive phenomenological systematic analysis indicated that the following eight themes influenced the participant's personal and professional identity: giving, self, success, interpersonal relationships, mother, somatic experiences, values and memories.


We have just a few questions.
Are you a copywriter who specializes in writing for the web?
Are you an expert on the topics of online marketing and inbound marketing?
Are you highly experienced in the art of writing SEO-focused blog posts?
Please note we're looking for someone who's an exceptional copywriter and who knows all the ins and outs of online marketing and inbound marketing.
If you think you've got what it takes to join our small Colorado web team as a freelance web copywriter, make sure you check out our Inbound Marketing Copywriter job page for a complete description of who we're looking for.


text:
Beetles are a group of insects that form the order Coleoptera. The word "coleoptera" is from the Greek κολεός, koleos, meaning "sheath"; and πτερόν, pteron, meaning "wing", thus "sheathed wing", because most beetles have two pairs of wings, the front pair, the "elytra", being hardened and thickened into a shell-like protection for the rear pair and the beetle's abdomen. The order contains more species than any other order, constituting almost 25% of all known animal life-forms. About 40% of all described insect species are beetles (about 400,000 species), and new species are discovered frequently. The largest taxonomic family, the Curculionidae (the weevils or snout beetles), also belongs to this order.
True flies are insects of the order Diptera, the name being derived from the Greek di = two, and ptera = wings. Insects of this order use only a single pair of wings to fly, the hindwings being reduced to club-like balancing organs known as halteres. Diptera is a large order containing an estimated 1,000,000 species including horse-flies, crane flies, hoverflies and others, although only about 125,000 species have been described. Flies have a mobile head, with a pair of large compound eyes, and mouthparts designed for piercing and sucking (mosquitoes, black flies and robber flies), or for lapping and sucking in the other groups. Their wing arrangement gives them great manoeuvrability in flight, and claws and pads on their feet enable them to cling to smooth surfaces. Flies undergo complete metamorphosis; the eggs are laid on the larval food-source and the larvae, which lack true limbs, develop in a protected environment, often inside their source of their food. The pupa is a tough capsule from which the adult emerges when ready to do so; flies mostly have short lives as adults.
Bees, Bumblebees and Wasps
Hymenoptera is the third-largest order of insects, comprising:
Bees and Bumblebees - Apidae.
Wasps - Crabronidae
Ichneumons - Ichneumonidae
Sphecids - Sphecidae
Sawflies - Sympytha
Vespid Wasps - Vespidae
Over 150,000 species are recognized, with many more remaining to be described.
The Lepidoptera is an order of insects that includes moths and butterflies (both called lepidopterans). 180,000 species of Lepidoptera are described, in 126 families and 46 superfamilies, 10% of the total described species of living organisms. It is one of the most widespread and widely recognizable insect orders in the world. The term was coined by Linnaeus in 1735 and is derived from Ancient Greek λεπίδος (scale) and πτερόν (wing). The Lepidoptera show many variations of the basic body structure that have evolved to gain advantages in lifestyle and distribution.
Scorpionflies
Mecoptera (from the Greek: meco- = "long", -ptera = "wings") are an order of insects with about 550 species in nine families worldwide. Mecoptera are sometimes called scorpionflies after their largest family, Panorpidae, in which the males have enlarged genitals that look similar to the stinger of a scorpion. The Bittacidae, or hangingflies, are a prominent family of elongate insects known for their elaborate mating rituals, in which females choose mates based on the quality of gift prey offered by various males.
Net-winged insects
The insect order Neuroptera, or net-winged insects, includes the lacewings, mantidflies, antlions, and their relatives. The order contains about 6,000 species.
The Hemiptera or true bugs are an order of insects comprising some 50,000 to 80,000 species of groups such as the cicadas, aphids, planthoppers, leafhoppers, and shield bugs. They range in size from 1 mm to around 15 cm, and share a common arrangement of sucking mouthparts. The name "true bugs" is sometimes limited to the suborder Heteroptera. Many insects commonly known as "bugs" belong to other orders; for example, the lovebug is a fly,while the May bug and ladybug are beetles.
Dragonflies and Damselflies
Odonata is an order of carnivorous insects, encompassing the dragonflies (Anisoptera) and the damselflies (Zygoptera). The Odonata form a clade, which has existed since the Triassic.
Dragonflies are generally larger, and perch with their wings held out to the sides; damselflies have slender bodies, and hold their wings over the body at rest.
Worldwide 5858 species are documented, most in warm regions. In the Netherlands 71 species are observed, of which 66 are considered native, one is considered a drifter and four are extinct in the Netherlands.
The Orthoptera order of insects includes the grasshoppers, crickets, cave crickets, Jerusalem crickets, katydids, weta, lubber, Acrida, and locusts.
More than 27,000 species are distributed worldwide. Many insects in this order have paurometabolous or incomplete metamorphosis, and produce sound (known as a "stridulation") by rubbing their wings against each other or their legs, the wings or legs containing rows of corrugated bumps. The tympanum or ear is located in the front tibia in crickets, mole crickets, and katydids, and on the first abdominal segment in the grasshoppers and locusts. These organisms use vibrations to locate other individuals.
joint-legged
Complete metamorphose
True flies
Incomplete metamorphose
© Radenborg Nature Photography 2023


text:
Erwin Freud, with the help of an American Squad and his fellow soldiers, destroyed the alien sphere and all of its infestation. However, 72 years after World War II, the sphere has come back and emerged from the death. The old soldier is called to arms again and in the hope to end the nightmare forever. This time, the situation is just as bad as before if not worse. The area of the new infestation is currently mired a deep civil war. Freud and his new team, now, have to find a new solution to save the world from the alien threat and… from itself. The question is… How does he still live after all this time?
Online Competitive 1v1 or 2v2
The game features a more detailed and deeper story line.
More intense and satisfying firefights.
Possess and upgrade new powers to help even the odds.
Challenging boss fights. Each boss has its own unique ability.
Arena features new fun missions. Free contents will continue to be updated after release.
Finally, there are burgers in the game now.
Story: Erwin Freud, with the help of an American Squad and his fellow soldiers, destroyed the alien sphere and all of its infestation. However, 72 years after World War II, the sphere has come back and emerged from the death. The old soldier is called to arms again and in the hope to end the nightmare forever. This time, the situation is just as bad as before if not worse. The area of the new infestation is currently mired a deep civil war. Freud and his new team, now, have to find a new solution to save the world from the alien threat and… from itself. The question is… How does he still live after all this time? Features: Online Competitive 1v1 or 2v2
OS: win 7, 8, 8.1, 10
Processor: Intel duo cores or AMD equivalent
Graphics: Intel HD Graphics
DirectX: Version 9.0
Additional Notes: Eating burgers during playing is Highly Recommended
Categories Single-player, Multi-player, PvP, Online PvP, Co-op, Shared/Split Screen Co-op, Shared/Split Screen, Steam Achievements, Full controller support, Steam Trading Cards, Remote Play Together
Developers Digitized Organism
Publishers Digitized Organism
Supported languages English
Steam page https://store.steampowered.com/app/555890/
Action, Casual, Indie, Massively Multiplayer, Sports
Action, Adventure, Indie, Simulation
Action, Adventure, Casual
Battlefield™ 2042
Action, Indie, Simulation, Strategy, Early Access
Action, Simulation, Strategy, Early Access
Action, Indie, Early Access
Phasmophobia
Action, Adventure, Early Access


text:
The Miskreant Puppets are Back and They Want You to Get Out of the $#&@ing House!
June 22, 2021 | Comments Off on The Miskreant Puppets are Back and They Want You to Get Out of the $#&@ing House!
Henson Alternative's Puppet Up! – Uncensored is back to celebrate summer and welcome Los Angelenos to enjoy a night of adult comedy for four performances only: Saturday, July 31st at 5pm & 9pm and Sunday, August 1st at 3pm & 7pm.
The award-winning, critically acclaimed live show will be hosted on The Jim Henson Company's historic lot in Hollywood. Built by Charlie Chaplin and a legendary part of movie history, the lot is a classic destination that is not to be missed.
"Our performers have been waiting not-so-patiently for the opportunity to do this show again as it is meant to be seen. On stage. Live. With an audience. There is sure to be a lot of pent-up energy in the room from the puppeteers and the audience, making for some very memorable and much-needed comedy," said Brian Henson, chairman of the board at The Jim Henson Company and co-creator of Puppet Up! – Uncensored.
Created by award-winning director and producer, Brian Henson ("Muppet Christmas Carol", "Muppet Treasure Island"), and actor, director, and improv expert Patrick Bristow ("Ellen," "Seinfeld," "Curb Your Enthusiasm," "Whose Line Is It Anyway?"), Puppet Up! – Uncensored promises to deliver a completely unique experience (it's never the same show twice!), and expertly combines dynamic and spontaneous off-the-cuff comedy with the unmatched talent and creativity of Henson puppeteers. Based on suggestions from the audience, the puppet anarchy is two shows in one: the improvised puppet action projected live on screens above the stage, and the puppeteers racing around below in full view of the audience to bring it all to life. The show also features recreations of classic pieces originally created by Jim Henson, Jane Henson, and Frank Oz that haven't been seen by live audiences in decades.
Tickets are on sale now at PuppetUp.Tix.com for General Admission ($60) and VIP tickets ($150; includes priority seating, a souvenir, and a 90-minute preshow experience including a tour and Q & A with Brian Henson). A limited amount of advance purchase parking is also available for $15.00. Doors open and full cash bar will be available starting an hour before the show.
Puppet Up! – Uncensored is not recommended for anyone under the age of 16 and anyone under the age of 14 will not be allowed.
← Eddie Izzard's Dress To Kill opened at WestBeth Theatre Center 23 years ago today!Eddie Izzard opens The CAA Theatre in Toronto with 2 shows! →


text:
Home > GRADSCHL > THESES > 52
Population Structure And Habitat Association Of Aquatic Testudines In Quivira National Wildlife Refuge
Jeffrey T. Seim, Fort Hays State UniversityFollow
Dr. William Stark
I researched aquatic turtle population structure and habitat association of the turtles of Quivira National Wildlife Refuge (QNWR), in central Kansas. This group of organisms was focused on because of the lack of baseline knowledge and understanding of species presences, population sizes, structure, or habitat use on the refuge. I selected wetland units for sampling based on water permanence and quality of habitat. I then deployed baited hoop traps on these wetland units from April 24 to July 4, 2015. Captures were identified to species, measured, marked, and then release. Schnabel Multiple Census Method and Combined Percent Estimates were used to estimate population sizes. The results from these estimates were then extrapolated to the other wetland units on QNWR and a refuge wide population estimate was calculated. Adult sex ratios and age classes were generated for each species based on measurements taken during sampling. Abundant population sizes were observed on QNWR, with a male-biased sex ratio for hard-shelled turtles, and a female-biased sex ratio for soft-shelled turtles. This biased sex ratio could be the result of sampling technique, close proximity to roadways, Temperature Sex Determinate species, or due to high mortality rates of breeding and nesting individuals. Wetland unit variables were measured for sampled wetland units, and their influence on aquatic turtle abundance was investigated with a One-way Analysis of Variance. Significant results was obtained for Apalone spinifera and Chelydra serpentina, providing support for their known life histories and habitat preferences. Insights into seasonal turtle activity was recorded, and early season intensive monitoring protocols were suggested for continued research and management for the aquatic turtle populations of QNWR.
Seim, Jeffrey T., "Population Structure And Habitat Association Of Aquatic Testudines In Quivira National Wildlife Refuge" (2015). Master's Theses. 52.
https://scholars.fhsu.edu/theses/52
Copyright 2015 Jeffrey T. Seim


The cover for issue 70 of Oncotarget features Figure 4, "Imaging flow cytometry of CD9+/GFAP+/SVN+ exosomes in patients whose tumors progressed early (8.0-25.1 weeks) following initial vaccination," from Galbo Jr, et al.
Tailoring treatment for MALT lymphoma patients: where do we stand now?
Expert central review in lymphoma diagnosis. Is there a need?


text:
The CBD Solution
The CBD Opportunity
STERO Biotech's IP
STERO Biotechs - The Team
Mr. David Bassa - CEO
Mr. David Bassa is an experienced and prolific entrepreneur.
David owns a number of pharmaceutical and drug development companies. He led the first Cannabis pharma 'Exit' in Israel, founded & acted as CEO of Talent Biotech (until its sale), and other ventures. He's the main shareholder of 5 biotech or hi-tech startups. David has received two excellence awards from the president of Israel.
Mr. Ofer Alshech - CFO
An experienced CFO in public and private, multi-million and start-up companies with strong organizational skills and extensive experience in financial management. Ofer has vast experience in fundraising from private equity, private investors and leading IPOs. He also has a deep understanding of business drivers, risks and opportunities. For the past 8 years Ofer served as CFO at "Reshet 13".
Mr. Guy Defrin - COO
As an experienced COO Guy also Serves as the active COO of CannaLean Biotechs, CannaMore Biotechs, the biotech startup accelerator BioSeedXL and other companies in the pharmaceutical and Cannabis fields.
He holds a B.Sc. in Biology and Life Science at Tel Aviv University with a major in biochemistry research.
Dr. Sari Prutchi Sagiv - CSO
Dr Sagiv brings over 20 years of proven management experience in the fields of preclinical and clinical development, regulatory and intellectual property from the bio-tech industries. Has managed R&D in various cannabis companies including BOL, Kalytera and CannaMore.
Dr. Sagiv also manages the pharma and diagnostics department at Mor Research Applications, the Technology Transfer unit of 'CLALIT' Health Services.
Dr. Sagiv holds a MSc in Genetics, a PhD in Immunology and studied for an MBA at Tel Aviv University.
Dr. Moshe Yeshurun, MD – CTO
Specialist in Internal Medicine, Hematology and Bone Marrow Transplantation. Director of the Bone Marrow Transplantation Unit at Rabin Medical Center, Israel. The inventor of a CBD based drug and IP for treatment of GvHD, sold to publicly traded Kalytera Therapeutics (TSXV: KALY).
Dr. Naftali Timna, MD - IBD Medical Director
Deputy Director and Specialist in Gastroenterology and liver disease at Meir Hospital and CLALIT. She has extensive experience in both the IBD and Cannabis fields, including research and clinical trials with the collaboration of Tikun Olam.
Prof. Ronit Confino, MD - Urticaria Medical Director
Head of drug allergy service at the Allergy and Clinical Immunology Unit, Meir Medical Center.
Head of Allergy and Clinical Immunology Unit, Meir Medical Center.
CBD-based treatment solutions
STERO Biotechs Ltd., founded in 2017 and headquartered in Israel, is a clinical-stage company committed to the research and development of novel and improved Cannabidiol (CBD)-based treatment solutions that will potentially benefit millions of patients by reducing the side effects and the need of steroid therapy.
The company was established in partnership with 'Mor Research Applications'
the technology transfer unit of the Largest HMO in Israel – 'CLALIT' Health Services.
STERO Biotechs Ltd.
14-18 Baruch Hirsh,
Bnei Brak, 5120206, Israel.
Tel: (972) 3 617-6173
Fax: (972) 3 617 6647
E-mail: mail@sterobiotechs.com


text:
Konstantin Thon
Konstantin Andreyevich Thon, also spelled Ton (Russian: Константи́н Андре́евич Тон; October 26, 1794 – January 25, 1881) was an official architect of Imperial Russia during the reign of Nicholas I. His major works include the Cathedral of Christ the Saviour, the Grand Kremlin Palace and the Kremlin Armoury in Moscow.
Konstantin, born in St. Petersburg to the family of a German jeweller, was one of three Thon brothers who all rose to become notable architects. He studied at the Imperial Academy of Arts (1803–15) under the Empire Style architect Andrey Voronikhin, best remembered for his work on the Kazan Cathedral, situated right in the middle of the Nevsky Prospekt. He studied Italian art in Rome from 1819 to 1828, and on his return home was admitted to the academy as its member (1830) and professor (1833). In 1854, he was appointed rector of the architectural division of the academy.
Thon first attracted public attention with his sumptuous design for the interiors of the Academy building on the Neva embankment. In 1827, he submitted to the tsar his project of St Catherine church at the Obvodnyi Canal, the first ever design in the Russian Revival style. Nicholas I, who felt disaffected with the prevailing Neoclassicism of Russian architecture, remarked that "Russians have their own great art traditions and don't need to cringe before Rome". Thon's project was to become a revered model for other churches in St Petersburg and across Russia.
This page contains text from Wikipedia, the Free Encyclopedia -	https://wn.com/Konstantin_Thon
Thon may refer to:
Dickie Thon, Major League baseball player
Konstantin Thon, Russian architect
Nikolaos Thon, Greek businessman
Olaf Thon, German footballer
Olav Thon, Norwegian businessman
Ozjasz Thon, Polish rabbi
Daniel Thon, German businessman
Thon Buri, former capital of Thailand and a current district of Bangkok
Thon (mythology), a figure from Greek mythology
In the post-apocalyptic science-fiction novel A Canticle for Leibowitz, a "thon" is an academic rank similar to a "don" of today's oxonian and cantabrigian usage (also used elsewhere in academia).
In the Star Wars expanded universe, the ancient Jedi Master Thon
Thon Colin Films, a comedy film production company (UK) directed by Lemon Otter.
The Penn State IFC/Panhellenic Dance Marathon
"Thon", proposed third-person singular gender-neutral pronoun
Thon rammana, a pair of Thai and Cambodian drums.
-thon, a generic suffix, usually used for fundraising events like walk-a-thons or telethons, usually implying a long duration. Derived from marathon.
This page contains text from Wikipedia, the Free Encyclopedia -	https://wn.com/Thon
Latest News for: konstantin thon
The train station that saw two Tsar Nicholases and three Anna Kareninas
RBTH 17 May 2017
Scroll down to see more. Ruslan Shamukov. The first railroad in Russia appeared in 1837, linking St ... Architect Konstantin Thon built the Tsarskoselsky Station, which was Russia's first railway station, and which since 1936 has been called Vitebsky Station ... From time to time, musical concerts are held here ... kinopoisk.ru ... Ruslan Shamukov ... ....