@tricoteuses/assemblee
Version:
Retrieve, clean up & handle French Assemblée nationale's open data
842 lines (838 loc) • 94.9 kB
JavaScript
// To parse this data:
//
// import { Convert, Amendement, Amendements } from "./file";
//
// const amendement = Convert.toAmendement(json);
// const amendements = Convert.toAmendements(json);
//
// These functions will throw an error if the JSON doesn't
// match the expected interface, even if the JSON is valid.
export let AccordGouvernementDepotHorsDelai = /*#__PURE__*/function (AccordGouvernementDepotHorsDelai) {
AccordGouvernementDepotHorsDelai["Accord"] = "Accord";
AccordGouvernementDepotHorsDelai["SansObjet"] = "Sans objet";
return AccordGouvernementDepotHorsDelai;
}({});
export let Action = /*#__PURE__*/function (Action) {
Action["Cr\xE9ation"] = "cr\xE9ation";
Action["Modification"] = "modification";
Action["Suppression"] = "suppression";
return Action;
}({});
export let EtatAmendementCode = /*#__PURE__*/function (EtatAmendementCode) {
EtatAmendementCode["AC"] = "AC";
EtatAmendementCode["At"] = "AT";
EtatAmendementCode["Di"] = "DI";
EtatAmendementCode["Effac\xE9"] = "effac\xE9";
EtatAmendementCode["Er"] = "ER";
EtatAmendementCode["Et"] = "ET";
EtatAmendementCode["IR"] = "IR";
EtatAmendementCode["Irr127"] = "IRR127";
EtatAmendementCode["Irr20"] = "IRR20";
EtatAmendementCode["Irr37"] = "IRR37";
EtatAmendementCode["Irr38"] = "IRR38";
EtatAmendementCode["Irr41"] = "IRR41";
EtatAmendementCode["Irr42"] = "IRR42";
EtatAmendementCode["Irr45"] = "IRR45";
EtatAmendementCode["Irr48"] = "IRR48";
EtatAmendementCode["Irr53"] = "IRR53";
EtatAmendementCode["Irrai"] = "IRRAI";
EtatAmendementCode["Irraif"] = "IRRAIF";
EtatAmendementCode["Irrd"] = "IRRD";
EtatAmendementCode["Irrhc"] = "IRRHC";
// Irrecevable, hors champ
EtatAmendementCode["Irrhd"] = "IRRHD";
EtatAmendementCode["Irrsa"] = "IRRSA";
EtatAmendementCode["R"] = "R";
EtatAmendementCode["Rt"] = "RT";
EtatAmendementCode["T"] = "T";
return EtatAmendementCode;
}({});
export let EtatAmendementLibelle = /*#__PURE__*/function (EtatAmendementLibelle) {
EtatAmendementLibelle["ADiscuter"] = "A discuter";
EtatAmendementLibelle["AD\xE9poser"] = "A d\xE9poser";
EtatAmendementLibelle["Discut\xE9"] = "Discut\xE9";
EtatAmendementLibelle["Effac\xE9"] = "effac\xE9";
EtatAmendementLibelle["EnRecevabilit\xE9"] = "En recevabilit\xE9";
EtatAmendementLibelle["EnTraitement"] = "En traitement";
EtatAmendementLibelle["Irrecevable"] = "Irrecevable";
EtatAmendementLibelle["Irrecevable40"] = "Irrecevable 40";
EtatAmendementLibelle["Retir\xE9"] = "Retir\xE9";
return EtatAmendementLibelle;
}({});
export let SortAmendement = /*#__PURE__*/function (SortAmendement) {
SortAmendement["Adopt\xE9"] = "Adopt\xE9";
SortAmendement["AutreIrrecevabilit\xE9"] = "Autre irrecevabilit\xE9";
SortAmendement["AutreIrrecevabilit\xE940"] = "Autre irrecevabilit\xE9 40";
SortAmendement["AutresIrrLOLF"] = "Autres irr LOLF";
SortAmendement["AutresIrrLOLFSS"] = "Autres irr LOLFSS";
SortAmendement["Cavalier45"] = "Cavalier (45)";
SortAmendement["CavalierBudg\xE9taire"] = "Cavalier budg\xE9taire";
SortAmendement["CavalierSocial"] = "Cavalier social";
SortAmendement["ChampDeLHabilitation38"] = "Champ de l'habilitation (38)";
SortAmendement["Charge"] = "Charge";
SortAmendement["Cmp45"] = "CMP (45)";
SortAmendement["Cr\xE9dits"] = "Cr\xE9dits";
SortAmendement["DispositionR\xE9glementaire37"] = "Disposition r\xE9glementaire (37)";
SortAmendement["DomaineDeLaLoi41"] = "Domaine de la loi (41)";
SortAmendement["DomaineLoiOrganique127"] = "Domaine loi organique (127)";
SortAmendement["Doublon"] = "Doublon";
SortAmendement["Entonnoir45"] = "Entonnoir (45)";
SortAmendement["Gage"] = "Gage";
SortAmendement["HorsChamp"] = "Hors champ";
SortAmendement["HorsD\xE9lais"] = "Hors-d\xE9lais";
SortAmendement["Injonction20"] = "Injonction (20)";
SortAmendement["IrrEnPremi\xE8rePartie"] = "Irr en premi\xE8re partie";
SortAmendement["IrrEnSecondePartie"] = "Irr en seconde partie";
SortAmendement["Lolf"] = "LOLF";
SortAmendement["Lolfss"] = "LOLFSS";
SortAmendement["NonSoutenu"] = "Non soutenu";
SortAmendement["OrdreDuJour48"] = "Ordre du jour (48)";
SortAmendement["R"] = "R";
SortAmendement["RatificationTrait\xE953"] = "Ratification trait\xE9 (53)";
SortAmendement["Rejet\xE9"] = "Rejet\xE9";
SortAmendement["Retir\xE9"] = "Retir\xE9";
SortAmendement["Retir\xE9Apr\xE8sPublication"] = "Retir\xE9 apr\xE8s publication";
SortAmendement["Retir\xE9AvantPublication"] = "Retir\xE9 avant publication";
SortAmendement["SatisfaitOuInop\xE9rant42"] = "Satisfait ou inop\xE9rant (42)";
SortAmendement["SousAmendement98"] = "Sous-amendement (98)";
SortAmendement["Tomb\xE9"] = "Tomb\xE9";
return SortAmendement;
}({});
export let TypePosition = /*#__PURE__*/function (TypePosition) {
TypePosition["Dernier"] = "Dernier";
TypePosition["Milieu"] = "Milieu";
TypePosition["Premier"] = "Premier";
return TypePosition;
}({});
export let AvantAApres = /*#__PURE__*/function (AvantAApres) {
AvantAApres["A"] = "A";
AvantAApres["Apres"] = "Apres";
AvantAApres["Avant"] = "Avant";
return AvantAApres;
}({});
export let DivisionType = /*#__PURE__*/function (DivisionType) {
DivisionType["Annexe"] = "ANNEXE";
DivisionType["Article"] = "ARTICLE";
DivisionType["Chapitre"] = "CHAPITRE";
DivisionType["Titre"] = "TITRE";
return DivisionType;
}({});
export let CodeEtat = /*#__PURE__*/function (CodeEtat) {
CodeEtat["B"] = "B";
CodeEtat["C"] = "C";
CodeEtat["D"] = "D";
return CodeEtat;
}({});
export let Nom = /*#__PURE__*/function (Nom) {
Nom["Pdf"] = "PDF";
return Nom;
}({});
export let TypeMimeType = /*#__PURE__*/function (TypeMimeType) {
TypeMimeType["Application"] = "application";
return TypeMimeType;
}({});
export let TypeAuteur = /*#__PURE__*/function (TypeAuteur) {
TypeAuteur["D\xE9put\xE9"] = "D\xE9put\xE9";
TypeAuteur["Gouvernement"] = "Gouvernement";
TypeAuteur["Rapporteur"] = "Rapporteur";
return TypeAuteur;
}({});
// Converts JSON strings to/from your types
// and asserts the results of JSON.parse at runtime
export class Convert {
static toAmendement(json) {
return cast(JSON.parse(json), r("Amendement"));
}
static amendementToJson(value) {
return JSON.stringify(uncast(value, r("Amendement")), null, 2);
}
static toAmendements(json) {
return cast(JSON.parse(json), r("Amendements"));
}
static amendementsToJson(value) {
return JSON.stringify(uncast(value, r("Amendements")), null, 2);
}
static toTexteLegislatif(json) {
return cast(JSON.parse(json), r("TexteLegislatif"));
}
static texteLegislatifToJson(value) {
return JSON.stringify(uncast(value, r("TexteLegislatif")), null, 2);
}
}
function invalidValue(typ, val, key = "") {
if (key) {
throw Error(`Invalid value for key "${key}". Expected type ${JSON.stringify(typ)} but got ${JSON.stringify(val)}`);
}
throw Error(`Invalid value ${JSON.stringify(val)} for type ${JSON.stringify(typ)}`);
}
function jsonToJSProps(typ) {
if (typ.jsonToJS === undefined) {
const map = {};
typ.props.forEach(p => map[p.json] = {
key: p.js,
typ: p.typ
});
typ.jsonToJS = map;
}
return typ.jsonToJS;
}
function jsToJSONProps(typ) {
if (typ.jsToJSON === undefined) {
const map = {};
typ.props.forEach(p => map[p.js] = {
key: p.json,
typ: p.typ
});
typ.jsToJSON = map;
}
return typ.jsToJSON;
}
function transform(val, typ, getProps, key = "") {
function transformPrimitive(typ, val) {
if (typeof typ === typeof val) return val;
return invalidValue(typ, val, key);
}
function transformUnion(typs, val) {
// val must validate against one typ in typs
const l = typs.length;
for (let i = 0; i < l; i++) {
const typ = typs[i];
try {
return transform(val, typ, getProps);
} catch (_) {}
}
return invalidValue(typs, val);
}
function transformEnum(cases, val) {
if (cases.indexOf(val) !== -1) return val;
return invalidValue(cases, val);
}
function transformArray(typ, val) {
// val must be an array with no invalid elements
if (!Array.isArray(val)) return invalidValue("array", val);
return val.map(el => transform(el, typ, getProps));
}
function transformDate(val) {
if (val === null) {
return null;
}
const d = new Date(val);
if (isNaN(d.valueOf())) {
return invalidValue("Date", val);
}
return d;
}
function transformObject(props, additional, val) {
if (val === null || typeof val !== "object" || Array.isArray(val)) {
return invalidValue("object", val);
}
const result = {};
Object.getOwnPropertyNames(props).forEach(key => {
const prop = props[key];
const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
result[prop.key] = transform(v, prop.typ, getProps, prop.key);
});
Object.getOwnPropertyNames(val).forEach(key => {
if (!Object.prototype.hasOwnProperty.call(props, key)) {
result[key] = transform(val[key], additional, getProps, key);
}
});
return result;
}
if (typ === "any") return val;
if (typ === null) {
if (val === null) return val;
return invalidValue(typ, val);
}
// if (typ === false) return invalidValue(typ, val)
while (typeof typ === "object" && typ.ref !== undefined) {
typ = typeMap[typ.ref];
}
if (Array.isArray(typ)) return transformEnum(typ, val);
if (typeof typ === "object") {
return typ.hasOwnProperty("unionMembers") ? transformUnion(typ.unionMembers, val) : typ.hasOwnProperty("arrayItems") ? transformArray(typ.arrayItems, val) : typ.hasOwnProperty("props") ? transformObject(getProps(typ), typ.additional, val) : invalidValue(typ, val);
}
// Numbers can be parsed by Date but shouldn't be.
if (typ === Date && typeof val !== "number") return transformDate(val);
return transformPrimitive(typ, val);
}
function cast(val, typ) {
return transform(val, typ, jsonToJSProps);
}
function uncast(val, typ) {
return transform(val, typ, jsToJSONProps);
}
function a(typ) {
return {
arrayItems: typ
};
}
function u(...typs) {
return {
unionMembers: typs
};
}
function o(props, additional) {
return {
props,
additional
};
}
// function m(additional: any) {
// return { props: [], additional }
// }
function r(name) {
return {
ref: name
};
}
const typeMap = {
Amendements: o([{
json: "textesLegislatifs",
js: "textesLegislatifs",
typ: a(r("TexteLegislatif"))
}], false),
TexteLegislatif: o([{
json: "refTexteLegislatif",
js: "refTexteLegislatif",
typ: ""
}, {
json: "amendements",
js: "amendements",
typ: r("AmendementsClass")
}], false),
AmendementsClass: o([{
json: "amendement",
js: "amendement",
typ: a(r("Amendement"))
}], false),
AmendementWrapper: o([{
json: "amendement",
js: "amendement",
typ: r("Amendement")
}], false),
Amendement: o([{
json: "uid",
js: "uid",
typ: ""
}, {
json: "chronotag",
js: "chronotag",
typ: ""
}, {
json: "legislature",
js: "legislature",
typ: ""
}, {
json: "identification",
js: "identification",
typ: r("Identification")
}, {
json: "examenRef",
js: "examenRef",
typ: ""
}, {
json: "texteLegislatifRef",
js: "texteLegislatifRef",
typ: ""
}, {
json: "triAmendement",
js: "triAmendement",
typ: u(undefined, "")
}, {
json: "cardinaliteAmdtMultiples",
js: "cardinaliteAmdtMultiples",
typ: u(undefined, "")
}, {
json: "amendementParentRef",
js: "amendementParentRef",
typ: u(undefined, "")
}, {
json: "signataires",
js: "signataires",
typ: r("Signataires")
}, {
json: "pointeurFragmentTexte",
js: "pointeurFragmentTexte",
typ: r("PointeurFragmentTexte")
}, {
json: "corps",
js: "corps",
typ: u(undefined, r("Corps"))
}, {
json: "cycleDeVie",
js: "cycleDeVie",
typ: r("CycleDeVie")
}, {
json: "representation",
js: "representation",
typ: u(undefined, r("Representation"))
}, {
json: "seanceDiscussionRef",
js: "seanceDiscussionRef",
typ: u(undefined, "")
}, {
json: "article99",
js: "article99",
typ: ""
}, {
json: "loiReference",
js: "loiReference",
typ: u(undefined, r("LoiReference"))
}, {
json: "discussionCommune",
js: "discussionCommune",
typ: u(undefined, r("Discussion"))
}, {
json: "discussionIdentique",
js: "discussionIdentique",
typ: u(undefined, r("Discussion"))
}, {
json: "accordGouvernementDepotHorsDelai",
js: "accordGouvernementDepotHorsDelai",
typ: r("AccordGouvernementDepotHorsDelai")
}], false),
Corps: o([{
json: "cartoucheInformatif",
js: "cartoucheInformatif",
typ: u(undefined, "")
}, {
json: "contenuAuteur",
js: "contenuAuteur",
typ: u(undefined, r("ContenuAuteur"))
}], false),
ContenuAuteur: o([{
json: "dispositif",
js: "dispositif",
typ: u(undefined, "")
}, {
json: "avantAppel",
js: "avantAppel",
typ: u(undefined, r("AvantAppel"))
}, {
json: "exposeSommaire",
js: "exposeSommaire",
typ: u(undefined, "")
}, {
json: "dispositifAmdtCreditPLF",
js: "dispositifAmdtCreditPLF",
typ: u(undefined, r("DispositifAmdtCreditPLF"))
}, {
json: "dispositifAmdtCreditPLFR",
js: "dispositifAmdtCreditPLFR",
typ: u(undefined, r("DispositifAmdtCreditPLFR"))
}], false),
AvantAppel: o([{
json: "dispositif",
js: "dispositif",
typ: u(undefined, "")
}, {
json: "dispositifAmdtCreditPLF",
js: "dispositifAmdtCreditPLF",
typ: u(undefined, r("DispositifAmdtCreditPLF"))
}, {
json: "dispositifAmdtCreditPLFR",
js: "dispositifAmdtCreditPLFR",
typ: u(undefined, r("DispositifAmdtCreditPLFR"))
}], false),
DispositifAmdtCreditPLF: o([{
json: "listeProgrammes",
js: "listeProgrammes",
typ: u(undefined, a(r("ProgrammePlf")))
}, {
json: "soldeAE",
js: "soldeAE",
typ: u(undefined, "")
}, {
json: "soldeCP",
js: "soldeCP",
typ: u(undefined, "")
}, {
json: "cpEgalAe",
js: "cpEgalAe",
typ: ""
}], false),
ProgrammePlf: o([{
json: "libelle",
js: "libelle",
typ: ""
}, {
json: "programmeRef",
js: "programmeRef",
typ: ""
}, {
json: "autorisationEngagement",
js: "autorisationEngagement",
typ: ""
}, {
json: "creditPaiement",
js: "creditPaiement",
typ: ""
}, {
json: "action",
js: "action",
typ: r("Action")
}, {
json: "lignesCredits",
js: "lignesCredits",
typ: u(undefined, a(r("LigneCreditPLF")))
}], false),
LigneCreditPLF: o([{
json: "id",
js: "id",
typ: ""
}, {
json: "libelle",
js: "libelle",
typ: ""
}, {
json: "autorisationEngagement",
js: "autorisationEngagement",
typ: ""
}, {
json: "creditPaiement",
js: "creditPaiement",
typ: ""
}, {
json: "action",
js: "action",
typ: r("Action")
}], false),
DispositifAmdtCreditPLFR: o([{
json: "listeProgrammes",
js: "listeProgrammes",
typ: u(undefined, a(r("LigneCreditPLFR")))
}, {
json: "totalAE",
js: "totalAE",
typ: u(undefined, r("Total"))
}, {
json: "totalCP",
js: "totalCP",
typ: u(undefined, r("Total"))
}, {
json: "cpEgalAe",
js: "cpEgalAe",
typ: ""
}], false),
LigneCreditPLFR: o([{
json: "libelle",
js: "libelle",
typ: ""
}, {
json: "programmeRef",
js: "programmeRef",
typ: u(undefined, "")
}, {
json: "autorisationEngagementSupplementaire",
js: "autorisationEngagementSupplementaire",
typ: ""
}, {
json: "creditPaiementSupplementaire",
js: "creditPaiementSupplementaire",
typ: ""
}, {
json: "autorisationEngagementAnnule",
js: "autorisationEngagementAnnule",
typ: ""
}, {
json: "creditPaiementAnnule",
js: "creditPaiementAnnule",
typ: ""
}, {
json: "action",
js: "action",
typ: r("Action")
}, {
json: "lignesCredits",
js: "lignesCredits",
typ: u(undefined, a(r("LigneCreditPLFR")))
}, {
json: "id",
js: "id",
typ: u(undefined, "")
}], false),
Total: o([{
json: "supplementaire",
js: "supplementaire",
typ: ""
}, {
json: "annule",
js: "annule",
typ: ""
}, {
json: "solde",
js: "solde",
typ: ""
}], false),
CycleDeVie: o([{
json: "dateDepot",
js: "dateDepot",
typ: u(undefined, Date)
}, {
json: "datePublication",
js: "datePublication",
typ: u(undefined, Date)
}, {
json: "soumisArticle40",
js: "soumisArticle40",
typ: ""
}, {
json: "etatDesTraitements",
js: "etatDesTraitements",
typ: r("EtatDesTraitements")
}, {
json: "dateSort",
js: "dateSort",
typ: u(undefined, Date)
}, {
json: "sort",
js: "sort",
typ: u(undefined, r("SortAmendement"))
}], false),
EtatDesTraitements: o([{
json: "etat",
js: "etat",
typ: r("EtatAmendement")
}, {
json: "sousEtat",
js: "sousEtat",
typ: u(undefined, r("SousEtatAmendement"))
}], false),
EtatAmendement: o([{
json: "code",
js: "code",
typ: r("EtatAmendementCode")
}, {
json: "libelle",
js: "libelle",
typ: r("EtatAmendementLibelle")
}], false),
SousEtatAmendement: o([{
json: "code",
js: "code",
typ: r("EtatAmendementCode")
}, {
json: "libelle",
js: "libelle",
typ: r("SortAmendement")
}], false),
Discussion: o([{
json: "idDiscussion",
js: "idDiscussion",
typ: u(undefined, "")
}, {
json: "typePosition",
js: "typePosition",
typ: u(undefined, r("TypePosition"))
}], false),
Identification: o([{
json: "numeroLong",
js: "numeroLong",
typ: ""
}, {
json: "numeroOrdreDepot",
js: "numeroOrdreDepot",
typ: ""
}, {
json: "prefixeOrganeExamen",
js: "prefixeOrganeExamen",
typ: ""
}, {
json: "numeroRect",
js: "numeroRect",
typ: ""
}], false),
LoiReference: o([{
json: "codeLoi",
js: "codeLoi",
typ: u(undefined, "")
}, {
json: "divisionCodeLoi",
js: "divisionCodeLoi",
typ: u(undefined, "")
}], false),
PointeurFragmentTexte: o([{
json: "division",
js: "division",
typ: u(undefined, r("Division"))
}, {
json: "alinea",
js: "alinea",
typ: u(undefined, r("Alinea"))
}, {
json: "missionVisee",
js: "missionVisee",
typ: u(undefined, r("MissionVisee"))
}], false),
Alinea: o([{
json: "avantAApres",
js: "avantAApres",
typ: u(undefined, r("AvantAApres"))
}, {
json: "numero",
js: "numero",
typ: u(undefined, "")
}, {
json: "alineaDesignation",
js: "alineaDesignation",
typ: u(undefined, "")
}], false),
Division: o([{
json: "titre",
js: "titre",
typ: u(undefined, "")
}, {
json: "articleDesignationCourte",
js: "articleDesignationCourte",
typ: u(undefined, "")
}, {
json: "articleDesignation",
js: "articleDesignation",
typ: u(undefined, "")
}, {
json: "type",
js: "type",
typ: r("DivisionType")
}, {
json: "avantAApres",
js: "avantAApres",
typ: r("AvantAApres")
}, {
json: "divisionRattachee",
js: "divisionRattachee",
typ: u(undefined, "")
}, {
json: "articleAdditionnel",
js: "articleAdditionnel",
typ: ""
}, {
json: "chapitreAdditionnel",
js: "chapitreAdditionnel",
typ: ""
}, {
json: "urlDivisionTexteVise",
js: "urlDivisionTexteVise",
typ: u(undefined, "")
}], false),
MissionVisee: o([{
json: "codeEtat",
js: "codeEtat",
typ: r("CodeEtat")
}, {
json: "codeMissionMinefi",
js: "codeMissionMinefi",
typ: ""
}, {
json: "libelleMission",
js: "libelleMission",
typ: ""
}, {
json: "missionRef",
js: "missionRef",
typ: ""
}], false),
Representation: o([{
json: "nom",
js: "nom",
typ: r("Nom")
}, {
json: "typeMime",
js: "typeMime",
typ: r("TypeMime")
}, {
json: "statutRepresentation",
js: "statutRepresentation",
typ: r("StatutRepresentation")
}, {
json: "contenu",
js: "contenu",
typ: r("Contenu")
}], false),
Contenu: o([{
json: "documentURI",
js: "documentURI",
typ: ""
}], false),
StatutRepresentation: o([{
json: "verbatim",
js: "verbatim",
typ: false
}, {
json: "canonique",
js: "canonique",
typ: false
}, {
json: "officielle",
js: "officielle",
typ: false
}, {
json: "transcription",
js: "transcription",
typ: false
}, {
json: "enregistrement",
js: "enregistrement",
typ: false
}], false),
TypeMime: o([{
json: "type",
js: "type",
typ: r("TypeMimeType")
}, {
json: "subType",
js: "subType",
typ: r("Nom")
}], false),
Signataires: o([{
json: "auteur",
js: "auteur",
typ: r("Auteur")
}, {
json: "cosignatairesRefs",
js: "cosignatairesRefs",
typ: u(undefined, a(""))
}, {
json: "suffixe",
js: "suffixe",
typ: u(undefined, "")
}, {
json: "libelle",
js: "libelle",
typ: u(undefined, "")
}], false),
Auteur: o([{
json: "typeAuteur",
js: "typeAuteur",
typ: r("TypeAuteur")
}, {
json: "gouvernementRef",
js: "gouvernementRef",
typ: u(undefined, "")
}, {
json: "acteurRef",
js: "acteurRef",
typ: u(undefined, "")
}, {
json: "groupePolitiqueRef",
js: "groupePolitiqueRef",
typ: u(undefined, "")
}, {
json: "auteurRapporteurOrganeRef",
js: "auteurRapporteurOrganeRef",
typ: u(undefined, "")
}], false),
AccordGouvernementDepotHorsDelai: ["Accord", "Sans objet"],
Action: ["création", "modification", "suppression"],
EtatAmendementCode: ["AC", "AT", "DI", "effacé", "ER", "ET", "IR", "IRR127", "IRR20", "IRR37", "IRR38", "IRR41", "IRR42", "IRR45", "IRR48", "IRR53", "IRRAI", "IRRAIF", "IRRD", "IRRHC", "IRRHD", "IRRSA", "R", "RT", "T"],
EtatAmendementLibelle: ["A discuter", "A déposer", "Discuté", "effacé", "En recevabilité", "En traitement", "Irrecevable", "Irrecevable 40", "Retiré"],
SortAmendement: ["Adopté", "Autre irrecevabilité", "Autre irrecevabilité 40", "Autres irr LOLF", "Autres irr LOLFSS", "Cavalier (45)", "Cavalier budgétaire", "Cavalier social", "Champ de l'habilitation (38)", "Charge", "CMP (45)", "Crédits", "Disposition réglementaire (37)", "Domaine de la loi (41)", "Domaine loi organique (127)", "Doublon", "Entonnoir (45)", "Gage", "Hors champ", "Hors-délais", "Injonction (20)", "Irr en première partie", "Irr en seconde partie", "LOLF", "LOLFSS", "Non soutenu", "Ordre du jour (48)", "R", "Ratification traité (53)", "Rejeté", "Retiré", "Retiré après publication", "Retiré avant publication", "Satisfait ou inopérant (42)", "Sous-amendement (98)", "Tombé"],
TypePosition: ["Dernier", "Milieu", "Premier"],
AvantAApres: ["A", "Apres", "Avant"],
DivisionType: ["ANNEXE", "ARTICLE", "CHAPITRE", "TITRE"],
CodeEtat: ["B", "C", "D"],
Nom: ["PDF"],
TypeMimeType: ["application"],
TypeAuteur: ["Député", "Gouvernement", "Rapporteur"]
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBY2NvcmRHb3V2ZXJuZW1lbnREZXBvdEhvcnNEZWxhaSIsIkFjdGlvbiIsIkV0YXRBbWVuZGVtZW50Q29kZSIsIkV0YXRBbWVuZGVtZW50TGliZWxsZSIsIlNvcnRBbWVuZGVtZW50IiwiVHlwZVBvc2l0aW9uIiwiQXZhbnRBQXByZXMiLCJEaXZpc2lvblR5cGUiLCJDb2RlRXRhdCIsIk5vbSIsIlR5cGVNaW1lVHlwZSIsIlR5cGVBdXRldXIiLCJDb252ZXJ0IiwidG9BbWVuZGVtZW50IiwianNvbiIsImNhc3QiLCJKU09OIiwicGFyc2UiLCJyIiwiYW1lbmRlbWVudFRvSnNvbiIsInZhbHVlIiwic3RyaW5naWZ5IiwidW5jYXN0IiwidG9BbWVuZGVtZW50cyIsImFtZW5kZW1lbnRzVG9Kc29uIiwidG9UZXh0ZUxlZ2lzbGF0aWYiLCJ0ZXh0ZUxlZ2lzbGF0aWZUb0pzb24iLCJpbnZhbGlkVmFsdWUiLCJ0eXAiLCJ2YWwiLCJrZXkiLCJFcnJvciIsImpzb25Ub0pTUHJvcHMiLCJqc29uVG9KUyIsInVuZGVmaW5lZCIsIm1hcCIsInByb3BzIiwiZm9yRWFjaCIsInAiLCJqcyIsImpzVG9KU09OUHJvcHMiLCJqc1RvSlNPTiIsInRyYW5zZm9ybSIsImdldFByb3BzIiwidHJhbnNmb3JtUHJpbWl0aXZlIiwidHJhbnNmb3JtVW5pb24iLCJ0eXBzIiwibCIsImxlbmd0aCIsImkiLCJfIiwidHJhbnNmb3JtRW51bSIsImNhc2VzIiwiaW5kZXhPZiIsInRyYW5zZm9ybUFycmF5IiwiQXJyYXkiLCJpc0FycmF5IiwiZWwiLCJ0cmFuc2Zvcm1EYXRlIiwiZCIsIkRhdGUiLCJpc05hTiIsInZhbHVlT2YiLCJ0cmFuc2Zvcm1PYmplY3QiLCJhZGRpdGlvbmFsIiwicmVzdWx0IiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsInByb3AiLCJ2IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwicmVmIiwidHlwZU1hcCIsInVuaW9uTWVtYmVycyIsImFycmF5SXRlbXMiLCJhIiwidSIsIm8iLCJuYW1lIiwiQW1lbmRlbWVudHMiLCJUZXh0ZUxlZ2lzbGF0aWYiLCJBbWVuZGVtZW50c0NsYXNzIiwiQW1lbmRlbWVudFdyYXBwZXIiLCJBbWVuZGVtZW50IiwiQ29ycHMiLCJDb250ZW51QXV0ZXVyIiwiQXZhbnRBcHBlbCIsIkRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGIiwiUHJvZ3JhbW1lUGxmIiwiTGlnbmVDcmVkaXRQTEYiLCJEaXNwb3NpdGlmQW1kdENyZWRpdFBMRlIiLCJMaWduZUNyZWRpdFBMRlIiLCJUb3RhbCIsIkN5Y2xlRGVWaWUiLCJFdGF0RGVzVHJhaXRlbWVudHMiLCJFdGF0QW1lbmRlbWVudCIsIlNvdXNFdGF0QW1lbmRlbWVudCIsIkRpc2N1c3Npb24iLCJJZGVudGlmaWNhdGlvbiIsIkxvaVJlZmVyZW5jZSIsIlBvaW50ZXVyRnJhZ21lbnRUZXh0ZSIsIkFsaW5lYSIsIkRpdmlzaW9uIiwiTWlzc2lvblZpc2VlIiwiUmVwcmVzZW50YXRpb24iLCJDb250ZW51IiwiU3RhdHV0UmVwcmVzZW50YXRpb24iLCJUeXBlTWltZSIsIlNpZ25hdGFpcmVzIiwiQXV0ZXVyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2FtZW5kZW1lbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRvIHBhcnNlIHRoaXMgZGF0YTpcbi8vXG4vLyAgIGltcG9ydCB7IENvbnZlcnQsIEFtZW5kZW1lbnQsIEFtZW5kZW1lbnRzIH0gZnJvbSBcIi4vZmlsZVwiO1xuLy9cbi8vICAgY29uc3QgYW1lbmRlbWVudCA9IENvbnZlcnQudG9BbWVuZGVtZW50KGpzb24pO1xuLy8gICBjb25zdCBhbWVuZGVtZW50cyA9IENvbnZlcnQudG9BbWVuZGVtZW50cyhqc29uKTtcbi8vXG4vLyBUaGVzZSBmdW5jdGlvbnMgd2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgSlNPTiBkb2Vzbid0XG4vLyBtYXRjaCB0aGUgZXhwZWN0ZWQgaW50ZXJmYWNlLCBldmVuIGlmIHRoZSBKU09OIGlzIHZhbGlkLlxuXG5pbXBvcnQgeyBBY3RldXIsIE9yZ2FuZSB9IGZyb20gXCIuL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgQW1lbmRlbWVudHMge1xuICB0ZXh0ZXNMZWdpc2xhdGlmczogVGV4dGVMZWdpc2xhdGlmW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXh0ZUxlZ2lzbGF0aWYge1xuICByZWZUZXh0ZUxlZ2lzbGF0aWY6IHN0cmluZ1xuICBhbWVuZGVtZW50czogQW1lbmRlbWVudFtdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW1lbmRlbWVudCB7XG4gIHNjaGVtYVZlcnNpb24/OiBzdHJpbmdcbiAgdWlkOiBzdHJpbmdcbiAgY2hyb25vdGFnOiBzdHJpbmdcbiAgbGVnaXNsYXR1cmU6IHN0cmluZ1xuICBpZGVudGlmaWNhdGlvbjogSWRlbnRpZmljYXRpb25cbiAgZXhhbWVuUmVmOiBzdHJpbmdcbiAgdGV4dGVMZWdpc2xhdGlmUmVmOiBzdHJpbmdcbiAgdHJpQW1lbmRlbWVudD86IHN0cmluZ1xuICBjYXJkaW5hbGl0ZUFtZHRNdWx0aXBsZXM/OiBzdHJpbmdcbiAgYW1lbmRlbWVudFBhcmVudFJlZj86IHN0cmluZ1xuICBzaWduYXRhaXJlczogU2lnbmF0YWlyZXNcbiAgcG9pbnRldXJGcmFnbWVudFRleHRlOiBQb2ludGV1ckZyYWdtZW50VGV4dGVcbiAgY29ycHM/OiBDb3Jwc1xuICBjeWNsZURlVmllOiBDeWNsZURlVmllXG4gIHJlcHJlc2VudGF0aW9uPzogUmVwcmVzZW50YXRpb25cbiAgc2VhbmNlRGlzY3Vzc2lvblJlZj86IHN0cmluZ1xuICBhcnRpY2xlOTk6IHN0cmluZ1xuICBsb2lSZWZlcmVuY2U/OiBMb2lSZWZlcmVuY2VcbiAgZGlzY3Vzc2lvbkNvbW11bmU/OiBEaXNjdXNzaW9uXG4gIGRpc2N1c3Npb25JZGVudGlxdWU/OiBEaXNjdXNzaW9uXG4gIGFjY29yZEdvdXZlcm5lbWVudERlcG90SG9yc0RlbGFpOiBBY2NvcmRHb3V2ZXJuZW1lbnREZXBvdEhvcnNEZWxhaVxufVxuXG5leHBvcnQgZW51bSBBY2NvcmRHb3V2ZXJuZW1lbnREZXBvdEhvcnNEZWxhaSB7XG4gIEFjY29yZCA9IFwiQWNjb3JkXCIsXG4gIFNhbnNPYmpldCA9IFwiU2FucyBvYmpldFwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvcnBzIHtcbiAgY2FydG91Y2hlSW5mb3JtYXRpZj86IHN0cmluZ1xuICBjb250ZW51QXV0ZXVyPzogQ29udGVudUF1dGV1clxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnVBdXRldXIge1xuICBkaXNwb3NpdGlmPzogc3RyaW5nXG4gIGF2YW50QXBwZWw/OiBBdmFudEFwcGVsXG4gIGV4cG9zZVNvbW1haXJlPzogc3RyaW5nXG4gIGRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGPzogRGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZcbiAgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSPzogRGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXZhbnRBcHBlbCB7XG4gIGRpc3Bvc2l0aWY/OiBzdHJpbmdcbiAgZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEY/OiBEaXNwb3NpdGlmQW1kdENyZWRpdFBMRlxuICBkaXNwb3NpdGlmQW1kdENyZWRpdFBMRlI/OiBEaXNwb3NpdGlmQW1kdENyZWRpdFBMRlJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXNwb3NpdGlmQW1kdENyZWRpdFBMRiB7XG4gIGxpc3RlUHJvZ3JhbW1lcz86IFByb2dyYW1tZVBsZltdXG4gIHNvbGRlQUU/OiBzdHJpbmdcbiAgc29sZGVDUD86IHN0cmluZ1xuICBjcEVnYWxBZTogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZ3JhbW1lUGxmIHtcbiAgbGliZWxsZTogc3RyaW5nXG4gIHByb2dyYW1tZVJlZjogc3RyaW5nXG4gIGF1dG9yaXNhdGlvbkVuZ2FnZW1lbnQ6IHN0cmluZ1xuICBjcmVkaXRQYWllbWVudDogc3RyaW5nXG4gIGFjdGlvbjogQWN0aW9uXG4gIGxpZ25lc0NyZWRpdHM/OiBMaWduZUNyZWRpdFBMRltdXG59XG5cbmV4cG9ydCBlbnVtIEFjdGlvbiB7XG4gIENyw6lhdGlvbiA9IFwiY3LDqWF0aW9uXCIsXG4gIE1vZGlmaWNhdGlvbiA9IFwibW9kaWZpY2F0aW9uXCIsXG4gIFN1cHByZXNzaW9uID0gXCJzdXBwcmVzc2lvblwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpZ25lQ3JlZGl0UExGIHtcbiAgaWQ6IHN0cmluZ1xuICBsaWJlbGxlOiBzdHJpbmdcbiAgYXV0b3Jpc2F0aW9uRW5nYWdlbWVudDogc3RyaW5nXG4gIGNyZWRpdFBhaWVtZW50OiBzdHJpbmdcbiAgYWN0aW9uOiBBY3Rpb25cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXNwb3NpdGlmQW1kdENyZWRpdFBMRlIge1xuICBsaXN0ZVByb2dyYW1tZXM/OiBMaWduZUNyZWRpdFBMRlJbXVxuICB0b3RhbEFFPzogVG90YWxcbiAgdG90YWxDUD86IFRvdGFsXG4gIGNwRWdhbEFlOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaWduZUNyZWRpdFBMRlIge1xuICBsaWJlbGxlOiBzdHJpbmdcbiAgcHJvZ3JhbW1lUmVmPzogc3RyaW5nXG4gIGF1dG9yaXNhdGlvbkVuZ2FnZW1lbnRTdXBwbGVtZW50YWlyZTogc3RyaW5nXG4gIGNyZWRpdFBhaWVtZW50U3VwcGxlbWVudGFpcmU6IHN0cmluZ1xuICBhdXRvcmlzYXRpb25FbmdhZ2VtZW50QW5udWxlOiBzdHJpbmdcbiAgY3JlZGl0UGFpZW1lbnRBbm51bGU6IHN0cmluZ1xuICBhY3Rpb246IEFjdGlvblxuICBsaWduZXNDcmVkaXRzPzogTGlnbmVDcmVkaXRQTEZSW11cbiAgaWQ/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUb3RhbCB7XG4gIHN1cHBsZW1lbnRhaXJlOiBzdHJpbmdcbiAgYW5udWxlOiBzdHJpbmdcbiAgc29sZGU6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN5Y2xlRGVWaWUge1xuICBkYXRlRGVwb3Q/OiBEYXRlXG4gIGRhdGVQdWJsaWNhdGlvbj86IERhdGVcbiAgc291bWlzQXJ0aWNsZTQwOiBzdHJpbmdcbiAgZXRhdERlc1RyYWl0ZW1lbnRzOiBFdGF0RGVzVHJhaXRlbWVudHNcbiAgZGF0ZVNvcnQ/OiBEYXRlXG4gIHNvcnQ/OiBTb3J0QW1lbmRlbWVudFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV0YXREZXNUcmFpdGVtZW50cyB7XG4gIGV0YXQ6IEV0YXRBbWVuZGVtZW50XG4gIHNvdXNFdGF0PzogU291c0V0YXRBbWVuZGVtZW50XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXRhdEFtZW5kZW1lbnQge1xuICBjb2RlOiBFdGF0QW1lbmRlbWVudENvZGVcbiAgbGliZWxsZTogRXRhdEFtZW5kZW1lbnRMaWJlbGxlXG59XG5cbmV4cG9ydCBlbnVtIEV0YXRBbWVuZGVtZW50Q29kZSB7XG4gIEFDID0gXCJBQ1wiLFxuICBBdCA9IFwiQVRcIixcbiAgRGkgPSBcIkRJXCIsXG4gIEVmZmFjw6kgPSBcImVmZmFjw6lcIixcbiAgRXIgPSBcIkVSXCIsXG4gIEV0ID0gXCJFVFwiLFxuICBJUiA9IFwiSVJcIixcbiAgSXJyMTI3ID0gXCJJUlIxMjdcIixcbiAgSXJyMjAgPSBcIklSUjIwXCIsXG4gIElycjM3ID0gXCJJUlIzN1wiLFxuICBJcnIzOCA9IFwiSVJSMzhcIixcbiAgSXJyNDEgPSBcIklSUjQxXCIsXG4gIElycjQyID0gXCJJUlI0MlwiLFxuICBJcnI0NSA9IFwiSVJSNDVcIixcbiAgSXJyNDggPSBcIklSUjQ4XCIsXG4gIElycjUzID0gXCJJUlI1M1wiLFxuICBJcnJhaSA9IFwiSVJSQUlcIixcbiAgSXJyYWlmID0gXCJJUlJBSUZcIixcbiAgSXJyZCA9IFwiSVJSRFwiLFxuICBJcnJoYyA9IFwiSVJSSENcIiwgLy8gSXJyZWNldmFibGUsIGhvcnMgY2hhbXBcbiAgSXJyaGQgPSBcIklSUkhEXCIsXG4gIElycnNhID0gXCJJUlJTQVwiLFxuICBSID0gXCJSXCIsXG4gIFJ0ID0gXCJSVFwiLFxuICBUID0gXCJUXCIsXG59XG5cbmV4cG9ydCBlbnVtIEV0YXRBbWVuZGVtZW50TGliZWxsZSB7XG4gIEFEaXNjdXRlciA9IFwiQSBkaXNjdXRlclwiLFxuICBBRMOpcG9zZXIgPSBcIkEgZMOpcG9zZXJcIixcbiAgRGlzY3V0w6kgPSBcIkRpc2N1dMOpXCIsXG4gIEVmZmFjw6kgPSBcImVmZmFjw6lcIixcbiAgRW5SZWNldmFiaWxpdMOpID0gXCJFbiByZWNldmFiaWxpdMOpXCIsXG4gIEVuVHJhaXRlbWVudCA9IFwiRW4gdHJhaXRlbWVudFwiLFxuICBJcnJlY2V2YWJsZSA9IFwiSXJyZWNldmFibGVcIixcbiAgSXJyZWNldmFibGU0MCA9IFwiSXJyZWNldmFibGUgNDBcIixcbiAgUmV0aXLDqSA9IFwiUmV0aXLDqVwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNvdXNFdGF0QW1lbmRlbWVudCB7XG4gIGNvZGU6IEV0YXRBbWVuZGVtZW50Q29kZVxuICBsaWJlbGxlOiBTb3J0QW1lbmRlbWVudFxufVxuXG5leHBvcnQgZW51bSBTb3J0QW1lbmRlbWVudCB7XG4gIEFkb3B0w6kgPSBcIkFkb3B0w6lcIixcbiAgQXV0cmVJcnJlY2V2YWJpbGl0w6kgPSBcIkF1dHJlIGlycmVjZXZhYmlsaXTDqVwiLFxuICBBdXRyZUlycmVjZXZhYmlsaXTDqTQwID0gXCJBdXRyZSBpcnJlY2V2YWJpbGl0w6kgNDBcIixcbiAgQXV0cmVzSXJyTE9MRiA9IFwiQXV0cmVzIGlyciBMT0xGXCIsXG4gIEF1dHJlc0lyckxPTEZTUyA9IFwiQXV0cmVzIGlyciBMT0xGU1NcIixcbiAgQ2F2YWxpZXI0NSA9IFwiQ2F2YWxpZXIgKDQ1KVwiLFxuICBDYXZhbGllckJ1ZGfDqXRhaXJlID0gXCJDYXZhbGllciBidWRnw6l0YWlyZVwiLFxuICBDYXZhbGllclNvY2lhbCA9IFwiQ2F2YWxpZXIgc29jaWFsXCIsXG4gIENoYW1wRGVMSGFiaWxpdGF0aW9uMzggPSBcIkNoYW1wIGRlIGwnaGFiaWxpdGF0aW9uICgzOClcIixcbiAgQ2hhcmdlID0gXCJDaGFyZ2VcIixcbiAgQ21wNDUgPSBcIkNNUCAoNDUpXCIsXG4gIENyw6lkaXRzID0gXCJDcsOpZGl0c1wiLFxuICBEaXNwb3NpdGlvblLDqWdsZW1lbnRhaXJlMzcgPSBcIkRpc3Bvc2l0aW9uIHLDqWdsZW1lbnRhaXJlICgzNylcIixcbiAgRG9tYWluZURlTGFMb2k0MSA9IFwiRG9tYWluZSBkZSBsYSBsb2kgKDQxKVwiLFxuICBEb21haW5lTG9pT3JnYW5pcXVlMTI3ID0gXCJEb21haW5lIGxvaSBvcmdhbmlxdWUgKDEyNylcIixcbiAgRG91YmxvbiA9IFwiRG91YmxvblwiLFxuICBFbnRvbm5vaXI0NSA9IFwiRW50b25ub2lyICg0NSlcIixcbiAgR2FnZSA9IFwiR2FnZVwiLFxuICBIb3JzQ2hhbXAgPSBcIkhvcnMgY2hhbXBcIixcbiAgSG9yc0TDqWxhaXMgPSBcIkhvcnMtZMOpbGFpc1wiLFxuICBJbmpvbmN0aW9uMjAgPSBcIkluam9uY3Rpb24gKDIwKVwiLFxuICBJcnJFblByZW1pw6hyZVBhcnRpZSA9IFwiSXJyIGVuIHByZW1pw6hyZSBwYXJ0aWVcIixcbiAgSXJyRW5TZWNvbmRlUGFydGllID0gXCJJcnIgZW4gc2Vjb25kZSBwYXJ0aWVcIixcbiAgTG9sZiA9IFwiTE9MRlwiLFxuICBMb2xmc3MgPSBcIkxPTEZTU1wiLFxuICBOb25Tb3V0ZW51ID0gXCJOb24gc291dGVudVwiLFxuICBPcmRyZUR1Sm91cjQ4ID0gXCJPcmRyZSBkdSBqb3VyICg0OClcIixcbiAgUiA9IFwiUlwiLFxuICBSYXRpZmljYXRpb25UcmFpdMOpNTMgPSBcIlJhdGlmaWNhdGlvbiB0cmFpdMOpICg1MylcIixcbiAgUmVqZXTDqSA9IFwiUmVqZXTDqVwiLFxuICBSZXRpcsOpID0gXCJSZXRpcsOpXCIsXG4gIFJldGlyw6lBcHLDqHNQdWJsaWNhdGlvbiA9IFwiUmV0aXLDqSBhcHLDqHMgcHVibGljYXRpb25cIixcbiAgUmV0aXLDqUF2YW50UHVibGljYXRpb24gPSBcIlJldGlyw6kgYXZhbnQgcHVibGljYXRpb25cIixcbiAgU2F0aXNmYWl0T3VJbm9ww6lyYW50NDIgPSBcIlNhdGlzZmFpdCBvdSBpbm9ww6lyYW50ICg0MilcIixcbiAgU291c0FtZW5kZW1lbnQ5OCA9IFwiU291cy1hbWVuZGVtZW50ICg5OClcIixcbiAgVG9tYsOpID0gXCJUb21iw6lcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXNjdXNzaW9uIHtcbiAgaWREaXNjdXNzaW9uPzogc3RyaW5nXG4gIHR5cGVQb3NpdGlvbj86IFR5cGVQb3NpdGlvblxufVxuXG5leHBvcnQgZW51bSBUeXBlUG9zaXRpb24ge1xuICBEZXJuaWVyID0gXCJEZXJuaWVyXCIsXG4gIE1pbGlldSA9IFwiTWlsaWV1XCIsXG4gIFByZW1pZXIgPSBcIlByZW1pZXJcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZGVudGlmaWNhdGlvbiB7XG4gIG51bWVyb0xvbmc6IHN0cmluZ1xuICBudW1lcm9PcmRyZURlcG90OiBzdHJpbmdcbiAgcHJlZml4ZU9yZ2FuZUV4YW1lbjogc3RyaW5nXG4gIG51bWVyb1JlY3Q6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvaVJlZmVyZW5jZSB7XG4gIGNvZGVMb2k/OiBzdHJpbmdcbiAgZGl2aXNpb25Db2RlTG9pPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9pbnRldXJGcmFnbWVudFRleHRlIHtcbiAgZGl2aXNpb24/OiBEaXZpc2lvblxuICBhbGluZWE/OiBBbGluZWFcbiAgbWlzc2lvblZpc2VlPzogTWlzc2lvblZpc2VlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWxpbmVhIHtcbiAgYXZhbnRBQXByZXM/OiBBdmFudEFBcHJlc1xuICBudW1lcm8/OiBzdHJpbmdcbiAgYWxpbmVhRGVzaWduYXRpb24/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGVudW0gQXZhbnRBQXByZXMge1xuICBBID0gXCJBXCIsXG4gIEFwcmVzID0gXCJBcHJlc1wiLFxuICBBdmFudCA9IFwiQXZhbnRcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXZpc2lvbiB7XG4gIHRpdHJlPzogc3RyaW5nXG4gIGFydGljbGVEZXNpZ25hdGlvbkNvdXJ0ZT86IHN0cmluZ1xuICBhcnRpY2xlRGVzaWduYXRpb24/OiBzdHJpbmdcbiAgdHlwZTogRGl2aXNpb25UeXBlXG4gIGF2YW50QUFwcmVzOiBBdmFudEFBcHJlc1xuICBkaXZpc2lvblJhdHRhY2hlZT86IHN0cmluZ1xuICBhcnRpY2xlQWRkaXRpb25uZWw6IHN0cmluZ1xuICBjaGFwaXRyZUFkZGl0aW9ubmVsOiBzdHJpbmdcbiAgdXJsRGl2aXNpb25UZXh0ZVZpc2U/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGVudW0gRGl2aXNpb25UeXBlIHtcbiAgQW5uZXhlID0gXCJBTk5FWEVcIixcbiAgQXJ0aWNsZSA9IFwiQVJUSUNMRVwiLFxuICBDaGFwaXRyZSA9IFwiQ0hBUElUUkVcIixcbiAgVGl0cmUgPSBcIlRJVFJFXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWlzc2lvblZpc2VlIHtcbiAgY29kZUV0YXQ6IENvZGVFdGF0XG4gIGNvZGVNaXNzaW9uTWluZWZpOiBzdHJpbmdcbiAgbGliZWxsZU1pc3Npb246IHN0cmluZ1xuICBtaXNzaW9uUmVmOiBzdHJpbmdcbn1cblxuZXhwb3J0IGVudW0gQ29kZUV0YXQge1xuICBCID0gXCJCXCIsXG4gIEMgPSBcIkNcIixcbiAgRCA9IFwiRFwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcHJlc2VudGF0aW9uIHtcbiAgbm9tOiBOb21cbiAgdHlwZU1pbWU6IFR5cGVNaW1lXG4gIHN0YXR1dFJlcHJlc2VudGF0aW9uOiBTdGF0dXRSZXByZXNlbnRhdGlvblxuICBjb250ZW51OiBDb250ZW51XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudSB7XG4gIGRvY3VtZW50VVJJOiBzdHJpbmdcbn1cblxuZXhwb3J0IGVudW0gTm9tIHtcbiAgUGRmID0gXCJQREZcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0dXRSZXByZXNlbnRhdGlvbiB7XG4gIHZlcmJhdGltOiBib29sZWFuXG4gIGNhbm9uaXF1ZTogYm9vbGVhblxuICBvZmZpY2llbGxlOiBib29sZWFuXG4gIHRyYW5zY3JpcHRpb246IGJvb2xlYW5cbiAgZW5yZWdpc3RyZW1lbnQ6IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBlTWltZSB7XG4gIHR5cGU6IFR5cGVNaW1lVHlwZVxuICBzdWJUeXBlOiBOb21cbn1cblxuZXhwb3J0IGVudW0gVHlwZU1pbWVUeXBlIHtcbiAgQXBwbGljYXRpb24gPSBcImFwcGxpY2F0aW9uXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmF0YWlyZXMge1xuICBhdXRldXI6IEF1dGV1clxuICBjb3NpZ25hdGFpcmVzUmVmcz86IHN0cmluZ1tdXG4gIGNvc2lnbmF0YWlyZXM/OiBBY3RldXJbXSAvLyBBZGRlZCBieSBUcmljb3RldXNlc1xuICBzdWZmaXhlPzogc3RyaW5nXG4gIGxpYmVsbGU/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRldXIge1xuICB0eXBlQXV0ZXVyOiBUeXBlQXV0ZXVyXG4gIGdvdXZlcm5lbWVudFJlZj86IHN0cmluZ1xuICBnb3V2ZXJuZW1lbnQ/OiBPcmdhbmUgLy8gQWRkZWQgYnkgVHJpY290ZXVzZXNcbiAgYWN0ZXVyUmVmPzogc3RyaW5nXG4gIGFjdGV1cj86IEFjdGV1ciAvLyBBZGRlZCBieSBUcmljb3RldXNlc1xuICBncm91cGVQb2xpdGlxdWVSZWY/OiBzdHJpbmdcbiAgZ3JvdXBlUG9saXRpcXVlPzogT3JnYW5lIC8vIEFkZGVkIGJ5IFRyaWNvdGV1c2VzXG4gIGF1dGV1clJhcHBvcnRldXJPcmdhbmVSZWY/OiBzdHJpbmdcbiAgYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZT86IE9yZ2FuZSAvLyBBZGRlZCBieSBUcmljb3RldXNlc1xufVxuXG5leHBvcnQgZW51bSBUeXBlQXV0ZXVyIHtcbiAgRMOpcHV0w6kgPSBcIkTDqXB1dMOpXCIsXG4gIEdvdXZlcm5lbWVudCA9IFwiR291dmVybmVtZW50XCIsXG4gIFJhcHBvcnRldXIgPSBcIlJhcHBvcnRldXJcIixcbn1cblxuLy8gQ29udmVydHMgSlNPTiBzdHJpbmdzIHRvL2Zyb20geW91ciB0eXBlc1xuLy8gYW5kIGFzc2VydHMgdGhlIHJlc3VsdHMgb2YgSlNPTi5wYXJzZSBhdCBydW50aW1lXG5leHBvcnQgY2xhc3MgQ29udmVydCB7XG4gIHB1YmxpYyBzdGF0aWMgdG9BbWVuZGVtZW50KGpzb246IHN0cmluZyk6IEFtZW5kZW1lbnQge1xuICAgIHJldHVybiBjYXN0KEpTT04ucGFyc2UoanNvbiksIHIoXCJBbWVuZGVtZW50XCIpKVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhbWVuZGVtZW50VG9Kc29uKHZhbHVlOiBBbWVuZGVtZW50KTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodW5jYXN0KHZhbHVlLCByKFwiQW1lbmRlbWVudFwiKSksIG51bGwsIDIpXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHRvQW1lbmRlbWVudHMoanNvbjogc3RyaW5nKTogQW1lbmRlbWVudHMge1xuICAgIHJldHVybiBjYXN0KEpTT04ucGFyc2UoanNvbiksIHIoXCJBbWVuZGVtZW50c1wiKSlcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYW1lbmRlbWVudHNUb0pzb24odmFsdWU6IEFtZW5kZW1lbnRzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodW5jYXN0KHZhbHVlLCByKFwiQW1lbmRlbWVudHNcIikpLCBudWxsLCAyKVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0b1RleHRlTGVnaXNsYXRpZihqc29uOiBzdHJpbmcpOiBUZXh0ZUxlZ2lzbGF0aWYge1xuICAgIHJldHVybiBjYXN0KEpTT04ucGFyc2UoanNvbiksIHIoXCJUZXh0ZUxlZ2lzbGF0aWZcIikpXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHRleHRlTGVnaXNsYXRpZlRvSnNvbih2YWx1ZTogVGV4dGVMZWdpc2xhdGlmKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodW5jYXN0KHZhbHVlLCByKFwiVGV4dGVMZWdpc2xhdGlmXCIpKSwgbnVsbCwgMilcbiAgfVxufVxuXG5mdW5jdGlvbiBpbnZhbGlkVmFsdWUodHlwOiBhbnksIHZhbDogYW55LCBrZXk6IGFueSA9IFwiXCIpOiBuZXZlciB7XG4gIGlmIChrZXkpIHtcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgIGBJbnZhbGlkIHZhbHVlIGZvciBrZXkgXCIke2tleX1cIi4gRXhwZWN0ZWQgdHlwZSAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICB0eXAsXG4gICAgICApfSBidXQgZ290ICR7SlNPTi5zdHJpbmdpZnkodmFsKX1gLFxuICAgIClcbiAgfVxuICB0aHJvdyBFcnJvcihcbiAgICBgSW52YWxpZCB2YWx1ZSAke0pTT04uc3RyaW5naWZ5KHZhbCl9IGZvciB0eXBlICR7SlNPTi5zdHJpbmdpZnkodHlwKX1gLFxuICApXG59XG5cbmZ1bmN0aW9uIGpzb25Ub0pTUHJvcHModHlwOiBhbnkpOiBhbnkge1xuICBpZiAodHlwLmpzb25Ub0pTID09PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBtYXA6IGFueSA9IHt9XG4gICAgdHlwLnByb3BzLmZvckVhY2goKHA6IGFueSkgPT4gKG1hcFtwLmpzb25dID0geyBrZXk6IHAuanMsIHR5cDogcC50eXAgfSkpXG4gICAgdHlwLmpzb25Ub0pTID0gbWFwXG4gIH1cbiAgcmV0dXJuIHR5cC5qc29uVG9KU1xufVxuXG5mdW5jdGlvbiBqc1RvSlNPTlByb3BzKHR5cDogYW55KTogYW55IHtcbiAgaWYgKHR5cC5qc1RvSlNPTiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbWFwOiBhbnkgPSB7fVxuICAgIHR5cC5wcm9wcy5mb3JFYWNoKChwOiBhbnkpID0+IChtYXBbcC5qc10gPSB7IGtleTogcC5qc29uLCB0eXA6IHAudHlwIH0pKVxuICAgIHR5cC5qc1RvSlNPTiA9IG1hcFxuICB9XG4gIHJldHVybiB0eXAuanNUb0pTT05cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtKHZhbDogYW55LCB0eXA6IGFueSwgZ2V0UHJvcHM6IGFueSwga2V5OiBhbnkgPSBcIlwiKTogYW55IHtcbiAgZnVuY3Rpb24gdHJhbnNmb3JtUHJpbWl0aXZlKHR5cDogc3RyaW5nLCB2YWw6IGFueSk6IGFueSB7XG4gICAgaWYgKHR5cGVvZiB0eXAgPT09IHR5cGVvZiB2YWwpIHJldHVybiB2YWxcbiAgICByZXR1cm4gaW52YWxpZFZhbHVlKHR5cCwgdmFsLCBrZXkpXG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2Zvcm1Vbmlvbih0eXBzOiBhbnlbXSwgdmFsOiBhbnkpOiBhbnkge1xuICAgIC8vIHZhbCBtdXN0IHZhbGlkYXRlIGFnYWluc3Qgb25lIHR5cCBpbiB0eXBzXG4gICAgY29uc3QgbCA9IHR5cHMubGVuZ3RoXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IHR5cCA9IHR5cHNbaV1cbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB0cmFuc2Zvcm0odmFsLCB0eXAsIGdldFByb3BzKVxuICAgICAgfSBjYXRjaCAoXykge31cbiAgICB9XG4gICAgcmV0dXJuIGludmFsaWRWYWx1ZSh0eXBzLCB2YWwpXG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2Zvcm1FbnVtKGNhc2VzOiBzdHJpbmdbXSwgdmFsOiBhbnkpOiBhbnkge1xuICAgIGlmIChjYXNlcy5pbmRleE9mKHZhbCkgIT09IC0xKSByZXR1cm4gdmFsXG4gICAgcmV0dXJuIGludmFsaWRWYWx1ZShjYXNlcywgdmFsKVxuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNmb3JtQXJyYXkodHlwOiBhbnksIHZhbDogYW55KTogYW55IHtcbiAgICAvLyB2YWwgbXVzdCBiZSBhbiBhcnJheSB3aXRoIG5vIGludmFsaWQgZWxlbWVudHNcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsKSkgcmV0dXJuIGludmFsaWRWYWx1ZShcImFycmF5XCIsIHZhbClcbiAgICByZXR1cm4gdmFsLm1hcCgoZWwpID0+IHRyYW5zZm9ybShlbCwgdHlwLCBnZXRQcm9wcykpXG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRlKHZhbDogYW55KTogYW55IHtcbiAgICBpZiAodmFsID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBjb25zdCBkID0gbmV3IERhdGUodmFsKVxuICAgIGlmIChpc05hTihkLnZhbHVlT2YoKSkpIHtcbiAgICAgIHJldHVybiBpbnZhbGlkVmFsdWUoXCJEYXRlXCIsIHZhbClcbiAgICB9XG4gICAgcmV0dXJuIGRcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybU9iamVjdChcbiAgICBwcm9wczogeyBbazogc3RyaW5nXTogYW55IH0sXG4gICAgYWRkaXRpb25hbDogYW55LFxuICAgIHZhbDogYW55LFxuICApOiBhbnkge1xuICAgIGlmICh2YWwgPT09IG51bGwgfHwgdHlwZW9mIHZhbCAhPT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgIHJldHVybiBpbnZhbGlkVmFsdWUoXCJvYmplY3RcIiwgdmFsKVxuICAgIH1cbiAgICBjb25zdCByZXN1bHQ6IGFueSA9IHt9XG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvcHMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgY29uc3QgcHJvcCA9IHByb3BzW2tleV1cbiAgICAgIGNvbnN0IHYgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmFsLCBrZXkpXG4gICAgICAgID8gdmFsW2tleV1cbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgIHJlc3VsdFtwcm9wLmtleV0gPSB0cmFuc2Zvcm0odiwgcHJvcC50eXAsIGdldFByb3BzLCBwcm9wLmtleSlcbiAgICB9KVxuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHZhbCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywga2V5KSkge1xuICAgICAgICByZXN1bHRba2V5XSA9IHRyYW5zZm9ybSh2YWxba2V5XSwgYWRkaXRpb25hbCwgZ2V0UHJvcHMsIGtleSlcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGlmICh0eXAgPT09IFwiYW55XCIpIHJldHVybiB2YWxcbiAgaWYgKHR5cCA9PT0gbnVsbCkge1xuICAgIGlmICh2YWwgPT09IG51bGwpIHJldHVybiB2YWxcbiAgICByZXR1cm4gaW52YWxpZFZhbHVlKHR5cCwgdmFsKVxuICB9XG4gIC8vIGlmICh0eXAgPT09IGZhbHNlKSByZXR1cm4gaW52YWxpZFZhbHVlKHR5cCwgdmFsKVxuICB3aGlsZSAodHlwZW9mIHR5cCA9PT0gXCJvYmplY3RcIiAmJiB0eXAucmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICB0eXAgPSB0eXBlTWFwW3R5cC5yZWZdXG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodHlwKSkgcmV0dXJuIHRyYW5zZm9ybUVudW0odHlwLCB2YWwpXG4gIGlmICh0eXBlb2YgdHlwID09PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIHR5cC5oYXNPd25Qcm9wZXJ0eShcInVuaW9uTWVtYmVyc1wiKVxuICAgICAgPyB0cmFuc2Zvcm1Vbmlvbih0eXAudW5pb25NZW1iZXJzLCB2YWwpXG4gICAgICA6IHR5cC5oYXNPd25Qcm9wZXJ0eShcImFycmF5SXRlbXNcIilcbiAgICAgICAgPyB0cmFuc2Zvcm1BcnJheSh0eXAuYXJyYXlJdGVtcywgdmFsKVxuICAgICAgICA6IHR5cC5oYXNPd25Qcm9wZXJ0eShcInByb3BzXCIpXG4gICAgICAgICAgPyB0cmFuc2Zvcm1PYmplY3QoZ2V0UHJvcHModHlwKSwgdHlwLmFkZGl0aW9uYWwsIHZhbClcbiAgICAgICAgICA6IGludmFsaWRWYWx1ZSh0eXAsIHZhbClcbiAgfVxuICAvLyBOdW1iZXJzIGNhbiBiZSBwYXJzZWQgYnkgRGF0ZSBidXQgc2hvdWxkbid0IGJlLlxuICBpZiAodHlwID09PSBEYXRlICYmIHR5cGVvZiB2YWwgIT09IFwibnVtYmVyXCIpIHJldHVybiB0cmFuc2Zvcm1EYXRlKHZhbClcbiAgcmV0dXJuIHRyYW5zZm9ybVByaW1pdGl2ZSh0eXAsIHZhbClcbn1cblxuZnVuY3Rpb24gY2FzdDxUPih2YWw6IGFueSwgdHlwOiBhbnkpOiBUIHtcbiAgcmV0dXJuIHRyYW5zZm9ybSh2YWwsIHR5cCwganNvblRvSlNQcm9wcylcbn1cblxuZnVuY3Rpb24gdW5jYXN0PFQ+KHZhbDogVCwgdHlwOiBhbnkpOiBhbnkge1xuICByZXR1cm4gdHJhbnNmb3JtKHZhbCwgdHlwLCBqc1RvSlNPTlByb3BzKVxufVxuXG5mdW5jdGlvbiBhKHR5cDogYW55KSB7XG4gIHJldHVybiB7IGFycmF5SXRlbXM6IHR5cCB9XG59XG5cbmZ1bmN0aW9uIHUoLi4udHlwczogYW55W10pIHtcbiAgcmV0dXJuIHsgdW5pb25NZW1iZXJzOiB0eXBzIH1cbn1cblxuZnVuY3Rpb24gbyhwcm9wczogYW55W10sIGFkZGl0aW9uYWw6IGFueSkge1xuICByZXR1cm4geyBwcm9wcywgYWRkaXRpb25hbCB9XG59XG5cbi8vIGZ1bmN0aW9uIG0oYWRkaXRpb25hbDogYW55KSB7XG4vLyAgIHJldHVybiB7IHByb3BzOiBbXSwgYWRkaXRpb25hbCB9XG4vLyB9XG5cbmZ1bmN0aW9uIHIobmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiB7IHJlZjogbmFtZSB9XG59XG5cbmNvbnN0IHR5cGVNYXA6IGFueSA9IHtcbiAgQW1lbmRlbWVudHM6IG8oXG4gICAgW1xuICAgICAge1xuICAgICAgICBqc29uOiBcInRleHRlc0xlZ2lzbGF0aWZzXCIsXG4gICAgICAgIGpzOiBcInRleHRlc0xlZ2lzbGF0aWZzXCIsXG4gICAgICAgIHR5cDogYShyKFwiVGV4dGVMZWdpc2xhdGlmXCIpKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgVGV4dGVMZWdpc2xhdGlmOiBvKFxuICAgIFtcbiAgICAgIHsganNvbjogXCJyZWZUZXh0ZUxlZ2lzbGF0aWZcIiwganM6IFwicmVmVGV4dGVMZWdpc2xhdGlmXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImFtZW5kZW1lbnRzXCIsIGpzOiBcImFtZW5kZW1lbnRzXCIsIHR5cDogcihcIkFtZW5kZW1lbnRzQ2xhc3NcIikgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBBbWVuZGVtZW50c0NsYXNzOiBvKFxuICAgIFt7IGpzb246IFwiYW1lbmRlbWVudFwiLCBqczogXCJhbWVuZGVtZW50XCIsIHR5cDogYShyKFwiQW1lbmRlbWVudFwiKSkgfV0sXG4gICAgZmFsc2UsXG4gICksXG4gIEFtZW5kZW1lbnRXcmFwcGVyOiBvKFxuICAgIFt7IGpzb246IFwiYW1lbmRlbWVudFwiLCBqczogXCJhbWVuZGVtZW50XCIsIHR5cDogcihcIkFtZW5kZW1lbnRcIikgfV0sXG4gICAgZmFsc2UsXG4gICksXG4gIEFtZW5kZW1lbnQ6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcInVpZFwiLCBqczogXCJ1aWRcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwiY2hyb25vdGFnXCIsIGpzOiBcImNocm9ub3RhZ1wiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJsZWdpc2xhdHVyZVwiLCBqczogXCJsZWdpc2xhdHVyZVwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJpZGVudGlmaWNhdGlvblwiLFxuICAgICAgICBqczogXCJpZGVudGlmaWNhdGlvblwiLFxuICAgICAgICB0eXA6IHIoXCJJZGVudGlmaWNhdGlvblwiKSxcbiAgICAgIH0sXG4gICAgICB7IGpzb246IFwiZXhhbWVuUmVmXCIsIGpzOiBcImV4YW1lblJlZlwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJ0ZXh0ZUxlZ2lzbGF0aWZSZWZcIiwganM6IFwidGV4dGVMZWdpc2xhdGlmUmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcInRyaUFtZW5kZW1lbnRcIiwganM6IFwidHJpQW1lbmRlbWVudFwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImNhcmRpbmFsaXRlQW1kdE11bHRpcGxlc1wiLFxuICAgICAgICBqczogXCJjYXJkaW5hbGl0ZUFtZHRNdWx0aXBsZXNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIiksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImFtZW5kZW1lbnRQYXJlbnRSZWZcIixcbiAgICAgICAganM6IFwiYW1lbmRlbWVudFBhcmVudFJlZlwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSxcbiAgICAgIH0sXG4gICAgICB7IGpzb246IFwic2lnbmF0YWlyZXNcIiwganM6IFwic2lnbmF0YWlyZXNcIiwgdHlwOiByKFwiU2lnbmF0YWlyZXNcIikgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJwb2ludGV1ckZyYWdtZW50VGV4dGVcIixcbiAgICAgICAganM6IFwicG9pbnRldXJGcmFnbWVudFRleHRlXCIsXG4gICAgICAgIHR5cDogcihcIlBvaW50ZXVyRnJhZ21lbnRUZXh0ZVwiKSxcbiAgICAgIH0sXG4gICAgICB7IGpzb246IFwiY29ycHNcIiwganM6IFwiY29ycHNcIiwgdHlwOiB1KHVuZGVmaW5lZCwgcihcIkNvcnBzXCIpKSB9LFxuICAgICAgeyBqc29uOiBcImN5Y2xlRGVWaWVcIiwganM6IFwiY3ljbGVEZVZpZVwiLCB0eXA6IHIoXCJDeWNsZURlVmllXCIpIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwicmVwcmVzZW50YXRpb25cIixcbiAgICAgICAganM6IFwicmVwcmVzZW50YXRpb25cIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgcihcIlJlcHJlc2VudGF0aW9uXCIpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwic2VhbmNlRGlzY3Vzc2lvblJlZlwiLFxuICAgICAgICBqczogXCJzZWFuY2VEaXNjdXNzaW9uUmVmXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpLFxuICAgICAgfSxcbiAgICAgIHsganNvbjogXCJhcnRpY2xlOTlcIiwganM6IFwiYXJ0aWNsZTk5XCIsIHR5cDogXCJcIiB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImxvaVJlZmVyZW5jZVwiLFxuICAgICAgICBqczogXCJsb2lSZWZlcmVuY2VcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgcihcIkxvaVJlZmVyZW5jZVwiKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImRpc2N1c3Npb25Db21tdW5lXCIsXG4gICAgICAgIGpzOiBcImRpc2N1c3Npb25Db21tdW5lXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIHIoXCJEaXNjdXNzaW9uXCIpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiZGlzY3Vzc2lvbklkZW50aXF1ZVwiLFxuICAgICAgICBqczogXCJkaXNjdXNzaW9uSWRlbnRpcXVlXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIHIoXCJEaXNjdXNzaW9uXCIpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiYWNjb3JkR291dmVybmVtZW50RGVwb3RIb3JzRGVsYWlcIixcbiAgICAgICAganM6IFwiYWNjb3JkR291dmVybmVtZW50RGVwb3RIb3JzRGVsYWlcIixcbiAgICAgICAgdHlwOiByKFwiQWNjb3JkR291dmVybmVtZW50RGVwb3RIb3JzRGVsYWlcIiksXG4gICAgICB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIENvcnBzOiBvKFxuICAgIFtcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJjYXJ0b3VjaGVJbmZvcm1hdGlmXCIsXG4gICAgICAgIGpzOiBcImNhcnRvdWNoZUluZm9ybWF0aWZcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIiksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImNvbnRlbnVBdXRldXJcIixcbiAgICAgICAganM6IFwiY29udGVudUF1dGV1clwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCByKFwiQ29udGVudUF1dGV1clwiKSksXG4gICAgICB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIENvbnRlbnVBdXRldXI6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcImRpc3Bvc2l0aWZcIiwganM6IFwiZGlzcG9zaXRpZlwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImF2YW50QXBwZWxcIixcbiAgICAgICAganM6IFwiYXZhbnRBcHBlbFwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCByKFwiQXZhbnRBcHBlbFwiKSksXG4gICAgICB9LFxuICAgICAgeyBqc29uOiBcImV4cG9zZVNvbW1haXJlXCIsIGpzOiBcImV4cG9zZVNvbW1haXJlXCIsIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZcIixcbiAgICAgICAganM6IFwiZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgcihcIkRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGXCIpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSXCIsXG4gICAgICAgIGpzOiBcImRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGUlwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCByKFwiRGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSXCIpKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgQXZhbnRBcHBlbDogbyhcbiAgICBbXG4gICAgICB7IGpzb246IFwiZGlzcG9zaXRpZlwiLCBqczogXCJkaXNwb3NpdGlmXCIsIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZcIixcbiAgICAgICAganM6IFwiZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgcihcIkRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGXCIpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiZGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSXCIsXG4gICAgICAgIGpzOiBcImRpc3Bvc2l0aWZBbWR0Q3JlZGl0UExGUlwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCByKFwiRGlzcG9zaXRpZkFtZHRDcmVkaXRQTEZSXCIpKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgRGlzcG9zaXRpZkFtZHRDcmVkaXRQTEY6IG8oXG4gICAgW1xuICAgICAge1xuICAgICAgICBqc29uOiBcImxpc3RlUHJvZ3JhbW1lc1wiLFxuICAgICAgICBqczogXCJsaXN0ZVByb2dyYW1tZXNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiUHJvZ3JhbW1lUGxmXCIpKSksXG4gICAgICB9LFxuICAgICAgeyBqc29uOiBcInNvbGRlQUVcIiwganM6IFwic29sZGVBRVwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcInNvbGRlQ1BcIiwganM6IFwic29sZGVDUFwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcImNwRWdhbEFlXCIsIGpzOiBcImNwRWdhbEFlXCIsIHR5cDogXCJcIiB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIFByb2dyYW1tZVBsZjogbyhcbiAgICBbXG4gICAgICB7IGpzb246IFwibGliZWxsZVwiLCBqczogXCJsaWJlbGxlXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcInByb2dyYW1tZVJlZlwiLCBqczogXCJwcm9ncmFtbWVSZWZcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb2