text:
import { getLabwareDefURI } from '@opentrons/shared-data'
import { fixtureP10Single } from '@opentrons/shared-data/pipette/fixtures/name'
import fixture_12_trough from '@opentrons/shared-data/labware/fixtures/2/fixture_12_trough.json'
import fixture_96_plate from '@opentrons/shared-data/labware/fixtures/2/fixture_96_plate.json'
import {
  moveLiquidFormToArgs,
  getAirGapData,
  getMixData,
  type HydratedMoveLiquidFormData,
} from '../moveLiquidFormToArgs'
import {
  DEST_WELL_BLOWOUT_DESTINATION,
  SOURCE_WELL_BLOWOUT_DESTINATION,
} from '../../../../step-generation/utils'
import { getOrderedWells } from '../../../utils'
jest.mock('../../../utils')

const ASPIRATE_WELL = 'A2' // default source is trough for these tests
const DISPENSE_WELL = 'C3' // default dest in 96 flat for these tests

describe('move liquid step form -> command creator args', () => {
  let hydratedForm: ?HydratedMoveLiquidFormData = null
  const sourceLabwareDef = fixture_12_trough
  const sourceLabwareType = getLabwareDefURI(sourceLabwareDef)
  const destLabwareDef = fixture_96_plate
  const destLabwareType = getLabwareDefURI(destLabwareDef)
  beforeEach(() => {
    // $FlowFixMe: mock methods
    getOrderedWells.mockClear()
    // $FlowFixMe: mock methods
    getOrderedWells.mockImplementation(wells => wells)

    // the "base case" is a 1 to 1 transfer, single path
    hydratedForm = {
      stepType: 'moveLiquid',
      stepName: 'Test Step',
      description: null,

      fields: {
        pipette: {
          id: 'pipetteId',
          spec: fixtureP10Single,
        },
        volume: 10,
        path: 'single',
        changeTip: 'always',
        aspirate_labware: {
          id: 'sourceLabwareId',
          type: sourceLabwareType,
          def: sourceLabwareDef,
        },
        aspirate_wells: [ASPIRATE_WELL],
        aspirate_wellOrder_first: 'l2r',
        aspirate_wellOrder_second: 't2b',
        aspirate_flowRate: null,
        aspirate_mmFromBottom: null,
        aspirate_touchTip_checkbox: false,
        aspirate_touchTip_mmFromBottom: null,
        aspirate_mix_checkbox: false,
        aspirate_mix_volume: null,
        aspirate_mix_times: null,
        aspirate_delay_checkbox: false,
        aspirate_delay_seconds: null,
        aspirate_delay_mmFromBottom: null,

        dispense_labware: {
          id: 'destLabwareId',
          type: destLabwareType,
          def: destLabwareDef,
        },
        dispense_wells: [DISPENSE_WELL],
        dispense_wellOrder_first: 'r2l',
        dispense_wellOrder_second: 'b2t',
        dispense_flowRate: null,
        dispense_mmFromBottom: null,
        dispense_touchTip_checkbox: false,
        dispense_touchTip_mmFromBottom: null,
        dispense_mix_checkbox: false,
        dispense_mix_volume: null,
        dispense_mix_times: null,
        dispense_delay_checkbox: false,
        dispense_delay_seconds: null,
        dispense_delay_mmFromBottom: null,

        aspirate_wells_grouped: false,
        preWetTip: false,
        disposalVolume_checkbox: false,
        disposalVolume_volume: null,
        disposalVolume_location: null,
        blowout_checkbox: false,
        blowout_location: null,
      },
    }
  })

  it('moveLiquidFormToArgs calls getOrderedWells correctly', () => {
    moveLiquidFormToArgs(hydratedForm)

    expect(getOrderedWells).toHaveBeenCalledTimes(2)
    expect(getOrderedWells).toHaveBeenCalledWith(
      [ASPIRATE_WELL],
      sourceLabwareDef,
      'l2r',
      't2b'
    )
    expect(getOrderedWells).toHaveBeenCalledWith(
      [DISPENSE_WELL],
      destLabwareDef,
      'r2l',
      'b2t'
    )
  })

  it('moveLiquid form with 1:1 single transfer translated to args', () => {
    const result = moveLiquidFormToArgs(hydratedForm)

    expect(result).toMatchObject({
      pipette: 'pipetteId',
      volume: 10,
      changeTip: 'always',
      sourceLabware: 'sourceLabwareId',
      sourceWells: [ASPIRATE_WELL],
      destLabware: 'destLabwareId',
      destWells: [DISPENSE_WELL],
    })

    // no form-specific fields should be passed along
    Object.keys(result).forEach(field => {
      expect(field).toEqual(expect.not.stringMatching(/.*wellOrder.*/i))
      expect(field).toEqual(expect.not.stringMatching(/.*checkbox.*/i))
    })
  })

  const checkboxFieldCases = [
    // TOUCH TIPS
    {
      checkboxField: 'aspirate_touchTip_checkbox',
      formFields: { aspirate_touchTip_mmFromBottom: 101 },
      expectedArgsUnchecked: {
        touchTipAfterAspirate: false,
        touchTipAfterAspirateOffsetMmFromBottom: 101,
      },
      expectedArgsChecked: {
        touchTipAfterAspirate: true,
        touchTipAfterAspirateOffsetMmFromBottom: 101,
      },
    },
    {
      checkboxField: 'dispense_touchTip_checkbox',
      formFields: { dispense_touchTip_mmFromBottom: 42 },
      expectedArgsUnchecked: {
        touchTipAfterDispense: false,
        touchTipAfterDispenseOffsetMmFromBottom: 42,
      },
      expectedArgsChecked: {
        touchTipAfterDispense: true,
        touchTipAfterDispenseOffsetMmFromBottom: 42,
      },
    },
    // MIXES
    {
      checkboxField: 'aspirate_mix_checkbox',
      formFields: {
        aspirate_mix_volume: 5,
        aspirate_mix_times: 3,
      },
      expectedArgsUnchecked: { mixBeforeAspirate: null },
      expectedArgsChecked: { mixBeforeAspirate: { volume: 5, times: 3 } },
    },
    {
      checkboxField: 'dispense_mix_checkbox',
      formFields: {
        dispense_mix_volume: 5,
        dispense_mix_times: 3,
      },
      expectedArgsUnchecked: { mixInDestination: null },
      expectedArgsChecked: { mixInDestination: { volume: 5, times: 3 } },
    },
    // DELAYS
    {
      checkboxField: 'aspirate_delay_checkbox',
      formFields: {
        aspirate_delay_seconds: 11,
        aspirate_delay_mmFromBottom: 12,
      },
      expectedArgsUnchecked: { aspirateDelay: null },
      expectedArgsChecked: { aspirateDelay: { seconds: 11, mmFromBottom: 12 } },
    },
    {
      checkboxField: 'dispense_delay_checkbox',
      formFields: {
        dispense_delay_seconds: 11,
        dispense_delay_mmFromBottom: 12,
      },
      expectedArgsUnchecked: { dispenseDelay: null },
      expectedArgsChecked: { dispenseDelay: { seconds: 11, mmFromBottom: 12 } },
    },
    // AIRGAP
    {
      checkboxField: 'aspirate_airGap_checkbox',
      formFields: {
        aspirate_airGap_volume: 20,
      },
      expectedArgsUnchecked: { aspirateAirGapVolume: null },
      expectedArgsChecked: { aspirateAirGapVolume: 20 },
    },
  ]

  checkboxFieldCases.forEach(
    ({
      checkboxField,
      formFields,
      expectedArgsChecked,
      expectedArgsUnchecked,
    }) => {
      it(`${checkboxField} toggles dependent fields`, () => {
        expect(
          moveLiquidFormToArgs({
            ...hydratedForm,
            fields: {
              ...hydratedForm.fields,
              [checkboxField]: false,
              ...formFields,
            },
          })
        ).toMatchObject(expectedArgsUnchecked)

        expect(
          moveLiquidFormToArgs({
            ...hydratedForm,
            fields: {
              ...hydratedForm.fields,
              [checkboxField]: true,
              ...formFields,
            },
          })
        ).toMatchObject(expectedArgsChecked)
      })
    }
  )

  describe('distribute: disposal volume / blowout behaviors', () => {
    const blowoutLabwareId = 'blowoutLabwareId'
    const disposalVolumeFields = {
      path: 'multiDispense', // 'multiDispense' required to use `distribute` command creator
      blowout_location: blowoutLabwareId, // disposal volume uses `blowout_location` for the blowout
      disposalVolume_volume: 123,
      // NOTE: when spreading these in to hydratedForm fixture,
      // remember the blowout/disposalVolume checkboxes are false by default!
    }

    it('disposal volume works when checkbox true', () => {
      const result = moveLiquidFormToArgs({
        ...hydratedForm,
        fields: {
          ...hydratedForm.fields,
          ...disposalVolumeFields,
          disposalVolume_checkbox: true,
        },
      })

      expect(result).toMatchObject({
        disposalVolume: 123,
        disposalLabware: blowoutLabwareId,
        disposalWell: 'A1',
      })
    })

    it('disposal volume fields ignored when checkbox false', () => {
      const result = moveLiquidFormToArgs({
        ...hydratedForm,
        fields: {
          ...hydratedForm.fields,
          ...disposalVolumeFields,
          disposalVolume_checkbox: false,
        },
      })

      expect(result).toMatchObject({
        disposalVolume: null,
        disposalLabware: null,
        disposalWell: null,
      })
    })

    it('disposal volume overrides blowout', () => {
      const result = moveLiquidFormToArgs({
        ...hydratedForm,
        fields: {
          ...hydratedForm.fields,
          ...disposalVolumeFields,
          disposalVolume_checkbox: true,
          blowout_checkbox: true,
        },
      })

      expect(result).toMatchObject({
        disposalVolume: 123,
        disposalLabware: blowoutLabwareId,
        disposalWell: 'A1',
      })
    })

    it('fallback to blowout when disposal volume unchecked', () => {
      const result = moveLiquidFormToArgs({
        ...hydratedForm,
        fields: {
          ...hydratedForm.fields,
          ...disposalVolumeFields,
          disposalVolume_checkbox: false,
          blowout_checkbox: true,
        },
      })

      expect(result).toMatchObject({
        disposalVolume: null,
        disposalLabware: blowoutLabwareId,
        disposalWell: 'A1',
      })
    })

    it('blowout in source', () => {
      const result = moveLiquidFormToArgs({
        ...hydratedForm,
        fields: {
          ...hydratedForm.fields,
          ...disposalVolumeFields,
          blowout_checkbox: true,
          blowout_location: SOURCE_WELL_BLOWOUT_DESTINATION,
        },
      })

      expect(result).toMatchObject({
        disposalVolume: null,
        disposalLabware: 'sourceLabwareId',
        disposalWell: ASPIRATE_WELL,
      })
    })

    it('blowout in dest', () => {
      const result = moveLiquidFormToArgs({
        ...hydratedForm,
        fields: {
          ...hydratedForm.fields,
          ...disposalVolumeFields,
          blowout_checkbox: true,
          blowout_location: DEST_WELL_BLOWOUT_DESTINATION,
        },
      })

      expect(result).toMatchObject({
        disposalVolume: null,
        disposalLabware: 'destLabwareId',
        disposalWell: DISPENSE_WELL,
      })
    })
  })
})

describe('getMixData', () => {
  it('return null if checkbox field is false', () => {
    expect(
      getMixData(
        { checkboxField: false, volumeField: 30, timesField: 2 },
        'checkboxField',
        'volumeField',
        'timesField'
      )
    ).toBe(null)
  })

  it('return null if either number fields <= 0 / null', () => {
    const cases = [[0, 5], [null, 5], [10, 0], [10, null], [-1, 2], [2, -1]]

    cases.forEach(testCase => {
      const [volumeValue, timesValue] = testCase
      expect(
        getMixData(
          {
            checkboxField: true,
            volumeField: volumeValue,
            timesField: timesValue,
          },
          'checkboxField',
          'volumeField',
          'timesField'
        )
      ).toBe(null)
    })
  })

  it('return volume & times if checkbox is checked', () => {
    expect(
      getMixData(
        { checkboxField: true, volumeField: 30, timesField: 2 },
        'checkboxField',
        'volumeField',
        'timesField'
      )
    ).toEqual({ volume: 30, times: 2 })
  })
})

describe('getAirGapData', () => {
  it('should return null when the checkbox field is false', () => {
    expect(
      getAirGapData(
        { aspirate_airGap_checkbox: false, aspirate_airGap_volume: 20 },
        'aspirate_airGap_checkbox',
        'aspirate_airGap_volume'
      )
    ).toBe(null)
  })
  it('should return the air gap volume when the air gap checkbox is true', () => {
    expect(
      getAirGapData(
        { aspirate_airGap_checkbox: true, aspirate_airGap_volume: 20 },
        'aspirate_airGap_checkbox',
        'aspirate_airGap_volume'
      )
    ).toBe(20)
  })
})


text:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="ColorPrimary">#ffd50000</color>
    <color name="ColorPrimaryDark">#b71c1c</color>
    <color name="ColorAcent">#ffd50000</color>
</resources>

redpajama_set_name: RedPajamaGithub


text:
package com.legendshop.command.framework;

import java.io.Serializable;
import java.util.Map;
import org.springframework.beans.factory.BeanNameAware;

public abstract interface Command
{
  public abstract void init(String paramString)
    throws Exception;

  public abstract void execute(Map paramMap1, Map paramMap2)
    throws Exception;

  public abstract void fini()
    throws Exception;

  public abstract ErrorHandler getErrorHandler();

  public abstract String getBeanName();
}


text:
Gestione valori degli attributi

<?php

$query = "SELECT v.`_id` AS `ID`,
n.`name` AS `attributo`,
v.`value` AS `valore`
FROM `attributes_values` AS v
INNER JOIN `attributes_names` AS n
ON n.`_id` = v.`name_id`
WHERE v.`is_deleted`=0";

include_once BO . 'table_settings_form.php';
$actions = array('update' => 'Modifica attributo',
			     'delete' => 'Elimina');
$table = new Table($db, $table_name, $query, $actions);

echo $table->table();
include_once BO . 'pagination.php';


text:
**La semaine des contrats de chasse à la prime est de retour !** Traquez de dangereux criminels lors de cet événement récurrent qui commence le 17 mars à 12h (heure de Paris) et se termine le 24 mars à 12h (heure de Paris).

# Général
* Le deuxième choix de dialogue durant la conversation avec Jerwo Vhob sur Rishi n'apparaît désormais plus comme vierge en français et en allemand.
* La décoration "Colonne lumineuse Gree (bleue)" apparaît désormais correctement dans l'interface de décoration.
* De nombreuses montures ont été mises à jour afin de permettre aux montures de style similaire d'occuper les mêmes types de crochets dans les forteresses.
* La décoration "Moniteur d'énergie orbitale" a désormais 20 % de chances d'être conférée par le boss final des Chantiers Navals Kuat.
* Les décorations suivantes ont été ajoutées à la liste des marchands de décoration pour chasseur et JcJ de leurs factions respectives. Leur coût d'achat est de 5 projets obscurs et 5 préfabriqués universels Type 3 :
* Ordinateur de vaisseau : Empire (complet)
* Ordinateur de vaisseau : République (complet)
* De nombreuses Lames Nova sur Rishi emploient désormais les pistes audio appropriées.
* Le "Crabe côtier du sud" compte désormais pour l'obtention du succès "Faune de Rishi".
* Les succès obtenus en tuant le Commandant Mokan disposent désormais des icônes appropriées.
* L'intro cinématique à l'Ombre de Revan pour le Guerrier Sith a été mise à jour, de sorte que Vette apparaisse désormais revêtue de l'équipement que le joueur a sélectionné plutôt que de l'équipement par défaut.
* Les points de conquête sont désormais classés par valeur numérique dans l'interface de guilde plutôt que d'être classés par le premier chiffre.
* Les emotes suivantes proposent désormais une animation lorsqu'elles sont utilisées :
    * /esquiver
    * /regarder
    * /méditer
    * /observer
    * /lever
    * /tapoter

# Marché du cartel
* Les gantelets cybernétiques B-100 ne s'étirent désormais plus lorsque l'objet de repos et recharge Homme-orchestre est utilisé.
* Correction de multiples textures manquantes ou étirées présentes dans la coupe de cheveux "en pagaille".
* La coupe de cheveux "en pagaille" s'affiche désormais correctement sur tous les personnages féminins.
* Les objets "Emote : danse du ver de terre" et "Emote : shoot dans l'b..." affichent désormais correctement dans les collections qu'ils peuvent être achetés dans le pack Ombre d'acolyte.
* Les blasters de la Forge Stellaire RK-4, RK-5 et RK-6 ont été rappelés en usine et produisent désormais un son différent lorsqu'ils sont utilisés.
* Les ampoules de l'holoprojecteur de la décoration Planning de chasseur ont été remplacées. Il s'affiche désormais plus longtemps.
* La bure de Kreia s'affiche désormais correctement.

# Classes + Combat
##### Chevalier Jedi
Sentinelle
* La juste quête a été revue : la fente aux jambes immobilise la cible pendant 3 secondes. Cet effet d'immobilisation ne peut pas être appliqué plus d'une fois toutes les 10 secondes à la même cible.
* Les compétences d'habileté instabilité et méfiance ont été retirés du jeu.
* Nouvelle compétence d'habileté : portée bridante. La portée bridante augmente la portée de la fente aux jambes à 10 mètres et diminue son coût en Concentration de 2.
* Nouvelle compétence d'habileté : intransigeance. Génère 4 points de Concentration en cas d'étourdissement, d'immobilisation, de sommeil ou de renversement. De plus, le délai de réutilisation de la résolution est réduit de 30 secondes.
* La pénalité de santé de la Force nous garde a été retirée. De plus, le délai de réutilisation de base de la Force nous garde a été augmenté de 60 secondes.
* Le camouflage de Force confère désormais une immunité contre les effets de contrôle pendant toute sa durée. Infliger des dégâts directs met fin à cette immunité.
* L'infobulle de la fente aux jambes affiche désormais correctement la durée de l'effet de réduction de vitesse de déplacement.
* La compétence d'habileté formes défensives a été réparé et augmente désormais correctement la réduction de dégâts en forme Shii-Cho.

*Combat*

* L'infobulle de la tempête de sabre affiche désormais le bonus de dégâts de frappe critique correct.
* L'infobulle de la Force immaculée affiche désormais le nom correct du pouvoir de la classe.

##### Guerrier Sith
Maraudeur

* La compétence d'usage inéluctable a été revue : la fente invalidante immobilise la cible pendant 3 secondes. Cet effet d'immobilisation ne peut pas être appliqué plus d'une fois toutes les 10 secondes à la même cible.
* Les compétences d'habileté instabilité et inflexibilité ont été retirés du jeu.
* Nouvelle compétence d'habileté : portée mutilante. La portée mutilante augmente la portée de la fente invalidante à 10 m et diminue son coût en Rage de 2.
* Nouvelle compétence d'habileté : inexorabilité. Génère 4 points de Rage en cas d'étourdissement, d'immobilisation, de sommeil ou de renversement. De plus, le délai de réutilisation de la libération est réduit de 30 secondes.
* La pénalité de santé de la rage éternelle a été retirée. De plus, le délai de réutilisation de base de la rage éternelle a été augmenté de 60 secondes.
* Le camouflage de Force confère désormais une immunité contre les effets de contrôle pendant toute sa durée. Infliger des dégâts directs met fin à cette immunité.
* L'infobulle de la fente invalidante affiche désormais correctement la durée de l'effet de réduction de vitesse de déplacement.

##### Jedi Consulaire
Érudit

* L'alacrité métaphysique augmente désormais correctement la durée de la vitesse de Force.

Ombre

* Le déplacement phasique a désormais une durée de 10 minutes (au lieu de 5).
* La compétence d'habileté "l'esprit sur la matière" augmente désormais correctement la durée de la vitesse de Force.
* Le pouvoir passif "récupération rapide" confère désormais un bonus de regain de Force de +100 % à la tactique au sabre-laser à double lame, comme prévu.

##### Agent
Tireur d'élite

*Virulence*

* Les chances de coup critique de la cible amorphe affectent désormais l'abattage pendant toute sa durée.

##### Soldat
* Les tirs auto sont désormais une exclusivité de la classe avancée Commando et peuvent être appris au niveau 15.
* Le canon à impulsion peut désormais être appris au niveau 3 (au lieu du niveau 8) et la volée de mortier peut désormais être apprise au niveau 8 (au lieu du niveau 10).
* Les Soldats devraient rendre visite à leur entraîneur de classe afin de s'assurer qu'ils disposent des rangs les plus élevés pour tous les pouvoirs mentionnés plus haut.

Avant-garde

* Le délai d'activation du canon d'épaule a été augmenté à 1,5 seconde (au lieu de 0,5 seconde).
* Les dégâts du canon d'épaule ont été légèrement réduits.
* L'infobulle de l'électrobouclier a été corrigée afin d'indiquer qu'il n'inflige des dégâts de représailles que contre les dégâts directs, pas contre les dégâts réguliers.
* L'infobulle du canon d'épaule affiche désormais le délai de réutilisation correct entre deux tirs de missiles.

*Plasmatechnie*

* Dopé à l'adrénaline a été revu : tant que la montée d'adrénaline est active, votre réduction de dégâts augmente de 30 %. De plus, le délai de réutilisation de la montée d'adrénaline est réduit de 60 secondes.
* Les dégâts infligés par la frappe d'électrochocs et l'impulsion de feu ont été réduits.
* La pluie de feu a été revue : le canon a impulsion inflige 10 % de dégâts supplémentaires aux cibles en feu.
* Le barrage de plasma a été revu : l'impulsion de feu annule la consommation de cellules énergétiques de votre prochaine impulsion ionique ou de votre prochain afflux explosif. De plus, le canon à impulsion accable désormais les cibles qu'il touche. Les attaques de zone infligent 10 % de dégâts supplémentaires aux cibles accablées.
* L'assaut plasmatique augmente désormais le bonus critique de la plasmatisation de 30 %.
* L'allumage ionisé applique désormais correctement un effet de brûlure de cellule de plasma à toutes les cibles affectées.

*Maîtrise du bouclier*

* Le bouclier ionique a été revu : Augmente encore de 2 % la réduction de dégâts tant que la cellule ionique est active. De plus, le souffle d'énergie affecte jusqu'à 3 cibles ennemies supplémentaires dans un rayon de 5 m autour de la cible principale. N'inflige pas de dégâts aux ennemis endormis, soulevés ou en état d'incapacité.
* Le souffle d'énergie génère désormais 25 % d'animosité supplémentaire.

Commando

*Artillerie*

* Le tir de couverture ralentit désormais la vitesse de déplacement de la cible de 70 % pendant 3 secondes à chaque fois (au lieu de 2 secondes).

*Médecine de guerre*

* Correction d'un bug qui retirait l'effet de ralentissement des résidus de kolto de la bombe de kolto.

##### Chasseur de primes
* Le déchargement est désormais une exclusivité de la classe avancée Mercenaire et peut être appris au niveau 15.
* Le lance-flammes peut désormais être appris au niveau 3 (au lieu du niveau 8) et la mort venue du ciel peut désormais être apprise au niveau 8 (au lieu du niveau 10).
* Les Chasseurs de primes devraient rendre visite à leur entraîneur de classe afin de s'assurer qu'ils disposent des rangs les plus élevés pour tous les pouvoirs mentionnés plus haut.

Spécialiste

* Le délai d'activation du canon d'épaule a été augmenté à 1,5 seconde (au lieu de 0,5 seconde).
* Les dégâts du canon d'épaule ont été légèrement réduits.
* L'infobulle du pyro-bouclier a été corrigée afin d'indiquer qu'il n'inflige des dégâts de représailles que contre les dégâts directs, pas contre les dégâts réguliers.
* L'infobulle du canon d'épaule affiche désormais le délai de réutilisation correct entre deux tirs de missiles.

*Pyrotechnie*

* Défenses automatiques a été revu : tant que la surcharge de kolto est active, votre réduction des dégâts augmente de 30 %. De plus, le délai de réutilisation de la surcharge de kolto est réduit de 60 secondes.
* Les dégâts infligés par le poing enflammé et l'immolation ont été réduits.
* La pluie de feu a été revue : le lance-flammes inflige 10 % de dégâts supplémentaires aux cibles en feu.
* Le barrage de flammes a été revu : l'immolation supprime le dégagement de chaleur de votre prochaine rafale de flammes ou de votre prochain balayage de flammes. De plus, le lance-flammes accable les cibles qu'il touche. Les attaques de zone infligent 10 % de dégâts supplémentaires aux cibles accablées.
* Le pouvoir pyromane augmente désormais le bonus critique de l'incinération de 30 %.
* L'agent incendiaire instable applique désormais correctement un effet de brûlure de cylindre combustible à toutes les cibles affectées.

*Technique du bouclier*

* L'écran ionique a été revu : il augmente de 2 % supplémentaires la réduction de dégâts lorsque le cylindre ionique est actif. De plus, le souffle de chaleur affecte jusqu'à 3 cibles ennemies supplémentaires dans un rayon de 5 m autour de la cible principale. N'inflige pas de dégâts aux ennemis endormis, soulevés ou en état d'incapacité.
* Le souffle de chaleur génère désormais 25 % d'animosité supplémentaire.

Mercenaire

*Arsenal*

* Le feu entravant ralentit désormais la vitesse de déplacement de la cible de 70 % pendant 3 secondes à chaque fois (au lieu de 2 secondes).

# Zones litigieuses + Opérations
#####Les Ravageurs
* La santé de Torque a été diminuée en mode histoire 16 joueurs.
* Les zones de dégâts pour les attaques "Laser orbital" et "Explosion de missile" de l'escouade Bouclier 1 correspondent désormais plus à leurs indicateurs.
* L'infobulle du débuff "Saccage" ne fait plus référence au "Rocher".

##### Cauchemar venu d'ailleurs
* Les noyaux de données ne génèrent plus un nombre infini de droïdes.

##### Bataille de Rishi
* En mode difficile, les dégâts des ennemis normaux ont été diminués, avec un peu plus de zèle sur les ennemis "Forts".
* Rarrook ne lance plus une charge express sur les partenaires ou le droïde de soutien au combat GSI.
* Les dégâts des tirs auto (Rarrook), du tir suppressif (Marko Ka) et de la frappe furtive (Marko Ka) ont été réduits.
* Les dégâts de la frappe experte de Maître Obai et de la boule d'éclair du Seigneur Vodd ont été réduits (à la fois les dégâts à l'impact et les dégâts réguliers subséquents).
* Les dégâts des renforts ont été réduits durant la rencontre avec l'unité 1 de l'escouade Bouclier.
* La canalisation de "Recharger composé 9" du commandant Mokan ne s'interrompt plus si sa cible principale disparaît lors de sa rencontre en mode difficile.
* Le "composé 9" du commandant Mokan apparaît désormais en surbrillance en tant que débuff dissipable dans le cadre des débuffs.
* Les dégâts du "composé 9" et du "composé 17" ont été réduits.
* Les dégâts par attaque à distance du commandant Mokan ont été augmentés.
* Il n'est plus possible de récupérer des matériaux de confection sur les droïdes invoqués par Marko Ka.

##### Chasse sanglante
* Les joueurs de la République ne peuvent plus accéder au mode solo de Chasse sanglante de manière répétée.
* L'attaque "Catapultage" de Yustapir respecte à présent l'immunité au renversement d'un joueur.
* Jos et Valk Beroya ne campent plus sur leurs corniches dans certaines situations.
* Les joueurs repoussés hors de la plateforme en combattant Jos Beroya réapparaissent à présent au point de contrôle correct.
* Les joueurs, les partenaires et le droïde GSI ne sont plus capables de sauter jusqu'à Jos Beroya lorsqu'il est sur son perchoir.
* Kyramela Gemas'rugam se réinitialise désormais correctement s'il sort de la zone de combat en mode solo.
* Les krak'jyas et les traqueurs krak'jyas ne disposent plus d'une immunité de boss.

##### Profondeurs de Manaan
Mode difficile

* Les dégâts infligés par les ennemis normaux ont été réduits d'environ 20 %.
* Les dégâts infligés par le double lancer de sabre (Fanatiques de Shasa) et le tir embusqué (Tireurs d'élite du complexe) ont été encore réduits de 5 % (soit une réduction totale de 25 %). Ceci s'applique également aux fanatiques de Shasa qui apparaissent durant la rencontre avec Ortuno.
* Sairisi a été revu :
* Les dégâts totaux infligés par Sairisi durant la rencontre ont été légèrement réduits (d'environ 4 %).
* La santé des droïdes anti-émeute a été réduite (d'environ 5 %).
* La vitesse à laquelle s'auto-réparent les droïdes anti-émeute sous leur bouclier se dégrade désormais d'un tiers à chaque cycle du bouclier. Cela veut dire que la deuxième fois que les droïdes se cachent sous leur bouclier, ils se réparent à deux tiers de la vitesse normale, qu'à la troisième, ils se réparent à un tiers de la vitesse normale et qu'à la quatrième fois, ils cessent totalement de se réparer.
* Ortuno a été revu :
* La santé d'Ortuno a été réduite (d'environ 15 %).
* Les dégâts directs infligés par Ortuno ont été augmentés d'environ 10 % (sauf pour l'éruption énergétique).
* Les dégâts de l'éruption énergétique ont été réduits (d'environ 15 %).
* Stivastin a été revu :
* Les dégâts des droïdes gardiens du laboratoire ont été réduits de manière significative (- 25 %).
* La durée pendant laquelle les jets de flammes annulent la régénération de Stivastin a été augmentée à 36 secondes (au lieu de 30 secondes).
* Les dégâts infligés à Stivastin par les jets de flammes ont été augmentés de 20 %.
* La récompense en crédits pour le mode difficile des Profondeurs de Manaan a été augmentée pour les deux factions afin de correspondre à celles reçues pour les zones litigieuses équivalentes.

##### Assaut sur Tython
* Les dégâts de l'attaque Chute de pierres, utilisée durant la rencontre avec Maître Oric Traless / le Seigneur Goh dans Assaut sur Tython, s'affichent désormais au moment de l'impact.
* Durant le mode difficile d'Assaut sur Tython, les droïdes d'entrainement Type VII apparaissent désormais correctement comme des ennemis Forts et non plus Élite.
* Le pouvoir "Fente" du lieutenant Kreshin inflige désormais les dégâts corrects pendant le mode difficile d'Assaut sur Tython.
* La distance de la poussée de Force des commandants de l'Empire et de la République a été réduite.

##### Incursion sur Korriban
* L'augmentation de dégâts issue du pouvoir Zen du commandant de la République (boss bonus) est désormais identique à celle du commandant impérial en mode difficile.

##### L'héritage des Rakata
* La version impériale de L'héritage des Rakata en mode difficile confère désormais la même récompense en crédits que la version de la République.
* Des points de collision supplémentaires ont été ajoutés dans la zone entourant le prototype d'Armée infinie afin d'empêcher les joueurs d'éviter de se confronter aux mécanismes du boss.

##### Directive 7
* L'assassin de Mentor Bêta ne cède désormais plus son butin avant que tous les droïdes assassins aient été vaincus.

# Objets + Économie
* Le mode difficile des zones litigieuses niveau 60 et les opérations en mode histoire confèrent à présent de l'équipement Type 2 au lieu d'équipement Type 1.
* Le bonus d'ensemble conféré par l'équipement de 4 pièces de l'armure de maître de Force Dragon kell fonctionne désormais correctement pour les Érudits.
* L'injecteur de type médical a été ajouté au stock de Mnek, marchand de ferraille : matériaux prototypes.
* La capuche de la bure de seigneur de Force imposteur n'engendre plus de problèmes d'affichage avec les casques.
* Le casque de chasseur de têtes possède désormais un effet de modulation de la voix.
* Correction d'un problème d'affichage de l'armure corporelle de boltblaster des alliés dévoués qui engendrait une distorsion pendant la course.
* Correction des problèmes de distorsion sur les corps féminins pour les ensembles d'armure de révanite, d'imposteur, de roueur et de rempart.
* Les matériaux de confection suivants peuvent désormais être placés sur le réseau d'échange galactique :
* Exonium
* Transsubstantiateur de matière
* Le niveau des statistiques conférées par les objets suivants a été augmenté à la valeur appropriée :
* Motivateur Type 1 de guérisseur de Force de Yavin
* Motivateur Type 1 de guérisseur de Force imposteur
* Motivateur Type 1 de guérisseur de Force Massassi
* Le bas de bure en tissu Veda ne fait plus disparaître les jambes du personnage.
* Les créations de Cybernétique suivantes ont vu leurs valeurs réduites de manière significative afin d'être plus en conformité avec celles des autres créations :
* Pièces secondaires du front en frasium
* Pièces principales du front en frasium
* Pièces secondaires d'artilleur en frasium
* Pièces principales d'artilleur en frasium
* Moteur secondaire du front en frasium
* Moteur principal d'artilleur en frasium
* Moteur principal du front en frasium
* Moteur secondaire d'artilleur en frasium
* Noyau secondaire d'artilleur en frasium
* Noyau principal d'artilleur en frasium
* Capteur du front en frasium
* Noyau secondaire du front en frasium
* Noyau principal du front en frasium
* Capteur d'artilleur en frasium

# Missions + PNJ
* Les missions "Alliances forgées : 1ère partie" et "Alliances forgées : 2ème partie" sont maintenant disponibles au même niveau que "Prélude : l'Ombre de Revan". La progression sur ces missions a été réinitialisée.
* Sur Yavin 4, les critères d'accomplissement de la mission journalière "Sur le billot" ont été abaissés de 10 rôdeurs à 6. La progression sur cette mission a été réinitialisée.
* Correction d'un problème qui empêchait les joueurs de recevoir le nombre de crédits approprié pour la mission "L'ennemi qui vient de l'intérieur" lors d'une défaite durant la rencontre avec Revan dans le Temple de sacrifice.
* Les joueurs de la République progressent désormais correctement dans la mission "[HEBDOMADAIRE] Conflits galactiques" lorsqu'ils terminent le mode difficile de la Bataille de Rishi en passant par l'outil de recherche de groupe.
* Les zones litigieuses tactiques de niveau 55 comptent désormais pour l'accomplissement de la mission "[HEBDOMADAIRE] Zones litigieuses tactiques".
* Le coffre nécessaire pour l'accomplissement de la mission "Monnaie de singe-lézard" ne peut plus devenir inutilisable.
* Les voix françaises pour la mission de classe du Contrebandier de L'Ombre de Revan correspondent désormais à la traduction.
* Les Soldats qui ont terminé la zone litigieuse Profondeurs de Manaan voient désormais leur implication reconnue durant la mission "Escouade Éclipse".


text:
:sparkles: Welcome to Wooble's project, thanks for being here and for taking your time to contribute! :sparkles:

First off, I invite you to read the [whitepaper](https://github.com/woobleio/wooble/blob/master/doc/whitepaper.md) of Wooble.
You will learn everything you have to know before contributing.

# How to contribute?

Wooblizer is the part of the project for parsing the creation and which defines Wooble's API. The [Wooble platform](https://www.wooble.io) source code is private
but it uses Wooblizer as a dependency. If you're not sure your issue or suggestion is about the platform or Wooblizer, do not hesitate to post your issue here, I will
sort it out.

Wooble uses [Github issues](https://guides.github.com/features/issues/) to track bugs and to track suggestions or questions.

## Submitting bug report

* Use a __clear and descriptive__ title for the issue to identify the problem.
* Describe how you got the issue you want to report. If you encountered the issue by using Wooblizer, show the code that triggers the error, the engine you used,
your creations source code. If you encountered the issue by using the platform, be descriptive as possible, tell use which browser you use, which version and what
you did to encounter the issue.
* Explain which behavior you expected.

## Submitting suggestions

There is a [roadmap](https://github.com/woobleio/wooble/blob/master/doc/whitepaper.md#roadmap) that can give you an idea about what kind of new projects you could suggest and start if not already started!

* Describe which behavior you would like to see and tell us how it could benefit for the project.

Contact : jonathan@wooble.io


text:
<?xml version='1.0' encoding='UTF-8'?>
<com.cloudbees.plugins.credentials.SystemCredentialsProvider plugin="credentials@1.22">
  <domainCredentialsMap class="hudson.util.CopyOnWriteMap$Hash">
    <entry>
      <com.cloudbees.plugins.credentials.domains.Domain>
        <specifications/>
      </com.cloudbees.plugins.credentials.domains.Domain>
      <java.util.concurrent.CopyOnWriteArrayList>
        <com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl>
          <scope>GLOBAL</scope>
          <id>artifactory</id>
          <description>Artifactory Admin User</description>
          <username>admin</username>
          <password>password</password>
        </com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl>
        <com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey plugin="ssh-credentials@1.11">
          <scope>GLOBAL</scope>
          <id>50ff7d29-65eb-4396-9476-f823734a25af</id>
          <description></description>
          <username>admin</username>
          <passphrase>lMNOKgKXWKJwk6oT/wZiww==</passphrase>
          <privateKeySource class="com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$UsersPrivateKeySource"/>
        </com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey>
      </java.util.concurrent.CopyOnWriteArrayList>
    </entry>
  </domainCredentialsMap>
</com.cloudbees.plugins.credentials.SystemCredentialsProvider>


text:
namespace mozc {
namespace usage_stats {
typedef map<uint32, Stats::TouchEventStats> TouchEventStatsMap;

class UsageStats {
 public:
  // Updates count value
  // Increments val to current value
  static void IncrementCountBy(const string &name, uint32 val);
  static void IncrementCount(const string &name) {
    IncrementCountBy(name, 1);
  }

  // Updates timing value
  // Updates current value using given val
  static void UpdateTiming(const string &name, uint32 val);

  // Sets integer value
  // Replaces old value with val
  static void SetInteger(const string &name, int val);

  // Sets boolean value
  // Replaces old value with val
  static void SetBoolean(const string &name, bool val);

  // Returns true if given stats name is in the stats list
  // (for debugging)
  static bool IsListed(const string &name);

  // Stores virtual keyboard touch event stats.
  // The map "touch_stats" structure is as following
  //   (keyboard_name_01 : (source_id_1 : TouchEventStats,
  //                        source_id_2 : TouchEventStats,
  //                        source_id_3 : TouchEventStats),
  //    keyboard_name_02 : (source_id_1 : TouchEventStats,
  //                        source_id_2 : TouchEventStats,
  //                        source_id_3 : TouchEventStats))
  static void StoreTouchEventStats(
      const string &name, const map<string, TouchEventStatsMap> &touch_stats);

  // Synchronizes (writes) usage data into disk. Returns false on failure.
  static bool Sync();

  // Clears existing data exept for Integer and Boolean stats.
  static void ClearStats();

  // Clears all data.
  static void ClearAllStatsForTest();

  // NOTE: These methods are for unit tests.
  // Reads a value from registry, and sets it in the value.
  // Returns true if all steps go successfully.
  // NULL pointers are accetable for the target arguments of GetTimingForTest().
  static bool GetCountForTest(const string &name, uint32 *value);
  static bool GetIntegerForTest(const string &name, int32 *value);
  static bool GetBooleanForTest(const string &name, bool *value);
  static bool GetTimingForTest(const string &name,
                               uint64 *total_time,
                               uint32 *num_timings,
                               uint32 *avg_time,
                               uint32 *min_time,
                               uint32 *max_time);
  static bool GetVirtualKeyboardForTest(const string &name, Stats *stats);
  // This method doesn't check type of the stats.
  static bool GetStatsForTest(const string &name, Stats *stats);

 private:
  DISALLOW_IMPLICIT_CONSTRUCTORS(UsageStats);
};
}  // namespace usage_stats
}  // namespace mozc
#endif  // MOZC_USAGE_STATS_USAGE_STATS_H_


text:
<?php

namespace TestMigrations\Bundle\MainBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use TestMigrations\Bundle\MainBundle\Document\Monkey;

class DefaultController extends Controller
{
    /**
     * @Route("/hello/{name}")
     * @Template()
     */
    public function indexAction($name)
    {
        return array('name' => $name);
    }

    /**
     * @Route("/monkey/new/{name}")
     */
    public function newMonkeyAction($name)
    {
        $monkey = new Monkey();
        $monkey->setName($name);

        $dm = $this->getDocumentManager();
        $dm->persist($monkey);
        $dm->flush();

        return new Response(
            sprintf(
                'Created Monkey %s',
                $name
            )
        );
    }

    /**
     * @Route("/monkey/{name}")
     */
    public function findMonkeyAction($name)
    {
        $monkey = $this->createMonkeyQueryBuilder()
            ->field('name')->equals($name)
            ->getQuery()
            ->getSingleResult()
        ;

        if ($monkey) {
            $message = sprintf(
                '%s is monkeying around. [%s]',
                $monkey->getName(),
                $monkey->getId()
            );
        } else {
            $message = sprintf(
                '%s is nowhere to be found.',
                $name
            );
        }

        return new Response($message);
    }

    /**
     * @Route("/happy-monkeys")
     */
    public function happyMonkeysAction()
    {
        $monkeys = $this->createMonkeyQueryBuilder()
            ->field('isHappy')->equals(true)
            ->getQuery()
            ->execute()
            ->toArray()
        ;

        $names = array_map(function ($monkey) {
            return $monkey->getName();
        }, $monkeys);

        if (empty($names)) {
            return new Response('No monkeys are happy!  :(');
        }

        return new Response(
            implode(', ', $names)
        );
    }

    protected function createMonkeyQueryBuilder()
    {
        return $this->getDocumentManager()
            ->createQueryBuilder('TestMigrations\Bundle\MainBundle\Document\Monkey')
        ;
    }

    protected function getDocumentManager()
    {
        return $this->get('doctrine_mongodb')->getManager();
    }
}


text:
      <pages-sidebar (file)="handleFile($event)"></pages-sidebar>

          <music-search (query)="handleQuery($event)" (update)="handleUpdate($event)" [tracks]="filteredTracks"></music-search>

        <music-details [trackInfo]="trackInfo"></music-details>

      <music-player (random)="handleRandom($event)" (backward)="handleBackward()" (forward)="handleForward()" (pauseplay)="handlePausePlay()"
        (stop)="handleStop()" [paused]="paused"></music-player>
      <music-progress [current]="position" (seek)="handleSeek($event)" [elapsed]="elapsed" [total]="duration"></music-progress>

      <music-volume [muted]="muted" [volume]="gain" (muteUnmute)="handleMuteUnmute()" (gain)="handleGain($event)"></music-volume>

      <settings-general></settings-general>

    <button type="text" (click)="showDialog()" pButton icon="fa-external-link-square" label="Show"></button>

<music-footer></music-footer>


text:
package testmacro

object MacroCompatTests extends App {
  implicit class SymMinus(s: Symbol) {
    def -(f: => Unit): Unit = f
  }

  'noArgMethodTree - {
    val res = TestObj.foo
    assert(res == 23)
  }

  'oneArgMethodTree - {
    val res = TestObj.bar(23)
    assert(res == "bar")
  }

  'variadicMethodTree - {
    val res = TestObj.baz(1, 2, 3)
    assert(res == 13)
  }

  'genericMethodImplicitweakTypeTag - {
    val res = TestObj.quux( "foo" )
    assert(res == "foo")
  }

  'genericMethodExplicitweakTypeTag - {
    val res = TestObj.quuxExplicit( "foo" )
    assert(res == "foo")
  }

  'noArgMethodExpr - {
    val res = TestObj.fooE
    assert(res == 23)
  }

  'oneArgMethodExpr - {
    val res = TestObj.barE(23)
    assert(res == "bar")
  }

  'variadicMethodExpr - {
    val res = TestObj.bazE(1, 2, 3)
    assert(res == 13)
  }

  'noArgMethodCTree - {
    val res = TestObj.fooCT
    assert(res == 23)
  }

  'oneArgMethodCTree - {
    val res = TestObj.barCT(23)
    assert(res == "bar")
  }

  'variadicMethodCTree - {
    val res = TestObj.bazCT(1, 2, 3)
    assert(res == 13)
  }

  'symbolOf - {
    val res = TestObj.symbolOf(new Foo)
    assert(res == "class Foo")

    val res2 = TestObj.symbolOf(Foo)
    assert(res2 == "object Foo")

    val res3 = TestObj.symbolOf(new Bar)
    assert(res3 == "class Bar")

    val res4 = TestObj.symbolOf(Baz)
    assert(res4 == "object Baz")
  }

  'accessingCompanion - {
    val res = TestObj.comp(new Foo)
    assert(res == "testmacro.Foo.type")

    val res2 = TestObj.comp(Foo)
    assert(res2 == "testmacro.Foo")

    val res3 = TestObj.comp(new Bar)
    assert(res3 == "<notype>")

    val res4 = TestObj.comp(Baz)
    assert(res4 == "<notype>")
  }

  'accessingCompanionSymbol - {
    val res = TestObj.compSym(new Foo)
    assert(res == "object Foo")

    val res2 = TestObj.compSym(Foo)
    assert(res2 == "class Foo")

    val res3 = TestObj.compSym(new Bar)
    assert(res3 == "<none>")

    val res4 = TestObj.compSym(Baz)
    assert(res4 == "<none>")
  }

  'companionReference - {
    val res: Foo.type = TestObj.ref(new Foo)
    assert((res: Foo.type) eq Foo)

  }

  def typecheck: Unit = {
    TestObj.typecheck
  }

  def modifiers: Unit = {
    TestObj.modifiers
  }

  'untypecheck - {
    val res = TestObj.untypecheck(23)
    assert((res: Int) == 23)
  }

  def dealiasTypes: Unit = {
    type T = List[Int]
    TestObj.ensureOneTypeArg[T]
  }

  def freshName: Unit = {
    val nme = TestObj.freshName
  }

  def annotation: Unit = {
    class Annotation extends scala.annotation.StaticAnnotation
    @Annotation trait T

    val annTpe = TestObj.AnnotationType[T]
    val a = new Annotation
    val a0: annTpe.Ann = a
  }

  'implicitCandidate - {
    import TestObj.materialize
    val res = implicitly[List[String]]
    assert(res == List("materialize"))
  }

  def finalResultType: Unit = {
    TestObj.finalResultType
  }

  def dealiasTypeArgs: Unit = {
    TestObj.dealiasTypeArgs
  }
}

class Foo
object Foo

class Bar

object Baz


text:
package com.amazonaws.services.databasemigrationservice.model.transform;

import java.util.List;
import javax.annotation.Generated;

import com.amazonaws.SdkClientException;
import com.amazonaws.services.databasemigrationservice.model.*;

import com.amazonaws.protocol.*;
import com.amazonaws.annotation.SdkInternalApi;

/**
 * CreateEndpointRequestMarshaller
 */
@Generated("com.amazonaws:aws-java-sdk-code-generator")
@SdkInternalApi
public class CreateEndpointRequestMarshaller {

    private static final MarshallingInfo<String> ENDPOINTIDENTIFIER_BINDING = MarshallingInfo.builder(MarshallingType.STRING)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("EndpointIdentifier").build();
    private static final MarshallingInfo<String> ENDPOINTTYPE_BINDING = MarshallingInfo.builder(MarshallingType.STRING)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("EndpointType").build();
    private static final MarshallingInfo<String> ENGINENAME_BINDING = MarshallingInfo.builder(MarshallingType.STRING)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("EngineName").build();
    private static final MarshallingInfo<String> USERNAME_BINDING = MarshallingInfo.builder(MarshallingType.STRING).marshallLocation(MarshallLocation.PAYLOAD)
            .marshallLocationName("Username").build();
    private static final MarshallingInfo<String> PASSWORD_BINDING = MarshallingInfo.builder(MarshallingType.STRING).marshallLocation(MarshallLocation.PAYLOAD)
            .marshallLocationName("Password").build();
    private static final MarshallingInfo<String> SERVERNAME_BINDING = MarshallingInfo.builder(MarshallingType.STRING)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("ServerName").build();
    private static final MarshallingInfo<Integer> PORT_BINDING = MarshallingInfo.builder(MarshallingType.INTEGER).marshallLocation(MarshallLocation.PAYLOAD)
            .marshallLocationName("Port").build();
    private static final MarshallingInfo<String> DATABASENAME_BINDING = MarshallingInfo.builder(MarshallingType.STRING)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("DatabaseName").build();
    private static final MarshallingInfo<String> EXTRACONNECTIONATTRIBUTES_BINDING = MarshallingInfo.builder(MarshallingType.STRING)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("ExtraConnectionAttributes").build();
    private static final MarshallingInfo<String> KMSKEYID_BINDING = MarshallingInfo.builder(MarshallingType.STRING).marshallLocation(MarshallLocation.PAYLOAD)
            .marshallLocationName("KmsKeyId").build();
    private static final MarshallingInfo<List> TAGS_BINDING = MarshallingInfo.builder(MarshallingType.LIST).marshallLocation(MarshallLocation.PAYLOAD)
            .marshallLocationName("Tags").build();
    private static final MarshallingInfo<String> CERTIFICATEARN_BINDING = MarshallingInfo.builder(MarshallingType.STRING)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("CertificateArn").build();
    private static final MarshallingInfo<String> SSLMODE_BINDING = MarshallingInfo.builder(MarshallingType.STRING).marshallLocation(MarshallLocation.PAYLOAD)
            .marshallLocationName("SslMode").build();
    private static final MarshallingInfo<String> SERVICEACCESSROLEARN_BINDING = MarshallingInfo.builder(MarshallingType.STRING)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("ServiceAccessRoleArn").build();
    private static final MarshallingInfo<String> EXTERNALTABLEDEFINITION_BINDING = MarshallingInfo.builder(MarshallingType.STRING)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("ExternalTableDefinition").build();
    private static final MarshallingInfo<StructuredPojo> DYNAMODBSETTINGS_BINDING = MarshallingInfo.builder(MarshallingType.STRUCTURED)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("DynamoDbSettings").build();
    private static final MarshallingInfo<StructuredPojo> S3SETTINGS_BINDING = MarshallingInfo.builder(MarshallingType.STRUCTURED)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("S3Settings").build();
    private static final MarshallingInfo<StructuredPojo> DMSTRANSFERSETTINGS_BINDING = MarshallingInfo.builder(MarshallingType.STRUCTURED)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("DmsTransferSettings").build();
    private static final MarshallingInfo<StructuredPojo> MONGODBSETTINGS_BINDING = MarshallingInfo.builder(MarshallingType.STRUCTURED)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("MongoDbSettings").build();
    private static final MarshallingInfo<StructuredPojo> KINESISSETTINGS_BINDING = MarshallingInfo.builder(MarshallingType.STRUCTURED)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("KinesisSettings").build();
    private static final MarshallingInfo<StructuredPojo> KAFKASETTINGS_BINDING = MarshallingInfo.builder(MarshallingType.STRUCTURED)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("KafkaSettings").build();
    private static final MarshallingInfo<StructuredPojo> ELASTICSEARCHSETTINGS_BINDING = MarshallingInfo.builder(MarshallingType.STRUCTURED)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("ElasticsearchSettings").build();
    private static final MarshallingInfo<StructuredPojo> NEPTUNESETTINGS_BINDING = MarshallingInfo.builder(MarshallingType.STRUCTURED)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("NeptuneSettings").build();
    private static final MarshallingInfo<StructuredPojo> REDSHIFTSETTINGS_BINDING = MarshallingInfo.builder(MarshallingType.STRUCTURED)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("RedshiftSettings").build();
    private static final MarshallingInfo<StructuredPojo> POSTGRESQLSETTINGS_BINDING = MarshallingInfo.builder(MarshallingType.STRUCTURED)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("PostgreSQLSettings").build();
    private static final MarshallingInfo<StructuredPojo> MYSQLSETTINGS_BINDING = MarshallingInfo.builder(MarshallingType.STRUCTURED)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("MySQLSettings").build();
    private static final MarshallingInfo<StructuredPojo> ORACLESETTINGS_BINDING = MarshallingInfo.builder(MarshallingType.STRUCTURED)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("OracleSettings").build();
    private static final MarshallingInfo<StructuredPojo> SYBASESETTINGS_BINDING = MarshallingInfo.builder(MarshallingType.STRUCTURED)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("SybaseSettings").build();
    private static final MarshallingInfo<StructuredPojo> MICROSOFTSQLSERVERSETTINGS_BINDING = MarshallingInfo.builder(MarshallingType.STRUCTURED)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("MicrosoftSQLServerSettings").build();
    private static final MarshallingInfo<StructuredPojo> IBMDB2SETTINGS_BINDING = MarshallingInfo.builder(MarshallingType.STRUCTURED)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("IBMDb2Settings").build();
    private static final MarshallingInfo<String> RESOURCEIDENTIFIER_BINDING = MarshallingInfo.builder(MarshallingType.STRING)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("ResourceIdentifier").build();
    private static final MarshallingInfo<StructuredPojo> DOCDBSETTINGS_BINDING = MarshallingInfo.builder(MarshallingType.STRUCTURED)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("DocDbSettings").build();
    private static final MarshallingInfo<StructuredPojo> REDISSETTINGS_BINDING = MarshallingInfo.builder(MarshallingType.STRUCTURED)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("RedisSettings").build();
    private static final MarshallingInfo<StructuredPojo> GCPMYSQLSETTINGS_BINDING = MarshallingInfo.builder(MarshallingType.STRUCTURED)
            .marshallLocation(MarshallLocation.PAYLOAD).marshallLocationName("GcpMySQLSettings").build();

    private static final CreateEndpointRequestMarshaller instance = new CreateEndpointRequestMarshaller();

    public static CreateEndpointRequestMarshaller getInstance() {
        return instance;
    }

    /**
     * Marshall the given parameter object.
     */
    public void marshall(CreateEndpointRequest createEndpointRequest, ProtocolMarshaller protocolMarshaller) {

        if (createEndpointRequest == null) {
            throw new SdkClientException("Invalid argument passed to marshall(...)");
        }

        try {
            protocolMarshaller.marshall(createEndpointRequest.getEndpointIdentifier(), ENDPOINTIDENTIFIER_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getEndpointType(), ENDPOINTTYPE_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getEngineName(), ENGINENAME_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getUsername(), USERNAME_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getPassword(), PASSWORD_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getServerName(), SERVERNAME_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getPort(), PORT_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getDatabaseName(), DATABASENAME_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getExtraConnectionAttributes(), EXTRACONNECTIONATTRIBUTES_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getKmsKeyId(), KMSKEYID_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getTags(), TAGS_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getCertificateArn(), CERTIFICATEARN_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getSslMode(), SSLMODE_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getServiceAccessRoleArn(), SERVICEACCESSROLEARN_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getExternalTableDefinition(), EXTERNALTABLEDEFINITION_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getDynamoDbSettings(), DYNAMODBSETTINGS_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getS3Settings(), S3SETTINGS_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getDmsTransferSettings(), DMSTRANSFERSETTINGS_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getMongoDbSettings(), MONGODBSETTINGS_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getKinesisSettings(), KINESISSETTINGS_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getKafkaSettings(), KAFKASETTINGS_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getElasticsearchSettings(), ELASTICSEARCHSETTINGS_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getNeptuneSettings(), NEPTUNESETTINGS_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getRedshiftSettings(), REDSHIFTSETTINGS_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getPostgreSQLSettings(), POSTGRESQLSETTINGS_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getMySQLSettings(), MYSQLSETTINGS_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getOracleSettings(), ORACLESETTINGS_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getSybaseSettings(), SYBASESETTINGS_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getMicrosoftSQLServerSettings(), MICROSOFTSQLSERVERSETTINGS_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getIBMDb2Settings(), IBMDB2SETTINGS_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getResourceIdentifier(), RESOURCEIDENTIFIER_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getDocDbSettings(), DOCDBSETTINGS_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getRedisSettings(), REDISSETTINGS_BINDING);
            protocolMarshaller.marshall(createEndpointRequest.getGcpMySQLSettings(), GCPMYSQLSETTINGS_BINDING);
        } catch (Exception e) {
            throw new SdkClientException("Unable to marshall request to JSON: " + e.getMessage(), e);
        }
    }

}


text:
package fiftyfive.wicket.js;

import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import fiftyfive.util.Assert;
import fiftyfive.wicket.js.locator.DefaultJavaScriptDependencyLocator;
import fiftyfive.wicket.js.locator.JavaScriptDependencyLocator;
import fiftyfive.wicket.js.locator.SearchLocation;
import org.apache.wicket.Application;
import org.apache.wicket.MetaDataKey;
import org.apache.wicket.ResourceReference;
import org.apache.wicket.markup.html.resources.CompressedResourceReference;
import org.apache.wicket.markup.html.resources.JavascriptResourceReference;
import org.apache.wicket.util.time.Duration;

/**
 * Settings that affect how JavaScript dependencies are located. To obtain an
 * instance, use the static {@link #get get()} method.
 *

 * Most applications using out-of-the-box JavaScript widgets will be served
 * well by the default settings. However there are three important scenarios
 * to consider:
 *

 *
If your application already has a mechanism for including jQuery
 *     and/or jQuery UI in the <head> (e.g. via your base page),
 *     then you should take care that fiftyfive-wicket-js is not including its
 *     own copies of these libraries. In this scenario, call
 *     {@link #setJQueryResource setJQueryResource()} and
 *     {@link #setJQueryUIResource setJQueryUIResource()} with references to
 *     the files that your application is already using (or {@code null},
 *     if you don't want fiftyfive-wicket-js to manage these resources at all).
 *

 *
If you have your own library of custom JavaScript files,
 *     consider placing those files inside your classpath, and then use
 *     {@link #addLibraryPath addLibraryPath()} to make fiftyfive-wicket-js
 *     aware of them. Then you can use the angle-bracket dependency syntax
 *     or the single argument constructor for
 *     {@link JavaScriptDependency JavaScriptDependency}, and those files will
 *     be found automatically.

 *
If you'd like to change the jQuery UI CSS theme, call
 *     {@link #setJQueryUICSSResource setJQueryUICSSResource()} with a
 *     reference to the desired CSS file, or {@code null} if you don't want
 *     fiftyfive-wicket-js to manage this for you.

 *

 *
 * @since 2.0
 */
public class JavaScriptDependencySettings
{
    private static final MetaDataKey<JavaScriptDependencySettings> SETTINGS_KEY
        = new MetaDataKey<JavaScriptDependencySettings>() {};

    private Application _app;
    private List<SearchLocation> _locations;
    private ResourceReference _jQueryResource;
    private ResourceReference _jQueryUIResource;
    private ResourceReference _jQueryUICSSResource;
    private Duration _traversalCacheDuration;
    private String _encoding;
    private JavaScriptDependencyLocator _locator;

    /**
     * Returns the JavaScriptDependencySettings associated with the current
     * Wicket Application, creating a new default settings object if one does
     * not yet exist. This method can only be called within a Wicket thread.
     */
    public static JavaScriptDependencySettings get()
    {
        Application app = Application.get();
        if(null == app)
        {
            throw new IllegalStateException(
                "No thread-local Wicket Application object was found. " +
                "JavaScriptDependencySettings.get() can only be called " +
                "within a Wicket request."
            );
        }
        JavaScriptDependencySettings settings = app.getMetaData(SETTINGS_KEY);
        if(null == settings)
        {
            settings = new JavaScriptDependencySettings(app);
            app.setMetaData(SETTINGS_KEY, settings);
        }
        return settings;
    }

    /**
     * Constructs a settings object for the given application with a reasonable
     * set of defaults.
     */
    protected JavaScriptDependencySettings(Application app)
    {
        super();
        _app = app;
        _locator = new DefaultJavaScriptDependencyLocator();

        _locations = new ArrayList<SearchLocation>();

        Class<?> c = JavaScriptDependencySettings.class;
        addLibraryPath(c, "");
        addLibraryPath(c, "lib/cookies");
        addLibraryPath(c, "lib/fiftyfive-utils");
        addLibraryPath(c, "lib/jquery-scrollto-1.4.2");
        addLibraryPath(c, "lib/strftime");

        _jQueryResource = new JavascriptResourceReference(
            JavaScriptDependencySettings.class,
            "lib/jquery-1.6.2/jquery.noconflict.min.js"
        );
        _jQueryUIResource = new JavascriptResourceReference(
            JavaScriptDependencySettings.class,
            "lib/jquery-ui-1.8.14/jquery-ui.min.js"
        );
        _jQueryUICSSResource = new CompressedResourceReference(
            JavaScriptDependencySettings.class,
            "lib/jquery-ui-1.8.14/themes/redmond/jquery-ui-1.8.14.redmond.css"
        );
    }

    /**
     * Returns the JavaScriptDependencyLocator for this application.
     */
    public JavaScriptDependencyLocator getLocator()
    {
        return _locator;
    }

    /**
     * Sets the JavaScriptDependencyLocator that should be used for this
     * application. By default this is
     * {@link DefaultJavaScriptDependencyLocator}.
     *
     * @return {@code this} to allow chaining
     */
    public JavaScriptDependencySettings setLocator(JavaScriptDependencyLocator loc)
    {
        Assert.notNull(loc);
        this._locator = loc;
        return this;
    }

    /**
     * Returns the list of classpath locations that will be used to find
     * JavaScript libraries.
     */
    public List<SearchLocation> getLibraryPaths()
    {
        return Collections.unmodifiableList(_locations);
    }

    /**
     * Adds a classpath location to be used for locating JavaScript libraries.
     * A default list of locations from the fiftyfive-wicket-js JAR contains
     * jQuery, jQuery UI, cookies, fiftyfive-utils, jquery-scrollto and
     * strftime.
     * Call this method if you wish to add more libraries to this list, or if
     * you want your versions of the previously mentioned libraries to take
     * precedence. The paths that you add will be consulted before the
     * defaults.
     *

     * Library paths are searched whenever you use the angle-bracket syntax
     * for JavaScript dependencies, like this:
     *

     * //= require <libraryname>

     *

     * Or when you use
     * {@link JavaScriptDependency#JavaScriptDependency(String)} or
     * {@link MergedJavaScriptBuilder#addLibrary(String)}.
     *
     * @return {@code this} to allow chaining
     */
    public JavaScriptDependencySettings addLibraryPath(Class<?> cls, String path)
    {
        _locations.add(0, new SearchLocation(cls, path));
        return this;
    }

    /**
     * Returns the ResourceReference for the jQuery JavaScript file.
     */
    public ResourceReference getJQueryResource()
    {
        return _jQueryResource;
    }

    /**
     * Sets the ResourceReference of the jQuery JavaScript file that should
     * be used whenever the dependency locator determines that jQuery is
     * needed. Pass {@code null} if you do not want the framework to include
     * jQuery automatically.
     * By default this refers to a copy of jQuery bundled in the
     * fiftyfive-wicket-js JAR.
     *
     * @return {@code this} to allow chaining
     */
    public JavaScriptDependencySettings setJQueryResource(ResourceReference r)
    {
        this._jQueryResource = r;
        return this;
    }

    /**
     * Returns the ResourceReference for the jQuery UI JavaScript file.
     */
    public ResourceReference getJQueryUIResource()
    {
        return _jQueryUIResource;
    }

    /**
     * Sets the ResourceReference of the jQuery UI JavaScript file that should
     * be used whenever the dependency locator determines that jQuery UI is
     * needed. Pass {@code null} if you do not want the framework to include
     * jQuery UI automatically.
     * By default this refers to a copy of jQuery UI bundled in the
     * fiftyfive-wicket-js JAR.
     *
     * @return {@code this} to allow chaining
     */
    public JavaScriptDependencySettings setJQueryUIResource(ResourceReference r)
    {
        this._jQueryUIResource = r;
        return this;
    }

    /**
     * Returns the ResourceReference for the jQuery UI CSS theme file.
     */
    public ResourceReference getJQueryUICSSResource()
    {
        return _jQueryUICSSResource;
    }

    /**
     * Sets the ResourceReference of the jQuery UI CSS theme file that should
     * be used whenever the dependency locator determines that jQuery UI is
     * needed. Pass {@code null} if you do not want the framework to include
     * jQuery UI CSS automatically.
     * By default this refers to a copy of jQuery UI "redmond" theme bundled
     * in the fiftyfive-wicket-js JAR.
     *
     * @return {@code this} to allow chaining
     */
    public JavaScriptDependencySettings setJQueryUICSSResource(ResourceReference r)
    {
        this._jQueryUICSSResource = r;
        return this;
    }

    /**
     * Returns the duration that JavaScript dependency traversal results
     * (i.e. the tree of dependencies as determined by parsing sprockets
     * directives) are allowed to be stored in cache.
     */
    public Duration getTraversalCacheDuration()
    {
        // Interpret null based on application mode
        if(null == _traversalCacheDuration)
        {
            if(Application.DEPLOYMENT.equals(_app.getConfigurationType()))
            {
                // Cache indefinitely
                return Duration.MAXIMUM;
            }
            // Disable cache
            return Duration.NONE;
        }
        return _traversalCacheDuration;
    }

    /**
     * Sets the duration that JavaScript dependency traversal results
     * (i.e. the tree of dependencies as determined by parsing sprockets
     * directives) are allowed to be stored in cache.
     *

     * If this is set to {@code null} (the default), at runtime this will be
     * interpreted as a value of zero (cache disabled) if the application is
     * in development mode, and will be interpreted as the maximum duration
     * (effectively indefinite) if the application is in deployment mode.
     *
     * @return {@code this} to allow chaining
     */
    public JavaScriptDependencySettings setTraversalCacheDuration(Duration d)
    {
        this._traversalCacheDuration = d;
        return this;
    }

    /**
     * Returns the character encoding that will be used when parsing
     * JavaScript files.
     */
    public String getEncoding()
    {
        if(null == _encoding)
        {
            String enc = _app.getMarkupSettings().getDefaultMarkupEncoding();
            if(null == enc)
            {
                enc = Charset.defaultCharset().name();
            }
            return enc;
        }
        return _encoding;
    }

    /**
     * Sets the character encoding that will be used when parsing
     * JavaScript files. If this is set to {@code null} (the default), then
     * Wicket's markup encoding setting will be used.
     *
     * @return {@code this} to allow chaining
     * @see org.apache.wicket.settings.IMarkupSettings#getDefaultMarkupEncoding()
     */
    public JavaScriptDependencySettings setEncoding(String encoding)
    {
        this._encoding = encoding;
        return this;
    }
}


text:
package main

import (
	"runtime"
	"runtime/debug"
	"sync/atomic"
)

func init() {
	register("AsyncPreempt", AsyncPreempt)
}

func AsyncPreempt() {
	// Run with just 1 GOMAXPROCS so the runtime is required to
	// use scheduler preemption.
	runtime.GOMAXPROCS(1)
	// Disable GC so we have complete control of what we're testing.
	debug.SetGCPercent(-1)

	// Start a goroutine with no sync safe-points.
	var ready, ready2 uint32
	go func() {
		for {
			atomic.StoreUint32(&ready, 1)
			dummy()
			dummy()
		}
	}()
	// Also start one with a frameless function.
	// This is an especially interesting case for
	// LR machines.
	go func() {
		atomic.AddUint32(&ready2, 1)
		frameless()
	}()
	// Also test empty infinite loop.
	go func() {
		atomic.AddUint32(&ready2, 1)
		for {
		}
	}()

	// Wait for the goroutine to stop passing through sync
	// safe-points.
	for atomic.LoadUint32(&ready) == 0 || atomic.LoadUint32(&ready2) < 2 {
		runtime.Gosched()
	}

	// Run a GC, which will have to stop the goroutine for STW and
	// for stack scanning. If this doesn't work, the test will
	// deadlock and timeout.
	runtime.GC()

	println("OK")
}

//go:noinline
func frameless() {
	for i := int64(0); i < 1<<62; i++ {
		out += i * i * i * i * i * 12345
	}
}

var out int64

//go:noinline
func dummy() {}


text:
                <button ng-click="triggerAction('six')" value="{{'CLICK_ME' | translate}}" />
                <button value="{{ 'CLICK_ME'|translate }}" />

            <input type="text" ng-model="data.firstname" maxlength="{{maxlength}}">

                    <input type="text" ng-model="item.name + ' ' + user.wantsData()" ng-change="triggerAction('five')">
                    {{$index + 1}}
                    {{$first ? "first" : "not first!"}}

                The max length is {{maxlength | formatNumber: 'hex'}}.

                Recursive expression parsing result: {{ boolean1 && !boolean2 || boolean3 }}
                Some complex expression parsed: {{ 'a' + 2 + 'b' }}
                Some complex expression parsed: {{ user + '/' + user }}
                Complex ternary operator: {{ 'a' === user.wantsData() ? 'equal' : 'not equal'  }}
                Nested ternary operator: {{ boolean1 ? 'str a' : boolean2 ? 'str b' : 'str c' }}
                Nested ternary operator variant 2: {{ !boolean1 ? boolean2 ? 'str b' : 'str c' : 'str a'  }}
                {{(card.storedValue/100).toFixed(2)}}
                Limited string: {{ "brown fox jumps over the lazy dog" | limitTo: 10 }}
                Limited array: {{ data.groups | limitTo: 3 }}

                ng-model="should.not-match"

                This {{group}} should be taken from the local variable, not from the scope.

                k should be a string {{k.replaceAll("","")}}, v should be an int {{v+=1}}.

            This {{group}} should be taken from the scope, not as a local variable.

            <ui-select close-on-select="true" style="width: 200px"
                       class="control-label" ng-model="data" style="width: 300px;">
                <ui-select-choices
                    repeat="subtype in data.groups| orderBy: 'nameAndCountry'">
                    {{subtype.name}}
                </ui-select-choices>
                <ui-select-match placeholder="- NONE -">
                    {{$select.selected.firstname}} {{$item.firstname}}
                </ui-select-match>
            </ui-select>
           <select ng-options="item.subItem as item.label for item in data.groups | orderBy:'labelSort'" ng-model="user"></select>
           <select ng-options="item.subItem | translate for item in data.groups track by item.id" ng-model="user"></select>

Settings Div

Home Span

default

               {{curGrp.name}}

           <ui-select multiple ng-model="editObject.assignedUserTypes" style="width: 100%;" name="userTypes">
               <ui-select-choices repeat="user.typeId as user in itemsData.activeUserTypes | filter: {desc: $select.search, combinedUser:false}">
                   {{user.desc}}
               </ui-select-choices>
               <ui-select-match placeholder="Select User Type">{{item.desc}}</ui-select-match>
           </ui-select>
           <select ng-options="status.name as (status.name | translate) for status in adminStatusList"></select>
           {{actualConfigs[cfg.type] === "1" ? cfg.configs.test : (actualConfigs[cfg.type] === "0" ? cfg.configs.fleet : '')}}


text:
only for test !!!!
branch dev1
test merge
test push
test push modify


text:
{
	row: [
		[
			{
				name: 'Arcane Weaponry I',
				type: '[Weapon Attacks]',
				desc: 'Unlocks Charge special attacks for the Staff and Chakrams.',
				reqAbility: false,
				reqAbility1: 0,
				reqAbility2: 0,
				requires: '',
				descAdv: [
					'Unlocks Charge special attacks for the Staff and Chakrams and decreases the cost of Sceptre attacks from 6% of your Mana to 5%. Charged Entropy - Charges the Staff before slamming it into the ground and releasing a radial area of effect attack, can be quick charged for a point blank, held for (1 flash) for short range or held (2 flashes) for longer range and more damage. Maelstrom - Charges the Chakrams then releases them to orbit the character in an increasing radius area of effect attack, can be quick charged for a very short, single chakram throw, held for (1 flash) for short range or held (2 flashes) for longer range and more damage.',
					'Charged Entropy and Maelstrom apply an additional damage over time effect.',
					'Charged Entropy and Maelstrom generate extra Fate'
				],
				maxLevel: 3,
				currentLevel: 0,
				requiresPoint: 0
			},
			{
				name: 'Sceptre Mastery',
				type: '[Passive]',
				desc: 'Long hours of study and practice enable you to wield Sceptres very effectively. Adds Physical Damage to Sceptres and an overall Sceptre damage boost.',
				reqAbility: false,
				reqAbility1: 0,
				reqAbility2: 0,
				requires: '',
				descAdv: [
					'Physical Damage with Sceptres: +2, Bonus Damage with Sceptres: +5%',
					'Physical Damage with Sceptres: +3, Bonus Damage with Sceptres: +10%',
					'Physical Damage with Sceptres: +4, Bonus Damage with Sceptres: +15%',
					'Physical Damage with Sceptres: +6, Bonus Damage with Sceptres: +20%',
					'Physical Damage with Sceptres: +8, Bonus Damage with Sceptres: +25%',
					'Physical Damage with Sceptres: +10, Bonus Damage with Sceptres: +30%'
				],
				maxLevel: 6,
				currentLevel: 0,
				requiresPoint: 0
			},
			{
				name: 'Storm Bolt',
				type: '[Active]',
				desc: 'Launch a burst of electrical energy which deals Lightning and Shocking Damage. At higher levels, it can Stun enemies. At level 4, Storm Bolt gains a Shocking Damage AoE on impact.',
				reqAbility: false,
				reqAbility1: 0,
				reqAbility2: 0,
				requires: '',
				descAdv: [
					'Lightning Damage: 40, Chance to Stun: 0%, Stun Duration: 0 sec, Area Shocking Damage: 0, Mana Cost: 20',
					'Lightning Damage: 50, Chance to Stun: 0%, Stun Duration: 0 sec, Area Shocking Damage: 0, Mana Cost: 23',
					'Lightning Damage: 60, Chance to Stun: 20%, Stun Duration: 3 sec, Area Shocking Damage: 0, Mana Cost: 26',
					'Lightning Damage: 70, Chance to Stun: 25%, Stun Duration: 4 sec, Area Shocking Damage: 12, Mana Cost: 29',
					'Lightning Damage: 80, Chance to Stun: 30%, Stun Duration: 4 sec, Area Shocking Damage: 15, Mana Cost: 32',
					'Lightning Damage: 90, Chance to Stun: 35%, Stun Duration: 4 sec, Area Shocking Damage: 18, Mana Cost: 35'
				],
				maxLevel: 6,
				currentLevel: 0,
				requiresPoint: 0
			}
		],
		[
			{
				name: 'Arcane Weaponry II',
				type: '[Weapon Attacks]',
				desc: '',
				reqAbility: true,
				reqAbility1: 0,
				reqAbility2: 0,
				requires: 'Requires 5 points in Sorcery abilities, Requires Arcane Weaponry I',
				descAdv: [
					'Unlocks special attacks from Block for the Staff and Sceptre and decreases the cost of Sceptre attacks from 5% of your Mana to 4%. Mage\'s Vortex - Attack with your staff while holding Block to summon a small tornado at the feet of enemies in front of you while you take a spinning step backwards. Warding Blast - Press Attack while holding Block to perform a Sceptre blast that launches an enemy followed by a short ranged "shielding" attack while stepping forward slightly. Needs to be channeled to launch enemies up and away, otherwise it simply damages.',
					'Mage\'s Vortex and Warding Blast apply an additional damage over time effect.',
					'Mage\'s Vortex and Warding Blast generate extra Fate.'
				],
				maxLevel: 3,
				currentLevel: 0,
				requiresPoint: 5
			},
			{
				name: 'Chakram Mastery',
				type: '[Passive]',
				desc: 'Your unique mix of arcane and martial talent enables you to deal incredible damage with Chakrams. Adds Physical Damage to Chakrams and an overall Chakram damage boost.',
				reqAbility: false,
				reqAbility1: 0,
				reqAbility2: 0,
				requires: 'Requires 5 points in Sorcery abilities',
				descAdv: [
					'Physical Damage with Chakrams: +2, Bonus Damage with Chakrams: +5%',
					'Physical Damage with Chakrams: +3, Bonus Damage with Chakrams: +10%',
					'Physical Damage with Chakrams: +4, Bonus Damage with Chakrams: +15%',
					'Physical Damage with Chakrams: +6, Bonus Damage with Chakrams: +20%',
					'Physical Damage with Chakrams: +8, Bonus Damage with Chakrams: +25%',
					'Physical Damage with Chakrams: +10, Bonus Damage with Chakrams: +30%'
				],
				maxLevel: 6,
				currentLevel: 0,
				requiresPoint: 5
			},
			{
				name: 'Sphere of Protection',
				type: '[Active - Sustained]',
				desc: 'While active, Sphere of Protection creates a magical barrier that blocks a percentage of damage from each incoming attack. Sustained Cost: 30% Mana',
				reqAbility: false,
				reqAbility1: 0,
				reqAbility2: 0,
				requires: 'Requires 5 points in Sorcery abilities',
				descAdv: [
					'Damage Resistance: +5%',
					'Damage Resistance: +6%',
					'Damage Resistance: +7%',
					'Damage Resistance: +8%',
					'Damage Resistance: +10%',
					'Damage Resistance: +12%'
				],
				maxLevel: 6,
				currentLevel: 0,
				requiresPoint: 5
			},
			{
				name: 'Mark of Flame',
				type: '[Active]',
				desc: 'Tap the button to tag your targets with a magical Mark. Press and hold the button to detonate all Marked enemies with a fiery explosion. When finished marking enemies, the mark causes a fiery explosion. The explosion will hit any enemies nearby. The ability Smolder upgrades Mark of Flame by increasing its damage.',
				reqAbility: false,
				reqAbility1: 0,
				reqAbility2: 0,
				requires: 'Requires 5 points in Sorcery abilities',
				descAdv: [
					'Maximum Targets Marked: 3, Fire Damage on Execution: 100, Burning Damage on Execution: 10, Execute Mana Cost: 30',
					'Maximum Targets Marked: 3, Fire Damage on Execution: 130, Burning Damage on Execution: 15, Execute Mana Cost: 33',
					'Maximum Targets Marked: 4, Fire Damage on Execution: 160, Burning Damage on Execution: 20, Execute Mana Cost: 36',
					'Maximum Targets Marked: 4, Fire Damage on Execution: 190, Burning Damage on Execution: 25, Execute Mana Cost: 39',
					'Maximum Targets Marked: 5, Fire Damage on Execution: 220, Burning Damage on Execution: 30, Execute Mana Cost: 42'
				],
				maxLevel: 5,
				currentLevel: 0,
				requiresPoint: 5
			},
			{
				name: 'Conservative Casting',
				type: '[Passive]',
				desc: 'Having unlocked countless arcane secrets, you are able to power your Abilities with far less Mana.',
				reqAbility: false,
				reqAbility1: 0,
				reqAbility2: 0,
				requires: 'Requires 5 points in Sorcery abilities',
				descAdv: [
					'Mana Cost Reduction: 10%',
					'Mana Cost Reduction: 13%',
					'Mana Cost Reduction: 16%',
					'Mana Cost Reduction: 19%',
					'Mana Cost Reduction: 22%'
				],
				maxLevel: 5,
				currentLevel: 0,
				requiresPoint: 5
			}
		],
		[
			{
				name: 'Summon Faer Gorta',
				type: '[Active]',
				desc: 'Use magic to rapidly construct a Faer Gorta who will fight by your side. Summon last 120 seconds.',
				reqAbility: false,
				reqAbility1: 0,
				reqAbility2: 0,
				requires: 'Requires 20 points in Sorcery abilities',
				descAdv: [
					'Health and Damage Bonus: +0%, Mana Cost: 65',
					'Health and Damage Bonus: +10%, Mana Cost: 60',
					'Health and Damage Bonus: +25%, Mana Cost: 65',
					'Health and Damage Bonus: +50%, Mana Cost: 70',
					'Health and Damage Bonus: +75%, Mana Cost: 75',
					'Health and Damage Bonus: +100%, Mana Cost: 80'
				],
				maxLevel: 6,
				currentLevel: 0,
				requiresPoint: 20
			},
			{
				name: 'Healing Surge',
				type: '[Active]',
				desc: 'Your magic knits together flesh and bone, healing your wounds. Holding the button longer restores more health. Healing Surge always costs 30% of your maximum Mana to cast, and up to 20% of your maximum Mana to sustain the charge. All levels also restore 20% of your maximum Health immediately upon cast and 10% on finishing the charge.',
				reqAbility: false,
				reqAbility1: 0,
				reqAbility2: 0,
				requires: 'Requires 20 points in Sorcery abilities',
				descAdv: [
					'Health restored while charging: 10%',
					'Health restored while charging: 20%',
					'Health restored while charging: 30%',
					'Health restored while charging: 40%',
					'Health restored while charging: 50%'
				],
				maxLevel: 5,
				currentLevel: 0,
				requiresPoint: 20
			},
			{
				name: 'Chain Lightning',
				type: '[Passive]',
				desc: 'Increases the Storm Bolt damage, and causes Shocking Damage to bounce between your enemies more frequently.',
				reqAbility: true,
				reqAbility1: 0,
				reqAbility2: 2,
				requires: 'Requires 20 points in Sorcery abilities, Requires Storm Bolt',
				descAdv: [
					'Increased chance to propagate: 10%, Increased Storm Bolt damage: +10%',
					'Increased chance to propagate: 20%, Increased Storm Bolt damage: +20%',
					'Increased chance to propagate: 30%, Increased Storm Bolt damage: +30%',
					'Increased chance to propagate: 40%, Increased Storm Bolt damage: +40%',
					'Increased chance to propagate: 50%, Increased Storm Bolt damage: +50%'
				],
				maxLevel: 5,
				currentLevel: 0,
				requiresPoint: 20
			},
			{
				name: 'Ice Barrage',
				type: '[Active]',
				desc: 'Sends a scattered blast of ice shards into the air to crash down upon your foes, dealing Ice and Freezing Damage. Ice Barrage causes both Ice and Freezing Damage. Frostshackle and Winter\'s Embrace upgrade this ability.',
				reqAbility: false,
				reqAbility1: 0,
				reqAbility2: 0,
				requires: 'Requires 20 points in Sorcery abilities, Requires Storm Bolt',
				descAdv: [
					'Projectiles: 5, Ice Damage per projectile: 15, Freezing Damage per projectile: 3, Mana Cost: 25',
					'Projectiles: 5, Ice Damage per projectile: 18, Freezing Damage per projectile: 4, Mana Cost: 30',
					'Projectiles: 7, Ice Damage per projectile: 21, Freezing Damage per projectile: 5, Mana Cost: 35',
					'Projectiles: 7, Ice Damage per projectile: 24, Freezing Damage per projectile: 5, Mana Cost: 40',
					'Projectiles: 9, Ice Damage per projectile: 27, Freezing Damage per projectile: 5, Mana Cost: 45'
				],
				maxLevel: 5,
				currentLevel: 0,
				requiresPoint: 20
			}
		],
		[
			{
				name: 'Arcane Weaponry III',
				type: '[Weapon Attacks]',
				desc: 'Sends a scattered blast of ice shards into the air to crash down upon your foes, dealing Ice and Freezing Damage. Ice Barrage causes both Ice and Freezing Damage. Frostshackle and Winter\'s Embrace upgrade this ability.',
				reqAbility: true,
				reqAbility1: 1,
				reqAbility2: 0,
				requires: 'Requires 35 points in Sorcery abilities, Requires Arcane Weaponry II',
				descAdv: [
					'Unlocks Delayed special attacks for the Staff and Chakrams and decreases the cost of Sceptre attacks from 4% of your Mana to 3%. Arcane Fury - Press Attack -> Pause -> Attack to perform a 2-part attack with a staff that launches enemies into the air and away from you. Elemental Escape - Press Attack -> Pause Attack to attack an enemy with both Chakrams then launch them into the ground at the enemy\'s feet, blasting them backwards while you jump away.',
					'Arcane Fury and Elemental Escape apply an additional damage over time effect.',
					'Arcane Fury and Elemental Escape generate extra Fate.'
				],
				maxLevel: 3,
				currentLevel: 0,
				requiresPoint: 35
			},
			{
				name: 'Transference',
				type: '[Upgrade]',
				desc: 'Causes the attacks of a summoned Faer Gorta to siphon health from enemies and return it to you.',
				reqAbility: true,
				reqAbility1: 2,
				reqAbility2: 0,
				requires: 'Requires 35 points in Sorcery abilities, Requires Summon Faer Gorta',
				descAdv: [
					'Chance to Siphon Health: 25%',
					'Chance to Siphon Health: 35%',
					'Chance to Siphon Health: 45%',
					'Chance to Siphon Health: 55%',
					'Chance to Siphon Health: 70%'
				],
				maxLevel: 5,
				currentLevel: 0,
				requiresPoint: 35
			},
			{
				name: 'Sphere of Reprisal',
				type: '[Upgrade]',
				desc: 'While Sphere of Protection is active, ethereal orbs are created around you which deal damage to enemies they hit. These small orbs will respawn a short time after hitting enemies.',
				reqAbility: true,
				reqAbility1: 1,
				reqAbility2: 2,
				requires: 'Requires 35 points in Sorcery abilities, Requires Sphere of Protection',
				descAdv: [
					'Physical Damage per projectile: 50, Projectiles: 2',
					'Physical Damage per projectile: 55, Projectiles: 2',
					'Physical Damage per projectile: 60, Projectiles: 2',
					'Physical Damage per projectile: 65, Projectiles: 4',
					'Physical Damage per projectile: 70, Projectiles: 4'
				],
				maxLevel: 5,
				currentLevel: 0,
				requiresPoint: 35
			},
			{
				name: 'Smolder',
				type: '[Passive]',
				desc: 'Your mastery over the power of fire allows you to increase the effectiveness of all Burning effects, as well as the damage done by Mark of Flame. It also increases damage from Mark of Flame.',
				reqAbility: true,
				reqAbility1: 1,
				reqAbility2: 3,
				requires: 'Requires 35 points in Sorcery abilities, Requires Mark of Flame',
				descAdv: [
					'Burning Damage increase: +20%, Mark of Flame bonus damage: +10%',
					'Burning Damage increase: +40%, Mark of Flame bonus damage: +20%',
					'Burning Damage increase: +60%, Mark of Flame bonus damage: +30%',
					'Burning Damage increase: +80%, Mark of Flame bonus damage: +40%',
					'Burning Damage increase: +100%, Mark of Flame bonus damage: +50%'
				],
				maxLevel: 5,
				currentLevel: 0,
				requiresPoint: 35
			},
			{
				name: 'Frostshackle',
				type: '[Passive]',
				desc: 'Your knowledge of eldritch frost allows you to extend the duration of all Freezing effects, slowing enemies down for a longer time. Also increases the damage caused by Ice Barrage.',
				reqAbility: true,
				reqAbility1: 2,
				reqAbility2: 3,
				requires: 'Requires 35 points in Sorcery abilities, Requires Ice Barrage',
				descAdv: [
					'Increased Freezing duration: 25%, Increased Ice Barrage damage: +10%',
					'Increased Freezing duration: 50%, Increased Ice Barrage damage: +20%',
					'Increased Freezing duration: 75%, Increased Ice Barrage damage: +30%',
					'Increased Freezing duration: 100%, Increased Ice Barrage damage: +40%',
					'Increased Freezing duration: 150%, Increased Ice Barrage damage: +50%'
				],
				maxLevel: 5,
				currentLevel: 0,
				requiresPoint: 35
			}
		],
		[
			{
				name: 'Masterful Construction',
				type: '[Upgrade]',
				desc: 'Your summoned Faer Gorta swings for more hits in its attack chain, and gains a chance to critical.',
				reqAbility: true,
				reqAbility1: 3,
				reqAbility2: 1,
				requires: 'Requires 50 points in Sorcery abilities, Requires Summon Faer Gorta, Requires Transference',
				descAdv: [
					'Chance to Critical Hit: +7%, Chain attack hits: 3',
					'Chance to Critical Hit: +10%, Chain attack hits: 3',
					'Chance to Critical Hit: +13%, Chain attack hits: 5',
					'Chance to Critical Hit: +16%, Chain attack hits: 5',
					'Chance to Critical Hit: +19%, Chain attack hits: 7'
				],
				maxLevel: 5,
				currentLevel: 0,
				requiresPoint: 50
			},
			{
				name: 'Elemental Rage',
				type: '[Active]',
				desc: 'Combine the mystic elements of Fire, Lightning, and Ice into a devastating chain of attacks. Lightning pulses with the first cast, dealing Lightning Damage and drawing enemies in. Fire torches enemies in the area on the second cast, dealing Fire Damage and moving you away from enemies. The third cast finishes with an icy explosion, dealing Ice Damage in the area and slowing enemies.',
				reqAbility: false,
				reqAbility1: 0,
				reqAbility2: 0,
				requires: 'Requires 50 points in Sorcery abilities',
				descAdv: [
					'Lightning Damage: 90, Lightning cast mana cost: 55, Fire Damage: 130, Fire cast mana cost: 55, Ice Damage: 100, Ice cast mana cost: 60',
					'Lightning Damage: 105, Lightning cast mana cost: 60, Fire Damage: 150, Fire cast mana cost: 60, Ice Damage: 110, Ice cast mana cost: 65',
					'Lightning Damage: 120, Lightning cast mana cost: 65, Fire Damage: 170, Fire cast mana cost: 65, Ice Damage: 125, Ice cast mana cost: 70',
					'Lightning Damage: 135, Lightning cast mana cost: 70, Fire Damage: 190, Fire cast mana cost: 70, Ice Damage: 145, Ice cast mana cost: 75',
					'Lightning Damage: 150, Lightning cast mana cost: 75, Fire Damage: 210, Fire cast mana cost: 75, Ice Damage: 170, Ice cast mana cost: 80'
				],
				maxLevel: 5,
				currentLevel: 0,
				requiresPoint: 50
			},
			{
				name: 'Tempest',
				type: '[Upgrade]',
				desc: 'Hold the button for Storm Bolt to summon forth lightning from the heavens, smiting all nearby foes.',
				reqAbility: true,
				reqAbility1: 2,
				reqAbility2: 2,
				requires: 'Requires 50 points in Sorcery abilities, Requires Storm Bolt, Requires Chain Lightning',
				descAdv: [
					'Lightning Damage: 360, Shocking Damage: 30, Mana Cost: 135',
					'Lightning Damage: 400, Shocking Damage: 35, Mana Cost: 145',
					'Lightning Damage: 440, Shocking Damage: 40, Mana Cost: 155',
					'Lightning Damage: 480, Shocking Damage: 45, Mana Cost: 165',
					'Lightning Damage: 520, Shocking Damage: 50, Mana Cost: 175'
				],
				maxLevel: 5,
				currentLevel: 0,
				requiresPoint: 50
			}
		],
		[
			{
				name: 'Sphere of Retribution',
				type: '[Upgrade]',
				desc: 'Sphere of Protection gains the power to fire off deadly ethereal splinters when enemies draw near. At level 2 enemies who draw close will be staggered, at level 4 enemies may be knocked down by the splinters, and there is a nearly guaranteed chance to knock down enemies at level 5 and higher.',
				reqAbility: true,
				reqAbility1: 3,
				reqAbility2: 2,
				requires: 'Requires 70 points in Sorcery abilities, Requires Sphere of Protection, Requires Sphere of Reprisal',
				descAdv: [
					'Physical Damage per projectile: 110',
					'Physical Damage per projectile: 120',
					'Physical Damage per projectile: 130',
					'Physical Damage per projectile: 140',
					'Physical Damage per projectile: 150'
				],
				maxLevel: 5,
				currentLevel: 0,
				requiresPoint: 70
			},
			{
				name: 'Meteor',
				type: '[Active]',
				desc: 'Calls forth a meteor from the skies, dealing massive damage to the area before you.',
				reqAbility: true,
				reqAbility1: 3,
				reqAbility2: 3,
				requires: 'Requires 70 points in Sorcery abilities, Requires Mark of Flame, Requires Smolder',
				descAdv: [
					'Fire Damage: 500, Burning Damage: 75, Mana Cost: 250',
					'Fire Damage: 550, Burning Damage: 80, Mana Cost: 260',
					'Fire Damage: 600, Burning Damage: 85, Mana Cost: 270',
					'Fire Damage: 650, Burning Damage: 90, Mana Cost: 280',
					'Fire Damage: 700, Burning Damage: 95, Mana Cost: 290'
				],
				maxLevel: 5,
				currentLevel: 0,
				requiresPoint: 70
			},
			{
				name: 'Winter's Embrace',
				type: '[Upgrade]',
				desc: 'Hold the button for Ice Barrage to launch a persistent cloud of ice shards which lasts for a duration. Enemies in the blizzard suffer periodic Ice, Piercing, and Freezing Damage.',
				reqAbility: true,
				reqAbility1: 3,
				reqAbility2: 3,
				requires: 'Requires 70 points in Sorcery abilities, Requires Ice Barrage, Requires Frostshackle',
				descAdv: [
					'Damage: 10 Ice Damage, 5 Piercing Damage, Duration: 15 seconds, Mana Cost: 180',
					'Damage: 15 Ice Damage, 10 Piercing Damage, Duration: 15 seconds, Mana Cost: 190',
					'Damage: 20 Ice Damage, 15 Piercing Damage, Duration: 15 seconds, Mana Cost: 200',
					'Damage: 25 Ice Damage, 20 Piercing Damage, Duration: 15 seconds, Mana Cost: 210',
					'Damage: 30 Ice Damage, 25 Piercing Damage, Duration: 15 seconds, Mana Cost: 220'
				],
				maxLevel: 5,
				currentLevel: 0,
				requiresPoint: 70
			}
		]
	]
}