diff --git a/README.md b/README.md index 4c6de347..b8777f5a 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,7 @@ and the **Bulletin CID** — `bafkr4ibynaanfrddyjgpmut2qrcu6vdttocbp4feyw6vkgxkkhqndjksny` -**Gateway URL** — +**Gateway URL** — **DotNS name** — `dotify-test01.dev-dot.li` @@ -128,7 +128,7 @@ Default ports: | Artist portal | | | Signaling | | | Backend API | | -| Bulletin RPC | `wss://paseo-bulletin-rpc.polkadot.io` | +| Bulletin RPC | `wss://bulletin-paseo.tservices.es:8443` | | Asset Hub RPC | | The app talks to Paseo Bulletin and Asset Hub directly from the browser. A local diff --git a/contracts/evm/cdm.json b/contracts/evm/cdm.json index bcb21426..c4779a59 100644 --- a/contracts/evm/cdm.json +++ b/contracts/evm/cdm.json @@ -507,5 +507,5 @@ "metadataCid": "bafk2bzaceckm27ft3kvt4mjs67hzklylws5fp5d4z4nrvpa34gmzndtqz7lwg" } }, - "registry": "0x59b0245778917af55224e5f8fb55f7f8d452619f" + "registry": "0x05662b3dbd5dd9f2ff92d67630477e84b0b37c1f" } diff --git a/contracts/evm/tasks/cdmPublish.ts b/contracts/evm/tasks/cdmPublish.ts index fa254922..63bfbae8 100644 --- a/contracts/evm/tasks/cdmPublish.ts +++ b/contracts/evm/tasks/cdmPublish.ts @@ -39,11 +39,12 @@ function readCidIndex(): CidIndex | null { /// Community-operated ContractRegistry for the Product `devnet` preset, i.e. Paseo /// testnet Asset Hub (para 1000, EVM chain 420420417). Sourced from -/// paritytech/contract-dependency-manager `src/lib/env/src/registry.ts`. +/// docs.polkadotcommunity.foundation/reference/addresses after the September +/// 2026 Product DevNet registry migration. /// /// Deliberately not the `paseo` preset registry: CDM's own docs note that `paseo` /// targets paseo-next (para 1500), a different network that holds no Dotify contracts. -const DEVNET_REGISTRY_ADDRESS = '0x59b0245778917af55224e5f8fb55f7f8d452619f' as const; +const DEVNET_REGISTRY_ADDRESS = '0x05662b3dbd5dd9f2ff92d67630477e84b0b37c1f' as const; const REGISTRY_ABI = [ { diff --git a/docs/backlog/24-access-streaming-v2.md b/docs/backlog/24-access-streaming-v2.md index 5d1c1cd0..cd7aa564 100644 --- a/docs/backlog/24-access-streaming-v2.md +++ b/docs/backlog/24-access-streaming-v2.md @@ -25,13 +25,13 @@ P0 once approved (it redefines the production spine's access rules). ## Phases -| Phase | Scope | -| --- | --- | -| P1 | Access model v2 (contracts + UI); delete the preview machinery | -| P2 | Session auth in the key service (SIWE login, token key requests) | -| P3 | Chunked container publish + MSE playback + v1 fallback + startup metrics | -| P4 | Product SDK feasibility spikes: Host detection/signing, resource allocation, PolkaVM/CDM contract portability, Playground deployment, and Statement Store presence | -| P5 | Real Humanity / Individuality behind `human-free` (promotes ticket 11 only after research proves the live source and privacy model) | +| Phase | Scope | +| ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| P1 | Access model v2 (contracts + UI); delete the preview machinery | +| P2 | Session auth in the key service (SIWE login, token key requests) | +| P3 | Chunked container publish + MSE playback + v1 fallback + startup metrics | +| P4 | Product SDK feasibility spikes: Host detection/signing, resource allocation, PolkaVM/CDM contract portability, Playground deployment, and Statement Store presence | +| P5 | Real Humanity / Individuality behind `human-free` (promotes ticket 11 only after research proves the live source and privacy model) | ## Constraints @@ -151,11 +151,11 @@ W08 first-sound slice: the browser/device validation matrix, cold/warm sample collection, and the backend read-through gateway decision. -Product SDK adaptation note (updated 2026-08-30): +Product SDK adaptation note (updated 2026-09-12): -- Product SDK 0.23.0 and deploy tooling 0.13.1 remain - prototype/reference/unaudited in Dotify's pinned baseline. npm now publishes - Product SDK 0.25.0, which is deferred to a dedicated compatibility PR. +- Product SDK 0.27.0 and deploy tooling 0.16.2 remain + prototype/reference/unaudited in Dotify's pinned baseline after the Product + DevNet DotNS/CDM/descriptors refresh. - Root PAPI 3.0.0 is not adopted yet because the current Product SDK graph uses PAPI 2.2.x while `@polkadot-apps` still uses PAPI 1.23.x. - Host APIs are progressive enhancement for Product containers; standalone web diff --git a/docs/backlog/README.md b/docs/backlog/README.md index 8629e138..2ba669cf 100644 --- a/docs/backlog/README.md +++ b/docs/backlog/README.md @@ -44,11 +44,11 @@ Do not add ornamental product features until the following spine is stable: ## Sprint 2 — Product hardening and philosophical differentiation -| Backlog doc | GitHub issue | Status | Goal | -| ------------------------------------------------ | ------------ | ------------------------------------------------------------------------------- | ---------------------------------------- | +| Backlog doc | GitHub issue | Status | Goal | +| ------------------------------------------------ | ------------ | ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | | `10-observability-health-checks.md` | #11 | Delivered on `main`; public signaling/env evidence closed through #36/#37, DAV2/gateway evidence continues in #88 | Observability and health checks | -| `11-proof-of-personhood-integration-research.md` | #12 | Open - rewrite against current Product SDK / Individuality host APIs before build | Proof of Personhood integration research | -| `12-ambassador-social-propagation-model.md` | #13 | Open - keep last until provenance, consent, and anti-abuse foundations exist | Ambassador and social propagation model | +| `11-proof-of-personhood-integration-research.md` | #12 | Open - rewrite against current Product SDK / Individuality host APIs before build | Proof of Personhood integration research | +| `12-ambassador-social-propagation-model.md` | #13 | Open - keep last until provenance, consent, and anti-abuse foundations exist | Ambassador and social propagation model | ## Design track - experience evolution @@ -60,17 +60,17 @@ track-driven dark listening room. Constellation, Living Interface, and layered Thresholds remain design history unless a current ticket explicitly revives a specific pattern with real data. -| Backlog doc | Status | Goal | -| ----------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `13-living-light-design-foundation.md` | Delivered on `main` | Aura engine, presence, dock, immersive-room presence, hero/typography/cover-fallback polish | -| `14-one-link-room-creation-sheet.md` | Delivered on `main` | "As easy as sharing a link" room-create sheet over the existing createSession | -| `15-immersive-room-parity.md` | Delivered (chat via #20) | Room code pill + copy, access chips, sync note; the deferred chatter aside landed with `20-room-social-layer.md` | -| `16-wallet-connected-identity-card.md` | Delivered on `main` | Calm connected-wallet identity card with real, non-fabricated stats | -| `17-artist-studio-living-light-parity.md` | Delivered on `main` | Studio identity header, metric cards, sovereignty card, releases + support showcase | -| `19-constellation-design-track.md` | Phases A-C prototyped (see delivery notes) | Constellation direction: The Stage (aura lamp rail), Sky of rooms, micro-moments (`docs/design/dotify-constellation-ux.md`) | -| `20-room-social-layer.md` | Delivered on `main` (PR #67) | Broadcast reactions (attributed petals) + in-room chat over the signaling relay; 50-message in-room history, rate-limited, fail closed | -| `22-living-interface.md` | Delivered on `design/living-interface` | Living Interface: borders replaced by aura-tinted tonal layering, relaxed geometry, deep-glass floating layers, conversational chat bubbles, one breathing motion curve (`docs/design/dotify-living-interface.md`) | -| `23-room-identity.md` | Layer 1 delivered on `feat/room-identity` | A pseudonym set once per wallet: off-chain per-address display name, auto-filled into room create/join; Layer 2 (link/QR join step) and on-chain handle registry are future (`docs/design/room-identity.md`) | +| Backlog doc | Status | Goal | +| ----------------------------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `13-living-light-design-foundation.md` | Delivered on `main` | Aura engine, presence, dock, immersive-room presence, hero/typography/cover-fallback polish | +| `14-one-link-room-creation-sheet.md` | Delivered on `main` | "As easy as sharing a link" room-create sheet over the existing createSession | +| `15-immersive-room-parity.md` | Delivered (chat via #20) | Room code pill + copy, access chips, sync note; the deferred chatter aside landed with `20-room-social-layer.md` | +| `16-wallet-connected-identity-card.md` | Delivered on `main` | Calm connected-wallet identity card with real, non-fabricated stats | +| `17-artist-studio-living-light-parity.md` | Delivered on `main` | Studio identity header, metric cards, sovereignty card, releases + support showcase | +| `19-constellation-design-track.md` | Phases A-C prototyped (see delivery notes) | Constellation direction: The Stage (aura lamp rail), Sky of rooms, micro-moments (`docs/design/dotify-constellation-ux.md`) | +| `20-room-social-layer.md` | Delivered on `main` (PR #67) | Broadcast reactions (attributed petals) + in-room chat over the signaling relay; 50-message in-room history, rate-limited, fail closed | +| `22-living-interface.md` | Delivered on `design/living-interface` | Living Interface: borders replaced by aura-tinted tonal layering, relaxed geometry, deep-glass floating layers, conversational chat bubbles, one breathing motion curve (`docs/design/dotify-living-interface.md`) | +| `23-room-identity.md` | Layer 1 delivered on `feat/room-identity` | A pseudonym set once per wallet: off-chain per-address display name, auto-filled into room create/join; Layer 2 (link/QR join step) and on-chain handle registry are future (`docs/design/room-identity.md`) | | `25-thresholds-functional-v1.md` | Delivered on `main` by merged PR #92; follow-up validation passed 2026-07-14 | `Shared Score` IA with Living Light presentation over the real room-link threshold, retired-preview copy cleanup, multi-recipient royalty splits, and production-spine security hardening (`docs/design/dotify-shared-score.md`; original rationale in `docs/design/dotify-thresholds.md`) | Delivered before the #92 consolidation: album-aura engine, aura-colored cover @@ -85,8 +85,8 @@ Deferred (needs a backend channel, deliberately not faked): persisted room mood. ## Dotify v2 - strategic pivot -| Backlog doc | Status | Goal | -| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Backlog doc | Status | Goal | +| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `24-access-streaming-v2.md` | P1/P2 delivered; P3 DAV2 vertical slice and bounded read-ahead delivered; real-browser/gateway validation remains (design in `docs/design/dotify-v2-access-and-streaming.md`) | Remove the 42% preview; three-mode artist policy (free / paid / human-free via Proof of Personhood); sign-once session auth for key delivery; encrypted chunked streaming (`dotify.audio.v2`) for fast starts; Product SDK / Playground / Humanity feasibility as a later host-integration track | Ticket 24 supersedes the preview-based rows above: the 42% doctrine and the @@ -94,10 +94,10 @@ ticket 18 preview assets are consciously retired by access model v2. ## Active production execution -| Backlog doc | GitHub issue | Status | Goal | -| --- | --- | --- | --- | -| `26-cached-catalog-read-model.md` | #86 | Closed / Record | One cacheable catalog request backed by confirmed events and deterministic reconciliation | -| `24-access-streaming-v2.md` | #88 | In Review | Validate DAV2 startup across real browsers, devices, and gateways | +| Backlog doc | GitHub issue | Status | Goal | +| --------------------------------- | ------------ | --------------- | ----------------------------------------------------------------------------------------- | +| `26-cached-catalog-read-model.md` | #86 | Closed / Record | One cacheable catalog request backed by confirmed events and deterministic reconciliation | +| `24-access-streaming-v2.md` | #88 | In Review | Validate DAV2 startup across real browsers, devices, and gateways | ## Strategic improvement plan @@ -115,13 +115,12 @@ decisions. Product-signed key/session verification now exists through explicit Product account connection. Live host evidence remains required before Product identity can be treated as broadly proven across devices. -The Product SDK evidence snapshot used for this replanning currently pins -`@parity/product-sdk` 0.23.0 and -`@polkadot-community-foundation/polkadot-app-deploy` 0.13.1. npm was rechecked -on 2026-08-30 and now publishes Product SDK 0.25.0; that migration is deferred -to a dedicated compatibility PR. The Product SDK set remains prototype / -reference / unaudited code. Root `polkadot-api` 3.0.0 exists but is not yet -adopted because the current pinned Product SDK packages use PAPI 2.2.x and +The Product SDK evidence snapshot used for this replanning now pins +`@parity/product-sdk` 0.27.0 and +`@polkadot-community-foundation/polkadot-app-deploy` 0.16.2 after the September +2026 Product DevNet DotNS/CDM/descriptors refresh. The Product SDK set remains +prototype / reference / unaudited code. Root `polkadot-api` 3.0.0 exists but is +not yet adopted because the current Product SDK packages use PAPI 2.2.x and `@polkadot-apps` packages use PAPI 1.23.x, so a single PAPI 3 root breaks Dotify's Bulletin/wallet type seams. Product SDK contracts target `pallet-revive` / PolkaVM CDM flows, not Dotify's diff --git a/docs/backlog/implementation/evidence/product-devnet-platform-refresh-2026-09.md b/docs/backlog/implementation/evidence/product-devnet-platform-refresh-2026-09.md new file mode 100644 index 00000000..30754bbc --- /dev/null +++ b/docs/backlog/implementation/evidence/product-devnet-platform-refresh-2026-09.md @@ -0,0 +1,92 @@ +# Product DevNet platform refresh - evidence and handoff + +## Identity + +- Scope: align Dotify with the September 2026 Product DevNet reset before resuming W06. +- Date: 2026-09-12. +- Starting dev SHA: `920dcce` (`fix: isolate failed royalty recipients (#146)`). +- Branch / PR: `chore/product-devnet-platform-refresh` / draft PR pending. +- External sources checked: + - Product forum update: https://forum.polkadot.network/t/polkadot-product-devnet-update/18602 + - Product address reference: https://docs.polkadotcommunity.foundation/reference/addresses/ +- Code readiness: locally verified. +- Release readiness: not deployed from this branch. + +## Result and decisions + +Dotify's Product DevNet baseline now targets the post-reset platform: + +- Product SDK packages are pinned to `@parity/product-sdk` `0.27.0`, + `@parity/product-sdk-host` `0.19.1`, + `@parity/product-sdk-statement-store` `0.6.9`, and + `@parity/product-sdk-descriptors` `0.11.0`. +- Product app deployment uses + `@polkadot-community-foundation/polkadot-app-deploy@0.16.2` and bumps the + executable manifest version to `[0, 1, 15]`. +- Product CDM `devnet` points at the new ContractRegistry + `0x05662b3dbd5dd9f2ff92d67630477e84b0b37c1f`. +- Bulletin is re-pinned through `papi update bulletin` against + `wss://bulletin-paseo.tservices.es:8443`. +- Bulletin deploy fallbacks and public reference docs use the same refreshed + endpoint, so `npm run deploy:bulletin` no longer combines the new descriptor + with the retired Bulletin chain. +- The Product DevNet fixture and generated bootstrap catalog were refreshed + from the live API and still contain 8 items. +- `docs/index.html` now calls out the Product DevNet reset and the remaining + post-merge republication/smoke boundary. + +Root `polkadot-api` remains on `1.23.3`. Product SDK `0.27.0` brings its own +PAPI `2.2.x` tree, while the `@polkadot-apps` signer stack still uses PAPI +`1.23.x`; the PAPI 3 migration remains a separate compatibility track. + +No live DotNS publication and no CDM write transaction were performed in this +branch. + +## Verification + +| Command or scenario | Environment and build | Observed result | Artifact | +| ---------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -------- | +| `npm --prefix web run fmt:check` | Node 22.13.1, local worktree | Passed | terminal | +| `npm --prefix web run lint` | Node 22.13.1, local worktree | Passed with 3 existing React hook dependency warnings | terminal | +| `npm --prefix web run test:unit` | Node 22.13.1, local worktree | Passed: 52 files, 400 tests | terminal | +| `npm --prefix web run build` | Node 22.13.1, production Vite build | Passed; known chunk-size and transitive annotation warnings remain | terminal | +| `npm --prefix web run build:product-devnet` | Node 22.13.1, Product Vite build with network allowed | Passed; bootstrap refresh wrote 8 catalog items first | terminal | +| `npm --prefix web run generate:product-catalog-bootstrap:strict -- --input fixtures/product-devnet-catalog.json` | Node 22.13.1, Product fixture snapshot | Passed; wrote 8 catalog items from the deterministic fixture | terminal | +| `CATALOG_API_URL=http://127.0.0.1:9 npm --prefix web run build:product-devnet` | Node 22.13.1, Product CI-style offline build | Passed; kept existing fixture-generated bootstrap and left no bootstrap drift | terminal | +| `npm --prefix web run smoke:devnet` | Network allowed | Passed: chain `420420417`, Asset Hub blocks, both Dotify contracts, Bulletin RPC, and IPFS gateway | terminal | +| `npm --prefix web run generate:cdm` | After Hardhat compile | Passed; no tracked manifest diff | terminal | +| `npm --prefix web run generate:cdm-metadata` | After Hardhat compile | Passed; deterministic metadata CIDs unchanged | terminal | +| `npm --prefix contracts/evm run fmt:check` | Node 22.13.1, local worktree | Passed | terminal | +| `npm --prefix contracts/evm run compile` | Node 22.13.1, local worktree | Passed | terminal | +| `npm --prefix contracts/evm run cdm:publish:testnet` | Network allowed, default read-only mode | Passed dry-run; 2 names would publish update-version entries to the new registry | terminal | +| `node --check web/scripts/deploy-bulletin.cjs` | Node 22.13.1, local worktree | Passed | terminal | +| `node scripts/backlog-sync.mjs --check --offline` | Node 22.13.1, local worktree | Passed with existing offline warnings: 24 active items without issue mapping and duplicate `08` docs | terminal | +| `git diff --check` | local worktree | Passed | terminal | +| `npm --prefix web audit --audit-level=moderate` | Network allowed | Failed with expected residual risk: 32 findings, no forced fix applied | terminal | +| `npm --prefix web audit --omit=dev --audit-level=moderate` | Network allowed | Failed with expected residual runtime risk: 28 findings, no forced fix applied | terminal | +| `npm --prefix contracts/evm audit --audit-level=moderate` | Network allowed | Failed with expected Hardhat 2 dev-tooling risk: 25 findings, no forced fix applied | terminal | +| `npm --prefix contracts/evm audit --omit=dev --audit-level=moderate` | Network allowed | Passed: 0 vulnerabilities | terminal | + +## Remaining gates + +- After this PR merges, redeploy the Product DevNet app bundle so + `dotify-test01.dot` advertises executable version `[0, 1, 15]` through pad + `0.16.2`. +- Publish the two Product CDM names to the new registry only when ready to + update the public CDM pointers: + `@dotify/artist-directory` and `@dotify/artist-runtime-factory`. +- Run the real Product host smoke after publication: app open, Product account + connection, room create/join, guest audible playback, and `product-cdm` + payment/read-back if the Product adapter is enabled. +- Continue to defer root PAPI 3, React 19, Vite 8, and Hardhat 3 migrations to + dedicated compatibility PRs. + +## Next agent + +- Next eligible implementation contract after merge: W06 returning identity. +- Inspect before W06: `web/package.json`, `web/.papi/polkadot-api.json`, + `contracts/evm/tasks/cdmPublish.ts`, and + `docs/operations/product-devnet-deployment.md`. +- Do not silently revert the new CDM registry, Product SDK pins, pad version, or + Bulletin descriptor hash; those changes are tied to the September 2026 Product + DevNet reset. diff --git a/docs/backlog/improvement-plan.md b/docs/backlog/improvement-plan.md index 2de1734b..413d4139 100644 --- a/docs/backlog/improvement-plan.md +++ b/docs/backlog/improvement-plan.md @@ -42,23 +42,23 @@ Where it falls short of its own standards: ## Now - finish the standalone production spine -| Item | Tracking | Status | -| --- | --- | --- | -| PR8b providers/context boundary (5 stacked PRs) | `08b-providers-design.md`, tracker rows 8b-1..8b-5 | Delivered on `main` | -| PR9 `shared/` tree relocation | `08-frontend-refactor-tracker.md` | Delivered on `main` | -| PR10 split mega-hooks (`useCatalog`, `useSession`, `useArtistConsole`) along their `features/*` seams | follow-up rows in the ticket 08 tracker or a new focused refactor ticket | Proposed | -| Generated ABI bindings | `09-generated-abi-bindings.md` (#10) | Delivered | -| Observability and health checks on the key service | `10-observability-health-checks.md` (#11) | Delivered; residual DAV2/gateway evidence moved to #88 | -| Separate production preview assets | `18-production-preview-assets.md` (#27) | Retired by access model v2 | +| Item | Tracking | Status | +| ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------------------ | +| PR8b providers/context boundary (5 stacked PRs) | `08b-providers-design.md`, tracker rows 8b-1..8b-5 | Delivered on `main` | +| PR9 `shared/` tree relocation | `08-frontend-refactor-tracker.md` | Delivered on `main` | +| PR10 split mega-hooks (`useCatalog`, `useSession`, `useArtistConsole`) along their `features/*` seams | follow-up rows in the ticket 08 tracker or a new focused refactor ticket | Proposed | +| Generated ABI bindings | `09-generated-abi-bindings.md` (#10) | Delivered | +| Observability and health checks on the key service | `10-observability-health-checks.md` (#11) | Delivered; residual DAV2/gateway evidence moved to #88 | +| Separate production preview assets | `18-production-preview-assets.md` (#27) | Retired by access model v2 | ## Next - standalone operation and listening depth -| Item | Tracking | Status | -| --- | --- | --- | -| Public API/signaling operation evidence: readiness checks, frontend health surface, public env validation, CORS/origin hardening, unsafe-secret guards, and deployment smoke checks. | #11, #36, #37 | Delivered / Record | -| DAV2 validation: real browser/container/gateway matrix, Range + MSE fallback behavior, first-sound metrics, and decision on backend read-through gateway. | #87, #88, `24-access-streaming-v2.md` | Active | -| Room resilience: short-lived TURN credentials, reconnect/handoff policy, and optional SFU only when it protects the link-first guest doctrine. | #89 | Active | -| Value-before-wallet onboarding: make public room links and first sound useful before asking for wallet state, while keeping protected source access fail-closed. | #90 | Active | +| Item | Tracking | Status | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------- | ------------------ | +| Public API/signaling operation evidence: readiness checks, frontend health surface, public env validation, CORS/origin hardening, unsafe-secret guards, and deployment smoke checks. | #11, #36, #37 | Delivered / Record | +| DAV2 validation: real browser/container/gateway matrix, Range + MSE fallback behavior, first-sound metrics, and decision on backend read-through gateway. | #87, #88, `24-access-streaming-v2.md` | Active | +| Room resilience: short-lived TURN credentials, reconnect/handoff policy, and optional SFU only when it protects the link-first guest doctrine. | #89 | Active | +| Value-before-wallet onboarding: make public room links and first sound useful before asking for wallet state, while keeping protected source access fail-closed. | #90 | Active | ## Product SDK feasibility track @@ -67,11 +67,10 @@ sound. Only the baseline rows marked delivered may be presented as live. Product SDK snapshot used for this plan: -- `@parity/product-sdk` 0.23.0, host 0.16.0, statement-store 0.6.5, and - descriptors 0.10.0 (pinned baseline; npm rechecked on 2026-08-30 and now - publishes Product SDK 0.25.0 / host 0.18.0 / statement-store 0.6.7 / - descriptors 0.11.0, deferred to a dedicated compatibility PR); -- `@polkadot-community-foundation/polkadot-app-deploy` 0.13.1; +- `@parity/product-sdk` 0.27.0, host 0.19.1, statement-store 0.6.9, and + descriptors 0.11.0 (pinned baseline after the September 2026 Product DevNet + DotNS/CDM/descriptors refresh); +- `@polkadot-community-foundation/polkadot-app-deploy` 0.16.2; - deferred PAPI drift: root `polkadot-api` 3.0.0 is published, but the current Product SDK graph uses PAPI 2.2.x and `@polkadot-apps` uses PAPI 1.23.x, so Dotify keeps root PAPI 1.23.3 until upstream packages converge; @@ -81,22 +80,22 @@ Product SDK snapshot used for this plan: - Statement Store: 512-byte statement payload, 1024-byte user total, default 30-second TTL. -| Item | Tracking | Status | -| --- | --- | --- | -| Product SDK baseline: pin SDK versions, detect Host availability, connect an app-scoped account explicitly, and separate presence identity from EVM signing authority. | #85, `polkadot-product-readiness-and-killer-dapp-roadmap.md` | Delivered on `dev` | -| Contract portability spike: compare Dotify's current Paseo Asset Hub EVM / viem / Hardhat flow with Product SDK contracts on `pallet-revive`, PolkaVM artifacts, and CDM manifests. | #85 | Proposed | -| Product deployment baseline: build a browser-safe multi-file bundle, publish through Bulletin/DotNS tooling, preserve backend key custody, and use a canonical public room URL. | #85 | Delivered on `dev`; live Product publication still requires the operator mnemonic | -| Statement Store presence spike: use it for small, signed, ephemeral discovery/presence only. Do not move SDP/ICE, full chat history, media metadata, or link-only guest reactions there until signer, TTL, and size constraints are solved. | #89, `20-room-social-layer.md`, `21-room-collaborative-queue.md` | Proposed | -| Humanity / Individuality research rewrite: prove the canonical live source, privacy-preserving proof shape, product-account/identity-account binding, and fallback UX before promoting Human free from research to build. | #12, `11-proof-of-personhood-integration-research.md` | Open | +| Item | Tracking | Status | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| Product SDK baseline: pin SDK versions, detect Host availability, connect an app-scoped account explicitly, and separate presence identity from EVM signing authority. | #85, `polkadot-product-readiness-and-killer-dapp-roadmap.md` | Delivered on `dev` | +| Contract portability spike: compare Dotify's current Paseo Asset Hub EVM / viem / Hardhat flow with Product SDK contracts on `pallet-revive`, PolkaVM artifacts, and CDM manifests. | #85 | Proposed | +| Product deployment baseline: build a browser-safe multi-file bundle, publish through Bulletin/DotNS tooling, preserve backend key custody, and use a canonical public room URL. | #85 | Delivered on `dev`; live Product publication still requires the operator mnemonic | +| Statement Store presence spike: use it for small, signed, ephemeral discovery/presence only. Do not move SDP/ICE, full chat history, media metadata, or link-only guest reactions there until signer, TTL, and size constraints are solved. | #89, `20-room-social-layer.md`, `21-room-collaborative-queue.md` | Proposed | +| Humanity / Individuality research rewrite: prove the canonical live source, privacy-preserving proof shape, product-account/identity-account binding, and fallback UX before promoting Human free from research to build. | #12, `11-proof-of-personhood-integration-research.md` | Open | ## Later - concept and cultural propagation -| Item | Tracking | Status | -| --- | --- | --- | -| Rooms as an actual village square: provenance trails showing which room and host introduced a listener to a track, as the substrate for the ambassador model without referral mechanics. | `12-ambassador-social-propagation-model.md` (#13); collaborative queue delivered in `21-room-collaborative-queue.md`; reactions/chat delivered in `20-room-social-layer.md` | Provenance and consent still proposed | -| Aura-driven discovery: browse rooms and tracks by light and mood rather than lists. | new ticket | Proposed | -| Key-delivery decentralization path: documented route away from the single `CONTENT_KEY_MASTER_SECRET`, for example per-artist key derivation anchored to the SmartRuntime or threshold key shares across independent key-service instances. | new ticket | Proposed | -| UX polish pass: public room first sound in one click, warmer unlock moment showing the actual royalty split, and operation-scoped feedback instead of one global transaction toast. | new ticket | Proposed | +| Item | Tracking | Status | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | +| Rooms as an actual village square: provenance trails showing which room and host introduced a listener to a track, as the substrate for the ambassador model without referral mechanics. | `12-ambassador-social-propagation-model.md` (#13); collaborative queue delivered in `21-room-collaborative-queue.md`; reactions/chat delivered in `20-room-social-layer.md` | Provenance and consent still proposed | +| Aura-driven discovery: browse rooms and tracks by light and mood rather than lists. | new ticket | Proposed | +| Key-delivery decentralization path: documented route away from the single `CONTENT_KEY_MASTER_SECRET`, for example per-artist key derivation anchored to the SmartRuntime or threshold key shares across independent key-service instances. | new ticket | Proposed | +| UX polish pass: public room first sound in one click, warmer unlock moment showing the actual royalty split, and operation-scoped feedback instead of one global transaction toast. | new ticket | Proposed | ## Ordering and guardrails diff --git a/docs/backlog/polkadot-product-readiness-and-killer-dapp-roadmap.md b/docs/backlog/polkadot-product-readiness-and-killer-dapp-roadmap.md index 2b4decde..f688a1c5 100644 --- a/docs/backlog/polkadot-product-readiness-and-killer-dapp-roadmap.md +++ b/docs/backlog/polkadot-product-readiness-and-killer-dapp-roadmap.md @@ -3,16 +3,15 @@ Status: active execution note; the Product DevNet baseline is delivered on `dev` and remains tracked through Product compatibility issue #85. -Last Product SDK package check: 2026-08-30. Dotify currently pins -`@parity/product-sdk` 0.23.0, host 0.16.0, statement-store 0.6.5, -descriptors 0.10.0, and -`@polkadot-community-foundation/polkadot-app-deploy` 0.13.1. npm now publishes -Product SDK 0.25.0, host 0.18.0, statement-store 0.6.7, and descriptors 0.11.0; -that upgrade is deferred to a dedicated compatibility PR. npm also publishes -`polkadot-api` 3.0.0, but Dotify keeps root PAPI on 1.23.3 because the current -Product SDK packages use PAPI 2.2.x and `@polkadot-apps` -chain-client/keys/signer use PAPI 1.23.x. Root PAPI 3 remains blocked until -the official SDK graph converges. +Last Product SDK package check: 2026-09-12. Dotify currently pins +`@parity/product-sdk` 0.27.0, host 0.19.1, statement-store 0.6.9, +descriptors 0.11.0, and +`@polkadot-community-foundation/polkadot-app-deploy` 0.16.2. This aligns the +Product app bundle and descriptors with the September 2026 Product DevNet +DotNS/CDM registry refresh. npm also publishes `polkadot-api` 3.0.0, but +Dotify keeps root PAPI on 1.23.3 because the current Product SDK packages use +PAPI 2.2.x and `@polkadot-apps` chain-client/keys/signer use PAPI 1.23.x. Root +PAPI 3 remains blocked until the official SDK graph converges. ## Verdict @@ -282,7 +281,7 @@ Use this workflow to keep the board and local backlog synchronized: cards. 6. PRs run `node scripts/backlog-sync.mjs --check --offline`. 7. Manual/scheduled project audits run `node scripts/backlog-sync.mjs --check - --live` with a user-scoped `PROJECT_SYNC_TOKEN`. +--live` with a user-scoped `PROJECT_SYNC_TOKEN`. 8. Closing an issue moves it to Done; reopening moves it to Todo; labels and Project fields identify track, phase, type, priority, and source doc. diff --git a/docs/explanation/product-devnet-architecture.md b/docs/explanation/product-devnet-architecture.md index d812d77f..7958ef18 100644 --- a/docs/explanation/product-devnet-architecture.md +++ b/docs/explanation/product-devnet-architecture.md @@ -274,7 +274,13 @@ a name that points at nothing would be worse than not publishing it. | Registry | Address | Network | | --------------- | -------------------------------------------- | ------------------------------------------- | -| `devnet` preset | `0x59b0245778917af55224e5f8fb55f7f8d452619f` | Paseo Asset Hub, para 1000, chain 420420417 | +| `devnet` preset | `0x05662b3dbd5dd9f2ff92d67630477e84b0b37c1f` | Paseo Asset Hub, para 1000, chain 420420417 | + +The retired pre-September-2026 registry +`0x59b0245778917af55224e5f8fb55f7f8d452619f` remains readable, but Product's +2026-09 DevNet migration explicitly warns that post-snapshot versions published +there do not appear in the refreshed registry. Dotify therefore pins the new +address in `contracts/evm/cdm.json` and in the `cdm:publish` default. CDM's own documentation confirms the preset distinction that `VITE_DOTIFY_PRODUCT_CHAIN` encodes: "the `paseo` preset targets **paseo-next** @@ -471,27 +477,26 @@ The current baseline is: | Component | Pinned/target value | | ---------------------------------------------------- | ---------------------------------- | | Node | 22 | -| `@parity/product-sdk` | `0.23.0` | -| `@parity/product-sdk-host` | `0.16.0` | -| `@parity/product-sdk-statement-store` | `0.6.5` | -| `@parity/product-sdk-descriptors` | `0.10.0` | +| `@parity/product-sdk` | `0.27.0` | +| `@parity/product-sdk-host` | `0.19.1` | +| `@parity/product-sdk-statement-store` | `0.6.9` | +| `@parity/product-sdk-descriptors` | `0.11.0` | | `polkadot-api` | `1.23.3` | -| `@polkadot-community-foundation/polkadot-app-deploy` | `0.13.1` in the deploy command | +| `@polkadot-community-foundation/polkadot-app-deploy` | `0.16.2` in the deploy command | | Product network | `devnet` | | Product domain | `dotify-test01.dot` | | Public gateway | `https://dotify-test01.dev-dot.li` | | Asset Hub EVM chain ID | `420420417` | -Checked against npm on 2026-08-30: npm now publishes Product SDK `0.25.0`, -host `0.18.0`, statement-store `0.6.7`, and descriptors `0.11.0`. Dotify keeps -the baseline above for this branch and defers that migration to a dedicated SDK -compatibility PR. npm also publishes `polkadot-api` `3.0.0`, but Dotify keeps -root PAPI on `1.23.3` for now. The current pinned Product SDK packages bring -their own PAPI `2.2.x` tree, while `@polkadot-apps` chain-client/keys/signer -still depend on PAPI `1.23.x`. A direct root PAPI 3 trial removed the public -`PolkadotSigner` export and broke `ChainDefinition` / `TypedApi` compatibility -at the Bulletin and wallet seams. Root PAPI 3 therefore remains a blocked -compatibility migration until the upstream SDK graph converges. +Checked against npm on 2026-09-12 after the Product DevNet registry/runtime +refresh: the Product SDK package set above is current. npm also publishes +`polkadot-api` `3.0.0`, but Dotify keeps root PAPI on `1.23.3` for now. Product +SDK `0.27.0` brings its own PAPI `2.2.x` tree, while `@polkadot-apps` +chain-client/keys/signer still depend on PAPI `1.23.x`. A direct root PAPI 3 +trial removed the public `PolkadotSigner` export and broke `ChainDefinition` / +`TypedApi` compatibility at the Bulletin and wallet seams. Root PAPI 3 +therefore remains a blocked compatibility migration until the upstream SDK graph +converges. For every SDK or deploy-tool upgrade: diff --git a/docs/index.html b/docs/index.html index 2d80a9bc..41a50a00 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1534,6 +1534,12 @@

One musical experience, across supported hosts

claims through the shared writer port. They still need native payment forwarding, host-signed transaction evidence, Product CASH receipt design, and CDM-installed runtime packages before becoming default. Product Mobile in-app live audio remains pending a host-exposed WebRTC capability.

+

+ The September 2026 Product DevNet reset is now explicit in the codebase: new app publications use the refreshed Bulletin/DotNS tooling, + Dotify's Product CDM registry points at the current DevNet registry, and the Bulletin descriptor is pinned to the post-reset runtime. Published + bundles and CDM registrations remain release-time artifacts, so the public host must still be republished and smoke-tested after merge before it + counts as Product evidence. +

Product DevNet is a first-class delivery target alongside ordinary mobile and desktop web. The next pilot must demonstrate discovery, listening, artist support, and clear receipts on the supported hosts, with device limitations stated honestly. diff --git a/docs/operations/dependency-security-status.md b/docs/operations/dependency-security-status.md index 41cab1d7..926182c1 100644 --- a/docs/operations/dependency-security-status.md +++ b/docs/operations/dependency-security-status.md @@ -1,6 +1,6 @@ # Dependency and Security Status -Last checked: 2026-08-30. +Last checked: 2026-09-12. This record captures the dependency/security evidence for the maintenance pass that follows the Product payment-label work. It is not a blanket policy change: @@ -9,34 +9,37 @@ inside their reviewed scope. ## Applied In This Pass -| Surface | Change | Reason | -| --- | --- | --- | -| `web` | `brace-expansion` override `5.0.8` -> `5.0.9` | Removes the high-severity `brace-expansion` advisory from the frontend toolchain. | -| `web` | Lockfile updates inside declared ranges: `viem` `2.55.19`, `@polkadot-apps/chain-client` `2.0.6`, `@polkadot-apps/descriptors` `1.0.2` | Keeps the Product/PAPI-facing browser stack current without changing public ranges or SDK major assumptions. | -| `web` | Product SDK set: `@parity/product-sdk` `0.20.1` -> `0.23.0`, host `0.15.1` -> `0.16.0`, statement-store `0.6.2` -> `0.6.5`, descriptors `0.8.0` -> `0.10.0` | Aligns Dotify's Product adapter with the latest published Product SDK packages while preserving the standalone path and Product CDM opt-in boundary. | -| `web` | Lockfile regeneration also moves minor transitives inside already-declared ranges, including Rollup `4.63.0`, `@scure/base` `2.3.0`, and `ufo` `1.6.4` | npm resolution collateral from the Product SDK install; no direct dependency range or public runtime contract changes. | -| `services/api` | Lockfile updates inside declared ranges: `fastify` `5.12.1`, `@fastify/cors` `11.3.0`, `@fastify/multipart` `10.1.1`, `viem` `2.55.19`, `ws` `8.21.0`, `find-my-way` `9.9.0`, `fast-uri` `3.1.6`, `esbuild` `0.28.2` | Brings the backend API audit to zero vulnerabilities without changing the env contract. | -| `contracts/evm` | Lockfile updates inside declared ranges: Hardhat `2.29.1`, Hardhat plugins within the Hardhat 2 line, Mocha `11.8.0`, `viem` `2.55.19` | Reduces dev-tooling audit exposure without migrating to Hardhat 3. | +| Surface | Change | Reason | +| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `web` | `brace-expansion` override `5.0.8` -> `5.0.9` | Removes the high-severity `brace-expansion` advisory from the frontend toolchain. | +| `web` | Lockfile updates inside declared ranges: `viem` `2.55.19`, `@polkadot-apps/chain-client` `2.0.6`, `@polkadot-apps/descriptors` `1.0.2` | Keeps the Product/PAPI-facing browser stack current without changing public ranges or SDK major assumptions. | +| `web` | Product SDK set: `@parity/product-sdk` `0.23.0` -> `0.27.0`, host `0.16.0` -> `0.19.1`, statement-store `0.6.5` -> `0.6.9`, descriptors `0.10.0` -> `0.11.0` | Aligns Dotify's Product adapter with the September 2026 Product DevNet host/runtime baseline while preserving the standalone path and Product CDM opt-in boundary. | +| `web` | Product DevNet deploy tooling `@polkadot-community-foundation/polkadot-app-deploy` `0.13.1` -> `0.16.2` | Uses the post-migration DotNS/Bulletin publication path required for new Product DevNet app records. | +| `web` | Bulletin descriptor re-pinned against `wss://bulletin-paseo.tservices.es:8443` after the Product DevNet reset | Keeps Product Statement Store descriptor metadata aligned with the new Bulletin runtime. | +| `contracts/evm` | Product CDM `devnet` registry `0x59b0245778917af55224e5f8fb55f7f8d452619f` -> `0x05662b3dbd5dd9f2ff92d67630477e84b0b37c1f` | Publishes generated CDM manifests to the new Product DevNet registry; the old registry remains readable but is no longer the target for new registrations. | +| `web` | Lockfile regeneration also moves minor transitives inside already-declared ranges, including Rollup `4.63.0`, `@scure/base` `2.3.0`, and `ufo` `1.6.4` | npm resolution collateral from the Product SDK install; no direct dependency range or public runtime contract changes. | +| `services/api` | Lockfile updates inside declared ranges: `fastify` `5.12.1`, `@fastify/cors` `11.3.0`, `@fastify/multipart` `10.1.1`, `viem` `2.55.19`, `ws` `8.21.0`, `find-my-way` `9.9.0`, `fast-uri` `3.1.6`, `esbuild` `0.28.2` | Brings the backend API audit to zero vulnerabilities without changing the env contract. | +| `contracts/evm` | Lockfile updates inside declared ranges: Hardhat `2.29.1`, Hardhat plugins within the Hardhat 2 line, Mocha `11.8.0`, `viem` `2.55.19` | Reduces dev-tooling audit exposure without migrating to Hardhat 3. | ## Official Version Drift -Checked against npm published versions on 2026-08-30. - -| Package | Current pinned/locked value | Latest published value | Decision | -| --- | --- | --- | --- | -| `@parity/product-sdk` | `0.23.0` | `0.25.0` | Defer to a dedicated Product compatibility PR; this PR changes the Product CDM smoke guard, not the SDK graph. | -| `@parity/product-sdk-host` | `0.16.0` | `0.18.0` | Defer with the Product SDK compatibility PR. | -| `@parity/product-sdk-statement-store` | `0.6.5` | `0.6.7` | Defer with the Product SDK compatibility PR. | -| `@parity/product-sdk-descriptors` | `0.10.0` | `0.11.0` | Defer with the Product SDK compatibility PR. | -| `@parity/product-sdk-signer` | `0.14.0` transitively via `@parity/product-sdk/wallet` | `0.14.2` | No direct dependency; import through the Product SDK export and upgrade with the SDK set. | -| `@parity/product-sdk-address` | `0.2.0` transitively via `@parity/product-sdk/address` | `0.2.0` | Current through the Product SDK export. | -| `polkadot-api` | `1.23.3` | `3.0.0` | Blocked as a root migration: Product SDK `0.23.0` currently depends on PAPI `2.2.x`, while `@polkadot-apps/chain-client` / keys / signer depend on PAPI `1.23.x`; a direct root PAPI 3 trial removes `PolkadotSigner` and breaks `ChainDefinition` / `TypedApi` compatibility. | -| `@polkadot-community-foundation/polkadot-app-deploy` | `0.13.1` | `0.13.1` | Current. | -| `react` / `react-dom` | `18.3.1` | `19.2.8` | Defer as a UI/runtime migration. | -| `vite` | `6.x` | `8.2.2` | Defer as a build-system migration. | -| `typescript` | `5.6.x` in web/api, `6.0.x` in contracts | `7.0.2` | Defer until PAPI/Product/Hardhat type compatibility is tested together. | -| `fastify` | `5.12.1` | `5.12.1` | Current in `services/api`. | -| `hardhat` | `2.29.1` | `3.14.0` | Defer as a breaking contracts toolchain migration. | +Checked against npm published versions on 2026-09-12. + +| Package | Current pinned/locked value | Latest published value | Decision | +| ---------------------------------------------------- | ------------------------------------------------------ | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `@parity/product-sdk` | `0.27.0` | `0.27.0` | Current. | +| `@parity/product-sdk-host` | `0.19.1` | `0.19.1` | Current. | +| `@parity/product-sdk-statement-store` | `0.6.9` | `0.6.9` | Current. | +| `@parity/product-sdk-descriptors` | `0.11.0` | `0.11.0` | Current. | +| `@parity/product-sdk-signer` | transitively via `@parity/product-sdk/wallet` | bundled with Product SDK | No direct dependency; import through the Product SDK export and upgrade with the SDK set. | +| `@parity/product-sdk-address` | `0.2.0` transitively via `@parity/product-sdk/address` | `0.2.0` | Current through the Product SDK export. | +| `polkadot-api` | `1.23.3` | `3.0.0` | Blocked as a root migration: Product SDK `0.27.0` currently depends on PAPI `2.2.x`, while `@polkadot-apps/chain-client` / keys / signer depend on PAPI `1.23.x`; a direct root PAPI 3 trial removes `PolkadotSigner` and breaks `ChainDefinition` / `TypedApi` compatibility. | +| `@polkadot-community-foundation/polkadot-app-deploy` | `0.16.2` | `0.16.2` | Current. | +| `react` / `react-dom` | `18.3.1` | `19.2.8` | Defer as a UI/runtime migration. | +| `vite` | `6.x` | `8.2.2` | Defer as a build-system migration. | +| `typescript` | `5.6.x` in web/api, `6.0.x` in contracts | `7.0.2` | Defer until PAPI/Product/Hardhat type compatibility is tested together. | +| `fastify` | `5.12.1` | `5.12.1` | Current in `services/api`. | +| `hardhat` | `2.29.1` | `3.14.0` | Defer as a breaking contracts toolchain migration. | ## Residual Audit Risk @@ -48,28 +51,29 @@ Checked against npm published versions on 2026-08-30. `web`: - `brace-expansion` is fixed. -- `npm audit --audit-level=moderate` still reports 26 high-severity transitive - findings through `deepmerge-ts` / `write-package` / `@polkadot-api/cli` and - `nanoid` / `@novasamatech/host-api`. -- `npm audit --omit=dev --audit-level=moderate` reports the same 26 Product / - PAPI chain findings because those packages are runtime dependencies. npm does - not offer a non-breaking fix for the `deepmerge-ts` path. -- Product SDK `0.25.0` has not yet been tested against Dotify's Product - manifest, host permissions, CDM resolver, and mobile fallback. A root +- `npm audit --audit-level=moderate` reports 32 findings: 1 low, 3 moderate, + and 28 high. The report includes Product / PAPI transitive findings, host API + `nanoid`, and build/test tooling advisories. +- `npm audit --omit=dev --audit-level=moderate` reports 28 runtime findings: 1 + moderate and 27 high. These run through `baseline-browser-mapping` / + `browserslist`, the Product / PAPI `deepmerge-ts` path, and host API + `nanoid`. npm does not offer a non-breaking fix for the `deepmerge-ts` path, + and the forced `nanoid` path changes the `@polkadot-apps/signer` line. +- The Product SDK `0.27.0` app bundle still needs a real Product host smoke + after publication on the refreshed Product DevNet. A root `polkadot-api@3.0.0` trial also did not produce a deployable graph because the official Product SDK and `@polkadot-apps` packages still use different PAPI major lines. - Next safe action: Product host-signed transaction/resource-allocation smoke tests on this SDK set, using the post-payment `hasPaid` / `canAccess` - read-back as the pass/fail signal. Then run a dedicated Product SDK `0.25.x` - compatibility PR, plus upstream monitoring for a Product SDK / - `@polkadot-apps` PAPI 3 convergence release. Do not run + read-back as the pass/fail signal. Continue upstream monitoring for a Product + SDK / `@polkadot-apps` PAPI 3 convergence release. Do not run `npm audit fix --force` on the Product stack. `contracts/evm`: - `npm audit --omit=dev --audit-level=moderate` passes. -- Full `npm audit --audit-level=moderate` still reports dev-tooling findings +- Full `npm audit --audit-level=moderate` reports 25 dev-tooling findings through Hardhat 2, Mocha/Solc transitives, and legacy Ethers 5 transitives. - npm's forced path moves to Hardhat 3 and newer verification plugins; this is a breaking migration and should be tested in a dedicated contracts PR. @@ -77,11 +81,9 @@ Checked against npm published versions on 2026-08-30. ## Improvement Flags - Run real Product host smoke tests for Product sr25519 key/session requests - and the opt-in `product-cdm` runtime adapter with the SDK `0.23.0` set, + and the opt-in `product-cdm` runtime adapter with the SDK `0.27.0` set, capturing the `dotify:product-cdm-payment-smoke` read-back event for Classic unlocks. -- Test the Product SDK `0.25.x` line in a dedicated compatibility PR before - changing the published Product profile. - Track root `polkadot-api` `3.0.0` separately until Product SDK and `@polkadot-apps` publish compatible packages on the same PAPI major line. - Plan a Hardhat 3 migration separately from app/runtime changes. diff --git a/docs/operations/deployment-configuration.md b/docs/operations/deployment-configuration.md index 1cdd2091..c514038c 100644 --- a/docs/operations/deployment-configuration.md +++ b/docs/operations/deployment-configuration.md @@ -116,7 +116,7 @@ Required production variables: | `VITE_SIGNAL_URL` | `https://dotify-signal.fly.dev` | Public Socket.IO signaling origin. | | `VITE_DOTIFY_API_URL` | `https://dotify-api.fly.dev` | Backend API for uploads, key delivery, and cached catalog reads. | | `VITE_PINATA_GATEWAY` | `https://gateway.pinata.cloud` | Primary browser read gateway for Pinata-backed track assets. | -| `VITE_IPFS_READ_GATEWAYS` | `https://ipfs.io,https://dweb.link,https://paseo-ipfs.polkadot.io` | Ordered fallback gateway list. | +| `VITE_IPFS_READ_GATEWAYS` | `https://ipfs.io,https://dweb.link,https://devnet-ipfs.api.polkadotcommunity.foundation,https://bulletin-kubo.tservices.es:9443` | Ordered fallback gateway list. | Optional production variables: @@ -128,7 +128,7 @@ Optional production variables: | `VITE_TURN_CREDENTIAL` | Static fallback only. Do not use long-lived production credentials here. | | `VITE_ETH_RPC_URL` | Override the default Paseo Asset Hub EVM RPC. Must be HTTPS in production. | | `VITE_WS_URL` | Override the default Polkadot WebSocket RPC. Must be WSS in production. | -| `VITE_BULLETIN_WS_URL` | Override the default Paseo Bulletin RPC. Must be WSS in production. | +| `VITE_BULLETIN_WS_URL` | Override the default Product DevNet Bulletin RPC. Must be WSS in production. | | `VITE_BLOCKSCOUT_BASE_URL` | Override explorer links. Must be HTTPS in production. | Deploy-preview note: @@ -155,41 +155,41 @@ Required Product values: | `VITE_DOTIFY_API_URL` | `https://dotify-api.fly.dev` | | `VITE_SIGNAL_URL` | `https://dotify-signal.fly.dev` | | `VITE_DOTIFY_ROOM_BEACONS` | `off` | +| `VITE_BULLETIN_WS_URL` | `wss://bulletin-paseo.tservices.es:8443` | | `VITE_PINATA_GATEWAY` | `https://gateway.pinata.cloud` | | `VITE_IPFS_READ_GATEWAYS` | `https://ipfs.io,https://dweb.link,https://devnet-ipfs.api.polkadotcommunity.foundation,https://bulletin-kubo.tservices.es:9443` | -| Product executable `appVersion` | `[0, 1, 14]` in `web/polkadot-app-deploy.config.ts` | +| Product executable `appVersion` | `[0, 1, 15]` in `web/polkadot-app-deploy.config.ts` | The Product executable version is part of the published Product manifest. Bump it whenever the Product bundle changes runtime behavior, host SDK integration, permissions, metadata, or cache-sensitive assets. A new CID alone proves the bundle changed on-chain, but the mobile host can still use executable metadata when deciding whether to refresh a previously opened app. -Version `[0, 1, 14]` carries the Product room guest audio recovery fix and the -W05 royalty claim runtime writer path. +Version `[0, 1, 15]` carries the Product room guest audio recovery fix, the W05 +royalty claim runtime writer path, the September 2026 Product DevNet +tooling/CDM registry refresh, and the re-pinned Bulletin descriptor. Current Product host SDK dependencies: -| Package | Current value | Latest checked 2026-08-30 | +| Package | Current value | Latest checked 2026-09-12 | | ---------------------------------------------------- | ------------- | ------------------------- | -| `@parity/product-sdk` | `0.23.0` | `0.25.0` | -| `@parity/product-sdk-host` | `0.16.0` | `0.18.0` | -| `@parity/product-sdk-statement-store` | `0.6.5` | `0.6.7` | -| `@parity/product-sdk-descriptors` | `0.10.0` | `0.11.0` | +| `@parity/product-sdk` | `0.27.0` | `0.27.0` | +| `@parity/product-sdk-host` | `0.19.1` | `0.19.1` | +| `@parity/product-sdk-statement-store` | `0.6.9` | `0.6.9` | +| `@parity/product-sdk-descriptors` | `0.11.0` | `0.11.0` | | `polkadot-api` | `1.23.3` | `3.0.0` | -| `@polkadot-community-foundation/polkadot-app-deploy` | `0.13.1` | `0.13.1` | +| `@polkadot-community-foundation/polkadot-app-deploy` | `0.16.2` | `0.16.2` | | `engine.io-client` | `6.6.6` | `6.6.6` | Keep the Product SDK packages pinned exactly during Product DevNet hardening. Recheck npm and the official Product docs before changing them because the -mobile host API is still moving quickly. The 2026-08-30 check found a newer -Product SDK line; upgrade it in a dedicated compatibility PR rather than mixing -it into Product write-signer mapping work. `polkadot-api` remains on `1.23.3` at -the Dotify root even though npm publishes `3.0.0`: the current official Product -SDK packages bring their own PAPI `2.2.x` tree, while `@polkadot-apps` -chain-client/keys/signer still depend on PAPI `1.23.x`. A direct root PAPI 3 -trial failed type compatibility for the `PolkadotSigner` export and -`ChainDefinition` / `TypedApi` boundaries, so PAPI 3 is tracked as a blocked -compatibility migration rather than a deployable dependency bump. +mobile host API is still moving quickly. `polkadot-api` remains on `1.23.3` at +the Dotify root even though npm publishes `3.0.0`: Product SDK `0.27.0` brings +its own PAPI `2.2.x` tree, while `@polkadot-apps` chain-client/keys/signer still +depend on PAPI `1.23.x`. A direct root PAPI 3 trial failed type compatibility +for the `PolkadotSigner` export and `ChainDefinition` / `TypedApi` boundaries, +so PAPI 3 is tracked as a blocked compatibility migration rather than a +deployable dependency bump. `VITE_DOTIFY_ROOM_BEACONS` is off in the tracked profile, so the standard publication announces no rooms on the Statement Store. The capability ships @@ -295,14 +295,14 @@ flyctl deploy Set server-side values in the app's Secrets area: -| Secret | Required | Notes | -| --------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------- | -| `PINATA_JWT` | Uploads | Backend-only Pinata token. Never expose in Netlify. | +| Secret | Required | Notes | +| --------------------------- | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `PINATA_JWT` | Uploads | Backend-only Pinata token. Never expose in Netlify. | | `CONTENT_KEY_MASTER_SECRET` | Audio upload and key delivery | 64+ hex chars, at least 32 random bytes. v1 assets use `contentHash`; new v2 assets bind `chainId + runtimeAddress + contentHash`. Do not rotate casually. | -| `GIT_COMMIT_SHA` | Optional | Set by CI/build automation when available; `/version` can fall back in dev checkouts. | -| `TURN_REST_SECRET` | Reliable rooms | Backend-only HMAC secret shared with the TURN relay REST auth mechanism. Preferred production path. | -| `TURN_USERNAME` | Optional fallback | Static DevNet TURN username when REST auth is unavailable. | -| `TURN_CREDENTIAL` | Optional fallback | Static DevNet TURN password when REST auth is unavailable. | +| `GIT_COMMIT_SHA` | Optional | Set by CI/build automation when available; `/version` can fall back in dev checkouts. | +| `TURN_REST_SECRET` | Reliable rooms | Backend-only HMAC secret shared with the TURN relay REST auth mechanism. Preferred production path. | +| `TURN_USERNAME` | Optional fallback | Static DevNet TURN username when REST auth is unavailable. | +| `TURN_CREDENTIAL` | Optional fallback | Static DevNet TURN password when REST auth is unavailable. | Catalog read-model variables: diff --git a/docs/operations/product-devnet-deployment.md b/docs/operations/product-devnet-deployment.md index 0a2c3f20..be22eddc 100644 --- a/docs/operations/product-devnet-deployment.md +++ b/docs/operations/product-devnet-deployment.md @@ -4,6 +4,18 @@ This runbook publishes the Product build to Bulletin/DotNS and connects it to the existing Fly API and signaling services. It does not deploy contracts or change production secrets. +## September 2026 Product DevNet Platform Refresh + +The Product DevNet update published on 2026-09-08/2026-09-09 moved DotNS to a +new contract set, moved CDM `ContractRegistry` to +`0x05662b3dbd5dd9f2ff92d67630477e84b0b37c1f`, and required fresh chain +descriptors after runtime upgrades. Dotify must therefore publish Product app +bundles with `@polkadot-community-foundation/polkadot-app-deploy@0.16.2` or +newer, publish CDM names against the new registry, and keep the checked-in +Bulletin descriptor pinned to the current DevNet runtime. Older `pad`/DotNS +tooling can report a successful publish while writing to retired contracts that +new Product hosts no longer observe. + ## Frontend Publish Does Not Deploy Contracts Product DevNet is a preset over the Paseo system parachains - Asset Hub (1000), @@ -76,6 +88,13 @@ Dotify has no contracts there, and the catalog would load empty. Separate from the frontend publish below, and only needed when the contracts or their ABIs change. +Dotify's default CDM registry is the current Product DevNet `ContractRegistry` +at `0x05662b3dbd5dd9f2ff92d67630477e84b0b37c1f`. Do not publish new +`@dotify/*` versions to the retired registry +`0x59b0245778917af55224e5f8fb55f7f8d452619f`; it remains readable but new +post-snapshot versions registered there do not appear in the refreshed Product +DevNet registry. + The registry stores `(name -> address)` and `(name -> metadata_uri)`. Without the second, another product can resolve where Dotify's contracts are but not what they expose, so `cdm install` fails and the registration is nominal. @@ -142,7 +161,7 @@ Use `-n devnet`, never `-n paseo`: the `paseo` preset targets paseo-next - a clean build from the intended commit - access to the `dotify-test01.dot` deployment account - Fly access for `dotify-api` and `dotify-signal` -- the current `@polkadot-community-foundation/polkadot-app-deploy` DevNet prerequisites +- the current `@polkadot-community-foundation/polkadot-app-deploy` DevNet prerequisites (`0.16.2` is the pinned Dotify deploy CLI) The CLI is reference/experimental tooling. Do not store a mnemonic in the repository, shell history, `.env` files, Netlify, or Fly. @@ -361,9 +380,10 @@ behavior, host SDK integration, permissions, metadata, or cache-sensitive assets. A successful `pad` publish writes a new CID, but the mobile host can also use executable metadata while refreshing an already-opened app. -The current Product executable is `[0, 1, 14]`. This version keeps blocked +The current Product executable is `[0, 1, 15]`. This version keeps blocked guest audio recovery visible in Product-hosted rooms and exposes W05 runtime -claim writes through the shared runtime writer port. Product +claim writes through the shared runtime writer port, while using the refreshed +September 2026 Product SDK/tooling and re-pinned Bulletin descriptor. Product host containers use Engine.IO Fetch polling without a WebSocket upgrade, so room signaling stays on the remote-network primitive proven to remain available in Product Mobile. Standalone browsers retain Fetch-first with an optional @@ -437,11 +457,10 @@ rotated DevNet/static fallback credentials; they are public inside the Product bundle and require a Product republish when changed. Publisher listing is deliberately not part of the default deploy. It requires -the current Product proof-of-personhood level and signer support, and the -0.13.1 CLI help still describes environment-specific limitations. After the -app URL is verified, follow the current official **List it in Browse** guide -and record that result separately. A listing failure must not obscure a -successful static deployment. +the current Product proof-of-personhood level and signer support. After the app +URL is verified, follow the current official **List it in Browse** guide and +record that result separately. A listing failure must not obscure a successful +static deployment. Record the commit, CLI version, resulting CID, DotNS transaction references, and final public URL in the release evidence. diff --git a/docs/reference/environment-variables.md b/docs/reference/environment-variables.md index 41dbf05c..627a3076 100644 --- a/docs/reference/environment-variables.md +++ b/docs/reference/environment-variables.md @@ -299,9 +299,10 @@ unset, the web app falls back to local/demo browser-side Pinata upload and | ------------ | -------------------------------------- | | **Type** | WebSocket URL | | **Required** | No | -| **Default** | `wss://paseo-bulletin-rpc.polkadot.io` | +| **Default** | `wss://bulletin-paseo.tservices.es:8443` | -Paseo Bulletin Chain RPC used when an artist enables Bulletin archival. +Product DevNet Bulletin Chain RPC used when an artist enables Bulletin +archival. --- @@ -384,7 +385,7 @@ for encrypted audio fetches. | ------------ | ------------------------------------------------------------------ | | **Type** | Comma-separated URL list | | **Required** | No | -| **Default** | `https://ipfs.io,https://dweb.link,https://paseo-ipfs.polkadot.io` | +| **Default** | `https://ipfs.io,https://dweb.link,https://devnet-ipfs.api.polkadotcommunity.foundation,https://bulletin-kubo.tservices.es:9443` | Fallback IPFS gateways tried after `VITE_PINATA_GATEWAY`. Put gateways that resolve the current catalog's public track CIDs before Product storage gateways; @@ -563,6 +564,20 @@ this as a production user fallback. --- +### `BULLETIN_GATEWAY_URL` + +| Property | Value | +| ------------ | ----------------------------------------------- | +| **Type** | HTTP(S) URL prefix | +| **Required** | No | +| **Default** | `https://bulletin-kubo.tservices.es:9443/ipfs/` | + +Gateway URL prefix printed by `web/scripts/deploy-bulletin.cjs` after upload. +It does not change the chain used for the upload; use `VITE_BULLETIN_WS_URL` +for that. + +--- + ## Backend API variables (`services/api/.env`) These variables are server-side only. diff --git a/web/.env.example b/web/.env.example index 8fb10ca8..8fc61da7 100644 --- a/web/.env.example +++ b/web/.env.example @@ -17,8 +17,8 @@ VITE_LOCAL_ETH_RPC_URL=http://localhost:8545 # Optional global Polkadot WS override. Leave empty to use local/testnet defaults. # VITE_WS_URL= -# Paseo Bulletin Chain RPC used for metadata JSON publication. -VITE_BULLETIN_WS_URL=wss://paseo-bulletin-rpc.polkadot.io +# Product DevNet Bulletin Chain RPC used for metadata JSON publication. +VITE_BULLETIN_WS_URL=wss://bulletin-paseo.tservices.es:8443 # Backend API service URL. # When set, cover and metadata uploads are routed through the backend API (Ticket 02). @@ -32,7 +32,7 @@ VITE_DOTIFY_API_URL=http://localhost:8790 # In production, set VITE_DOTIFY_API_URL and configure PINATA_JWT in services/api/.env. VITE_PINATA_JWT= VITE_PINATA_GATEWAY=https://gateway.pinata.cloud -VITE_IPFS_READ_GATEWAYS=https://ipfs.io,https://dweb.link,https://paseo-ipfs.polkadot.io +VITE_IPFS_READ_GATEWAYS=https://ipfs.io,https://dweb.link,https://devnet-ipfs.api.polkadotcommunity.foundation,https://bulletin-kubo.tservices.es:9443 # Best-effort browser-side audio encryption secret. # Must be 32 bytes as hex. It is bundled into the frontend, so treat it as @@ -54,6 +54,8 @@ SIGNAL_ORIGINS=http://localhost:5273 # Per-room listener cap (default 24). # SIGNAL_MAX_LISTENERS=24 BULLETIN_ACCOUNT=Alice +# Optional gateway URL printed by `npm run deploy:bulletin`. +BULLETIN_GATEWAY_URL=https://bulletin-kubo.tservices.es:9443/ipfs/ # Optional browser-visible TURN fallback for listening rooms. Prefer the API # TURN grant path (`services/api`: TURN_URLS + TURN_REST_SECRET) for production diff --git a/web/.papi/descriptors/dist/bulletin.d.ts b/web/.papi/descriptors/dist/bulletin.d.ts index fe1ff69a..cdf11285 100644 --- a/web/.papi/descriptors/dist/bulletin.d.ts +++ b/web/.papi/descriptors/dist/bulletin.d.ts @@ -1,5 +1,5 @@ import { StorageDescriptor, PlainDescriptor, TxDescriptor, RuntimeDescriptor, Enum, ApisFromDef, QueryFromPalletsDef, TxFromPalletsDef, EventsFromPalletsDef, ErrorsFromPalletsDef, ConstFromPalletsDef, ViewFnsFromPalletsDef, SS58String, FixedSizeBinary, Binary, FixedSizeArray } from "polkadot-api"; -import { I5sesotjlssv2d, Iffmde3ekjedi9, I4mddgoa69c0a2, Ibn2t84v0qbqml, I95g6i7ilua7lq, Ieniouoqkq4icf, Phase, Ibgl04rn6nbfm6, I4q39t5hn830vp, I1v7jbnil3tjns, I8jgj1nhcr2dg8, Ifn6q3equiq9qi, Ia3sb0vgvovhtg, Iav8k1edbj86k7, Itom7fk49o0c9, I4i91h98n3cv1b, I4iumukclgj8ej, Iqnbvitf7a7l3, I48i407regf59r, I6r5cbv8ttrb09, I1q8tnt1cluu5j, I8ds64oj6581v0, Ia7pdug7cdsg8g, Iafsev9pf8ur2h, I9bin2jc70qt6q, TransactionPaymentReleases, I52552vmt51a1m, Icd998p53cb80u, Ianratlvp36bb8, Ia2lhg7l2hilo3, Ifi4da1gej1fri, Ifvgo9568rpmqc, I82jm9g7pufuel, Ic5m5lp1oioo8r, I6cs1itejju2vv, Icgljjb6j82uhn, Ib77b0fp1a6mjr, I5g2vv0ckl2m8b, Ifup3lg9ro8a0f, I5qfubnuvrnqn6, I8t3u2dv73ahbd, I7vlvrrl2pnbgk, Ie0rpl5bahldfk, XcmPalletVersionMigrationStage, I7e5oaj2qi4kl1, Ie849h3gncgvok, Iat62vud7hlod2, Ict03eedr8de9s, Ibkm2gcn4pji30, XcmVersionedLocation, Idh2ug6ou4a8og, Iejeo53sea6n4q, I53esa2ms463bk, Ib4jhb8tt3uung, In7a38730s6qs, Ibtil0ss5munbk, I9s0ave7t0vnrk, I4fo08joqmcqnm, XcmV5Junctions, Iasb8k6ash5mjn, I8ofcg5rbj0g2c, I4adgbll7gku4i, I6pjjpfvhvcfru, I9pj91mj79qekl, I39uah9nss64h9, Ik64dknsq7k08, Ib51vk42m1po4n, Ial23jn8hp0aen, Ifpj261e8s63m3, Idcr6u6361oad9, I4m23d919gtr5d, I7esubsve8jvbp, I69p6pkv67dei3, I13j8trtusi7dq, I74eam70qc8398, I4ktuaksf5i1gk, I9bqtpv2ii35mp, I9j7pagd6d4bda, I2h9pmio37r7fb, Ibmr18suc9ikh9, I9iq22t0burs89, I5u8olqbbvfnvf, I5utcetro501ir, Itrlf5b2o2l8q, Icegg8a2cqf1gu, I4vj3ndsquheo1, I7h5kud22qmfsg, I2i8iea6e4ne1j, I4jotama61aldv, I4cbvqmqadhrea, I3rfugj0vt1ug5, Ifccifqltb5obi, Iadtsfv699cq8b, Ialpmgmhr3gk5r, I3sdol54kg5jaq, I8fougodaj6di6, I81vt5eq60l4b6, I3vh014cqgmrfd, Ia5cotcvi888ln, I21jsa919m88fd, Iegif7m3upfe1k, I9kt8c221c83ln, Ic76kfh5ebqkpl, Icscpmubum33bq, I21d2olof7eb60, Ibgm4rnf22lal1, Ie68np0vpihith, I9bnv6lu0crf1q, Iauhjqifrdklq7, Ie1uso9m8rt5cf, I40pqum1mu8qg3, I1r4c2ghbtvjuc, I2hedg0a6u185f, I8k3rnvpeeh4hv, I550f2tngqhbp1, Ia82mnkmeo2rhc, Icsa46bnbuohqc, Icbccs0ug47ilf, I855j4i3kr8ko1, I67n6mbhp91nlg, Idd7hd99u0ho0n, Iafscmv8tjf0ou, I100l07kaehdlp, I6gnbnvip5vvdi, I368e0tjmrcvlt, I6akqkga7li13u, I133qpg6ru2jqi, I3bp93psani87u, Icv68aq8841478, Ic262ibdoec56a, Iflcfm9b6nlmdd, Ijrsf4mnp3eka, Id5fm4p8lj5qgi, I8tjvj9uq4b7hi, I3qt1hgg4djhgb, I4fooe9dun9o0t, I8mvf14goplnni, Ie09mpthond7d6, I1ispultrc7caq, Iph9c4rn81ub2, Ier2cke86dqbr2, Ibi0s841005et5, I395h9meqpi2hf, I66jdpl6lile9j, I39t01nnod9109, I6v8sm60vvkmk7, I1qmtmbe5so8r3, Ih99m6ehpcar7, Idgorhsbgdq2ap, I9ubb2kqevnu6t, I2hq50pu2kdjpo, I9acqruh7322g2, I137t1cld92pod, I61d51nv4cou88, If8u5kl4h8070m, Ibmuil6p3vl83l, I7lul91g50ae87, Icl7nl1rfeog3i, Iasr6pj6shs0fl, I2uqmls7kcdnii, Idg69klialbkb8, I7r6b7145022pp, I30pg328m00nr3, Icmrn7bogp28cs, I7m9b5plj4h5ot, I9onhk772nfs4f, I3l6bnksrmt56r, Idh09k0l2pmdcg, I7uoiphbm0tj4r, I512p1n7qt24l8, I6s1nbislhk619, I3gghqnh2mj0is, I6iv852roh6t3h, I9oc2o6itbiopq, Ibslgga81p36aa, I1rvj4ubaplho0, Ia3uu7lqcc1q1i, I7crucfnonitkn, I7tmrp94r9sq4n, I4kigljjkan2n6, I5rtkmhm2dng4u, I5r8t4iaend96p, Iaqet9jc3ihboe, Ic952bubvq4k7d, I2v50gu3s1aqk6, Iabpgqcjikia83, Ieeb2u9t56qdcr, If7uv525tdvv7a, I2an1fs2eiebjp, TransactionValidityTransactionSource, I9ask1o4tfvcvs, I4ph3d1eepnmr1, Icerf8h8pdu8ss, I6spmpef2c7svf, Iei2mvq0mjvt81, Icd41grt22tk3v, Iftvbctbo05fu4, XcmVersionedXcm, Ic0c3req3mlc1l, XcmVersionedAssetId, I7ocn4njqde3v5, Iek7ha36da9mf5, I9cqlcs1cfiqgk, Ia0qb5p8rcp095, I7f06kkvfvbvn3, Ieh6nis3hdbtgi, XcmVersionedAsset, Icujp6hmv35vbn, I4tjame31218k9, I5gif8vomct5i8, Ic1d4u2opv3fst, Ie9sr1iqcg3cgm, I1mqgk2tmnn9i2, I6lr8sctk0bi4e, Id3cclc8rha27v } from "./common-types"; +import { I5sesotjlssv2d, Iffmde3ekjedi9, I4mddgoa69c0a2, Ibkvrqg3rqhj06, I95g6i7ilua7lq, Ieniouoqkq4icf, Phase, Ibgl04rn6nbfm6, I4q39t5hn830vp, I8re9183nrhr3n, I1v7jbnil3tjns, I8jgj1nhcr2dg8, Ifn6q3equiq9qi, Ia3sb0vgvovhtg, Iav8k1edbj86k7, Itom7fk49o0c9, I4i91h98n3cv1b, I4iumukclgj8ej, Iqnbvitf7a7l3, I48i407regf59r, I6r5cbv8ttrb09, Inofn0qqbjtb9, Iepbsvlk3qceij, I1q8tnt1cluu5j, I8ds64oj6581v0, Ia7pdug7cdsg8g, Iafsev9pf8ur2h, I9bin2jc70qt6q, TransactionPaymentReleases, Ifmlh2ccap0uke, Icd998p53cb80u, Iecn3tfn6gr5ce, Icm182d6u507gc, I9jd27rnpm8ttv, I9i4rhi4dg5bdo, I7mhb4q0v4cblf, Ia2lhg7l2hilo3, Ifi4da1gej1fri, Ifvgo9568rpmqc, I82jm9g7pufuel, Ic5m5lp1oioo8r, I6cs1itejju2vv, Icgljjb6j82uhn, I5mpbmq1ooiq9i, I5g2vv0ckl2m8b, Ifup3lg9ro8a0f, I5qfubnuvrnqn6, I8t3u2dv73ahbd, I7vlvrrl2pnbgk, Ie0rpl5bahldfk, XcmPalletVersionMigrationStage, I7e5oaj2qi4kl1, Ie849h3gncgvok, Iat62vud7hlod2, Ict03eedr8de9s, Ibkm2gcn4pji30, XcmVersionedLocation, Idh2ug6ou4a8og, Iejeo53sea6n4q, I53esa2ms463bk, Ib4jhb8tt3uung, In7a38730s6qs, Ibtil0ss5munbk, I9s0ave7t0vnrk, I4fo08joqmcqnm, I9s2ue1goudgqc, XcmV5Junctions, Iasb8k6ash5mjn, I8ofcg5rbj0g2c, I4adgbll7gku4i, I6pjjpfvhvcfru, I9pj91mj79qekl, I39uah9nss64h9, Ik64dknsq7k08, Ib51vk42m1po4n, Ial23jn8hp0aen, Ifpj261e8s63m3, Idcr6u6361oad9, I9nqp66v0721n1, Idk1ivh3nldv2l, Ib3877m4t1f6f4, I3a0ttnbnho23s, Ia06u24rop478l, Ibou4u1engb441, Id6nbvqoqdj4o2, I95iqep3b8snn9, I4ktuaksf5i1gk, I9bqtpv2ii35mp, I9j7pagd6d4bda, I2h9pmio37r7fb, Ibmr18suc9ikh9, I9iq22t0burs89, I5u8olqbbvfnvf, I5utcetro501ir, Itrlf5b2o2l8q, Icegg8a2cqf1gu, I2i8iea6e4ne1j, I4jotama61aldv, I4cbvqmqadhrea, I3rfugj0vt1ug5, Ifq8h9n7vmgpf0, Ifa480ahjcunq, Ic4jjdr1cl5bit, I9j03oeh6p8l87, I7d71c6b0ekmt9, Ifccifqltb5obi, Iadtsfv699cq8b, Ialpmgmhr3gk5r, I3sdol54kg5jaq, I8fougodaj6di6, I81vt5eq60l4b6, I3vh014cqgmrfd, Ia5cotcvi888ln, I21jsa919m88fd, Iegif7m3upfe1k, I9kt8c221c83ln, Ic76kfh5ebqkpl, Icscpmubum33bq, I21d2olof7eb60, Ibgm4rnf22lal1, Ie68np0vpihith, I9bnv6lu0crf1q, Iauhjqifrdklq7, Ie1uso9m8rt5cf, I40pqum1mu8qg3, I1r4c2ghbtvjuc, Ic10m30chc0lcl, I8k3rnvpeeh4hv, I8a5t0g4sf473u, Ia82mnkmeo2rhc, Ic9nd01o41rpld, I1jm8m1rh9e20v, Icbccs0ug47ilf, I855j4i3kr8ko1, I74iaf1m5gd367, Idd7hd99u0ho0n, Iafscmv8tjf0ou, I100l07kaehdlp, I6gnbnvip5vvdi, Ia2l0jp3eo4een, Ie8ljddc762t8h, I3m1ba97d0pnd1, Ifu08h95ov02o9, If1co0pilmi7oq, I666bl2fqjkejo, Iae74gjak1qibn, I3escdojpj0551, Icv68aq8841478, Ic262ibdoec56a, Iflcfm9b6nlmdd, Ijrsf4mnp3eka, Id5fm4p8lj5qgi, I8tjvj9uq4b7hi, I3qt1hgg4djhgb, I4fooe9dun9o0t, I8mvf14goplnni, Ie09mpthond7d6, I1ispultrc7caq, Iph9c4rn81ub2, Ier2cke86dqbr2, Ibi0s841005et5, I395h9meqpi2hf, I66jdpl6lile9j, Ifa84va5usjhbs, I7qnibt85843h4, Iecest14o0pmc2, I5i6clrj1m1v3f, Ife9a8l1jn5dhf, I1srmrc4hmsm4, I39t01nnod9109, I6v8sm60vvkmk7, I1qmtmbe5so8r3, Ih99m6ehpcar7, Idgorhsbgdq2ap, I9ubb2kqevnu6t, I2hq50pu2kdjpo, I9acqruh7322g2, I137t1cld92pod, I61d51nv4cou88, If8u5kl4h8070m, Ibmuil6p3vl83l, I7lul91g50ae87, Icl7nl1rfeog3i, Iasr6pj6shs0fl, I2uqmls7kcdnii, Idg69klialbkb8, I7r6b7145022pp, I30pg328m00nr3, Icmrn7bogp28cs, I7m9b5plj4h5ot, I9onhk772nfs4f, I3l6bnksrmt56r, Idh09k0l2pmdcg, I7uoiphbm0tj4r, I512p1n7qt24l8, I6s1nbislhk619, I3gghqnh2mj0is, I6iv852roh6t3h, I9oc2o6itbiopq, Ibslgga81p36aa, I1rvj4ubaplho0, Ia3uu7lqcc1q1i, I7crucfnonitkn, I7tmrp94r9sq4n, I776bdj5qm6ld3, I5rtkmhm2dng4u, I5r8t4iaend96p, I9vodnt2k1kha, I4ao1le27fcisl, Ih4ursllob8fg, Iaqet9jc3ihboe, Ic952bubvq4k7d, I2v50gu3s1aqk6, Iabpgqcjikia83, I4ch97923evid8, If7uv525tdvv7a, I2an1fs2eiebjp, TransactionValidityTransactionSource, I9ask1o4tfvcvs, I4ph3d1eepnmr1, Icerf8h8pdu8ss, I6spmpef2c7svf, Iei2mvq0mjvt81, I88472ck6vehhv, Iftvbctbo05fu4, XcmVersionedXcm, Ic0c3req3mlc1l, XcmVersionedAssetId, I7ocn4njqde3v5, Iek7ha36da9mf5, I9cqlcs1cfiqgk, Iavcjlern8lpkb, I7q29odn6kt7nd, Ieh6nis3hdbtgi, XcmVersionedAsset, Icujp6hmv35vbn, I4tjame31218k9, I5gif8vomct5i8, Ic1d4u2opv3fst, If4oj302humfb5, I8p068g003vpi6, I3fo6882e5tjh8, If5dekqlo7be3f, I3oi105i165rd5, Ie9sr1iqcg3cgm, I1mqgk2tmnn9i2, I6lr8sctk0bi4e, Iam4td08afnm42 } from "./common-types"; type AnonymousEnum = T & { __anonymous: true; }; @@ -63,7 +63,7 @@ type IStorage = { * Events have a large in-memory size. Box the events to not go out-of-memory * just in case someone still reads them from within the runtime. */ - Events: StorageDescriptor<[], Anonymize, false, never>; + Events: StorageDescriptor<[], Anonymize, false, never>; /** * The number of events in the `Events` list. */ @@ -85,6 +85,10 @@ type IStorage = { * Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened. */ LastRuntimeUpgrade: StorageDescriptor<[], Anonymize, true, never>; + /** + * Number of blocks till the pending code upgrade is applied. + */ + BlocksTillUpgrade: StorageDescriptor<[], number, true, never>; /** * True if we have upgraded so that `type RefCount` is `u32`. False (default) if not. */ @@ -114,6 +118,21 @@ type IStorage = { ExtrinsicWeightReclaimed: StorageDescriptor<[], Anonymize, false, never>; }; ParachainSystem: { + /** + * The current block weight mode. + * + * This is used to determine what is the maximum allowed block weight, for more information see + * [`block_weight`]. + * + * Killed in [`Self::on_initialize`] and set by the [`block_weight`] logic. + */ + BlockWeightMode: StorageDescriptor<[], Anonymize, true, never>; + /** + * The core count available to the parachain in the previous block. + * + * This is mainly used for offchain functionality to calculate the correct target block weight. + */ + PreviousCoreCount: StorageDescriptor<[], number, true, never>; /** * Latest included block descendants the runtime accepted. In other words, these are * ancestors of the currently executing block which have not been included in the observed @@ -134,8 +153,8 @@ type IStorage = { * applied. * * As soon as the relay chain gives us the go-ahead signal, we will overwrite the - * [`:code`][sp_core::storage::well_known_keys::CODE] which will result the next block process - * with the new validation code. This concludes the upgrade process. + * [`:pending_code`][sp_core::storage::well_known_keys::PENDING_CODE] which will result the + * next block to be processed with the new validation code. This concludes the upgrade process. */ PendingValidationCode: StorageDescriptor<[], Binary, false, never>; /** @@ -266,6 +285,10 @@ type IStorage = { * This will be cleared in `on_finalize` for each block. */ PendingUpwardSignals: StorageDescriptor<[], Anonymize, false, never>; + /** + * The approved peer id to be sent as a UMP signal on the last block of the PoV. + */ + PendingApprovedPeer: StorageDescriptor<[], Binary, true, never>; /** * The factor to multiply the base delivery fee by for UMP. */ @@ -291,6 +314,12 @@ type IStorage = { * See `Pallet::set_custom_validation_head_data` for more information. */ CustomValidationHeadData: StorageDescriptor<[], Binary, true, never>; + /** + * Tracks cumulative `UMP` and `HRMP` messages sent across blocks in the current `PoV`. + * + * Across different candidates/PoVs the budgets are tracked by [`AggregatedUnincludedSegment`]. + */ + PoVMessagesTracker: StorageDescriptor<[], Anonymize, true, never>; }; Timestamp: { /** @@ -307,10 +336,25 @@ type IStorage = { }; ParachainInfo: { /** - + * */ ParachainId: StorageDescriptor<[], number, false, never>; }; + MultiBlockMigrations: { + /** + * The currently active migration to run and its cursor. + * + * `None` indicates that no migration is running. + */ + Cursor: StorageDescriptor<[], Anonymize, true, never>; + /** + * Set of all successfully executed migrations. + * + * This is used as blacklist, to not re-execute migrations that have not been removed from the + * codebase yet. Governance can regularly clear this out via `clear_historic`. + */ + Historic: StorageDescriptor<[Key: Binary], null, true, never>; + }; Balances: { /** * The total units issued in the system. @@ -371,11 +415,11 @@ type IStorage = { }; TransactionPayment: { /** - + * */ NextFeeMultiplier: StorageDescriptor<[], bigint, false, never>; /** - + * */ StorageVersion: StorageDescriptor<[], TransactionPaymentReleases, false, never>; /** @@ -387,13 +431,19 @@ type IStorage = { }; TransactionStorage: { /** - * Authorizations, keyed by scope. + * Authorizations, keyed by scope. `pub` for cross-pallet read access from + * `pallet-bulletin-data-renewal`'s tests (consumed via `check_authorization` + * in production). + */ + Authorizations: StorageDescriptor<[Key: Anonymize], Anonymize, true, never>; + /** + * List of accounts allowed to give authorizations. */ - Authorizations: StorageDescriptor<[Key: Anonymize], Anonymize, true, never>; + AllowedAuthorizers: StorageDescriptor<[Key: SS58String], Anonymize, true, never>; /** * Collection of transaction metadata by block number. */ - Transactions: StorageDescriptor<[Key: number], Anonymize, true, never>; + Transactions: StorageDescriptor<[Key: number], Anonymize, true, never>; /** * Storage fee per byte. */ @@ -411,14 +461,46 @@ type IStorage = { */ RetentionPeriod: StorageDescriptor<[], number, false, never>; /** - + * + */ + BlockTransactions: StorageDescriptor<[], Anonymize, false, never>; + /** + * Maps content hash to its most recent (block_number, tx_index) location. + * + * `pub` for cross-pallet writes from `pallet-bulletin-data-renewal` (each + * renewal updates the mapping to the new `(block, index)`). Reads outside this pallet should + * go through [`Pallet::lookup_by_content_hash`]. */ - BlockTransactions: StorageDescriptor<[], Anonymize, false, never>; + TransactionByContentHash: StorageDescriptor<[Key: FixedSizeBinary<32>], Anonymize, true, never>; /** * Was the proof checked in this block? */ ProofChecked: StorageDescriptor<[], boolean, false, never>; }; + DataRenewal: { + /** + * Renewal registrations by content hash. + */ + Renewals: StorageDescriptor<[Key: FixedSizeBinary<32>], Anonymize, true, never>; + /** + * Transactions to renew in the current block. + * + * Filled by [`OnObsoleteTransactions::handle_obsolete`] at the retention boundary, + * drained by the [`Pallet::process_pending_renewals`] inherent in the same block. + */ + PendingRenewals: StorageDescriptor<[], Anonymize, false, never>; + /** + * Chain-wide total of currently-on-chain renewed bytes. Source of truth for the + * chain-wide hard cap: a `renew` of `size` bytes is rejected when + * `PermanentStorageUsed + size > MaxPermanentStorageSize`. + * + * Bumped on each successful renew consume. Decremented by + * [`OnObsoleteTransactions::handle_obsolete`] when an obsolete + * `Transactions[block]` is removed: each `meta == Renew` entry contributes its + * `size` to the decrement. + */ + PermanentStorageUsed: StorageDescriptor<[], bigint, false, never>; + }; Authorship: { /** * Author of current block. @@ -547,7 +629,7 @@ type IStorage = { * case of the need to send a high-priority signal message this block. * The bool is true if there is a signal message waiting to be sent. */ - OutboundXcmpStatus: StorageDescriptor<[], Anonymize, false, never>; + OutboundXcmpStatus: StorageDescriptor<[], Anonymize, false, never>; /** * The messages outbound in a given XCMP channel. */ @@ -759,7 +841,7 @@ type ICalls = { */ set_validation_data: TxDescriptor>; /** - + * */ sudo_send_upward_message: TxDescriptor>; }; @@ -808,7 +890,7 @@ type ICalls = { * and the error of the failed call. If all were successful, then the `BatchCompleted` * event is deposited. */ - batch: TxDescriptor>; + batch: TxDescriptor>; /** * Send a call through an indexed pseudonym of the sender. * @@ -824,7 +906,7 @@ type ICalls = { * * The dispatch origin for this call must be _Signed_. */ - as_derivative: TxDescriptor>; + as_derivative: TxDescriptor>; /** * Send a batch of dispatch calls and atomically execute them. * The whole transaction will rollback and fail if any of the calls failed. @@ -840,7 +922,7 @@ type ICalls = { * ## Complexity * - O(C) where C is the number of calls to be batched. */ - batch_all: TxDescriptor>; + batch_all: TxDescriptor>; /** * Dispatches a function call with a provided origin. * @@ -849,7 +931,7 @@ type ICalls = { * ## Complexity * - O(1). */ - dispatch_as: TxDescriptor>; + dispatch_as: TxDescriptor>; /** * Send a batch of dispatch calls. * Unlike `batch`, it allows errors and won't interrupt. @@ -865,7 +947,7 @@ type ICalls = { * ## Complexity * - O(C) where C is the number of calls to be batched. */ - force_batch: TxDescriptor>; + force_batch: TxDescriptor>; /** * Dispatch a function call with a specified weight. * @@ -874,7 +956,7 @@ type ICalls = { * * The dispatch origin for this call must be _Root_. */ - with_weight: TxDescriptor>; + with_weight: TxDescriptor>; /** * Dispatch a fallback call in the event the main call fails to execute. * May be called from any origin except `None`. @@ -900,7 +982,7 @@ type ICalls = { * - Some use cases might involve submitting a `batch` type call in either main, fallback * or both. */ - if_else: TxDescriptor>; + if_else: TxDescriptor>; /** * Dispatches a function call with a provided origin. * @@ -908,7 +990,41 @@ type ICalls = { * * The dispatch origin for this call must be _Root_. */ - dispatch_as_fallible: TxDescriptor>; + dispatch_as_fallible: TxDescriptor>; + }; + MultiBlockMigrations: { + /** + * Allows root to set a cursor to forcefully start, stop or forward the migration process. + * + * Should normally not be needed and is only in place as emergency measure. Note that + * restarting the migration process in this manner will not call the + * [`MigrationStatusHandler::started`] hook or emit an `UpgradeStarted` event. + */ + force_set_cursor: TxDescriptor>; + /** + * Allows root to set an active cursor to forcefully start/forward the migration process. + * + * This is an edge-case version of [`Self::force_set_cursor`] that allows to set the + * `started_at` value to the next block number. Otherwise this would not be possible, since + * `force_set_cursor` takes an absolute block number. Setting `started_at` to `None` + * indicates that the current block number plus one should be used. + */ + force_set_active_cursor: TxDescriptor>; + /** + * Forces the onboarding of the migrations. + * + * This process happens automatically on a runtime upgrade. It is in place as an emergency + * measurement. The cursor needs to be `None` for this to succeed. + */ + force_onboard_mbms: TxDescriptor; + /** + * Clears the `Historic` set. + * + * `map_cursor` must be set to the last value that was returned by the + * `HistoricCleared` event. The first time `None` can be used. `limit` must be chosen in a + * way that will result in a sensible weight. + */ + clear_historic: TxDescriptor>; }; Balances: { /** @@ -1023,42 +1139,21 @@ type ICalls = { */ store_with_cid_config: TxDescriptor>; /** - * Renew previously stored data. Parameters are the block number that contains previous - * `store` or `renew` call and transaction index within that block. Transaction index is - * emitted in the `Stored` or `Renewed` event. - * - * As with [`store`](Self::store), authorization is required to renew data using regular - * signed/unsigned transactions. + * Authorize an account to store up to `bytes` of arbitrary data in `transactions` + * boost-tier transactions. The authorization will expire after a configured number + * of blocks. * - * Emits [`Renewed`](Event::Renewed) when successful. - * - * ## Complexity - * - * O(1). - */ - renew: TxDescriptor>; - /** - * Check storage proof for block number `block_number() - RetentionPeriod`. If such a block - * does not exist, the proof is expected to be `None`. - * - * ## Complexity - * - * Linear w.r.t the number of indexed transactions in the proved block for random probing. - * There's a DB read for each transaction. - */ - check_proof: TxDescriptor>; - /** - * Authorize an account to store up to a given amount of arbitrary data. The authorization - * will expire after a configured number of blocks. - * - * If the account is already authorized to store data, this will increase the amount of - * data the account is authorized to store (and the number of transactions the account may - * submit to supply the data), and push back the expiration block. + * If the account already has an unexpired authorization, this call **adds** `bytes` + * and `transactions` to the existing `bytes_allowance` and `transactions_allowance` + * caps (both saturating); the expiration block is **not** pushed back, and the + * consumed counters are preserved. Once the authorization has expired, the next call + * replaces it with a fresh entry (consumed counters reset to `0`, allowances set to + * the new values, expiry = `now + AuthorizationPeriod`). * * Parameters: * * - `who`: The account to be credited with an authorization to store data. - * - `transactions`: The number of transactions that `who` may submit to supply that data. + * - `transactions`: The number of boost-tier transactions that `who` may submit. * - `bytes`: The number of bytes that `who` may submit. * * The origin for this call must be the pallet's `Authorizer`. Emits @@ -1070,8 +1165,10 @@ type ICalls = { * expire after a configured number of blocks. * * If authorization already exists for a preimage of the given hash to be stored, the - * maximum size of the preimage will be increased to `max_size`, and the expiration block - * will be pushed back. + * maximum size of the preimage will be increased to `max_size`. The expiration block + * is **not** pushed back; use + * [`refresh_preimage_authorization`](Self::refresh_preimage_authorization) to extend + * expiry. * * Parameters: * @@ -1110,6 +1207,11 @@ type ICalls = { /** * Refresh the expiration of an existing authorization for an account. * + * Only the expiration block is updated — consumed counters (`bytes`, + * `transactions`) and the granted caps (`bytes_allowance`, + * `transactions_allowance`) are left untouched. To extend the caps, call + * `authorize_account` instead (additive on the unexpired path). + * * If the account does not have an authorization, the call will fail. * * Parameters: @@ -1123,6 +1225,11 @@ type ICalls = { /** * Refresh the expiration of an existing authorization for a preimage of a BLAKE2b hash. * + * Only the expiration block is updated — consumed counters (`bytes`, + * `transactions`) and the granted caps (`bytes_allowance`, + * `transactions_allowance`) are left untouched. To raise the cap, call + * `authorize_preimage` instead. + * * If the preimage does not have an authorization, the call will fail. * * Parameters: @@ -1134,6 +1241,107 @@ type ICalls = { * successful. */ refresh_preimage_authorization: TxDescriptor>; + /** + * Block-level mandatory inherent for the transaction-storage proof. + * + * `proof` is `Some` when the inherent data provider supplied one; otherwise the + * proof step is skipped (early or empty blocks). The companion drain of pending + * auto-renewals lives in `pallet-bulletin-data-renewal`'s own inherent. + */ + apply_block_inherents: TxDescriptor>; + /** + * Add an account to the set of allowed authorizers. Allowed authorizers can call + * [`authorize_account`](Self::authorize_account) and + * [`authorize_preimage`](Self::authorize_preimage) to grant storage access. + * + * If the account is already an allowed authorizer, its `budget` is **overwritten** + * with the new values. + * + * `budget` constraints: + * + * - `valid_until`: when `Some(t)`, must satisfy `t > now`. The entry stops authorizing + * once `now >= t` and becomes eligible for permissionless cleanup via + * [`remove_exhausted_authorizer`](Self::remove_exhausted_authorizer). Authorizations + * granted by this entry have their expiration clamped to `t`. + * + * The origin for this call must satisfy `AuthorizerRegistrarOrigin`. Emits + * [`AuthorizerAdded`](Event::AuthorizerAdded) when successful. + */ + add_authorizer: TxDescriptor>; + /** + * Remove an account from the set of allowed authorizers. The removed account will no + * longer be able to call [`authorize_account`](Self::authorize_account) or + * [`authorize_preimage`](Self::authorize_preimage). + * + * If the account is not currently an allowed authorizer, this is a no-op. + * + * Parameters: + * + * - `who`: The account to remove from the allowed authorizers. + * + * The origin for this call must satisfy `AuthorizerRegistrarOrigin`. Emits + * [`AuthorizerRemoved`](Event::AuthorizerRemoved) when successful. + */ + remove_authorizer: TxDescriptor>; + /** + * Remove an authorizer that is exhausted (budget zero on either axis) or expired + * (`now >= valid_until` for an entry that set `valid_period`). Anyone can call this. + * + * Parameters: + * + * - `who`: The authorizer to remove. + * + * Emits [`ExhaustedAuthorizerRemoved`](Event::ExhaustedAuthorizerRemoved) + * when successful. + */ + remove_exhausted_authorizer: TxDescriptor>; + }; + HopPromotion: { + /** + * + */ + promote: TxDescriptor>; + /** + * V2 variant of [`Self::promote`]: identical body, but the authorize hook + * requires the user's signature to additionally cover the chain genesis + * hash and a hash of the recipients list (see [`signing_payload_v2`]). + */ + promote_v2: TxDescriptor>; + }; + DataRenewal: { + /** + * Schedule a one-shot auto-renewal. Fires once at the + * `RetentionPeriod` boundary, then the registration is removed. + * Prepaid at registration; see [`force_renew`](Self::force_renew) for + * synchronous renewal or [`enable_auto_renew`](Self::enable_auto_renew) + * for recurring. + */ + renew: TxDescriptor>; + /** + * Renew previously stored data synchronously. Charges `info.size` against + * the caller's `bytes_permanent` and the chain-wide `PermanentStorageUsed`. + */ + force_renew: TxDescriptor>; + /** + * Register recurring auto-renewal for `content_hash`. First cycle is + * prepaid at registration (`paid = true`); subsequent cycles charge + * the owner's authorization in `do_process_pending_renewals` and + * drop the registration on quota exhaustion with + * [`Event::RenewalFailed`]. + */ + enable_auto_renew: TxDescriptor>; + /** + * Disable auto-renewal. Signed callers must own the registration AND + * wait for the prepaid first cycle to have fired (else + * [`Error::CannotDisablePrepaidAutoRenewal`]). Root bypasses both + * checks. + */ + disable_auto_renew: TxDescriptor>; + /** + * Mandatory inherent: drain [`PendingRenewals`] for the current + * block. Refunds to the actually-drained count via `PostDispatchInfo`. + */ + process_pending_renewals: TxDescriptor; }; CollatorSelection: { /** @@ -1289,7 +1497,7 @@ type ICalls = { }; PolkadotXcm: { /** - + * */ send: TxDescriptor>; /** @@ -1494,6 +1702,8 @@ type ICalls = { * - `assets`: The exact assets that were trapped. Use the version to specify what version * was the latest when they were trapped. * - `beneficiary`: The location/account where the claimed assets will be deposited. + * + * The weight of this call is linear in the number of assets claimed. */ claim_assets: TxDescriptor>; /** @@ -1598,7 +1808,7 @@ type ICalls = { /** * Authenticates the sudo key and dispatches a function call with `Root` origin. */ - sudo: TxDescriptor>; + sudo: TxDescriptor>; /** * Authenticates the sudo key and dispatches a function call with `Root` origin. * This function does not check the weight of the call, and instead allows the @@ -1606,7 +1816,7 @@ type ICalls = { * * The dispatch origin for this call must be _Signed_. */ - sudo_unchecked_weight: TxDescriptor>; + sudo_unchecked_weight: TxDescriptor>; /** * Authenticates the current sudo key and sets the given AccountId (`new`) as the new sudo * key. @@ -1618,7 +1828,7 @@ type ICalls = { * * The dispatch origin for this call must be _Signed_. */ - sudo_as: TxDescriptor>; + sudo_as: TxDescriptor>; /** * Permanently removes the sudo key. * @@ -1636,11 +1846,11 @@ type IEvent = { /** * An extrinsic failed. */ - ExtrinsicFailed: PlainDescriptor>; + ExtrinsicFailed: PlainDescriptor>; /** - * `:code` was updated. + * `:code` was updated to the code with the given hash. */ - CodeUpdated: PlainDescriptor; + CodeUpdated: PlainDescriptor>; /** * A new account was created. */ @@ -1660,7 +1870,7 @@ type IEvent = { /** * An invalid authorized upgrade was rejected while trying to apply it. */ - RejectedInvalidAuthorizedUpgrade: PlainDescriptor>; + RejectedInvalidAuthorizedUpgrade: PlainDescriptor>; }; ParachainSystem: { /** @@ -1693,7 +1903,7 @@ type IEvent = { * Batch of dispatches did not complete fully. Index of first failing dispatch given, as * well as the error. */ - BatchInterrupted: PlainDescriptor>; + BatchInterrupted: PlainDescriptor>; /** * Batch of dispatches completed fully with no error. */ @@ -1709,11 +1919,11 @@ type IEvent = { /** * A single item within a Batch of dispatches has completed with error. */ - ItemFailed: PlainDescriptor>; + ItemFailed: PlainDescriptor>; /** * A call was dispatched. */ - DispatchedAs: PlainDescriptor>; + DispatchedAs: PlainDescriptor>; /** * Main call was dispatched. */ @@ -1721,7 +1931,49 @@ type IEvent = { /** * The fallback call was dispatched. */ - IfElseFallbackCalled: PlainDescriptor>; + IfElseFallbackCalled: PlainDescriptor>; + }; + MultiBlockMigrations: { + /** + * A Runtime upgrade started. + * + * Its end is indicated by `UpgradeCompleted` or `UpgradeFailed`. + */ + UpgradeStarted: PlainDescriptor>; + /** + * The current runtime upgrade completed. + * + * This implies that all of its migrations completed successfully as well. + */ + UpgradeCompleted: PlainDescriptor; + /** + * Runtime upgrade failed. + * + * This is very bad and will require governance intervention. + */ + UpgradeFailed: PlainDescriptor; + /** + * A migration was skipped since it was already executed in the past. + */ + MigrationSkipped: PlainDescriptor>; + /** + * A migration progressed. + */ + MigrationAdvanced: PlainDescriptor>; + /** + * A Migration completed. + */ + MigrationCompleted: PlainDescriptor>; + /** + * A Migration failed. + * + * This implies that the whole upgrade failed and governance intervention is required. + */ + MigrationFailed: PlainDescriptor>; + /** + * The set of historical migrations has been cleared. + */ + HistoricCleared: PlainDescriptor>; }; Balances: { /** @@ -1865,16 +2117,13 @@ type IEvent = { * Stored data under specified index. */ Stored: PlainDescriptor>; - /** - * Renewed data under specified index. - */ - Renewed: PlainDescriptor>; /** * Storage proof was successfully checked. */ ProofChecked: PlainDescriptor; /** - * An account `who` was authorized to store `bytes` bytes in `transactions` transactions. + * An account `who` was authorized to store `bytes` bytes in `transactions` boost-tier + * transactions. */ AccountAuthorized: PlainDescriptor>; /** @@ -1898,6 +2147,54 @@ type IEvent = { * An expired preimage authorization was removed. */ ExpiredPreimageAuthorizationRemoved: PlainDescriptor>; + /** + * An authorizer was added to the allowed list. + */ + AuthorizerAdded: PlainDescriptor>; + /** + * An authorizer was removed from the allowed list by the manager. + */ + AuthorizerRemoved: PlainDescriptor>; + /** + * An authorizer was removed from the allowed list due to budget exhaustion. + */ + ExhaustedAuthorizerRemoved: PlainDescriptor>; + }; + DataRenewal: { + /** + * Renewed data under specified index. + */ + Renewed: PlainDescriptor>; + /** + * A renewal was enabled for `content_hash` by `who`. + */ + RenewalEnabled: PlainDescriptor>; + /** + * Auto-renewal disabled for `content_hash`. `who` is the registration's owner + * (not the caller when Root issued the disable). + */ + AutoRenewalDisabled: PlainDescriptor>; + /** + * A registered renewal fired, re-storing the data at `index`. + */ + DataRenewed: PlainDescriptor>; + /** + * A registered renewal failed on `account`'s authorization; the registration is + * dropped and the data expires. + */ + RenewalFailed: PlainDescriptor>; + /** + * `PermanentStorageUsed` changed (a `renew` bumped it, or the obsolete sweep + * decremented it). Off-chain capacity-planning consumers can drive their dashboards + * from these. + */ + PermanentStorageUsedUpdated: PlainDescriptor>; + /** + * `PermanentStorageUsed` just crossed the [`PERMANENT_STORAGE_NEAR_CAP_PERCENT`] + * threshold of `MaxPermanentStorageSize` on the rising edge. Emitted once per + * crossing — no re-emission while still above the threshold. + */ + PermanentStorageNearCap: PlainDescriptor>; }; CollatorSelection: { /** @@ -2158,7 +2455,7 @@ type IEvent = { /** * A sudo call just took place. */ - Sudid: PlainDescriptor>; + Sudid: PlainDescriptor>; /** * The sudo key has been updated. */ @@ -2170,7 +2467,7 @@ type IEvent = { /** * A [sudo_as](Pallet::sudo_as) call just took place. */ - SudoAsDone: PlainDescriptor>; + SudoAsDone: PlainDescriptor>; }; }; type IError = { @@ -2249,6 +2546,12 @@ type IError = { */ TooManyCalls: PlainDescriptor; }; + MultiBlockMigrations: { + /** + * The operation cannot complete since some MBMs are ongoing. + */ + Ongoing: PlainDescriptor; + }; Balances: { /** * Vesting balance too high to send value. @@ -2356,6 +2659,63 @@ type IError = { * Content hash was not calculated. */ InvalidContentHash: PlainDescriptor; + /** + * Authorizer account was not found. + */ + AuthorizerNotFound: PlainDescriptor; + /** + * Authorizer is not eligible for permissionless removal — it still has budget on both + * axes AND (if `valid_until` is set) has not yet expired. + */ + AuthorizerBudgetNotExhausted: PlainDescriptor; + /** + * `valid_until` supplied to `add_authorizer` is in the past (`<= now`, would + * expire immediately). Pass `None` for no expiration. + */ + InvalidValidUntil: PlainDescriptor; + /** + * `authorize_account` / `authorize_preimage` called by a signer whose + * `AllowedAuthorizers` budget cannot cover the requested + * `transactions` / `bytes` (or `max_size`). + */ + InsufficientAuthorizerBudget: PlainDescriptor; + }; + DataRenewal: { + /** + * Attempted to call `force_renew` outside of block execution. + */ + BadContext: PlainDescriptor; + /** + * Renewed extrinsic is not found. + */ + RenewedNotFound: PlainDescriptor; + /** + * Block already contains the maximum number of transactions. + */ + TooManyTransactions: PlainDescriptor; + /** + * A renewal is already registered for this content hash. + */ + RenewalAlreadyEnabled: PlainDescriptor; + /** + * Auto-renewal is not enabled for this content hash. + */ + AutoRenewalNotEnabled: PlainDescriptor; + /** + * Caller is not the owner of the auto-renewal registration. + */ + NotAutoRenewalOwner: PlainDescriptor; + /** + * `disable_auto_renew` rejected: the registration has been prepaid for its next + * cycle and cannot be disabled by the owner until the cycle fires and consumes + * the prepayment. Root can still disable for governance cleanup. + */ + CannotDisablePrepaidAutoRenewal: PlainDescriptor; + /** + * Data size of the renewed entry is not in the allowed range. Appended last: the + * earlier indices are wire-visible. + */ + BadDataSize: PlainDescriptor; }; CollatorSelection: { /** @@ -2694,6 +3054,22 @@ type IConstants = { */ batched_calls_limit: PlainDescriptor; }; + MultiBlockMigrations: { + /** + * The maximal length of an encoded cursor. + * + * A good default needs to selected such that no migration will ever have a cursor with MEL + * above this limit. This is statically checked in `integrity_test`. + */ + CursorMaxLen: PlainDescriptor; + /** + * The maximal length of an encoded identifier. + * + * A good default needs to selected such that no migration will ever have an identifier + * with MEL above this limit. This is statically checked in `integrity_test`. + */ + IdentifierMaxLen: PlainDescriptor; + }; Balances: { /** * The minimum amount required to keep an account open. MUST BE GREATER THAN ZERO! @@ -2764,21 +3140,53 @@ type IConstants = { */ AuthorizationPeriod: PlainDescriptor; /** - * Priority of store/renew transactions. + * Pool params for signed and preimage-authorized `store`. One prefix is safe: they + * tag on `(who, content_hash)` and `content_hash` respectively. + */ + StoreTxParams: PlainDescriptor>; + /** + * Pool params for `authorize_*` and `refresh_*`, which validate untagged. */ - StoreRenewPriority: PlainDescriptor; + AuthorizeTxParams: PlainDescriptor>; /** - * Longevity of store/renew transactions. + * Pool params for `remove_expired_account_authorization`. The three cleanup calls get + * their own items because two provide `who` and a `ContentHash` encodes like an + * `AccountId32`, so they need distinct prefixes despite shared pricing. */ - StoreRenewLongevity: PlainDescriptor; + RemoveExpiredAccountAuthorizationTxParams: PlainDescriptor>; /** - * Priority of unsigned transactions to remove expired authorizations. + * Pool params for `remove_expired_preimage_authorization`. */ - RemoveExpiredAuthorizationPriority: PlainDescriptor; + RemoveExpiredPreimageAuthorizationTxParams: PlainDescriptor>; /** - * Longevity of unsigned transactions to remove expired authorizations. + * Pool params for `remove_exhausted_authorizer`. */ - RemoveExpiredAuthorizationLongevity: PlainDescriptor; + RemoveExhaustedAuthorizerTxParams: PlainDescriptor>; + }; + HopPromotion: { + /** + * Maximum allowable skew (in milliseconds) between the user's + * submit timestamp and the on-chain time when validating a promotion. + */ + SubmitTimestampTolerance: PlainDescriptor; + /** + * Pool params for `promote`. `integrity_test` enforces its priority below `store`'s. + */ + PromoteTxParams: PlainDescriptor>; + }; + DataRenewal: { + /** + * Cap, in bytes, on total permanent storage (via `renew`) committed across + * all authorizations. + */ + MaxPermanentStorageSize: PlainDescriptor; + /** + * Pool params for every renewal call. One prefix, so at most one of `renew`, + * `force_renew` and `enable_auto_renew` per account and content hash is queued at + * a time. Preimage `force_renew` tags on the content hash alone, so it dedups + * separately. + */ + RenewTxParams: PlainDescriptor>; }; CollatorSelection: { /** @@ -2802,7 +3210,7 @@ type IConstants = { */ MaxInvulnerables: PlainDescriptor; /** - + * */ KickThreshold: PlainDescriptor; /** @@ -2908,7 +3316,31 @@ type IConstants = { IdleMaxServiceWeight: PlainDescriptor>; }; }; -type IViewFns = {}; +type IViewFns = { + MultiBlockMigrations: { + /** + * Returns the ongoing status of migrations. + */ + ongoing_status: RuntimeDescriptor<[], Anonymize>; + /** + * Returns progress information about the current migration, if any. + * + * This function provides detailed information about the current migration's progress, + * including the number of steps completed and the maximum allowed steps. + */ + progress: RuntimeDescriptor<[], Anonymize>; + /** + * Returns the storage prefixes affected by the current migration. + * + * Can be empty if the migration does not know or there are no prefixes. + */ + affected_prefixes: RuntimeDescriptor<[], Anonymize>; + /** + * Returns the comprehensive status of multi-block migrations. + */ + status: RuntimeDescriptor<[], Anonymize>; + }; +}; type IRuntimeCalls = { /** * API necessary for block authorship with aura. @@ -2926,16 +3358,66 @@ type IRuntimeCalls = { authorities: RuntimeDescriptor<[], Anonymize>; }; /** - * API to tell the node side how the relay parent should be chosen. + * API to tell the node side how the relay parent should be chosen and how claim queue + * offsets are determined. + * + * A larger relay parent offset indicates that the relay parent should not be the tip of + * the relay chain, but `N` blocks behind the tip. This offset is then enforced by the + * runtime. + * + * The max claim queue offset determines how far "into the future" collators target when + * selecting cores from the claim queue. This provides async backing flexibility while + * preventing collators from skipping slots. + * See: * - * A larger offset indicates that the relay parent should not be the tip of the relay chain, - * but `N` blocks behind the tip. This offset is then enforced by the runtime. + * Version history: + * - Version 1: Initial version with `relay_parent_offset` only + * - Version 2: Added `max_claim_queue_offset` method */ RelayParentOffsetApi: { /** - * Fetch the slot offset that is expected from the relay chain. + * Fetch the relay parent offset that is expected from the relay chain. + * + * This determines how many blocks behind the relay chain tip the relay parent should be. */ relay_parent_offset: RuntimeDescriptor<[], number>; + /** + * Maximum claim queue offset for async backing flexibility. + * + * Bounds how far "into the future" a candidate may look in the claim queue when + * selecting a core. The effective claim queue depth depends on the candidate version: + * + * - **V1/V2 candidates**: the claim queue is looked up at the candidate's `relay_parent`, + * which is `relay_parent_offset` blocks behind the relay-chain tip. The effective + * depth is `relay_parent_offset + max_claim_queue_offset`. + * + * - **V3 candidates**: the claim queue is looked up at the candidate's + * `scheduling_parent` — the relay-chain block of the *last finished* slot, decoupled + * from the execution-context `relay_parent`. The effective depth is just + * `max_claim_queue_offset`. + * + * Collators select a core via an offset in `[0, max_claim_queue_offset]`. + * + * - **V2 candidates**: `max_claim_queue_offset = 1` is sufficient. The claim queue is + * looked up at `relay_parent`, which sits behind the tip. Offset 0 covers synchronous + * backing in the next relay block; offset 1 covers asynchronous backing in the relay + * block after that. + * + * - **V3 candidates**: offset 0 is not reachable — the `scheduling_parent` + * is usually the leaf when picked, but its child is already being built, so there is + * no opportunity to land in the next relay block. Offset 1 is reachable under + * synchronous-backing semantics. For elastic scaling the last block in the bundle is + * built near the end of the current slot, which makes offset 1 too tight — + * `max_claim_queue_offset = 2` is the minimum cap that keeps elastic scaling viable. + * + * Note: this method was added in `api_version = 2`. Collators calling on runtimes that + * only implement `api_version = 1` of [`RelayParentOffsetApi`] will receive an error + * and should fall back to a sensible default (current collator defaults: `1` on the + * V3 path, `0` on the V1/V2 path). + * + * See: + */ + max_claim_queue_offset: RuntimeDescriptor<[], number>; }; /** * This runtime API is used to inform potential block authors whether they will @@ -3016,7 +3498,7 @@ type IRuntimeCalls = { * Returns an inclusion outcome which specifies if this extrinsic is included in * this block or not. */ - apply_extrinsic: RuntimeDescriptor<[extrinsic: Binary], Anonymize>; + apply_extrinsic: RuntimeDescriptor<[extrinsic: Binary], Anonymize>; /** * Finish the current block. */ @@ -3091,19 +3573,19 @@ type IRuntimeCalls = { */ TransactionPaymentApi: { /** - + * */ query_info: RuntimeDescriptor<[uxt: Binary, len: number], Anonymize>; /** - + * */ query_fee_details: RuntimeDescriptor<[uxt: Binary, len: number], Anonymize>; /** - + * */ query_weight_to_fee: RuntimeDescriptor<[weight: Anonymize], bigint>; /** - + * */ query_length_to_fee: RuntimeDescriptor<[length: number], bigint>; }; @@ -3114,11 +3596,11 @@ type IRuntimeCalls = { /** * Query information of a dispatch class, weight, and fee of a given encoded `Call`. */ - query_call_info: RuntimeDescriptor<[call: Anonymize, len: number], Anonymize>; + query_call_info: RuntimeDescriptor<[call: Anonymize, len: number], Anonymize>; /** * Query fee details of a given encoded `Call`. */ - query_call_fee_details: RuntimeDescriptor<[call: Anonymize, len: number], Anonymize>; + query_call_fee_details: RuntimeDescriptor<[call: Anonymize, len: number], Anonymize>; /** * Query the output of the current `WeightToFee` given some input. */ @@ -3196,11 +3678,11 @@ type IRuntimeCalls = { /** * Dry run call V2. */ - dry_run_call: RuntimeDescriptor<[origin: Anonymize, call: Anonymize, result_xcms_version: number], Anonymize>; + dry_run_call: RuntimeDescriptor<[origin: Anonymize, call: Anonymize, result_xcms_version: number], Anonymize>; /** * Dry run XCM program */ - dry_run_xcm: RuntimeDescriptor<[origin_location: XcmVersionedLocation, xcm: XcmVersionedXcm], Anonymize>; + dry_run_xcm: RuntimeDescriptor<[origin_location: XcmVersionedLocation, xcm: XcmVersionedXcm], Anonymize>; }; /** * API for useful conversions between XCM `Location` and `AccountId`. @@ -3266,9 +3748,82 @@ type IRuntimeCalls = { */ TransactionStorageApi: { /** - * Get the actual value of a retention period in blocks. + * Retention period for indexed data, in blocks. */ retention_period: RuntimeDescriptor<[], number>; + /** + * Indexed-transaction metadata for `block`. + * + * Returns an empty vector if the block has no indexed transactions or + * is outside the retention window. + */ + indexed_transactions: RuntimeDescriptor<[block: number], Anonymize>; + }; + /** + * Runtime API for HOP. + * + * Runtimes that support HOP implement this API so the node can check + * authorization and promote near-expiry pool entries to on-chain storage. + */ + HopRuntimeApi: { + /** + * Maximum blob size (in bytes) the runtime will accept for promotion. + * + * Authoritative — the node rejects oversized submissions at the RPC + * boundary using this value, before any per-account authorization lookup + * or signature verification. + */ + max_promotion_size: RuntimeDescriptor<[], number>; + /** + * Whether `who` may submit a HOP blob of `data_len` bytes for promotion. + * + * Returns `false` for any per-account "not allowed" reason — unknown + * account, exhausted quota, size outside a per-account tier, etc. The + * absolute per-submission size cap is the responsibility of + * [`Self::max_promotion_size`]; this hook is for per-account policy. + */ + can_account_promote: RuntimeDescriptor<[who: SS58String, data_len: number], boolean>; + /** + * Construct an unsigned promotion extrinsic carrying the user's submit-time + * (in milliseconds from the Unix epoch), signer, signature, and timestamp + * so the runtime pallet can verify consent on-chain. + * + * `submit_timestamp` is bound into the signed payload. Implementing + * runtimes **must** reject promotions whose timestamp is outside a + * tolerance window around the current on-chain clock — otherwise the + * same `(data, signer, signature)` tuple can be replayed indefinitely + * from the collator's persisted metadata. The width of the window is a + * runtime policy decision (clock skew + max acceptable promotion + * latency); a few hours is a reasonable upper bound. + */ + create_promotion_extrinsic: RuntimeDescriptor<[data: Binary, signer: Anonymize, signature: Anonymize, submit_timestamp: bigint], Binary>; + /** + * Whether the content with `hash` is already stored on-chain. + * + * Used by HOP's maintenance task to confirm that a previously submitted + * promotion extrinsic actually made it into a block. + */ + is_promoted_on_chain: RuntimeDescriptor<[hash: FixedSizeBinary<32>], boolean>; + }; + /** + * Runtime API for the Bulletin Chain transaction-storage pallet. + */ + BulletinTransactionStorageApi: { + /** + * Authorization summary for `account`, or `None` if the account has + * no unexpired authorization. + */ + account_authorization: RuntimeDescriptor<[account: SS58String], Anonymize>; + /** + * Returns `true` iff a `store(data)` call where `data.len() == data_len` + * would currently pass transaction validation for `account`. + */ + can_store: RuntimeDescriptor<[account: SS58String, data_len: number], boolean>; + /** + * Returns `true` iff a `renew(entry)` call would currently pass transaction + * validation for `account`. + */ + can_renew: RuntimeDescriptor<[account: SS58String, entry: Anonymize], boolean>; }; /** * API to interact with `RuntimeGenesisConfig` for the runtime @@ -3322,7 +3877,7 @@ type IRuntimeCalls = { parachain_id: RuntimeDescriptor<[], number>; }; }; -export type BulletinDispatchError = Anonymize; +export type BulletinDispatchError = Anonymize; type IAsset = PlainDescriptor; export type BulletinExtensions = {}; type PalletsTypedef = { @@ -3353,20 +3908,22 @@ export type BulletinEvents = EventsFromPalletsDef; export type BulletinErrors = ErrorsFromPalletsDef; export type BulletinConstants = ConstFromPalletsDef; export type BulletinViewFns = ViewFnsFromPalletsDef; -export type BulletinCallData = Anonymize & { +export type BulletinCallData = Anonymize & { value: { type: string; }; }; type AllInteractions = { storage: { - System: ['Account', 'ExtrinsicCount', 'InherentsApplied', 'BlockWeight', 'BlockSize', 'BlockHash', 'ExtrinsicData', 'Number', 'ParentHash', 'Digest', 'Events', 'EventCount', 'EventTopics', 'LastRuntimeUpgrade', 'UpgradedToU32RefCount', 'UpgradedToTripleRefCount', 'ExecutionPhase', 'AuthorizedUpgrade', 'ExtrinsicWeightReclaimed']; - ParachainSystem: ['UnincludedSegment', 'AggregatedUnincludedSegment', 'PendingValidationCode', 'NewValidationCode', 'ValidationData', 'DidSetValidationCode', 'LastRelayChainBlockNumber', 'UpgradeRestrictionSignal', 'UpgradeGoAhead', 'RelayStateProof', 'RelevantMessagingState', 'HostConfiguration', 'LastDmqMqcHead', 'LastHrmpMqcHeads', 'ProcessedDownwardMessages', 'LastProcessedDownwardMessage', 'HrmpWatermark', 'LastProcessedHrmpMessage', 'HrmpOutboundMessages', 'UpwardMessages', 'PendingUpwardMessages', 'PendingUpwardSignals', 'UpwardDeliveryFeeFactor', 'AnnouncedHrmpMessagesPerCandidate', 'ReservedXcmpWeightOverride', 'ReservedDmpWeightOverride', 'CustomValidationHeadData']; + System: ['Account', 'ExtrinsicCount', 'InherentsApplied', 'BlockWeight', 'BlockSize', 'BlockHash', 'ExtrinsicData', 'Number', 'ParentHash', 'Digest', 'Events', 'EventCount', 'EventTopics', 'LastRuntimeUpgrade', 'BlocksTillUpgrade', 'UpgradedToU32RefCount', 'UpgradedToTripleRefCount', 'ExecutionPhase', 'AuthorizedUpgrade', 'ExtrinsicWeightReclaimed']; + ParachainSystem: ['BlockWeightMode', 'PreviousCoreCount', 'UnincludedSegment', 'AggregatedUnincludedSegment', 'PendingValidationCode', 'NewValidationCode', 'ValidationData', 'DidSetValidationCode', 'LastRelayChainBlockNumber', 'UpgradeRestrictionSignal', 'UpgradeGoAhead', 'RelayStateProof', 'RelevantMessagingState', 'HostConfiguration', 'LastDmqMqcHead', 'LastHrmpMqcHeads', 'ProcessedDownwardMessages', 'LastProcessedDownwardMessage', 'HrmpWatermark', 'LastProcessedHrmpMessage', 'HrmpOutboundMessages', 'UpwardMessages', 'PendingUpwardMessages', 'PendingUpwardSignals', 'PendingApprovedPeer', 'UpwardDeliveryFeeFactor', 'AnnouncedHrmpMessagesPerCandidate', 'ReservedXcmpWeightOverride', 'ReservedDmpWeightOverride', 'CustomValidationHeadData', 'PoVMessagesTracker']; Timestamp: ['Now', 'DidUpdate']; ParachainInfo: ['ParachainId']; + MultiBlockMigrations: ['Cursor', 'Historic']; Balances: ['TotalIssuance', 'InactiveIssuance', 'Account', 'Locks', 'Reserves', 'Holds', 'Freezes']; TransactionPayment: ['NextFeeMultiplier', 'StorageVersion', 'TxPaymentCredit']; - TransactionStorage: ['Authorizations', 'Transactions', 'ByteFee', 'EntryFee', 'RetentionPeriod', 'BlockTransactions', 'ProofChecked']; + TransactionStorage: ['Authorizations', 'AllowedAuthorizers', 'Transactions', 'ByteFee', 'EntryFee', 'RetentionPeriod', 'BlockTransactions', 'TransactionByContentHash', 'ProofChecked']; + DataRenewal: ['Renewals', 'PendingRenewals', 'PermanentStorageUsed']; Authorship: ['Author']; CollatorSelection: ['Invulnerables', 'CandidateList', 'LastAuthoredBlock', 'DesiredCandidates', 'CandidacyBond']; Session: ['Validators', 'CurrentIndex', 'QueuedChanged', 'QueuedKeys', 'DisabledValidators', 'NextKeys', 'KeyOwner', 'ExternallySetKeys']; @@ -3382,8 +3939,11 @@ type AllInteractions = { ParachainSystem: ['set_validation_data', 'sudo_send_upward_message']; Timestamp: ['set']; Utility: ['batch', 'as_derivative', 'batch_all', 'dispatch_as', 'force_batch', 'with_weight', 'if_else', 'dispatch_as_fallible']; + MultiBlockMigrations: ['force_set_cursor', 'force_set_active_cursor', 'force_onboard_mbms', 'clear_historic']; Balances: ['transfer_allow_death', 'force_transfer', 'transfer_keep_alive', 'transfer_all', 'force_unreserve', 'upgrade_accounts', 'force_set_balance', 'force_adjust_total_issuance', 'burn']; - TransactionStorage: ['store', 'store_with_cid_config', 'renew', 'check_proof', 'authorize_account', 'authorize_preimage', 'remove_expired_account_authorization', 'remove_expired_preimage_authorization', 'refresh_account_authorization', 'refresh_preimage_authorization']; + TransactionStorage: ['store', 'store_with_cid_config', 'authorize_account', 'authorize_preimage', 'remove_expired_account_authorization', 'remove_expired_preimage_authorization', 'refresh_account_authorization', 'refresh_preimage_authorization', 'apply_block_inherents', 'add_authorizer', 'remove_authorizer', 'remove_exhausted_authorizer']; + HopPromotion: ['promote', 'promote_v2']; + DataRenewal: ['renew', 'force_renew', 'enable_auto_renew', 'disable_auto_renew', 'process_pending_renewals']; CollatorSelection: ['set_invulnerables', 'set_desired_candidates', 'set_candidacy_bond', 'register_as_candidate', 'leave_intent', 'add_invulnerable', 'remove_invulnerable', 'update_bond', 'take_candidate_slot']; Session: ['set_keys', 'purge_keys']; XcmpQueue: ['suspend_xcm_execution', 'resume_xcm_execution', 'update_suspend_threshold', 'update_drop_threshold', 'update_resume_threshold']; @@ -3395,10 +3955,12 @@ type AllInteractions = { System: ['ExtrinsicSuccess', 'ExtrinsicFailed', 'CodeUpdated', 'NewAccount', 'KilledAccount', 'Remarked', 'UpgradeAuthorized', 'RejectedInvalidAuthorizedUpgrade']; ParachainSystem: ['ValidationFunctionStored', 'ValidationFunctionApplied', 'ValidationFunctionDiscarded', 'DownwardMessagesReceived', 'DownwardMessagesProcessed', 'UpwardMessageSent']; Utility: ['BatchInterrupted', 'BatchCompleted', 'BatchCompletedWithErrors', 'ItemCompleted', 'ItemFailed', 'DispatchedAs', 'IfElseMainSuccess', 'IfElseFallbackCalled']; + MultiBlockMigrations: ['UpgradeStarted', 'UpgradeCompleted', 'UpgradeFailed', 'MigrationSkipped', 'MigrationAdvanced', 'MigrationCompleted', 'MigrationFailed', 'HistoricCleared']; Balances: ['Endowed', 'DustLost', 'Transfer', 'BalanceSet', 'Reserved', 'Unreserved', 'ReserveRepatriated', 'Deposit', 'Withdraw', 'Slashed', 'Minted', 'MintedCredit', 'Burned', 'BurnedDebt', 'Suspended', 'Restored', 'Upgraded', 'Issued', 'Rescinded', 'Locked', 'Unlocked', 'Frozen', 'Thawed', 'TotalIssuanceForced', 'Held', 'BurnedHeld', 'TransferOnHold', 'TransferAndHold', 'Released', 'Unexpected']; TransactionPayment: ['TransactionFeePaid']; SkipFeelessPayment: ['FeeSkipped']; - TransactionStorage: ['Stored', 'Renewed', 'ProofChecked', 'AccountAuthorized', 'AccountAuthorizationRefreshed', 'PreimageAuthorized', 'PreimageAuthorizationRefreshed', 'ExpiredAccountAuthorizationRemoved', 'ExpiredPreimageAuthorizationRemoved']; + TransactionStorage: ['Stored', 'ProofChecked', 'AccountAuthorized', 'AccountAuthorizationRefreshed', 'PreimageAuthorized', 'PreimageAuthorizationRefreshed', 'ExpiredAccountAuthorizationRemoved', 'ExpiredPreimageAuthorizationRemoved', 'AuthorizerAdded', 'AuthorizerRemoved', 'ExhaustedAuthorizerRemoved']; + DataRenewal: ['Renewed', 'RenewalEnabled', 'AutoRenewalDisabled', 'DataRenewed', 'RenewalFailed', 'PermanentStorageUsedUpdated', 'PermanentStorageNearCap']; CollatorSelection: ['NewInvulnerables', 'InvulnerableAdded', 'InvulnerableRemoved', 'NewDesiredCandidates', 'NewCandidacyBond', 'CandidateAdded', 'CandidateBondUpdated', 'CandidateRemoved', 'CandidateReplaced', 'InvalidInvulnerableSkipped']; Session: ['NewSession', 'NewQueued', 'ValidatorDisabled', 'ValidatorReenabled']; XcmpQueue: ['XcmpMessageSent']; @@ -3411,8 +3973,10 @@ type AllInteractions = { System: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered', 'MultiBlockMigrationsOngoing', 'NothingAuthorized', 'Unauthorized']; ParachainSystem: ['OverlappingUpgrades', 'ProhibitedByPolkadot', 'TooBig', 'ValidationDataNotAvailable', 'HostConfigurationNotAvailable', 'NotScheduled']; Utility: ['TooManyCalls']; + MultiBlockMigrations: ['Ongoing']; Balances: ['VestingBalance', 'LiquidityRestrictions', 'InsufficientBalance', 'ExistentialDeposit', 'Expendability', 'ExistingVestingSchedule', 'DeadAccount', 'TooManyReserves', 'TooManyHolds', 'TooManyFreezes', 'IssuanceDeactivated', 'DeltaZero']; - TransactionStorage: ['BadContext', 'BadDataSize', 'TooManyTransactions', 'NotConfigured', 'RenewedNotFound', 'UnexpectedProof', 'InvalidProof', 'MissingProof', 'MissingStateData', 'DoubleCheck', 'ProofNotChecked', 'AuthorizationNotFound', 'AuthorizationNotExpired', 'InvalidContentHash']; + TransactionStorage: ['BadContext', 'BadDataSize', 'TooManyTransactions', 'NotConfigured', 'RenewedNotFound', 'UnexpectedProof', 'InvalidProof', 'MissingProof', 'MissingStateData', 'DoubleCheck', 'ProofNotChecked', 'AuthorizationNotFound', 'AuthorizationNotExpired', 'InvalidContentHash', 'AuthorizerNotFound', 'AuthorizerBudgetNotExhausted', 'InvalidValidUntil', 'InsufficientAuthorizerBudget']; + DataRenewal: ['BadContext', 'RenewedNotFound', 'TooManyTransactions', 'RenewalAlreadyEnabled', 'AutoRenewalNotEnabled', 'NotAutoRenewalOwner', 'CannotDisablePrepaidAutoRenewal', 'BadDataSize']; CollatorSelection: ['TooManyCandidates', 'TooFewEligibleCollators', 'AlreadyCandidate', 'NotCandidate', 'TooManyInvulnerables', 'AlreadyInvulnerable', 'NotInvulnerable', 'NoAssociatedValidatorId', 'ValidatorNotRegistered', 'InsertToCandidateListFailed', 'RemoveFromCandidateListFailed', 'DepositTooLow', 'UpdateCandidateListFailed', 'InsufficientBond', 'TargetIsNotCandidate', 'IdenticalDeposit', 'InvalidUnreserve']; Session: ['InvalidProof', 'NoAssociatedValidatorId', 'DuplicatedKey', 'NoKeys', 'NoAccount']; XcmpQueue: ['BadQueueConfig', 'AlreadySuspended', 'AlreadyResumed', 'TooManyActiveOutboundChannels', 'TooBig']; @@ -3425,9 +3989,12 @@ type AllInteractions = { ParachainSystem: ['SelfParaId']; Timestamp: ['MinimumPeriod']; Utility: ['batched_calls_limit']; + MultiBlockMigrations: ['CursorMaxLen', 'IdentifierMaxLen']; Balances: ['ExistentialDeposit', 'MaxLocks', 'MaxReserves', 'MaxFreezes']; TransactionPayment: ['OperationalFeeMultiplier']; - TransactionStorage: ['MaxBlockTransactions', 'MaxTransactionSize', 'AuthorizationPeriod', 'StoreRenewPriority', 'StoreRenewLongevity', 'RemoveExpiredAuthorizationPriority', 'RemoveExpiredAuthorizationLongevity']; + TransactionStorage: ['MaxBlockTransactions', 'MaxTransactionSize', 'AuthorizationPeriod', 'StoreTxParams', 'AuthorizeTxParams', 'RemoveExpiredAccountAuthorizationTxParams', 'RemoveExpiredPreimageAuthorizationTxParams', 'RemoveExhaustedAuthorizerTxParams']; + HopPromotion: ['SubmitTimestampTolerance', 'PromoteTxParams']; + DataRenewal: ['MaxPermanentStorageSize', 'RenewTxParams']; CollatorSelection: ['PotId', 'MaxCandidates', 'MinEligibleCollators', 'MaxInvulnerables', 'KickThreshold', 'pot_account']; Session: ['KeyDeposit']; Aura: ['SlotDuration']; @@ -3435,10 +4002,12 @@ type AllInteractions = { PolkadotXcm: ['UniversalLocation', 'AdvertisedXcmVersion', 'MaxLockers', 'MaxRemoteLockConsumers']; MessageQueue: ['HeapSize', 'MaxStale', 'ServiceWeight', 'IdleMaxServiceWeight']; }; - viewFns: {}; + viewFns: { + MultiBlockMigrations: ['ongoing_status', 'progress', 'affected_prefixes', 'status']; + }; apis: { AuraApi: ['slot_duration', 'authorities']; - RelayParentOffsetApi: ['relay_parent_offset']; + RelayParentOffsetApi: ['relay_parent_offset', 'max_claim_queue_offset']; AuraUnincludedSegmentApi: ['can_build_upon']; Core: ['version', 'execute_block', 'initialize_block']; Metadata: ['metadata', 'metadata_at_version', 'metadata_versions']; @@ -3455,7 +4024,9 @@ type AllInteractions = { TrustedQueryApi: ['is_trusted_reserve', 'is_trusted_teleporter']; AuthorizedAliasersApi: ['authorized_aliasers', 'is_authorized_alias']; CollectCollationInfo: ['collect_collation_info']; - TransactionStorageApi: ['retention_period']; + TransactionStorageApi: ['retention_period', 'indexed_transactions']; + HopRuntimeApi: ['max_promotion_size', 'can_account_promote', 'create_promotion_extrinsic', 'is_promoted_on_chain']; + BulletinTransactionStorageApi: ['account_authorization', 'can_store', 'can_renew']; GenesisBuilder: ['build_state', 'get_preset', 'preset_names']; GetParachainInfo: ['parachain_id']; }; diff --git a/web/.papi/descriptors/dist/bulletin_metadata-5EJPF4RF.mjs b/web/.papi/descriptors/dist/bulletin_metadata-5EJPF4RF.mjs new file mode 100644 index 00000000..a00c6c71 --- /dev/null +++ b/web/.papi/descriptors/dist/bulletin_metadata-5EJPF4RF.mjs @@ -0,0 +1,6 @@ +// .papi/descriptors/src/bulletin_metadata.ts +var binMeta = "bWV0YRARCAAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCFhidWxsZXRpbl9wYXNlb19ydW50aW1lLFJ1bnRpbWVDYWxsAAFEGFN5c3RlbQQAJAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTeXN0ZW0sIFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAQAHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhY2hhaW5TeXN0ZW0sIFJ1bnRpbWU+AAEAJFRpbWVzdGFtcAQAsAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUaW1lc3RhbXAsIFJ1bnRpbWU+AAMANFBhcmFjaGFpbkluZm8EALgByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluSW5mbywgUnVudGltZT4ABAAcVXRpbGl0eQQAvAGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxVdGlsaXR5LCBSdW50aW1lPgAGAFBNdWx0aUJsb2NrTWlncmF0aW9ucwQALQEB5QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlCbG9ja01pZ3JhdGlvbnMsIFJ1bnRpbWU+AAcAIEJhbGFuY2VzBABZAQG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxCYWxhbmNlcywgUnVudGltZT4ACgBIVHJhbnNhY3Rpb25TdG9yYWdlBABpAQHdAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUcmFuc2FjdGlvblN0b3JhZ2UsIFJ1bnRpbWU+ACgAMEhvcFByb21vdGlvbgQAiQEBxQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8SG9wUHJvbW90aW9uLCBSdW50aW1lPgApACxEYXRhUmVuZXdhbAQAoQEBwQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8RGF0YVJlbmV3YWwsIFJ1bnRpbWU+ACoARENvbGxhdG9yU2VsZWN0aW9uBACpAQHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDb2xsYXRvclNlbGVjdGlvbiwgUnVudGltZT4AFQAcU2Vzc2lvbgQArQEBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2Vzc2lvbiwgUnVudGltZT4AFgAkWGNtcFF1ZXVlBAC5AQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxYY21wUXVldWUsIFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBAC9AQHBAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQb2xrYWRvdFhjbSwgUnVudGltZT4AHwAoQ3VtdWx1c1hjbQQAiQMBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q3VtdWx1c1hjbSwgUnVudGltZT4AIAAwTWVzc2FnZVF1ZXVlBACNAwHFAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZXNzYWdlUXVldWUsIFJ1bnRpbWU+ACIAEFN1ZG8EAJUDAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN1ZG8sIFJ1bnRpbWU+AGQAACQMMGZyYW1lX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABLBhyZW1hcmsEARhyZW1hcmsYARxWZWM8dTg+AAAMaE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsuAIhDYW4gYmUgZXhlY3V0ZWQgYnkgZXZlcnkgYG9yaWdpbmAuOHNldF9oZWFwX3BhZ2VzBAEUcGFnZXMoAQx1NjQAAQT4U2V0IHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIFdlYkFzc2VtYmx5IGVudmlyb25tZW50J3MgaGVhcC4gc2V0X2NvZGUEARBjb2RlGAEcVmVjPHU4PgACBGRTZXQgdGhlIG5ldyBydW50aW1lIGNvZGUuXHNldF9jb2RlX3dpdGhvdXRfY2hlY2tzBAEQY29kZRgBHFZlYzx1OD4AAxAZAVNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZSB3aXRob3V0IGRvaW5nIGFueSBjaGVja3Mgb2YgdGhlIGdpdmVuIGBjb2RlYC4AUQFOb3RlIHRoYXQgcnVudGltZSB1cGdyYWRlcyB3aWxsIG5vdCBydW4gaWYgdGhpcyBpcyBjYWxsZWQgd2l0aCBhIG5vdC1pbmNyZWFzaW5nIHNwZWMgdmVyc2lvbiEsc2V0X3N0b3JhZ2UEARRpdGVtcywBNFZlYzxLZXlWYWx1ZT4ABARoU2V0IHNvbWUgaXRlbXMgb2Ygc3RvcmFnZS4wa2lsbF9zdG9yYWdlBAEQa2V5czQBIFZlYzxLZXk+AAUEdEtpbGwgc29tZSBpdGVtcyBmcm9tIHN0b3JhZ2UuLGtpbGxfcHJlZml4CAEYcHJlZml4GAEMS2V5AAEcc3Via2V5czgBDHUzMgAGEBEBS2lsbCBhbGwgc3RvcmFnZSBpdGVtcyB3aXRoIGEga2V5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeC4AOQEqKk5PVEU6KiogV2UgcmVseSBvbiB0aGUgUm9vdCBvcmlnaW4gdG8gcHJvdmlkZSB1cyB0aGUgbnVtYmVyIG9mIHN1YmtleXMgdW5kZXI9AXRoZSBwcmVmaXggd2UgYXJlIHJlbW92aW5nIHRvIGFjY3VyYXRlbHkgY2FsY3VsYXRlIHRoZSB3ZWlnaHQgb2YgdGhpcyBmdW5jdGlvbi5EcmVtYXJrX3dpdGhfZXZlbnQEARhyZW1hcmsYARxWZWM8dTg+AAcEpE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsgYW5kIGVtaXQgZXZlbnQuRGF1dGhvcml6ZV91cGdyYWRlBAEkY29kZV9oYXNoPAEcVDo6SGFzaAAJEGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi6AYXV0aG9yaXplX3VwZ3JhZGVfd2l0aG91dF9jaGVja3MEASRjb2RlX2hhc2g8ARxUOjpIYXNoAAogYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgBdAVdBUk5JTkc6IFRoaXMgYXV0aG9yaXplcyBhbiB1cGdyYWRlIHRoYXQgd2lsbCB0YWtlIHBsYWNlIHdpdGhvdXQgYW55IHNhZmV0eSBjaGVja3MsIGZvclkBZXhhbXBsZSB0aGF0IHRoZSBzcGVjIG5hbWUgcmVtYWlucyB0aGUgc2FtZSBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaW5jcmVhc2VzLiBOb3TwcmVjb21tZW5kZWQgZm9yIG5vcm1hbCB1c2UuIFVzZSBgYXV0aG9yaXplX3VwZ3JhZGVgIGluc3RlYWQuAHxUaGlzIGNhbGwgcmVxdWlyZXMgUm9vdCBvcmlnaW4uYGFwcGx5X2F1dGhvcml6ZWRfdXBncmFkZQQBEGNvZGUYARxWZWM8dTg+AAskVQFQcm92aWRlIHRoZSBwcmVpbWFnZSAocnVudGltZSBiaW5hcnkpIGBjb2RlYCBmb3IgYW4gdXBncmFkZSB0aGF0IGhhcyBiZWVuIGF1dGhvcml6ZWQuAEkBSWYgdGhlIGF1dGhvcml6YXRpb24gcmVxdWlyZWQgYSB2ZXJzaW9uIGNoZWNrLCB0aGlzIGNhbGwgd2lsbCBlbnN1cmUgdGhlIHNwZWMgbmFtZehyZW1haW5zIHVuY2hhbmdlZCBhbmQgdGhhdCB0aGUgc3BlYyB2ZXJzaW9uIGhhcyBpbmNyZWFzZWQuAFkBRGVwZW5kaW5nIG9uIHRoZSBydW50aW1lJ3MgYE9uU2V0Q29kZWAgY29uZmlndXJhdGlvbiwgdGhpcyBmdW5jdGlvbiBtYXkgZGlyZWN0bHkgYXBwbHkRAXRoZSBuZXcgYGNvZGVgIGluIHRoZSBzYW1lIGJsb2NrIG9yIGF0dGVtcHQgdG8gc2NoZWR1bGUgdGhlIHVwZ3JhZGUuAGBBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKAAABQYALAAAAjAAMAAABAgYGAA0AAACGAA4AAAFBQA8CDxwcmltaXRpdmVfdHlwZXMQSDI1NgAABAAIASBbdTg7IDMyXQAAQAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABCExzZXRfdmFsaWRhdGlvbl9kYXRhCAEQZGF0YUQBaEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAFUaW5ib3VuZF9tZXNzYWdlc19kYXRhfAFMSW5ib3VuZE1lc3NhZ2VzRGF0YQAAJIBTZXQgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBkYXRhLgBBAVRoaXMgc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIHBlciBibG9jay4gSXQgd2lsbCBwYW5pYyBhdCB0aGUgZmluYWxpemF0aW9uiHBoYXNlIGlmIHRoZSBjYWxsIHdhcyBub3QgaW52b2tlZC4A0FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBJbmhlcmVudGAAIQFBcyBhIHNpZGUgZWZmZWN0LCB0aGlzIGZ1bmN0aW9uIHVwZ3JhZGVzIHRoZSBjdXJyZW50IHZhbGlkYXRpb24gZnVuY3Rpb26EaWYgdGhlIGFwcHJvcHJpYXRlIHRpbWUgaGFzIGNvbWUuYHN1ZG9fc2VuZF91cHdhcmRfbWVzc2FnZQQBHG1lc3NhZ2UYATRVcHdhcmRNZXNzYWdlAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50aEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAAQATx2YWxpZGF0aW9uX2RhdGFIAVxQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YQABRHJlbGF5X2NoYWluX3N0YXRlUAFUc3BfdHJpZTo6U3RvcmFnZVByb29mAAFgcmVsYXlfcGFyZW50X2Rlc2NlbmRhbnRzWAFAVmVjPFJlbGF5SGVhZGVyPgABQGNvbGxhdG9yX3BlZXJfaWR0AVhPcHRpb248QXBwcm92ZWRQZWVySWQ+AABIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5XFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhCARIATwETgE4ABABLHBhcmVudF9oZWFkTAEgSGVhZERhdGEAAUxyZWxheV9wYXJlbnRfbnVtYmVyOAEETgABZHJlbGF5X3BhcmVudF9zdG9yYWdlX3Jvb3Q8AQRIAAEwbWF4X3Bvdl9zaXplOAEMdTMyAABMDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzIEhlYWREYXRhAAAEABgBHFZlYzx1OD4AAFAMHHNwX3RyaWU0c3RvcmFnZV9wcm9vZjBTdG9yYWdlUHJvb2YAAAQBKHRyaWVfbm9kZXNUAURCVHJlZVNldDxWZWM8dTg+PgAAVAQgQlRyZWVTZXQEBFQBGAAEADQAAABYAAACXABcEChzcF9ydW50aW1lHGdlbmVyaWMYaGVhZGVyGEhlYWRlcggYTnVtYmVyATgQSGFzaAAAFAEscGFyZW50X2hhc2g8ATBIYXNoOjpPdXRwdXQAARhudW1iZXJgARhOdW1iZXIAAShzdGF0ZV9yb290PAEwSGFzaDo6T3V0cHV0AAE8ZXh0cmluc2ljc19yb290PAEwSGFzaDo6T3V0cHV0AAEYZGlnZXN0ZAEYRGlnZXN0AABgAAAGOABkEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0GERpZ2VzdAAABAEQbG9nc2gBPFZlYzxEaWdlc3RJdGVtPgAAaAAAAmwAbBAoc3BfcnVudGltZRxnZW5lcmljGGRpZ2VzdChEaWdlc3RJdGVtAAEUKFByZVJ1bnRpbWUIAHABRENvbnNlbnN1c0VuZ2luZUlkAAAYARxWZWM8dTg+AAYAJENvbnNlbnN1cwgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABAAQU2VhbAgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABQAUT3RoZXIEABgBHFZlYzx1OD4AAABkUnVudGltZUVudmlyb25tZW50VXBkYXRlZAAIAABwAAADBAAAAAwAdAQYT3B0aW9uBARUAXgBCBBOb25lAAAAEFNvbWUEAHgAAAEAAHgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAB8DHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudExJbmJvdW5kTWVzc2FnZXNEYXRhAAAIAURkb3dud2FyZF9tZXNzYWdlc4ABfEFicmlkZ2VkSW5ib3VuZERvd253YXJkTWVzc2FnZXMAAUxob3Jpem9udGFsX21lc3NhZ2VzlAFsQWJyaWRnZWRJbmJvdW5kSHJtcE1lc3NhZ2VzAACADHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudIRBYnJpZGdlZEluYm91bmRNZXNzYWdlc0NvbGxlY3Rpb24EHE1lc3NhZ2UBhAAIATRmdWxsX21lc3NhZ2VziAEwVmVjPE1lc3NhZ2U+AAE8aGFzaGVkX21lc3NhZ2VzjAF8VmVjPE1lc3NhZ2U6OkNvbXByZXNzZWRNZXNzYWdlPgAAhAhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzWEluYm91bmREb3dud2FyZE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEMbXNnGAE8RG93bndhcmRNZXNzYWdlAACIAAAChACMAAACkACQCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50NEhhc2hlZE1lc3NhZ2UAAAgBHHNlbnRfYXQ4AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAASBtc2dfaGFzaDwBNHNwX2NvcmU6OkgyNTYAAJQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGYAAgBNGZ1bGxfbWVzc2FnZXOkATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOoAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACYAAAECJygAJwMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMISWQAAAQAOAEMdTMyAACgCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNISW5ib3VuZEhybXBNZXNzYWdlBCxCbG9ja051bWJlcgE4AAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AACkAAACmACoAAACrACsAAAECJyQALAMQHBhbGxldF90aW1lc3RhbXAYcGFsbGV0EENhbGwEBFQAAQQMc2V0BAEMbm93tAEkVDo6TW9tZW50AABMVFNldCB0aGUgY3VycmVudCB0aW1lLgBVAVRoaXMgY2FsbCBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb27UcGhhc2UsIGlmIHRoaXMgY2FsbCBoYXNuJ3QgYmVlbiBpbnZva2VkIGJ5IHRoYXQgdGltZS4AQQFUaGUgdGltZXN0YW1wIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gdGhlIHByZXZpb3VzIG9uZSBieSB0aGUgYW1vdW50IHNwZWNpZmllZCBieWhbYENvbmZpZzo6TWluaW11bVBlcmlvZGBdLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBRAVRoaXMgZGlzcGF0Y2ggY2xhc3MgaXMgX01hbmRhdG9yeV8gdG8gZW5zdXJlIGl0IGdldHMgZXhlY3V0ZWQgaW4gdGhlIGJsb2NrLiBCZSBhd2FyZVEBdGhhdCBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBvZiB0aGlzIGNhbGwgY291bGQgcmVzdWx0IGV4aGF1c3RpbmcgdGhlIHJlc291cmNlcyBpbiBhhGJsb2NrIHRvIGV4ZWN1dGUgYW55IG90aGVyIGNhbGxzLgA0IyMgQ29tcGxleGl0eTEBLSBgTygxKWAgKE5vdGUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgb2YgYE9uVGltZXN0YW1wU2V0YCBtdXN0IGFsc28gYmUgYE8oMSlgKVUBLSAxIHN0b3JhZ2UgcmVhZCBhbmQgMSBzdG9yYWdlIG11dGF0aW9uIChjb2RlYyBgTygxKWAgYmVjYXVzZSBvZiBgRGlkVXBkYXRlOjp0YWtlYCBpbkAgIGBvbl9maW5hbGl6ZWAp1C0gMSBldmVudCBoYW5kbGVyIGBvbl90aW1lc3RhbXBfc2V0YC4gTXVzdCBiZSBgTygxKWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrQAAAYoALgMWHN0YWdpbmdfcGFyYWNoYWluX2luZm8YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvAw4cGFsbGV0X3V0aWxpdHkYcGFsbGV0EENhbGwEBFQAASAUYmF0Y2gEARRjYWxsc8ABfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAEh8U2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzLgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBVAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaGVkIHdpdGhvdXQgY2hlY2tpbmcgb3JpZ2luIGZpbHRlci4gKFRoaXPsaW5jbHVkZXMgYnlwYXNzaW5nIGBmcmFtZV9zeXN0ZW06OkNvbmZpZzo6QmFzZUNhbGxGaWx0ZXJgKS4ANCMjIENvbXBsZXhpdHnQLSBPKEMpIHdoZXJlIEMgaXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBiZSBiYXRjaGVkLgBVAVRoaXMgd2lsbCByZXR1cm4gYE9rYCBpbiBhbGwgY2lyY3Vtc3RhbmNlcy4gVG8gZGV0ZXJtaW5lIHRoZSBzdWNjZXNzIG9mIHRoZSBiYXRjaCwgYW4xAWV2ZW50IGlzIGRlcG9zaXRlZC4gSWYgYSBjYWxsIGZhaWxlZCBhbmQgdGhlIGJhdGNoIHdhcyBpbnRlcnJ1cHRlZCwgdGhlbiB0aGVVAWBCYXRjaEludGVycnVwdGVkYCBldmVudCBpcyBkZXBvc2l0ZWQsIGFsb25nIHdpdGggdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIGNhbGxzIG1hZGVNAWFuZCB0aGUgZXJyb3Igb2YgdGhlIGZhaWxlZCBjYWxsLiBJZiBhbGwgd2VyZSBzdWNjZXNzZnVsLCB0aGVuIHRoZSBgQmF0Y2hDb21wbGV0ZWRgTGV2ZW50IGlzIGRlcG9zaXRlZC40YXNfZGVyaXZhdGl2ZQgBFGluZGV4xAEMdTE2AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AATTcU2VuZCBhIGNhbGwgdGhyb3VnaCBhbiBpbmRleGVkIHBzZXVkb255bSBvZiB0aGUgc2VuZGVyLgBVAUZpbHRlciBmcm9tIG9yaWdpbiBhcmUgcGFzc2VkIGFsb25nLiBUaGUgY2FsbCB3aWxsIGJlIGRpc3BhdGNoZWQgd2l0aCBhbiBvcmlnaW4gd2hpY2i8dXNlIHRoZSBzYW1lIGZpbHRlciBhcyB0aGUgb3JpZ2luIG9mIHRoaXMgY2FsbC4ARQFOT1RFOiBJZiB5b3UgbmVlZCB0byBlbnN1cmUgdGhhdCBhbnkgYWNjb3VudC1iYXNlZCBmaWx0ZXJpbmcgaXMgbm90IGhvbm9yZWQgKGkuZS5hAWJlY2F1c2UgeW91IGV4cGVjdCBgcHJveHlgIHRvIGhhdmUgYmVlbiB1c2VkIHByaW9yIGluIHRoZSBjYWxsIHN0YWNrIGFuZCB5b3UgZG8gbm90IHdhbnRRAXRoZSBjYWxsIHJlc3RyaWN0aW9ucyB0byBhcHBseSB0byBhbnkgc3ViLWFjY291bnRzKSwgdGhlbiB1c2UgYGFzX211bHRpX3RocmVzaG9sZF8xYHxpbiB0aGUgTXVsdGlzaWcgcGFsbGV0IGluc3RlYWQuAPROT1RFOiBQcmlvciB0byB2ZXJzaW9uICoxMiwgdGhpcyB3YXMgY2FsbGVkIGBhc19saW1pdGVkX3N1YmAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4kYmF0Y2hfYWxsBAEUY2FsbHPAAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAI07FNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscyBhbmQgYXRvbWljYWxseSBleGVjdXRlIHRoZW0uIQFUaGUgd2hvbGUgdHJhbnNhY3Rpb24gd2lsbCByb2xsYmFjayBhbmQgZmFpbCBpZiBhbnkgb2YgdGhlIGNhbGxzIGZhaWxlZC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sZGlzcGF0Y2hfYXMIASRhc19vcmlnaW7IAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgADGMhEaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgcHJvdmlkZWQgb3JpZ2luLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuLGZvcmNlX2JhdGNoBAEUY2FsbHPAAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAQ0fFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy7UVW5saWtlIGBiYXRjaGAsIGl0IGFsbG93cyBlcnJvcnMgYW5kIHdvbid0IGludGVycnVwdC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4ATQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2ggd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuLHdpdGhfd2VpZ2h0CAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AARh3ZWlnaHQpAQEYV2VpZ2h0AAUYxERpc3BhdGNoIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgc3BlY2lmaWVkIHdlaWdodC4ALQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGW4Um9vdCBvcmlnaW4gdG8gc3BlY2lmeSB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLhxpZl9lbHNlCAEQbWFpbiABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AASBmYWxsYmFjayABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABlwVAURpc3BhdGNoIGEgZmFsbGJhY2sgY2FsbCBpbiB0aGUgZXZlbnQgdGhlIG1haW4gY2FsbCBmYWlscyB0byBleGVjdXRlLrBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgDkVGhpcyBmdW5jdGlvbiBmaXJzdCBhdHRlbXB0cyB0byBkaXNwYXRjaCB0aGUgYG1haW5gIGNhbGwu1ElmIHRoZSBgbWFpbmAgY2FsbCBmYWlscywgdGhlIGBmYWxsYmFja2AgaXMgYXR0ZW10ZWQuFQFpZiB0aGUgZmFsbGJhY2sgaXMgc3VjY2Vzc2Z1bGx5IGRpc3BhdGNoZWQsIHRoZSB3ZWlnaHRzIG9mIGJvdGggY2FsbHMlAWFyZSBhY2N1bXVsYXRlZCBhbmQgYW4gZXZlbnQgY29udGFpbmluZyB0aGUgbWFpbiBjYWxsIGVycm9yIGlzIGRlcG9zaXRlZC4A3EluIHRoZSBldmVudCBvZiBhIGZhbGxiYWNrIGZhaWx1cmUgdGhlIHdob2xlIGNhbGwgZmFpbHNod2l0aCB0aGUgd2VpZ2h0cyByZXR1cm5lZC4AQQEtIGBtYWluYDogVGhlIG1haW4gY2FsbCB0byBiZSBkaXNwYXRjaGVkLiBUaGlzIGlzIHRoZSBwcmltYXJ5IGFjdGlvbiB0byBleGVjdXRlLj0BLSBgZmFsbGJhY2tgOiBUaGUgZmFsbGJhY2sgY2FsbCB0byBiZSBkaXNwYXRjaGVkIGluIGNhc2UgdGhlIGBtYWluYCBjYWxsIGZhaWxzLgBEIyMgRGlzcGF0Y2ggTG9naWNBAS0gSWYgdGhlIG9yaWdpbiBpcyBgcm9vdGAsIGJvdGggdGhlIG1haW4gYW5kIGZhbGxiYWNrIGNhbGxzIGFyZSBleGVjdXRlZCB3aXRob3V0eCAgYXBwbHlpbmcgYW55IG9yaWdpbiBmaWx0ZXJzLkkBLSBJZiB0aGUgb3JpZ2luIGlzIG5vdCBgcm9vdGAsIHRoZSBvcmlnaW4gZmlsdGVyIGlzIGFwcGxpZWQgdG8gYm90aCB0aGUgYG1haW5gIGFuZEwgIGBmYWxsYmFja2AgY2FsbHMuACwjIyBVc2UgQ2FzZVkBLSBTb21lIHVzZSBjYXNlcyBtaWdodCBpbnZvbHZlIHN1Ym1pdHRpbmcgYSBgYmF0Y2hgIHR5cGUgY2FsbCBpbiBlaXRoZXIgbWFpbiwgZmFsbGJhY2soICBvciBib3RoLlBkaXNwYXRjaF9hc19mYWxsaWJsZQgBJGFzX29yaWdpbsgBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAcUyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAFEBQWxtb3N0IHRoZSBzYW1lIGFzIFtgUGFsbGV0OjpkaXNwYXRjaF9hc2BdIGJ1dCBmb3J3YXJkcyBhbnkgZXJyb3Igb2YgdGhlIGlubmVyIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsAAAAIgAMQAAAUEAMgIWGJ1bGxldGluX3Bhc2VvX3J1bnRpbWUwT3JpZ2luQ2FsbGVyAAEQGHN5c3RlbQQAzAF0ZnJhbWVfc3lzdGVtOjpPcmlnaW48UnVudGltZT4AAABIVHJhbnNhY3Rpb25TdG9yYWdlBADQAdBwYWxsZXRfYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZTo6T3JpZ2luPFJ1bnRpbWU+ACgALFBvbGthZG90WGNtBADcAUhwYWxsZXRfeGNtOjpPcmlnaW4AHwAoQ3VtdWx1c1hjbQQAJQEBaGN1bXVsdXNfcGFsbGV0X3hjbTo6T3JpZ2luACAAAMwMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gkUmF3T3JpZ2luBCRBY2NvdW50SWQBBAEQEFJvb3QAAAAYU2lnbmVkBAAEASRBY2NvdW50SWQAAQAQTm9uZQACAChBdXRob3JpemVkAAMAANAMjHBhbGxldF9idWxsZXRpbl90cmFuc2FjdGlvbl9zdG9yYWdlGHBhbGxldBhPcmlnaW4EBFQB1AEEKEF1dGhvcml6ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARRzY29wZdgBYEF1dGhvcml6YXRpb25TY29wZUZvcjxUPgAAAADUCFhidWxsZXRpbl9wYXNlb19ydW50aW1lHFJ1bnRpbWUAAAAA2AyMcGFsbGV0X2J1bGxldGluX3RyYW5zYWN0aW9uX3N0b3JhZ2UUdHlwZXNIQXV0aG9yaXphdGlvblNjb3BlBCRBY2NvdW50SWQBBAEIHEFjY291bnQEAAQBJEFjY291bnRJZAAAACBQcmVpbWFnZQQACAEsQ29udGVudEhhc2gAAQAA3AwocGFsbGV0X3hjbRhwYWxsZXQYT3JpZ2luAAEIDFhjbQQA4AEgTG9jYXRpb24AAAAgUmVzcG9uc2UEAOABIExvY2F0aW9uAAEAAOAQLHN0YWdpbmdfeGNtCHY1IGxvY2F0aW9uIExvY2F0aW9uAAAIARxwYXJlbnRzDAEIdTgAASBpbnRlcmlvcuQBJEp1bmN0aW9ucwAA5BAsc3RhZ2luZ194Y20IdjUkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBADoAUhBcmM8W0p1bmN0aW9uOyAxXT4AAQAIWDIEAAkBAUhBcmM8W0p1bmN0aW9uOyAyXT4AAgAIWDMEAA0BAUhBcmM8W0p1bmN0aW9uOyAzXT4AAwAIWDQEABEBAUhBcmM8W0p1bmN0aW9uOyA0XT4ABAAIWDUEABUBAUhBcmM8W0p1bmN0aW9uOyA1XT4ABQAIWDYEABkBAUhBcmM8W0p1bmN0aW9uOyA2XT4ABgAIWDcEAB0BAUhBcmM8W0p1bmN0aW9uOyA3XT4ABwAIWDgEACEBAUhBcmM8W0p1bmN0aW9uOyA4XT4ACAAA6AAAAwEAAADsAOwQLHN0YWdpbmdfeGNtCHY1IGp1bmN0aW9uIEp1bmN0aW9uAAEoJFBhcmFjaGFpbgQAYAEMdTMyAAAALEFjY291bnRJZDMyCAEcbmV0d29ya/ABRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmvwAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmvwAURPcHRpb248TmV0d29ya0lkPgABDGtleRwBIFt1ODsgMjBdAAMAOFBhbGxldEluc3RhbmNlBAAMAQh1OAAEADBHZW5lcmFsSW5kZXgEAPgBEHUxMjgABQAoR2VuZXJhbEtleQgBGGxlbmd0aAwBCHU4AAEQZGF0YQgBIFt1ODsgMzJdAAYAJE9ubHlDaGlsZAAHACRQbHVyYWxpdHkIAQhpZAEBARhCb2R5SWQAARBwYXJ0BQEBIEJvZHlQYXJ0AAgAPEdsb2JhbENvbnNlbnN1cwQA9AEkTmV0d29ya0lkAAkAAPAEGE9wdGlvbgQEVAH0AQgQTm9uZQAAABBTb21lBAD0AAABAAD0ECxzdGFnaW5nX3hjbQh2NSBqdW5jdGlvbiROZXR3b3JrSWQAASAkQnlHZW5lc2lzBAAIASBbdTg7IDMyXQAAABhCeUZvcmsIATBibG9ja19udW1iZXIoAQx1NjQAAShibG9ja19oYXNoCAEgW3U4OyAzMl0AAQAgUG9sa2Fkb3QAAgAYS3VzYW1hAAMAIEV0aGVyZXVtBAEgY2hhaW5faWS0AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAAD4AAAG/AD8AAAFBwABARAMeGNtCHYzIGp1bmN0aW9uGEJvZHlJZAABKBBVbml0AAAAHE1vbmlrZXIEAHABHFt1ODsgNF0AAQAUSW5kZXgEAGABDHUzMgACACRFeGVjdXRpdmUAAwAkVGVjaG5pY2FsAAQALExlZ2lzbGF0aXZlAAUAIEp1ZGljaWFsAAYAHERlZmVuc2UABwA4QWRtaW5pc3RyYXRpb24ACAAgVHJlYXN1cnkACQAABQEQDHhjbQh2MyBqdW5jdGlvbiBCb2R5UGFydAABFBRWb2ljZQAAABxNZW1iZXJzBAEUY291bnRgAQx1MzIAAQAgRnJhY3Rpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgACAERBdExlYXN0UHJvcG9ydGlvbggBDG5vbWABDHUzMgABFGRlbm9tYAEMdTMyAAMASE1vcmVUaGFuUHJvcG9ydGlvbggBDG5vbWABDHUzMgABFGRlbm9tYAEMdTMyAAQAAAkBAAADAgAAAOwADQEAAAMDAAAA7AARAQAAAwQAAADsABUBAAADBQAAAOwAGQEAAAMGAAAA7AAdAQAAAwcAAADsACEBAAADCAAAAOwAJQEMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQYT3JpZ2luAAEIFFJlbGF5AAAAQFNpYmxpbmdQYXJhY2hhaW4EAJwBGFBhcmFJZAABAAApAQwoc3Bfd2VpZ2h0cyR3ZWlnaHRfdjIYV2VpZ2h0AAAIASByZWZfdGltZbQBDHU2NAABKHByb29mX3NpemW0AQx1NjQAAC0BDERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQQQ2FsbAQEVAABEEBmb3JjZV9zZXRfY3Vyc29yBAEYY3Vyc29yMQEBTE9wdGlvbjxDdXJzb3JPZjxUPj4AABRdAUFsbG93cyByb290IHRvIHNldCBhIGN1cnNvciB0byBmb3JjZWZ1bGx5IHN0YXJ0LCBzdG9wIG9yIGZvcndhcmQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgBJAVNob3VsZCBub3JtYWxseSBub3QgYmUgbmVlZGVkIGFuZCBpcyBvbmx5IGluIHBsYWNlIGFzIGVtZXJnZW5jeSBtZWFzdXJlLiBOb3RlIHRoYXQFAXJlc3RhcnRpbmcgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzIGluIHRoaXMgbWFubmVyIHdpbGwgbm90IGNhbGwgdGhlLQFbYE1pZ3JhdGlvblN0YXR1c0hhbmRsZXI6OnN0YXJ0ZWRgXSBob29rIG9yIGVtaXQgYW4gYFVwZ3JhZGVTdGFydGVkYCBldmVudC5cZm9yY2Vfc2V0X2FjdGl2ZV9jdXJzb3IMARRpbmRleDgBDHUzMgABMGlubmVyX2N1cnNvckEBAVhPcHRpb248UmF3Q3Vyc29yT2Y8VD4+AAEoc3RhcnRlZF9hdEUBAWRPcHRpb248QmxvY2tOdW1iZXJGb3I8VD4+AAEYWQFBbGxvd3Mgcm9vdCB0byBzZXQgYW4gYWN0aXZlIGN1cnNvciB0byBmb3JjZWZ1bGx5IHN0YXJ0L2ZvcndhcmQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgBFAVRoaXMgaXMgYW4gZWRnZS1jYXNlIHZlcnNpb24gb2YgW2BTZWxmOjpmb3JjZV9zZXRfY3Vyc29yYF0gdGhhdCBhbGxvd3MgdG8gc2V0IHRoZWEBYHN0YXJ0ZWRfYXRgIHZhbHVlIHRvIHRoZSBuZXh0IGJsb2NrIG51bWJlci4gT3RoZXJ3aXNlIHRoaXMgd291bGQgbm90IGJlIHBvc3NpYmxlLCBzaW5jZUUBYGZvcmNlX3NldF9jdXJzb3JgIHRha2VzIGFuIGFic29sdXRlIGJsb2NrIG51bWJlci4gU2V0dGluZyBgc3RhcnRlZF9hdGAgdG8gYE5vbmVgAQFpbmRpY2F0ZXMgdGhhdCB0aGUgY3VycmVudCBibG9jayBudW1iZXIgcGx1cyBvbmUgc2hvdWxkIGJlIHVzZWQuSGZvcmNlX29uYm9hcmRfbWJtcwACEKBGb3JjZXMgdGhlIG9uYm9hcmRpbmcgb2YgdGhlIG1pZ3JhdGlvbnMuAF0BVGhpcyBwcm9jZXNzIGhhcHBlbnMgYXV0b21hdGljYWxseSBvbiBhIHJ1bnRpbWUgdXBncmFkZS4gSXQgaXMgaW4gcGxhY2UgYXMgYW4gZW1lcmdlbmN5/G1lYXN1cmVtZW50LiBUaGUgY3Vyc29yIG5lZWRzIHRvIGJlIGBOb25lYCBmb3IgdGhpcyB0byBzdWNjZWVkLjhjbGVhcl9oaXN0b3JpYwQBIHNlbGVjdG9ySQEBoEhpc3RvcmljQ2xlYW51cFNlbGVjdG9yPElkZW50aWZpZXJPZjxUPj4AAxRoQ2xlYXJzIHRoZSBgSGlzdG9yaWNgIHNldC4ADQFgbWFwX2N1cnNvcmAgbXVzdCBiZSBzZXQgdG8gdGhlIGxhc3QgdmFsdWUgdGhhdCB3YXMgcmV0dXJuZWQgYnkgdGhlXQFgSGlzdG9yaWNDbGVhcmVkYCBldmVudC4gVGhlIGZpcnN0IHRpbWUgYE5vbmVgIGNhbiBiZSB1c2VkLiBgbGltaXRgIG11c3QgYmUgY2hvc2VuIGluIGGod2F5IHRoYXQgd2lsbCByZXN1bHQgaW4gYSBzZW5zaWJsZSB3ZWlnaHQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjEBBBhPcHRpb24EBFQBNQEBCBBOb25lAAAAEFNvbWUEADUBAAABAAA1AQhEcGFsbGV0X21pZ3JhdGlvbnM8TWlncmF0aW9uQ3Vyc29yCBhDdXJzb3IBOQEsQmxvY2tOdW1iZXIBOAEIGEFjdGl2ZQQAPQEBhEFjdGl2ZUN1cnNvcjxDdXJzb3IsIEJsb2NrTnVtYmVyPgAAABRTdHVjawABAAA5AQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAD0BCERwYWxsZXRfbWlncmF0aW9uczBBY3RpdmVDdXJzb3IIGEN1cnNvcgE5ASxCbG9ja051bWJlcgE4AAwBFGluZGV4OAEMdTMyAAEwaW5uZXJfY3Vyc29yQQEBOE9wdGlvbjxDdXJzb3I+AAEoc3RhcnRlZF9hdDgBLEJsb2NrTnVtYmVyAABBAQQYT3B0aW9uBARUATkBAQgQTm9uZQAAABBTb21lBAA5AQAAAQAARQEEGE9wdGlvbgQEVAE4AQgQTm9uZQAAABBTb21lBAA4AAABAABJAQhEcGFsbGV0X21pZ3JhdGlvbnNcSGlzdG9yaWNDbGVhbnVwU2VsZWN0b3IECElkAU0BAQggU3BlY2lmaWMEAFEBARxWZWM8SWQ+AAAAIFdpbGRjYXJkCAEUbGltaXRFAQEsT3B0aW9uPHUzMj4AATxwcmV2aW91c19jdXJzb3JVAQE8T3B0aW9uPFZlYzx1OD4+AAEAAE0BDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAUQEAAAJNAQBVAQQYT3B0aW9uBARUARgBCBBOb25lAAAAEFNvbWUEABgAAAEAAFkBDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0EENhbGwIBFQABEkAASRQdHJhbnNmZXJfYWxsb3dfZGVhdGgIARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZfgBKFQ6OkJhbGFuY2UAABzUVHJhbnNmZXIgc29tZSBsaXF1aWQgZnJlZSBiYWxhbmNlIHRvIGFub3RoZXIgYWNjb3VudC4ANQFgdHJhbnNmZXJfYWxsb3dfZGVhdGhgIHdpbGwgc2V0IHRoZSBgRnJlZUJhbGFuY2VgIG9mIHRoZSBzZW5kZXIgYW5kIHJlY2VpdmVyLhEBSWYgdGhlIHNlbmRlcidzIGFjY291bnQgaXMgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYXMgYSByZXN1bHSwb2YgdGhlIHRyYW5zZmVyLCB0aGUgYWNjb3VudCB3aWxsIGJlIHJlYXBlZC4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgdHJhbnNhY3Rvci44Zm9yY2VfdHJhbnNmZXIMARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVl+AEoVDo6QmFsYW5jZQACCGEBRXhhY3RseSBhcyBgdHJhbnNmZXJfYWxsb3dfZGVhdGhgLCBleGNlcHQgdGhlIG9yaWdpbiBtdXN0IGJlIHJvb3QgYW5kIHRoZSBzb3VyY2UgYWNjb3VudERtYXkgYmUgc3BlY2lmaWVkLkx0cmFuc2Zlcl9rZWVwX2FsaXZlCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWX4AShUOjpCYWxhbmNlAAMYWQFTYW1lIGFzIHRoZSBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF0gY2FsbCwgYnV0IHdpdGggYSBjaGVjayB0aGF0IHRoZSB0cmFuc2ZlciB3aWxsIG5vdGBraWxsIHRoZSBvcmlnaW4gYWNjb3VudC4A6Dk5JSBvZiB0aGUgdGltZSB5b3Ugd2FudCBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF0gaW5zdGVhZC4A8FtgdHJhbnNmZXJfYWxsb3dfZGVhdGhgXTogc3RydWN0LlBhbGxldC5odG1sI21ldGhvZC50cmFuc2ZlcjB0cmFuc2Zlcl9hbGwIARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShrZWVwX2FsaXZlXQEBEGJvb2wABDwFAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXRhAWFueSBsb2NrZWQsIHJlc2VydmVkLCBvciBleGlzdGVudGlhbCBkZXBvc2l0cyAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgCgLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFjY291bnQgdG8gYmUga2lsbGVkIChmYWxzZSksIG9yWQEgIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0LCB3aGljaCB3aWxsIGd1YXJhbnRlZSB0b5wgIGtlZXAgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlICh0cnVlKS48Zm9yY2VfdW5yZXNlcnZlCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnT8AShUOjpCYWxhbmNlAAUMsFVucmVzZXJ2ZSBzb21lIGJhbGFuY2UgZnJvbSBhIHVzZXIgYnkgZm9yY2UuAGxDYW4gb25seSBiZSBjYWxsZWQgYnkgUk9PVC5AdXBncmFkZV9hY2NvdW50cwQBDHdob2EBAURWZWM8VDo6QWNjb3VudElkPgAGIHBVcGdyYWRlIGEgc3BlY2lmaWVkIGFjY291bnQuAHQtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1cGdyYWRlZC4AVQFUaGlzIHdpbGwgd2FpdmUgdGhlIHRyYW5zYWN0aW9uIGZlZSBpZiBhdCBsZWFzdCBhbGwgYnV0IDEwJSBvZiB0aGUgYWNjb3VudHMgbmVlZGVkIHRvQQFiZSB1cGdyYWRlZC4gKFdlIGxldCBzb21lIG5vdCBoYXZlIHRvIGJlIHVwZ3JhZGVkIGp1c3QgaW4gb3JkZXIgdG8gYWxsb3cgZm9yIHRoZVhwb3NzaWJpbGl0eSBvZiBjaHVybikuRGZvcmNlX3NldF9iYWxhbmNlCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBuZXdfZnJlZfgBKFQ6OkJhbGFuY2UACAysU2V0IHRoZSByZWd1bGFyIGJhbGFuY2Ugb2YgYSBnaXZlbiBhY2NvdW50LgCwVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIGlzIGByb290YC5sZm9yY2VfYWRqdXN0X3RvdGFsX2lzc3VhbmNlCAEkZGlyZWN0aW9uZQEBTEFkanVzdG1lbnREaXJlY3Rpb24AARRkZWx0YfgBKFQ6OkJhbGFuY2UACRS4QWRqdXN0IHRoZSB0b3RhbCBpc3N1YW5jZSBpbiBhIHNhdHVyYXRpbmcgd2F5LgD8Q2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHJvb3QgYW5kIGFsd2F5cyBuZWVkcyBhIHBvc2l0aXZlIGBkZWx0YWAuACQjIEV4YW1wbGUQYnVybggBFHZhbHVl+AEoVDo6QmFsYW5jZQABKGtlZXBfYWxpdmVdAQEQYm9vbAAKHPxCdXJuIHRoZSBzcGVjaWZpZWQgbGlxdWlkIGZyZWUgYmFsYW5jZSBmcm9tIHRoZSBvcmlnaW4gYWNjb3VudC4AJQFJZiB0aGUgb3JpZ2luJ3MgYWNjb3VudCBlbmRzIHVwIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFzIGEgcmVzdWx0CQFvZiB0aGUgYnVybiBhbmQgYGtlZXBfYWxpdmVgIGlzIGZhbHNlLCB0aGUgYWNjb3VudCB3aWxsIGJlIHJlYXBlZC4AUQFVbmxpa2Ugc2VuZGluZyBmdW5kcyB0byBhIF9idXJuXyBhZGRyZXNzLCB3aGljaCBtZXJlbHkgbWFrZXMgdGhlIGZ1bmRzIGluYWNjZXNzaWJsZSwhAXRoaXMgYGJ1cm5gIG9wZXJhdGlvbiB3aWxsIHJlZHVjZSB0b3RhbCBpc3N1YW5jZSBieSB0aGUgYW1vdW50IF9idXJuZWRfLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5dAQAABQAAYQEAAAIEAGUBDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXNMQWRqdXN0bWVudERpcmVjdGlvbgABCCBJbmNyZWFzZQAAACBEZWNyZWFzZQABAABpAQyMcGFsbGV0X2J1bGxldGluX3RyYW5zYWN0aW9uX3N0b3JhZ2UYcGFsbGV0EENhbGwEBFQAATAUc3RvcmUEARBkYXRhGAEcVmVjPHU4PgAAOB0BSW5kZXggYW5kIHN0b3JlIGRhdGEgb2ZmIGNoYWluLiBNaW5pbXVtIGRhdGEgc2l6ZSBpcyAxIGJ5dGUsIG1heGltdW0gaXNFAWBNYXhUcmFuc2FjdGlvblNpemVgLiBEYXRhIHdpbGwgYmUgcmVtb3ZlZCBhZnRlciBgUmV0ZW50aW9uUGVyaW9kYCBibG9ja3MsIHVubGVzc0hgcmVuZXdgIGlzIGNhbGxlZC4ATQFBdXRob3JpemF0aW9uIGlzIHJlcXVpcmVkIHRvIHN0b3JlIGRhdGEgdXNpbmcgcmVndWxhciBzaWduZWQvdW5zaWduZWQgdHJhbnNhY3Rpb25zLvhSZWd1bGFyIHNpZ25lZCB0cmFuc2FjdGlvbnMgcmVxdWlyZSBhY2NvdW50IGF1dGhvcml6YXRpb24gKHNlZVkBW2BhdXRob3JpemVfYWNjb3VudGBdKFNlbGY6OmF1dGhvcml6ZV9hY2NvdW50KSksIHJlZ3VsYXIgdW5zaWduZWQgdHJhbnNhY3Rpb25zIHJlcXVpcmU5AXByZWltYWdlIGF1dGhvcml6YXRpb24gKHNlZSBbYGF1dGhvcml6ZV9wcmVpbWFnZWBdKFNlbGY6OmF1dGhvcml6ZV9wcmVpbWFnZSkpLgDARW1pdHMgW2BTdG9yZWRgXShFdmVudDo6U3RvcmVkKSB3aGVuIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5ABUBTyhuKmxvZyhuKSkgb2YgZGF0YSBzaXplLCBhcyBhbGwgZGF0YSBpcyBwdXNoZWQgdG8gYW4gaW4tbWVtb3J5IHRyaWUuVHN0b3JlX3dpdGhfY2lkX2NvbmZpZwgBDGNpZG0BASRDaWRDb25maWcAARBkYXRhGAEcVmVjPHU4PgAJGAkBSW5kZXggYW5kIHN0b3JlIGRhdGEgb2ZmIGNoYWluIHdpdGggYW4gZXhwbGljaXQgQ0lEIGNvbmZpZ3VyYXRpb24uACEBQmVoYXZlcyBpZGVudGljYWxseSB0byBbYHN0b3JlYF0oU2VsZjo6c3RvcmUpLCBidXQgdGhlIENJRCBjb25maWd1cmF0aW9uAQEoY29kZWMgYW5kIGhhc2hpbmcgYWxnb3JpdGhtKSBpcyBwYXNzZWQgZGlyZWN0bHkgYXMgYSBwYXJhbWV0ZXIuAMBFbWl0cyBbYFN0b3JlZGBdKEV2ZW50OjpTdG9yZWQpIHdoZW4gc3VjY2Vzc2Z1bC5EYXV0aG9yaXplX2FjY291bnQMAQx3aG8EATBUOjpBY2NvdW50SWQAATB0cmFuc2FjdGlvbnM4AQx1MzIAARRieXRlcygBDHU2NAADTD0BQXV0aG9yaXplIGFuIGFjY291bnQgdG8gc3RvcmUgdXAgdG8gYGJ5dGVzYCBvZiBhcmJpdHJhcnkgZGF0YSBpbiBgdHJhbnNhY3Rpb25zYEEBYm9vc3QtdGllciB0cmFuc2FjdGlvbnMuIFRoZSBhdXRob3JpemF0aW9uIHdpbGwgZXhwaXJlIGFmdGVyIGEgY29uZmlndXJlZCBudW1iZXIob2YgYmxvY2tzLgBFAUlmIHRoZSBhY2NvdW50IGFscmVhZHkgaGFzIGFuIHVuZXhwaXJlZCBhdXRob3JpemF0aW9uLCB0aGlzIGNhbGwgKiphZGRzKiogYGJ5dGVzYEUBYW5kIGB0cmFuc2FjdGlvbnNgIHRvIHRoZSBleGlzdGluZyBgYnl0ZXNfYWxsb3dhbmNlYCBhbmQgYHRyYW5zYWN0aW9uc19hbGxvd2FuY2VgMQFjYXBzIChib3RoIHNhdHVyYXRpbmcpOyB0aGUgZXhwaXJhdGlvbiBibG9jayBpcyAqKm5vdCoqIHB1c2hlZCBiYWNrLCBhbmQgdGhlSQFjb25zdW1lZCBjb3VudGVycyBhcmUgcHJlc2VydmVkLiBPbmNlIHRoZSBhdXRob3JpemF0aW9uIGhhcyBleHBpcmVkLCB0aGUgbmV4dCBjYWxsRQFyZXBsYWNlcyBpdCB3aXRoIGEgZnJlc2ggZW50cnkgKGNvbnN1bWVkIGNvdW50ZXJzIHJlc2V0IHRvIGAwYCwgYWxsb3dhbmNlcyBzZXQgdG/YdGhlIG5ldyB2YWx1ZXMsIGV4cGlyeSA9IGBub3cgKyBBdXRob3JpemF0aW9uUGVyaW9kYCkuACxQYXJhbWV0ZXJzOgAhAS0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggYW4gYXV0aG9yaXphdGlvbiB0byBzdG9yZSBkYXRhLjkBLSBgdHJhbnNhY3Rpb25zYDogVGhlIG51bWJlciBvZiBib29zdC10aWVyIHRyYW5zYWN0aW9ucyB0aGF0IGB3aG9gIG1heSBzdWJtaXQu1C0gYGJ5dGVzYDogVGhlIG51bWJlciBvZiBieXRlcyB0aGF0IGB3aG9gIG1heSBzdWJtaXQuAAUBVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIHBhbGxldCdzIGBBdXRob3JpemVyYC4gRW1pdHMBAVtgQWNjb3VudEF1dGhvcml6ZWRgXShFdmVudDo6QWNjb3VudEF1dGhvcml6ZWQpIHdoZW4gc3VjY2Vzc2Z1bC5IYXV0aG9yaXplX3ByZWltYWdlCAEwY29udGVudF9oYXNoCAEsQ29udGVudEhhc2gAASBtYXhfc2l6ZSgBDHU2NAAESFkBQXV0aG9yaXplIGFueW9uZSB0byBzdG9yZSBhIHByZWltYWdlIG9mIHRoZSBnaXZlbiBjb250ZW50IGhhc2guIFRoZSBhdXRob3JpemF0aW9uIHdpbGysZXhwaXJlIGFmdGVyIGEgY29uZmlndXJlZCBudW1iZXIgb2YgYmxvY2tzLgBJAUlmIGF1dGhvcml6YXRpb24gYWxyZWFkeSBleGlzdHMgZm9yIGEgcHJlaW1hZ2Ugb2YgdGhlIGdpdmVuIGhhc2ggdG8gYmUgc3RvcmVkLCB0aGVJAW1heGltdW0gc2l6ZSBvZiB0aGUgcHJlaW1hZ2Ugd2lsbCBiZSBpbmNyZWFzZWQgdG8gYG1heF9zaXplYC4gVGhlIGV4cGlyYXRpb24gYmxvY2tsaXMgKipub3QqKiBwdXNoZWQgYmFjazsgdXNlSQFbYHJlZnJlc2hfcHJlaW1hZ2VfYXV0aG9yaXphdGlvbmBdKFNlbGY6OnJlZnJlc2hfcHJlaW1hZ2VfYXV0aG9yaXphdGlvbikgdG8gZXh0ZW5kHGV4cGlyeS4ALFBhcmFtZXRlcnM6AF0BLSBgY29udGVudF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGRhdGEgdG8gYmUgc3VibWl0dGVkLiBGb3IgW2BzdG9yZWBdKFNlbGY6OnN0b3JlKSB0aGlzVQEgIGlzIHRoZSBCTEFLRTJiLTI1NiBoYXNoOyBmb3IgW2BzdG9yZV93aXRoX2NpZF9jb25maWdgXShTZWxmOjpzdG9yZV93aXRoX2NpZF9jb25maWcpCQEgIHRoaXMgaXMgdGhlIGhhc2ggcHJvZHVjZWQgYnkgdGhlIENJRCBjb25maWcncyBoYXNoaW5nIGFsZ29yaXRobS7oLSBgbWF4X3NpemVgOiBUaGUgbWF4aW11bSBzaXplLCBpbiBieXRlcywgb2YgdGhlIHByZWltYWdlLgAFAVRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBwYWxsZXQncyBgQXV0aG9yaXplcmAuIEVtaXRzCQFbYFByZWltYWdlQXV0aG9yaXplZGBdKEV2ZW50OjpQcmVpbWFnZUF1dGhvcml6ZWQpIHdoZW4gc3VjY2Vzc2Z1bC6QcmVtb3ZlX2V4cGlyZWRfYWNjb3VudF9hdXRob3JpemF0aW9uBAEMd2hvBAEwVDo6QWNjb3VudElkAAUgLQFSZW1vdmUgYW4gZXhwaXJlZCBhY2NvdW50IGF1dGhvcml6YXRpb24gZnJvbSBzdG9yYWdlLiBBbnlvbmUgY2FuIGNhbGwgdGhpcy4ALFBhcmFtZXRlcnM6APQtIGB3aG9gOiBUaGUgYWNjb3VudCB3aXRoIGFuIGV4cGlyZWQgYXV0aG9yaXphdGlvbiB0byByZW1vdmUuAF0BRW1pdHMgW2BFeHBpcmVkQWNjb3VudEF1dGhvcml6YXRpb25SZW1vdmVkYF0oRXZlbnQ6OkV4cGlyZWRBY2NvdW50QXV0aG9yaXphdGlvblJlbW92ZWQpQHdoZW4gc3VjY2Vzc2Z1bC6UcmVtb3ZlX2V4cGlyZWRfcHJlaW1hZ2VfYXV0aG9yaXphdGlvbgQBMGNvbnRlbnRfaGFzaAgBLENvbnRlbnRIYXNoAAYkMQFSZW1vdmUgYW4gZXhwaXJlZCBwcmVpbWFnZSBhdXRob3JpemF0aW9uIGZyb20gc3RvcmFnZS4gQW55b25lIGNhbiBjYWxsIHRoaXMuACxQYXJhbWV0ZXJzOgDcLSBgY29udGVudF9oYXNoYDogVGhlIEJMQUtFMmIgaGFzaCB0aGF0IHdhcyBhdXRob3JpemVkLgAURW1pdHNNAVtgRXhwaXJlZFByZWltYWdlQXV0aG9yaXphdGlvblJlbW92ZWRgXShFdmVudDo6RXhwaXJlZFByZWltYWdlQXV0aG9yaXphdGlvblJlbW92ZWQpQHdoZW4gc3VjY2Vzc2Z1bC50cmVmcmVzaF9hY2NvdW50X2F1dGhvcml6YXRpb24EAQx3aG8EATBUOjpBY2NvdW50SWQABzwNAVJlZnJlc2ggdGhlIGV4cGlyYXRpb24gb2YgYW4gZXhpc3RpbmcgYXV0aG9yaXphdGlvbiBmb3IgYW4gYWNjb3VudC4AEQFPbmx5IHRoZSBleHBpcmF0aW9uIGJsb2NrIGlzIHVwZGF0ZWQg4oCUIGNvbnN1bWVkIGNvdW50ZXJzIChgYnl0ZXNgLOBgdHJhbnNhY3Rpb25zYCkgYW5kIHRoZSBncmFudGVkIGNhcHMgKGBieXRlc19hbGxvd2FuY2VgLBkBYHRyYW5zYWN0aW9uc19hbGxvd2FuY2VgKSBhcmUgbGVmdCB1bnRvdWNoZWQuIFRvIGV4dGVuZCB0aGUgY2FwcywgY2FsbPRgYXV0aG9yaXplX2FjY291bnRgIGluc3RlYWQgKGFkZGl0aXZlIG9uIHRoZSB1bmV4cGlyZWQgcGF0aCkuAAkBSWYgdGhlIGFjY291bnQgZG9lcyBub3QgaGF2ZSBhbiBhdXRob3JpemF0aW9uLCB0aGUgY2FsbCB3aWxsIGZhaWwuACxQYXJhbWV0ZXJzOgAhAS0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggYW4gYXV0aG9yaXphdGlvbiB0byBzdG9yZSBkYXRhLgAFAVRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBwYWxsZXQncyBgQXV0aG9yaXplcmAuIEVtaXRzYQFbYEFjY291bnRBdXRob3JpemF0aW9uUmVmcmVzaGVkYF0oRXZlbnQ6OkFjY291bnRBdXRob3JpemF0aW9uUmVmcmVzaGVkKSB3aGVuIHN1Y2Nlc3NmdWwueHJlZnJlc2hfcHJlaW1hZ2VfYXV0aG9yaXphdGlvbgQBMGNvbnRlbnRfaGFzaAgBLENvbnRlbnRIYXNoAAhAVQFSZWZyZXNoIHRoZSBleHBpcmF0aW9uIG9mIGFuIGV4aXN0aW5nIGF1dGhvcml6YXRpb24gZm9yIGEgcHJlaW1hZ2Ugb2YgYSBCTEFLRTJiIGhhc2guABEBT25seSB0aGUgZXhwaXJhdGlvbiBibG9jayBpcyB1cGRhdGVkIOKAlCBjb25zdW1lZCBjb3VudGVycyAoYGJ5dGVzYCzgYHRyYW5zYWN0aW9uc2ApIGFuZCB0aGUgZ3JhbnRlZCBjYXBzIChgYnl0ZXNfYWxsb3dhbmNlYCwRAWB0cmFuc2FjdGlvbnNfYWxsb3dhbmNlYCkgYXJlIGxlZnQgdW50b3VjaGVkLiBUbyByYWlzZSB0aGUgY2FwLCBjYWxsdGBhdXRob3JpemVfcHJlaW1hZ2VgIGluc3RlYWQuAA0BSWYgdGhlIHByZWltYWdlIGRvZXMgbm90IGhhdmUgYW4gYXV0aG9yaXphdGlvbiwgdGhlIGNhbGwgd2lsbCBmYWlsLgAsUGFyYW1ldGVyczoA/C0gYGNvbnRlbnRfaGFzaGA6IFRoZSBCTEFLRTJiIGhhc2ggb2YgdGhlIGRhdGEgdG8gYmUgc3VibWl0dGVkLgAFAVRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBwYWxsZXQncyBgQXV0aG9yaXplcmAuIEVtaXRzOQFbYFByZWltYWdlQXV0aG9yaXphdGlvblJlZnJlc2hlZGBdKEV2ZW50OjpQcmVpbWFnZUF1dGhvcml6YXRpb25SZWZyZXNoZWQpIHdoZW4sc3VjY2Vzc2Z1bC5UYXBwbHlfYmxvY2tfaW5oZXJlbnRzBAEUcHJvb2Z1AQF8T3B0aW9uPFRyYW5zYWN0aW9uU3RvcmFnZVByb29mPgAOFAUBQmxvY2stbGV2ZWwgbWFuZGF0b3J5IGluaGVyZW50IGZvciB0aGUgdHJhbnNhY3Rpb24tc3RvcmFnZSBwcm9vZi4ANQFgcHJvb2ZgIGlzIGBTb21lYCB3aGVuIHRoZSBpbmhlcmVudCBkYXRhIHByb3ZpZGVyIHN1cHBsaWVkIG9uZTsgb3RoZXJ3aXNlIHRoZTUBcHJvb2Ygc3RlcCBpcyBza2lwcGVkIChlYXJseSBvciBlbXB0eSBibG9ja3MpLiBUaGUgY29tcGFuaW9uIGRyYWluIG9mIHBlbmRpbmcVAWF1dG8tcmVuZXdhbHMgbGl2ZXMgaW4gYHBhbGxldC1idWxsZXRpbi1kYXRhLXJlbmV3YWxgJ3Mgb3duIGluaGVyZW50LjhhZGRfYXV0aG9yaXplcggBDHdobwQBMFQ6OkFjY291bnRJZAABGGJ1ZGdldH0BAYxBdXRob3JpemVyQnVkZ2V0PEJsb2NrTnVtYmVyRm9yPFQ+PgAPQDkBQWRkIGFuIGFjY291bnQgdG8gdGhlIHNldCBvZiBhbGxvd2VkIGF1dGhvcml6ZXJzLiBBbGxvd2VkIGF1dGhvcml6ZXJzIGNhbiBjYWxsyFtgYXV0aG9yaXplX2FjY291bnRgXShTZWxmOjphdXRob3JpemVfYWNjb3VudCkgYW5kJQFbYGF1dGhvcml6ZV9wcmVpbWFnZWBdKFNlbGY6OmF1dGhvcml6ZV9wcmVpbWFnZSkgdG8gZ3JhbnQgc3RvcmFnZSBhY2Nlc3MuAEEBSWYgdGhlIGFjY291bnQgaXMgYWxyZWFkeSBhbiBhbGxvd2VkIGF1dGhvcml6ZXIsIGl0cyBgYnVkZ2V0YCBpcyAqKm92ZXJ3cml0dGVuKipQd2l0aCB0aGUgbmV3IHZhbHVlcy4AVGBidWRnZXRgIGNvbnN0cmFpbnRzOgBRAS0gYHZhbGlkX3VudGlsYDogd2hlbiBgU29tZSh0KWAsIG11c3Qgc2F0aXNmeSBgdCA+IG5vd2AuIFRoZSBlbnRyeSBzdG9wcyBhdXRob3JpemluZxUBICBvbmNlIGBub3cgPj0gdGAgYW5kIGJlY29tZXMgZWxpZ2libGUgZm9yIHBlcm1pc3Npb25sZXNzIGNsZWFudXAgdmlhUQEgIFtgcmVtb3ZlX2V4aGF1c3RlZF9hdXRob3JpemVyYF0oU2VsZjo6cmVtb3ZlX2V4aGF1c3RlZF9hdXRob3JpemVyKS4gQXV0aG9yaXphdGlvbnP0ICBncmFudGVkIGJ5IHRoaXMgZW50cnkgaGF2ZSB0aGVpciBleHBpcmF0aW9uIGNsYW1wZWQgdG8gYHRgLgAhAVRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IHNhdGlzZnkgYEF1dGhvcml6ZXJSZWdpc3RyYXJPcmlnaW5gLiBFbWl0c/BbYEF1dGhvcml6ZXJBZGRlZGBdKEV2ZW50OjpBdXRob3JpemVyQWRkZWQpIHdoZW4gc3VjY2Vzc2Z1bC5EcmVtb3ZlX2F1dGhvcml6ZXIEAQx3aG8EATBUOjpBY2NvdW50SWQAEDBJAVJlbW92ZSBhbiBhY2NvdW50IGZyb20gdGhlIHNldCBvZiBhbGxvd2VkIGF1dGhvcml6ZXJzLiBUaGUgcmVtb3ZlZCBhY2NvdW50IHdpbGwgbm8hAWxvbmdlciBiZSBhYmxlIHRvIGNhbGwgW2BhdXRob3JpemVfYWNjb3VudGBdKFNlbGY6OmF1dGhvcml6ZV9hY2NvdW50KSBvcsRbYGF1dGhvcml6ZV9wcmVpbWFnZWBdKFNlbGY6OmF1dGhvcml6ZV9wcmVpbWFnZSkuAB0BSWYgdGhlIGFjY291bnQgaXMgbm90IGN1cnJlbnRseSBhbiBhbGxvd2VkIGF1dGhvcml6ZXIsIHRoaXMgaXMgYSBuby1vcC4ALFBhcmFtZXRlcnM6APAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZW1vdmUgZnJvbSB0aGUgYWxsb3dlZCBhdXRob3JpemVycy4AIQFUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBzYXRpc2Z5IGBBdXRob3JpemVyUmVnaXN0cmFyT3JpZ2luYC4gRW1pdHMBAVtgQXV0aG9yaXplclJlbW92ZWRgXShFdmVudDo6QXV0aG9yaXplclJlbW92ZWQpIHdoZW4gc3VjY2Vzc2Z1bC5scmVtb3ZlX2V4aGF1c3RlZF9hdXRob3JpemVyBAEMd2hvBAEwVDo6QWNjb3VudElkABEkOQFSZW1vdmUgYW4gYXV0aG9yaXplciB0aGF0IGlzIGV4aGF1c3RlZCAoYnVkZ2V0IHplcm8gb24gZWl0aGVyIGF4aXMpIG9yIGV4cGlyZWRJAShgbm93ID49IHZhbGlkX3VudGlsYCBmb3IgYW4gZW50cnkgdGhhdCBzZXQgYHZhbGlkX3BlcmlvZGApLiBBbnlvbmUgY2FuIGNhbGwgdGhpcy4ALFBhcmFtZXRlcnM6AIgtIGB3aG9gOiBUaGUgYXV0aG9yaXplciB0byByZW1vdmUuAB0BRW1pdHMgW2BFeGhhdXN0ZWRBdXRob3JpemVyUmVtb3ZlZGBdKEV2ZW50OjpFeGhhdXN0ZWRBdXRob3JpemVyUmVtb3ZlZClAd2hlbiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5tAQycYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZV9wcmltaXRpdmVzEGNpZHMkQ2lkQ29uZmlnAAAIARRjb2RlYygBIENpZENvZGVjAAEcaGFzaGluZ3EBAUBIYXNoaW5nQWxnb3JpdGhtAABxAQycYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZV9wcmltaXRpdmVzEGNpZHNASGFzaGluZ0FsZ29yaXRobQABDChCbGFrZTJiMjU2AAAAIFNoYTJfMjU2AAEAJEtlY2NhazI1NgACAAB1AQQYT3B0aW9uBARUAXkBAQgQTm9uZQAAABBTb21lBAB5AQAAAQAAeQEIcHNwX3RyYW5zYWN0aW9uX3N0b3JhZ2VfcHJvb2ZcVHJhbnNhY3Rpb25TdG9yYWdlUHJvb2YAAAgBFGNodW5rGAEcVmVjPHU4PgABFHByb29mNAEwVmVjPFZlYzx1OD4+AAB9AQyMcGFsbGV0X2J1bGxldGluX3RyYW5zYWN0aW9uX3N0b3JhZ2UUdHlwZXNAQXV0aG9yaXplckJ1ZGdldAQsQmxvY2tOdW1iZXIBOAAMARRxdW90YYEBATRPcHRpb248UXVvdGE+AAEsdmFsaWRfdW50aWxFAQFMT3B0aW9uPEJsb2NrTnVtYmVyPgABHGZlZWxlc3NdAQEQYm9vbAAAgQEEGE9wdGlvbgQEVAGFAQEIEE5vbmUAAAAQU29tZQQAhQEAAAEAAIUBDIxwYWxsZXRfYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZRR0eXBlcxRRdW90YQAACAEwdHJhbnNhY3Rpb25zOAEMdTMyAAEUYnl0ZXMoAQx1NjQAAIkBDHRwYWxsZXRfYnVsbGV0aW5faG9wX3Byb21vdGlvbhhwYWxsZXQQQ2FsbAQEVAABCBxwcm9tb3RlEAEYc2lnbmVyjQEBLE11bHRpU2lnbmVyAAEkc2lnbmF0dXJllQEBOE11bHRpU2lnbmF0dXJlAAFAc3VibWl0X3RpbWVzdGFtcCgBDHU2NAABEGRhdGEYARxWZWM8dTg+AAAAKHByb21vdGVfdjIUARhzaWduZXKNAQEsTXVsdGlTaWduZXIAASRzaWduYXR1cmWVAQE4TXVsdGlTaWduYXR1cmUAAUBzdWJtaXRfdGltZXN0YW1wKAEMdTY0AAE8cmVjaXBpZW50c19oYXNoPAEQSDI1NgABEGRhdGEYARxWZWM8dTg+AAEMHQFWMiB2YXJpYW50IG9mIFtgU2VsZjo6cHJvbW90ZWBdOiBpZGVudGljYWwgYm9keSwgYnV0IHRoZSBhdXRob3JpemUgaG9vaxUBcmVxdWlyZXMgdGhlIHVzZXIncyBzaWduYXR1cmUgdG8gYWRkaXRpb25hbGx5IGNvdmVyIHRoZSBjaGFpbiBnZW5lc2lzEQFoYXNoIGFuZCBhIGhhc2ggb2YgdGhlIHJlY2lwaWVudHMgbGlzdCAoc2VlIFtgc2lnbmluZ19wYXlsb2FkX3YyYF0pLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6NAQgoc3BfcnVudGltZSxNdWx0aVNpZ25lcgABEBxFZDI1NTE5BAAIATxlZDI1NTE5OjpQdWJsaWMAAAAcU3IyNTUxOQQACAE8c3IyNTUxOTo6UHVibGljAAEAFEVjZHNhBACRAQE0ZWNkc2E6OlB1YmxpYwACAAxFdGgEAJEBAUxlY2RzYTo6S2VjY2FrUHVibGljAAMAAJEBAAADIQAAAAwAlQEIKHNwX3J1bnRpbWU4TXVsdGlTaWduYXR1cmUAARAcRWQyNTUxOQQAmQEBSGVkMjU1MTk6OlNpZ25hdHVyZQAAABxTcjI1NTE5BACZAQFIc3IyNTUxOTo6U2lnbmF0dXJlAAEAFEVjZHNhBACdAQFAZWNkc2E6OlNpZ25hdHVyZQACAAxFdGgEAJ0BAVhlY2RzYTo6S2VjY2FrU2lnbmF0dXJlAAMAAJkBAAADQAAAAAwAnQEAAANBAAAADAChAQxwcGFsbGV0X2J1bGxldGluX2RhdGFfcmVuZXdhbBhwYWxsZXQQQ2FsbAQEVAABFBRyZW5ldwQBFGVudHJ5pQEBhFRyYW5zYWN0aW9uUmVmPEJsb2NrTnVtYmVyRm9yPFQ+PgAAFMxTY2hlZHVsZSBhIG9uZS1zaG90IGF1dG8tcmVuZXdhbC4gRmlyZXMgb25jZSBhdCB0aGX0YFJldGVudGlvblBlcmlvZGAgYm91bmRhcnksIHRoZW4gdGhlIHJlZ2lzdHJhdGlvbiBpcyByZW1vdmVkLg0BUHJlcGFpZCBhdCByZWdpc3RyYXRpb247IHNlZSBbYGZvcmNlX3JlbmV3YF0oU2VsZjo6Zm9yY2VfcmVuZXcpIGZvchUBc3luY2hyb25vdXMgcmVuZXdhbCBvciBbYGVuYWJsZV9hdXRvX3JlbmV3YF0oU2VsZjo6ZW5hYmxlX2F1dG9fcmVuZXcpOGZvciByZWN1cnJpbmcuLGZvcmNlX3JlbmV3BAEUZW50cnmlAQGEVHJhbnNhY3Rpb25SZWY8QmxvY2tOdW1iZXJGb3I8VD4+AAEIHQFSZW5ldyBwcmV2aW91c2x5IHN0b3JlZCBkYXRhIHN5bmNocm9ub3VzbHkuIENoYXJnZXMgYGluZm8uc2l6ZWAgYWdhaW5zdCUBdGhlIGNhbGxlcidzIGBieXRlc19wZXJtYW5lbnRgIGFuZCB0aGUgY2hhaW4td2lkZSBgUGVybWFuZW50U3RvcmFnZVVzZWRgLkRlbmFibGVfYXV0b19yZW5ldwQBMGNvbnRlbnRfaGFzaAgBLENvbnRlbnRIYXNoAAIUCQFSZWdpc3RlciByZWN1cnJpbmcgYXV0by1yZW5ld2FsIGZvciBgY29udGVudF9oYXNoYC4gRmlyc3QgY3ljbGUgaXMFAXByZXBhaWQgYXQgcmVnaXN0cmF0aW9uIChgcGFpZCA9IHRydWVgKTsgc3Vic2VxdWVudCBjeWNsZXMgY2hhcmdl+HRoZSBvd25lcidzIGF1dGhvcml6YXRpb24gaW4gYGRvX3Byb2Nlc3NfcGVuZGluZ19yZW5ld2Fsc2AgYW5kuGRyb3AgdGhlIHJlZ2lzdHJhdGlvbiBvbiBxdW90YSBleGhhdXN0aW9uIHdpdGhkW2BFdmVudDo6UmVuZXdhbEZhaWxlZGBdLkhkaXNhYmxlX2F1dG9fcmVuZXcEATBjb250ZW50X2hhc2gIASxDb250ZW50SGFzaAADEAkBRGlzYWJsZSBhdXRvLXJlbmV3YWwuIFNpZ25lZCBjYWxsZXJzIG11c3Qgb3duIHRoZSByZWdpc3RyYXRpb24gQU5E0HdhaXQgZm9yIHRoZSBwcmVwYWlkIGZpcnN0IGN5Y2xlIHRvIGhhdmUgZmlyZWQgKGVsc2X8W2BFcnJvcjo6Q2Fubm90RGlzYWJsZVByZXBhaWRBdXRvUmVuZXdhbGBdKS4gUm9vdCBieXBhc3NlcyBib3RoHGNoZWNrcy5gcHJvY2Vzc19wZW5kaW5nX3JlbmV3YWxzAAQI9E1hbmRhdG9yeSBpbmhlcmVudDogZHJhaW4gW2BQZW5kaW5nUmVuZXdhbHNgXSBmb3IgdGhlIGN1cnJlbnQRAWJsb2NrLiBSZWZ1bmRzIHRvIHRoZSBhY3R1YWxseS1kcmFpbmVkIGNvdW50IHZpYSBgUG9zdERpc3BhdGNoSW5mb2AuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLqUBCJxidWxsZXRpbl90cmFuc2FjdGlvbl9zdG9yYWdlX3ByaW1pdGl2ZXM4VHJhbnNhY3Rpb25SZWYELEJsb2NrTnVtYmVyATgBCCBQb3NpdGlvbggBFGJsb2NrOAEsQmxvY2tOdW1iZXIAARRpbmRleDgBDHUzMgAAACxDb250ZW50SGFzaAQACAEsQ29udGVudEhhc2gAAQAAqQEMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0EENhbGwEBFQAASREc2V0X2ludnVsbmVyYWJsZXMEAQxuZXdhAQFEVmVjPFQ6OkFjY291bnRJZD4AADQxAVNldCB0aGUgbGlzdCBvZiBpbnZ1bG5lcmFibGUgKGZpeGVkKSBjb2xsYXRvcnMuIFRoZXNlIGNvbGxhdG9ycyBtdXN0IGRvIHNvbWXQcHJlcGFyYXRpb24sIG5hbWVseSB0byBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLgBZAVRoZSBjYWxsIHdpbGwgcmVtb3ZlIGFueSBhY2NvdW50cyB0aGF0IGhhdmUgbm90IHJlZ2lzdGVyZWQga2V5cyBmcm9tIHRoZSBzZXQuIFRoYXQgaXMsXQFpdCBpcyBub24tYXRvbWljOyB0aGUgY2FsbGVyIGFjY2VwdHMgYWxsIGBBY2NvdW50SWRgcyBwYXNzZWQgaW4gYG5ld2AgX2luZGl2aWR1YWxseV8gYXMxAWFjY2VwdGFibGUgSW52dWxuZXJhYmxlcywgYW5kIGlzIG5vdCBwcm9wb3NpbmcgYSBfc2V0XyBvZiBuZXcgSW52dWxuZXJhYmxlcy4AWQFUaGlzIGNhbGwgZG9lcyBub3QgbWFpbnRhaW4gbXV0dWFsIGV4Y2x1c2l2aXR5IG9mIGBJbnZ1bG5lcmFibGVzYCBhbmQgYENhbmRpZGF0ZXNgLiBJdGEBaXMgcmVjb21tZW5kZWQgdG8gdXNlIGEgYmF0Y2ggb2YgYGFkZF9pbnZ1bG5lcmFibGVgIGFuZCBgcmVtb3ZlX2ludnVsbmVyYWJsZWAgaW5zdGVhZC4gQVEBYGJhdGNoX2FsbGAgY2FuIGFsc28gYmUgdXNlZCB0byBlbmZvcmNlIGF0b21pY2l0eS4gSWYgYW55IGNhbmRpZGF0ZXMgYXJlIGluY2x1ZGVkIGluTQFgbmV3YCwgdGhleSBzaG91bGQgYmUgcmVtb3ZlZCB3aXRoIGByZW1vdmVfaW52dWxuZXJhYmxlX2NhbmRpZGF0ZWAgYWZ0ZXIgZXhlY3V0aW9uLgCUTXVzdCBiZSBjYWxsZWQgYnkgdGhlIGBVcGRhdGVPcmlnaW5gLlhzZXRfZGVzaXJlZF9jYW5kaWRhdGVzBAEMbWF4OAEMdTMyAAEUVQFTZXQgdGhlIGlkZWFsIG51bWJlciBvZiBub24taW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gSWYgbG93ZXJpbmcgdGhpcyBudW1iZXIsIHRoZW4gdGhlYQFudW1iZXIgb2YgcnVubmluZyBjb2xsYXRvcnMgY291bGQgYmUgaGlnaGVyIHRoYW4gdGhpcyBmaWd1cmUuIEFzaWRlIGZyb20gdGhhdCBlZGdlIGNhc2UsNQF0aGVyZSBzaG91bGQgYmUgbm8gb3RoZXIgd2F5IHRvIGhhdmUgbW9yZSBjYW5kaWRhdGVzIHRoYW4gdGhlIGRlc2lyZWQgbnVtYmVyLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkhzZXRfY2FuZGlkYWN5X2JvbmQEARBib25k/AEwQmFsYW5jZU9mPFQ+AAIceFNldCB0aGUgY2FuZGlkYWN5IGJvbmQgYW1vdW50LgBRAUlmIHRoZSBjYW5kaWRhY3kgYm9uZCBpcyBpbmNyZWFzZWQgYnkgdGhpcyBjYWxsLCBhbGwgY3VycmVudCBjYW5kaWRhdGVzIHdoaWNoIGhhdmUgYU0BZGVwb3NpdCBsb3dlciB0aGFuIHRoZSBuZXcgYm9uZCB3aWxsIGJlIGtpY2tlZCBmcm9tIHRoZSBsaXN0IGFuZCBnZXQgdGhlaXIgZGVwb3NpdHMUYmFjay4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC5UcmVnaXN0ZXJfYXNfY2FuZGlkYXRlAAMQQQFSZWdpc3RlciB0aGlzIGFjY291bnQgYXMgYSBjb2xsYXRvciBjYW5kaWRhdGUuIFRoZSBhY2NvdW50IG11c3QgKGEpIGFscmVhZHkgaGF2ZR0BcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMgYW5kIChiKSBiZSBhYmxlIHRvIHJlc2VydmUgdGhlIGBDYW5kaWRhY3lCb25kYC4A3FRoaXMgY2FsbCBpcyBub3QgYXZhaWxhYmxlIHRvIGBJbnZ1bG5lcmFibGVgIGNvbGxhdG9ycy4wbGVhdmVfaW50ZW50AAQUVQFEZXJlZ2lzdGVyIGBvcmlnaW5gIGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBOb3RlIHRoYXQgdGhlIGNvbGxhdG9yIGNhbiBvbmx5IGxlYXZlIG9uDQFzZXNzaW9uIGNoYW5nZS4gVGhlIGBDYW5kaWRhY3lCb25kYCB3aWxsIGJlIHVucmVzZXJ2ZWQgaW1tZWRpYXRlbHkuABkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgdG90YWwgbnVtYmVyIG9mIGNhbmRpZGF0ZXMgd291bGQgZHJvcCBiZWxvd1xgTWluRWxpZ2libGVDb2xsYXRvcnNgLkBhZGRfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAUQRQFBZGQgYSBuZXcgYWNjb3VudCBgd2hvYCB0byB0aGUgbGlzdCBvZiBgSW52dWxuZXJhYmxlc2AgY29sbGF0b3JzLiBgd2hvYCBtdXN0IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLiBJZiBgd2hvYCBpcyBhIGNhbmRpZGF0ZSwgdGhleSB3aWxsIGJlIHJlbW92ZWQuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuTHJlbW92ZV9pbnZ1bG5lcmFibGUEAQx3aG8EATBUOjpBY2NvdW50SWQABhBhAVJlbW92ZSBhbiBhY2NvdW50IGB3aG9gIGZyb20gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYEludnVsbmVyYWJsZXNgIG11c3QoYmUgc29ydGVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLix1cGRhdGVfYm9uZAQBLG5ld19kZXBvc2l0/AEwQmFsYW5jZU9mPFQ+AAccXQFVcGRhdGUgdGhlIGNhbmRpZGFjeSBib25kIG9mIGNvbGxhdG9yIGNhbmRpZGF0ZSBgb3JpZ2luYCB0byBhIG5ldyBhbW91bnQgYG5ld19kZXBvc2l0YC4AQQFTZXR0aW5nIGEgYG5ld19kZXBvc2l0YCB0aGF0IGlzIGxvd2VyIHRoYW4gdGhlIGN1cnJlbnQgZGVwb3NpdCB3aGlsZSBgb3JpZ2luYCBpc+BvY2N1cHlpbmcgYSB0b3AtYERlc2lyZWRDYW5kaWRhdGVzYCBzbG90IGlzIG5vdCBhbGxvd2VkLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgYG9yaWdpbmAgaXMgbm90IGEgY29sbGF0b3IgY2FuZGlkYXRlLCB0aGUgdXBkYXRlZCBib25kIGlzIGxvd2VyGQF0aGFuIHRoZSBtaW5pbXVtIGNhbmRpZGFjeSBib25kLCBhbmQvb3IgdGhlIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuTHRha2VfY2FuZGlkYXRlX3Nsb3QIARxkZXBvc2l0/AEwQmFsYW5jZU9mPFQ+AAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAgcTQFUaGUgY2FsbGVyIGBvcmlnaW5gIHJlcGxhY2VzIGEgY2FuZGlkYXRlIGB0YXJnZXRgIGluIHRoZSBjb2xsYXRvciBjYW5kaWRhdGUgbGlzdCBieVUBcmVzZXJ2aW5nIGBkZXBvc2l0YC4gVGhlIGFtb3VudCBgZGVwb3NpdGAgcmVzZXJ2ZWQgYnkgdGhlIGNhbGxlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbuB0aGUgZXhpc3RpbmcgYm9uZCBvZiB0aGUgdGFyZ2V0IGl0IGlzIHRyeWluZyB0byByZXBsYWNlLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IGEgY29sbGF0b3IgY2FuZGlkYXRlIG9yIGludnVsbmVyYWJsZSwgdGhlVQFjYWxsZXIgZG9lcyBub3QgaGF2ZSByZWdpc3RlcmVkIHNlc3Npb24ga2V5cywgdGhlIHRhcmdldCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsvGFuZC9vciB0aGUgYGRlcG9zaXRgIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLq0BDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQQQ2FsbAQEVAABCCBzZXRfa2V5cwgBEGtleXOxAQEcVDo6S2V5cwABFHByb29mGAEcVmVjPHU4PgAALORTZXRzIHRoZSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyIHRvIGBrZXlzYC4AHQFBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4AAQEtIGBvcmlnaW5gOiBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzaWduZWQuVQEtIGBrZXlzYDogVGhlIG5ldyBzZXNzaW9uIGtleXMgdG8gc2V0LiBUaGVzZSBhcmUgdGhlIHB1YmxpYyBrZXlzIG9mIGFsbCBzZXNzaW9ucyBrZXlzXCAgc2V0dXAgaW4gdGhlIHJ1bnRpbWUuQQEtIGBwcm9vZmA6IFRoZSBwcm9vZiB0aGF0IGBvcmlnaW5gIGhhcyBhY2Nlc3MgdG8gdGhlIHByaXZhdGUga2V5cyBvZiBga2V5c2AuIFNlZU0BICBbYGltcGxfb3BhcXVlX2tleXNgXShzcF9ydW50aW1lOjppbXBsX29wYXF1ZV9rZXlzKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGU8ICBwcm9vZiBmb3JtYXQuKHB1cmdlX2tleXMAASDIUmVtb3ZlcyBhbnkgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlci4AwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIGFjY291bnQgbXVzdCBiZSBlaXRoZXIgYmVdAWNvbnZlcnRpYmxlIHRvIGEgdmFsaWRhdG9yIElEIHVzaW5nIHRoZSBjaGFpbidzIHR5cGljYWwgYWRkcmVzc2luZyBzeXN0ZW0gKHRoaXMgdXN1YWxseVEBbWVhbnMgYmVpbmcgYSBjb250cm9sbGVyIGFjY291bnQpIG9yIGRpcmVjdGx5IGNvbnZlcnRpYmxlIGludG8gYSB2YWxpZGF0b3IgSUQgKHdoaWNolHVzdWFsbHkgbWVhbnMgYmVpbmcgYSBzdGFzaCBhY2NvdW50KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMusQEIWGJ1bGxldGluX3Bhc2VvX3J1bnRpbWUsU2Vzc2lvbktleXMAAAQBEGF1cmG1AQHEPEF1cmEgYXMgJGNyYXRlOjpCb3VuZFRvUnVudGltZUFwcFB1YmxpYz46OlB1YmxpYwAAtQEQRHNwX2NvbnNlbnN1c19hdXJhHHNyMjU1MTksYXBwX3NyMjU1MTkYUHVibGljAAAEAAgBPHNyMjU1MTk6OlB1YmxpYwAAuQEMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0EENhbGwEBFQAARRUc3VzcGVuZF94Y21fZXhlY3V0aW9uAAEMSQFTdXNwZW5kcyBhbGwgWENNIGV4ZWN1dGlvbnMgZm9yIHRoZSBYQ01QIHF1ZXVlLCByZWdhcmRsZXNzIG9mIHRoZSBzZW5kZXIncyBvcmlnaW4uAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLlByZXN1bWVfeGNtX2V4ZWN1dGlvbgACFLhSZXN1bWVzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUuAD0BTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXR1cyBvZiB0aGUgaW4vb3V0IGJvdW5kIGNoYW5uZWxzLgCkLSBgb3JpZ2luYDogTXVzdCBwYXNzIGBDb250cm9sbGVyT3JpZ2luYC5gdXBkYXRlX3N1c3BlbmRfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAMUSQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcXVldWUgZm9yIHRoZSBvdGhlciBzaWRlIHRvIGJleHRvbGQgdG8gc3VzcGVuZCB0aGVpciBzZW5kaW5nLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC7oLSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5zdXNwZW5kX3ZhbHVlYFR1cGRhdGVfZHJvcF90aHJlc2hvbGQEAQxuZXc4AQx1MzIABBRFAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBhZnRlciB3aGljaCB3ZSBkcm9wIGFueYhmdXJ0aGVyIG1lc3NhZ2VzIGZyb20gdGhlIGNoYW5uZWwuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLuwtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLmRyb3BfdGhyZXNob2xkYFx1cGRhdGVfcmVzdW1lX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAFFE0BT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIHRoZSBxdWV1ZSBtdXN0IGJlIHJlZHVjZWQgdG8gYmVmb3JlIGl0IHNpZ25hbHMBAXRoYXQgbWVzc2FnZSBzZW5kaW5nIG1heSByZWNvbW1lbmNlIGFmdGVyIGl0IGhhcyBiZWVuIHN1c3BlbmRlZC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu9C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEucmVzdW1lX3RocmVzaG9sZGAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvQEMKHBhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAAUQQc2VuZAgBEGRlc3TBAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHG1lc3NhZ2UNAgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAAAPHRlbGVwb3J0X2Fzc2V0cxABEGRlc3TBAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5wQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHNNAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABSBEBVGVsZXBvcnQgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gc29tZSBkZXN0aW5hdGlvbiBjaGFpbi4AHQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2AgaW5zdGVhZC4qKgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYC4gVGhlIHdlaWdodCBsaW1pdCBmb3IgZmVlcyBpcyBub3QgcHJvdmlkZWQgYW5kIHRodXMgaXMgdW5saW1pdGVkLLR3aXRoIGFsbCBmZWVzIHRha2VuIGFzIG5lZWRlZCBmcm9tIHRoZSBhc3NldC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuXHJlc2VydmVfdHJhbnNmZXJfYXNzZXRzEAEQZGVzdMEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnBAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c00DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAJ4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4APQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy4cZXhlY3V0ZQgBHG1lc3NhZ2VRAwG0Qm94PFZlcnNpb25lZFhjbTw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4+AAEobWF4X3dlaWdodCkBARhXZWlnaHQAAyDQRXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSBmcm9tIGEgbG9jYWwsIHNpZ25lZCwgb3JpZ2luLgBNAUFuIGV2ZW50IGlzIGRlcG9zaXRlZCBpbmRpY2F0aW5nIHdoZXRoZXIgYG1zZ2AgY291bGQgYmUgZXhlY3V0ZWQgY29tcGxldGVseSBvciBvbmx5KHBhcnRpYWxseS4AXQFObyBtb3JlIHRoYW4gYG1heF93ZWlnaHRgIHdpbGwgYmUgdXNlZCBpbiBpdHMgYXR0ZW1wdGVkIGV4ZWN1dGlvbi4gSWYgdGhpcyBpcyBsZXNzIHRoYW5BAXRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgdGhhdCB0aGUgbWVzc2FnZSBjb3VsZCB0YWtlIHRvIGJlIGV4ZWN1dGVkLCB0aGVuIG5vfGV4ZWN1dGlvbiBhdHRlbXB0IHdpbGwgYmUgbWFkZS5EZm9yY2VfeGNtX3ZlcnNpb24IASBsb2NhdGlvbuABNEJveDxMb2NhdGlvbj4AARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAEGEkBRXh0b2xsIHRoYXQgYSBwYXJ0aWN1bGFyIGRlc3RpbmF0aW9uIGNhbiBiZSBjb21tdW5pY2F0ZWQgd2l0aCB0aHJvdWdoIGEgcGFydGljdWxhcjx2ZXJzaW9uIG9mIFhDTS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7YLSBgbG9jYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdGhhdCBpcyBiZWluZyBkZXNjcmliZWQuEQEtIGB4Y21fdmVyc2lvbmA6IFRoZSBsYXRlc3QgdmVyc2lvbiBvZiBYQ00gdGhhdCBgbG9jYXRpb25gIHN1cHBvcnRzLmRmb3JjZV9kZWZhdWx0X3hjbV92ZXJzaW9uBAFEbWF5YmVfeGNtX3ZlcnNpb25FAQFIT3B0aW9uPFhjbVZlcnNpb24+AAUUWQFTZXQgYSBzYWZlIFhDTSB2ZXJzaW9uICh0aGUgdmVyc2lvbiB0aGF0IFhDTSBzaG91bGQgYmUgZW5jb2RlZCB3aXRoIGlmIHRoZSBtb3N0IHJlY2VudLR2ZXJzaW9uIGEgZGVzdGluYXRpb24gY2FuIGFjY2VwdCBpcyB1bmtub3duKS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi45AS0gYG1heWJlX3hjbV92ZXJzaW9uYDogVGhlIGRlZmF1bHQgWENNIGVuY29kaW5nIHZlcnNpb24sIG9yIGBOb25lYCB0byBkaXNhYmxlLnhmb3JjZV9zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbsEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAYQOQFBc2sgYSBsb2NhdGlvbiB0byBub3RpZnkgdXMgcmVnYXJkaW5nIHRoZWlyIFhDTSB2ZXJzaW9uIGFuZCBhbnkgY2hhbmdlcyB0byBpdC4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi5ZAS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIHNob3VsZCBzdWJzY3JpYmUgZm9yIFhDTSB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMugGZvcmNlX3Vuc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5BAEgbG9jYXRpb27BAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAHGEkBUmVxdWlyZSB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBzaG91bGQgbm8gbG9uZ2VyIG5vdGlmeSB1cyByZWdhcmRpbmcgYW55IFhDTUB2ZXJzaW9uIGNoYW5nZXMuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uPQEtIGBsb2NhdGlvbmA6IFRoZSBsb2NhdGlvbiB0byB3aGljaCB3ZSBhcmUgY3VycmVudGx5IHN1YnNjcmliZWQgZm9yIFhDTSB2ZXJzaW9uqCAgbm90aWZpY2F0aW9ucyB3aGljaCB3ZSBubyBsb25nZXIgZGVzaXJlLnxsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzFAEQZGVzdMEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnBAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c00DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0gQIBLFdlaWdodExpbWl0AAh4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAsIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuXGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzFAEQZGVzdMEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnBAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c00DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0gQIBLFdlaWdodExpbWl0AAlIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5AZm9yY2Vfc3VzcGVuc2lvbgQBJHN1c3BlbmRlZF0BARBib29sAAoQ9FNldCBvciB1bnNldCB0aGUgZ2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7QLSBgc3VzcGVuZGVkYDogYHRydWVgIHRvIHN1c3BlbmQsIGBmYWxzZWAgdG8gcmVzdW1lLjx0cmFuc2Zlcl9hc3NldHMUARBkZXN0wQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyecEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzTQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXSBAgEsV2VpZ2h0TGltaXQAC4RdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLNBkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZSwgb3IgdGhyb3VnaCB0ZWxlcG9ydHMuAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mNQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gIChoZW5jZSByZWZlcnJlZCB0byBhcyBgZmVlc2ApLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvckEBYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodCBpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGXcb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgBhAWBhc3NldHNgIChleGNsdWRpbmcgYGZlZXNgKSBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG90aGVyd2lzZSBiZSB0ZWxlcG9ydGFibGWwdG8gYGRlc3RgLCBubyBsaW1pdGF0aW9ucyBpbXBvc2VkIG9uIGBmZWVzYC5NASAtIGZvciBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb24gY2hhaW4gYW5kTQEgICBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0b0QgICBgYmVuZWZpY2lhcnlgLmEBIC0gZm9yIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvIGBkZXN0YCBjaGFpblkBICAgdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZCBkZXBvc2l0IHRoZW1QICAgdG8gYGJlbmVmaWNpYXJ5YC5dASAtIGZvciByZW1vdGUgcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIHJlc2VydmUgY2hhaW4gdG8gbW92ZSByZXNlcnZlc10BICAgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXIgWENNIHRvIGBkZXN0YCB0byBtaW501CAgIGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuUQEgLSBmb3IgdGVsZXBvcnRzOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBYQ00gdG8gYGRlc3RgIGNoYWluIHRvIG1pbnQvdGVsZXBvcnSwICAgYXNzZXRzIGFuZCBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLi0BLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBYMihQYXJlbnQsVQEgIFBhcmFjaGFpbiguLikpYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFgxKFBhcmFjaGFpbiguLikpYCB0byBzZW5kaCAgZnJvbSByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuMGNsYWltX2Fzc2V0cwgBGGFzc2V0c00DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABLGJlbmVmaWNpYXJ5wQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ADCBVAUNsYWltcyBhc3NldHMgdHJhcHBlZCBvbiB0aGlzIHBhbGxldCBiZWNhdXNlIG9mIGxlZnRvdmVyIGFzc2V0cyBkdXJpbmcgWENNIGV4ZWN1dGlvbi4ArC0gYG9yaWdpbmA6IEFueW9uZSBjYW4gY2FsbCB0aGlzIGV4dHJpbnNpYy5dAS0gYGFzc2V0c2A6IFRoZSBleGFjdCBhc3NldHMgdGhhdCB3ZXJlIHRyYXBwZWQuIFVzZSB0aGUgdmVyc2lvbiB0byBzcGVjaWZ5IHdoYXQgdmVyc2lvbph3YXMgdGhlIGxhdGVzdCB3aGVuIHRoZXkgd2VyZSB0cmFwcGVkLkUBLSBgYmVuZWZpY2lhcnlgOiBUaGUgbG9jYXRpb24vYWNjb3VudCB3aGVyZSB0aGUgY2xhaW1lZCBhc3NldHMgd2lsbCBiZSBkZXBvc2l0ZWQuAAkBVGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgbGluZWFyIGluIHRoZSBudW1iZXIgb2YgYXNzZXRzIGNsYWltZWQujHRyYW5zZmVyX2Fzc2V0c191c2luZ190eXBlX2FuZF90aGVuHAEQZGVzdMEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzTQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAFQYXNzZXRzX3RyYW5zZmVyX3R5cGV9AwFEQm94PFRyYW5zZmVyVHlwZT4AAThyZW1vdGVfZmVlc19pZIEDAVRCb3g8VmVyc2lvbmVkQXNzZXRJZD4AAUhmZWVzX3RyYW5zZmVyX3R5cGV9AwFEQm94PFRyYW5zZmVyVHlwZT4AAUhjdXN0b21feGNtX29uX2Rlc3QNAgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAEwd2VpZ2h0X2xpbWl0gQIBLFdlaWdodExpbWl0AA3AVQFUcmFuc2ZlciBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHVzaW5nIGV4cGxpY2l0IHRyYW5zZmVyaHR5cGVzIGZvciBhc3NldHMgYW5kIGZlZXMuAFkBYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBvciBtYXkgYmUgdGVsZXBvcnRhYmxlIHRvIGBkZXN0YC4gQ2FsbGVyIG11c3TscHJvdmlkZSB0aGUgYGFzc2V0c190cmFuc2Zlcl90eXBlYCB0byBiZSB1c2VkIGZvciBgYXNzZXRzYDpRASAtIGBUcmFuc2ZlclR5cGU6OkxvY2FsUmVzZXJ2ZWA6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpEZXN0aW5hdGlvblJlc2VydmVgOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpSZW1vdGVSZXNlcnZlKHJlc2VydmUpYDogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIGByZXNlcnZlYGEBICAgY2hhaW4gdG8gbW92ZSByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlclUBICAgWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuIFR5cGljYWxseZQgICB0aGUgcmVtb3RlIGByZXNlcnZlYCBpcyBBc3NldCBIdWIuRQEgLSBgVHJhbnNmZXJUeXBlOjpUZWxlcG9ydGA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG/oICAgbWludC90ZWxlcG9ydCBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgBVAU9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiwgYXMgd2VsbCBhcyBhbnkgaW50ZXJtZWRpYXJ5IGhvcHMsIGBCdXlFeGVjdXRpb25gIGlzIHVzZWQgdG8hAWJ1eSBleGVjdXRpb24gdXNpbmcgdHJhbnNmZXJyZWQgYGFzc2V0c2AgaWRlbnRpZmllZCBieSBgcmVtb3RlX2ZlZXNfaWRgLlkBTWFrZSBzdXJlIGVub3VnaCBvZiB0aGUgc3BlY2lmaWVkIGByZW1vdGVfZmVlc19pZGAgYXNzZXQgaXMgaW5jbHVkZWQgaW4gdGhlIGdpdmVuIGxpc3RhAW9mIGBhc3NldHNgLiBgcmVtb3RlX2ZlZXNfaWRgIHNob3VsZCBiZSBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAEUBYHJlbW90ZV9mZWVzX2lkYCBtYXkgdXNlIGRpZmZlcmVudCB0cmFuc2ZlciB0eXBlIHRoYW4gcmVzdCBvZiBgYXNzZXRzYCBhbmQgY2FuIGJlnHNwZWNpZmllZCB0aHJvdWdoIGBmZWVzX3RyYW5zZmVyX3R5cGVgLgBhAVRoZSBjYWxsZXIgbmVlZHMgdG8gc3BlY2lmeSB3aGF0IHNob3VsZCBoYXBwZW4gdG8gdGhlIHRyYW5zZmVycmVkIGFzc2V0cyBvbmNlIHRoZXkgcmVhY2hBAXRoZSBgZGVzdGAgY2hhaW4uIFRoaXMgaXMgZG9uZSB0aHJvdWdoIHRoZSBgY3VzdG9tX3hjbV9vbl9kZXN0YCBwYXJhbWV0ZXIsIHdoaWNo/GNvbnRhaW5zIHRoZSBpbnN0cnVjdGlvbnMgdG8gZXhlY3V0ZSBvbiBgZGVzdGAgYXMgYSBmaW5hbCBzdGVwLnwgIFRoaXMgaXMgdXN1YWxseSBhcyBzaW1wbGUgYXM6UQEgIGBYY20odmVjIVtEZXBvc2l0QXNzZXQgeyBhc3NldHM6IFdpbGQoQWxsQ291bnRlZChhc3NldHMubGVuKCkpKSwgYmVuZWZpY2lhcnkgfV0pYCwxASAgYnV0IGNvdWxkIGJlIHNvbWV0aGluZyBtb3JlIGV4b3RpYyBsaWtlIHNlbmRpbmcgdGhlIGBhc3NldHNgIGV2ZW4gZnVydGhlci4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbT0BICByZWxheSB0byBwYXJhY2hhaW4sIG9yIGAocGFyZW50czogMiwgKEdsb2JhbENvbnNlbnN1cyguLiksIC4uKSlgIHRvIHNlbmQgZnJvbfQgIHBhcmFjaGFpbiBhY3Jvc3MgYSBicmlkZ2UgdG8gYW5vdGhlciBlY29zeXN0ZW0gZGVzdGluYXRpb24uWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLj0BLSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBhc3NldHNgLiEBLSBgcmVtb3RlX2ZlZXNfaWRgOiBPbmUgb2YgdGhlIGluY2x1ZGVkIGBhc3NldHNgIHRvIGJlIHVzZWQgdG8gcGF5IGZlZXMuSQEtIGBmZWVzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBmZWVzYCBhc3NldHMuWQEtIGBjdXN0b21feGNtX29uX2Rlc3RgOiBUaGUgWENNIHRvIGJlIGV4ZWN1dGVkIG9uIGBkZXN0YCBjaGFpbiBhcyB0aGUgbGFzdCBzdGVwIG9mIHRoZVkBICB0cmFuc2Zlciwgd2hpY2ggYWxzbyBkZXRlcm1pbmVzIHdoYXQgaGFwcGVucyB0byB0aGUgYXNzZXRzIG9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLlBhZGRfYXV0aG9yaXplZF9hbGlhcwgBHGFsaWFzZXLBAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHGV4cGlyZXOFAwEsT3B0aW9uPHU2ND4ADixdAUF1dGhvcml6ZSBhbm90aGVyIGBhbGlhc2VyYCBsb2NhdGlvbiB0byBhbGlhcyBpbnRvIHRoZSBsb2NhbCBgb3JpZ2luYCBtYWtpbmcgdGhpcyBjYWxsLikBVGhlIGBhbGlhc2VyYCBpcyBvbmx5IGF1dGhvcml6ZWQgdW50aWwgdGhlIHByb3ZpZGVkIGBleHBpcnlgIGJsb2NrIG51bWJlci5JAVRoZSBjYWxsIGNhbiBhbHNvIGJlIHVzZWQgZm9yIGEgcHJldmlvdXNseSBhdXRob3JpemVkIGFsaWFzIGluIG9yZGVyIHRvIHVwZGF0ZSBpdHNYYGV4cGlyeWAgYmxvY2sgbnVtYmVyLgBRAVVzdWFsbHkgdXNlZnVsIHRvIGFsbG93IHlvdXIgbG9jYWwgYWNjb3VudCB0byBiZSBhbGlhc2VkIGludG8gZnJvbSBhIHJlbW90ZSBsb2NhdGlvbvRhbHNvIHVuZGVyIHlvdXIgY29udHJvbCAobGlrZSB5b3VyIGFjY291bnQgb24gYW5vdGhlciBjaGFpbikuAFEBV0FSTklORzogbWFrZSBzdXJlIHRoZSBjYWxsZXIgYG9yaWdpbmAgKHlvdSkgdHJ1c3RzIHRoZSBgYWxpYXNlcmAgbG9jYXRpb24gdG8gYWN0IGluWQF0aGVpci95b3VyIG5hbWUuIE9uY2UgYXV0aG9yaXplZCB1c2luZyB0aGlzIGNhbGwsIHRoZSBgYWxpYXNlcmAgY2FuIGZyZWVseSBpbXBlcnNvbmF0ZdRgb3JpZ2luYCBpbiBYQ00gcHJvZ3JhbXMgZXhlY3V0ZWQgb24gdGhlIGxvY2FsIGNoYWluLlxyZW1vdmVfYXV0aG9yaXplZF9hbGlhcwQBHGFsaWFzZXLBAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAPCF0BUmVtb3ZlIGEgcHJldmlvdXNseSBhdXRob3JpemVkIGBhbGlhc2VyYCBmcm9tIHRoZSBsaXN0IG9mIGxvY2F0aW9ucyB0aGF0IGNhbiBhbGlhcyBpbnRvkHRoZSBsb2NhbCBgb3JpZ2luYCBtYWtpbmcgdGhpcyBjYWxsLnRyZW1vdmVfYWxsX2F1dGhvcml6ZWRfYWxpYXNlcwAQCEkBUmVtb3ZlIGFsbCBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYGFsaWFzZXJgcyB0aGF0IGNhbiBhbGlhcyBpbnRvIHRoZSBsb2NhbCBgb3JpZ2luYERtYWtpbmcgdGhpcyBjYWxsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7BAQgMeGNtRFZlcnNpb25lZExvY2F0aW9uAAEMCFYzBADFAQFEdjM6Ok11bHRpTG9jYXRpb24AAwAIVjQEANkBATB2NDo6TG9jYXRpb24ABAAIVjUEAOABMHY1OjpMb2NhdGlvbgAFAADFARAsc3RhZ2luZ194Y20IdjM0bXVsdGlsb2NhdGlvbjRNdWx0aUxvY2F0aW9uAAAIARxwYXJlbnRzDAEIdTgAASBpbnRlcmlvcskBASRKdW5jdGlvbnMAAMkBEAx4Y20IdjMkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBADNAQEgSnVuY3Rpb24AAQAIWDIIAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAAIACFgzDADNAQEgSnVuY3Rpb24AAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAAMACFg0EADNAQEgSnVuY3Rpb24AAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAADNAQEgSnVuY3Rpb24ABAAIWDUUAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAADNAQEgSnVuY3Rpb24AAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAAUACFg2GADNAQEgSnVuY3Rpb24AAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAADNAQEgSnVuY3Rpb24AAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAAYACFg3HADNAQEgSnVuY3Rpb24AAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAADNAQEgSnVuY3Rpb24AAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAADNAQEgSnVuY3Rpb24ABwAIWDggAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAADNAQEgSnVuY3Rpb24AAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAADNAQEgSnVuY3Rpb24AAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAAgAAM0BEAx4Y20IdjMganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3Jr0QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmvRAQFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3Jr0QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQA+AEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkAQEBGEJvZHlJZAABEHBhcnQFAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBADVAQEkTmV0d29ya0lkAAkAANEBBBhPcHRpb24EBFQB1QEBCBBOb25lAAAAEFNvbWUEANUBAAABAADVARAMeGNtCHYzIGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWS0AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAADZARAsc3RhZ2luZ194Y20IdjQgbG9jYXRpb24gTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9y3QEBJEp1bmN0aW9ucwAA3QEQLHN0YWdpbmdfeGNtCHY0JGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQA4QEBSEFyYzxbSnVuY3Rpb247IDFdPgABAAhYMgQA8QEBSEFyYzxbSnVuY3Rpb247IDJdPgACAAhYMwQA9QEBSEFyYzxbSnVuY3Rpb247IDNdPgADAAhYNAQA+QEBSEFyYzxbSnVuY3Rpb247IDRdPgAEAAhYNQQA/QEBSEFyYzxbSnVuY3Rpb247IDVdPgAFAAhYNgQAAQIBSEFyYzxbSnVuY3Rpb247IDZdPgAGAAhYNwQABQIBSEFyYzxbSnVuY3Rpb247IDddPgAHAAhYOAQACQIBSEFyYzxbSnVuY3Rpb247IDhdPgAIAADhAQAAAwEAAADlAQDlARAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3Jr6QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmvpAQFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3Jr6QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQA+AEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkAQEBGEJvZHlJZAABEHBhcnQFAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBADtAQEkTmV0d29ya0lkAAkAAOkBBBhPcHRpb24EBFQB7QEBCBBOb25lAAAAEFNvbWUEAO0BAAABAADtARAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAPEBAAADAgAAAOUBAPUBAAADAwAAAOUBAPkBAAADBAAAAOUBAP0BAAADBQAAAOUBAAECAAADBgAAAOUBAAUCAAADBwAAAOUBAAkCAAADCAAAAOUBAA0CCAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMwQAEQIBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BACFAgFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAIVjUEANECAVB2NTo6WGNtPFJ1bnRpbWVDYWxsPgAFAAARAgwMeGNtCHYzDFhjbQQQQ2FsbAAABAAVAgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAFQIAAAIZAgAZAgwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAB0CASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAB0CASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAAdAgEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlPQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodCkBARhXZWlnaHQAARxxdWVyaWVyZQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzHQIBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnnFAQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cx0CASxNdWx0aUFzc2V0cwABEGRlc3TFAQE0TXVsdGlMb2NhdGlvbgABDHhjbRECARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmRpAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QpAQEYV2VpZ2h0AAEQY2FsbG0CAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAMkBAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAHECAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHN1AgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5xQEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c3UCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdMUBATRNdWx0aUxvY2F0aW9uAAEMeGNtEQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmV1AgFATXVsdGlBc3NldEZpbHRlcgABEHdhbnQdAgEsTXVsdGlBc3NldHMAARxtYXhpbWFsXQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHN1AgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmXFAQE0TXVsdGlMb2NhdGlvbgABDHhjbRECARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHN1AgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TFAQE0TXVsdGlMb2NhdGlvbgABDHhjbRECARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvcQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzdQIBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlcyUCAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl0gQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAARAgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAARAgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0cx0CASxNdWx0aUFzc2V0cwABGHRpY2tldMUBATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodCkBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAHQIBLE11bHRpQXNzZXRzABwALEV4cGVjdEFzc2V0BAAdAgEsTXVsdGlBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABlAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBABBAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAF0CAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm9xAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBABxAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAM0BASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya9UBASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbskBAVRJbnRlcmlvck11bHRpTG9jYXRpb24AAQx4Y20RAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldCUCAShNdWx0aUFzc2V0AAEgdW5sb2NrZXLFAQE0TXVsdGlMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0JQIBKE11bHRpQXNzZXQAARh0YXJnZXTFAQE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0JQIBKE11bHRpQXNzZXQAARRvd25lcsUBATRNdWx0aUxvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldCUCAShNdWx0aUFzc2V0AAEYbG9ja2VyxQEBNE11bHRpTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXddAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAxQEBNE11bHRpTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0gQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luZQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAvAAAdAhAMeGNtCHYzKG11bHRpYXNzZXQsTXVsdGlBc3NldHMAAAQAIQIBPFZlYzxNdWx0aUFzc2V0PgAAIQIAAAIlAgAlAhAMeGNtCHYzKG11bHRpYXNzZXQoTXVsdGlBc3NldAAACAEIaWQpAgEcQXNzZXRJZAABDGZ1bi0CASxGdW5naWJpbGl0eQAAKQIQDHhjbQh2MyhtdWx0aWFzc2V0HEFzc2V0SWQAAQggQ29uY3JldGUEAMUBATRNdWx0aUxvY2F0aW9uAAAAIEFic3RyYWN0BAAIASBbdTg7IDMyXQABAAAtAhAMeGNtCHYzKG11bHRpYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAPgBEHUxMjgAAAAsTm9uRnVuZ2libGUEADECATRBc3NldEluc3RhbmNlAAEAADECEAx4Y20IdjMobXVsdGlhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQA+AEQdTEyOAABABhBcnJheTQEAHABHFt1ODsgNF0AAgAYQXJyYXk4BAA1AgEcW3U4OyA4XQADABxBcnJheTE2BAA5AgEgW3U4OyAxNl0ABAAcQXJyYXkzMgQACAEgW3U4OyAzMl0ABQAANQIAAAMIAAAADAA5AgAAAxAAAAAMAD0CDAx4Y20IdjMgUmVzcG9uc2UAARgQTnVsbAAAABhBc3NldHMEAB0CASxNdWx0aUFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAEECAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQATQIBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BABdAgE4TWF5YmVFcnJvckNvZGUABQAAQQIEGE9wdGlvbgQEVAFFAgEIEE5vbmUAAAAQU29tZQQARQIAAAEAAEUCAAAECDhJAgBJAhAMeGNtCHYzGHRyYWl0cxRFcnJvcgABoCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAoAQx1NjQAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgBMVW5oYW5kbGVkWGNtVmVyc2lvbgAjAEhXZWlnaHRMaW1pdFJlYWNoZWQEACkBARhXZWlnaHQAJAAcQmFycmllcgAlAExXZWlnaHROb3RDb21wdXRhYmxlACYAREV4Y2VlZHNTdGFja0xpbWl0ACcAAE0CDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBUQIEUwAABABZAgEYVmVjPFQ+AABRAgwMeGNtCHYzKFBhbGxldEluZm8AABgBFGluZGV4YAEMdTMyAAEQbmFtZVUCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1lVQIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JgAQx1MzIAARRtaW5vcmABDHUzMgABFHBhdGNoYAEMdTMyAABVAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAFkCAAACUQIAXQIMDHhjbQh2MzhNYXliZUVycm9yQ29kZQABDBxTdWNjZXNzAAAAFEVycm9yBABhAgGMQm91bmRlZFZlYzx1OCwgTWF4RGlzcGF0Y2hFcnJvckxlbj4AAQA4VHJ1bmNhdGVkRXJyb3IEAGECAYxCb3VuZGVkVmVjPHU4LCBNYXhEaXNwYXRjaEVycm9yTGVuPgACAABhAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAGUCBBhPcHRpb24EBFQBxQEBCBBOb25lAAAAEFNvbWUEAMUBAAABAABpAgwMeGNtCHYzKE9yaWdpbktpbmQAARAYTmF0aXZlAAAAQFNvdmVyZWlnbkFjY291bnQAAQAkU3VwZXJ1c2VyAAIADFhjbQADAABtAgwMeGNtOGRvdWJsZV9lbmNvZGVkNERvdWJsZUVuY29kZWQEBFQAAAQBHGVuY29kZWQYARxWZWM8dTg+AABxAgwMeGNtCHYzRFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbsUBATRNdWx0aUxvY2F0aW9uAAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEobWF4X3dlaWdodCkBARhXZWlnaHQAAHUCEAx4Y20IdjMobXVsdGlhc3NldEBNdWx0aUFzc2V0RmlsdGVyAAEIIERlZmluaXRlBAAdAgEsTXVsdGlBc3NldHMAAAAQV2lsZAQAeQIBOFdpbGRNdWx0aUFzc2V0AAEAAHkCEAx4Y20IdjMobXVsdGlhc3NldDhXaWxkTXVsdGlBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZCkCARxBc3NldElkAAEMZnVufQIBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABgAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWQpAgEcQXNzZXRJZAABDGZ1bn0CATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGABDHUzMgADAAB9AhAMeGNtCHYzKG11bHRpYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAAIECDAx4Y20IdjMsV2VpZ2h0TGltaXQAAQgkVW5saW1pdGVkAAAAHExpbWl0ZWQEACkBARhXZWlnaHQAAQAAhQIMLHN0YWdpbmdfeGNtCHY0DFhjbQQQQ2FsbAAABACJAgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAiQIAAAKNAgCNAgwsc3RhZ2luZ194Y20IdjQsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAkQIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAJECARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAkQIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2WpAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0KQEBGFdlaWdodAABHHF1ZXJpZXK9AgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzkQIBGEFzc2V0cwABLGJlbmVmaWNpYXJ52QEBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzkQIBGEFzc2V0cwABEGRlc3TZAQEgTG9jYXRpb24AAQx4Y22FAgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kaQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0KQEBGFdlaWdodAABEGNhbGxtAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADdAQFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAwQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c8UCASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ52QEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHPFAgEsQXNzZXRGaWx0ZXIAARBkZXN02QEBIExvY2F0aW9uAAEMeGNthQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmXFAgEsQXNzZXRGaWx0ZXIAARB3YW50kQIBGEFzc2V0cwABHG1heGltYWxdAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c8UCASxBc3NldEZpbHRlcgABHHJlc2VydmXZAQEgTG9jYXRpb24AAQx4Y22FAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzxQIBLEFzc2V0RmlsdGVyAAEQZGVzdNkBASBMb2NhdGlvbgABDHhjbYUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvwQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzxQIBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXOZAgEUQXNzZXQAATB3ZWlnaHRfbGltaXSBAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAIUCASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAIUCASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzkQIBGEFzc2V0cwABGHRpY2tldNkBASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQpAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAJECARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAJECARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAC9AgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAQQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBABdAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvwQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAwQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBADlAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmvtAQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb27dAQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbYUCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0mQIBFEFzc2V0AAEgdW5sb2NrZXLZAQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldJkCARRBc3NldAABGHRhcmdldNkBASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0mQIBFEFzc2V0AAEUb3duZXLZAQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0mQIBFEFzc2V0AAEYbG9ja2Vy2QEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3XQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EANkBASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXSBAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW69AgFAT3B0aW9uPExvY2F0aW9uPgAvAACRAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQYQXNzZXRzAAAEAJUCAShWZWM8QXNzZXQ+AACVAgAAApkCAJkCECxzdGFnaW5nX3hjbQh2NBRhc3NldBRBc3NldAAACAEIaWSdAgEcQXNzZXRJZAABDGZ1bqECASxGdW5naWJpbGl0eQAAnQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0HEFzc2V0SWQAAAQA2QEBIExvY2F0aW9uAAChAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAPgBEHUxMjgAAAAsTm9uRnVuZ2libGUEAKUCATRBc3NldEluc3RhbmNlAAEAAKUCECxzdGFnaW5nX3hjbQh2NBRhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQA+AEQdTEyOAABABhBcnJheTQEAHABHFt1ODsgNF0AAgAYQXJyYXk4BAA1AgEcW3U4OyA4XQADABxBcnJheTE2BAA5AgEgW3U4OyAxNl0ABAAcQXJyYXkzMgQACAEgW3U4OyAzMl0ABQAAqQIMLHN0YWdpbmdfeGNtCHY0IFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBACRAgEYQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAQQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBACtAgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAF0CAThNYXliZUVycm9yQ29kZQAFAACtAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAbECBFMAAAQAuQIBGFZlYzxUPgAAsQIMLHN0YWdpbmdfeGNtCHY0KFBhbGxldEluZm8AABgBFGluZGV4YAEMdTMyAAEQbmFtZbUCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1ltQIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JgAQx1MzIAARRtaW5vcmABDHUzMgABFHBhdGNoYAEMdTMyAAC1AgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AALkCAAACsQIAvQIEGE9wdGlvbgQEVAHZAQEIEE5vbmUAAAAQU29tZQQA2QEAAAEAAMECDCxzdGFnaW5nX3hjbQh2NERRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb27ZAQEgTG9jYXRpb24AASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0KQEBGFdlaWdodAAAxQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEFzc2V0RmlsdGVyAAEIIERlZmluaXRlBACRAgEYQXNzZXRzAAAAEFdpbGQEAMkCASRXaWxkQXNzZXQAAQAAyQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0JFdpbGRBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZJ0CARxBc3NldElkAAEMZnVuzQIBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABgAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWSdAgEcQXNzZXRJZAABDGZ1bs0CATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGABDHUzMgADAADNAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAANECDCxzdGFnaW5nX3hjbQh2NQxYY20EEENhbGwAAAQA1QIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AANUCAAAC2QIA2QIMLHN0YWdpbmdfeGNtCHY1LEluc3RydWN0aW9uBBBDYWxsAAHQNFdpdGhkcmF3QXNzZXQEAN0CARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBADdAgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAN0CARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNl9QIBIFJlc3BvbnNlAAEobWF4X3dlaWdodCkBARhXZWlnaHQAARxxdWVyaWVyFQMBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c90CARhBc3NldHMAASxiZW5lZmljaWFyeeABIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRz3QIBGEFzc2V0cwABEGRlc3TgASBMb2NhdGlvbgABDHhjbdECARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmRpAgEoT3JpZ2luS2luZAABTGZhbGxiYWNrX21heF93ZWlnaHQZAwE4T3B0aW9uPFdlaWdodD4AARBjYWxsbQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQA5AFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAHQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0cyEDASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ54AEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0cyEDASxBc3NldEZpbHRlcgABEGRlc3TgASBMb2NhdGlvbgABDHhjbdECARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlIQMBLEFzc2V0RmlsdGVyAAEQd2FudN0CARhBc3NldHMAARxtYXhpbWFsXQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHMhAwEsQXNzZXRGaWx0ZXIAARxyZXNlcnZl4AEgTG9jYXRpb24AAQx4Y23RAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzIQMBLEFzc2V0RmlsdGVyAAEQZGVzdOABIExvY2F0aW9uAAEMeGNt0QIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm8dAwFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHMhAwEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc+UCARRBc3NldAABMHdlaWdodF9saW1pdIECASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQA0QIBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQA0QIBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHPdAgEYQXNzZXRzAAEYdGlja2V04AEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0KQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BADdAgEYQXNzZXRzABwALEV4cGVjdEFzc2V0BADdAgEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAFQMBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAPkCAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAXQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mbx0DAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAB0DAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQA7AEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmv0ASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbuQBQEludGVyaW9yTG9jYXRpb24AAQx4Y23RAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldOUCARRBc3NldAABIHVubG9ja2Vy4AEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldOUCARRBc3NldAABGHRhcmdldOABIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXTlAgEUQXNzZXQAARRvd25lcuABIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldOUCARRBc3NldAABGGxvY2tlcuABIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3XQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAOABIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdIECASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbhUDAUBPcHRpb248TG9jYXRpb24+AC8AHFBheUZlZXMEARRhc3NldOUCARRBc3NldAAwAEBJbml0aWF0ZVRyYW5zZmVyFAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABLHJlbW90ZV9mZWVzLQMBbE9wdGlvbjxBc3NldFRyYW5zZmVyRmlsdGVyPgABPHByZXNlcnZlX29yaWdpbl0BARBib29sAAEYYXNzZXRzNQMB4EJvdW5kZWRWZWM8QXNzZXRUcmFuc2ZlckZpbHRlciwgTWF4QXNzZXRUcmFuc2ZlckZpbHRlcnM+AAEocmVtb3RlX3hjbdECARxYY208KCk+ADEAREV4ZWN1dGVXaXRoT3JpZ2luCAFEZGVzY2VuZGFudF9vcmlnaW49AwFgT3B0aW9uPEludGVyaW9yTG9jYXRpb24+AAEMeGNt0QIBJFhjbTxDYWxsPgAyACBTZXRIaW50cwQBFGhpbnRzQQMBhEJvdW5kZWRWZWM8SGludCwgSGludE51bVZhcmlhbnRzPgAzAADdAhAsc3RhZ2luZ194Y20IdjUUYXNzZXQYQXNzZXRzAAAEAOECAShWZWM8QXNzZXQ+AADhAgAAAuUCAOUCECxzdGFnaW5nX3hjbQh2NRRhc3NldBRBc3NldAAACAEIaWTpAgEcQXNzZXRJZAABDGZ1bu0CASxGdW5naWJpbGl0eQAA6QIQLHN0YWdpbmdfeGNtCHY1FGFzc2V0HEFzc2V0SWQAAAQA4AEgTG9jYXRpb24AAO0CECxzdGFnaW5nX3hjbQh2NRRhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQA+AEQdTEyOAAAACxOb25GdW5naWJsZQQA8QIBNEFzc2V0SW5zdGFuY2UAAQAA8QIQLHN0YWdpbmdfeGNtCHY1FGFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BAD4ARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEADUCARxbdTg7IDhdAAMAHEFycmF5MTYEADkCASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAAD1Agwsc3RhZ2luZ194Y20IdjUgUmVzcG9uc2UAARgQTnVsbAAAABhBc3NldHMEAN0CARhBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BAD5AgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAOAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EAAUDAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQAXQIBOE1heWJlRXJyb3JDb2RlAAUAAPkCBBhPcHRpb24EBFQB/QIBCBBOb25lAAAAEFNvbWUEAP0CAAABAAD9AgAABAg4AQMAAQMQDHhjbQh2NRh0cmFpdHMURXJyb3IAAaQgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAQAKAEMdTY0ABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIANFRvb01hbnlBc3NldHMAIwBMVW5oYW5kbGVkWGNtVmVyc2lvbgAkAEhXZWlnaHRMaW1pdFJlYWNoZWQEACkBARhXZWlnaHQAJQAcQmFycmllcgAmAExXZWlnaHROb3RDb21wdXRhYmxlACcAREV4Y2VlZHNTdGFja0xpbWl0ACgAAAUDDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCQMEUwAABAARAwEYVmVjPFQ+AAAJAwwsc3RhZ2luZ194Y20IdjUoUGFsbGV0SW5mbwAAGAEUaW5kZXhgAQx1MzIAARBuYW1lDQMBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWUNAwGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcmABDHUzMgABFG1pbm9yYAEMdTMyAAEUcGF0Y2hgAQx1MzIAAA0DDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAEQMAAAIJAwAVAwQYT3B0aW9uBARUAeABCBBOb25lAAAAEFNvbWUEAOAAAAEAABkDBBhPcHRpb24EBFQBKQEBCBBOb25lAAAAEFNvbWUEACkBAAABAAAdAwwsc3RhZ2luZ194Y20IdjVEUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9u4AEgTG9jYXRpb24AASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0KQEBGFdlaWdodAAAIQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0LEFzc2V0RmlsdGVyAAEIIERlZmluaXRlBADdAgEYQXNzZXRzAAAAEFdpbGQEACUDASRXaWxkQXNzZXQAAQAAJQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0JFdpbGRBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZOkCARxBc3NldElkAAEMZnVuKQMBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABgAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWTpAgEcQXNzZXRJZAABDGZ1bikDATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGABDHUzMgADAAApAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAAC0DBBhPcHRpb24EBFQBMQMBCBBOb25lAAAAEFNvbWUEADEDAAABAAAxAxAsc3RhZ2luZ194Y20IdjUUYXNzZXRMQXNzZXRUcmFuc2ZlckZpbHRlcgABDCBUZWxlcG9ydAQAIQMBLEFzc2V0RmlsdGVyAAAAOFJlc2VydmVEZXBvc2l0BAAhAwEsQXNzZXRGaWx0ZXIAAQA8UmVzZXJ2ZVdpdGhkcmF3BAAhAwEsQXNzZXRGaWx0ZXIAAgAANQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAExAwRTAAAEADkDARhWZWM8VD4AADkDAAACMQMAPQMEGE9wdGlvbgQEVAHkAQgQTm9uZQAAABBTb21lBADkAAABAABBAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAUUDBFMAAAQASQMBGFZlYzxUPgAARQMMLHN0YWdpbmdfeGNtCHY1EEhpbnQAAQQwQXNzZXRDbGFpbWVyBAEgbG9jYXRpb27gASBMb2NhdGlvbgAAAABJAwAAAkUDAE0DCAx4Y208VmVyc2lvbmVkQXNzZXRzAAEMCFYzBAAdAgE8djM6Ok11bHRpQXNzZXRzAAMACFY0BACRAgEodjQ6OkFzc2V0cwAEAAhWNQQA3QIBKHY1OjpBc3NldHMABQAAUQMIDHhjbTBWZXJzaW9uZWRYY20ELFJ1bnRpbWVDYWxsAAEMCFYzBABVAwFQdjM6OlhjbTxSdW50aW1lQ2FsbD4AAwAIVjQEAGUDAVB2NDo6WGNtPFJ1bnRpbWVDYWxsPgAEAAhWNQQAcQMBUHY1OjpYY208UnVudGltZUNhbGw+AAUAAFUDDAx4Y20IdjMMWGNtBBBDYWxsAAAEAFkDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AABZAwAAAl0DAF0DDAx4Y20IdjMsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAHQIBLE11bHRpQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAHQIBLE11bHRpQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAB0CASxNdWx0aUFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2U9AgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0KQEBGFdlaWdodAABHHF1ZXJpZXJlAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHMdAgEsTXVsdGlBc3NldHMAASxiZW5lZmljaWFyecUBATRNdWx0aUxvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzHQIBLE11bHRpQXNzZXRzAAEQZGVzdMUBATRNdWx0aUxvY2F0aW9uAAEMeGNtEQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZGkCAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdCkBARhXZWlnaHQAARBjYWxsYQMBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAyQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAcQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c3UCAUBNdWx0aUFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnnFAQE0TXVsdGlMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzdQIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN0xQEBNE11bHRpTG9jYXRpb24AAQx4Y20RAgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZXUCAUBNdWx0aUFzc2V0RmlsdGVyAAEQd2FudB0CASxNdWx0aUFzc2V0cwABHG1heGltYWxdAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c3UCAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVzZXJ2ZcUBATRNdWx0aUxvY2F0aW9uAAEMeGNtEQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c3UCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdMUBATRNdWx0aUxvY2F0aW9uAAEMeGNtEQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm9xAgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHN1AgFATXVsdGlBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzJQIBKE11bHRpQXNzZXQAATB3ZWlnaHRfbGltaXSBAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAFUDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAFUDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzHQIBLE11bHRpQXNzZXRzAAEYdGlja2V0xQEBNE11bHRpTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0KQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAAdAgEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEAB0CASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAGUCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAEECAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAXQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb3ECAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAHECAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAzQEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr1QEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uyQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbRECARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0JQIBKE11bHRpQXNzZXQAASB1bmxvY2tlcsUBATRNdWx0aUxvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXQlAgEoTXVsdGlBc3NldAABGHRhcmdldMUBATRNdWx0aUxvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXQlAgEoTXVsdGlBc3NldAABFG93bmVyxQEBNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0JQIBKE11bHRpQXNzZXQAARhsb2NrZXLFAQE0TXVsdGlMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd10BARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBADFAQE0TXVsdGlMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXSBAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW5lAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AC8AAGEDDAx4Y204ZG91YmxlX2VuY29kZWQ0RG91YmxlRW5jb2RlZAQEVAAABAEcZW5jb2RlZBgBHFZlYzx1OD4AAGUDDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQAaQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAGkDAAACbQMAbQMMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAJECARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBACRAgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAJECARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlqQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodCkBARhXZWlnaHQAARxxdWVyaWVyvQIBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c5ECARhBc3NldHMAASxiZW5lZmljaWFyedkBASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c5ECARhBc3NldHMAARBkZXN02QEBIExvY2F0aW9uAAEMeGNthQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZGkCAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdCkBARhXZWlnaHQAARBjYWxsYQMBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQA3QEBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAMECAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHPFAgEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyedkBASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzxQIBLEFzc2V0RmlsdGVyAAEQZGVzdNkBASBMb2NhdGlvbgABDHhjbYUCARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlxQIBLEFzc2V0RmlsdGVyAAEQd2FudJECARhBc3NldHMAARxtYXhpbWFsXQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHPFAgEsQXNzZXRGaWx0ZXIAARxyZXNlcnZl2QEBIExvY2F0aW9uAAEMeGNthQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c8UCASxBc3NldEZpbHRlcgABEGRlc3TZAQEgTG9jYXRpb24AAQx4Y22FAgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb8ECAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c8UCASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzmQIBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0gQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBABlAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BABlAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c5ECARhBc3NldHMAARh0aWNrZXTZAQEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0KQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BACRAgEYQXNzZXRzABwALEV4cGVjdEFzc2V0BACRAgEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAvQIBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAEECAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAXQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb8ECAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAMECAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQA5QEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr7QEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9u3QEBQEludGVyaW9yTG9jYXRpb24AAQx4Y22FAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldJkCARRBc3NldAABIHVubG9ja2Vy2QEBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXSZAgEUQXNzZXQAARh0YXJnZXTZAQEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldJkCARRBc3NldAABFG93bmVy2QEBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldJkCARRBc3NldAABGGxvY2tlctkBASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd10BARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBADZAQEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0gQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luvQIBQE9wdGlvbjxMb2NhdGlvbj4ALwAAcQMMLHN0YWdpbmdfeGNtCHY1DFhjbQQQQ2FsbAAABAB1AwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAdQMAAAJ5AwB5Awwsc3RhZ2luZ194Y20IdjUsSW5zdHJ1Y3Rpb24EEENhbGwAAdA0V2l0aGRyYXdBc3NldAQA3QIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAN0CARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQA3QIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2X1AgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0KQEBGFdlaWdodAABHHF1ZXJpZXIVAwFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRz3QIBGEFzc2V0cwABLGJlbmVmaWNpYXJ54AEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHPdAgEYQXNzZXRzAAEQZGVzdOABIExvY2F0aW9uAAEMeGNt0QIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZGkCAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodBkDAThPcHRpb248V2VpZ2h0PgABEGNhbGxhAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADkAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAAdAwFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzIQMBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnngASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzIQMBLEFzc2V0RmlsdGVyAAEQZGVzdOABIExvY2F0aW9uAAEMeGNt0QIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmUhAwEsQXNzZXRGaWx0ZXIAARB3YW503QIBGEFzc2V0cwABHG1heGltYWxdAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0cyEDASxBc3NldEZpbHRlcgABHHJlc2VydmXgASBMb2NhdGlvbgABDHhjbdECARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHMhAwEsQXNzZXRGaWx0ZXIAARBkZXN04AEgTG9jYXRpb24AAQx4Y23RAgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mbx0DAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0cyEDASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVz5QIBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0gQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBABxAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BABxAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c90CARhBc3NldHMAARh0aWNrZXTgASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQpAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAN0CARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAN0CARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAAVAwFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQA+QIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBABdAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvHQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAHQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBADsASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya/QBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9u5AFASW50ZXJpb3JMb2NhdGlvbgABDHhjbdECARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V05QIBFEFzc2V0AAEgdW5sb2NrZXLgASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V05QIBFEFzc2V0AAEYdGFyZ2V04AEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldOUCARRBc3NldAABFG93bmVy4AEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V05QIBFEFzc2V0AAEYbG9ja2Vy4AEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXddAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQA4AEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0gQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luFQMBQE9wdGlvbjxMb2NhdGlvbj4ALwAcUGF5RmVlcwQBFGFzc2V05QIBFEFzc2V0ADAAQEluaXRpYXRlVHJhbnNmZXIUASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEscmVtb3RlX2ZlZXMtAwFsT3B0aW9uPEFzc2V0VHJhbnNmZXJGaWx0ZXI+AAE8cHJlc2VydmVfb3JpZ2luXQEBEGJvb2wAARhhc3NldHM1AwHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNt0QIBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbj0DAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y21xAwEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHNBAwGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAAH0DEFBzdGFnaW5nX3hjbV9leGVjdXRvchh0cmFpdHM4YXNzZXRfdHJhbnNmZXIwVHJhbnNmZXJUeXBlAAEQIFRlbGVwb3J0AAAAMExvY2FsUmVzZXJ2ZQABAEhEZXN0aW5hdGlvblJlc2VydmUAAgA0UmVtb3RlUmVzZXJ2ZQQAwQEBRFZlcnNpb25lZExvY2F0aW9uAAMAAIEDCAx4Y21AVmVyc2lvbmVkQXNzZXRJZAABDAhWMwQAKQIBLHYzOjpBc3NldElkAAMACFY0BACdAgEsdjQ6OkFzc2V0SWQABAAIVjUEAOkCASx2NTo6QXNzZXRJZAAFAACFAwQYT3B0aW9uBARUASgBCBBOb25lAAAAEFNvbWUEACgAAAEAAIkDDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMujQMMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBBDYWxsBARUAAEIJHJlYXBfcGFnZQgBOG1lc3NhZ2Vfb3JpZ2lukQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgABKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgAAAQ9AVJlbW92ZSBhIHBhZ2Ugd2hpY2ggaGFzIG5vIG1vcmUgbWVzc2FnZXMgcmVtYWluaW5nIHRvIGJlIHByb2Nlc3NlZCBvciBpcyBzdGFsZS5IZXhlY3V0ZV9vdmVyd2VpZ2h0EAE4bWVzc2FnZV9vcmlnaW6RAwFITWVzc2FnZU9yaWdpbk9mPFQ+AAEQcGFnZTgBJFBhZ2VJbmRleAABFGluZGV4OAEcVDo6U2l6ZQABMHdlaWdodF9saW1pdCkBARhXZWlnaHQAATR4RXhlY3V0ZSBhbiBvdmVyd2VpZ2h0IG1lc3NhZ2UuAE0BVGVtcG9yYXJ5IHByb2Nlc3NpbmcgZXJyb3JzIHdpbGwgYmUgcHJvcGFnYXRlZCB3aGVyZWFzIHBlcm1hbmVudCBlcnJvcnMgYXJlIHRyZWF0ZWRUYXMgc3VjY2VzcyBjb25kaXRpb24uAHQtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgLjUBLSBgbWVzc2FnZV9vcmlnaW5gOiBUaGUgb3JpZ2luIGZyb20gd2hpY2ggdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQgYXJyaXZlZC49AS0gYHBhZ2VgOiBUaGUgcGFnZSBpbiB0aGUgcXVldWUgaW4gd2hpY2ggdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQgaXMgc2l0dGluZy4JAS0gYGluZGV4YDogVGhlIGluZGV4IGludG8gdGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkLlkBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCBhbGxvd2VkIHRvIGJlIGNvbnN1bWVkIGluIHRoZSBleGVjdXRpb25EICBvZiB0aGUgbWVzc2FnZS4A9EJlbmNobWFyayBjb21wbGV4aXR5IGNvbnNpZGVyYXRpb25zOiBPKGluZGV4ICsgd2VpZ2h0X2xpbWl0KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMukQMIXGN1bXVsdXNfcHJpbWl0aXZlc19jb3JlWEFnZ3JlZ2F0ZU1lc3NhZ2VPcmlnaW4AAQwQSGVyZQAAABhQYXJlbnQAAQAcU2libGluZwQAnAEYUGFyYUlkAAIAAJUDDCxwYWxsZXRfc3VkbxhwYWxsZXQQQ2FsbAQEVAABFBBzdWRvBAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAAQ1AUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBSb290YCBvcmlnaW4uVHN1ZG9fdW5jaGVja2VkX3dlaWdodAgBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEYd2VpZ2h0KQEBGFdlaWdodAABFDUBQXV0aGVudGljYXRlcyB0aGUgc3VkbyBrZXkgYW5kIGRpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYFJvb3RgIG9yaWdpbi4tAVRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIHdlaWdodCBvZiB0aGUgY2FsbCwgYW5kIGluc3RlYWQgYWxsb3dzIHRoZbBTdWRvIHVzZXIgdG8gc3BlY2lmeSB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uHHNldF9rZXkEAQxuZXcAAVBBY2NvdW50SWRMb29rdXBPZjxUPgACCF0BQXV0aGVudGljYXRlcyB0aGUgY3VycmVudCBzdWRvIGtleSBhbmQgc2V0cyB0aGUgZ2l2ZW4gQWNjb3VudElkIChgbmV3YCkgYXMgdGhlIG5ldyBzdWRvEGtleS4cc3Vkb19hcwgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAxBNAUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBTaWduZWRgIG9yaWdpbiBmcm9tQGEgZ2l2ZW4gYWNjb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLihyZW1vdmVfa2V5AAQMhFBlcm1hbmVudGx5IHJlbW92ZXMgdGhlIHN1ZG8ga2V5LgBsKipUaGlzIGNhbm5vdCBiZSB1bi1kb25lLioqBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLpkDEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczhhdXRob3JpemVfY2FsbDRBdXRob3JpemVDYWxsBARUAAAAAJ0DEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc1RjaGVja19ub25femVyb19zZW5kZXJIQ2hlY2tOb25aZXJvU2VuZGVyBARUAAAAAKEDEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc0hjaGVja19zcGVjX3ZlcnNpb25AQ2hlY2tTcGVjVmVyc2lvbgQEVAAAAAClAxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNAY2hlY2tfdHhfdmVyc2lvbjhDaGVja1R4VmVyc2lvbgQEVAAAAACpAxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM0Y2hlY2tfZ2VuZXNpczBDaGVja0dlbmVzaXMEBFQAAAAArQMQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zPGNoZWNrX21vcnRhbGl0eThDaGVja01vcnRhbGl0eQQEVAAABACxAwEMRXJhAACxAxAoc3BfcnVudGltZRxnZW5lcmljDGVyYQxFcmEAAQEEIEltbW9ydGFsAAAAHE1vcnRhbDEEAAwAAAEAHE1vcnRhbDIEAAwAAAIAHE1vcnRhbDMEAAwAAAMAHE1vcnRhbDQEAAwAAAQAHE1vcnRhbDUEAAwAAAUAHE1vcnRhbDYEAAwAAAYAHE1vcnRhbDcEAAwAAAcAHE1vcnRhbDgEAAwAAAgAHE1vcnRhbDkEAAwAAAkAIE1vcnRhbDEwBAAMAAAKACBNb3J0YWwxMQQADAAACwAgTW9ydGFsMTIEAAwAAAwAIE1vcnRhbDEzBAAMAAANACBNb3J0YWwxNAQADAAADgAgTW9ydGFsMTUEAAwAAA8AIE1vcnRhbDE2BAAMAAAQACBNb3J0YWwxNwQADAAAEQAgTW9ydGFsMTgEAAwAABIAIE1vcnRhbDE5BAAMAAATACBNb3J0YWwyMAQADAAAFAAgTW9ydGFsMjEEAAwAABUAIE1vcnRhbDIyBAAMAAAWACBNb3J0YWwyMwQADAAAFwAgTW9ydGFsMjQEAAwAABgAIE1vcnRhbDI1BAAMAAAZACBNb3J0YWwyNgQADAAAGgAgTW9ydGFsMjcEAAwAABsAIE1vcnRhbDI4BAAMAAAcACBNb3J0YWwyOQQADAAAHQAgTW9ydGFsMzAEAAwAAB4AIE1vcnRhbDMxBAAMAAAfACBNb3J0YWwzMgQADAAAIAAgTW9ydGFsMzMEAAwAACEAIE1vcnRhbDM0BAAMAAAiACBNb3J0YWwzNQQADAAAIwAgTW9ydGFsMzYEAAwAACQAIE1vcnRhbDM3BAAMAAAlACBNb3J0YWwzOAQADAAAJgAgTW9ydGFsMzkEAAwAACcAIE1vcnRhbDQwBAAMAAAoACBNb3J0YWw0MQQADAAAKQAgTW9ydGFsNDIEAAwAACoAIE1vcnRhbDQzBAAMAAArACBNb3J0YWw0NAQADAAALAAgTW9ydGFsNDUEAAwAAC0AIE1vcnRhbDQ2BAAMAAAuACBNb3J0YWw0NwQADAAALwAgTW9ydGFsNDgEAAwAADAAIE1vcnRhbDQ5BAAMAAAxACBNb3J0YWw1MAQADAAAMgAgTW9ydGFsNTEEAAwAADMAIE1vcnRhbDUyBAAMAAA0ACBNb3J0YWw1MwQADAAANQAgTW9ydGFsNTQEAAwAADYAIE1vcnRhbDU1BAAMAAA3ACBNb3J0YWw1NgQADAAAOAAgTW9ydGFsNTcEAAwAADkAIE1vcnRhbDU4BAAMAAA6ACBNb3J0YWw1OQQADAAAOwAgTW9ydGFsNjAEAAwAADwAIE1vcnRhbDYxBAAMAAA9ACBNb3J0YWw2MgQADAAAPgAgTW9ydGFsNjMEAAwAAD8AIE1vcnRhbDY0BAAMAABAACBNb3J0YWw2NQQADAAAQQAgTW9ydGFsNjYEAAwAAEIAIE1vcnRhbDY3BAAMAABDACBNb3J0YWw2OAQADAAARAAgTW9ydGFsNjkEAAwAAEUAIE1vcnRhbDcwBAAMAABGACBNb3J0YWw3MQQADAAARwAgTW9ydGFsNzIEAAwAAEgAIE1vcnRhbDczBAAMAABJACBNb3J0YWw3NAQADAAASgAgTW9ydGFsNzUEAAwAAEsAIE1vcnRhbDc2BAAMAABMACBNb3J0YWw3NwQADAAATQAgTW9ydGFsNzgEAAwAAE4AIE1vcnRhbDc5BAAMAABPACBNb3J0YWw4MAQADAAAUAAgTW9ydGFsODEEAAwAAFEAIE1vcnRhbDgyBAAMAABSACBNb3J0YWw4MwQADAAAUwAgTW9ydGFsODQEAAwAAFQAIE1vcnRhbDg1BAAMAABVACBNb3J0YWw4NgQADAAAVgAgTW9ydGFsODcEAAwAAFcAIE1vcnRhbDg4BAAMAABYACBNb3J0YWw4OQQADAAAWQAgTW9ydGFsOTAEAAwAAFoAIE1vcnRhbDkxBAAMAABbACBNb3J0YWw5MgQADAAAXAAgTW9ydGFsOTMEAAwAAF0AIE1vcnRhbDk0BAAMAABeACBNb3J0YWw5NQQADAAAXwAgTW9ydGFsOTYEAAwAAGAAIE1vcnRhbDk3BAAMAABhACBNb3J0YWw5OAQADAAAYgAgTW9ydGFsOTkEAAwAAGMAJE1vcnRhbDEwMAQADAAAZAAkTW9ydGFsMTAxBAAMAABlACRNb3J0YWwxMDIEAAwAAGYAJE1vcnRhbDEwMwQADAAAZwAkTW9ydGFsMTA0BAAMAABoACRNb3J0YWwxMDUEAAwAAGkAJE1vcnRhbDEwNgQADAAAagAkTW9ydGFsMTA3BAAMAABrACRNb3J0YWwxMDgEAAwAAGwAJE1vcnRhbDEwOQQADAAAbQAkTW9ydGFsMTEwBAAMAABuACRNb3J0YWwxMTEEAAwAAG8AJE1vcnRhbDExMgQADAAAcAAkTW9ydGFsMTEzBAAMAABxACRNb3J0YWwxMTQEAAwAAHIAJE1vcnRhbDExNQQADAAAcwAkTW9ydGFsMTE2BAAMAAB0ACRNb3J0YWwxMTcEAAwAAHUAJE1vcnRhbDExOAQADAAAdgAkTW9ydGFsMTE5BAAMAAB3ACRNb3J0YWwxMjAEAAwAAHgAJE1vcnRhbDEyMQQADAAAeQAkTW9ydGFsMTIyBAAMAAB6ACRNb3J0YWwxMjMEAAwAAHsAJE1vcnRhbDEyNAQADAAAfAAkTW9ydGFsMTI1BAAMAAB9ACRNb3J0YWwxMjYEAAwAAH4AJE1vcnRhbDEyNwQADAAAfwAkTW9ydGFsMTI4BAAMAACAACRNb3J0YWwxMjkEAAwAAIEAJE1vcnRhbDEzMAQADAAAggAkTW9ydGFsMTMxBAAMAACDACRNb3J0YWwxMzIEAAwAAIQAJE1vcnRhbDEzMwQADAAAhQAkTW9ydGFsMTM0BAAMAACGACRNb3J0YWwxMzUEAAwAAIcAJE1vcnRhbDEzNgQADAAAiAAkTW9ydGFsMTM3BAAMAACJACRNb3J0YWwxMzgEAAwAAIoAJE1vcnRhbDEzOQQADAAAiwAkTW9ydGFsMTQwBAAMAACMACRNb3J0YWwxNDEEAAwAAI0AJE1vcnRhbDE0MgQADAAAjgAkTW9ydGFsMTQzBAAMAACPACRNb3J0YWwxNDQEAAwAAJAAJE1vcnRhbDE0NQQADAAAkQAkTW9ydGFsMTQ2BAAMAACSACRNb3J0YWwxNDcEAAwAAJMAJE1vcnRhbDE0OAQADAAAlAAkTW9ydGFsMTQ5BAAMAACVACRNb3J0YWwxNTAEAAwAAJYAJE1vcnRhbDE1MQQADAAAlwAkTW9ydGFsMTUyBAAMAACYACRNb3J0YWwxNTMEAAwAAJkAJE1vcnRhbDE1NAQADAAAmgAkTW9ydGFsMTU1BAAMAACbACRNb3J0YWwxNTYEAAwAAJwAJE1vcnRhbDE1NwQADAAAnQAkTW9ydGFsMTU4BAAMAACeACRNb3J0YWwxNTkEAAwAAJ8AJE1vcnRhbDE2MAQADAAAoAAkTW9ydGFsMTYxBAAMAAChACRNb3J0YWwxNjIEAAwAAKIAJE1vcnRhbDE2MwQADAAAowAkTW9ydGFsMTY0BAAMAACkACRNb3J0YWwxNjUEAAwAAKUAJE1vcnRhbDE2NgQADAAApgAkTW9ydGFsMTY3BAAMAACnACRNb3J0YWwxNjgEAAwAAKgAJE1vcnRhbDE2OQQADAAAqQAkTW9ydGFsMTcwBAAMAACqACRNb3J0YWwxNzEEAAwAAKsAJE1vcnRhbDE3MgQADAAArAAkTW9ydGFsMTczBAAMAACtACRNb3J0YWwxNzQEAAwAAK4AJE1vcnRhbDE3NQQADAAArwAkTW9ydGFsMTc2BAAMAACwACRNb3J0YWwxNzcEAAwAALEAJE1vcnRhbDE3OAQADAAAsgAkTW9ydGFsMTc5BAAMAACzACRNb3J0YWwxODAEAAwAALQAJE1vcnRhbDE4MQQADAAAtQAkTW9ydGFsMTgyBAAMAAC2ACRNb3J0YWwxODMEAAwAALcAJE1vcnRhbDE4NAQADAAAuAAkTW9ydGFsMTg1BAAMAAC5ACRNb3J0YWwxODYEAAwAALoAJE1vcnRhbDE4NwQADAAAuwAkTW9ydGFsMTg4BAAMAAC8ACRNb3J0YWwxODkEAAwAAL0AJE1vcnRhbDE5MAQADAAAvgAkTW9ydGFsMTkxBAAMAAC/ACRNb3J0YWwxOTIEAAwAAMAAJE1vcnRhbDE5MwQADAAAwQAkTW9ydGFsMTk0BAAMAADCACRNb3J0YWwxOTUEAAwAAMMAJE1vcnRhbDE5NgQADAAAxAAkTW9ydGFsMTk3BAAMAADFACRNb3J0YWwxOTgEAAwAAMYAJE1vcnRhbDE5OQQADAAAxwAkTW9ydGFsMjAwBAAMAADIACRNb3J0YWwyMDEEAAwAAMkAJE1vcnRhbDIwMgQADAAAygAkTW9ydGFsMjAzBAAMAADLACRNb3J0YWwyMDQEAAwAAMwAJE1vcnRhbDIwNQQADAAAzQAkTW9ydGFsMjA2BAAMAADOACRNb3J0YWwyMDcEAAwAAM8AJE1vcnRhbDIwOAQADAAA0AAkTW9ydGFsMjA5BAAMAADRACRNb3J0YWwyMTAEAAwAANIAJE1vcnRhbDIxMQQADAAA0wAkTW9ydGFsMjEyBAAMAADUACRNb3J0YWwyMTMEAAwAANUAJE1vcnRhbDIxNAQADAAA1gAkTW9ydGFsMjE1BAAMAADXACRNb3J0YWwyMTYEAAwAANgAJE1vcnRhbDIxNwQADAAA2QAkTW9ydGFsMjE4BAAMAADaACRNb3J0YWwyMTkEAAwAANsAJE1vcnRhbDIyMAQADAAA3AAkTW9ydGFsMjIxBAAMAADdACRNb3J0YWwyMjIEAAwAAN4AJE1vcnRhbDIyMwQADAAA3wAkTW9ydGFsMjI0BAAMAADgACRNb3J0YWwyMjUEAAwAAOEAJE1vcnRhbDIyNgQADAAA4gAkTW9ydGFsMjI3BAAMAADjACRNb3J0YWwyMjgEAAwAAOQAJE1vcnRhbDIyOQQADAAA5QAkTW9ydGFsMjMwBAAMAADmACRNb3J0YWwyMzEEAAwAAOcAJE1vcnRhbDIzMgQADAAA6AAkTW9ydGFsMjMzBAAMAADpACRNb3J0YWwyMzQEAAwAAOoAJE1vcnRhbDIzNQQADAAA6wAkTW9ydGFsMjM2BAAMAADsACRNb3J0YWwyMzcEAAwAAO0AJE1vcnRhbDIzOAQADAAA7gAkTW9ydGFsMjM5BAAMAADvACRNb3J0YWwyNDAEAAwAAPAAJE1vcnRhbDI0MQQADAAA8QAkTW9ydGFsMjQyBAAMAADyACRNb3J0YWwyNDMEAAwAAPMAJE1vcnRhbDI0NAQADAAA9AAkTW9ydGFsMjQ1BAAMAAD1ACRNb3J0YWwyNDYEAAwAAPYAJE1vcnRhbDI0NwQADAAA9wAkTW9ydGFsMjQ4BAAMAAD4ACRNb3J0YWwyNDkEAAwAAPkAJE1vcnRhbDI1MAQADAAA+gAkTW9ydGFsMjUxBAAMAAD7ACRNb3J0YWwyNTIEAAwAAPwAJE1vcnRhbDI1MwQADAAA/QAkTW9ydGFsMjU0BAAMAAD+ACRNb3J0YWwyNTUEAAwAAP8AALUDEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9ucyxjaGVja19ub25jZShDaGVja05vbmNlBARUAAAEAGABIFQ6Ok5vbmNlAAC5AxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMwY2hlY2tfd2VpZ2h0LENoZWNrV2VpZ2h0BARUAAAAAL0DCGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudGBDaGFyZ2VUcmFuc2FjdGlvblBheW1lbnQEBFQAAAQA+AEwQmFsYW5jZU9mPFQ+AADBAwyMcGFsbGV0X2J1bGxldGluX3RyYW5zYWN0aW9uX3N0b3JhZ2UkZXh0ZW5zaW9uXFZhbGlkYXRlQXV0aG9yaXplZENhbGxzDARUAARJAARMAAAAAMUDDIxwYWxsZXRfYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZSRleHRlbnNpb25YQWxsb3dhbmNlQmFzZWRQcmlvcml0eQgEVAAEQgAAAADJAwh0ZnJhbWVfbWV0YWRhdGFfaGFzaF9leHRlbnNpb25EQ2hlY2tNZXRhZGF0YUhhc2gEBFQAAAQBEG1vZGXNAwEQTW9kZQAAzQMIdGZyYW1lX21ldGFkYXRhX2hhc2hfZXh0ZW5zaW9uEE1vZGUAAQggRGlzYWJsZWQAAAAcRW5hYmxlZAABAADRAwQYT3B0aW9uBARUAQgBCBBOb25lAAAAEFNvbWUEAAgAAAEAANUDCDBmcmFtZV9zeXN0ZW0sQWNjb3VudEluZm8IFE5vbmNlATgsQWNjb3VudERhdGEB2QMAFAEUbm9uY2U4ARROb25jZQABJGNvbnN1bWVyczgBIFJlZkNvdW50AAEkcHJvdmlkZXJzOAEgUmVmQ291bnQAASxzdWZmaWNpZW50czgBIFJlZkNvdW50AAEQZGF0YdkDASxBY2NvdW50RGF0YQAA2QMMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxBY2NvdW50RGF0YQQcQmFsYW5jZQH8ABABEGZyZWX8ARxCYWxhbmNlAAEgcmVzZXJ2ZWT8ARxCYWxhbmNlAAEYZnJvemVu/AEcQmFsYW5jZQABFGZsYWdz3QMBKEV4dHJhRmxhZ3MAAN0DDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMoRXh0cmFGbGFncwAABAD8ARB1MTI4AADhAww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUASkBAAwBGG5vcm1hbCkBAQRUAAEsb3BlcmF0aW9uYWwpAQEEVAABJG1hbmRhdG9yeSkBAQRUAADlAwAAAukDAOkDCDBmcmFtZV9zeXN0ZW0sRXZlbnRSZWNvcmQIBEUB7QMEVAE8AAwBFHBoYXNlhQQBFFBoYXNlAAEUZXZlbnTtAwEERQABGHRvcGljc4kEARhWZWM8VD4AAO0DCFhidWxsZXRpbl9wYXNlb19ydW50aW1lMFJ1bnRpbWVFdmVudAABQBhTeXN0ZW0EAPEDAXBmcmFtZV9zeXN0ZW06OkV2ZW50PFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAGQQBvGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW06OkV2ZW50PFJ1bnRpbWU+AAEAHFV0aWxpdHkEAB0EAVRwYWxsZXRfdXRpbGl0eTo6RXZlbnQABgBQTXVsdGlCbG9ja01pZ3JhdGlvbnMEACUEAYRwYWxsZXRfbWlncmF0aW9uczo6RXZlbnQ8UnVudGltZT4ABwAgQmFsYW5jZXMEACkEAXxwYWxsZXRfYmFsYW5jZXM6OkV2ZW50PFJ1bnRpbWU+AAoASFRyYW5zYWN0aW9uUGF5bWVudAQARQQBqHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50OjpFdmVudDxSdW50aW1lPgALAEhTa2lwRmVlbGVzc1BheW1lbnQEAEkEAaxwYWxsZXRfc2tpcF9mZWVsZXNzX3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+AAwASFRyYW5zYWN0aW9uU3RvcmFnZQQATQQBzHBhbGxldF9idWxsZXRpbl90cmFuc2FjdGlvbl9zdG9yYWdlOjpFdmVudDxSdW50aW1lPgAoACxEYXRhUmVuZXdhbAQAUQQBsHBhbGxldF9idWxsZXRpbl9kYXRhX3JlbmV3YWw6OkV2ZW50PFJ1bnRpbWU+ACoARENvbGxhdG9yU2VsZWN0aW9uBABVBAGkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbjo6RXZlbnQ8UnVudGltZT4AFQAcU2Vzc2lvbgQAWQQBeHBhbGxldF9zZXNzaW9uOjpFdmVudDxSdW50aW1lPgAWACRYY21wUXVldWUEAF0EAaRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlOjpFdmVudDxSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQAYQQBaHBhbGxldF94Y206OkV2ZW50PFJ1bnRpbWU+AB8AKEN1bXVsdXNYY20EAHEEAYhjdW11bHVzX3BhbGxldF94Y206OkV2ZW50PFJ1bnRpbWU+ACAAME1lc3NhZ2VRdWV1ZQQAdQQBkHBhbGxldF9tZXNzYWdlX3F1ZXVlOjpFdmVudDxSdW50aW1lPgAiABBTdWRvBAB9BAFscGFsbGV0X3N1ZG86OkV2ZW50PFJ1bnRpbWU+AGQAAPEDDDBmcmFtZV9zeXN0ZW0YcGFsbGV0FEV2ZW50BARUAAEgQEV4dHJpbnNpY1N1Y2Nlc3MEATRkaXNwYXRjaF9pbmZv9QMBRERpc3BhdGNoRXZlbnRJbmZvAAAEkEFuIGV4dHJpbnNpYyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LjxFeHRyaW5zaWNGYWlsZWQIAThkaXNwYXRjaF9lcnJvcgEEATREaXNwYXRjaEVycm9yAAE0ZGlzcGF0Y2hfaW5mb/UDAUREaXNwYXRjaEV2ZW50SW5mbwABBFBBbiBleHRyaW5zaWMgZmFpbGVkLixDb2RlVXBkYXRlZAQBEGhhc2g8ARxUOjpIYXNoAAIE0GA6Y29kZWAgd2FzIHVwZGF0ZWQgdG8gdGhlIGNvZGUgd2l0aCB0aGUgZ2l2ZW4gaGFzaC4oTmV3QWNjb3VudAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwRoQSBuZXcgYWNjb3VudCB3YXMgY3JlYXRlZC40S2lsbGVkQWNjb3VudAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABARYQW4gYWNjb3VudCB3YXMgcmVhcGVkLiBSZW1hcmtlZAgBGHNlbmRlcgQBMFQ6OkFjY291bnRJZAABEGhhc2g8ARxUOjpIYXNoAAUEcE9uIG9uLWNoYWluIHJlbWFyayBoYXBwZW5lZC5EVXBncmFkZUF1dGhvcml6ZWQIASRjb2RlX2hhc2g8ARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvbl0BARBib29sAAYEaEFuIHVwZ3JhZGUgd2FzIGF1dGhvcml6ZWQugFJlamVjdGVkSW52YWxpZEF1dGhvcml6ZWRVcGdyYWRlCAEkY29kZV9oYXNoPAEcVDo6SGFzaAABFGVycm9yAQQBNERpc3BhdGNoRXJyb3IABwQRAUFuIGludmFsaWQgYXV0aG9yaXplZCB1cGdyYWRlIHdhcyByZWplY3RlZCB3aGlsZSB0cnlpbmcgdG8gYXBwbHkgaXQuBHBFdmVudCBmb3IgdGhlIFN5c3RlbSBwYWxsZXQu9QMIMGZyYW1lX3N5c3RlbUREaXNwYXRjaEV2ZW50SW5mbwAADAEYd2VpZ2h0KQEBGFdlaWdodAABFGNsYXNz+QMBNERpc3BhdGNoQ2xhc3MAASBwYXlzX2ZlZf0DARBQYXlzAAD5Aww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaDREaXNwYXRjaENsYXNzAAEMGE5vcm1hbAAAACxPcGVyYXRpb25hbAABACRNYW5kYXRvcnkAAgAA/QMMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gQUGF5cwABCAxZZXMAAAAITm8AAQAAAQQIKHNwX3J1bnRpbWU0RGlzcGF0Y2hFcnJvcgABPBRPdGhlcgAAADBDYW5ub3RMb29rdXAAAQAkQmFkT3JpZ2luAAIAGE1vZHVsZQQABQQBLE1vZHVsZUVycm9yAAMARENvbnN1bWVyUmVtYWluaW5nAAQALE5vUHJvdmlkZXJzAAUAQFRvb01hbnlDb25zdW1lcnMABgAUVG9rZW4EAAkEAShUb2tlbkVycm9yAAcAKEFyaXRobWV0aWMEAA0EATxBcml0aG1ldGljRXJyb3IACAA0VHJhbnNhY3Rpb25hbAQAEQQBSFRyYW5zYWN0aW9uYWxFcnJvcgAJACRFeGhhdXN0ZWQACgAoQ29ycnVwdGlvbgALACxVbmF2YWlsYWJsZQAMADhSb290Tm90QWxsb3dlZAANABBUcmllBAAVBAEkVHJpZUVycm9yAA4AAAUECChzcF9ydW50aW1lLE1vZHVsZUVycm9yAAAIARRpbmRleAwBCHU4AAEUZXJyb3JwAYxbdTg7IE1BWF9NT0RVTEVfRVJST1JfRU5DT0RFRF9TSVpFXQAACQQIKHNwX3J1bnRpbWUoVG9rZW5FcnJvcgABKEBGdW5kc1VuYXZhaWxhYmxlAAAAME9ubHlQcm92aWRlcgABADBCZWxvd01pbmltdW0AAgAwQ2Fubm90Q3JlYXRlAAMAMFVua25vd25Bc3NldAAEABhGcm96ZW4ABQAsVW5zdXBwb3J0ZWQABgBAQ2Fubm90Q3JlYXRlSG9sZAAHADROb3RFeHBlbmRhYmxlAAgAHEJsb2NrZWQACQAADQQINHNwX2FyaXRobWV0aWM8QXJpdGhtZXRpY0Vycm9yAAEMJFVuZGVyZmxvdwAAACBPdmVyZmxvdwABADhEaXZpc2lvbkJ5WmVybwACAAARBAgoc3BfcnVudGltZUhUcmFuc2FjdGlvbmFsRXJyb3IAAQgwTGltaXRSZWFjaGVkAAAAHE5vTGF5ZXIAAQAAFQQMKHNwX3J1bnRpbWUwcHJvdmluZ190cmllJFRyaWVFcnJvcgABOEBJbnZhbGlkU3RhdGVSb290AAAASEluY29tcGxldGVEYXRhYmFzZQABAFBWYWx1ZUF0SW5jb21wbGV0ZUtleQACADBEZWNvZGVyRXJyb3IAAwAsSW52YWxpZEhhc2gABAAwRHVwbGljYXRlS2V5AAUAOEV4dHJhbmVvdXNOb2RlAAYAPEV4dHJhbmVvdXNWYWx1ZQAHAFxFeHRyYW5lb3VzSGFzaFJlZmVyZW5jZQAIAFRJbnZhbGlkQ2hpbGRSZWZlcmVuY2UACQA0VmFsdWVNaXNtYXRjaAAKADxJbmNvbXBsZXRlUHJvb2YACwAwUm9vdE1pc21hdGNoAAwALERlY29kZUVycm9yAA0AABkEDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFdmVudAQEVAABGGBWYWxpZGF0aW9uRnVuY3Rpb25TdG9yZWQAAATQVGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gaGFzIGJlZW4gc2NoZWR1bGVkIHRvIGFwcGx5LmRWYWxpZGF0aW9uRnVuY3Rpb25BcHBsaWVkBAFUcmVsYXlfY2hhaW5fYmxvY2tfbnVtOAFUUmVsYXlDaGFpbkJsb2NrTnVtYmVyAAEERQFUaGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3YXMgYXBwbGllZCBhcyBvZiB0aGUgY29udGFpbmVkIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlci5sVmFsaWRhdGlvbkZ1bmN0aW9uRGlzY2FyZGVkAAIEsFRoZSByZWxheS1jaGFpbiBhYm9ydGVkIHRoZSB1cGdyYWRlIHByb2Nlc3MuYERvd253YXJkTWVzc2FnZXNSZWNlaXZlZAQBFGNvdW50OAEMdTMyAAMEAQFTb21lIGRvd253YXJkIG1lc3NhZ2VzIGhhdmUgYmVlbiByZWNlaXZlZCBhbmQgd2lsbCBiZSBwcm9jZXNzZWQuZERvd253YXJkTWVzc2FnZXNQcm9jZXNzZWQIASx3ZWlnaHRfdXNlZCkBARhXZWlnaHQAASBkbXFfaGVhZDwBRHJlbGF5X2NoYWluOjpIYXNoAAQE4ERvd253YXJkIG1lc3NhZ2VzIHdlcmUgcHJvY2Vzc2VkIHVzaW5nIHRoZSBnaXZlbiB3ZWlnaHQuRFVwd2FyZE1lc3NhZ2VTZW50BAEwbWVzc2FnZV9oYXNo0QMBPE9wdGlvbjxYY21IYXNoPgAFBLhBbiB1cHdhcmQgbWVzc2FnZSB3YXMgc2VudCB0byB0aGUgcmVsYXkgY2hhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0HQQMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFdmVudAABIEBCYXRjaEludGVycnVwdGVkCAEUaW5kZXg4AQx1MzIAARRlcnJvcgEEATREaXNwYXRjaEVycm9yAAAIVQFCYXRjaCBvZiBkaXNwYXRjaGVzIGRpZCBub3QgY29tcGxldGUgZnVsbHkuIEluZGV4IG9mIGZpcnN0IGZhaWxpbmcgZGlzcGF0Y2ggZ2l2ZW4sIGFzSHdlbGwgYXMgdGhlIGVycm9yLjhCYXRjaENvbXBsZXRlZAABBMhCYXRjaCBvZiBkaXNwYXRjaGVzIGNvbXBsZXRlZCBmdWxseSB3aXRoIG5vIGVycm9yLmBCYXRjaENvbXBsZXRlZFdpdGhFcnJvcnMAAgS0QmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgYnV0IGhhcyBlcnJvcnMuNEl0ZW1Db21wbGV0ZWQAAwQdAUEgc2luZ2xlIGl0ZW0gd2l0aGluIGEgQmF0Y2ggb2YgZGlzcGF0Y2hlcyBoYXMgY29tcGxldGVkIHdpdGggbm8gZXJyb3IuKEl0ZW1GYWlsZWQEARRlcnJvcgEEATREaXNwYXRjaEVycm9yAAQEEQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIGVycm9yLjBEaXNwYXRjaGVkQXMEARhyZXN1bHQhBAE4RGlzcGF0Y2hSZXN1bHQABQRYQSBjYWxsIHdhcyBkaXNwYXRjaGVkLkRJZkVsc2VNYWluU3VjY2VzcwAGBGRNYWluIGNhbGwgd2FzIGRpc3BhdGNoZWQuUElmRWxzZUZhbGxiYWNrQ2FsbGVkBAEobWFpbl9lcnJvcgEEATREaXNwYXRjaEVycm9yAAcEhFRoZSBmYWxsYmFjayBjYWxsIHdhcyBkaXNwYXRjaGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldCEEBBhSZXN1bHQIBFQBEARFAQEEAQgIT2sEABAAAAAADEVycgQAAQQAAAEAACUEDERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQURXZlbnQEBFQAASA4VXBncmFkZVN0YXJ0ZWQEAShtaWdyYXRpb25zOAEMdTMyENBUaGUgbnVtYmVyIG9mIG1pZ3JhdGlvbnMgdGhhdCB0aGlzIHVwZ3JhZGUgY29udGFpbnMuAEEBVGhpcyBjYW4gYmUgdXNlZCB0byBkZXNpZ24gYSBwcm9ncmVzcyBpbmRpY2F0b3IgaW4gY29tYmluYXRpb24gd2l0aCBjb3VudGluZyB0aGXMYE1pZ3JhdGlvbkNvbXBsZXRlZGAgYW5kIGBNaWdyYXRpb25Ta2lwcGVkYCBldmVudHMuAAxoQSBSdW50aW1lIHVwZ3JhZGUgc3RhcnRlZC4A+El0cyBlbmQgaXMgaW5kaWNhdGVkIGJ5IGBVcGdyYWRlQ29tcGxldGVkYCBvciBgVXBncmFkZUZhaWxlZGAuQFVwZ3JhZGVDb21wbGV0ZWQAAQyYVGhlIGN1cnJlbnQgcnVudGltZSB1cGdyYWRlIGNvbXBsZXRlZC4AHQFUaGlzIGltcGxpZXMgdGhhdCBhbGwgb2YgaXRzIG1pZ3JhdGlvbnMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBhcyB3ZWxsLjRVcGdyYWRlRmFpbGVkAAIMXFJ1bnRpbWUgdXBncmFkZSBmYWlsZWQuAOhUaGlzIGlzIHZlcnkgYmFkIGFuZCB3aWxsIHJlcXVpcmUgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24uQE1pZ3JhdGlvblNraXBwZWQEARRpbmRleDgBDHUzMgQpAVRoZSBpbmRleCBvZiB0aGUgc2tpcHBlZCBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuAwQJAUEgbWlncmF0aW9uIHdhcyBza2lwcGVkIHNpbmNlIGl0IHdhcyBhbHJlYWR5IGV4ZWN1dGVkIGluIHRoZSBwYXN0LkRNaWdyYXRpb25BZHZhbmNlZAgBFGluZGV4OAEMdTMyBAkBVGhlIGluZGV4IG9mIHRoZSBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuARB0b29rOAFEQmxvY2tOdW1iZXJGb3I8VD4E1FRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgdGhpcyBtaWdyYXRpb24gdG9vayBzbyBmYXIuBARcQSBtaWdyYXRpb24gcHJvZ3Jlc3NlZC5ITWlncmF0aW9uQ29tcGxldGVkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4FBFhBIE1pZ3JhdGlvbiBjb21wbGV0ZWQuPE1pZ3JhdGlvbkZhaWxlZAgBFGluZGV4OAEMdTMyBAkBVGhlIGluZGV4IG9mIHRoZSBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuARB0b29rOAFEQmxvY2tOdW1iZXJGb3I8VD4E1FRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgdGhpcyBtaWdyYXRpb24gdG9vayBzbyBmYXIuBgxMQSBNaWdyYXRpb24gZmFpbGVkLgBNAVRoaXMgaW1wbGllcyB0aGF0IHRoZSB3aG9sZSB1cGdyYWRlIGZhaWxlZCBhbmQgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcmVxdWlyZWQuPEhpc3RvcmljQ2xlYXJlZAQBLG5leHRfY3Vyc29yVQEBPE9wdGlvbjxWZWM8dTg+PgToU2hvdWxkIGJlIHBhc3NlZCB0byBgY2xlYXJfaGlzdG9yaWNgIGluIGEgc3VjY2Vzc2l2ZSBjYWxsLgcEyFRoZSBzZXQgb2YgaGlzdG9yaWNhbCBtaWdyYXRpb25zIGhhcyBiZWVuIGNsZWFyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0KQQMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXZlbnQIBFQABEkAAXgcRW5kb3dlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAATBmcmVlX2JhbGFuY2X8AShUOjpCYWxhbmNlAAAEuEFuIGFjY291bnQgd2FzIGNyZWF0ZWQgd2l0aCBzb21lIGZyZWUgYmFsYW5jZS4gRHVzdExvc3QIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQABCD0BQW4gYWNjb3VudCB3YXMgcmVtb3ZlZCB3aG9zZSBiYWxhbmNlIHdhcyBub24temVybyBidXQgYmVsb3cgRXhpc3RlbnRpYWxEZXBvc2l0LHhyZXN1bHRpbmcgaW4gYW4gb3V0cmlnaHQgbG9zcy4gVHJhbnNmZXIMARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlAAIETFRyYW5zZmVyIHN1Y2NlZWRlZC4oQmFsYW5jZVNldAgBDHdobwQBMFQ6OkFjY291bnRJZAABEGZyZWX8AShUOjpCYWxhbmNlAAMEaEEgYmFsYW5jZSB3YXMgc2V0IGJ5IHJvb3QuIFJlc2VydmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAEBOBTb21lIGJhbGFuY2Ugd2FzIHJlc2VydmVkIChtb3ZlZCBmcm9tIGZyZWUgdG8gcmVzZXJ2ZWQpLihVbnJlc2VydmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAFBOhTb21lIGJhbGFuY2Ugd2FzIHVucmVzZXJ2ZWQgKG1vdmVkIGZyb20gcmVzZXJ2ZWQgdG8gZnJlZSkuSFJlc2VydmVSZXBhdHJpYXRlZBABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UAAUhkZXN0aW5hdGlvbl9zdGF0dXMtBAEYU3RhdHVzAAYITQFTb21lIGJhbGFuY2Ugd2FzIG1vdmVkIGZyb20gdGhlIHJlc2VydmUgb2YgdGhlIGZpcnN0IGFjY291bnQgdG8gdGhlIHNlY29uZCBhY2NvdW50LthGaW5hbCBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIGRlc3RpbmF0aW9uIGJhbGFuY2UgdHlwZS4cRGVwb3NpdAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UABwTYU29tZSBhbW91bnQgd2FzIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuIFdpdGhkcmF3CAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAIBB0BU29tZSBhbW91bnQgd2FzIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4cU2xhc2hlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UACQQBAVNvbWUgYW1vdW50IHdhcyByZW1vdmVkIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIG1pc2JlaGF2aW9yKS4YTWludGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAKBJxTb21lIGFtb3VudCB3YXMgbWludGVkIGludG8gYW4gYWNjb3VudC4wTWludGVkQ3JlZGl0BAEYYW1vdW50/AEoVDo6QmFsYW5jZQALBOBTb21lIGNyZWRpdCB3YXMgYmFsYW5jZWQgYW5kIGFkZGVkIHRvIHRoZSBUb3RhbElzc3VhbmNlLhhCdXJuZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlAAwEnFNvbWUgYW1vdW50IHdhcyBidXJuZWQgZnJvbSBhbiBhY2NvdW50LihCdXJuZWREZWJ0BAEYYW1vdW50/AEoVDo6QmFsYW5jZQANBMxTb21lIGRlYnQgaGFzIGJlZW4gZHJvcHBlZCBmcm9tIHRoZSBUb3RhbCBJc3N1YW5jZS4kU3VzcGVuZGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAOBBUBU29tZSBhbW91bnQgd2FzIHN1c3BlbmRlZCBmcm9tIGFuIGFjY291bnQgKGl0IGNhbiBiZSByZXN0b3JlZCBsYXRlcikuIFJlc3RvcmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAPBKRTb21lIGFtb3VudCB3YXMgcmVzdG9yZWQgaW50byBhbiBhY2NvdW50LiBVcGdyYWRlZAQBDHdobwQBMFQ6OkFjY291bnRJZAAQBGBBbiBhY2NvdW50IHdhcyB1cGdyYWRlZC4YSXNzdWVkBAEYYW1vdW50/AEoVDo6QmFsYW5jZQARBC0BVG90YWwgaXNzdWFuY2Ugd2FzIGluY3JlYXNlZCBieSBgYW1vdW50YCwgY3JlYXRpbmcgYSBjcmVkaXQgdG8gYmUgYmFsYW5jZWQuJFJlc2NpbmRlZAQBGGFtb3VudPwBKFQ6OkJhbGFuY2UAEgQlAVRvdGFsIGlzc3VhbmNlIHdhcyBkZWNyZWFzZWQgYnkgYGFtb3VudGAsIGNyZWF0aW5nIGEgZGVidCB0byBiZSBiYWxhbmNlZC4YTG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQATBGBTb21lIGJhbGFuY2Ugd2FzIGxvY2tlZC4gVW5sb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlABQEaFNvbWUgYmFsYW5jZSB3YXMgdW5sb2NrZWQuGEZyb3plbggBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UAFQRgU29tZSBiYWxhbmNlIHdhcyBmcm96ZW4uGFRoYXdlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UAFgRgU29tZSBiYWxhbmNlIHdhcyB0aGF3ZWQuTFRvdGFsSXNzdWFuY2VGb3JjZWQIAQxvbGT8AShUOjpCYWxhbmNlAAEMbmV3/AEoVDo6QmFsYW5jZQAXBKxUaGUgYFRvdGFsSXNzdWFuY2VgIHdhcyBmb3JjZWZ1bGx5IGNoYW5nZWQuEEhlbGQMARhyZWFzb24xBAFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlABgEgFNvbWUgYmFsYW5jZSB3YXMgcGxhY2VkIG9uIGhvbGQuKEJ1cm5lZEhlbGQMARhyZWFzb24xBAFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlABkEoEhlbGQgYmFsYW5jZSB3YXMgYnVybmVkIGZyb20gYW4gYWNjb3VudC44VHJhbnNmZXJPbkhvbGQQARhyZWFzb24xBAFQVDo6UnVudGltZUhvbGRSZWFzb24AARhzb3VyY2UEATBUOjpBY2NvdW50SWQAARBkZXN0BAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAaBBUBQSB0cmFuc2ZlciBvZiBgYW1vdW50YCBvbiBob2xkIGZyb20gYHNvdXJjZWAgdG8gYGRlc3RgIHdhcyBpbml0aWF0ZWQuPFRyYW5zZmVyQW5kSG9sZBABGHJlYXNvbjEEAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABEGRlc3QEATBUOjpBY2NvdW50SWQAASx0cmFuc2ZlcnJlZPwBKFQ6OkJhbGFuY2UAGwQJAVRoZSBgdHJhbnNmZXJyZWRgIGJhbGFuY2UgaXMgcGxhY2VkIG9uIGhvbGQgYXQgdGhlIGBkZXN0YCBhY2NvdW50LiBSZWxlYXNlZAwBGHJlYXNvbjEEAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UAHASQU29tZSBiYWxhbmNlIHdhcyByZWxlYXNlZCBmcm9tIGhvbGQuKFVuZXhwZWN0ZWQEAEEEAThVbmV4cGVjdGVkS2luZAAdBLBBbiB1bmV4cGVjdGVkL2RlZmVuc2l2ZSBldmVudCB3YXMgdHJpZ2dlcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldC0EFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYzRCYWxhbmNlU3RhdHVzAAEIEEZyZWUAAAAgUmVzZXJ2ZWQAAQAAMQQIWGJ1bGxldGluX3Bhc2VvX3J1bnRpbWVEUnVudGltZUhvbGRSZWFzb24AAQxIVHJhbnNhY3Rpb25TdG9yYWdlBAA1BAG8cGFsbGV0X2J1bGxldGluX3RyYW5zYWN0aW9uX3N0b3JhZ2U6OkhvbGRSZWFzb24AKAAcU2Vzc2lvbgQAOQQBaHBhbGxldF9zZXNzaW9uOjpIb2xkUmVhc29uABYALFBvbGthZG90WGNtBAA9BAFYcGFsbGV0X3hjbTo6SG9sZFJlYXNvbgAfAAA1BAyMcGFsbGV0X2J1bGxldGluX3RyYW5zYWN0aW9uX3N0b3JhZ2UYcGFsbGV0KEhvbGRSZWFzb24AAQQ4U3RvcmFnZUZlZUhvbGQAAAAAOQQMOHBhbGxldF9zZXNzaW9uGHBhbGxldChIb2xkUmVhc29uAAEEEEtleXMAAAAAPQQMKHBhbGxldF94Y20YcGFsbGV0KEhvbGRSZWFzb24AAQQ4QXV0aG9yaXplQWxpYXMAAAAAQQQMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQ4VW5leHBlY3RlZEtpbmQAAQg4QmFsYW5jZVVwZGF0ZWQAAABURmFpbGVkVG9NdXRhdGVBY2NvdW50AAEAAEUEDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQRIVHJhbnNhY3Rpb25GZWVQYWlkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEoYWN0dWFsX2ZlZfwBMEJhbGFuY2VPZjxUPgABDHRpcPwBMEJhbGFuY2VPZjxUPgAACFkBQSB0cmFuc2FjdGlvbiBmZWUgYGFjdHVhbF9mZWVgLCBvZiB3aGljaCBgdGlwYCB3YXMgYWRkZWQgdG8gdGhlIG1pbmltdW0gaW5jbHVzaW9uIGZlZSxcaGFzIGJlZW4gcGFpZCBieSBgd2hvYC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRJBAxscGFsbGV0X3NraXBfZmVlbGVzc19wYXltZW50GHBhbGxldBRFdmVudAQEVAABBChGZWVTa2lwcGVkBAEYb3JpZ2luyAHAPFQ6OlJ1bnRpbWVPcmlnaW4gYXMgT3JpZ2luVHJhaXQ+OjpQYWxsZXRzT3JpZ2luAAAEeEEgdHJhbnNhY3Rpb24gZmVlIHdhcyBza2lwcGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldE0EDIxwYWxsZXRfYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZRhwYWxsZXQURXZlbnQEBFQAASwYU3RvcmVkDAEUaW5kZXg4AQx1MzIAATBjb250ZW50X2hhc2gIASxDb250ZW50SGFzaAABDGNpZFUBASxPcHRpb248Q2lkPgAABIhTdG9yZWQgZGF0YSB1bmRlciBzcGVjaWZpZWQgaW5kZXguMFByb29mQ2hlY2tlZAABBJxTdG9yYWdlIHByb29mIHdhcyBzdWNjZXNzZnVsbHkgY2hlY2tlZC5EQWNjb3VudEF1dGhvcml6ZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAATB0cmFuc2FjdGlvbnM4AQx1MzIAARRieXRlcygBDHU2NAACCE0BQW4gYWNjb3VudCBgd2hvYCB3YXMgYXV0aG9yaXplZCB0byBzdG9yZSBgYnl0ZXNgIGJ5dGVzIGluIGB0cmFuc2FjdGlvbnNgIGJvb3N0LXRpZXI0dHJhbnNhY3Rpb25zLnRBY2NvdW50QXV0aG9yaXphdGlvblJlZnJlc2hlZAQBDHdobwQBMFQ6OkFjY291bnRJZAADBMRBbiBhdXRob3JpemF0aW9uIGZvciBhY2NvdW50IGB3aG9gIHdhcyByZWZyZXNoZWQuSFByZWltYWdlQXV0aG9yaXplZAgBMGNvbnRlbnRfaGFzaAgBLENvbnRlbnRIYXNoAAEgbWF4X3NpemUoAQx1NjQABAhZAUF1dGhvcml6YXRpb24gd2FzIGdpdmVuIGZvciBhIHByZWltYWdlIG9mIGBjb250ZW50X2hhc2hgIChub3QgZXhjZWVkaW5nIGBtYXhfc2l6ZWApIHRvUGJlIHN0b3JlZCBieSBhbnlvbmUueFByZWltYWdlQXV0aG9yaXphdGlvblJlZnJlc2hlZAQBMGNvbnRlbnRfaGFzaAgBLENvbnRlbnRIYXNoAAUEAQFBbiBhdXRob3JpemF0aW9uIGZvciBhIHByZWltYWdlIG9mIGBjb250ZW50X2hhc2hgIHdhcyByZWZyZXNoZWQuiEV4cGlyZWRBY2NvdW50QXV0aG9yaXphdGlvblJlbW92ZWQEAQx3aG8EATBUOjpBY2NvdW50SWQABgS0QW4gZXhwaXJlZCBhY2NvdW50IGF1dGhvcml6YXRpb24gd2FzIHJlbW92ZWQujEV4cGlyZWRQcmVpbWFnZUF1dGhvcml6YXRpb25SZW1vdmVkBAEwY29udGVudF9oYXNoCAEsQ29udGVudEhhc2gABwS4QW4gZXhwaXJlZCBwcmVpbWFnZSBhdXRob3JpemF0aW9uIHdhcyByZW1vdmVkLjxBdXRob3JpemVyQWRkZWQEAQx3aG8EATBUOjpBY2NvdW50SWQACASwQW4gYXV0aG9yaXplciB3YXMgYWRkZWQgdG8gdGhlIGFsbG93ZWQgbGlzdC5EQXV0aG9yaXplclJlbW92ZWQEAQx3aG8EATBUOjpBY2NvdW50SWQACQT8QW4gYXV0aG9yaXplciB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBhbGxvd2VkIGxpc3QgYnkgdGhlIG1hbmFnZXIuaEV4aGF1c3RlZEF1dGhvcml6ZXJSZW1vdmVkBAEMd2hvBAEwVDo6QWNjb3VudElkAAoEJQFBbiBhdXRob3JpemVyIHdhcyByZW1vdmVkIGZyb20gdGhlIGFsbG93ZWQgbGlzdCBkdWUgdG8gYnVkZ2V0IGV4aGF1c3Rpb24uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0UQQMcHBhbGxldF9idWxsZXRpbl9kYXRhX3JlbmV3YWwYcGFsbGV0FEV2ZW50BARUAAEcHFJlbmV3ZWQIARRpbmRleDgBDHUzMgABMGNvbnRlbnRfaGFzaAgBLENvbnRlbnRIYXNoAAAEjFJlbmV3ZWQgZGF0YSB1bmRlciBzcGVjaWZpZWQgaW5kZXguOFJlbmV3YWxFbmFibGVkDAEwY29udGVudF9oYXNoCAEsQ29udGVudEhhc2gAAQx3aG8EATBUOjpBY2NvdW50SWQAASRyZWN1cnJpbmddAQEQYm9vbAABBMhBIHJlbmV3YWwgd2FzIGVuYWJsZWQgZm9yIGBjb250ZW50X2hhc2hgIGJ5IGB3aG9gLkxBdXRvUmVuZXdhbERpc2FibGVkCAEwY29udGVudF9oYXNoCAEsQ29udGVudEhhc2gAAQx3aG8EATBUOjpBY2NvdW50SWQAAggtAUF1dG8tcmVuZXdhbCBkaXNhYmxlZCBmb3IgYGNvbnRlbnRfaGFzaGAuIGB3aG9gIGlzIHRoZSByZWdpc3RyYXRpb24ncyBvd25lcrgobm90IHRoZSBjYWxsZXIgd2hlbiBSb290IGlzc3VlZCB0aGUgZGlzYWJsZSkuLERhdGFSZW5ld2VkDAEUaW5kZXg4AQx1MzIAATBjb250ZW50X2hhc2gIASxDb250ZW50SGFzaAABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwTsQSByZWdpc3RlcmVkIHJlbmV3YWwgZmlyZWQsIHJlLXN0b3JpbmcgdGhlIGRhdGEgYXQgYGluZGV4YC40UmVuZXdhbEZhaWxlZAgBMGNvbnRlbnRfaGFzaAgBLENvbnRlbnRIYXNoAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAECDUBQSByZWdpc3RlcmVkIHJlbmV3YWwgZmFpbGVkIG9uIGBhY2NvdW50YCdzIGF1dGhvcml6YXRpb247IHRoZSByZWdpc3RyYXRpb24gaXN0ZHJvcHBlZCBhbmQgdGhlIGRhdGEgZXhwaXJlcy5sUGVybWFuZW50U3RvcmFnZVVzZWRVcGRhdGVkBAEQdXNlZCgBDHU2NAAFDCkBYFBlcm1hbmVudFN0b3JhZ2VVc2VkYCBjaGFuZ2VkIChhIGByZW5ld2AgYnVtcGVkIGl0LCBvciB0aGUgb2Jzb2xldGUgc3dlZXBFAWRlY3JlbWVudGVkIGl0KS4gT2ZmLWNoYWluIGNhcGFjaXR5LXBsYW5uaW5nIGNvbnN1bWVycyBjYW4gZHJpdmUgdGhlaXIgZGFzaGJvYXJkcyxmcm9tIHRoZXNlLlxQZXJtYW5lbnRTdG9yYWdlTmVhckNhcAgBEHVzZWQoAQx1NjQAAQxjYXAoAQx1NjQABgw5AWBQZXJtYW5lbnRTdG9yYWdlVXNlZGAganVzdCBjcm9zc2VkIHRoZSBbYFBFUk1BTkVOVF9TVE9SQUdFX05FQVJfQ0FQX1BFUkNFTlRgXS0BdGhyZXNob2xkIG9mIGBNYXhQZXJtYW5lbnRTdG9yYWdlU2l6ZWAgb24gdGhlIHJpc2luZyBlZGdlLiBFbWl0dGVkIG9uY2UgcGVy8GNyb3NzaW5nIOKAlCBubyByZS1lbWlzc2lvbiB3aGlsZSBzdGlsbCBhYm92ZSB0aGUgdGhyZXNob2xkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldFUEDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldBRFdmVudAQEVAABKEBOZXdJbnZ1bG5lcmFibGVzBAE0aW52dWxuZXJhYmxlc2EBAURWZWM8VDo6QWNjb3VudElkPgAABGxOZXcgSW52dWxuZXJhYmxlcyB3ZXJlIHNldC5ESW52dWxuZXJhYmxlQWRkZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEEdEEgbmV3IEludnVsbmVyYWJsZSB3YXMgYWRkZWQuTEludnVsbmVyYWJsZVJlbW92ZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAIEcEFuIEludnVsbmVyYWJsZSB3YXMgcmVtb3ZlZC5QTmV3RGVzaXJlZENhbmRpZGF0ZXMEAUhkZXNpcmVkX2NhbmRpZGF0ZXM4AQx1MzIAAwSkVGhlIG51bWJlciBvZiBkZXNpcmVkIGNhbmRpZGF0ZXMgd2FzIHNldC5ATmV3Q2FuZGlkYWN5Qm9uZAQBLGJvbmRfYW1vdW50/AEwQmFsYW5jZU9mPFQ+AAQEbFRoZSBjYW5kaWRhY3kgYm9uZCB3YXMgc2V0LjhDYW5kaWRhdGVBZGRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0/AEwQmFsYW5jZU9mPFQ+AAUEXEEgbmV3IGNhbmRpZGF0ZSBqb2luZWQuUENhbmRpZGF0ZUJvbmRVcGRhdGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXT8ATBCYWxhbmNlT2Y8VD4ABgRwQm9uZCBvZiBhIGNhbmRpZGF0ZSB1cGRhdGVkLkBDYW5kaWRhdGVSZW1vdmVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAHBGBBIGNhbmRpZGF0ZSB3YXMgcmVtb3ZlZC5EQ2FuZGlkYXRlUmVwbGFjZWQMAQxvbGQEATBUOjpBY2NvdW50SWQAAQxuZXcEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0/AEwQmFsYW5jZU9mPFQ+AAgE9EFuIGFjY291bnQgd2FzIHJlcGxhY2VkIGluIHRoZSBjYW5kaWRhdGUgbGlzdCBieSBhbm90aGVyIG9uZS5oSW52YWxpZEludnVsbmVyYWJsZVNraXBwZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAkIVQFBbiBhY2NvdW50IHdhcyB1bmFibGUgdG8gYmUgYWRkZWQgdG8gdGhlIEludnVsbmVyYWJsZXMgYmVjYXVzZSB0aGV5IGRpZCBub3QgaGF2ZSBrZXlzyHJlZ2lzdGVyZWQuIE90aGVyIEludnVsbmVyYWJsZXMgbWF5IGhhdmUgYmVlbiBzZXQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0WQQMOHBhbGxldF9zZXNzaW9uGHBhbGxldBRFdmVudAQEVAABEChOZXdTZXNzaW9uBAE0c2Vzc2lvbl9pbmRleDgBMFNlc3Npb25JbmRleAAACDkBTmV3IHNlc3Npb24gaGFzIGhhcHBlbmVkLiBOb3RlIHRoYXQgdGhlIGFyZ3VtZW50IGlzIHRoZSBzZXNzaW9uIGluZGV4LCBub3QgdGhlnGJsb2NrIG51bWJlciBhcyB0aGUgdHlwZSBtaWdodCBzdWdnZXN0LiROZXdRdWV1ZWQAAQhJAVRoZSBgTmV3U2Vzc2lvbmAgZXZlbnQgaW4gdGhlIGN1cnJlbnQgYmxvY2sgYWxzbyBpbXBsaWVzIGEgbmV3IHZhbGlkYXRvciBzZXQgdG8gYmUccXVldWVkLkRWYWxpZGF0b3JEaXNhYmxlZAQBJHZhbGlkYXRvcgQBOFQ6OlZhbGlkYXRvcklkAAIEcFZhbGlkYXRvciBoYXMgYmVlbiBkaXNhYmxlZC5IVmFsaWRhdG9yUmVlbmFibGVkBAEkdmFsaWRhdG9yBAE4VDo6VmFsaWRhdG9ySWQAAwR4VmFsaWRhdG9yIGhhcyBiZWVuIHJlLWVuYWJsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0XQQMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEV2ZW50BARUAAEEPFhjbXBNZXNzYWdlU2VudAQBMG1lc3NhZ2VfaGFzaAgBHFhjbUhhc2gAAATAQW4gSFJNUCBtZXNzYWdlIHdhcyBzZW50IHRvIGEgc2libGluZyBwYXJhY2hhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0YQQMKHBhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAF0JEF0dGVtcHRlZAQBHG91dGNvbWVlBAFQeGNtOjpsYXRlc3Q6Ok91dGNvbWUAAASoRXhlY3V0aW9uIG9mIGFuIFhDTSBtZXNzYWdlIHdhcyBhdHRlbXB0ZWQuEFNlbnQQARhvcmlnaW7gASBMb2NhdGlvbgABLGRlc3RpbmF0aW9u4AEgTG9jYXRpb24AARxtZXNzYWdl0QIBHFhjbTwoKT4AAShtZXNzYWdlX2lkCAEcWGNtSGFzaAABBGBBbiBYQ00gbWVzc2FnZSB3YXMgc2VudC4oU2VuZEZhaWxlZBABGG9yaWdpbuABIExvY2F0aW9uAAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABFGVycm9ybQQBJFNlbmRFcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAIEeEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBzZW5kLjxQcm9jZXNzWGNtRXJyb3IMARhvcmlnaW7gASBMb2NhdGlvbgABFGVycm9yAQMBIFhjbUVycm9yAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAwSEQW4gWENNIG1lc3NhZ2UgZmFpbGVkIHRvIHByb2Nlc3MuSFVuZXhwZWN0ZWRSZXNwb25zZQgBGG9yaWdpbuABIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAQMWQFRdWVyeSByZXNwb25zZSByZWNlaXZlZCB3aGljaCBkb2VzIG5vdCBtYXRjaCBhIHJlZ2lzdGVyZWQgcXVlcnkuIFRoaXMgbWF5IGJlIGJlY2F1c2UgYVUBbWF0Y2hpbmcgcXVlcnkgd2FzIG5ldmVyIHJlZ2lzdGVyZWQsIGl0IG1heSBiZSBiZWNhdXNlIGl0IGlzIGEgZHVwbGljYXRlIHJlc3BvbnNlLCBvcnBiZWNhdXNlIHRoZSBxdWVyeSB0aW1lZCBvdXQuNFJlc3BvbnNlUmVhZHkIASBxdWVyeV9pZCgBHFF1ZXJ5SWQAASByZXNwb25zZfUCASBSZXNwb25zZQAFCF0BUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIGlzIHJlYWR5IGZvciB0YWtpbmcgd2l0aCBgdGFrZV9yZXNwb25zZWAuIFRoZXJlIGlzgG5vIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uIGNhbGwuIE5vdGlmaWVkDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgABghZAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgcmVnaXN0ZXJlZCBub3RpZmljYXRpb24gaGFzqGJlZW4gZGlzcGF0Y2hlZCBhbmQgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5LkBOb3RpZnlPdmVyd2VpZ2h0FAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgAATRhY3R1YWxfd2VpZ2h0KQEBGFdlaWdodAABTG1heF9idWRnZXRlZF93ZWlnaHQpAQEYV2VpZ2h0AAcMSQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uWQFjb3VsZCBub3QgYmUgZGlzcGF0Y2hlZCBiZWNhdXNlIHRoZSBkaXNwYXRjaCB3ZWlnaHQgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHdlaWdodORvcmlnaW5hbGx5IGJ1ZGdldGVkIGJ5IHRoaXMgcnVudGltZSBmb3IgdGhlIHF1ZXJ5IHJlc3VsdC5MTm90aWZ5RGlzcGF0Y2hFcnJvcgwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAgIVQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlcmUgd2FzIGEgZ2VuZXJhbCBlcnJvciB3aXRoiGRpc3BhdGNoaW5nIHRoZSBub3RpZmljYXRpb24gY2FsbC5ITm90aWZ5RGVjb2RlRmFpbGVkDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgACQxRAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgZGlzcGF0Y2ggd2FzIHVuYWJsZSB0byBiZVkBZGVjb2RlZCBpbnRvIGEgYENhbGxgOyB0aGlzIG1pZ2h0IGJlIGR1ZSB0byBkaXNwYXRjaCBmdW5jdGlvbiBoYXZpbmcgYSBzaWduYXR1cmUgd2hpY2iUaXMgbm90IGAob3JpZ2luLCBRdWVyeUlkLCBSZXNwb25zZSlgLkBJbnZhbGlkUmVzcG9uZGVyDAEYb3JpZ2lu4AEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAAURleHBlY3RlZF9sb2NhdGlvbhUDAUBPcHRpb248TG9jYXRpb24+AAoMWQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIG9yaWdpbiBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UgZG9lc1UBbm90IG1hdGNoIHRoYXQgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5cSW52YWxpZFJlc3BvbmRlclZlcnNpb24IARhvcmlnaW7gASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAALHFEBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBleHBlY3RlZCBvcmlnaW4gbG9jYXRpb24gcGxhY2VkIGluTQFzdG9yYWdlIGJ5IHRoaXMgcnVudGltZSBwcmV2aW91c2x5IGNhbm5vdCBiZSBkZWNvZGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkLgBBAVRoaXMgaXMgdW5leHBlY3RlZCAoc2luY2UgYSBsb2NhdGlvbiBwbGFjZWQgaW4gc3RvcmFnZSBpbiBhIHByZXZpb3VzbHkgZXhlY3V0aW5nTQFydW50aW1lIHNob3VsZCBiZSByZWFkYWJsZSBwcmlvciB0byBxdWVyeSB0aW1lb3V0KSBhbmQgZGFuZ2Vyb3VzIHNpbmNlIHRoZSBwb3NzaWJseVkBdmFsaWQgcmVzcG9uc2Ugd2lsbCBiZSBkcm9wcGVkLiBNYW51YWwgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUcbmVlZGVkLjRSZXNwb25zZVRha2VuBAEgcXVlcnlfaWQoARxRdWVyeUlkAAwEyFJlY2VpdmVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlYWQgYW5kIHJlbW92ZWQuNEFzc2V0c1RyYXBwZWQMARBoYXNoPAEQSDI1NgABGG9yaWdpbuABIExvY2F0aW9uAAEYYXNzZXRzTQMBPFZlcnNpb25lZEFzc2V0cwANBLhTb21lIGFzc2V0cyBoYXZlIGJlZW4gcGxhY2VkIGluIGFuIGFzc2V0IHRyYXAuVFZlcnNpb25DaGFuZ2VOb3RpZmllZBABLGRlc3RpbmF0aW9u4AEgTG9jYXRpb24AARhyZXN1bHQ4AShYY21WZXJzaW9uAAEQY29zdN0CARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAODCUBQW4gWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBtZXNzYWdlIGhhcyBiZWVuIGF0dGVtcHRlZCB0byBiZSBzZW50LgDgVGhlIGNvc3Qgb2Ygc2VuZGluZyBpdCAoYm9ybmUgYnkgdGhlIGNoYWluKSBpcyBpbmNsdWRlZC5cU3VwcG9ydGVkVmVyc2lvbkNoYW5nZWQIASBsb2NhdGlvbuABIExvY2F0aW9uAAEcdmVyc2lvbjgBKFhjbVZlcnNpb24ADwg5AVRoZSBzdXBwb3J0ZWQgdmVyc2lvbiBvZiBhIGxvY2F0aW9uIGhhcyBiZWVuIGNoYW5nZWQuIFRoaXMgbWlnaHQgYmUgdGhyb3VnaCBhbsBhdXRvbWF0aWMgbm90aWZpY2F0aW9uIG9yIGEgbWFudWFsIGludGVydmVudGlvbi5QTm90aWZ5VGFyZ2V0U2VuZEZhaWwMASBsb2NhdGlvbuABIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAEUZXJyb3IBAwEgWGNtRXJyb3IAEAhZAUEgZ2l2ZW4gbG9jYXRpb24gd2hpY2ggaGFkIGEgdmVyc2lvbiBjaGFuZ2Ugc3Vic2NyaXB0aW9uIHdhcyBkcm9wcGVkIG93aW5nIHRvIGFuIGVycm9yfHNlbmRpbmcgdGhlIG5vdGlmaWNhdGlvbiB0byBpdC5kTm90aWZ5VGFyZ2V0TWlncmF0aW9uRmFpbAgBIGxvY2F0aW9uwQEBRFZlcnNpb25lZExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkABEIWQFBIGdpdmVuIGxvY2F0aW9uIHdoaWNoIGhhZCBhIHZlcnNpb24gY2hhbmdlIHN1YnNjcmlwdGlvbiB3YXMgZHJvcHBlZCBvd2luZyB0byBhbiBlcnJvcrRtaWdyYXRpbmcgdGhlIGxvY2F0aW9uIHRvIG91ciBuZXcgWENNIGZvcm1hdC5USW52YWxpZFF1ZXJpZXJWZXJzaW9uCAEYb3JpZ2lu4AEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAEhxVAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgcXVlcmllciBsb2NhdGlvbiBwbGFjZWQgaW5NAXN0b3JhZ2UgYnkgdGhpcyBydW50aW1lIHByZXZpb3VzbHkgY2Fubm90IGJlIGRlY29kZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQuAEEBVGhpcyBpcyB1bmV4cGVjdGVkIChzaW5jZSBhIGxvY2F0aW9uIHBsYWNlZCBpbiBzdG9yYWdlIGluIGEgcHJldmlvdXNseSBleGVjdXRpbmdNAXJ1bnRpbWUgc2hvdWxkIGJlIHJlYWRhYmxlIHByaW9yIHRvIHF1ZXJ5IHRpbWVvdXQpIGFuZCBkYW5nZXJvdXMgc2luY2UgdGhlIHBvc3NpYmx5WQF2YWxpZCByZXNwb25zZSB3aWxsIGJlIGRyb3BwZWQuIE1hbnVhbCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyBwcm9iYWJseSBnb2luZyB0byBiZRxuZWVkZWQuOEludmFsaWRRdWVyaWVyEAEYb3JpZ2lu4AEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAAUBleHBlY3RlZF9xdWVyaWVy4AEgTG9jYXRpb24AAVBtYXliZV9hY3R1YWxfcXVlcmllchUDAUBPcHRpb248TG9jYXRpb24+ABMMXQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIHF1ZXJpZXIgbG9jYXRpb24gb2YgdGhlIHJlc3BvbnNlIGRvZXNRAW5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5QVmVyc2lvbk5vdGlmeVN0YXJ0ZWQMASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEQY29zdN0CARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAUCFkBQSByZW1vdGUgaGFzIHJlcXVlc3RlZCBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9uIGZyb20gdXMgYW5kIHdlIGhhdmUgaG9ub3JlZCBpdC4dAUEgdmVyc2lvbiBpbmZvcm1hdGlvbiBtZXNzYWdlIGlzIHNlbnQgdG8gdGhlbSBhbmQgaXRzIGNvc3QgaXMgaW5jbHVkZWQuWFZlcnNpb25Ob3RpZnlSZXF1ZXN0ZWQMASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEQY29zdN0CARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAVBD0BV2UgaGF2ZSByZXF1ZXN0ZWQgdGhhdCBhIHJlbW90ZSBjaGFpbiBzZW5kIHVzIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb25zLmBWZXJzaW9uTm90aWZ5VW5yZXF1ZXN0ZWQMASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEQY29zdN0CARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAWCCUBV2UgaGF2ZSByZXF1ZXN0ZWQgdGhhdCBhIHJlbW90ZSBjaGFpbiBzdG9wcyBzZW5kaW5nIHVzIFhDTSB2ZXJzaW9uIGNoYW5nZThub3RpZmljYXRpb25zLiBGZWVzUGFpZAgBGHBheWluZ+ABIExvY2F0aW9uAAEQZmVlc90CARhBc3NldHMAFwQxAUZlZXMgd2VyZSBwYWlkIGZyb20gYSBsb2NhdGlvbiBmb3IgYW4gb3BlcmF0aW9uIChvZnRlbiBmb3IgdXNpbmcgYFNlbmRYY21gKS40QXNzZXRzQ2xhaW1lZAwBEGhhc2g8ARBIMjU2AAEYb3JpZ2lu4AEgTG9jYXRpb24AARhhc3NldHNNAwE8VmVyc2lvbmVkQXNzZXRzABgEwFNvbWUgYXNzZXRzIGhhdmUgYmVlbiBjbGFpbWVkIGZyb20gYW4gYXNzZXQgdHJhcGBWZXJzaW9uTWlncmF0aW9uRmluaXNoZWQEARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAZBIRBIFhDTSB2ZXJzaW9uIG1pZ3JhdGlvbiBmaW5pc2hlZC48QWxpYXNBdXRob3JpemVkDAEcYWxpYXNlcuABIExvY2F0aW9uAAEYdGFyZ2V04AEgTG9jYXRpb24AARhleHBpcnmFAwEsT3B0aW9uPHU2ND4AGghdAUFuIGBhbGlhc2VyYCBsb2NhdGlvbiB3YXMgYXV0aG9yaXplZCBieSBgdGFyZ2V0YCB0byBhbGlhcyBpdCwgYXV0aG9yaXphdGlvbiB2YWxpZCB1bnRpbFhgZXhwaXJ5YCBibG9jayBudW1iZXIuZEFsaWFzQXV0aG9yaXphdGlvblJlbW92ZWQIARxhbGlhc2Vy4AEgTG9jYXRpb24AARh0YXJnZXTgASBMb2NhdGlvbgAbBMxgdGFyZ2V0YCByZW1vdmVkIGFsaWFzIGF1dGhvcml6YXRpb24gZm9yIGBhbGlhc2VyYC5wQWxpYXNlc0F1dGhvcml6YXRpb25zUmVtb3ZlZAQBGHRhcmdldOABIExvY2F0aW9uABwEqGB0YXJnZXRgIHJlbW92ZWQgYWxsIGFsaWFzIGF1dGhvcml6YXRpb25zLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldGUEECxzdGFnaW5nX3hjbQh2NRh0cmFpdHMcT3V0Y29tZQABDCBDb21wbGV0ZQQBEHVzZWQpAQEYV2VpZ2h0AAAAKEluY29tcGxldGUIARB1c2VkKQEBGFdlaWdodAABFGVycm9yaQQBQEluc3RydWN0aW9uRXJyb3IAAQAURXJyb3IEAGkEAUBJbnN0cnVjdGlvbkVycm9yAAIAAGkEECxzdGFnaW5nX3hjbQh2NRh0cmFpdHNASW5zdHJ1Y3Rpb25FcnJvcgAACAEUaW5kZXgMAUBJbnN0cnVjdGlvbkluZGV4AAEUZXJyb3IBAwEURXJyb3IAAG0EEAx4Y20IdjMYdHJhaXRzJFNlbmRFcnJvcgABHDROb3RBcHBsaWNhYmxlAAAAJFRyYW5zcG9ydAABAChVbnJvdXRhYmxlAAIAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQAAwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAQAPE1pc3NpbmdBcmd1bWVudAAFABBGZWVzAAYAAHEEDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAEMNEludmFsaWRGb3JtYXQEAAgBIFt1ODsgMzJdAAAIgERvd253YXJkIG1lc3NhZ2UgaXMgaW52YWxpZCBYQ00uIFxbIGlkIFxdSFVuc3VwcG9ydGVkVmVyc2lvbgQACAEgW3U4OyAzMl0AAQi8RG93bndhcmQgbWVzc2FnZSBpcyB1bnN1cHBvcnRlZCB2ZXJzaW9uIG9mIFhDTS4gXFsgaWQgXF1ARXhlY3V0ZWREb3dud2FyZAgACAEgW3U4OyAzMl0AAGUEARxPdXRjb21lAAIIxERvd253YXJkIG1lc3NhZ2UgZXhlY3V0ZWQgd2l0aCB0aGUgZ2l2ZW4gb3V0Y29tZS5EXFsgaWQsIG91dGNvbWUgXF0EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXR1BAxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0FEV2ZW50BARUAAEQQFByb2Nlc3NpbmdGYWlsZWQMAQhpZDwBEEgyNTYElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbpEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BFGVycm9yeQQBTFByb2Nlc3NNZXNzYWdlRXJyb3IQYFRoZSBlcnJvciB0aGF0IG9jY3VycmVkLgBJAVRoaXMgZXJyb3IgaXMgcHJldHR5IG9wYXF1ZS4gTW9yZSBmaW5lLWdyYWluZWQgZXJyb3JzIG5lZWQgdG8gYmUgZW1pdHRlZCBhcyBldmVudHNoYnkgdGhlIGBNZXNzYWdlUHJvY2Vzc29yYC4ABFUBTWVzc2FnZSBkaXNjYXJkZWQgZHVlIHRvIGFuIGVycm9yIGluIHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAgKHVzdWFsbHkgYSBmb3JtYXQgZXJyb3IpLiRQcm9jZXNzZWQQAQhpZDwBEEgyNTYElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbpEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BLHdlaWdodF91c2VkKQEBGFdlaWdodATASG93IG11Y2ggd2VpZ2h0IHdhcyB1c2VkIHRvIHByb2Nlc3MgdGhlIG1lc3NhZ2UuARxzdWNjZXNzXQEBEGJvb2wYiFdoZXRoZXIgdGhlIG1lc3NhZ2Ugd2FzIHByb2Nlc3NlZC4ASQFOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBtZWFuIHRoYXQgdGhlIHVuZGVybHlpbmcgYE1lc3NhZ2VQcm9jZXNzb3JgIHdhcyBpbnRlcm5hbGx5NQFzdWNjZXNzZnVsLiBJdCAqc29sZWx5KiBtZWFucyB0aGF0IHRoZSBNUSBwYWxsZXQgd2lsbCB0cmVhdCB0aGlzIGFzIGEgc3VjY2Vzc00BY29uZGl0aW9uIGFuZCBkaXNjYXJkIHRoZSBtZXNzYWdlLiBBbnkgaW50ZXJuYWwgZXJyb3IgbmVlZHMgdG8gYmUgZW1pdHRlZCBhcyBldmVudHNoYnkgdGhlIGBNZXNzYWdlUHJvY2Vzc29yYC4BBFRNZXNzYWdlIGlzIHByb2Nlc3NlZC5IT3ZlcndlaWdodEVucXVldWVkEAEIaWQIASBbdTg7IDMyXQSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2lukQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEocGFnZV9pbmRleDgBJFBhZ2VJbmRleARgVGhlIHBhZ2Ugb2YgdGhlIG1lc3NhZ2UuATRtZXNzYWdlX2luZGV4OAEcVDo6U2l6ZQSkVGhlIGluZGV4IG9mIHRoZSBtZXNzYWdlIHdpdGhpbiB0aGUgcGFnZS4CBIxNZXNzYWdlIHBsYWNlZCBpbiBvdmVyd2VpZ2h0IHF1ZXVlLihQYWdlUmVhcGVkCAEYb3JpZ2lukQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRYVGhlIHF1ZXVlIG9mIHRoZSBwYWdlLgEUaW5kZXg4ASRQYWdlSW5kZXgEWFRoZSBpbmRleCBvZiB0aGUgcGFnZS4DBFRUaGlzIHBhZ2Ugd2FzIHJlYXBlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXR5BBA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMgbWVzc2FnZXNMUHJvY2Vzc01lc3NhZ2VFcnJvcgABGCRCYWRGb3JtYXQAAAAcQ29ycnVwdAABACxVbnN1cHBvcnRlZAACAChPdmVyd2VpZ2h0BAApAQEYV2VpZ2h0AAMAFFlpZWxkAAQARFN0YWNrTGltaXRSZWFjaGVkAAUAAH0EDCxwYWxsZXRfc3VkbxhwYWxsZXQURXZlbnQEBFQAARAUU3VkaWQEASxzdWRvX3Jlc3VsdCEEAThEaXNwYXRjaFJlc3VsdAS0VGhlIHJlc3VsdCBvZiB0aGUgY2FsbCBtYWRlIGJ5IHRoZSBzdWRvIHVzZXIuAARwQSBzdWRvIGNhbGwganVzdCB0b29rIHBsYWNlLihLZXlDaGFuZ2VkCAEMb2xkgQQBUE9wdGlvbjxUOjpBY2NvdW50SWQ+BLRUaGUgb2xkIHN1ZG8ga2V5IChpZiBvbmUgd2FzIHByZXZpb3VzbHkgc2V0KS4BDG5ldwQBMFQ6OkFjY291bnRJZASIVGhlIG5ldyBzdWRvIGtleSAoaWYgb25lIHdhcyBzZXQpLgEEeFRoZSBzdWRvIGtleSBoYXMgYmVlbiB1cGRhdGVkLihLZXlSZW1vdmVkAAIEgFRoZSBrZXkgd2FzIHBlcm1hbmVudGx5IHJlbW92ZWQuKFN1ZG9Bc0RvbmUEASxzdWRvX3Jlc3VsdCEEAThEaXNwYXRjaFJlc3VsdAS0VGhlIHJlc3VsdCBvZiB0aGUgY2FsbCBtYWRlIGJ5IHRoZSBzdWRvIHVzZXIuAwTIQSBbc3Vkb19hc10oUGFsbGV0OjpzdWRvX2FzKSBjYWxsIGp1c3QgdG9vayBwbGFjZS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSBBAQYT3B0aW9uBARUAQQBCBBOb25lAAAAEFNvbWUEAAQAAAEAAIUECDBmcmFtZV9zeXN0ZW0UUGhhc2UAAQw4QXBwbHlFeHRyaW5zaWMEADgBDHUzMgAAADBGaW5hbGl6YXRpb24AAQA4SW5pdGlhbGl6YXRpb24AAgAAiQQAAAI8AI0EAAACkQQAkQQAAAQIODgAlQQIMGZyYW1lX3N5c3RlbVhMYXN0UnVudGltZVVwZ3JhZGVJbmZvAAAIATBzcGVjX3ZlcnNpb25gAUxjb2RlYzo6Q29tcGFjdDx1MzI+AAEkc3BlY19uYW1lmQQBRENvdzwnc3RhdGljLCBzdHI+AACZBAQMQ293BARUAZ0EAAQAnQQAAACdBAAABQIAoQQIMGZyYW1lX3N5c3RlbWBDb2RlVXBncmFkZUF1dGhvcml6YXRpb24EBFQAAAgBJGNvZGVfaGFzaDwBHFQ6Okhhc2gAATRjaGVja192ZXJzaW9uXQEBEGJvb2wAAKUEDDBmcmFtZV9zeXN0ZW0YbGltaXRzMEJsb2NrV2VpZ2h0cwAADAEoYmFzZV9ibG9jaykBARhXZWlnaHQAASRtYXhfYmxvY2spAQEYV2VpZ2h0AAEkcGVyX2NsYXNzqQQBhFBlckRpc3BhdGNoQ2xhc3M8V2VpZ2h0c1BlckNsYXNzPgAAqQQMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAGtBAAMARhub3JtYWytBAEEVAABLG9wZXJhdGlvbmFsrQQBBFQAASRtYW5kYXRvcnmtBAEEVAAArQQMMGZyYW1lX3N5c3RlbRhsaW1pdHM8V2VpZ2h0c1BlckNsYXNzAAAQAThiYXNlX2V4dHJpbnNpYykBARhXZWlnaHQAATRtYXhfZXh0cmluc2ljGQMBOE9wdGlvbjxXZWlnaHQ+AAEkbWF4X3RvdGFsGQMBOE9wdGlvbjxXZWlnaHQ+AAEgcmVzZXJ2ZWQZAwE4T3B0aW9uPFdlaWdodD4AALEEDDBmcmFtZV9zeXN0ZW0YbGltaXRzLEJsb2NrTGVuZ3RoAAAIAQxtYXi1BAFUUGVyRGlzcGF0Y2hDbGFzczx1MzI+AAE8bWF4X2hlYWRlcl9zaXplRQEBLE9wdGlvbjx1MzI+AAC1BAw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUATgADAEYbm9ybWFsOAEEVAABLG9wZXJhdGlvbmFsOAEEVAABJG1hbmRhdG9yeTgBBFQAALkECChzcF93ZWlnaHRzPFJ1bnRpbWVEYldlaWdodAAACAEQcmVhZCgBDHU2NAABFHdyaXRlKAEMdTY0AAC9BAgoc3BfdmVyc2lvbjhSdW50aW1lVmVyc2lvbgAAIAEkc3BlY19uYW1lmQQBRENvdzwnc3RhdGljLCBzdHI+AAEkaW1wbF9uYW1lmQQBRENvdzwnc3RhdGljLCBzdHI+AAFEYXV0aG9yaW5nX3ZlcnNpb244AQx1MzIAATBzcGVjX3ZlcnNpb244AQx1MzIAATBpbXBsX3ZlcnNpb244AQx1MzIAARBhcGlzwQQBHEFwaXNWZWMAAUx0cmFuc2FjdGlvbl92ZXJzaW9uOAEMdTMyAAE4c3lzdGVtX3ZlcnNpb24MAQh1OAAAwQQEDENvdwQEVAHFBAAEAMUEAAAAxQQAAALJBADJBAAABAg1AjgAzQQMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAASQ8SW52YWxpZFNwZWNOYW1lAAAIEQFUaGUgbmFtZSBvZiBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IG1hdGNoIGJldHdlZW4gdGhlIGN1cnJlbnQgcnVudGltZVBhbmQgdGhlIG5ldyBydW50aW1lLmhTcGVjVmVyc2lvbk5lZWRzVG9JbmNyZWFzZQABCEEBVGhlIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpcyBub3QgYWxsb3dlZCB0byBkZWNyZWFzZSBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS50RmFpbGVkVG9FeHRyYWN0UnVudGltZVZlcnNpb24AAgzsRmFpbGVkIHRvIGV4dHJhY3QgdGhlIHJ1bnRpbWUgdmVyc2lvbiBmcm9tIHRoZSBuZXcgcnVudGltZS4ACQFFaXRoZXIgY2FsbGluZyBgQ29yZV92ZXJzaW9uYCBvciBkZWNvZGluZyBgUnVudGltZVZlcnNpb25gIGZhaWxlZC5MTm9uRGVmYXVsdENvbXBvc2l0ZQADBPxTdWljaWRlIGNhbGxlZCB3aGVuIHRoZSBhY2NvdW50IGhhcyBub24tZGVmYXVsdCBjb21wb3NpdGUgZGF0YS48Tm9uWmVyb1JlZkNvdW50AAQENQFUaGVyZSBpcyBhIG5vbi16ZXJvIHJlZmVyZW5jZSBjb3VudCBwcmV2ZW50aW5nIHRoZSBhY2NvdW50IGZyb20gYmVpbmcgcHVyZ2VkLjBDYWxsRmlsdGVyZWQABQTQVGhlIG9yaWdpbiBmaWx0ZXIgcHJldmVudCB0aGUgY2FsbCB0byBiZSBkaXNwYXRjaGVkLmxNdWx0aUJsb2NrTWlncmF0aW9uc09uZ29pbmcABgRVAUEgbXVsdGktYmxvY2sgbWlncmF0aW9uIGlzIG9uZ29pbmcgYW5kIHByZXZlbnRzIHRoZSBjdXJyZW50IGNvZGUgZnJvbSBiZWluZyByZXBsYWNlZC5ETm90aGluZ0F1dGhvcml6ZWQABwRYTm8gdXBncmFkZSBhdXRob3JpemVkLjBVbmF1dGhvcml6ZWQACASUVGhlIHN1Ym1pdHRlZCBjb2RlIGlzIG5vdCBhdXRob3JpemVkLgRsRXJyb3IgZm9yIHRoZSBTeXN0ZW0gcGFsbGV00QQMKHNwX3J1bnRpbWUYdHJhaXRzLEJsYWtlVHdvMjU2AAAAANUEEChzcF9ydW50aW1lHGdlbmVyaWMUYmxvY2sUQmxvY2sIGEhlYWRlcgFcJEV4dHJpbnNpYwHZBAAIARhoZWFkZXJcARhIZWFkZXIAAShleHRyaW5zaWNz5QQBOFZlYzxFeHRyaW5zaWM+AADZBBAoc3BfcnVudGltZRxnZW5lcmljTHVuY2hlY2tlZF9leHRyaW5zaWNIVW5jaGVja2VkRXh0cmluc2ljEBxBZGRyZXNzAQAQQ2FsbAEgJFNpZ25hdHVyZQGVARRFeHRyYQHdBAAEABgAAADdBAh0Y3VtdWx1c19wYWxsZXRfd2VpZ2h0X3JlY2xhaW1QU3RvcmFnZVdlaWdodFJlY2xhaW0IBFQABFMB4QQABADhBAEEUwAA4QQAAAQwmQOdA6EDpQOpA60DtQO5A70DwQPFA8kDAOUEAAAC2QQA6QQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0wYmxvY2tfd2VpZ2h0PEJsb2NrV2VpZ2h0TW9kZQQEVAABDCBGdWxsQ29yZQQBHGNvbnRleHQ4AURCbG9ja051bWJlckZvcjxUPgAAAERQb3RlbnRpYWxGdWxsQ29yZQwBHGNvbnRleHQ4AURCbG9ja051bWJlckZvcjxUPgABXGZpcnN0X3RyYW5zYWN0aW9uX2luZGV4RQEBLE9wdGlvbjx1MzI+AAE0dGFyZ2V0X3dlaWdodCkBARhXZWlnaHQAAQA4RnJhY3Rpb25PZkNvcmUIARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAVxmaXJzdF90cmFuc2FjdGlvbl9pbmRleEUBASxPcHRpb248dTMyPgACAADtBAAABsQA8QQAAAL1BAD1BAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQgQW5jZXN0b3IEBEgBPAAMATh1c2VkX2JhbmR3aWR0aPkEATRVc2VkQmFuZHdpZHRoAAE4cGFyYV9oZWFkX2hhc2gNBQEkT3B0aW9uPEg+AAFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFsEQUBjE9wdGlvbjxyZWxheV9jaGFpbjo6VXBncmFkZUdvQWhlYWQ+AAD5BAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQ0VXNlZEJhbmR3aWR0aAAADAE0dW1wX21zZ19jb3VudDgBDHUzMgABPHVtcF90b3RhbF9ieXRlczgBDHUzMgABNGhybXBfb3V0Z29pbmf9BAGMQlRyZWVNYXA8UGFyYUlkLCBIcm1wQ2hhbm5lbFVwZGF0ZT4AAP0EBCBCVHJlZU1hcAgESwGcBFYBAQUABAAFBQAAAAEFDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudERIcm1wQ2hhbm5lbFVwZGF0ZQAACAEkbXNnX2NvdW50OAEMdTMyAAEsdG90YWxfYnl0ZXM4AQx1MzIAAAUFAAACCQUACQUAAAQInAEFAA0FBBhPcHRpb24EBFQBPAEIEE5vbmUAAAAQU29tZQQAPAAAAQAAEQUEGE9wdGlvbgQEVAEVBQEIEE5vbmUAAAAQU29tZQQAFQUAAAEAABUFDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5OFVwZ3JhZGVHb0FoZWFkAAEIFEFib3J0AAAAHEdvQWhlYWQAAQAAGQUMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50OFNlZ21lbnRUcmFja2VyBARIATwADAE4dXNlZF9iYW5kd2lkdGj5BAE0VXNlZEJhbmR3aWR0aAABOGhybXBfd2F0ZXJtYXJrRQEBgE9wdGlvbjxyZWxheV9jaGFpbjo6QmxvY2tOdW1iZXI+AAFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFsEQUBjE9wdGlvbjxyZWxheV9jaGFpbjo6VXBncmFkZUdvQWhlYWQ+AAAdBQQYT3B0aW9uBARUASEFAQgQTm9uZQAAABBTb21lBAAhBQAAAQAAIQUMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlIVXBncmFkZVJlc3RyaWN0aW9uAAEEHFByZXNlbnQAAAAAJQUMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1QcmVsYXlfc3RhdGVfc25hcHNob3RYTWVzc2FnaW5nU3RhdGVTbmFwc2hvdAAAEAEwZG1xX21xY19oZWFkPAFEcmVsYXlfY2hhaW46Okhhc2gAAZxyZWxheV9kaXNwYXRjaF9xdWV1ZV9yZW1haW5pbmdfY2FwYWNpdHkpBQGMUmVsYXlEaXNwYXRjaFF1ZXVlUmVtYWluaW5nQ2FwYWNpdHkAAUBpbmdyZXNzX2NoYW5uZWxzLQUBiFZlYzwoUGFyYUlkLCBBYnJpZGdlZEhybXBDaGFubmVsKT4AATxlZ3Jlc3NfY2hhbm5lbHMtBQGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgAAKQUMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1QcmVsYXlfc3RhdGVfc25hcHNob3SMUmVsYXlEaXNwYXRjaFF1ZXVlUmVtYWluaW5nQ2FwYWNpdHkAAAgBPHJlbWFpbmluZ19jb3VudDgBDHUzMgABOHJlbWFpbmluZ19zaXplOAEMdTMyAAAtBQAAAjEFADEFAAAECJw1BQA1BQxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUxBYnJpZGdlZEhybXBDaGFubmVsAAAYATBtYXhfY2FwYWNpdHk4AQx1MzIAAThtYXhfdG90YWxfc2l6ZTgBDHUzMgABQG1heF9tZXNzYWdlX3NpemU4AQx1MzIAASRtc2dfY291bnQ4AQx1MzIAASh0b3RhbF9zaXplOAEMdTMyAAEgbXFjX2hlYWQNBQEwT3B0aW9uPEhhc2g+AAA5BQxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OWRBYnJpZGdlZEhvc3RDb25maWd1cmF0aW9uAAAoATRtYXhfY29kZV9zaXplOAEMdTMyAAFIbWF4X2hlYWRfZGF0YV9zaXplOAEMdTMyAAFYbWF4X3Vwd2FyZF9xdWV1ZV9jb3VudDgBDHUzMgABVG1heF91cHdhcmRfcXVldWVfc2l6ZTgBDHUzMgABXG1heF91cHdhcmRfbWVzc2FnZV9zaXplOAEMdTMyAAGQbWF4X3Vwd2FyZF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAGIaHJtcF9tYXhfbWVzc2FnZV9udW1fcGVyX2NhbmRpZGF0ZTgBDHUzMgABbHZhbGlkYXRpb25fdXBncmFkZV9jb29sZG93bjgBLEJsb2NrTnVtYmVyAAFgdmFsaWRhdGlvbl91cGdyYWRlX2RlbGF5OAEsQmxvY2tOdW1iZXIAAVBhc3luY19iYWNraW5nX3BhcmFtcz0FAUhBc3luY0JhY2tpbmdQYXJhbXMAAD0FEExwb2xrYWRvdF9wcmltaXRpdmVzCHY5NGFzeW5jX2JhY2tpbmdIQXN5bmNCYWNraW5nUGFyYW1zAAAIAUxtYXhfY2FuZGlkYXRlX2RlcHRoOAEMdTMyAAFQYWxsb3dlZF9hbmNlc3RyeV9sZW44AQx1MzIAAEEFCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50RE1lc3NhZ2VRdWV1ZUNoYWluAAAEADwBJFJlbGF5SGFzaAAARQUEIEJUcmVlTWFwCARLAZwEVgFBBQAEAEkFAAAASQUAAAJNBQBNBQAABAicQQUAUQUMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50QEluYm91bmRNZXNzYWdlSWQAAAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABLHJldmVyc2VfaWR4OAEMdTMyAABVBQAAAlkFAFkFCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNMT3V0Ym91bmRIcm1wTWVzc2FnZQQISWQBnAAIASRyZWNpcGllbnScAQhJZAABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AABdBQw0c3BfYXJpdGhtZXRpYyxmaXhlZF9wb2ludCRGaXhlZFUxMjgAAAQA/AEQdTEyOAAAYQUIfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0sUG9WTWVzc2FnZXMAABgBaHJlbGF5X3N0b3JhZ2Vfcm9vdF9vcl9oYXNoPAFEcmVsYXlfY2hhaW46Okhhc2gAATRjb3JlX3NlbGVjdG9yDAEIdTgAATBidW5kbGVfaW5kZXgMAQh1OAABNHVtcF9tc2dfY291bnQ4AQx1MzIAAUxocm1wX291dGJvdW5kX2NvdW50OAEMdTMyAAFgaHJtcF9vdXRib3VuZF9yZWNpcGllbnRzZQUBLFZlYzxQYXJhSWQ+AABlBQAAApwAaQUMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0YcGFsbGV0FEVycm9yBARUAAEYTE92ZXJsYXBwaW5nVXBncmFkZXMAAAQZAUF0dGVtcHQgdG8gdXBncmFkZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIHdoaWxlIGV4aXN0aW5nIHVwZ3JhZGUgcGVuZGluZy5QUHJvaGliaXRlZEJ5UG9sa2Fkb3QAAQRNAVBvbGthZG90IGN1cnJlbnRseSBwcm9oaWJpdHMgdGhpcyBwYXJhY2hhaW4gZnJvbSB1cGdyYWRpbmcgaXRzIHZhbGlkYXRpb24gZnVuY3Rpb24uGFRvb0JpZwACCEUBVGhlIHN1cHBsaWVkIHZhbGlkYXRpb24gZnVuY3Rpb24gaGFzIGNvbXBpbGVkIGludG8gYSBibG9iIGxhcmdlciB0aGFuIFBvbGthZG90IGlzPHdpbGxpbmcgdG8gcnVuLmhWYWxpZGF0aW9uRGF0YU5vdEF2YWlsYWJsZQADBB0BVGhlIGluaGVyZW50IHdoaWNoIHN1cHBsaWVzIHRoZSB2YWxpZGF0aW9uIGRhdGEgZGlkIG5vdCBydW4gdGhpcyBibG9jay50SG9zdENvbmZpZ3VyYXRpb25Ob3RBdmFpbGFibGUABAQpAVRoZSBpbmhlcmVudCB3aGljaCBzdXBwbGllcyB0aGUgaG9zdCBjb25maWd1cmF0aW9uIGRpZCBub3QgcnVuIHRoaXMgYmxvY2suME5vdFNjaGVkdWxlZAAFBNhObyB2YWxpZGF0aW9uIGZ1bmN0aW9uIHVwZ3JhZGUgaXMgY3VycmVudGx5IHNjaGVkdWxlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQubQUMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFcnJvcgQEVAABBDBUb29NYW55Q2FsbHMAAARcVG9vIG1hbnkgY2FsbHMgYmF0Y2hlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQucQUMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFcnJvcgQEVAABBBxPbmdvaW5nAAAE6FRoZSBvcGVyYXRpb24gY2Fubm90IGNvbXBsZXRlIHNpbmNlIHNvbWUgTUJNcyBhcmUgb25nb2luZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQudQUIRHBhbGxldF9taWdyYXRpb25zME1ibUlzT25nb2luZwABDAxZZXMAAAAITm8AAQAUU3R1Y2sAAgAAeQUEGE9wdGlvbgQEVAF9BQEIEE5vbmUAAAAQU29tZQQAfQUAAAEAAH0FCERwYWxsZXRfbWlncmF0aW9ucyxNYm1Qcm9ncmVzcwAAEAFEY3VycmVudF9taWdyYXRpb244AQx1MzIAAUB0b3RhbF9taWdyYXRpb25zOAEMdTMyAAFcY3VycmVudF9taWdyYXRpb25fc3RlcHM4AQx1MzIAAWxjdXJyZW50X21pZ3JhdGlvbl9tYXhfc3RlcHNFAQEsT3B0aW9uPHUzMj4AAIEFCERwYWxsZXRfbWlncmF0aW9ucyRNYm1TdGF0dXMAAAwBHG9uZ29pbmd1BQEwTWJtSXNPbmdvaW5nAAEgcHJvZ3Jlc3N5BQFMT3B0aW9uPE1ibVByb2dyZXNzPgABIHByZWZpeGVzNAEwVmVjPFZlYzx1OD4+AACFBQxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAYkFBFMAAAQAkQUBGFZlYzxUPgAAiQUMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxCYWxhbmNlTG9jawQcQmFsYW5jZQH8AAwBCGlkNQIBOExvY2tJZGVudGlmaWVyAAEYYW1vdW50/AEcQmFsYW5jZQABHHJlYXNvbnONBQEcUmVhc29ucwAAjQUMPHBhbGxldF9iYWxhbmNlcxR0eXBlcxxSZWFzb25zAAEMDEZlZQAAABBNaXNjAAEADEFsbAACAACRBQAAAokFAJUFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBmQUEUwAABACdBQEYVmVjPFQ+AACZBQw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLFJlc2VydmVEYXRhCERSZXNlcnZlSWRlbnRpZmllcgE1AhxCYWxhbmNlAfwACAEIaWQ1AgFEUmVzZXJ2ZUlkZW50aWZpZXIAARhhbW91bnT8ARxCYWxhbmNlAACdBQAAApkFAKEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBpQUEUwAABACpBQEYVmVjPFQ+AAClBRQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2MgSWRBbW91bnQICElkATEEHEJhbGFuY2UB/AAIAQhpZDEEAQhJZAABGGFtb3VudPwBHEJhbGFuY2UAAKkFAAACpQUArQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGxBQRTAAAEALUFARhWZWM8VD4AALEFFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYyBJZEFtb3VudAgISWQBEBxCYWxhbmNlAfwACAEIaWQQAQhJZAABGGFtb3VudPwBHEJhbGFuY2UAALUFAAACsQUAuQUMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXJyb3IIBFQABEkAATA4VmVzdGluZ0JhbGFuY2UAAAScVmVzdGluZyBiYWxhbmNlIHRvbyBoaWdoIHRvIHNlbmQgdmFsdWUuVExpcXVpZGl0eVJlc3RyaWN0aW9ucwABBMhBY2NvdW50IGxpcXVpZGl0eSByZXN0cmljdGlvbnMgcHJldmVudCB3aXRoZHJhd2FsLkxJbnN1ZmZpY2llbnRCYWxhbmNlAAIEeEJhbGFuY2UgdG9vIGxvdyB0byBzZW5kIHZhbHVlLkhFeGlzdGVudGlhbERlcG9zaXQAAwTsVmFsdWUgdG9vIGxvdyB0byBjcmVhdGUgYWNjb3VudCBkdWUgdG8gZXhpc3RlbnRpYWwgZGVwb3NpdC40RXhwZW5kYWJpbGl0eQAEBJBUcmFuc2Zlci9wYXltZW50IHdvdWxkIGtpbGwgYWNjb3VudC5cRXhpc3RpbmdWZXN0aW5nU2NoZWR1bGUABQTMQSB2ZXN0aW5nIHNjaGVkdWxlIGFscmVhZHkgZXhpc3RzIGZvciB0aGlzIGFjY291bnQuLERlYWRBY2NvdW50AAYEjEJlbmVmaWNpYXJ5IGFjY291bnQgbXVzdCBwcmUtZXhpc3QuPFRvb01hbnlSZXNlcnZlcwAHBLhOdW1iZXIgb2YgbmFtZWQgcmVzZXJ2ZXMgZXhjZWVkIGBNYXhSZXNlcnZlc2AuMFRvb01hbnlIb2xkcwAIBPhOdW1iZXIgb2YgaG9sZHMgZXhjZWVkIGBWYXJpYW50Q291bnRPZjxUOjpSdW50aW1lSG9sZFJlYXNvbj5gLjhUb29NYW55RnJlZXplcwAJBJhOdW1iZXIgb2YgZnJlZXplcyBleGNlZWQgYE1heEZyZWV6ZXNgLkxJc3N1YW5jZURlYWN0aXZhdGVkAAoEAQFUaGUgaXNzdWFuY2UgY2Fubm90IGJlIG1vZGlmaWVkIHNpbmNlIGl0IGlzIGFscmVhZHkgZGVhY3RpdmF0ZWQuJERlbHRhWmVybwALBGRUaGUgZGVsdGEgY2Fubm90IGJlIHplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lr0FCGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudCBSZWxlYXNlcwABCCRWMUFuY2llbnQAAAAIVjIAAQAAwQUQNGZyYW1lX3N1cHBvcnQYdHJhaXRzHHN0b3JhZ2UYTm9Ecm9wBARUAcUFAAQAxQUBBFQAAMUFGDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGUkaW1iYWxhbmNlJEltYmFsYW5jZQwEQgH8GE9uRHJvcAA4T3Bwb3NpdGVPbkRyb3AAAAQBGGFtb3VudPwBBEIAAMkFDIxwYWxsZXRfYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZRR0eXBlczRBdXRob3JpemF0aW9uCCxCbG9ja051bWJlcgE4FEV4dHJhAc0FAAgBGGV4dGVudNEFAWhBdXRob3JpemF0aW9uRXh0ZW50PEV4dHJhPgABKGV4cGlyYXRpb244ASxCbG9ja051bWJlcgAAzQUMcHBhbGxldF9idWxsZXRpbl9kYXRhX3JlbmV3YWwUdHlwZXM8UGVybWFuZW50RXh0ZW50AAAEATxieXRlc19wZXJtYW5lbnQoAQx1NjQAANEFDIxwYWxsZXRfYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZRR0eXBlc0xBdXRob3JpemF0aW9uRXh0ZW50BBRFeHRyYQHNBQAUATB0cmFuc2FjdGlvbnM4AQx1MzIAAVh0cmFuc2FjdGlvbnNfYWxsb3dhbmNlOAEMdTMyAAEUYnl0ZXMoAQx1NjQAARRleHRyYc0FARRFeHRyYQABPGJ5dGVzX2FsbG93YW5jZSgBDHU2NAAA1QUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHZBQRTAAAEAOEFARhWZWM8VD4AANkFDIxwYWxsZXRfYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZRR0eXBlczxUcmFuc2FjdGlvbkluZm8EEE1ldGEB3QUAIAEoY2h1bmtfcm9vdDwBdDxCbGFrZVR3bzI1NiBhcyBIYXNoPjo6T3V0cHV0AAEwY29udGVudF9oYXNoCAEsQ29udGVudEhhc2gAARxoYXNoaW5ncQEBQEhhc2hpbmdBbGdvcml0aG0AASRjaWRfY29kZWMoASBDaWRDb2RlYwABEHNpemU4AQx1MzIAATxleHRyaW5zaWNfaW5kZXg4AQx1MzIAATBibG9ja19jaHVua3M4AShDaHVua0luZGV4AAEQbWV0Yd0FARBNZXRhAADdBQicYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZV9wcmltaXRpdmVzJEVudHJ5S2luZAABCBRTdG9yZQAAABRSZW5ldwABAADhBQAAAtkFAOUFCJxidWxsZXRpbl90cmFuc2FjdGlvbl9zdG9yYWdlX3ByaW1pdGl2ZXNYVmFsaWRUcmFuc2FjdGlvblBhcmFtcwAADAEodGFnX3ByZWZpeJ0EATAmJ3N0YXRpYyBzdHIAASBwcmlvcml0eSgBTFRyYW5zYWN0aW9uUHJpb3JpdHkAASRsb25nZXZpdHkoAVBUcmFuc2FjdGlvbkxvbmdldml0eQAA6QUMjHBhbGxldF9idWxsZXRpbl90cmFuc2FjdGlvbl9zdG9yYWdlGHBhbGxldBRFcnJvcgQEVAABSChCYWRDb250ZXh0AAAE9EF0dGVtcHRlZCB0byBjYWxsIGBzdG9yZWAvYHJlbmV3YCBvdXRzaWRlIG9mIGJsb2NrIGV4ZWN1dGlvbi4sQmFkRGF0YVNpemUAAQSYRGF0YSBzaXplIGlzIG5vdCBpbiB0aGUgYWxsb3dlZCByYW5nZS5MVG9vTWFueVRyYW5zYWN0aW9ucwACBIxUb28gbWFueSB0cmFuc2FjdGlvbnMgaW4gdGhlIGJsb2NrLjROb3RDb25maWd1cmVkAAMEWEludmFsaWQgY29uZmlndXJhdGlvbi48UmVuZXdlZE5vdEZvdW5kAAQEfFJlbmV3ZWQgZXh0cmluc2ljIGlzIG5vdCBmb3VuZC48VW5leHBlY3RlZFByb29mAAUElFByb29mIHdhcyBub3QgZXhwZWN0ZWQgaW4gdGhpcyBibG9jay4wSW52YWxpZFByb29mAAYEaFByb29mIGZhaWxlZCB2ZXJpZmljYXRpb24uME1pc3NpbmdQcm9vZgAHBFhNaXNzaW5nIHN0b3JhZ2UgcHJvb2YuQE1pc3NpbmdTdGF0ZURhdGEACATUVW5hYmxlIHRvIHZlcmlmeSBwcm9vZiBiZWNhdXNlIHN0YXRlIGRhdGEgaXMgbWlzc2luZy4sRG91YmxlQ2hlY2sACQSARG91YmxlIHByb29mIGNoZWNrIGluIHRoZSBibG9jay48UHJvb2ZOb3RDaGVja2VkAAoErFN0b3JhZ2UgcHJvb2Ygd2FzIG5vdCBjaGVja2VkIGluIHRoZSBibG9jay5UQXV0aG9yaXphdGlvbk5vdEZvdW5kAAsEcEF1dGhvcml6YXRpb24gd2FzIG5vdCBmb3VuZC5cQXV0aG9yaXphdGlvbk5vdEV4cGlyZWQADAR4QXV0aG9yaXphdGlvbiBoYXMgbm90IGV4cGlyZWQuSEludmFsaWRDb250ZW50SGFzaAANBIBDb250ZW50IGhhc2ggd2FzIG5vdCBjYWxjdWxhdGVkLkhBdXRob3JpemVyTm90Rm91bmQADgSEQXV0aG9yaXplciBhY2NvdW50IHdhcyBub3QgZm91bmQucEF1dGhvcml6ZXJCdWRnZXROb3RFeGhhdXN0ZWQADwhVAUF1dGhvcml6ZXIgaXMgbm90IGVsaWdpYmxlIGZvciBwZXJtaXNzaW9ubGVzcyByZW1vdmFsIOKAlCBpdCBzdGlsbCBoYXMgYnVkZ2V0IG9uIGJvdGjcYXhlcyBBTkQgKGlmIGB2YWxpZF91bnRpbGAgaXMgc2V0KSBoYXMgbm90IHlldCBleHBpcmVkLkRJbnZhbGlkVmFsaWRVbnRpbAAQCCkBYHZhbGlkX3VudGlsYCBzdXBwbGllZCB0byBgYWRkX2F1dGhvcml6ZXJgIGlzIGluIHRoZSBwYXN0IChgPD0gbm93YCwgd291bGTMZXhwaXJlIGltbWVkaWF0ZWx5KS4gUGFzcyBgTm9uZWAgZm9yIG5vIGV4cGlyYXRpb24ucEluc3VmZmljaWVudEF1dGhvcml6ZXJCdWRnZXQAEQwNAWBhdXRob3JpemVfYWNjb3VudGAgLyBgYXV0aG9yaXplX3ByZWltYWdlYCBjYWxsZWQgYnkgYSBzaWduZXIgd2hvc2XYYEFsbG93ZWRBdXRob3JpemVyc2AgYnVkZ2V0IGNhbm5vdCBjb3ZlciB0aGUgcmVxdWVzdGVkpGB0cmFuc2FjdGlvbnNgIC8gYGJ5dGVzYCAob3IgYG1heF9zaXplYCkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lu0FDHBwYWxsZXRfYnVsbGV0aW5fZGF0YV9yZW5ld2FsFHR5cGVzLFJlbmV3YWxEYXRhBCRBY2NvdW50SWQBBAAMARxhY2NvdW50BAEkQWNjb3VudElkAAEkcmVjdXJyaW5nXQEBEGJvb2wAARBwYWlkXQEBEGJvb2wAAPEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB9QUEUwAABAD5BQEYVmVjPFQ+AAD1BQAABAwI2QXtBQD5BQAAAvUFAP0FDHBwYWxsZXRfYnVsbGV0aW5fZGF0YV9yZW5ld2FsGHBhbGxldBRFcnJvcgQEVAABIChCYWRDb250ZXh0AAAE7EF0dGVtcHRlZCB0byBjYWxsIGBmb3JjZV9yZW5ld2Agb3V0c2lkZSBvZiBibG9jayBleGVjdXRpb24uPFJlbmV3ZWROb3RGb3VuZAABBHxSZW5ld2VkIGV4dHJpbnNpYyBpcyBub3QgZm91bmQuTFRvb01hbnlUcmFuc2FjdGlvbnMAAgToQmxvY2sgYWxyZWFkeSBjb250YWlucyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdHJhbnNhY3Rpb25zLlRSZW5ld2FsQWxyZWFkeUVuYWJsZWQAAwTYQSByZW5ld2FsIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBmb3IgdGhpcyBjb250ZW50IGhhc2guVEF1dG9SZW5ld2FsTm90RW5hYmxlZAAEBMhBdXRvLXJlbmV3YWwgaXMgbm90IGVuYWJsZWQgZm9yIHRoaXMgY29udGVudCBoYXNoLkxOb3RBdXRvUmVuZXdhbE93bmVyAAUE5ENhbGxlciBpcyBub3QgdGhlIG93bmVyIG9mIHRoZSBhdXRvLXJlbmV3YWwgcmVnaXN0cmF0aW9uLnxDYW5ub3REaXNhYmxlUHJlcGFpZEF1dG9SZW5ld2FsAAYMNQFgZGlzYWJsZV9hdXRvX3JlbmV3YCByZWplY3RlZDogdGhlIHJlZ2lzdHJhdGlvbiBoYXMgYmVlbiBwcmVwYWlkIGZvciBpdHMgbmV4dDEBY3ljbGUgYW5kIGNhbm5vdCBiZSBkaXNhYmxlZCBieSB0aGUgb3duZXIgdW50aWwgdGhlIGN5Y2xlIGZpcmVzIGFuZCBjb25zdW1lc/h0aGUgcHJlcGF5bWVudC4gUm9vdCBjYW4gc3RpbGwgZGlzYWJsZSBmb3IgZ292ZXJuYW5jZSBjbGVhbnVwLixCYWREYXRhU2l6ZQAHCDkBRGF0YSBzaXplIG9mIHRoZSByZW5ld2VkIGVudHJ5IGlzIG5vdCBpbiB0aGUgYWxsb3dlZCByYW5nZS4gQXBwZW5kZWQgbGFzdDogdGhlhGVhcmxpZXIgaW5kaWNlcyBhcmUgd2lyZS12aXNpYmxlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4BBgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABhAQEYVmVjPFQ+AAAFBgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQkGBFMAAAQADQYBGFZlYzxUPgAACQYMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0NENhbmRpZGF0ZUluZm8IJEFjY291bnRJZAEEHEJhbGFuY2UB/AAIAQx3aG8EASRBY2NvdW50SWQAARxkZXBvc2l0/AEcQmFsYW5jZQAADQYAAAIJBgARBgg0ZnJhbWVfc3VwcG9ydCBQYWxsZXRJZAAABAA1AgEcW3U4OyA4XQAAFQYMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEVycm9yBARUAAFERFRvb01hbnlDYW5kaWRhdGVzAAAEjFRoZSBwYWxsZXQgaGFzIHRvbyBtYW55IGNhbmRpZGF0ZXMuXFRvb0Zld0VsaWdpYmxlQ29sbGF0b3JzAAEErExlYXZpbmcgd291bGQgcmVzdWx0IGluIHRvbyBmZXcgY2FuZGlkYXRlcy5AQWxyZWFkeUNhbmRpZGF0ZQACBHxBY2NvdW50IGlzIGFscmVhZHkgYSBjYW5kaWRhdGUuME5vdENhbmRpZGF0ZQADBGxBY2NvdW50IGlzIG5vdCBhIGNhbmRpZGF0ZS5QVG9vTWFueUludnVsbmVyYWJsZXMABASEVGhlcmUgYXJlIHRvbyBtYW55IEludnVsbmVyYWJsZXMuTEFscmVhZHlJbnZ1bG5lcmFibGUABQSMQWNjb3VudCBpcyBhbHJlYWR5IGFuIEludnVsbmVyYWJsZS48Tm90SW52dWxuZXJhYmxlAAYEfEFjY291bnQgaXMgbm90IGFuIEludnVsbmVyYWJsZS5cTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQABwScQWNjb3VudCBoYXMgbm8gYXNzb2NpYXRlZCB2YWxpZGF0b3IgSUQuWFZhbGlkYXRvck5vdFJlZ2lzdGVyZWQACASMVmFsaWRhdG9yIElEIGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZC5sSW5zZXJ0VG9DYW5kaWRhdGVMaXN0RmFpbGVkAAkEnENvdWxkIG5vdCBpbnNlcnQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LnRSZW1vdmVGcm9tQ2FuZGlkYXRlTGlzdEZhaWxlZAAKBKRDb3VsZCBub3QgcmVtb3ZlIGZyb20gdGhlIGNhbmRpZGF0ZSBsaXN0LjREZXBvc2l0VG9vTG93AAsE9E5ldyBkZXBvc2l0IGFtb3VudCB3b3VsZCBiZSBiZWxvdyB0aGUgbWluaW11bSBjYW5kaWRhY3kgYm9uZC5kVXBkYXRlQ2FuZGlkYXRlTGlzdEZhaWxlZAAMBJBDb3VsZCBub3QgdXBkYXRlIHRoZSBjYW5kaWRhdGUgbGlzdC5ASW5zdWZmaWNpZW50Qm9uZAANBCkBRGVwb3NpdCBhbW91bnQgaXMgdG9vIGxvdyB0byB0YWtlIHRoZSB0YXJnZXQncyBzbG90IGluIHRoZSBjYW5kaWRhdGUgbGlzdC5QVGFyZ2V0SXNOb3RDYW5kaWRhdGUADgQtAVRoZSB0YXJnZXQgYWNjb3VudCB0byBiZSByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgaXMgbm90IGEgY2FuZGlkYXRlLkBJZGVudGljYWxEZXBvc2l0AA8EDQFUaGUgdXBkYXRlZCBkZXBvc2l0IGFtb3VudCBpcyBlcXVhbCB0byB0aGUgYW1vdW50IGFscmVhZHkgcmVzZXJ2ZWQuQEludmFsaWRVbnJlc2VydmUAEAQ9AUNhbm5vdCBsb3dlciBjYW5kaWRhY3kgYm9uZCB3aGlsZSBvY2N1cHlpbmcgYSBmdXR1cmUgY29sbGF0b3Igc2xvdCBpbiB0aGUgbGlzdC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuGQYAAAIdBgAdBgAABAgEsQEAIQYAAAIlBgAlBgAABAg4KQYAKQYMKHNwX3N0YWtpbmccb2ZmZW5jZTxPZmZlbmNlU2V2ZXJpdHkAAAQALQYBHFBlcmJpbGwAAC0GDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVyYmlsbAAABAA4AQx1MzIAADEGAAAECDUGGAA1Bgwcc3BfY29yZRhjcnlwdG8kS2V5VHlwZUlkAAAEAHABHFt1ODsgNF0AADkGDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXJyb3IEBFQAARQwSW52YWxpZFByb29mAAAEYEludmFsaWQgb3duZXJzaGlwIHByb29mLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAABBJxObyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRCBmb3IgYWNjb3VudC40RHVwbGljYXRlZEtleQACBGRSZWdpc3RlcmVkIGR1cGxpY2F0ZSBrZXkuGE5vS2V5cwADBKRObyBrZXlzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBhY2NvdW50LiROb0FjY291bnQABAQZAUtleSBzZXR0aW5nIGFjY291bnQgaXMgbm90IGxpdmUsIHNvIGl0J3MgaW1wb3NzaWJsZSB0byBhc3NvY2lhdGUga2V5cy4EdEVycm9yIGZvciB0aGUgc2Vzc2lvbiBwYWxsZXQuPQYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAG1AQRTAAAEAEEGARhWZWM8VD4AAEEGAAACtQEARQYISHNwX2NvbnNlbnN1c19zbG90cxBTbG90AAAEACgBDHU2NAAASQYAAAQIRQY4AE0GDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAGcBFMAAAQAUQYBLEJUcmVlU2V0PFQ+AABRBgQgQlRyZWVTZXQEBFQBnAAEAGUFAAAAVQYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFZBgRTAAAEAGUGARhWZWM8VD4AAFkGCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlWE91dGJvdW5kQ2hhbm5lbERldGFpbHMAABwBJHJlY2lwaWVudJwBGFBhcmFJZAABFHN0YXRlXQYBNE91dGJvdW5kU3RhdGUAATRzaWduYWxzX2V4aXN0XQEBEGJvb2wAASxmaXJzdF9pbmRleMQBDHUxNgABKGxhc3RfaW5kZXjEAQx1MTYAARRmbGFnc2EGAVBPdXRib3VuZENoYW5uZWxGbGFncwABMHF1ZXVlZF9ieXRlczgBDHUzMgAAXQYIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU0T3V0Ym91bmRTdGF0ZQABCAhPawAAACRTdXNwZW5kZWQAAQAAYQYIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWVQT3V0Ym91bmRDaGFubmVsRmxhZ3MAAAQBEGJpdHM4AQx1MzIAAGUGAAACWQYAaQYAAAQInMQAbQYMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABxBghkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTxRdWV1ZUNvbmZpZ0RhdGEAAAwBRHN1c3BlbmRfdGhyZXNob2xkOAEMdTMyAAE4ZHJvcF90aHJlc2hvbGQ4AQx1MzIAAUByZXN1bWVfdGhyZXNob2xkOAEMdTMyAAB1BgxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQURXJyb3IEBFQAARQ4QmFkUXVldWVDb25maWcAAAQRAVNldHRpbmcgdGhlIHF1ZXVlIGNvbmZpZyBmYWlsZWQgc2luY2Ugb25lIG9mIGl0cyB2YWx1ZXMgd2FzIGludmFsaWQuQEFscmVhZHlTdXNwZW5kZWQAAQSMVGhlIGV4ZWN1dGlvbiBpcyBhbHJlYWR5IHN1c3BlbmRlZC44QWxyZWFkeVJlc3VtZWQAAgSEVGhlIGV4ZWN1dGlvbiBpcyBhbHJlYWR5IHJlc3VtZWQudFRvb01hbnlBY3RpdmVPdXRib3VuZENoYW5uZWxzAAMEsFRoZXJlIGFyZSB0b28gbWFueSBhY3RpdmUgb3V0Ym91bmQgY2hhbm5lbHMuGFRvb0JpZwAEBFxUaGUgbWVzc2FnZSBpcyB0b28gYmlnLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC55BgwocGFsbGV0X3hjbRhwYWxsZXQsUXVlcnlTdGF0dXMELEJsb2NrTnVtYmVyATgBDBxQZW5kaW5nEAEkcmVzcG9uZGVywQEBRFZlcnNpb25lZExvY2F0aW9uAAFMbWF5YmVfbWF0Y2hfcXVlcmllcn0GAWRPcHRpb248VmVyc2lvbmVkTG9jYXRpb24+AAEwbWF5YmVfbm90aWZ5gQYBQE9wdGlvbjwodTgsIHU4KT4AARx0aW1lb3V0OAEsQmxvY2tOdW1iZXIAAAA8VmVyc2lvbk5vdGlmaWVyCAEYb3JpZ2luwQEBRFZlcnNpb25lZExvY2F0aW9uAAEkaXNfYWN0aXZlXQEBEGJvb2wAAQAUUmVhZHkIASByZXNwb25zZYkGAURWZXJzaW9uZWRSZXNwb25zZQABCGF0OAEsQmxvY2tOdW1iZXIAAgAAfQYEGE9wdGlvbgQEVAHBAQEIEE5vbmUAAAAQU29tZQQAwQEAAAEAAIEGBBhPcHRpb24EBFQBhQYBCBBOb25lAAAAEFNvbWUEAIUGAAABAACFBgAABAgMDACJBggMeGNtRFZlcnNpb25lZFJlc3BvbnNlAAEMCFYzBAA9AgEwdjM6OlJlc3BvbnNlAAMACFY0BACpAgEwdjQ6OlJlc3BvbnNlAAQACFY1BAD1AgEwdjU6OlJlc3BvbnNlAAUAAI0GAAAECDjBAQCRBgAABAwoKQE4AJUGDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBmQYEUwAABACdBgEYVmVjPFQ+AACZBgAABAjBATgAnQYAAAKZBgChBgwocGFsbGV0X3hjbRhwYWxsZXRUVmVyc2lvbk1pZ3JhdGlvblN0YWdlAAEQXE1pZ3JhdGVTdXBwb3J0ZWRWZXJzaW9uAAAAXE1pZ3JhdGVWZXJzaW9uTm90aWZpZXJzAAEAUE5vdGlmeUN1cnJlbnRUYXJnZXRzBABVAQE8T3B0aW9uPFZlYzx1OD4+AAIAaE1pZ3JhdGVBbmROb3RpZnlPbGRUYXJnZXRzAAMAAKUGAAAEDDgEgQMAqQYMKHBhbGxldF94Y20YcGFsbGV0aFJlbW90ZUxvY2tlZEZ1bmdpYmxlUmVjb3JkCEhDb25zdW1lcklkZW50aWZpZXIBEDBNYXhDb25zdW1lcnMAABABGGFtb3VudPwBEHUxMjgAARRvd25lcsEBAURWZXJzaW9uZWRMb2NhdGlvbgABGGxvY2tlcsEBAURWZXJzaW9uZWRMb2NhdGlvbgABJGNvbnN1bWVyc60GAdBCb3VuZGVkVmVjPChDb25zdW1lcklkZW50aWZpZXIsIHUxMjgpLCBNYXhDb25zdW1lcnM+AACtBgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAbEGBFMAAAQAtQYBGFZlYzxUPgAAsQYAAAQIEPwAtQYAAAKxBgC5BgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAb0GBFMAAAQAwQYBGFZlYzxUPgAAvQYAAAQI/MEBAMEGAAACvQYAxQYIKHBhbGxldF94Y21YQXV0aG9yaXplZEFsaWFzZXNFbnRyeQgYVGlja2V0AckGDE1BWAHNBgAIASBhbGlhc2Vyc9EGAXhCb3VuZGVkVmVjPE9yaWdpbkFsaWFzZXIsIE1BWD4AARh0aWNrZXTJBgEYVGlja2V0AADJBhQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlREhvbGRDb25zaWRlcmF0aW9uFARBAARGAARSAAREAAhGcAAABAD8AShGOjpCYWxhbmNlAADNBgwocGFsbGV0X3hjbRhwYWxsZXRQTWF4QXV0aG9yaXplZEFsaWFzZXMAAAAA0QYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHVBgRTAAAEANkGARhWZWM8VD4AANUGDEB4Y21fcnVudGltZV9hcGlzSGF1dGhvcml6ZWRfYWxpYXNlczRPcmlnaW5BbGlhc2VyAAAIASBsb2NhdGlvbsEBAURWZXJzaW9uZWRMb2NhdGlvbgABGGV4cGlyeYUDASxPcHRpb248dTY0PgAA2QYAAALVBgDdBgwocGFsbGV0X3hjbRhwYWxsZXQURXJyb3IEBFQAAXAsVW5yZWFjaGFibGUAAAhdAVRoZSBkZXNpcmVkIGRlc3RpbmF0aW9uIHdhcyB1bnJlYWNoYWJsZSwgZ2VuZXJhbGx5IGJlY2F1c2UgdGhlcmUgaXMgYSBubyB3YXkgb2Ygcm91dGluZxh0byBpdC4sU2VuZEZhaWx1cmUAAQhBAVRoZXJlIHdhcyBzb21lIG90aGVyIGlzc3VlIChpLmUuIG5vdCB0byBkbyB3aXRoIHJvdXRpbmcpIGluIHNlbmRpbmcgdGhlIG1lc3NhZ2UuyFBlcmhhcHMgYSBsYWNrIG9mIHNwYWNlIGZvciBidWZmZXJpbmcgdGhlIG1lc3NhZ2UuIEZpbHRlcmVkAAIEnFRoZSBtZXNzYWdlIGV4ZWN1dGlvbiBmYWlscyB0aGUgZmlsdGVyLkhVbndlaWdoYWJsZU1lc3NhZ2UAAwS0VGhlIG1lc3NhZ2UncyB3ZWlnaHQgY291bGQgbm90IGJlIGRldGVybWluZWQuYERlc3RpbmF0aW9uTm90SW52ZXJ0aWJsZQAEBNxUaGUgZGVzdGluYXRpb24gYExvY2F0aW9uYCBwcm92aWRlZCBjYW5ub3QgYmUgaW52ZXJ0ZWQuFEVtcHR5AAUEgFRoZSBhc3NldHMgdG8gYmUgc2VudCBhcmUgZW1wdHkuOENhbm5vdFJlYW5jaG9yAAYENQFDb3VsZCBub3QgcmUtYW5jaG9yIHRoZSBhc3NldHMgdG8gZGVjbGFyZSB0aGUgZmVlcyBmb3IgdGhlIGRlc3RpbmF0aW9uIGNoYWluLjRUb29NYW55QXNzZXRzAAcExFRvbyBtYW55IGFzc2V0cyBoYXZlIGJlZW4gYXR0ZW1wdGVkIGZvciB0cmFuc2Zlci40SW52YWxpZE9yaWdpbgAIBHhPcmlnaW4gaXMgaW52YWxpZCBmb3Igc2VuZGluZy4oQmFkVmVyc2lvbgAJBCEBVGhlIHZlcnNpb24gb2YgdGhlIGBWZXJzaW9uZWRgIHZhbHVlIHVzZWQgaXMgbm90IGFibGUgdG8gYmUgaW50ZXJwcmV0ZWQuLEJhZExvY2F0aW9uAAoIQQFUaGUgZ2l2ZW4gbG9jYXRpb24gY291bGQgbm90IGJlIHVzZWQgKGUuZy4gYmVjYXVzZSBpdCBjYW5ub3QgYmUgZXhwcmVzc2VkIGluIHRoZWBkZXNpcmVkIHZlcnNpb24gb2YgWENNKS44Tm9TdWJzY3JpcHRpb24ACwS8VGhlIHJlZmVyZW5jZWQgc3Vic2NyaXB0aW9uIGNvdWxkIG5vdCBiZSBmb3VuZC5EQWxyZWFkeVN1YnNjcmliZWQADAQRAVRoZSBsb2NhdGlvbiBpcyBpbnZhbGlkIHNpbmNlIGl0IGFscmVhZHkgaGFzIGEgc3Vic2NyaXB0aW9uIGZyb20gdXMuWENhbm5vdENoZWNrT3V0VGVsZXBvcnQADQQpAUNvdWxkIG5vdCBjaGVjay1vdXQgdGhlIGFzc2V0cyBmb3IgdGVsZXBvcnRhdGlvbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4uKExvd0JhbGFuY2UADgRBAVRoZSBvd25lciBkb2VzIG5vdCBvd24gKGFsbCkgb2YgdGhlIGFzc2V0IHRoYXQgdGhleSB3aXNoIHRvIGRvIHRoZSBvcGVyYXRpb24gb24uMFRvb01hbnlMb2NrcwAPBMBUaGUgYXNzZXQgb3duZXIgaGFzIHRvbyBtYW55IGxvY2tzIG9uIHRoZSBhc3NldC5MQWNjb3VudE5vdFNvdmVyZWlnbgAQBDEBVGhlIGdpdmVuIGFjY291bnQgaXMgbm90IGFuIGlkZW50aWZpYWJsZSBzb3ZlcmVpZ24gYWNjb3VudCBmb3IgYW55IGxvY2F0aW9uLihGZWVzTm90TWV0ABEEKQFUaGUgb3BlcmF0aW9uIHJlcXVpcmVkIGZlZXMgdG8gYmUgcGFpZCB3aGljaCB0aGUgaW5pdGlhdG9yIGNvdWxkIG5vdCBtZWV0LjBMb2NrTm90Rm91bmQAEgT0QSByZW1vdGUgbG9jayB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGRhdGEgY291bGQgbm90IGJlIGZvdW5kLhRJblVzZQATBEkBVGhlIHVubG9jayBvcGVyYXRpb24gY2Fubm90IHN1Y2NlZWQgYmVjYXVzZSB0aGVyZSBhcmUgc3RpbGwgY29uc3VtZXJzIG9mIHRoZSBsb2NrLmhJbnZhbGlkQXNzZXRVbmtub3duUmVzZXJ2ZQAVBPBJbnZhbGlkIGFzc2V0LCByZXNlcnZlIGNoYWluIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIGZvciBpdC54SW52YWxpZEFzc2V0VW5zdXBwb3J0ZWRSZXNlcnZlABYERQFJbnZhbGlkIGFzc2V0LCBkbyBub3Qgc3VwcG9ydCByZW1vdGUgYXNzZXQgcmVzZXJ2ZXMgd2l0aCBkaWZmZXJlbnQgZmVlcyByZXNlcnZlcy48VG9vTWFueVJlc2VydmVzABcESQFUb28gbWFueSBhc3NldHMgd2l0aCBkaWZmZXJlbnQgcmVzZXJ2ZSBsb2NhdGlvbnMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZQAYBHxMb2NhbCBYQ00gZXhlY3V0aW9uIGluY29tcGxldGUuYFRvb01hbnlBdXRob3JpemVkQWxpYXNlcwAZBLhUb28gbWFueSBsb2NhdGlvbnMgYXV0aG9yaXplZCB0byBhbGlhcyBvcmlnaW4uNEV4cGlyZXNJblBhc3QAGgSMRXhwaXJ5IGJsb2NrIG51bWJlciBpcyBpbiB0aGUgcGFzdC40QWxpYXNOb3RGb3VuZAAbBNBUaGUgYWxpYXMgdG8gcmVtb3ZlIGF1dGhvcml6YXRpb24gZm9yIHdhcyBub3QgZm91bmQuhExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcggBFGluZGV4DAFASW5zdHJ1Y3Rpb25JbmRleAABFGVycm9y4QYBOEV4ZWN1dGlvbkVycm9yABwINQFMb2NhbCBYQ00gZXhlY3V0aW9uIGluY29tcGxldGUgd2l0aCB0aGUgYWN0dWFsIFhDTSBlcnJvciBhbmQgdGhlIGluZGV4IG9mIHRoZYhpbnN0cnVjdGlvbiB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LuEGDChwYWxsZXRfeGNtGGVycm9yczhFeGVjdXRpb25FcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIANFRvb01hbnlBc3NldHMAIwBMVW5oYW5kbGVkWGNtVmVyc2lvbgAkAEhXZWlnaHRMaW1pdFJlYWNoZWQAJQAcQmFycmllcgAmAExXZWlnaHROb3RDb21wdXRhYmxlACcAREV4Y2VlZHNTdGFja0xpbWl0ACgAAOUGCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZSRCb29rU3RhdGUENE1lc3NhZ2VPcmlnaW4BkQMAGAEUYmVnaW44ASRQYWdlSW5kZXgAAQxlbmQ4ASRQYWdlSW5kZXgAARRjb3VudDgBJFBhZ2VJbmRleAABQHJlYWR5X25laWdoYm91cnPpBgGET3B0aW9uPE5laWdoYm91cnM8TWVzc2FnZU9yaWdpbj4+AAE0bWVzc2FnZV9jb3VudCgBDHU2NAABEHNpemUoAQx1NjQAAOkGBBhPcHRpb24EBFQB7QYBCBBOb25lAAAAEFNvbWUEAO0GAAABAADtBghQcGFsbGV0X21lc3NhZ2VfcXVldWUoTmVpZ2hib3VycwQ0TWVzc2FnZU9yaWdpbgGRAwAIARBwcmV2kQMBNE1lc3NhZ2VPcmlnaW4AARBuZXh0kQMBNE1lc3NhZ2VPcmlnaW4AAPEGAAAECJEDOAD1BghQcGFsbGV0X21lc3NhZ2VfcXVldWUQUGFnZQgQU2l6ZQE4IEhlYXBTaXplAAAYASRyZW1haW5pbmc4ARBTaXplAAE4cmVtYWluaW5nX3NpemU4ARBTaXplAAEsZmlyc3RfaW5kZXg4ARBTaXplAAEUZmlyc3Q4ARBTaXplAAEQbGFzdDgBEFNpemUAARBoZWFw+QYBnEJvdW5kZWRWZWM8dTgsIEludG9VMzI8SGVhcFNpemUsIFNpemU+PgAA+QYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAD9BgxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0FEVycm9yBARUAAEkLE5vdFJlYXBhYmxlAAAISQFQYWdlIGlzIG5vdCByZWFwYWJsZSBiZWNhdXNlIGl0IGhhcyBpdGVtcyByZW1haW5pbmcgdG8gYmUgcHJvY2Vzc2VkIGFuZCBpcyBub3Qgb2xkHGVub3VnaC4YTm9QYWdlAAEEhFBhZ2UgdG8gYmUgcmVhcGVkIGRvZXMgbm90IGV4aXN0LiROb01lc3NhZ2UAAgSoVGhlIHJlZmVyZW5jZWQgbWVzc2FnZSBjb3VsZCBub3QgYmUgZm91bmQuQEFscmVhZHlQcm9jZXNzZWQAAwQBAVRoZSBtZXNzYWdlIHdhcyBhbHJlYWR5IHByb2Nlc3NlZCBhbmQgY2Fubm90IGJlIHByb2Nlc3NlZCBhZ2Fpbi4YUXVldWVkAAQErFRoZSBtZXNzYWdlIGlzIHF1ZXVlZCBmb3IgZnV0dXJlIGV4ZWN1dGlvbi5ISW5zdWZmaWNpZW50V2VpZ2h0AAUEGQFUaGVyZSBpcyB0ZW1wb3JhcmlseSBub3QgZW5vdWdoIHdlaWdodCB0byBjb250aW51ZSBzZXJ2aWNpbmcgbWVzc2FnZXMuYFRlbXBvcmFyaWx5VW5wcm9jZXNzYWJsZQAGEKhUaGlzIG1lc3NhZ2UgaXMgdGVtcG9yYXJpbHkgdW5wcm9jZXNzYWJsZS4AWQFTdWNoIGVycm9ycyBhcmUgZXhwZWN0ZWQsIGJ1dCBub3QgZ3VhcmFudGVlZCwgdG8gcmVzb2x2ZSB0aGVtc2VsdmVzIGV2ZW50dWFsbHkgdGhyb3VnaCRyZXRyeWluZy4sUXVldWVQYXVzZWQABwzsVGhlIHF1ZXVlIGlzIHBhdXNlZCBhbmQgbm8gbWVzc2FnZSBjYW4gYmUgZXhlY3V0ZWQgZnJvbSBpdC4AHQFUaGlzIGNhbiBjaGFuZ2UgYXQgYW55IHRpbWUgYW5kIG1heSByZXNvbHZlIGluIHRoZSBmdXR1cmUgYnkgcmUtdHJ5aW5nLkxSZWN1cnNpdmVEaXNhbGxvd2VkAAgEMQFBbm90aGVyIGNhbGwgaXMgaW4gcHJvZ3Jlc3MgYW5kIG5lZWRzIHRvIGZpbmlzaCBiZWZvcmUgdGhpcyBjYWxsIGNhbiBoYXBwZW4uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LgEHDCxwYWxsZXRfc3VkbxhwYWxsZXQURXJyb3IEBFQAAQQsUmVxdWlyZVN1ZG8AAASAU2VuZGVyIG11c3QgYmUgdGhlIFN1ZG8gYWNjb3VudC4EaEVycm9yIGZvciB0aGUgU3VkbyBwYWxsZXQuBQcISHNwX2NvbnNlbnN1c19zbG90czBTbG90RHVyYXRpb24AAAQAKAEMdTY0AAAJBxAoc3BfcnVudGltZRxnZW5lcmljFGJsb2NrJExhenlCbG9jawgYSGVhZGVyAVwkRXh0cmluc2ljAdkEAAgBGGhlYWRlclwBGEhlYWRlcgABKGV4dHJpbnNpY3MNBwFQVmVjPE9wYXF1ZUV4dHJpbnNpYz4AAA0HAAACEQcAEQcIKHNwX3J1bnRpbWU8T3BhcXVlRXh0cmluc2ljAAAEABgBHFZlYzx1OD4AABUHCChzcF9ydW50aW1lWEV4dHJpbnNpY0luY2x1c2lvbk1vZGUAAQg0QWxsRXh0cmluc2ljcwAAADRPbmx5SW5oZXJlbnRzAAEAABkHCBxzcF9jb3JlOE9wYXF1ZU1ldGFkYXRhAAAEABgBHFZlYzx1OD4AAB0HBBhPcHRpb24EBFQBGQcBCBBOb25lAAAAEFNvbWUEABkHAAABAAAhBwAAAjgAJQcEGFJlc3VsdAgEVAEhBARFASkHAQgIT2sEACEEAAAAAAxFcnIEACkHAAABAAApBwwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eWBUcmFuc2FjdGlvblZhbGlkaXR5RXJyb3IAAQgcSW52YWxpZAQALQcBSEludmFsaWRUcmFuc2FjdGlvbgAAABxVbmtub3duBAAxBwFIVW5rbm93blRyYW5zYWN0aW9uAAEAAC0HDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5SEludmFsaWRUcmFuc2FjdGlvbgABNBBDYWxsAAAAHFBheW1lbnQAAQAYRnV0dXJlAAIAFFN0YWxlAAMAIEJhZFByb29mAAQAREFuY2llbnRCaXJ0aEJsb2NrAAUAREV4aGF1c3RzUmVzb3VyY2VzAAYAGEN1c3RvbQQADAEIdTgABwAwQmFkTWFuZGF0b3J5AAgATE1hbmRhdG9yeVZhbGlkYXRpb24ACQAkQmFkU2lnbmVyAAoAVEluZGV0ZXJtaW5hdGVJbXBsaWNpdAALADRVbmtub3duT3JpZ2luAAwAADEHDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5SFVua25vd25UcmFuc2FjdGlvbgABDDBDYW5ub3RMb29rdXAAAABMTm9VbnNpZ25lZFZhbGlkYXRvcgABABhDdXN0b20EAAwBCHU4AAIAADUHCDBzcF9pbmhlcmVudHMwSW5oZXJlbnREYXRhAAAEARBkYXRhOQcBlEJUcmVlTWFwPEluaGVyZW50SWRlbnRpZmllciwgVmVjPHU4Pj4AADkHBCBCVHJlZU1hcAgESwE1AgRWARgABAA9BwAAAD0HAAACQQcAQQcAAAQINQIYAEUHCDBzcF9pbmhlcmVudHNQQ2hlY2tJbmhlcmVudHNSZXN1bHQAAAwBEG9rYXldAQEQYm9vbAABLGZhdGFsX2Vycm9yXQEBEGJvb2wAARhlcnJvcnM1BwEwSW5oZXJlbnREYXRhAABJBwwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eURUcmFuc2FjdGlvblNvdXJjZQABDBxJbkJsb2NrAAAAFExvY2FsAAEAIEV4dGVybmFsAAIAAE0HBBhSZXN1bHQIBFQBUQcERQEpBwEICE9rBABRBwAAAAAMRXJyBAApBwAAAQAAUQcMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlAVmFsaWRUcmFuc2FjdGlvbgAAFAEgcHJpb3JpdHkoAUxUcmFuc2FjdGlvblByaW9yaXR5AAEgcmVxdWlyZXM0AUxWZWM8VHJhbnNhY3Rpb25UYWc+AAEgcHJvdmlkZXM0AUxWZWM8VHJhbnNhY3Rpb25UYWc+AAEkbG9uZ2V2aXR5KAFQVHJhbnNhY3Rpb25Mb25nZXZpdHkAASRwcm9wYWdhdGVdAQEQYm9vbAAAVQcMKHNwX3Nlc3Npb24scnVudGltZV9hcGloT3BhcXVlR2VuZXJhdGVkU2Vzc2lvbktleXMAAAgBEGtleXMYARxWZWM8dTg+AAEUcHJvb2YYARxWZWM8dTg+AABZBwQYT3B0aW9uBARUAV0HAQgQTm9uZQAAABBTb21lBABdBwAAAQAAXQcAAAJhBwBhBwAABAgYNQYAZQcMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzTFJ1bnRpbWVEaXNwYXRjaEluZm8IHEJhbGFuY2UB/BhXZWlnaHQBKQEADAEYd2VpZ2h0KQEBGFdlaWdodAABFGNsYXNz+QMBNERpc3BhdGNoQ2xhc3MAASxwYXJ0aWFsX2ZlZfwBHEJhbGFuY2UAAGkHDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlcyhGZWVEZXRhaWxzBBxCYWxhbmNlAfwACAE0aW5jbHVzaW9uX2ZlZW0HAXRPcHRpb248SW5jbHVzaW9uRmVlPEJhbGFuY2U+PgABDHRpcPwBHEJhbGFuY2UAAG0HBBhPcHRpb24EBFQBcQcBCBBOb25lAAAAEFNvbWUEAHEHAAABAABxBwxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXMwSW5jbHVzaW9uRmVlBBxCYWxhbmNlAfwADAEgYmFzZV9mZWX8ARxCYWxhbmNlAAEcbGVuX2ZlZfwBHEJhbGFuY2UAAUxhZGp1c3RlZF93ZWlnaHRfZmVl/AEcQmFsYW5jZQAAdQcEGFJlc3VsdAgEVAF5BwRFAX0HAQgIT2sEAHkHAAAAAAxFcnIEAH0HAAABAAB5BwAAAoEDAH0HDEB4Y21fcnVudGltZV9hcGlzEGZlZXMURXJyb3IAARg0VW5pbXBsZW1lbnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEATFdlaWdodE5vdENvbXB1dGFibGUAAgBMVW5oYW5kbGVkWGNtVmVyc2lvbgADADRBc3NldE5vdEZvdW5kAAQAKFVucm91dGFibGUABQAAgQcEGFJlc3VsdAgEVAEpAQRFAX0HAQgIT2sEACkBAAAAAAxFcnIEAH0HAAABAACFBwQYUmVzdWx0CARUAfwERQF9BwEICE9rBAD8AAAAAAxFcnIEAH0HAAABAACJBwQYUmVzdWx0CARUAU0DBEUBfQcBCAhPawQATQMAAAAADEVycgQAfQcAAAEAAI0HBBhSZXN1bHQIBFQBkQcERQG1BwEICE9rBACRBwAAAAAMRXJyBAC1BwAAAQAAkQcMQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkRDYWxsRHJ5UnVuRWZmZWN0cwQURXZlbnQB7QMAEAFAZXhlY3V0aW9uX3Jlc3VsdJUHAWhEaXNwYXRjaFJlc3VsdFdpdGhQb3N0SW5mbwABOGVtaXR0ZWRfZXZlbnRzoQcBKFZlYzxFdmVudD4AASRsb2NhbF94Y22lBwFgT3B0aW9uPFZlcnNpb25lZFhjbTwoKT4+AAE4Zm9yd2FyZGVkX3hjbXOpBwG8VmVjPChWZXJzaW9uZWRMb2NhdGlvbiwgVmVjPFZlcnNpb25lZFhjbTwoKT4+KT4AAJUHBBhSZXN1bHQIBFQBmQcERQGdBwEICE9rBACZBwAAAAAMRXJyBACdBwAAAQAAmQcMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUG9zdERpc3BhdGNoSW5mbwAACAE0YWN0dWFsX3dlaWdodBkDAThPcHRpb248V2VpZ2h0PgABIHBheXNfZmVl/QMBEFBheXMAAJ0HCChzcF9ydW50aW1lZERpc3BhdGNoRXJyb3JXaXRoUG9zdEluZm8EEEluZm8BmQcACAEkcG9zdF9pbmZvmQcBEEluZm8AARRlcnJvcgEEATREaXNwYXRjaEVycm9yAAChBwAAAu0DAKUHBBhPcHRpb24EBFQBDQIBCBBOb25lAAAAEFNvbWUEAA0CAAABAACpBwAAAq0HAK0HAAAECMEBsQcAsQcAAAINAgC1BwxAeGNtX3J1bnRpbWVfYXBpcxxkcnlfcnVuFEVycm9yAAEINFVuaW1wbGVtZW50ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAAC5BwQYUmVzdWx0CARUAb0HBEUBtQcBCAhPawQAvQcAAAAADEVycgQAtQcAAAEAAL0HDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5AWGNtRHJ5UnVuRWZmZWN0cwQURXZlbnQB7QMADAFAZXhlY3V0aW9uX3Jlc3VsdGUEARxPdXRjb21lAAE4ZW1pdHRlZF9ldmVudHOhBwEoVmVjPEV2ZW50PgABOGZvcndhcmRlZF94Y21zqQcBvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AADBBwQYUmVzdWx0CARUAQQERQHFBwEICE9rBAAEAAAAAAxFcnIEAMUHAAABAADFBwxAeGNtX3J1bnRpbWVfYXBpcyxjb252ZXJzaW9ucxRFcnJvcgABCCxVbnN1cHBvcnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAAMkHCAx4Y204VmVyc2lvbmVkQXNzZXQAAQwIVjMEACUCATh2Mzo6TXVsdGlBc3NldAADAAhWNAQAmQIBJHY0OjpBc3NldAAEAAhWNQQA5QIBJHY1OjpBc3NldAAFAADNBwQYUmVzdWx0CARUAV0BBEUB0QcBCAhPawQAXQEAAAAADEVycgQA0QcAAAEAANEHDEB4Y21fcnVudGltZV9hcGlzNHRydXN0ZWRfcXVlcnkURXJyb3IAAQh4VmVyc2lvbmVkQXNzZXRDb252ZXJzaW9uRmFpbGVkAAAAhFZlcnNpb25lZExvY2F0aW9uQ29udmVyc2lvbkZhaWxlZAABAADVBwQYUmVzdWx0CARUAdkGBEUB2QcBCAhPawQA2QYAAAAADEVycgQA2QcAAAEAANkHDEB4Y21fcnVudGltZV9hcGlzSGF1dGhvcml6ZWRfYWxpYXNlcxRFcnJvcgABBHxMb2NhdGlvblZlcnNpb25Db252ZXJzaW9uRmFpbGVkAAAAAN0HBBhSZXN1bHQIBFQBXQEERQHZBwEICE9rBABdAQAAAAAMRXJyBADZBwAAAQAA4QcIXGN1bXVsdXNfcHJpbWl0aXZlc19jb3JlNENvbGxhdGlvbkluZm8AABgBPHVwd2FyZF9tZXNzYWdlczQBSFZlYzxVcHdhcmRNZXNzYWdlPgABTGhvcml6b250YWxfbWVzc2FnZXNVBQFgVmVjPE91dGJvdW5kSHJtcE1lc3NhZ2U+AAFMbmV3X3ZhbGlkYXRpb25fY29kZeUHAYxPcHRpb248cmVsYXlfY2hhaW46OlZhbGlkYXRpb25Db2RlPgABbHByb2Nlc3NlZF9kb3dud2FyZF9tZXNzYWdlczgBDHUzMgABOGhybXBfd2F0ZXJtYXJrOAFgcmVsYXlfY2hhaW46OkJsb2NrTnVtYmVyAAEkaGVhZF9kYXRhTAEgSGVhZERhdGEAAOUHBBhPcHRpb24EBFQB6QcBCBBOb25lAAAAEFNvbWUEAOkHAAABAADpBwx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlczhWYWxpZGF0aW9uQ29kZQAABAAYARxWZWM8dTg+AADtBwAAAvEHAPEHCHBzcF90cmFuc2FjdGlvbl9zdG9yYWdlX3Byb29mWEluZGV4ZWRUcmFuc2FjdGlvbkluZm8AABQBMGNvbnRlbnRfaGFzaAgBLENvbnRlbnRIYXNoAAEQc2l6ZTgBDHUzMgABHGhhc2hpbmf1BwFASGFzaGluZ0FsZ29yaXRobQABJGNpZF9jb2RlYygBIENpZENvZGVjAAE8ZXh0cmluc2ljX2luZGV4OAEMdTMyAAD1Bwhwc3BfdHJhbnNhY3Rpb25fc3RvcmFnZV9wcm9vZkBIYXNoaW5nQWxnb3JpdGhtAAEMKEJsYWtlMmIyNTYAAAAgU2hhMl8yNTYAAQAkS2VjY2FrMjU2AAIAAPkHBBhPcHRpb24EBFQB/QcBCBBOb25lAAAAEFNvbWUEAP0HAAABAAD9Bwi8cGFsbGV0X2J1bGxldGluX3RyYW5zYWN0aW9uX3N0b3JhZ2VfcnVudGltZV9hcGlQQWNjb3VudEF1dGhvcml6YXRpb24ELEJsb2NrTnVtYmVyATgAGAEoZXhwaXJlc19hdDgBLEJsb2NrTnVtYmVyAAE8Ynl0ZXNfYWxsb3dhbmNlKAEMdTY0AAEoYnl0ZXNfdXNlZCgBDHU2NAABUGJ5dGVzX3Blcm1hbmVudF91c2VkKAEMdTY0AAFYdHJhbnNhY3Rpb25zX2FsbG93YW5jZTgBDHUzMgABRHRyYW5zYWN0aW9uc191c2VkOAEMdTMyAAABCAQYUmVzdWx0CARUARAERQGdBAEICE9rBAAQAAAAAAxFcnIEAJ0EAAABAAAFCAQYT3B0aW9uBARUAZ0EAQgQTm9uZQAAABBTb21lBACdBAAAAQAACQgAAAKdBAANCAhYYnVsbGV0aW5fcGFzZW9fcnVudGltZTBSdW50aW1lRXJyb3IAATQYU3lzdGVtBADNBAFwZnJhbWVfc3lzdGVtOjpFcnJvcjxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAGkFAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFcnJvcjxSdW50aW1lPgABABxVdGlsaXR5BABtBQF4cGFsbGV0X3V0aWxpdHk6OkVycm9yPFJ1bnRpbWU+AAYAUE11bHRpQmxvY2tNaWdyYXRpb25zBABxBQGEcGFsbGV0X21pZ3JhdGlvbnM6OkVycm9yPFJ1bnRpbWU+AAcAIEJhbGFuY2VzBAC5BQF8cGFsbGV0X2JhbGFuY2VzOjpFcnJvcjxSdW50aW1lPgAKAEhUcmFuc2FjdGlvblN0b3JhZ2UEAOkFAcxwYWxsZXRfYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZTo6RXJyb3I8UnVudGltZT4AKAAsRGF0YVJlbmV3YWwEAP0FAbBwYWxsZXRfYnVsbGV0aW5fZGF0YV9yZW5ld2FsOjpFcnJvcjxSdW50aW1lPgAqAERDb2xsYXRvclNlbGVjdGlvbgQAFQYBpHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb246OkVycm9yPFJ1bnRpbWU+ABUAHFNlc3Npb24EADkGAXhwYWxsZXRfc2Vzc2lvbjo6RXJyb3I8UnVudGltZT4AFgAkWGNtcFF1ZXVlBAB1BgGkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTo6RXJyb3I8UnVudGltZT4AHgAsUG9sa2Fkb3RYY20EAN0GAWhwYWxsZXRfeGNtOjpFcnJvcjxSdW50aW1lPgAfADBNZXNzYWdlUXVldWUEAP0GAZBwYWxsZXRfbWVzc2FnZV9xdWV1ZTo6RXJyb3I8UnVudGltZT4AIgAQU3VkbwQAAQcBbHBhbGxldF9zdWRvOjpFcnJvcjxSdW50aW1lPgBkAABcGFN5c3RlbQEYU3lzdGVtUBxBY2NvdW50AQEEAgTVA0EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAE6CBUaGUgZnVsbCBhY2NvdW50IGluZm9ybWF0aW9uIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudCBJRC4AOEV4dHJpbnNpY0NvdW50AAA4BAAEuCBUb3RhbCBleHRyaW5zaWNzIGNvdW50IGZvciB0aGUgY3VycmVudCBibG9jay4AQEluaGVyZW50c0FwcGxpZWQBAF0BBAAEpCBXaGV0aGVyIGFsbCBpbmhlcmVudHMgaGF2ZSBiZWVuIGFwcGxpZWQuACxCbG9ja1dlaWdodAEA4QMYAAAAAAAABIggVGhlIGN1cnJlbnQgd2VpZ2h0IGZvciB0aGUgYmxvY2suACRCbG9ja1NpemUAADgEAAywIFRvdGFsIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgY3VycmVudCBibG9jay4AyCBUcmFja3MgdGhlIHNpemUgb2YgdGhlIGhlYWRlciBhbmQgYWxsIGV4dHJpbnNpY3MuACRCbG9ja0hhc2gBAQQFODyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEmCBNYXAgb2YgYmxvY2sgbnVtYmVycyB0byBibG9jayBoYXNoZXMuADRFeHRyaW5zaWNEYXRhAQEEBTgYBAAEPQEgRXh0cmluc2ljcyBkYXRhIGZvciB0aGUgY3VycmVudCBibG9jayAobWFwcyBhbiBleHRyaW5zaWMncyBpbmRleCB0byBpdHMgZGF0YSkuABhOdW1iZXIBADgQAAAAAAQJASBUaGUgY3VycmVudCBibG9jayBudW1iZXIgYmVpbmcgcHJvY2Vzc2VkLiBTZXQgYnkgYGV4ZWN1dGVfYmxvY2tgLgAoUGFyZW50SGFzaAEAPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARwIEhhc2ggb2YgdGhlIHByZXZpb3VzIGJsb2NrLgAYRGlnZXN0AQBkBAAE8CBEaWdlc3Qgb2YgdGhlIGN1cnJlbnQgYmxvY2ssIGFsc28gcGFydCBvZiB0aGUgYmxvY2sgaGVhZGVyLgAYRXZlbnRzAQDlAwQAHKAgRXZlbnRzIGRlcG9zaXRlZCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suAB0BIE5PVEU6IFRoZSBpdGVtIGlzIHVuYm91bmQgYW5kIHNob3VsZCB0aGVyZWZvcmUgbmV2ZXIgYmUgcmVhZCBvbiBjaGFpbi7QIEl0IGNvdWxkIG90aGVyd2lzZSBpbmZsYXRlIHRoZSBQb1Ygc2l6ZSBvZiBhIGJsb2NrLgAtASBFdmVudHMgaGF2ZSBhIGxhcmdlIGluLW1lbW9yeSBzaXplLiBCb3ggdGhlIGV2ZW50cyB0byBub3QgZ28gb3V0LW9mLW1lbW9yefwganVzdCBpbiBjYXNlIHNvbWVvbmUgc3RpbGwgcmVhZHMgdGhlbSBmcm9tIHdpdGhpbiB0aGUgcnVudGltZS4AKEV2ZW50Q291bnQBADgQAAAAAAS4IFRoZSBudW1iZXIgb2YgZXZlbnRzIGluIHRoZSBgRXZlbnRzPFQ+YCBsaXN0LgAsRXZlbnRUb3BpY3MBAQQCPI0EBAAoJQEgTWFwcGluZyBiZXR3ZWVuIGEgdG9waWMgKHJlcHJlc2VudGVkIGJ5IFQ6Okhhc2gpIGFuZCBhIHZlY3RvciBvZiBpbmRleGVzlCBvZiBldmVudHMgaW4gdGhlIGA8RXZlbnRzPFQ+PmAgbGlzdC4AUQEgQWxsIHRvcGljIHZlY3RvcnMgaGF2ZSBkZXRlcm1pbmlzdGljIHN0b3JhZ2UgbG9jYXRpb25zIGRlcGVuZGluZyBvbiB0aGUgdG9waWMuIFRoaXNFASBhbGxvd3MgbGlnaHQtY2xpZW50cyB0byBsZXZlcmFnZSB0aGUgY2hhbmdlcyB0cmllIHN0b3JhZ2UgdHJhY2tpbmcgbWVjaGFuaXNtIGFuZOQgaW4gY2FzZSBvZiBjaGFuZ2VzIGZldGNoIHRoZSBsaXN0IG9mIGV2ZW50cyBvZiBpbnRlcmVzdC4AWQEgVGhlIHZhbHVlIGhhcyB0aGUgdHlwZSBgKEJsb2NrTnVtYmVyRm9yPFQ+LCBFdmVudEluZGV4KWAgYmVjYXVzZSBpZiB3ZSB1c2VkIG9ubHkganVzdE0BIHRoZSBgRXZlbnRJbmRleGAgdGhlbiBpbiBjYXNlIGlmIHRoZSB0b3BpYyBoYXMgdGhlIHNhbWUgY29udGVudHMgb24gdGhlIG5leHQgYmxvY2sBASBubyBub3RpZmljYXRpb24gd2lsbCBiZSB0cmlnZ2VyZWQgdGh1cyB0aGUgZXZlbnQgbWlnaHQgYmUgbG9zdC4ASExhc3RSdW50aW1lVXBncmFkZQAAlQQEAARVASBTdG9yZXMgdGhlIGBzcGVjX3ZlcnNpb25gIGFuZCBgc3BlY19uYW1lYCBvZiB3aGVuIHRoZSBsYXN0IHJ1bnRpbWUgdXBncmFkZSBoYXBwZW5lZC4AREJsb2Nrc1RpbGxVcGdyYWRlAAAMBAAE7CBOdW1iZXIgb2YgYmxvY2tzIHRpbGwgdGhlIHBlbmRpbmcgY29kZSB1cGdyYWRlIGlzIGFwcGxpZWQuAFRVcGdyYWRlZFRvVTMyUmVmQ291bnQBAF0BBAAETQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgYHR5cGUgUmVmQ291bnRgIGlzIGB1MzJgLiBGYWxzZSAoZGVmYXVsdCkgaWYgbm90LgBgVXBncmFkZWRUb1RyaXBsZVJlZkNvdW50AQBdAQQACF0BIFRydWUgaWYgd2UgaGF2ZSB1cGdyYWRlZCBzbyB0aGF0IEFjY291bnRJbmZvIGNvbnRhaW5zIHRocmVlIHR5cGVzIG9mIGBSZWZDb3VudGAuIEZhbHNlSCAoZGVmYXVsdCkgaWYgbm90LgA4RXhlY3V0aW9uUGhhc2UAAIUEBAAEiCBUaGUgZXhlY3V0aW9uIHBoYXNlIG9mIHRoZSBibG9jay4AREF1dGhvcml6ZWRVcGdyYWRlAAChBAQABLggYFNvbWVgIGlmIGEgY29kZSB1cGdyYWRlIGhhcyBiZWVuIGF1dGhvcml6ZWQuAGBFeHRyaW5zaWNXZWlnaHRSZWNsYWltZWQBACkBCAAAHKAgVGhlIHdlaWdodCByZWNsYWltZWQgZm9yIHRoZSBleHRyaW5zaWMuACEBIFRoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIHVudGlsIHRoZSBlbmQgb2YgdGhlIGV4dHJpbnNpYyBleGVjdXRpb24uIQEgTW9yZSBwcmVjaXNlbHkgdGhpcyBpbmZvcm1hdGlvbiBpcyByZW1vdmVkIGluIGBub3RlX2FwcGxpZWRfZXh0cmluc2ljYC4AcQEgTG9naWMgZG9pbmcgc29tZSBwb3N0IGRpc3BhdGNoIHdlaWdodCByZWR1Y3Rpb24gbXVzdCB1cGRhdGUgdGhpcyBzdG9yYWdlIHRvIGF2b2lkIGR1cGxpY2F0ZSwgcmVkdWN0aW9uLgABJAAB8QMAGDBCbG9ja1dlaWdodHOlBIkBBwDyBSoBAAsAIEqp0QECAIACAmXNHQABC8AOcsiLAQIAIAIBCwBQXBijAQIAQAIBAAACZc0dAAELwN5fWboBAgBgAgELACBKqdEBAgCAAgEHANDtkC4CAEAAAmXNHQAAAAAE0CBCbG9jayAmIGV4dHJpbnNpY3Mgd2VpZ2h0czogYmFzZSB2YWx1ZXMgYW5kIGxpbWl0cy4ALEJsb2NrTGVuZ3RosQQ0AACQAAAAoAAAAKAAAASoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIGJsb2NrIChpbiBieXRlcykuADhCbG9ja0hhc2hDb3VudDgQABAAAARVASBNYXhpbXVtIG51bWJlciBvZiBibG9jayBudW1iZXIgdG8gYmxvY2sgaGFzaCBtYXBwaW5ncyB0byBrZWVwIChvbGRlc3QgcHJ1bmVkIGZpcnN0KS4AIERiV2VpZ2h0uQRAQHh9AQAAAAAA4fUFAAAAAAQJASBUaGUgd2VpZ2h0IG9mIHJ1bnRpbWUgZGF0YWJhc2Ugb3BlcmF0aW9ucyB0aGUgcnVudGltZSBjYW4gaW52b2tlLgAcVmVyc2lvbr0EEQU4YnVsbGV0aW4tcGFzZW84YnVsbGV0aW4tcGFzZW8BAAAAIJQeAAAAAABc3XGNXMUyYtQBAAAABOcFIaDT0vgCAAAA173YonLKDWUCAAAA32rLaJkHYJsFAAAAN+OX/HyR9eQCAAAAQP461AH4lZoGAAAA0ryYl+7QjxUDAAAA94sni+U/RUwCAAAAqzwFcikf64sCAAAAvJ2JkE9bkj8BAAAAN8i7E1CpoqgEAAAA8/8U1atScFkDAAAAb/Uu6Fjmxb0CAAAAkbHIsWMo65ICAAAAn/tQWqc41pwBAAAAJgm+g6xEaNwBAAAAEsjj1NfgbeABAAAA6pPj8W89aWIDAAAAOxz8RA3SP0kCAAAAk+XLiGo4a5UBAAAAyi+/P8t9tWkBAAAA+8V3uddH79YBAAAAot22pYR3v2MBAAAAAQAAAAEEhCBHZXQgdGhlIGNoYWluJ3MgaW4tY29kZSB2ZXJzaW9uLgAoU1M1OFByZWZpeMQIKgAUqCBUaGUgZGVzaWduYXRlZCBTUzU4IHByZWZpeCBvZiB0aGlzIGNoYWluLgA5ASBUaGlzIHJlcGxhY2VzIHRoZSAic3M1OEZvcm1hdCIgcHJvcGVydHkgZGVjbGFyZWQgaW4gdGhlIGNoYWluIHNwZWMuIFJlYXNvbiBpczEBIHRoYXQgdGhlIHJ1bnRpbWUgc2hvdWxkIGtub3cgYWJvdXQgdGhlIHByZWZpeCBpbiBvcmRlciB0byBtYWtlIHVzZSBvZiBpdCBhc3AgYW4gaWRlbnRpZmllciBvZiB0aGUgY2hhaW4uAAHNBAAcLFJ1bnRpbWVDYWxsIASMIFRoZSBhZ2dyZWdhdGVkIGBSdW50aW1lQ2FsbGAgdHlwZS4UTm9uY2U4BEkBIFRoaXMgc3RvcmVzIHRoZSBudW1iZXIgb2YgcHJldmlvdXMgdHJhbnNhY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBhIHNlbmRlciBhY2NvdW50LhBIYXNoPASYIFRoZSBvdXRwdXQgb2YgdGhlIGBIYXNoaW5nYCBmdW5jdGlvbi4cSGFzaGluZ9EEBCEBIFRoZSBoYXNoaW5nIHN5c3RlbSAoYWxnb3JpdGhtKSBiZWluZyB1c2VkIGluIHRoZSBydW50aW1lIChlLmcuIEJsYWtlMikuJEFjY291bnRJZAQEyCBUaGUgdXNlciBhY2NvdW50IGlkZW50aWZpZXIgdHlwZSBmb3IgdGhlIHJ1bnRpbWUuFEJsb2Nr1QQIYQEgVGhlIEJsb2NrIHR5cGUgdXNlZCBieSB0aGUgcnVudGltZS4gVGhpcyBpcyB1c2VkIGJ5IGBjb25zdHJ1Y3RfcnVudGltZWAgdG8gcmV0cmlldmUgdGhlzCBleHRyaW5zaWNzIG9yIG90aGVyIGJsb2NrIHNwZWNpZmljIGRhdGEgYXMgbmVlZGVkLixBY2NvdW50RGF0YdkDCGEBIERhdGEgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGFuIGFjY291bnQgKG90aGVyIHRoYW4gbm9uY2UvdHJhbnNhY3Rpb24gY291bnRlciwgd2hpY2ggdGhpc2QgcGFsbGV0IGRvZXMgcmVnYXJkbGVzcykuAAAAADxQYXJhY2hhaW5TeXN0ZW0BPFBhcmFjaGFpblN5c3RlbXw8QmxvY2tXZWlnaHRNb2RlAADpBAQAGHwgVGhlIGN1cnJlbnQgYmxvY2sgd2VpZ2h0IG1vZGUuAHUBIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBpcyB0aGUgbWF4aW11bSBhbGxvd2VkIGJsb2NrIHdlaWdodCwgZm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlSCBbYGJsb2NrX3dlaWdodGBdLgAlASBLaWxsZWQgaW4gW2BTZWxmOjpvbl9pbml0aWFsaXplYF0gYW5kIHNldCBieSB0aGUgW2BibG9ja193ZWlnaHRgXSBsb2dpYy4ARFByZXZpb3VzQ29yZUNvdW50AADtBAQADAUBIFRoZSBjb3JlIGNvdW50IGF2YWlsYWJsZSB0byB0aGUgcGFyYWNoYWluIGluIHRoZSBwcmV2aW91cyBibG9jay4AdQEgVGhpcyBpcyBtYWlubHkgdXNlZCBmb3Igb2ZmY2hhaW4gZnVuY3Rpb25hbGl0eSB0byBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgdGFyZ2V0IGJsb2NrIHdlaWdodC4ARFVuaW5jbHVkZWRTZWdtZW50AQDxBAQAGEkBIExhdGVzdCBpbmNsdWRlZCBibG9jayBkZXNjZW5kYW50cyB0aGUgcnVudGltZSBhY2NlcHRlZC4gSW4gb3RoZXIgd29yZHMsIHRoZXNlIGFyZWEBIGFuY2VzdG9ycyBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBibG9jayB3aGljaCBoYXZlIG5vdCBiZWVuIGluY2x1ZGVkIGluIHRoZSBvYnNlcnZlZEwgcmVsYXktY2hhaW4gc3RhdGUuAHUBIFRoZSBzZWdtZW50IGxlbmd0aCBpcyBsaW1pdGVkIGJ5IHRoZSBjYXBhY2l0eSByZXR1cm5lZCBmcm9tIHRoZSBbYENvbnNlbnN1c0hvb2tgXSBjb25maWd1cmVkPCBpbiB0aGUgcGFsbGV0LgBsQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50AAAZBQQADGkBIFN0b3JhZ2UgZmllbGQgdGhhdCBrZWVwcyB0cmFjayBvZiBiYW5kd2lkdGggdXNlZCBieSB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGFsb25nIHdpdGggdGhlLQEgbGF0ZXN0IEhSTVAgd2F0ZXJtYXJrLiBVc2VkIGZvciBsaW1pdGluZyB0aGUgYWNjZXB0YW5jZSBvZiBuZXcgYmxvY2tzIHdpdGiQIHJlc3BlY3QgdG8gcmVsYXkgY2hhaW4gY29uc3RyYWludHMuAFRQZW5kaW5nVmFsaWRhdGlvbkNvZGUBABgEABhZASBJbiBjYXNlIG9mIGEgc2NoZWR1bGVkIHVwZ3JhZGUsIHRoaXMgc3RvcmFnZSBmaWVsZCBjb250YWlucyB0aGUgdmFsaWRhdGlvbiBjb2RlIHRvIGJlJCBhcHBsaWVkLgA9ASBBcyBzb29uIGFzIHRoZSByZWxheSBjaGFpbiBnaXZlcyB1cyB0aGUgZ28tYWhlYWQgc2lnbmFsLCB3ZSB3aWxsIG92ZXJ3cml0ZSB0aGVlASBbYDpwZW5kaW5nX2NvZGVgXVtzcF9jb3JlOjpzdG9yYWdlOjp3ZWxsX2tub3duX2tleXM6OlBFTkRJTkdfQ09ERV0gd2hpY2ggd2lsbCByZXN1bHQgdGhldQEgbmV4dCBibG9jayB0byBiZSBwcm9jZXNzZWQgd2l0aCB0aGUgbmV3IHZhbGlkYXRpb24gY29kZS4gVGhpcyBjb25jbHVkZXMgdGhlIHVwZ3JhZGUgcHJvY2Vzcy4ARE5ld1ZhbGlkYXRpb25Db2RlAAAYBAAUXQEgVmFsaWRhdGlvbiBjb2RlIHRoYXQgaXMgc2V0IGJ5IHRoZSBwYXJhY2hhaW4gYW5kIGlzIHRvIGJlIGNvbW11bmljYXRlZCB0byBjb2xsYXRvciBhbmR4IGNvbnNlcXVlbnRseSB0aGUgcmVsYXktY2hhaW4uAGUBIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jayBpZiBubyBvdGhlciBwYWxsZXQgYWxyZWFkeSBzZXQsIHRoZSB2YWx1ZS4AOFZhbGlkYXRpb25EYXRhAABIBAAM0CBUaGUgW2BQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YWBdIHNldCBmb3IgdGhpcyBibG9jay4AcQEgVGhpcyB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBzZXQgb25seSBvbmNlIGJ5IHRoZSBbYFBhbGxldDo6c2V0X3ZhbGlkYXRpb25fZGF0YWBdIGluaGVyZW50LgBQRGlkU2V0VmFsaWRhdGlvbkNvZGUBAF0BBAAE4CBXZXJlIHRoZSB2YWxpZGF0aW9uIGRhdGEgc2V0IHRvIG5vdGlmeSB0aGUgcmVsYXkgY2hhaW4/AGRMYXN0UmVsYXlDaGFpbkJsb2NrTnVtYmVyAQA4EAAAAAAMHQEgVGhlIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhlIGxhc3QgcGFyYWNoYWluIGJsb2NrLgCIIFRoaXMgaXMgdXBkYXRlZCBpbiBgb25fZmluYWxpemVgLgBgVXBncmFkZVJlc3RyaWN0aW9uU2lnbmFsAQAdBQQAHHUBIEFuIG9wdGlvbiB3aGljaCBpbmRpY2F0ZXMgaWYgdGhlIHJlbGF5LWNoYWluIHJlc3RyaWN0cyBzaWduYWxsaW5nIGEgdmFsaWRhdGlvbiBjb2RlIHVwZ3JhZGUuYQEgSW4gb3RoZXIgd29yZHMsIGlmIHRoaXMgaXMgYFNvbWVgIGFuZCBbYE5ld1ZhbGlkYXRpb25Db2RlYF0gaXMgYFNvbWVgIHRoZW4gdGhlIHByb2R1Y2VkbCBjYW5kaWRhdGUgd2lsbCBiZSBpbnZhbGlkLgBxASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBhIG1pcnJvciBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGZyb20gdGhlbQEgcmVsYXktY2hhaW4uIFRoaXMgdmFsdWUgaXMgZXBoZW1lcmFsIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgaGl0IHRoZSBzdG9yYWdlLiBUaGlzIHZhbHVlIGlzYCBzZXQgYWZ0ZXIgdGhlIGluaGVyZW50LgA4VXBncmFkZUdvQWhlYWQBABEFBAAU3CBPcHRpb25hbCB1cGdyYWRlIGdvLWFoZWFkIHNpZ25hbCBmcm9tIHRoZSByZWxheS1jaGFpbi4AcQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgYSBtaXJyb3Igb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZm9yIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBmcm9tIHRoZW0BIHJlbGF5LWNoYWluLiBUaGlzIHZhbHVlIGlzIGVwaGVtZXJhbCB3aGljaCBtZWFucyBpdCBkb2Vzbid0IGhpdCB0aGUgc3RvcmFnZS4gVGhpcyB2YWx1ZSBpc2Agc2V0IGFmdGVyIHRoZSBpbmhlcmVudC4APFJlbGF5U3RhdGVQcm9vZgAAUAQAGMQgVGhlIHN0YXRlIHByb29mIGZvciB0aGUgbGFzdCByZWxheSBwYXJlbnQgYmxvY2suAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AWFJlbGV2YW50TWVzc2FnaW5nU3RhdGUAACUFBAAcZQEgVGhlIHNuYXBzaG90IG9mIHNvbWUgc3RhdGUgcmVsYXRlZCB0byBtZXNzYWdpbmcgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgcGFyYWNoYWluIGFzIHBlckggdGhlIHJlbGF5IHBhcmVudC4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgBESG9zdENvbmZpZ3VyYXRpb24AADkFBAAYKQEgVGhlIHBhcmFjaGFpbiBob3N0IGNvbmZpZ3VyYXRpb24gdGhhdCB3YXMgb2J0YWluZWQgZnJvbSB0aGUgcmVsYXkgcGFyZW50LgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuADhMYXN0RG1xTXFjSGVhZAEAQQWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ9CBUaGUgbGFzdCBkb3dud2FyZCBtZXNzYWdlIHF1ZXVlIGNoYWluIGhlYWQgd2UgaGF2ZSBvYnNlcnZlZC4AZQEgVGhpcyB2YWx1ZSBpcyBsb2FkZWQgYmVmb3JlIGFuZCBzYXZlZCBhZnRlciBwcm9jZXNzaW5nIGluYm91bmQgZG93bndhcmQgbWVzc2FnZXMgY2FycmllZGAgYnkgdGhlIHN5c3RlbSBpbmhlcmVudC4AQExhc3RIcm1wTXFjSGVhZHMBAEUFBAAQSQEgVGhlIG1lc3NhZ2UgcXVldWUgY2hhaW4gaGVhZHMgd2UgaGF2ZSBvYnNlcnZlZCBwZXIgZWFjaCBjaGFubmVsIGluY29taW5nIGNoYW5uZWwuAGUBIFRoaXMgdmFsdWUgaXMgbG9hZGVkIGJlZm9yZSBhbmQgc2F2ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBpbmJvdW5kIGRvd253YXJkIG1lc3NhZ2VzIGNhcnJpZWRgIGJ5IHRoZSBzeXN0ZW0gaW5oZXJlbnQuAGRQcm9jZXNzZWREb3dud2FyZE1lc3NhZ2VzAQA4EAAAAAAMyCBOdW1iZXIgb2YgZG93bndhcmQgbWVzc2FnZXMgcHJvY2Vzc2VkIGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgBwTGFzdFByb2Nlc3NlZERvd253YXJkTWVzc2FnZQAAUQUEAAyUIFRoZSBsYXN0IHByb2Nlc3NlZCBkb3dud2FyZCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgA0SHJtcFdhdGVybWFyawEAOBAAAAAABKAgSFJNUCB3YXRlcm1hcmsgdGhhdCB3YXMgc2V0IGluIGEgYmxvY2suAGBMYXN0UHJvY2Vzc2VkSHJtcE1lc3NhZ2UAAFEFBAAMhCBUaGUgbGFzdCBwcm9jZXNzZWQgSFJNUCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgBQSHJtcE91dGJvdW5kTWVzc2FnZXMBAFUFBAAMpCBIUk1QIG1lc3NhZ2VzIHRoYXQgd2VyZSBzZW50IGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgA4VXB3YXJkTWVzc2FnZXMBADQEAAysIFVwd2FyZCBtZXNzYWdlcyB0aGF0IHdlcmUgc2VudCBpbiBhIGJsb2NrLgDwIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBmb3IgZWFjaCBuZXcgYmxvY2suAFRQZW5kaW5nVXB3YXJkTWVzc2FnZXMBADQEAAQxASBVcHdhcmQgbWVzc2FnZXMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4AUFBlbmRpbmdVcHdhcmRTaWduYWxzAQA0BAAMLQEgVXB3YXJkIHNpZ25hbHMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4A2CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25fZmluYWxpemVgIGZvciBlYWNoIGJsb2NrLgBMUGVuZGluZ0FwcHJvdmVkUGVlcgAAeAQABDkBIFRoZSBhcHByb3ZlZCBwZWVyIGlkIHRvIGJlIHNlbnQgYXMgYSBVTVAgc2lnbmFsIG9uIHRoZSBsYXN0IGJsb2NrIG9mIHRoZSBQb1YuAFxVcHdhcmREZWxpdmVyeUZlZUZhY3RvcgEAXQVAAABkp7O24A0AAAAAAAAAAATkIFRoZSBmYWN0b3IgdG8gbXVsdGlwbHkgdGhlIGJhc2UgZGVsaXZlcnkgZmVlIGJ5IGZvciBVTVAuAIRBbm5vdW5jZWRIcm1wTWVzc2FnZXNQZXJDYW5kaWRhdGUBADgQAAAAAAhlASBUaGUgbnVtYmVyIG9mIEhSTVAgbWVzc2FnZXMgd2Ugb2JzZXJ2ZWQgaW4gYG9uX2luaXRpYWxpemVgIGFuZCB0aHVzIHVzZWQgdGhhdCBudW1iZXIgZm9y8CBhbm5vdW5jaW5nIHRoZSB3ZWlnaHQgb2YgYG9uX2luaXRpYWxpemVgIGFuZCBgb25fZmluYWxpemVgLgBoUmVzZXJ2ZWRYY21wV2VpZ2h0T3ZlcnJpZGUAACkBBAAIXQEgVGhlIHdlaWdodCB3ZSByZXNlcnZlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrIGZvciBwcm9jZXNzaW5nIFhDTVAgbWVzc2FnZXMuIFRoaXO4IG92ZXJyaWRlcyB0aGUgYW1vdW50IHNldCBpbiB0aGUgQ29uZmlnIHRyYWl0LgBkUmVzZXJ2ZWREbXBXZWlnaHRPdmVycmlkZQAAKQEEAAhZASBUaGUgd2VpZ2h0IHdlIHJlc2VydmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYmxvY2sgZm9yIHByb2Nlc3NpbmcgRE1QIG1lc3NhZ2VzLiBUaGlzuCBvdmVycmlkZXMgdGhlIGFtb3VudCBzZXQgaW4gdGhlIENvbmZpZyB0cmFpdC4AYEN1c3RvbVZhbGlkYXRpb25IZWFkRGF0YQAAGAQADCkBIEEgY3VzdG9tIGhlYWQgZGF0YSB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCBhcyByZXN1bHQgb2YgYHZhbGlkYXRlX2Jsb2NrYC4AEQEgU2VlIGBQYWxsZXQ6OnNldF9jdXN0b21fdmFsaWRhdGlvbl9oZWFkX2RhdGFgIGZvciBtb3JlIGluZm9ybWF0aW9uLgBIUG9WTWVzc2FnZXNUcmFja2VyAABhBQQADFUBIFRyYWNrcyBjdW11bGF0aXZlIGBVTVBgIGFuZCBgSFJNUGAgbWVzc2FnZXMgc2VudCBhY3Jvc3MgYmxvY2tzIGluIHRoZSBjdXJyZW50IGBQb1ZgLgB1ASBBY3Jvc3MgZGlmZmVyZW50IGNhbmRpZGF0ZXMvUG9WcyB0aGUgYnVkZ2V0cyBhcmUgdHJhY2tlZCBieSBbYEFnZ3JlZ2F0ZWRVbmluY2x1ZGVkU2VnbWVudGBdLgABQAABGQQABChTZWxmUGFyYUlknBDyAwAABLggUmV0dXJucyB0aGUgcGFyYWNoYWluIElEIHdlIGFyZSBydW5uaW5nIHdpdGguAAFpBQAAAAEAACRUaW1lc3RhbXABJFRpbWVzdGFtcAgMTm93AQAoIAAAAAAAAAAABKAgVGhlIGN1cnJlbnQgdGltZSBmb3IgdGhlIGN1cnJlbnQgYmxvY2suACREaWRVcGRhdGUBAF0BBAAQ2CBXaGV0aGVyIHRoZSB0aW1lc3RhbXAgaGFzIGJlZW4gdXBkYXRlZCBpbiB0aGlzIGJsb2NrLgBVASBUaGlzIHZhbHVlIGlzIHVwZGF0ZWQgdG8gYHRydWVgIHVwb24gc3VjY2Vzc2Z1bCBzdWJtaXNzaW9uIG9mIGEgdGltZXN0YW1wIGJ5IGEgbm9kZS5FASBJdCBpcyB0aGVuIGNoZWNrZWQgYXQgdGhlIGVuZCBvZiBlYWNoIGJsb2NrIGV4ZWN1dGlvbiBpbiB0aGUgYG9uX2ZpbmFsaXplYCBob29rLgABsAAABDRNaW5pbXVtUGVyaW9kKCAAAAAAAAAAABiMIFRoZSBtaW5pbXVtIHBlcmlvZCBiZXR3ZWVuIGJsb2Nrcy4ATQEgQmUgYXdhcmUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCB0byB0aGUgKmV4cGVjdGVkKiBwZXJpb2QgdGhhdCB0aGUgYmxvY2sgcHJvZHVjdGlvbkkBIGFwcGFyYXR1cyBwcm92aWRlcy4gWW91ciBjaG9zZW4gY29uc2Vuc3VzIHN5c3RlbSB3aWxsIGdlbmVyYWxseSB3b3JrIHdpdGggdGhpcyB0b2EBIGRldGVybWluZSBhIHNlbnNpYmxlIGJsb2NrIHRpbWUuIEZvciBleGFtcGxlLCBpbiB0aGUgQXVyYSBwYWxsZXQgaXQgd2lsbCBiZSBkb3VibGUgdGhpc3AgcGVyaW9kIG9uIGRlZmF1bHQgc2V0dGluZ3MuAAAEGE1vbWVudCgEmCBUeXBlIHVzZWQgZm9yIGV4cHJlc3NpbmcgYSB0aW1lc3RhbXAuAAMAADRQYXJhY2hhaW5JbmZvATRQYXJhY2hhaW5JbmZvBCxQYXJhY2hhaW5JZAEAnBBkAAAAAAABuAAAAAAAAAQAADRXZWlnaHRSZWNsYWltAAAAAAAAAAUIgQEgUGFsbGV0IHRvIHVzZSBhbG9uZ3NpZGUgdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBbYFN0b3JhZ2VXZWlnaHRSZWNsYWltYF0sIHRoZSBwYWxsZXQgcHJvdmlkZXOMIHdlaWdodCBpbmZvcm1hdGlvbiBhbmQgYmVuY2htYXJrcy4AHFV0aWxpdHkAAbwAAR0EAARMYmF0Y2hlZF9jYWxsc19saW1pdDgQqioAAASoIFRoZSBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGJhdGNoZWQgY2FsbHMuAAFtBQAILFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuNFBhbGxldHNPcmlnaW7IBPAgVGhlIGNhbGxlciBvcmlnaW4sIG92ZXJhcmNoaW5nIHR5cGUgb2YgYWxsIHBhbGxldHMgb3JpZ2lucy4ABgAAUE11bHRpQmxvY2tNaWdyYXRpb25zAVBNdWx0aUJsb2NrTWlncmF0aW9ucwgYQ3Vyc29yAAA1AQQADNggVGhlIGN1cnJlbnRseSBhY3RpdmUgbWlncmF0aW9uIHRvIHJ1biBhbmQgaXRzIGN1cnNvci4AvCBgTm9uZWAgaW5kaWNhdGVzIHRoYXQgbm8gbWlncmF0aW9uIGlzIHJ1bm5pbmcuACBIaXN0b3JpYwABBAVNARAEABC0IFNldCBvZiBhbGwgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIG1pZ3JhdGlvbnMuAHEBIFRoaXMgaXMgdXNlZCBhcyBibGFja2xpc3QsIHRvIG5vdCByZS1leGVjdXRlIG1pZ3JhdGlvbnMgdGhhdCBoYXZlIG5vdCBiZWVuIHJlbW92ZWQgZnJvbSB0aGUxASBjb2RlYmFzZSB5ZXQuIEdvdmVybmFuY2UgY2FuIHJlZ3VsYXJseSBjbGVhciB0aGlzIG91dCB2aWEgYGNsZWFyX2hpc3RvcmljYC4AAS0BAAElBAAIMEN1cnNvck1heExlbjgQAAABABCkIFRoZSBtYXhpbWFsIGxlbmd0aCBvZiBhbiBlbmNvZGVkIGN1cnNvci4AZQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhIGN1cnNvciB3aXRoIE1FTAkBIGFib3ZlIHRoaXMgbGltaXQuIFRoaXMgaXMgc3RhdGljYWxseSBjaGVja2VkIGluIGBpbnRlZ3JpdHlfdGVzdGAuAEBJZGVudGlmaWVyTWF4TGVuOBAAAQAAELQgVGhlIG1heGltYWwgbGVuZ3RoIG9mIGFuIGVuY29kZWQgaWRlbnRpZmllci4AVQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhbiBpZGVudGlmaWVyLQEgd2l0aCBNRUwgYWJvdmUgdGhpcyBsaW1pdC4gVGhpcyBpcyBzdGF0aWNhbGx5IGNoZWNrZWQgaW4gYGludGVncml0eV90ZXN0YC4AAXEFAAAQCyAZms41ZNCWTixNSpukaZRNvP9qbOGk0LJ8b8wC0kw4b25nb2luZ19zdGF0dXMAdQUEqCBSZXR1cm5zIHRoZSBvbmdvaW5nIHN0YXR1cyBvZiBtaWdyYXRpb25zLgALIBmazjVk0JZOLE1Km6RpXr13bLFdm5EuJ41NLWLFoSBwcm9ncmVzcwB5BRAJASBSZXR1cm5zIHByb2dyZXNzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbiwgaWYgYW55LgBRASBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHByb2dyZXNzLB0BIGluY2x1ZGluZyB0aGUgbnVtYmVyIG9mIHN0ZXBzIGNvbXBsZXRlZCBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBzdGVwcy4ACyAZms41ZNCWTixNSpukaUavS87G81p7u+6dn8EJW+FEYWZmZWN0ZWRfcHJlZml4ZXMANAwBASBSZXR1cm5zIHRoZSBzdG9yYWdlIHByZWZpeGVzIGFmZmVjdGVkIGJ5IHRoZSBjdXJyZW50IG1pZ3JhdGlvbi4AGQEgQ2FuIGJlIGVtcHR5IGlmIHRoZSBtaWdyYXRpb24gZG9lcyBub3Qga25vdyBvciB0aGVyZSBhcmUgbm8gcHJlZml4ZXMuAAsgGZrONWTQlk4sTUqbpGmqTCigbxmIRb0bsp7GIF3dGHN0YXR1cwCBBQTwIFJldHVybnMgdGhlIGNvbXByZWhlbnNpdmUgc3RhdHVzIG9mIG11bHRpLWJsb2NrIG1pZ3JhdGlvbnMuAAcAACBCYWxhbmNlcwEgQmFsYW5jZXMcNFRvdGFsSXNzdWFuY2UBAPxAAAAAAAAAAAAAAAAAAAAAAASYIFRoZSB0b3RhbCB1bml0cyBpc3N1ZWQgaW4gdGhlIHN5c3RlbS4AQEluYWN0aXZlSXNzdWFuY2UBAPxAAAAAAAAAAAAAAAAAAAAAAAQJASBUaGUgdG90YWwgdW5pdHMgb2Ygb3V0c3RhbmRpbmcgZGVhY3RpdmF0ZWQgYmFsYW5jZSBpbiB0aGUgc3lzdGVtLgAcQWNjb3VudAEBBAIE2QMBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBgCQEgVGhlIEJhbGFuY2VzIHBhbGxldCBleGFtcGxlIG9mIHN0b3JpbmcgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC4AKCAjIEV4YW1wbGUANCBgYGBub2NvbXBpbGWwICBpbXBsIHBhbGxldF9iYWxhbmNlczo6Q29uZmlnIGZvciBSdW50aW1lIHsZAiAgICB0eXBlIEFjY291bnRTdG9yZSA9IFN0b3JhZ2VNYXBTaGltPFNlbGY6OkFjY291bnQ8UnVudGltZT4sIGZyYW1lX3N5c3RlbTo6UHJvdmlkZXI8UnVudGltZT4sIEFjY291bnRJZCwgU2VsZjo6QWNjb3VudERhdGE8QmFsYW5jZT4+DCAgfRAgYGBgABUBIFlvdSBjYW4gYWxzbyBzdG9yZSB0aGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50IGluIHRoZSBgU3lzdGVtYCBwYWxsZXQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7dCAgIHR5cGUgQWNjb3VudFN0b3JlID0gU3lzdGVtDCAgfRAgYGBgAFEBIEJ1dCB0aGlzIGNvbWVzIHdpdGggdHJhZGVvZmZzLCBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlIHN5c3RlbSBwYWxsZXQgc3RvcmVzbQEgYGZyYW1lX3N5c3RlbWAgZGF0YSBhbG9uZ3NpZGUgdGhlIGFjY291bnQgZGF0YSBjb250cmFyeSB0byBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlKQEgYEJhbGFuY2VzYCBwYWxsZXQsIHdoaWNoIHVzZXMgYSBgU3RvcmFnZU1hcGAgdG8gc3RvcmUgYmFsYW5jZXMgZGF0YSBvbmx5LkEBIE5PVEU6IFRoaXMgaXMgb25seSB1c2VkIGluIHRoZSBjYXNlIHRoYXQgdGhpcyBwYWxsZXQgaXMgdXNlZCB0byBzdG9yZSBiYWxhbmNlcy4AFExvY2tzAQEEAgSFBQQAELggQW55IGxpcXVpZGl0eSBsb2NrcyBvbiBzb21lIGFjY291bnQgYmFsYW5jZXMuJQEgTk9URTogU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgd2hlbiBzZXR0aW5nLCBjaGFuZ2luZyBhbmQgZnJlZWluZyBhIGxvY2suAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAIFJlc2VydmVzAQEEAgSVBQQADKQgTmFtZWQgcmVzZXJ2ZXMgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAUSG9sZHMBAQQCBKEFBAAEbCBIb2xkcyBvbiBhY2NvdW50IGJhbGFuY2VzLgAcRnJlZXplcwEBBAIErQUEAASIIEZyZWV6ZSBsb2NrcyBvbiBhY2NvdW50IGJhbGFuY2VzLgABWQEAASkEABBIRXhpc3RlbnRpYWxEZXBvc2l0/EAAypo7AAAAAAAAAAAAAAAAIEEBIFRoZSBtaW5pbXVtIGFtb3VudCByZXF1aXJlZCB0byBrZWVwIGFuIGFjY291bnQgb3Blbi4gTVVTVCBCRSBHUkVBVEVSIFRIQU4gWkVSTyEAWQEgSWYgeW91ICpyZWFsbHkqIG5lZWQgaXQgdG8gYmUgemVybywgeW91IGNhbiBlbmFibGUgdGhlIGZlYXR1cmUgYGluc2VjdXJlX3plcm9fZWRgIGZvcmEBIHRoaXMgcGFsbGV0LiBIb3dldmVyLCB5b3UgZG8gc28gYXQgeW91ciBvd24gcmlzazogdGhpcyB3aWxsIG9wZW4gdXAgYSBtYWpvciBEb1MgdmVjdG9yLlkBIEluIGNhc2UgeW91IGhhdmUgbXVsdGlwbGUgc291cmNlcyBvZiBwcm92aWRlciByZWZlcmVuY2VzLCB5b3UgbWF5IGFsc28gZ2V0IHVuZXhwZWN0ZWSMIGJlaGF2aW91ciBpZiB5b3Ugc2V0IHRoaXMgdG8gemVyby4A8CBCb3R0b20gbGluZTogRG8geW91cnNlbGYgYSBmYXZvdXIgYW5kIG1ha2UgaXQgYXQgbGVhc3Qgb25lIQAgTWF4TG9ja3M4EDIAAAAQ9CBUaGUgbWF4aW11bSBudW1iZXIgb2YgbG9ja3MgdGhhdCBzaG91bGQgZXhpc3Qgb24gYW4gYWNjb3VudC7cIE5vdCBzdHJpY3RseSBlbmZvcmNlZCwgYnV0IHVzZWQgZm9yIHdlaWdodCBlc3RpbWF0aW9uLgCtASBVc2Ugb2YgbG9ja3MgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgZnJlZXplcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gACxNYXhSZXNlcnZlczgQMgAAAAwNASBUaGUgbWF4aW11bSBudW1iZXIgb2YgbmFtZWQgcmVzZXJ2ZXMgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudC4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAKE1heEZyZWV6ZXM4EAAAAAAEYQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGluZGl2aWR1YWwgZnJlZXplIGxvY2tzIHRoYXQgY2FuIGV4aXN0IG9uIGFuIGFjY291bnQgYXQgYW55IHRpbWUuAAG5BQAQRFJ1bnRpbWVIb2xkUmVhc29uMQQEdCBUaGUgb3ZlcmFyY2hpbmcgaG9sZCByZWFzb24uHEJhbGFuY2X8BGwgVGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC5EUmVzZXJ2ZUlkZW50aWZpZXI1AgxoIFRoZSBJRCB0eXBlIGZvciByZXNlcnZlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2BARnJlZXplSWRlbnRpZmllchAEZCBUaGUgSUQgdHlwZSBmb3IgZnJlZXplcy4ACgAASFRyYW5zYWN0aW9uUGF5bWVudAFIVHJhbnNhY3Rpb25QYXltZW50DEROZXh0RmVlTXVsdGlwbGllcgEAXQVAAABkp7O24A0AAAAAAAAAAAAAOFN0b3JhZ2VWZXJzaW9uAQC9BQQAAAA8VHhQYXltZW50Q3JlZGl0AADBBQQADPAgVGhlIGBPbkNoYXJnZVRyYW5zYWN0aW9uYCBzdG9yZXMgdGhlIHdpdGhkcmF3biB0eCBmZWUgaGVyZS4ANQEgVXNlIGB3aXRoZHJhd190eGZlZWAgYW5kIGByZW1haW5pbmdfdHhmZWVgIHRvIGFjY2VzcyBmcm9tIG91dHNpZGUgdGhlIGNyYXRlLgAAAUUEAARgT3BlcmF0aW9uYWxGZWVNdWx0aXBsaWVyDAQFVFkBIEEgZmVlIG11bHRpcGxpZXIgZm9yIGBPcGVyYXRpb25hbGAgZXh0cmluc2ljcyB0byBjb21wdXRlICJ2aXJ0dWFsIHRpcCIgdG8gYm9vc3QgdGhlaXIsIGBwcmlvcml0eWAAUQEgVGhpcyB2YWx1ZSBpcyBtdWx0aXBsaWVkIGJ5IHRoZSBgZmluYWxfZmVlYCB0byBvYnRhaW4gYSAidmlydHVhbCB0aXAiIHRoYXQgaXMgbGF0ZXL0IGFkZGVkIHRvIGEgdGlwIGNvbXBvbmVudCBpbiByZWd1bGFyIGBwcmlvcml0eWAgY2FsY3VsYXRpb25zLk0BIEl0IG1lYW5zIHRoYXQgYSBgTm9ybWFsYCB0cmFuc2FjdGlvbiBjYW4gZnJvbnQtcnVuIGEgc2ltaWxhcmx5LXNpemVkIGBPcGVyYXRpb25hbGBBASBleHRyaW5zaWMgKHdpdGggbm8gdGlwKSwgYnkgaW5jbHVkaW5nIGEgdGlwIHZhbHVlIGdyZWF0ZXIgdGhhbiB0aGUgdmlydHVhbCB0aXAuADwgYGBgcnVzdCxpZ25vcmVAIC8vIEZvciBgTm9ybWFsYIwgbGV0IHByaW9yaXR5ID0gcHJpb3JpdHlfY2FsYyh0aXApOwBUIC8vIEZvciBgT3BlcmF0aW9uYWxgEQEgbGV0IHZpcnR1YWxfdGlwID0gKGluY2x1c2lvbl9mZWUgKyB0aXApICogT3BlcmF0aW9uYWxGZWVNdWx0aXBsaWVyO8QgbGV0IHByaW9yaXR5ID0gcHJpb3JpdHlfY2FsYyh0aXAgKyB2aXJ0dWFsX3RpcCk7ECBgYGAAUQEgTm90ZSB0aGF0IHNpbmNlIHdlIHVzZSBgZmluYWxfZmVlYCB0aGUgbXVsdGlwbGllciBhcHBsaWVzIGFsc28gdG8gdGhlIHJlZ3VsYXIgYHRpcGBdASBzZW50IHdpdGggdGhlIHRyYW5zYWN0aW9uLiBTbywgbm90IG9ubHkgZG9lcyB0aGUgdHJhbnNhY3Rpb24gZ2V0IGEgcHJpb3JpdHkgYnVtcCBiYXNlZGEBIG9uIHRoZSBgaW5jbHVzaW9uX2ZlZWAsIGJ1dCB3ZSBhbHNvIGFtcGxpZnkgdGhlIGltcGFjdCBvZiB0aXBzIGFwcGxpZWQgdG8gYE9wZXJhdGlvbmFsYDggdHJhbnNhY3Rpb25zLgAAAAALAABIU2tpcEZlZWxlc3NQYXltZW50AAABSQQAAAAAAAwAAEhUcmFuc2FjdGlvblN0b3JhZ2UBSFRyYW5zYWN0aW9uU3RvcmFnZSQ4QXV0aG9yaXphdGlvbnMAAQQC2MkFBAAMIQEgQXV0aG9yaXphdGlvbnMsIGtleWVkIGJ5IHNjb3BlLiBgcHViYCBmb3IgY3Jvc3MtcGFsbGV0IHJlYWQgYWNjZXNzIGZyb20tASBgcGFsbGV0LWJ1bGxldGluLWRhdGEtcmVuZXdhbGAncyB0ZXN0cyAoY29uc3VtZWQgdmlhIGBjaGVja19hdXRob3JpemF0aW9uYEAgaW4gcHJvZHVjdGlvbikuAEhBbGxvd2VkQXV0aG9yaXplcnMAAQQCBH0BBAAExCBMaXN0IG9mIGFjY291bnRzIGFsbG93ZWQgdG8gZ2l2ZSBhdXRob3JpemF0aW9ucy4AMFRyYW5zYWN0aW9ucwABBAI41QUEAATQIENvbGxlY3Rpb24gb2YgdHJhbnNhY3Rpb24gbWV0YWRhdGEgYnkgYmxvY2sgbnVtYmVyLgAcQnl0ZUZlZQAA/AQABFggU3RvcmFnZSBmZWUgcGVyIGJ5dGUuACBFbnRyeUZlZQAA/AQABHQgU3RvcmFnZSBmZWUgcGVyIHRyYW5zYWN0aW9uLgA8UmV0ZW50aW9uUGVyaW9kAQA4EAAAAAAU5CBOdW1iZXIgb2YgYmxvY2tzIGZvciB3aGljaCBzdG9yZWQgZGF0YSBtdXN0IGJlIHJldGFpbmVkLgAtASBEYXRhIG9sZGVyIHRoYW4gYFJldGVudGlvblBlcmlvZGAgYmxvY2tzIGlzIGVsaWdpYmxlIGZvciByZW1vdmFsIHVubGVzcyBpdDEBIGhhcyBiZWVuIGV4cGxpY2l0bHkgcmVuZXdlZC4gVmFsaWRhdG9ycyBhcmUgcmVxdWlyZWQgdG8gcHJvdmUgcG9zc2Vzc2lvbiBvZjEBIGRhdGEgY29ycmVzcG9uZGluZyB0byBibG9jayBgTiAtIFJldGVudGlvblBlcmlvZGAgd2hlbiBwcm9kdWNpbmcgYmxvY2sgYE5gLgBEQmxvY2tUcmFuc2FjdGlvbnMBANUFBAAAAGBUcmFuc2FjdGlvbkJ5Q29udGVudEhhc2gAAQQCCJEEBAAUIQEgTWFwcyBjb250ZW50IGhhc2ggdG8gaXRzIG1vc3QgcmVjZW50IChibG9ja19udW1iZXIsIHR4X2luZGV4KSBsb2NhdGlvbi4AIQEgYHB1YmAgZm9yIGNyb3NzLXBhbGxldCB3cml0ZXMgZnJvbSBgcGFsbGV0LWJ1bGxldGluLWRhdGEtcmVuZXdhbGAgKGVhY2htASByZW5ld2FsIHVwZGF0ZXMgdGhlIG1hcHBpbmcgdG8gdGhlIG5ldyBgKGJsb2NrLCBpbmRleClgKS4gUmVhZHMgb3V0c2lkZSB0aGlzIHBhbGxldCBzaG91bGS8IGdvIHRocm91Z2ggW2BQYWxsZXQ6Omxvb2t1cF9ieV9jb250ZW50X2hhc2hgXS4AMFByb29mQ2hlY2tlZAEAXQEEAASUIFdhcyB0aGUgcHJvb2YgY2hlY2tlZCBpbiB0aGlzIGJsb2NrPwABaQEAAU0EACBQTWF4QmxvY2tUcmFuc2FjdGlvbnM4EAACAAAE1CBNYXhpbXVtIG51bWJlciBvZiBpbmRleGVkIHRyYW5zYWN0aW9ucyBpbiB0aGUgYmxvY2suAEhNYXhUcmFuc2FjdGlvblNpemU4EAAAIAAEzCBNYXhpbXVtIGRhdGEgc2V0IGluIGEgc2luZ2xlIHRyYW5zYWN0aW9uIGluIGJ5dGVzLgBMQXV0aG9yaXphdGlvblBlcmlvZDgQgBMDAAS4IEF1dGhvcml6YXRpb25zIGV4cGlyZSBhZnRlciB0aGlzIG1hbnkgYmxvY2tzLgA0U3RvcmVUeFBhcmFtc+UFoFxUcmFuc2FjdGlvblN0b3JhZ2VTdG9yZf////////8/QDgAAAAAAAAIRQEgUG9vbCBwYXJhbXMgZm9yIHNpZ25lZCBhbmQgcHJlaW1hZ2UtYXV0aG9yaXplZCBgc3RvcmVgLiBPbmUgcHJlZml4IGlzIHNhZmU6IHRoZXn4IHRhZyBvbiBgKHdobywgY29udGVudF9oYXNoKWAgYW5kIGBjb250ZW50X2hhc2hgIHJlc3BlY3RpdmVseS4AREF1dGhvcml6ZVR4UGFyYW1z5QWwbFRyYW5zYWN0aW9uU3RvcmFnZUF1dGhvcml6Zf////////8/QDgAAAAAAAAEIQEgUG9vbCBwYXJhbXMgZm9yIGBhdXRob3JpemVfKmAgYW5kIGByZWZyZXNoXypgLCB3aGljaCB2YWxpZGF0ZSB1bnRhZ2dlZC4ApFJlbW92ZUV4cGlyZWRBY2NvdW50QXV0aG9yaXphdGlvblR4UGFyYW1z5QURAcxUcmFuc2FjdGlvblN0b3JhZ2VSZW1vdmVFeHBpcmVkQWNjb3VudEF1dGhvcml6YXRpb27//////////0A4AAAAAAAADFEBIFBvb2wgcGFyYW1zIGZvciBgcmVtb3ZlX2V4cGlyZWRfYWNjb3VudF9hdXRob3JpemF0aW9uYC4gVGhlIHRocmVlIGNsZWFudXAgY2FsbHMgZ2V0OQEgdGhlaXIgb3duIGl0ZW1zIGJlY2F1c2UgdHdvIHByb3ZpZGUgYHdob2AgYW5kIGEgYENvbnRlbnRIYXNoYCBlbmNvZGVzIGxpa2UgYW4ZASBgQWNjb3VudElkMzJgLCBzbyB0aGV5IG5lZWQgZGlzdGluY3QgcHJlZml4ZXMgZGVzcGl0ZSBzaGFyZWQgcHJpY2luZy4AqFJlbW92ZUV4cGlyZWRQcmVpbWFnZUF1dGhvcml6YXRpb25UeFBhcmFtc+UFFQHQVHJhbnNhY3Rpb25TdG9yYWdlUmVtb3ZlRXhwaXJlZFByZWltYWdlQXV0aG9yaXphdGlvbv//////////QDgAAAAAAAAE5CBQb29sIHBhcmFtcyBmb3IgYHJlbW92ZV9leHBpcmVkX3ByZWltYWdlX2F1dGhvcml6YXRpb25gLgCEUmVtb3ZlRXhoYXVzdGVkQXV0aG9yaXplclR4UGFyYW1z5QXwrFRyYW5zYWN0aW9uU3RvcmFnZVJlbW92ZUV4aGF1c3RlZEF1dGhvcml6ZXL//////////0A4AAAAAAAABLwgUG9vbCBwYXJhbXMgZm9yIGByZW1vdmVfZXhoYXVzdGVkX2F1dGhvcml6ZXJgLgAB6QUADCxSdW50aW1lQ2FsbCAEVCBBIGRpc3BhdGNoYWJsZSBjYWxsLiRFbnRyeU1ldGHdBRAlASBPcGFxdWUgcGVyLWVudHJ5IHBheWxvYWQgb24gW2BUcmFuc2FjdGlvbkluZm9gXSwgbmV2ZXIgaW50ZXJwcmV0ZWQgaGVyZToJASBgc3RvcmVgIHdyaXRlcyBgRGVmYXVsdDo6ZGVmYXVsdCgpYCwgZXhwaXJ5IGhhbmRzIGl0IGJhY2sgdGhyb3VnaAUBIFtgQ29uZmlnOjpPbk9ic29sZXRlVHJhbnNhY3Rpb25zYF0uIFdpcmUgYCgpYCBvciB0aGUgcHJpbWl0aXZlcycNASBbYEVudHJ5S2luZGBdKGJ1bGxldGluX3RyYW5zYWN0aW9uX3N0b3JhZ2VfcHJpbWl0aXZlczo6RW50cnlLaW5kKS5IQXV0aG9yaXphdGlvbkV4dHJhzQUQHQEgT3BhcXVlIHBlci1hdXRob3JpemF0aW9uIHBheWxvYWQgaW5zaWRlIFtgQXV0aG9yaXphdGlvbkV4dGVudGBdLCBuZXZlchkBIGludGVycHJldGVkIGhlcmU6IHJlc2V0IHdpdGggdGhlIG90aGVyIGNvdW50ZXJzLCBtdXRhdGVkIG9ubHkgdGhyb3VnaBkBIFtgUGFsbGV0Ojp0cnlfbXV0YXRlX2FjdGl2ZV9hdXRob3JpemF0aW9uYF0uIFdpcmUgYCgpYCBvciB0aGUgcmVuZXdhbHAgcGFsbGV0J3MgYFBlcm1hbmVudEV4dGVudGAuACgAADBIb3BQcm9tb3Rpb24AAYkBAAAIYFN1Ym1pdFRpbWVzdGFtcFRvbGVyYW5jZSggALhMCgAAAAAI8CBNYXhpbXVtIGFsbG93YWJsZSBza2V3IChpbiBtaWxsaXNlY29uZHMpIGJldHdlZW4gdGhlIHVzZXIncxEBIHN1Ym1pdCB0aW1lc3RhbXAgYW5kIHRoZSBvbi1jaGFpbiB0aW1lIHdoZW4gdmFsaWRhdGluZyBhIHByb21vdGlvbi4APFByb21vdGVUeFBhcmFtc+UFdDBIb3BQcm9tb3Rpb24AAAAAAAAAAAUAAAAAAAAABE0BIFBvb2wgcGFyYW1zIGZvciBgcHJvbW90ZWAuIGBpbnRlZ3JpdHlfdGVzdGAgZW5mb3JjZXMgaXRzIHByaW9yaXR5IGJlbG93IGBzdG9yZWAncy4AAAAAKQAALERhdGFSZW5ld2FsASxEYXRhUmVuZXdhbAwgUmVuZXdhbHMAAQQCCO0FBAAEnCBSZW5ld2FsIHJlZ2lzdHJhdGlvbnMgYnkgY29udGVudCBoYXNoLgA8UGVuZGluZ1JlbmV3YWxzAQDxBQQAELAgVHJhbnNhY3Rpb25zIHRvIHJlbmV3IGluIHRoZSBjdXJyZW50IGJsb2NrLgBFASBGaWxsZWQgYnkgW2BPbk9ic29sZXRlVHJhbnNhY3Rpb25zOjpoYW5kbGVfb2Jzb2xldGVgXSBhdCB0aGUgcmV0ZW50aW9uIGJvdW5kYXJ5LEEBIGRyYWluZWQgYnkgdGhlIFtgUGFsbGV0Ojpwcm9jZXNzX3BlbmRpbmdfcmVuZXdhbHNgXSBpbmhlcmVudCBpbiB0aGUgc2FtZSBibG9jay4AUFBlcm1hbmVudFN0b3JhZ2VVc2VkAQAoIAAAAAAAAAAAIDkBIENoYWluLXdpZGUgdG90YWwgb2YgY3VycmVudGx5LW9uLWNoYWluIHJlbmV3ZWQgYnl0ZXMuIFNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlAQEgY2hhaW4td2lkZSBoYXJkIGNhcDogYSBgcmVuZXdgIG9mIGBzaXplYCBieXRlcyBpcyByZWplY3RlZCB3aGVu5CBgUGVybWFuZW50U3RvcmFnZVVzZWQgKyBzaXplID4gTWF4UGVybWFuZW50U3RvcmFnZVNpemVgLgDgIEJ1bXBlZCBvbiBlYWNoIHN1Y2Nlc3NmdWwgcmVuZXcgY29uc3VtZS4gRGVjcmVtZW50ZWQgYnn0IFtgT25PYnNvbGV0ZVRyYW5zYWN0aW9uczo6aGFuZGxlX29ic29sZXRlYF0gd2hlbiBhbiBvYnNvbGV0ZTUBIGBUcmFuc2FjdGlvbnNbYmxvY2tdYCBpcyByZW1vdmVkOiBlYWNoIGBtZXRhID09IFJlbmV3YCBlbnRyeSBjb250cmlidXRlcyBpdHNkIGBzaXplYCB0byB0aGUgZGVjcmVtZW50LgABoQEAAVEEAAhcTWF4UGVybWFuZW50U3RvcmFnZVNpemUoIAAAAAAAAQAACCUBIENhcCwgaW4gYnl0ZXMsIG9uIHRvdGFsIHBlcm1hbmVudCBzdG9yYWdlICh2aWEgYHJlbmV3YCkgY29tbWl0dGVkIGFjcm9zc1AgYWxsIGF1dGhvcml6YXRpb25zLgA0UmVuZXdUeFBhcmFtc+UFoFxUcmFuc2FjdGlvblN0b3JhZ2VSZW5ld/////////8/QDgAAAAAAAAQLQEgUG9vbCBwYXJhbXMgZm9yIGV2ZXJ5IHJlbmV3YWwgY2FsbC4gT25lIHByZWZpeCwgc28gYXQgbW9zdCBvbmUgb2YgYHJlbmV3YCxBASBgZm9yY2VfcmVuZXdgIGFuZCBgZW5hYmxlX2F1dG9fcmVuZXdgIHBlciBhY2NvdW50IGFuZCBjb250ZW50IGhhc2ggaXMgcXVldWVkIGF0MQEgYSB0aW1lLiBQcmVpbWFnZSBgZm9yY2VfcmVuZXdgIHRhZ3Mgb24gdGhlIGNvbnRlbnQgaGFzaCBhbG9uZSwgc28gaXQgZGVkdXBzMCBzZXBhcmF0ZWx5LgAB/QUAAAAqAAAoQXV0aG9yc2hpcAEoQXV0aG9yc2hpcAQYQXV0aG9yAAAEBAAEZCBBdXRob3Igb2YgY3VycmVudCBibG9jay4AAAAAAAAAFAAARENvbGxhdG9yU2VsZWN0aW9uAURDb2xsYXRvclNlbGVjdGlvbhQ0SW52dWxuZXJhYmxlcwEAAQYEAAQRASBUaGUgaW52dWxuZXJhYmxlLCBwZXJtaXNzaW9uZWQgY29sbGF0b3JzLiBUaGlzIGxpc3QgbXVzdCBiZSBzb3J0ZWQuADRDYW5kaWRhdGVMaXN0AQAFBgQAFGkBIFRoZSAoY29tbXVuaXR5LCBsaW1pdGVkKSBjb2xsYXRpb24gY2FuZGlkYXRlcy4gYENhbmRpZGF0ZXNgIGFuZCBgSW52dWxuZXJhYmxlc2Agc2hvdWxkIGJlUCBtdXR1YWxseSBleGNsdXNpdmUuAHUBIFRoaXMgbGlzdCBpcyBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IGRlcG9zaXQgYW5kIHdoZW4gdGhlIGRlcG9zaXRzIGFyZSBlcXVhbCwgdGhlIGxlYXN0oCByZWNlbnRseSB1cGRhdGVkIGlzIGNvbnNpZGVyZWQgZ3JlYXRlci4ARExhc3RBdXRob3JlZEJsb2NrAQEEBQQ4EAAAAAAEhCBMYXN0IGJsb2NrIGF1dGhvcmVkIGJ5IGNvbGxhdG9yLgBERGVzaXJlZENhbmRpZGF0ZXMBADgQAAAAAAx4IERlc2lyZWQgbnVtYmVyIG9mIGNhbmRpZGF0ZXMuAHUBIFRoaXMgc2hvdWxkIGlkZWFsbHkgYWx3YXlzIGJlIGxlc3MgdGhhbiBbYENvbmZpZzo6TWF4Q2FuZGlkYXRlc2BdIGZvciB3ZWlnaHRzIHRvIGJlIGNvcnJlY3QuADRDYW5kaWRhY3lCb25kAQD8QAAAAAAAAAAAAAAAAAAAAAAMuCBGaXhlZCBhbW91bnQgdG8gZGVwb3NpdCB0byBiZWNvbWUgYSBjb2xsYXRvci4AQQEgV2hlbiBhIGNvbGxhdG9yIGNhbGxzIGBsZWF2ZV9pbnRlbnRgIHRoZXkgaW1tZWRpYXRlbHkgcmVjZWl2ZSB0aGUgZGVwb3NpdCBiYWNrLgABqQEAAVUEABgUUG90SWQRBiBQb3RTdGFrZQT0IEFjY291bnQgSWRlbnRpZmllciBmcm9tIHdoaWNoIHRoZSBpbnRlcm5hbCBQb3QgaXMgZ2VuZXJhdGVkLgA0TWF4Q2FuZGlkYXRlczgQZAAAAAzIIE1heGltdW0gbnVtYmVyIG9mIGNhbmRpZGF0ZXMgdGhhdCB3ZSBzaG91bGQgaGF2ZS4AzCBUaGlzIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBpbnZ1bG5lcmFibGVzLgBQTWluRWxpZ2libGVDb2xsYXRvcnM4EAQAAAAMVQEgTWluaW11bSBudW1iZXIgZWxpZ2libGUgY29sbGF0b3JzLiBTaG91bGQgYWx3YXlzIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiBUaGlzIGluY2x1ZGVzUQEgSW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlcmUgd2lsbCBhbHdheXMgYmUgb25lIGNvbGxhdG9yIHdobyBjYW5EIHByb2R1Y2UgYSBibG9jay4AQE1heEludnVsbmVyYWJsZXM4EBQAAAAEhCBNYXhpbXVtIG51bWJlciBvZiBpbnZ1bG5lcmFibGVzLgA0S2lja1RocmVzaG9sZDgQEA4AAAAALHBvdF9hY2NvdW50BIBtb2RsUG90U3Rha2UAAAAAAAAAAAAAAAAAAAAAAAAAAASgIEdldHMgdGhpcyBwYWxsZXQncyBkZXJpdmVkIHBvdCBhY2NvdW50LgABFQYABCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuABUAABxTZXNzaW9uARxTZXNzaW9uIChWYWxpZGF0b3JzAQBhAQQABHwgVGhlIGN1cnJlbnQgc2V0IG9mIHZhbGlkYXRvcnMuADBDdXJyZW50SW5kZXgBADgQAAAAAAR4IEN1cnJlbnQgaW5kZXggb2YgdGhlIHNlc3Npb24uADRRdWV1ZWRDaGFuZ2VkAQBdAQQACDkBIFRydWUgaWYgdGhlIHVuZGVybHlpbmcgZWNvbm9taWMgaWRlbnRpdGllcyBvciB3ZWlnaHRpbmcgYmVoaW5kIHRoZSB2YWxpZGF0b3JzpCBoYXMgY2hhbmdlZCBpbiB0aGUgcXVldWVkIHZhbGlkYXRvciBzZXQuAChRdWV1ZWRLZXlzAQAZBgQACD0BIFRoZSBxdWV1ZWQga2V5cyBmb3IgdGhlIG5leHQgc2Vzc2lvbi4gV2hlbiB0aGUgbmV4dCBzZXNzaW9uIGJlZ2lucywgdGhlc2Uga2V5c+Agd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgdmFsaWRhdG9yJ3Mgc2Vzc2lvbiBrZXlzLgBIRGlzYWJsZWRWYWxpZGF0b3JzAQAhBgQAFIAgSW5kaWNlcyBvZiBkaXNhYmxlZCB2YWxpZGF0b3JzLgA9ASBUaGUgdmVjIGlzIGFsd2F5cyBrZXB0IHNvcnRlZCBzbyB0aGF0IHdlIGNhbiBmaW5kIHdoZXRoZXIgYSBnaXZlbiB2YWxpZGF0b3IgaXM9ASBkaXNhYmxlZCB1c2luZyBiaW5hcnkgc2VhcmNoLiBJdCBnZXRzIGNsZWFyZWQgd2hlbiBgb25fc2Vzc2lvbl9lbmRpbmdgIHJldHVybnNkIGEgbmV3IHNldCBvZiBpZGVudGl0aWVzLgAgTmV4dEtleXMAAQQFBLEBBAAEnCBUaGUgbmV4dCBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yLgAgS2V5T3duZXIAAQQFMQYEBAAECQEgVGhlIG93bmVyIG9mIGEga2V5LiBUaGUga2V5IGlzIHRoZSBgS2V5VHlwZUlkYCArIHRoZSBlbmNvZGVkIGtleS4AREV4dGVybmFsbHlTZXRLZXlzAAEEBQQQBAAQMQEgQWNjb3VudHMgd2hvc2Uga2V5cyB3ZXJlIHNldCB2aWEgYFNlc3Npb25JbnRlcmZhY2VgIChleHRlcm5hbCBwYXRoKSB3aXRob3V0OQEgaW5jcmVtZW50aW5nIHRoZSBjb25zdW1lciByZWZlcmVuY2Ugb3IgcGxhY2luZyBhIGtleSBkZXBvc2l0LiBgZG9fcHVyZ2Vfa2V5c2A5ASBvbmx5IGRlY3JlbWVudHMgY29uc3VtZXJzIGZvciBhY2NvdW50cyB0aGF0IHdlcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIHRoZSBsb2NhbEAgc2Vzc2lvbiBwYWxsZXQuAAGtAQABWQQABChLZXlEZXBvc2l0/EAAAAAAAAAAAAAAAAAAAAAABKQgVGhlIGFtb3VudCB0byBiZSBoZWxkIHdoZW4gc2V0dGluZyBrZXlzLgABOQYACCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuEEtleXOxAQQoIFRoZSBrZXlzLgAWAAAQQXVyYQEQQXVyYQgsQXV0aG9yaXRpZXMBAD0GBAAEbCBUaGUgY3VycmVudCBhdXRob3JpdHkgc2V0LgAsQ3VycmVudFNsb3QBAEUGIAAAAAAAAAAADIAgVGhlIGN1cnJlbnQgc2xvdCBvZiB0aGlzIGJsb2NrLgCUIFRoaXMgd2lsbCBiZSBzZXQgaW4gYG9uX2luaXRpYWxpemVgLgAAAAQwU2xvdER1cmF0aW9uKCDAXQAAAAAAABQNASBUaGUgc2xvdCBkdXJhdGlvbiBBdXJhIHNob3VsZCBydW4gd2l0aCwgZXhwcmVzc2VkIGluIG1pbGxpc2Vjb25kcy4AIQEgVGhlIGVmZmVjdGl2ZSB2YWx1ZSBvZiB0aGlzIHR5cGUgY2FuIGJlIGNoYW5nZWQgd2l0aCBhIHJ1bnRpbWUgdXBncmFkZS4ANQEgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGVpdGhlciB1c2UgW2BNaW5pbXVtUGVyaW9kVGltZXNUd29gXSBvciBhIGNvbnN0LgAABCxBdXRob3JpdHlJZLUBBJggVGhlIGlkZW50aWZpZXIgdHlwZSBmb3IgYW4gYXV0aG9yaXR5LgAXAAAcQXVyYUV4dAEcQXVyYUV4dAgsQXV0aG9yaXRpZXMBAD0GBAAUlCBTZXJ2ZXMgYXMgY2FjaGUgZm9yIHRoZSBhdXRob3JpdGllcy4AcQEgVGhlIGF1dGhvcml0aWVzIGluIEF1UmEgYXJlIG92ZXJ3cml0dGVuIGluIGBvbl9pbml0aWFsaXplYCB3aGVuIHdlIHN3aXRjaCB0byBhIG5ldyBzZXNzaW9uLF0BIGJ1dCB3ZSByZXF1aXJlIHRoZSBvbGQgYXV0aG9yaXRpZXMgdG8gdmVyaWZ5IHRoZSBzZWFsIHdoZW4gdmFsaWRhdGluZyBhIFBvVi4gVGhpcyB3aWxsDQEgYWx3YXlzIGJlIHVwZGF0ZWQgdG8gdGhlIGxhdGVzdCBBdVJhIGF1dGhvcml0aWVzIGluIGBvbl9maW5hbGl6ZWAuADRSZWxheVNsb3RJbmZvAABJBgQAEAkBIEN1cnJlbnQgcmVsYXkgY2hhaW4gc2xvdCBwYWlyZWQgd2l0aCBhIG51bWJlciBvZiBhdXRob3JlZCBibG9ja3MuAGUBIFRoaXMgaXMgdXBkYXRlZCBpbiBbYEZpeGVkVmVsb2NpdHlDb25zZW5zdXNIb29rOjpvbl9zdGF0ZV9wcm9vZmBdIHdpdGggdGhlIGN1cnJlbnQgcmVsYXncIGNoYWluIHNsb3QgYXMgcHJvdmlkZWQgYnkgdGhlIHJlbGF5IGNoYWluIHN0YXRlIHByb29mLgAAAAAAAAAYAAAkWGNtcFF1ZXVlASRYY21wUXVldWUcUEluYm91bmRYY21wU3VzcGVuZGVkAQBNBgQAIA0BIFRoZSBzdXNwZW5kZWQgaW5ib3VuZCBYQ01QIGNoYW5uZWxzLiBBbGwgb3RoZXJzIGFyZSBub3Qgc3VzcGVuZGVkLgBxASBUaGlzIGlzIGEgYFN0b3JhZ2VWYWx1ZWAgaW5zdGVhZCBvZiBhIGBTdG9yYWdlTWFwYCBzaW5jZSB3ZSBleHBlY3QgbXVsdGlwbGUgcmVhZHMgcGVyIGJsb2NraQEgdG8gZGlmZmVyZW50IGtleXMgd2l0aCBhIG9uZSBieXRlIHBheWxvYWQuIFRoZSBhY2Nlc3MgdG8gYEJvdW5kZWRCVHJlZVNldGAgd2lsbCBiZSBjYWNoZWQVASB3aXRoaW4gdGhlIGJsb2NrIGFuZCB0aGVyZWZvcmUgb25seSBpbmNsdWRlZCBvbmNlIGluIHRoZSBwcm9vZiBzaXplLgBlASBOT1RFOiBUaGUgUG9WIGJlbmNobWFya2luZyBjYW5ub3Qga25vdyB0aGlzIGFuZCB3aWxsIG92ZXItZXN0aW1hdGUsIGJ1dCB0aGUgYWN0dWFsIHByb29mRCB3aWxsIGJlIHNtYWxsZXIuAEhPdXRib3VuZFhjbXBTdGF0dXMBAFUGBAAYXQEgVGhlIG5vbi1lbXB0eSBYQ01QIGNoYW5uZWxzIGluIG9yZGVyIG9mIGJlY29taW5nIG5vbi1lbXB0eSwgYW5kIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RRASBhbmQgbGFzdCBvdXRib3VuZCBtZXNzYWdlLiBJZiB0aGUgdHdvIGluZGljZXMgYXJlIGVxdWFsLCB0aGVuIGl0IGluZGljYXRlcyBhbiBlbXB0eVkBIHF1ZXVlIGFuZCB0aGVyZSBtdXN0IGJlIGEgbm9uLWBPa2AgYE91dGJvdW5kU3RhdHVzYC4gV2UgYXNzdW1lIHF1ZXVlcyBncm93IG5vIGdyZWF0ZXJZASB0aGFuIDY1NTM1IGl0ZW1zLiBRdWV1ZSBpbmRpY2VzIGZvciBub3JtYWwgbWVzc2FnZXMgYmVnaW4gYXQgb25lOyB6ZXJvIGlzIHJlc2VydmVkIGluEQEgY2FzZSBvZiB0aGUgbmVlZCB0byBzZW5kIGEgaGlnaC1wcmlvcml0eSBzaWduYWwgbWVzc2FnZSB0aGlzIGJsb2NrLgkBIFRoZSBib29sIGlzIHRydWUgaWYgdGhlcmUgaXMgYSBzaWduYWwgbWVzc2FnZSB3YWl0aW5nIHRvIGJlIHNlbnQuAFBPdXRib3VuZFhjbXBNZXNzYWdlcwEBCAIFaQZtBgQABLwgVGhlIG1lc3NhZ2VzIG91dGJvdW5kIGluIGEgZ2l2ZW4gWENNUCBjaGFubmVsLgA4U2lnbmFsTWVzc2FnZXMBAQQCnG0GBAAEoCBBbnkgc2lnbmFsIG1lc3NhZ2VzIHdhaXRpbmcgdG8gYmUgc2VudC4ALFF1ZXVlQ29uZmlnAQBxBjAgAAAAMAAAAAgAAAAEFQEgVGhlIGNvbmZpZ3VyYXRpb24gd2hpY2ggY29udHJvbHMgdGhlIGR5bmFtaWNzIG9mIHRoZSBvdXRib3VuZCBxdWV1ZS4AOFF1ZXVlU3VzcGVuZGVkAQBdAQQABEEBIFdoZXRoZXIgb3Igbm90IHRoZSBYQ01QIHF1ZXVlIGlzIHN1c3BlbmRlZCBmcm9tIGV4ZWN1dGluZyBpbmNvbWluZyBYQ01zIG9yIG5vdC4ARERlbGl2ZXJ5RmVlRmFjdG9yAQEEBZxdBUAAAGSns7bgDQAAAAAAAAAABMQgVGhlIGZhY3RvciB0byBtdWx0aXBseSB0aGUgYmFzZSBkZWxpdmVyeSBmZWUgYnkuAAG5AQABXQQADExNYXhJbmJvdW5kU3VzcGVuZGVkOBDoAwAAFEkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbmJvdW5kIFhDTVAgY2hhbm5lbHMgdGhhdCBjYW4gYmUgc3VzcGVuZGVkIHNpbXVsdGFuZW91c2x5LgBdASBBbnkgZnVydGhlciBjaGFubmVsIHN1c3BlbnNpb25zIHdpbGwgZmFpbCBhbmQgbWVzc2FnZXMgbWF5IGdldCBkcm9wcGVkIHdpdGhvdXQgZnVydGhlckUBIG5vdGljZS4gQ2hvb3NpbmcgYSBoaWdoIHZhbHVlICgxMDAwKSBpcyBva2F5OyB0aGUgdHJhZGUtb2ZmIHRoYXQgaXMgZGVzY3JpYmVkIGlu2CBbYEluYm91bmRYY21wU3VzcGVuZGVkYF0gc3RpbGwgYXBwbGllcyBhdCB0aGF0IHNjYWxlLgBkTWF4QWN0aXZlT3V0Ym91bmRDaGFubmVsczgQgAAAACBlASBNYXhpbWFsIG51bWJlciBvZiBvdXRib3VuZCBYQ01QIGNoYW5uZWxzIHRoYXQgY2FuIGhhdmUgbWVzc2FnZXMgcXVldWVkIGF0IHRoZSBzYW1lIHRpbWUuAFUBIElmIHRoaXMgaXMgcmVhY2hlZCwgdGhlbiBubyBmdXJ0aGVyIG1lc3NhZ2VzIGNhbiBiZSBzZW50IHRvIGNoYW5uZWxzIHRoYXQgZG8gbm90IHlldF0BIGhhdmUgYSBtZXNzYWdlIHF1ZXVlZC4gVGhpcyBzaG91bGQgYmUgc2V0IHRvIHRoZSBleHBlY3RlZCBtYXhpbXVtIG9mIG91dGJvdW5kIGNoYW5uZWxzYQEgd2hpY2ggaXMgZGV0ZXJtaW5lZCBieSBbYFNlbGY6OkNoYW5uZWxJbmZvYF0uIEl0IGlzIGltcG9ydGFudCB0byBzZXQgdGhpcyBsYXJnZSBlbm91Z2gsXQEgc2luY2Ugb3RoZXJ3aXNlIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgcHJvdG9jb2wgd2lsbCBub3Qgd29yayBhcyBpbnRlbmRlZCBhbmQgbWVzc2FnZXNRASBtYXkgYmUgZHJvcHBlZC4gVGhpcyB2YWx1ZSBpbmNyZWFzZXMgdGhlIFBvViBhbmQgc2hvdWxkIHRoZXJlZm9yZSBub3QgYmUgcGlja2VkIHRvb00BIGhpZ2guIEdvdmVybmFuY2UgbmVlZHMgdG8gcGF5IGF0dGVudGlvbiB0byBub3Qgb3BlbiBtb3JlIGNoYW5uZWxzIHRoYW4gdGhpcyB2YWx1ZS4ALE1heFBhZ2VTaXplOBAAnAEAFLggVGhlIG1heGltYWwgcGFnZSBzaXplIGZvciBIUk1QIG1lc3NhZ2UgcGFnZXMuAGEBIEEgbG93ZXIgbGltaXQgY2FuIGJlIHNldCBkeW5hbWljYWxseSwgYnV0IHRoaXMgaXMgdGhlIGhhcmQtbGltaXQgZm9yIHRoZSBQb1Ygd29yc3QgY2FzZVUBIGJlbmNobWFya2luZy4gVGhlIGxpbWl0IGZvciB0aGUgc2l6ZSBvZiBhIG1lc3NhZ2UgaXMgc2xpZ2h0bHkgYmVsb3cgdGhpcywgc2luY2Ugc29tZbggb3ZlcmhlYWQgaXMgaW5jdXJyZWQgZm9yIGVuY29kaW5nIHRoZSBmb3JtYXQuAAF1BgAAAB4AACxQb2xrYWRvdFhjbQEsUG9sa2Fkb3RYY208MFF1ZXJ5Q291bnRlcgEAKCAAAAAAAAAAAASIIFRoZSBsYXRlc3QgYXZhaWxhYmxlIHF1ZXJ5IGluZGV4LgAcUXVlcmllcwABBAIoeQYEAARUIFRoZSBvbmdvaW5nIHF1ZXJpZXMuAChBc3NldFRyYXBzAQEEBjw4EAAAAAAQaCBUaGUgZXhpc3RpbmcgYXNzZXQgdHJhcHMuAGEBIEtleSBpcyB0aGUgYmxha2UyIDI1NiBoYXNoIG9mIChvcmlnaW4sIHZlcnNpb25lZCBgQXNzZXRzYCkgcGFpci4gVmFsdWUgaXMgdGhlIG51bWJlciBvZh0BIHRpbWVzIHRoaXMgcGFpciBoYXMgYmVlbiB0cmFwcGVkICh1c3VhbGx5IGp1c3QgMSBpZiBpdCBleGlzdHMgYXQgYWxsKS4AOFNhZmVYY21WZXJzaW9uAAA4BAAIYQEgRGVmYXVsdCB2ZXJzaW9uIHRvIGVuY29kZSBYQ00gd2hlbiBsYXRlc3QgdmVyc2lvbiBvZiBkZXN0aW5hdGlvbiBpcyB1bmtub3duLiBJZiBgTm9uZWAsPQEgdGhlbiB0aGUgZGVzdGluYXRpb25zIHdob3NlIFhDTSB2ZXJzaW9uIGlzIHVua25vd24gYXJlIGNvbnNpZGVyZWQgdW5yZWFjaGFibGUuAEBTdXBwb3J0ZWRWZXJzaW9uAAEIBQKNBjgEAATwIFRoZSBMYXRlc3QgdmVyc2lvbnMgdGhhdCB3ZSBrbm93IHZhcmlvdXMgbG9jYXRpb25zIHN1cHBvcnQuAEBWZXJzaW9uTm90aWZpZXJzAAEIBQKNBigEAAQFASBBbGwgbG9jYXRpb25zIHRoYXQgd2UgaGF2ZSByZXF1ZXN0ZWQgdmVyc2lvbiBub3RpZmljYXRpb25zIGZyb20uAFBWZXJzaW9uTm90aWZ5VGFyZ2V0cwABCAUCjQaRBgQACHEBIFRoZSB0YXJnZXQgbG9jYXRpb25zIHRoYXQgYXJlIHN1YnNjcmliZWQgdG8gb3VyIHZlcnNpb24gY2hhbmdlcywgYXMgd2VsbCBhcyB0aGUgbW9zdCByZWNlbnSUIG9mIG91ciB2ZXJzaW9ucyB3ZSBpbmZvcm1lZCB0aGVtIG9mLgBUVmVyc2lvbkRpc2NvdmVyeVF1ZXVlAQCVBgQADGUBIERlc3RpbmF0aW9ucyB3aG9zZSBsYXRlc3QgWENNIHZlcnNpb24gd2Ugd291bGQgbGlrZSB0byBrbm93LiBEdXBsaWNhdGVzIG5vdCBhbGxvd2VkLCBhbmRxASB0aGUgYHUzMmAgY291bnRlciBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYSBzZW5kIHRvIHRoZSBkZXN0aW5hdGlvbiBoYXMgYmVlbiBhdHRlbXB0ZWQsjCB3aGljaCBpcyB1c2VkIGFzIGEgcHJpb3JpdGl6YXRpb24uAEBDdXJyZW50TWlncmF0aW9uAAChBgQABJwgVGhlIGN1cnJlbnQgbWlncmF0aW9uJ3Mgc3RhZ2UsIGlmIGFueS4AVFJlbW90ZUxvY2tlZEZ1bmdpYmxlcwABDAUCAqUGqQYEAATwIEZ1bmdpYmxlIGFzc2V0cyB3aGljaCB3ZSBrbm93IGFyZSBsb2NrZWQgb24gYSByZW1vdGUgY2hhaW4uADxMb2NrZWRGdW5naWJsZXMAAQQCBLkGBAAE4CBGdW5naWJsZSBhc3NldHMgd2hpY2ggd2Uga25vdyBhcmUgbG9ja2VkIG9uIHRoaXMgY2hhaW4uAFRYY21FeGVjdXRpb25TdXNwZW5kZWQBAF0BBAAEtCBHbG9iYWwgc3VzcGVuc2lvbiBzdGF0ZSBvZiB0aGUgWENNIGV4ZWN1dG9yLgA8U2hvdWxkUmVjb3JkWGNtAQBdAQQAHFkBIFdoZXRoZXIgb3Igbm90IGluY29taW5nIFhDTXMgKGJvdGggZXhlY3V0ZWQgbG9jYWxseSBhbmQgcmVjZWl2ZWQpIHNob3VsZCBiZSByZWNvcmRlZC7EIE9ubHkgb25lIFhDTSBwcm9ncmFtIHdpbGwgYmUgcmVjb3JkZWQgYXQgYSB0aW1lLikBIFRoaXMgaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBydW50aW1lIEFQSXMsIGFuZCBpdCdzIGFkdmlzZWQgaXQgc3RheXMgZmFsc2UNASBmb3IgYWxsIG90aGVyIHVzZSBjYXNlcywgc28gYXMgdG8gbm90IGRlZ3JhZGUgcmVndWxhciBwZXJmb3JtYW5jZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgAsUmVjb3JkZWRYY20AANECBAAYSQEgSWYgW2BTaG91bGRSZWNvcmRYY21gXSBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiB0aGUgbGFzdCBYQ00gcHJvZ3JhbSBleGVjdXRlZCBsb2NhbGx5VCB3aWxsIGJlIHN0b3JlZCBoZXJlLikBIFJ1bnRpbWUgQVBJcyBjYW4gZmV0Y2ggdGhlIFhDTSB0aGF0IHdhcyBleGVjdXRlZCBieSBhY2Nlc3NpbmcgdGhpcyB2YWx1ZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgBEQXV0aG9yaXplZEFsaWFzZXMAAQQCwQHFBgQADGUBIE1hcCBvZiBhdXRob3JpemVkIGFsaWFzZXJzIG9mIGxvY2FsIG9yaWdpbnMuIEVhY2ggbG9jYWwgbG9jYXRpb24gY2FuIGF1dGhvcml6ZSBhIGxpc3Qgb2ZZASBvdGhlciBsb2NhdGlvbnMgdG8gYWxpYXMgaW50byBpdC4gRWFjaCBhbGlhc2VyIGlzIG9ubHkgdmFsaWQgdW50aWwgaXRzIGlubmVyIGBleHBpcnlgOCBibG9jayBudW1iZXIuAAG9AQgBArkBVGhpcyBleHRyaW5zaWMgdXNlcyBgV2VpZ2h0TGltaXQ6OlVubGltaXRlZGAsIHBsZWFzZSBtaWdyYXRlIHRvIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2Agb3IgYHRyYW5zZmVyX2Fzc2V0c2AAAgLZAVRoaXMgZXh0cmluc2ljIHVzZXMgYFdlaWdodExpbWl0OjpVbmxpbWl0ZWRgLCBwbGVhc2UgbWlncmF0ZSB0byBgbGltaXRlZF9yZXNlcnZlX3RyYW5zZmVyX2Fzc2V0c2Agb3IgYHRyYW5zZmVyX2Fzc2V0c2AAAWEEABBEVW5pdmVyc2FsTG9jYXRpb27kGAIJAgDJDwSEIFRoaXMgY2hhaW4ncyBVbml2ZXJzYWwgTG9jYXRpb24uAFBBZHZlcnRpc2VkWGNtVmVyc2lvbjgQBQAAAAglASBUaGUgbGF0ZXN0IHN1cHBvcnRlZCB2ZXJzaW9uIHRoYXQgd2UgYWR2ZXJ0aXNlLiBHZW5lcmFsbHkganVzdCBzZXQgaXQgdG+EIGBwYWxsZXRfeGNtOjpDdXJyZW50WGNtVmVyc2lvbmAuAChNYXhMb2NrZXJzOBAIAAAABBkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NhbCBYQ00gbG9ja3MgdGhhdCBhIHNpbmdsZSBhY2NvdW50IG1heSBoYXZlLgBYTWF4UmVtb3RlTG9ja0NvbnN1bWVyczgQAAAAAAT8IFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zdW1lcnMgYSBzaW5nbGUgcmVtb3RlIGxvY2sgbWF5IGhhdmUuAAHdBgQYArxVc2UgYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcmAgaW5zdGVhZAEYMjAuMC4wCCxSdW50aW1lQ2FsbCAEZCBUaGUgcnVudGltZSBgQ2FsbGAgdHlwZS5wUmVtb3RlTG9ja0NvbnN1bWVySWRlbnRpZmllchAExCBUaGUgSUQgdHlwZSBmb3IgbG9jYWwgY29uc3VtZXJzIG9mIHJlbW90ZSBsb2Nrcy4AHwAAKEN1bXVsdXNYY20AAYkDAAFxBAAAAAAAIAAAME1lc3NhZ2VRdWV1ZQEwTWVzc2FnZVF1ZXVlDDBCb29rU3RhdGVGb3IBAQQFkQPlBnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATMIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgYW5kIGxhc3QgKG5vbi1lbXB0eSkgcGFnZXMuACxTZXJ2aWNlSGVhZAAAkQMEAAS8IFRoZSBvcmlnaW4gYXQgd2hpY2ggd2Ugc2hvdWxkIGJlZ2luIHNlcnZpY2luZy4AFFBhZ2VzAAEIBQXxBvUGBAAEiCBUaGUgbWFwIG9mIHBhZ2UgaW5kaWNlcyB0byBwYWdlcy4AAY0DAAF1BAAQIEhlYXBTaXplOBAAAAEAFD0BIFRoZSBzaXplIG9mIHRoZSBwYWdlOyB0aGlzIGltcGxpZXMgdGhlIG1heGltdW0gbWVzc2FnZSBzaXplIHdoaWNoIGNhbiBiZSBzZW50LgBZASBBIGdvb2QgdmFsdWUgZGVwZW5kcyBvbiB0aGUgZXhwZWN0ZWQgbWVzc2FnZSBzaXplcywgdGhlaXIgd2VpZ2h0cywgdGhlIHdlaWdodCB0aGF0IGlzXQEgYXZhaWxhYmxlIGZvciBwcm9jZXNzaW5nIHRoZW0gYW5kIHRoZSBtYXhpbWFsIG5lZWRlZCBtZXNzYWdlIHNpemUuIFRoZSBtYXhpbWFsIG1lc3NhZ2URASBzaXplIGlzIHNsaWdodGx5IGxvd2VyIHRoYW4gdGhpcyBhcyBkZWZpbmVkIGJ5IFtgTWF4TWVzc2FnZUxlbk9mYF0uACBNYXhTdGFsZTgQCAAAAAxdASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhbGUgcGFnZXMgKGkuZS4gb2Ygb3ZlcndlaWdodCBtZXNzYWdlcykgYWxsb3dlZCBiZWZvcmUgY3VsbGluZ1EBIGNhbiBoYXBwZW4uIE9uY2UgdGhlcmUgYXJlIG1vcmUgc3RhbGUgcGFnZXMgdGhhbiB0aGlzLCB0aGVuIGhpc3RvcmljYWwgcGFnZXMgbWF5IGJl/CBkcm9wcGVkLCBldmVuIGlmIHRoZXkgY29udGFpbiB1bnByb2Nlc3NlZCBvdmVyd2VpZ2h0IG1lc3NhZ2VzLgA0U2VydmljZVdlaWdodBkDLAEHAFhA+6ICAOAAGEEBIFRoZSBhbW91bnQgb2Ygd2VpZ2h0IChpZiBhbnkpIHdoaWNoIHNob3VsZCBiZSBwcm92aWRlZCB0byB0aGUgbWVzc2FnZSBxdWV1ZSBmb3KoIHNlcnZpY2luZyBlbnF1ZXVlZCBpdGVtcyBgb25faW5pdGlhbGl6ZWAuAPwgVGhpcyBtYXkgYmUgbGVnaXRpbWF0ZWx5IGBOb25lYCBpbiB0aGUgY2FzZSB0aGF0IHlvdSB3aWxsIGNhbGxdASBgU2VydmljZVF1ZXVlczo6c2VydmljZV9xdWV1ZXNgIG1hbnVhbGx5IG9yIHNldCBbYFNlbGY6OklkbGVNYXhTZXJ2aWNlV2VpZ2h0YF0gdG8gaGF2ZVQgaXQgcnVuIGluIGBvbl9pZGxlYC4AUElkbGVNYXhTZXJ2aWNlV2VpZ2h0GQMsAQcAoNshXQIAgAAUXQEgVGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCAoaWYgYW55KSB0byBiZSB1c2VkIGZyb20gcmVtYWluaW5nIHdlaWdodCBgb25faWRsZWAgd2hpY2hBASBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdGhlIG1lc3NhZ2UgcXVldWUgZm9yIHNlcnZpY2luZyBlbnF1ZXVlZCBpdGVtcyBgb25faWRsZWAuPQEgVXNlZnVsIGZvciBwYXJhY2hhaW5zIHRvIHByb2Nlc3MgbWVzc2FnZXMgYXQgdGhlIHNhbWUgYmxvY2sgdGhleSBhcmUgcmVjZWl2ZWQuACkBIElmIGBOb25lYCwgaXQgd2lsbCBub3QgY2FsbCBgU2VydmljZVF1ZXVlczo6c2VydmljZV9xdWV1ZXNgIGluIGBvbl9pZGxlYC4AAf0GAAQQU2l6ZTgEVCBQYWdlL2hlYXAgc2l6ZSB0eXBlLgAiAAAQU3VkbwEQU3VkbwQMS2V5AAAEBAAEhCBUaGUgYEFjY291bnRJZGAgb2YgdGhlIHN1ZG8ga2V5LgABlQMAAX0EAAABAQcABCxSdW50aW1lQ2FsbCAESCBBIHN1ZG8tYWJsZSBjYWxsLgBkAAAIBAUAIJUBBAA0AAQIDBAUGBwgJCgsMDQ0QXV0aG9yaXplQ2FsbJkDEEhDaGVja05vblplcm9TZW5kZXKdAxBAQ2hlY2tTcGVjVmVyc2lvbqEDODhDaGVja1R4VmVyc2lvbqUDODBDaGVja0dlbmVzaXOpAzw4Q2hlY2tNb3J0YWxpdHmtAzwoQ2hlY2tOb25jZbUDECxDaGVja1dlaWdodLkDEGBDaGFyZ2VUcmFuc2FjdGlvblBheW1lbnS9AxBcVmFsaWRhdGVBdXRob3JpemVkQ2FsbHPBAxBYQWxsb3dhbmNlQmFzZWRQcmlvcml0ecUDEERDaGVja01ldGFkYXRhSGFzaMkD0QNQU3RvcmFnZVdlaWdodFJlY2xhaW0QEFwcQXVyYUFwaQg0c2xvdF9kdXJhdGlvbgAFBwyQIFJldHVybnMgdGhlIHNsb3QgZHVyYXRpb24gZm9yIEF1cmEuACUBIEN1cnJlbnRseSwgb25seSB0aGUgdmFsdWUgcHJvdmlkZWQgYnkgdGhpcyB0eXBlIGF0IGdlbmVzaXMgd2lsbCBiZSB1c2VkLgAsYXV0aG9yaXRpZXMAQQYEnCBSZXR1cm4gdGhlIGN1cnJlbnQgc2V0IG9mIGF1dGhvcml0aWVzLgAEuCBBUEkgbmVjZXNzYXJ5IGZvciBibG9jayBhdXRob3JzaGlwIHdpdGggYXVyYS4EAFBSZWxheVBhcmVudE9mZnNldEFwaQhMcmVsYXlfcGFyZW50X29mZnNldAA4DBUBIEZldGNoIHRoZSByZWxheSBwYXJlbnQgb2Zmc2V0IHRoYXQgaXMgZXhwZWN0ZWQgZnJvbSB0aGUgcmVsYXkgY2hhaW4uAF0BIFRoaXMgZGV0ZXJtaW5lcyBob3cgbWFueSBibG9ja3MgYmVoaW5kIHRoZSByZWxheSBjaGFpbiB0aXAgdGhlIHJlbGF5IHBhcmVudCBzaG91bGQgYmUuAFhtYXhfY2xhaW1fcXVldWVfb2Zmc2V0AAyI6CBNYXhpbXVtIGNsYWltIHF1ZXVlIG9mZnNldCBmb3IgYXN5bmMgYmFja2luZyBmbGV4aWJpbGl0eS4AOQEgQm91bmRzIGhvdyBmYXIgImludG8gdGhlIGZ1dHVyZSIgYSBjYW5kaWRhdGUgbWF5IGxvb2sgaW4gdGhlIGNsYWltIHF1ZXVlIHdoZW5RASBzZWxlY3RpbmcgYSBjb3JlLiBUaGUgZWZmZWN0aXZlIGNsYWltIHF1ZXVlIGRlcHRoIGRlcGVuZHMgb24gdGhlIGNhbmRpZGF0ZSB2ZXJzaW9uOgBhASAtICoqVjEvVjIgY2FuZGlkYXRlcyoqOiB0aGUgY2xhaW0gcXVldWUgaXMgbG9va2VkIHVwIGF0IHRoZSBjYW5kaWRhdGUncyBgcmVsYXlfcGFyZW50YCxJASAgIHdoaWNoIGlzIGByZWxheV9wYXJlbnRfb2Zmc2V0YCBibG9ja3MgYmVoaW5kIHRoZSByZWxheS1jaGFpbiB0aXAuIFRoZSBlZmZlY3RpdmXsICAgZGVwdGggaXMgYHJlbGF5X3BhcmVudF9vZmZzZXQgKyBtYXhfY2xhaW1fcXVldWVfb2Zmc2V0YC4AFQEgLSAqKlYzIGNhbmRpZGF0ZXMqKjogdGhlIGNsYWltIHF1ZXVlIGlzIGxvb2tlZCB1cCBhdCB0aGUgY2FuZGlkYXRlJ3NdASAgIGBzY2hlZHVsaW5nX3BhcmVudGAg4oCUIHRoZSByZWxheS1jaGFpbiBibG9jayBvZiB0aGUgKmxhc3QgZmluaXNoZWQqIHNsb3QsIGRlY291cGxlZCUBICAgZnJvbSB0aGUgZXhlY3V0aW9uLWNvbnRleHQgYHJlbGF5X3BhcmVudGAuIFRoZSBlZmZlY3RpdmUgZGVwdGggaXMganVzdHAgICBgbWF4X2NsYWltX3F1ZXVlX29mZnNldGAuACEBIENvbGxhdG9ycyBzZWxlY3QgYSBjb3JlIHZpYSBhbiBvZmZzZXQgaW4gYFswLCBtYXhfY2xhaW1fcXVldWVfb2Zmc2V0XWAuAFEBIC0gKipWMiBjYW5kaWRhdGVzKio6IGBtYXhfY2xhaW1fcXVldWVfb2Zmc2V0ID0gMWAgaXMgc3VmZmljaWVudC4gVGhlIGNsYWltIHF1ZXVlIGlzWQEgICBsb29rZWQgdXAgYXQgYHJlbGF5X3BhcmVudGAsIHdoaWNoIHNpdHMgYmVoaW5kIHRoZSB0aXAuIE9mZnNldCAwIGNvdmVycyBzeW5jaHJvbm91c1UBICAgYmFja2luZyBpbiB0aGUgbmV4dCByZWxheSBibG9jazsgb2Zmc2V0IDEgY292ZXJzIGFzeW5jaHJvbm91cyBiYWNraW5nIGluIHRoZSByZWxheVAgICBibG9jayBhZnRlciB0aGF0LgAtASAtICoqVjMgY2FuZGlkYXRlcyoqOiBvZmZzZXQgMCBpcyBub3QgcmVhY2hhYmxlIOKAlCB0aGUgYHNjaGVkdWxpbmdfcGFyZW50YFUBICAgaXMgdXN1YWxseSB0aGUgbGVhZiB3aGVuIHBpY2tlZCwgYnV0IGl0cyBjaGlsZCBpcyBhbHJlYWR5IGJlaW5nIGJ1aWx0LCBzbyB0aGVyZSBpczkBICAgbm8gb3Bwb3J0dW5pdHkgdG8gbGFuZCBpbiB0aGUgbmV4dCByZWxheSBibG9jay4gT2Zmc2V0IDEgaXMgcmVhY2hhYmxlIHVuZGVyVQEgICBzeW5jaHJvbm91cy1iYWNraW5nIHNlbWFudGljcy4gRm9yIGVsYXN0aWMgc2NhbGluZyB0aGUgbGFzdCBibG9jayBpbiB0aGUgYnVuZGxlIGlzNQEgICBidWlsdCBuZWFyIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc2xvdCwgd2hpY2ggbWFrZXMgb2Zmc2V0IDEgdG9vIHRpZ2h0IOKAlFUBICAgYG1heF9jbGFpbV9xdWV1ZV9vZmZzZXQgPSAyYCBpcyB0aGUgbWluaW11bSBjYXAgdGhhdCBrZWVwcyBlbGFzdGljIHNjYWxpbmcgdmlhYmxlLgBVASBOb3RlOiB0aGlzIG1ldGhvZCB3YXMgYWRkZWQgaW4gYGFwaV92ZXJzaW9uID0gMmAuIENvbGxhdG9ycyBjYWxsaW5nIG9uIHJ1bnRpbWVzIHRoYXRNASBvbmx5IGltcGxlbWVudCBgYXBpX3ZlcnNpb24gPSAxYCBvZiBbYFJlbGF5UGFyZW50T2Zmc2V0QXBpYF0gd2lsbCByZWNlaXZlIGFuIGVycm9ySQEgYW5kIHNob3VsZCBmYWxsIGJhY2sgdG8gYSBzZW5zaWJsZSBkZWZhdWx0IChjdXJyZW50IGNvbGxhdG9yIGRlZmF1bHRzOiBgMWAgb24gdGhlhCBWMyBwYXRoLCBgMGAgb24gdGhlIFYxL1YyIHBhdGgpLgD4IFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9pc3N1ZXMvODg5Mz4APFEBIEFQSSB0byB0ZWxsIHRoZSBub2RlIHNpZGUgaG93IHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIGJlIGNob3NlbiBhbmQgaG93IGNsYWltIHF1ZXVlYCBvZmZzZXRzIGFyZSBkZXRlcm1pbmVkLgBZASBBIGxhcmdlciByZWxheSBwYXJlbnQgb2Zmc2V0IGluZGljYXRlcyB0aGF0IHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIG5vdCBiZSB0aGUgdGlwIG9mUQEgdGhlIHJlbGF5IGNoYWluLCBidXQgYE5gIGJsb2NrcyBiZWhpbmQgdGhlIHRpcC4gVGhpcyBvZmZzZXQgaXMgdGhlbiBlbmZvcmNlZCBieSB0aGUkIHJ1bnRpbWUuAFkBIFRoZSBtYXggY2xhaW0gcXVldWUgb2Zmc2V0IGRldGVybWluZXMgaG93IGZhciAiaW50byB0aGUgZnV0dXJlIiBjb2xsYXRvcnMgdGFyZ2V0IHdoZW5RASBzZWxlY3RpbmcgY29yZXMgZnJvbSB0aGUgY2xhaW0gcXVldWUuIFRoaXMgcHJvdmlkZXMgYXN5bmMgYmFja2luZyBmbGV4aWJpbGl0eSB3aGlsZaggcHJldmVudGluZyBjb2xsYXRvcnMgZnJvbSBza2lwcGluZyBzbG90cy74IFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9pc3N1ZXMvODg5Mz4ARCBWZXJzaW9uIGhpc3Rvcnk69CAtIFZlcnNpb24gMTogSW5pdGlhbCB2ZXJzaW9uIHdpdGggYHJlbGF5X3BhcmVudF9vZmZzZXRgIG9ubHnMIC0gVmVyc2lvbiAyOiBBZGRlZCBgbWF4X2NsYWltX3F1ZXVlX29mZnNldGAgbWV0aG9kCABgQXVyYVVuaW5jbHVkZWRTZWdtZW50QXBpBDhjYW5fYnVpbGRfdXBvbgg0aW5jbHVkZWRfaGFzaDwQc2xvdEUGXQEoOQEgV2hldGhlciBpdCBpcyBsZWdhbCB0byBleHRlbmQgdGhlIGNoYWluLCBhc3N1bWluZyB0aGUgZ2l2ZW4gYmxvY2sgaXMgdGhlIG1vc3Q1ASByZWNlbnRseSBpbmNsdWRlZCBvbmUgYXMtb2YgdGhlIHJlbGF5IHBhcmVudCB0aGF0IHdpbGwgYmUgYnVpbHQgYWdhaW5zdCwgYW5kcCB0aGUgZ2l2ZW4gcmVsYXkgY2hhaW4gc2xvdC4AUQEgVGhpcyBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIHRoZSBsb2dpYyB0aGUgcnVudGltZSB1c2VzIHdoZW4gdmFsaWRhdGluZyBibG9ja3MgdG84IGF2b2lkIGlzc3Vlcy4AYQEgV2hlbiB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGlzIGVtcHR5LCBpLmUuIGBpbmNsdWRlZF9oYXNoID09IGF0YCwgd2hlcmUgYXQgaXMgdGhlIGJsb2NrYQEgd2hvc2Ugc3RhdGUgd2UgYXJlIHF1ZXJ5aW5nIGFnYWluc3QsIHRoaXMgbXVzdCBhbHdheXMgcmV0dXJuIGB0cnVlYCBhcyBsb25nIGFzIHRoZSBzbG90vCBpcyBtb3JlIHJlY2VudCB0aGFuIHRoZSBpbmNsdWRlZCBibG9jayBpdHNlbGYuADQ1ASBUaGlzIHJ1bnRpbWUgQVBJIGlzIHVzZWQgdG8gaW5mb3JtIHBvdGVudGlhbCBibG9jayBhdXRob3JzIHdoZXRoZXIgdGhleSB3aWxsJQEgaGF2ZSB0aGUgcmlnaHQgdG8gYXV0aG9yIGF0IGEgc2xvdCwgYXNzdW1pbmcgdGhleSBoYXZlIGNsYWltZWQgdGhlIHNsb3QuAHUBIEluIHBhcnRpY3VsYXIsIHRoaXMgQVBJIGFsbG93cyBBdXJhLWJhc2VkIHBhcmFjaGFpbnMgdG8gcmVndWxhdGUgdGhlaXIgInVuaW5jbHVkZWQgc2VnbWVudCIsbQEgd2hpY2ggaXMgdGhlIHNlY3Rpb24gb2YgdGhlIGhlYWQgb2YgdGhlIGNoYWluIHdoaWNoIGhhcyBub3QgeWV0IGJlZW4gbWFkZSBhdmFpbGFibGUgaW4gdGhlNCByZWxheSBjaGFpbi4AYQEgV2hlbiB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGlzIHNob3J0LCBBdXJhIGNoYWlucyB3aWxsIGFsbG93IGF1dGhvcnMgdG8gY3JlYXRlIG11bHRpcGxlXQEgYmxvY2tzIHBlciBzbG90IGluIG9yZGVyIHRvIGJ1aWxkIGEgYmFja2xvZy4gV2hlbiBpdCBpcyBzYXR1cmF0ZWQsIHRoaXMgQVBJIHdpbGwgbGltaXSoIHRoZSBhbW91bnQgb2YgYmxvY2tzIHRoYXQgY2FuIGJlIGNyZWF0ZWQuACQgQ2hhbmdlczqRASAtIFZlcnNpb24gMjogVXBkYXRlIHRvIGBjYW5fYnVpbGRfdXBvbmAgdG8gdGFrZSBhIHJlbGF5IGNoYWluIGBTbG90YCBpbnN0ZWFkIG9mIGEgcGFyYWNoYWluIGBTbG90YC4IABBDb3JlDBx2ZXJzaW9uAL0EBJAgUmV0dXJucyB0aGUgdmVyc2lvbiBvZiB0aGUgcnVudGltZS4ANGV4ZWN1dGVfYmxvY2sEFGJsb2NrCQcQBGQgRXhlY3V0ZSB0aGUgZ2l2ZW4gYmxvY2suAEBpbml0aWFsaXplX2Jsb2NrBBhoZWFkZXJcFQcEQQEgSW5pdGlhbGl6ZSBhIGJsb2NrIHdpdGggdGhlIGdpdmVuIGhlYWRlciBhbmQgcmV0dXJuIHRoZSBydW50aW1lIGV4ZWN1dGl2ZSBtb2RlLgAEIQEgVGhlIGBDb3JlYCBydW50aW1lIGFwaSB0aGF0IGV2ZXJ5IFN1YnN0cmF0ZSBydW50aW1lIG5lZWRzIHRvIGltcGxlbWVudC4UACBNZXRhZGF0YQwgbWV0YWRhdGEAGQcEjCBSZXR1cm5zIHRoZSBtZXRhZGF0YSBvZiBhIHJ1bnRpbWUuAExtZXRhZGF0YV9hdF92ZXJzaW9uBBx2ZXJzaW9uOB0HEKQgUmV0dXJucyB0aGUgbWV0YWRhdGEgYXQgYSBnaXZlbiB2ZXJzaW9uLgAFASBJZiB0aGUgZ2l2ZW4gYHZlcnNpb25gIGlzbid0IHN1cHBvcnRlZCwgdGhpcyB3aWxsIHJldHVybiBgTm9uZWAudQEgVXNlIFtgU2VsZjo6bWV0YWRhdGFfdmVyc2lvbnNgXSB0byBmaW5kIG91dCBhYm91dCBzdXBwb3J0ZWQgbWV0YWRhdGEgdmVyc2lvbiBvZiB0aGUgcnVudGltZS4ARG1ldGFkYXRhX3ZlcnNpb25zACEHDKQgUmV0dXJucyB0aGUgc3VwcG9ydGVkIG1ldGFkYXRhIHZlcnNpb25zLgDAIFRoaXMgY2FuIGJlIHVzZWQgdG8gY2FsbCBgbWV0YWRhdGFfYXRfdmVyc2lvbmAuAAQBASBUaGUgYE1ldGFkYXRhYCBhcGkgdHJhaXQgdGhhdCByZXR1cm5zIG1ldGFkYXRhIGZvciB0aGUgcnVudGltZS4IADBCbG9ja0J1aWxkZXIQPGFwcGx5X2V4dHJpbnNpYwQkZXh0cmluc2lj2QQlBxBsIEFwcGx5IHRoZSBnaXZlbiBleHRyaW5zaWMuADkBIFJldHVybnMgYW4gaW5jbHVzaW9uIG91dGNvbWUgd2hpY2ggc3BlY2lmaWVzIGlmIHRoaXMgZXh0cmluc2ljIGlzIGluY2x1ZGVkIGluTCB0aGlzIGJsb2NrIG9yIG5vdC4AOGZpbmFsaXplX2Jsb2NrAFwEaCBGaW5pc2ggdGhlIGN1cnJlbnQgYmxvY2suAExpbmhlcmVudF9leHRyaW5zaWNzBCBpbmhlcmVudDUH5QQEPQEgR2VuZXJhdGUgaW5oZXJlbnQgZXh0cmluc2ljcy4gVGhlIGluaGVyZW50IGRhdGEgd2lsbCB2YXJ5IGZyb20gY2hhaW4gdG8gY2hhaW4uADxjaGVja19pbmhlcmVudHMIFGJsb2NrCQcQZGF0YTUHRQcEVQEgQ2hlY2sgdGhhdCB0aGUgaW5oZXJlbnRzIGFyZSB2YWxpZC4gVGhlIGluaGVyZW50IGRhdGEgd2lsbCB2YXJ5IGZyb20gY2hhaW4gdG8gY2hhaW4uAARxASBUaGUgYEJsb2NrQnVpbGRlcmAgYXBpIHRyYWl0IHRoYXQgcHJvdmlkZXMgdGhlIHJlcXVpcmVkIGZ1bmN0aW9uYWxpdHkgZm9yIGJ1aWxkaW5nIGEgYmxvY2suGABYVGFnZ2VkVHJhbnNhY3Rpb25RdWV1ZQRQdmFsaWRhdGVfdHJhbnNhY3Rpb24MGHNvdXJjZUkHCHR42QQoYmxvY2tfaGFzaDxNByRoIFZhbGlkYXRlIHRoZSB0cmFuc2FjdGlvbi4AZQEgVGhpcyBtZXRob2QgaXMgaW52b2tlZCBieSB0aGUgdHJhbnNhY3Rpb24gcG9vbCB0byBsZWFybiBkZXRhaWxzIGFib3V0IGdpdmVuIHRyYW5zYWN0aW9uLkUBIFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgbWFrZSBzdXJlIHRvIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHRyYW5zYWN0aW9uTQEgYWdhaW5zdCBjdXJyZW50IHN0YXRlLiBUaGUgZ2l2ZW4gYGJsb2NrX2hhc2hgIGNvcnJlc3BvbmRzIHRvIHRoZSBoYXNoIG9mIHRoZSBibG9ja3wgdGhhdCBpcyB1c2VkIGFzIGN1cnJlbnQgc3RhdGUuAEUBIE5vdGUgdGhhdCB0aGlzIGNhbGwgbWF5IGJlIHBlcmZvcm1lZCBieSB0aGUgcG9vbCBtdWx0aXBsZSB0aW1lcyBhbmQgdHJhbnNhY3Rpb25zpCBtaWdodCBiZSB2ZXJpZmllZCBpbiBhbnkgcG9zc2libGUgb3JkZXIuAARNASBUaGUgYFRhZ2dlZFRyYW5zYWN0aW9uUXVldWVgIGFwaSB0cmFpdCBmb3IgaW50ZXJmZXJpbmcgd2l0aCB0aGUgdHJhbnNhY3Rpb24gcXVldWUuDABET2ZmY2hhaW5Xb3JrZXJBcGkEPG9mZmNoYWluX3dvcmtlcgQYaGVhZGVyXBAEyCBTdGFydHMgdGhlIG9mZi1jaGFpbiB0YXNrIGZvciBnaXZlbiBibG9jayBoZWFkZXIuAARkIFRoZSBvZmZjaGFpbiB3b3JrZXIgYXBpLggALFNlc3Npb25LZXlzCFRnZW5lcmF0ZV9zZXNzaW9uX2tleXMIFG93bmVyGBBzZWVkVQFVBxwVASBHZW5lcmF0ZSBhIHNldCBvZiBzZXNzaW9uIGtleXMgd2l0aCBvcHRpb25hbGx5IHVzaW5nIHRoZSBnaXZlbiBzZWVkLgkBIFRoZSBrZXlzIHNob3VsZCBiZSBzdG9yZWQgd2l0aGluIHRoZSBrZXlzdG9yZSBleHBvc2VkIHZpYSBydW50aW1lPCBleHRlcm5hbGl0aWVzLgCwIFRoZSBzZWVkIG5lZWRzIHRvIGJlIGEgdmFsaWQgYHV0ZjhgIHN0cmluZy4A0CBSZXR1cm5zIHRoZSBjb25jYXRlbmF0ZWQgU0NBTEUgZW5jb2RlZCBwdWJsaWMga2V5cy4ATGRlY29kZV9zZXNzaW9uX2tleXMEHGVuY29kZWQYWQcMmCBEZWNvZGUgdGhlIGdpdmVuIHB1YmxpYyBzZXNzaW9uIGtleXMuANwgUmV0dXJucyB0aGUgbGlzdCBvZiBwdWJsaWMgcmF3IHB1YmxpYyBrZXlzICsga2V5IHR5cGUuAARoIFNlc3Npb24ga2V5cyBydW50aW1lIGFwaS4IADxBY2NvdW50Tm9uY2VBcGkENGFjY291bnRfbm9uY2UEHGFjY291bnQEOATAIEdldCBjdXJyZW50IGFjY291bnQgbm9uY2Ugb2YgZ2l2ZW4gYEFjY291bnRJZGAuAASAIFRoZSBBUEkgdG8gcXVlcnkgYWNjb3VudCBub25jZS4EAFRUcmFuc2FjdGlvblBheW1lbnRBcGkQKHF1ZXJ5X2luZm8IDHV4dNkEDGxlbjhlBwAARHF1ZXJ5X2ZlZV9kZXRhaWxzCAx1eHTZBAxsZW44aQcAAExxdWVyeV93ZWlnaHRfdG9fZmVlBBh3ZWlnaHQpAfwAAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4/AAAABAAZFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGkQPHF1ZXJ5X2NhbGxfaW5mbwgQY2FsbCAMbGVuOGUHBEkBIFF1ZXJ5IGluZm9ybWF0aW9uIG9mIGEgZGlzcGF0Y2ggY2xhc3MsIHdlaWdodCwgYW5kIGZlZSBvZiBhIGdpdmVuIGVuY29kZWQgYENhbGxgLgBYcXVlcnlfY2FsbF9mZWVfZGV0YWlscwgQY2FsbCAMbGVuOGkHBLQgUXVlcnkgZmVlIGRldGFpbHMgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4ATHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodCkB/AQBASBRdWVyeSB0aGUgb3V0cHV0IG9mIHRoZSBjdXJyZW50IGBXZWlnaHRUb0ZlZWAgZ2l2ZW4gc29tZSBpbnB1dC4ATHF1ZXJ5X2xlbmd0aF90b19mZWUEGGxlbmd0aDj8BAEBIFF1ZXJ5IHRoZSBvdXRwdXQgb2YgdGhlIGN1cnJlbnQgYExlbmd0aFRvRmVlYCBnaXZlbiBzb21lIGlucHV0LgAADAA0WGNtUGF5bWVudEFwaRB8cXVlcnlfYWNjZXB0YWJsZV9wYXltZW50X2Fzc2V0cwQseGNtX3ZlcnNpb244dQcUtCBSZXR1cm5zIGEgbGlzdCBvZiBhY2NlcHRhYmxlIHBheW1lbnQgYXNzZXRzLgAwICMgQXJndW1lbnRzAGggKiBgeGNtX3ZlcnNpb25gOiBWZXJzaW9uLgBAcXVlcnlfeGNtX3dlaWdodAQcbWVzc2FnZQ0CgQcUqCBSZXR1cm5zIGEgd2VpZ2h0IG5lZWRlZCB0byBleGVjdXRlIGEgWENNLgAwICMgQXJndW1lbnRzAHQgKiBgbWVzc2FnZWA6IGBWZXJzaW9uZWRYY21gLgBkcXVlcnlfd2VpZ2h0X3RvX2Fzc2V0X2ZlZQgYd2VpZ2h0KQEUYXNzZXSBA4UHGOggQ29udmVydHMgYSB3ZWlnaHQgaW50byBhIGZlZSBmb3IgdGhlIHNwZWNpZmllZCBgQXNzZXRJZGAuADAgIyBBcmd1bWVudHMAiCAqIGB3ZWlnaHRgOiBjb252ZXJ0aWJsZSBgV2VpZ2h0YC58ICogYGFzc2V0YDogYFZlcnNpb25lZEFzc2V0SWRgLgBMcXVlcnlfZGVsaXZlcnlfZmVlcwwsZGVzdGluYXRpb27BARxtZXNzYWdlDQIgYXNzZXRfaWSBA4kHKGAgUXVlcnkgZGVsaXZlcnkgZmVlcyBWMi4AHQEgR2V0IGRlbGl2ZXJ5IGZlZXMgZm9yIHNlbmRpbmcgYSBzcGVjaWZpYyBgbWVzc2FnZWAgdG8gYSBgZGVzdGluYXRpb25gLvQgVGhlc2UgYWx3YXlzIGNvbWUgaW4gYSBzcGVjaWZpYyBhc3NldCwgZGVmaW5lZCBieSB0aGUgY2hhaW4uADAgIyBBcmd1bWVudHOBASAqIGBtZXNzYWdlYDogVGhlIG1lc3NhZ2UgdGhhdCdsbCBiZSBzZW50LCBuZWNlc3NhcnkgYmVjYXVzZSBtb3N0IGRlbGl2ZXJ5IGZlZXMgYXJlIGJhc2VkIG9uIHRoZVwgICBzaXplIG9mIHRoZSBtZXNzYWdlLmEBICogYGRlc3RpbmF0aW9uYDogVGhlIGRlc3RpbmF0aW9uIHRvIHNlbmQgdGhlIG1lc3NhZ2UgdG8uIERpZmZlcmVudCBkZXN0aW5hdGlvbnMgbWF5IHVzZcAgICBkaWZmZXJlbnQgc2VuZGVycyB0aGF0IGNoYXJnZSBkaWZmZXJlbnQgZmVlcy4ALHAgQSB0cmFpdCBvZiBYQ00gcGF5bWVudCBBUEkuAKggQVBJIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgZm9yIG9idGFpbmluZzoAxCAqIHRoZSB3ZWlnaHQgcmVxdWlyZWQgdG8gZXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSwFASAqIGEgbGlzdCBvZiBhY2NlcHRhYmxlIGBBc3NldElkYHMgZm9yIG1lc3NhZ2UgZXhlY3V0aW9uIHBheW1lbnQsAQEgKiB0aGUgY29zdCBvZiB0aGUgd2VpZ2h0IGluIHRoZSBzcGVjaWZpZWQgYWNjZXB0YWJsZSBgQXNzZXRJZGAuoCAqIHRoZSBmZWVzIGZvciBhbiBYQ00gbWVzc2FnZSBkZWxpdmVyeS4A8CBUbyBkZXRlcm1pbmUgdGhlIGV4ZWN1dGlvbiB3ZWlnaHQgb2YgdGhlIGNhbGxzIHJlcXVpcmVkIGZvcnUBIFtgeGNtOjpsYXRlc3Q6Okluc3RydWN0aW9uOjpUcmFuc2FjdGBdIGluc3RydWN0aW9uLCBgVHJhbnNhY3Rpb25QYXltZW50Q2FsbEFwaWAgY2FuIGJlIHVzZWQuCAAkRHJ5UnVuQXBpCDBkcnlfcnVuX2NhbGwMGG9yaWdpbsgQY2FsbCBMcmVzdWx0X3hjbXNfdmVyc2lvbjiNBwREIERyeSBydW4gY2FsbCBWMi4ALGRyeV9ydW5feGNtCDxvcmlnaW5fbG9jYXRpb27BAQx4Y21RA7kHBFAgRHJ5IHJ1biBYQ00gcHJvZ3JhbQAksQEgQVBJIGZvciBkcnktcnVubmluZyBleHRyaW5zaWNzIGFuZCBYQ00gcHJvZ3JhbXMgdG8gZ2V0IHRoZSBwcm9ncmFtcyB0aGF0IG5lZWQgdG8gYmUgcGFzc2VkIHRvIHRoZSBmZWVzIEFQSS4AgQEgQWxsIGNhbGxzIHJldHVybiBhIHZlY3RvciBvZiB0dXBsZXMgKGxvY2F0aW9uLCB4Y20pIHdoZXJlIGVhY2ggInhjbSIgaXMgZXhlY3V0ZWQgaW4gImxvY2F0aW9uIi7kIElmIHRoZXJlJ3MgbG9jYWwgZXhlY3V0aW9uLCB0aGUgbG9jYXRpb24gd2lsbCBiZSAiSGVyZSIuHQEgVGhpcyB2ZWN0b3IgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIGJvdGggZXhlY3V0aW9uIGFuZCBkZWxpdmVyeSBmZWVzLgCZASBDYWxscyBvciBYQ01zIG1pZ2h0IGZhaWwgd2hlbiBleGVjdXRlZCwgdGhpcyBkb2Vzbid0IG1lYW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjYWxscyB3aWxsIGJlIGFuIGBFcnJgLmUBIEluIHRob3NlIGNhc2VzLCB0aGVyZSBtaWdodCBzdGlsbCBiZSBhIHZhbGlkIHJlc3VsdCwgd2l0aCB0aGUgZXhlY3V0aW9uIGVycm9yIGluc2lkZSBpdC5lASBUaGUgb25seSByZWFzb25zIHdoeSB0aGVzZSBjYWxscyBtaWdodCByZXR1cm4gYW4gZXJyb3IgYXJlIGxpc3RlZCBpbiB0aGUgW2BFcnJvcmBdIGVudW0uCABQTG9jYXRpb25Ub0FjY291bnRBcGkEQGNvbnZlcnRfbG9jYXRpb24EIGxvY2F0aW9uwQHBBwSQIENvbnZlcnRzIGBMb2NhdGlvbmAgdG8gYEFjY291bnRJZGAuAAQNASBBUEkgZm9yIHVzZWZ1bCBjb252ZXJzaW9ucyBiZXR3ZWVuIFhDTSBgTG9jYXRpb25gIGFuZCBgQWNjb3VudElkYC4EADxUcnVzdGVkUXVlcnlBcGkISGlzX3RydXN0ZWRfcmVzZXJ2ZQgUYXNzZXTJByBsb2NhdGlvbsEBzQcU8CBSZXR1cm5zIGlmIHRoZSBsb2NhdGlvbiBpcyBhIHRydXN0ZWQgcmVzZXJ2ZSBmb3IgdGhlIGFzc2V0LgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAFRpc190cnVzdGVkX3RlbGVwb3J0ZXIIFGFzc2V0yQcgbG9jYXRpb27BAc0HFOAgUmV0dXJucyBpZiB0aGUgYXNzZXQgY2FuIGJlIHRlbGVwb3J0ZWQgdG8gdGhlIGxvY2F0aW9uLgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAATsIEFQSSBmb3IgcXVlcnlpbmcgdHJ1c3RlZCByZXNlcnZlcyBhbmQgdHJ1c3RlZCB0ZWxlcG9ydGVycy4EAFRBdXRob3JpemVkQWxpYXNlcnNBcGkITGF1dGhvcml6ZWRfYWxpYXNlcnMEGHRhcmdldMEB1QcE9CBSZXR1cm5zIGxvY2F0aW9ucyBhbGxvd2VkIHRvIGFsaWFzIGludG8gYW5kIGFjdCBhcyBgdGFyZ2V0YC4ATGlzX2F1dGhvcml6ZWRfYWxpYXMIGG9yaWdpbsEBGHRhcmdldMEB3QcEHQEgUmV0dXJucyB3aGV0aGVyIGBvcmlnaW5gIGlzIGFsbG93ZWQgdG8gYWxpYXMgaW50byBhbmQgYWN0IGFzIGB0YXJnZXRgLgAEoCBBUEkgZm9yIHF1ZXJ5aW5nIFhDTSBhdXRob3JpemVkIGFsaWFzZXMEAFBDb2xsZWN0Q29sbGF0aW9uSW5mbwRYY29sbGVjdF9jb2xsYXRpb25faW5mbwQYaGVhZGVyXOEHEJwgQ29sbGVjdCBpbmZvcm1hdGlvbiBhYm91dCBhIGNvbGxhdGlvbi4A9CBUaGUgZ2l2ZW4gYGhlYWRlcmAgaXMgdGhlIGhlYWRlciBvZiB0aGUgYnVpbHQgYmxvY2sgZm9yIHRoYXSoIHdlIGFyZSBjb2xsZWN0aW5nIHRoZSBjb2xsYXRpb24gaW5mbyBmb3IuABTYIFJ1bnRpbWUgYXBpIHRvIGNvbGxlY3QgaW5mb3JtYXRpb24gYWJvdXQgYSBjb2xsYXRpb24uAEQgVmVyc2lvbiBoaXN0b3J5OgEBIC0gVmVyc2lvbiAyOiBDaGFuZ2VkIFtgU2VsZjo6Y29sbGVjdF9jb2xsYXRpb25faW5mb2BdIHNpZ25hdHVyZTUBIC0gVmVyc2lvbiAzOiBTaWduYWxzIHRvIHRoZSBub2RlIHRvIHVzZSB2ZXJzaW9uIDEgb2YgW2BQYXJhY2hhaW5CbG9ja0RhdGFgXS4MAFRUcmFuc2FjdGlvblN0b3JhZ2VBcGkIQHJldGVudGlvbl9wZXJpb2QAOAS4IFJldGVudGlvbiBwZXJpb2QgZm9yIGluZGV4ZWQgZGF0YSwgaW4gYmxvY2tzLgBQaW5kZXhlZF90cmFuc2FjdGlvbnMEFGJsb2NrOO0HEKggSW5kZXhlZC10cmFuc2FjdGlvbiBtZXRhZGF0YSBmb3IgYGJsb2NrYC4AEQEgUmV0dXJucyBhbiBlbXB0eSB2ZWN0b3IgaWYgdGhlIGJsb2NrIGhhcyBubyBpbmRleGVkIHRyYW5zYWN0aW9ucyBvcoQgaXMgb3V0c2lkZSB0aGUgcmV0ZW50aW9uIHdpbmRvdy4ABMwgUnVudGltZSBBUEkgdHJhaXQgZm9yIHRyYW5zYWN0aW9uIHN0b3JhZ2Ugc3VwcG9ydC4IADRIb3BSdW50aW1lQXBpEEhtYXhfcHJvbW90aW9uX3NpemUAOBQRASBNYXhpbXVtIGJsb2Igc2l6ZSAoaW4gYnl0ZXMpIHRoZSBydW50aW1lIHdpbGwgYWNjZXB0IGZvciBwcm9tb3Rpb24uABEBIEF1dGhvcml0YXRpdmUg4oCUIHRoZSBub2RlIHJlamVjdHMgb3ZlcnNpemVkIHN1Ym1pc3Npb25zIGF0IHRoZSBSUEMdASBib3VuZGFyeSB1c2luZyB0aGlzIHZhbHVlLCBiZWZvcmUgYW55IHBlci1hY2NvdW50IGF1dGhvcml6YXRpb24gbG9va3VwbCBvciBzaWduYXR1cmUgdmVyaWZpY2F0aW9uLgBMY2FuX2FjY291bnRfcHJvbW90ZQgMd2hvBCBkYXRhX2xlbjhdARgdASBXaGV0aGVyIGB3aG9gIG1heSBzdWJtaXQgYSBIT1AgYmxvYiBvZiBgZGF0YV9sZW5gIGJ5dGVzIGZvciBwcm9tb3Rpb24uABUBIFJldHVybnMgYGZhbHNlYCBmb3IgYW55IHBlci1hY2NvdW50ICJub3QgYWxsb3dlZCIgcmVhc29uIOKAlCB1bmtub3duEQEgYWNjb3VudCwgZXhoYXVzdGVkIHF1b3RhLCBzaXplIG91dHNpZGUgYSBwZXItYWNjb3VudCB0aWVyLCBldGMuIFRoZeggYWJzb2x1dGUgcGVyLXN1Ym1pc3Npb24gc2l6ZSBjYXAgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mDQEgW2BTZWxmOjptYXhfcHJvbW90aW9uX3NpemVgXTsgdGhpcyBob29rIGlzIGZvciBwZXItYWNjb3VudCBwb2xpY3kuAGhjcmVhdGVfcHJvbW90aW9uX2V4dHJpbnNpYxAQZGF0YRgYc2lnbmVyjQEkc2lnbmF0dXJllQFAc3VibWl0X3RpbWVzdGFtcCjZBCwpASBDb25zdHJ1Y3QgYW4gdW5zaWduZWQgcHJvbW90aW9uIGV4dHJpbnNpYyBjYXJyeWluZyB0aGUgdXNlcidzIHN1Ym1pdC10aW1lIQEgKGluIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBVbml4IGVwb2NoKSwgc2lnbmVyLCBzaWduYXR1cmUsIGFuZCB0aW1lc3RhbXDMIHNvIHRoZSBydW50aW1lIHBhbGxldCBjYW4gdmVyaWZ5IGNvbnNlbnQgb24tY2hhaW4uAAkBIGBzdWJtaXRfdGltZXN0YW1wYCBpcyBib3VuZCBpbnRvIHRoZSBzaWduZWQgcGF5bG9hZC4gSW1wbGVtZW50aW5nBQEgcnVudGltZXMgKiptdXN0KiogcmVqZWN0IHByb21vdGlvbnMgd2hvc2UgdGltZXN0YW1wIGlzIG91dHNpZGUgYRUBIHRvbGVyYW5jZSB3aW5kb3cgYXJvdW5kIHRoZSBjdXJyZW50IG9uLWNoYWluIGNsb2NrIOKAlCBvdGhlcndpc2UgdGhlEQEgc2FtZSBgKGRhdGEsIHNpZ25lciwgc2lnbmF0dXJlKWAgdHVwbGUgY2FuIGJlIHJlcGxheWVkIGluZGVmaW5pdGVseRUBIGZyb20gdGhlIGNvbGxhdG9yJ3MgcGVyc2lzdGVkIG1ldGFkYXRhLiBUaGUgd2lkdGggb2YgdGhlIHdpbmRvdyBpcyBh/CBydW50aW1lIHBvbGljeSBkZWNpc2lvbiAoY2xvY2sgc2tldyArIG1heCBhY2NlcHRhYmxlIHByb21vdGlvbswgbGF0ZW5jeSk7IGEgZmV3IGhvdXJzIGlzIGEgcmVhc29uYWJsZSB1cHBlciBib3VuZC4AUGlzX3Byb21vdGVkX29uX2NoYWluBBBoYXNoCF0BEPAgV2hldGhlciB0aGUgY29udGVudCB3aXRoIGBoYXNoYCBpcyBhbHJlYWR5IHN0b3JlZCBvbi1jaGFpbi4AGQEgVXNlZCBieSBIT1AncyBtYWludGVuYW5jZSB0YXNrIHRvIGNvbmZpcm0gdGhhdCBhIHByZXZpb3VzbHkgc3VibWl0dGVkzCBwcm9tb3Rpb24gZXh0cmluc2ljIGFjdHVhbGx5IG1hZGUgaXQgaW50byBhIGJsb2NrLgAQVCBSdW50aW1lIEFQSSBmb3IgSE9QLgANASBSdW50aW1lcyB0aGF0IHN1cHBvcnQgSE9QIGltcGxlbWVudCB0aGlzIEFQSSBzbyB0aGUgbm9kZSBjYW4gY2hlY2shASBhdXRob3JpemF0aW9uIGFuZCBwcm9tb3RlIG5lYXItZXhwaXJ5IHBvb2wgZW50cmllcyB0byBvbi1jaGFpbiBzdG9yYWdlLgQAdEJ1bGxldGluVHJhbnNhY3Rpb25TdG9yYWdlQXBpDFRhY2NvdW50X2F1dGhvcml6YXRpb24EHGFjY291bnQE+QcICQEgQXV0aG9yaXphdGlvbiBzdW1tYXJ5IGZvciBgYWNjb3VudGAsIG9yIGBOb25lYCBpZiB0aGUgYWNjb3VudCBoYXNwIG5vIHVuZXhwaXJlZCBhdXRob3JpemF0aW9uLgAkY2FuX3N0b3JlCBxhY2NvdW50BCBkYXRhX2xlbjhdAQgdASBSZXR1cm5zIGB0cnVlYCBpZmYgYSBgc3RvcmUoZGF0YSlgIGNhbGwgd2hlcmUgYGRhdGEubGVuKCkgPT0gZGF0YV9sZW5g7CB3b3VsZCBjdXJyZW50bHkgcGFzcyB0cmFuc2FjdGlvbiB2YWxpZGF0aW9uIGZvciBgYWNjb3VudGAuACRjYW5fcmVuZXcIHGFjY291bnQEFGVudHJ5pQFdAQgpASBSZXR1cm5zIGB0cnVlYCBpZmYgYSBgcmVuZXcoZW50cnkpYCBjYWxsIHdvdWxkIGN1cnJlbnRseSBwYXNzIHRyYW5zYWN0aW9uaCB2YWxpZGF0aW9uIGZvciBgYWNjb3VudGAuAAT8IFJ1bnRpbWUgQVBJIGZvciB0aGUgQnVsbGV0aW4gQ2hhaW4gdHJhbnNhY3Rpb24tc3RvcmFnZSBwYWxsZXQuBAA4R2VuZXNpc0J1aWxkZXIMLGJ1aWxkX3N0YXRlBBBqc29uGAEIKGUBIEJ1aWxkIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZnJvbSBhIEpTT04gYmxvYiBub3QgdXNpbmcgYW55IGRlZmF1bHRzIGFuZCBzdG9yZSBpdCBpbiB0aGUkIHN0b3JhZ2UuACkBIEluIHRoZSBjYXNlIG9mIGEgRlJBTUUtYmFzZWQgcnVudGltZSwgdGhpcyBmdW5jdGlvbiBkZXNlcmlhbGl6ZXMgdGhlIGZ1bGxVASBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gdGhlIGdpdmVuIEpTT04gYmxvYiBhbmQgcHV0cyBpdCBpbnRvIHRoZSBzdG9yYWdlLiBJZiB0aGVVASBwcm92aWRlZCBKU09OIGJsb2IgaXMgaW5jb3JyZWN0IG9yIGluY29tcGxldGUgb3IgdGhlIGRlc2VyaWFsaXphdGlvbiBmYWlscywgYW4gZXJyb3I0IGlzIHJldHVybmVkLgBdASBQbGVhc2Ugbm90ZSB0aGF0IHByb3ZpZGVkIEpTT04gYmxvYiBtdXN0IGNvbnRhaW4gYWxsIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZmllbGRzLCBub1wgZGVmYXVsdHMgd2lsbCBiZSB1c2VkLgAoZ2V0X3ByZXNldAQIaWQFCFUBOGEBIFJldHVybnMgYSBKU09OIGJsb2IgcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgaWRlbnRpZmllZCBieRggYGlkYC4AVQEgSWYgYGlkYCBpcyBgTm9uZWAgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gSlNPTiBibG9iIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkZWZhdWx0SQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBzdHJ1Y3Qgb2YgdGhlIHJ1bnRpbWUuIEltcGxlbWVudGF0aW9uIG11c3QgcHJvdmlkZSBkZWZhdWx0YCBgUnVudGltZUdlbmVzaXNDb25maWdgLgAhASBPdGhlcndpc2UgZnVuY3Rpb24gcmV0dXJucyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluLCBuYW1lZFEBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0IGlkZW50aWZpZWQgYnkgYGlkYCwgb3IgYE5vbmVgIGlmIHN1Y2ggcHJlc2V0IGRvZXMgbm90YQEgZXhpc3QuIFJldHVybmVkIGBWZWM8dTg+YCBjb250YWlucyBieXRlcyBvZiBKU09OIGJsb2IgKHBhdGNoKSB3aGljaCBjb21wcmlzZXMgYSBsaXN0IG9mTQEgKHBvdGVudGlhbGx5IG5lc3RlZCkga2V5LXZhbHVlIHBhaXJzIHRoYXQgYXJlIGludGVuZGVkIGZvciBjdXN0b21pemluZyB0aGUgZGVmYXVsdGUBIHJ1bnRpbWUgZ2VuZXNpcyBjb25maWcuIFRoZSBwYXRjaCBzaGFsbCBiZSBtZXJnZWQgKHJmYzczODYpIHdpdGggdGhlIEpTT04gcmVwcmVzZW50YXRpb25hASBvZiB0aGUgZGVmYXVsdCBgUnVudGltZUdlbmVzaXNDb25maWdgIHRvIGNyZWF0ZSBhIGNvbXByZWhlbnNpdmUgZ2VuZXNpcyBjb25maWcgdGhhdCBjYW6EIGJlIHVzZWQgaW4gYGJ1aWxkX3N0YXRlYCBtZXRob2QuADBwcmVzZXRfbmFtZXMACQgQUQEgUmV0dXJucyBhIGxpc3Qgb2YgaWRlbnRpZmllcnMgZm9yIGF2YWlsYWJsZSBidWlsdGluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0cy4AYQEgVGhlIHByZXNldHMgZnJvbSB0aGUgbGlzdCBjYW4gYmUgcXVlcmllZCB3aXRoIFtgR2VuZXNpc0J1aWxkZXI6OmdldF9wcmVzZXRgXSBtZXRob2QuIElmAQEgbm8gbmFtZWQgcHJlc2V0cyBhcmUgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWUgdGhlIGxpc3QgaXMgZW1wdHkuAATwIEFQSSB0byBpbnRlcmFjdCB3aXRoIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZm9yIHRoZSBydW50aW1lBABAR2V0UGFyYWNoYWluSW5mbwQwcGFyYWNoYWluX2lkAJwEsCBSZXRyaWV2ZSB0aGUgcGFyYWNoYWluIGlkIHVzZWQgZm9yIHJ1bnRpbWUuAAQNASBSdW50aW1lIGFwaSB1c2VkIHRvIGFjY2VzcyBnZW5lcmFsIGluZm8gYWJvdXQgYSBwYXJhY2hhaW4gcnVudGltZS4EACDtAw0IAA=="; +var bulletin_metadata_default = binMeta; +export { + bulletin_metadata_default as default +}; diff --git a/web/.papi/descriptors/dist/bulletin_metadata-6D4OUQ3Y.mjs b/web/.papi/descriptors/dist/bulletin_metadata-6D4OUQ3Y.mjs deleted file mode 100644 index e3562987..00000000 --- a/web/.papi/descriptors/dist/bulletin_metadata-6D4OUQ3Y.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// .papi/descriptors/src/bulletin_metadata.ts -var binMeta = "bWV0YRBlBwAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCGBidWxsZXRpbl93ZXN0ZW5kX3J1bnRpbWUsUnVudGltZUNhbGwAATgYU3lzdGVtBAAkAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN5c3RlbSwgUnVudGltZT4AAAA8UGFyYWNoYWluU3lzdGVtBABAAdEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFjaGFpblN5c3RlbSwgUnVudGltZT4AAQAkVGltZXN0YW1wBACwAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFRpbWVzdGFtcCwgUnVudGltZT4AAwA0UGFyYWNoYWluSW5mbwQAuAHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhY2hhaW5JbmZvLCBSdW50aW1lPgAEABxVdGlsaXR5BAC8AbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFV0aWxpdHksIFJ1bnRpbWU+AAYAIEJhbGFuY2VzBAAtAQG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxCYWxhbmNlcywgUnVudGltZT4ACgBIVHJhbnNhY3Rpb25TdG9yYWdlBAA9AQHdAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUcmFuc2FjdGlvblN0b3JhZ2UsIFJ1bnRpbWU+ACgARENvbGxhdG9yU2VsZWN0aW9uBABNAQHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDb2xsYXRvclNlbGVjdGlvbiwgUnVudGltZT4AFQAcU2Vzc2lvbgQAUQEBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2Vzc2lvbiwgUnVudGltZT4AFgAkWGNtcFF1ZXVlBABdAQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxYY21wUXVldWUsIFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBABhAQHBAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQb2xrYWRvdFhjbSwgUnVudGltZT4AHwAoQ3VtdWx1c1hjbQQAMQMBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q3VtdWx1c1hjbSwgUnVudGltZT4AIAAwTWVzc2FnZVF1ZXVlBAA1AwHFAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZXNzYWdlUXVldWUsIFJ1bnRpbWU+ACIAEFN1ZG8EAD0DAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN1ZG8sIFJ1bnRpbWU+AGQAACQMMGZyYW1lX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABLBhyZW1hcmsEARhyZW1hcmsYARxWZWM8dTg+AAAMaE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsuAIhDYW4gYmUgZXhlY3V0ZWQgYnkgZXZlcnkgYG9yaWdpbmAuOHNldF9oZWFwX3BhZ2VzBAEUcGFnZXMoAQx1NjQAAQT4U2V0IHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIFdlYkFzc2VtYmx5IGVudmlyb25tZW50J3MgaGVhcC4gc2V0X2NvZGUEARBjb2RlGAEcVmVjPHU4PgACBGRTZXQgdGhlIG5ldyBydW50aW1lIGNvZGUuXHNldF9jb2RlX3dpdGhvdXRfY2hlY2tzBAEQY29kZRgBHFZlYzx1OD4AAxAZAVNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZSB3aXRob3V0IGRvaW5nIGFueSBjaGVja3Mgb2YgdGhlIGdpdmVuIGBjb2RlYC4AUQFOb3RlIHRoYXQgcnVudGltZSB1cGdyYWRlcyB3aWxsIG5vdCBydW4gaWYgdGhpcyBpcyBjYWxsZWQgd2l0aCBhIG5vdC1pbmNyZWFzaW5nIHNwZWMgdmVyc2lvbiEsc2V0X3N0b3JhZ2UEARRpdGVtcywBNFZlYzxLZXlWYWx1ZT4ABARoU2V0IHNvbWUgaXRlbXMgb2Ygc3RvcmFnZS4wa2lsbF9zdG9yYWdlBAEQa2V5czQBIFZlYzxLZXk+AAUEdEtpbGwgc29tZSBpdGVtcyBmcm9tIHN0b3JhZ2UuLGtpbGxfcHJlZml4CAEYcHJlZml4GAEMS2V5AAEcc3Via2V5czgBDHUzMgAGEBEBS2lsbCBhbGwgc3RvcmFnZSBpdGVtcyB3aXRoIGEga2V5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeC4AOQEqKk5PVEU6KiogV2UgcmVseSBvbiB0aGUgUm9vdCBvcmlnaW4gdG8gcHJvdmlkZSB1cyB0aGUgbnVtYmVyIG9mIHN1YmtleXMgdW5kZXI9AXRoZSBwcmVmaXggd2UgYXJlIHJlbW92aW5nIHRvIGFjY3VyYXRlbHkgY2FsY3VsYXRlIHRoZSB3ZWlnaHQgb2YgdGhpcyBmdW5jdGlvbi5EcmVtYXJrX3dpdGhfZXZlbnQEARhyZW1hcmsYARxWZWM8dTg+AAcEpE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsgYW5kIGVtaXQgZXZlbnQuRGF1dGhvcml6ZV91cGdyYWRlBAEkY29kZV9oYXNoPAEcVDo6SGFzaAAJEGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi6AYXV0aG9yaXplX3VwZ3JhZGVfd2l0aG91dF9jaGVja3MEASRjb2RlX2hhc2g8ARxUOjpIYXNoAAogYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgBdAVdBUk5JTkc6IFRoaXMgYXV0aG9yaXplcyBhbiB1cGdyYWRlIHRoYXQgd2lsbCB0YWtlIHBsYWNlIHdpdGhvdXQgYW55IHNhZmV0eSBjaGVja3MsIGZvclkBZXhhbXBsZSB0aGF0IHRoZSBzcGVjIG5hbWUgcmVtYWlucyB0aGUgc2FtZSBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaW5jcmVhc2VzLiBOb3TwcmVjb21tZW5kZWQgZm9yIG5vcm1hbCB1c2UuIFVzZSBgYXV0aG9yaXplX3VwZ3JhZGVgIGluc3RlYWQuAHxUaGlzIGNhbGwgcmVxdWlyZXMgUm9vdCBvcmlnaW4uYGFwcGx5X2F1dGhvcml6ZWRfdXBncmFkZQQBEGNvZGUYARxWZWM8dTg+AAskVQFQcm92aWRlIHRoZSBwcmVpbWFnZSAocnVudGltZSBiaW5hcnkpIGBjb2RlYCBmb3IgYW4gdXBncmFkZSB0aGF0IGhhcyBiZWVuIGF1dGhvcml6ZWQuAEkBSWYgdGhlIGF1dGhvcml6YXRpb24gcmVxdWlyZWQgYSB2ZXJzaW9uIGNoZWNrLCB0aGlzIGNhbGwgd2lsbCBlbnN1cmUgdGhlIHNwZWMgbmFtZehyZW1haW5zIHVuY2hhbmdlZCBhbmQgdGhhdCB0aGUgc3BlYyB2ZXJzaW9uIGhhcyBpbmNyZWFzZWQuAFkBRGVwZW5kaW5nIG9uIHRoZSBydW50aW1lJ3MgYE9uU2V0Q29kZWAgY29uZmlndXJhdGlvbiwgdGhpcyBmdW5jdGlvbiBtYXkgZGlyZWN0bHkgYXBwbHkRAXRoZSBuZXcgYGNvZGVgIGluIHRoZSBzYW1lIGJsb2NrIG9yIGF0dGVtcHQgdG8gc2NoZWR1bGUgdGhlIHVwZ3JhZGUuAGBBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKAAABQYALAAAAjAAMAAABAgYGAA0AAACGAA4AAAFBQA8CDxwcmltaXRpdmVfdHlwZXMQSDI1NgAABAAIASBbdTg7IDMyXQAAQAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABCExzZXRfdmFsaWRhdGlvbl9kYXRhCAEQZGF0YUQBaEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAFUaW5ib3VuZF9tZXNzYWdlc19kYXRhfAFMSW5ib3VuZE1lc3NhZ2VzRGF0YQAAJIBTZXQgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBkYXRhLgBBAVRoaXMgc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIHBlciBibG9jay4gSXQgd2lsbCBwYW5pYyBhdCB0aGUgZmluYWxpemF0aW9uiHBoYXNlIGlmIHRoZSBjYWxsIHdhcyBub3QgaW52b2tlZC4A0FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBJbmhlcmVudGAAIQFBcyBhIHNpZGUgZWZmZWN0LCB0aGlzIGZ1bmN0aW9uIHVwZ3JhZGVzIHRoZSBjdXJyZW50IHZhbGlkYXRpb24gZnVuY3Rpb26EaWYgdGhlIGFwcHJvcHJpYXRlIHRpbWUgaGFzIGNvbWUuYHN1ZG9fc2VuZF91cHdhcmRfbWVzc2FnZQQBHG1lc3NhZ2UYATRVcHdhcmRNZXNzYWdlAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50aEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAAQATx2YWxpZGF0aW9uX2RhdGFIAVxQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YQABRHJlbGF5X2NoYWluX3N0YXRlUAFUc3BfdHJpZTo6U3RvcmFnZVByb29mAAFgcmVsYXlfcGFyZW50X2Rlc2NlbmRhbnRzWAFAVmVjPFJlbGF5SGVhZGVyPgABQGNvbGxhdG9yX3BlZXJfaWR0AVhPcHRpb248QXBwcm92ZWRQZWVySWQ+AABIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5XFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhCARIATwETgE4ABABLHBhcmVudF9oZWFkTAEgSGVhZERhdGEAAUxyZWxheV9wYXJlbnRfbnVtYmVyOAEETgABZHJlbGF5X3BhcmVudF9zdG9yYWdlX3Jvb3Q8AQRIAAEwbWF4X3Bvdl9zaXplOAEMdTMyAABMDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzIEhlYWREYXRhAAAEABgBHFZlYzx1OD4AAFAMHHNwX3RyaWU0c3RvcmFnZV9wcm9vZjBTdG9yYWdlUHJvb2YAAAQBKHRyaWVfbm9kZXNUAURCVHJlZVNldDxWZWM8dTg+PgAAVAQgQlRyZWVTZXQEBFQBGAAEADQAAABYAAACXABcEChzcF9ydW50aW1lHGdlbmVyaWMYaGVhZGVyGEhlYWRlcggYTnVtYmVyATgQSGFzaAAAFAEscGFyZW50X2hhc2g8ATBIYXNoOjpPdXRwdXQAARhudW1iZXJgARhOdW1iZXIAAShzdGF0ZV9yb290PAEwSGFzaDo6T3V0cHV0AAE8ZXh0cmluc2ljc19yb290PAEwSGFzaDo6T3V0cHV0AAEYZGlnZXN0ZAEYRGlnZXN0AABgAAAGOABkEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0GERpZ2VzdAAABAEQbG9nc2gBPFZlYzxEaWdlc3RJdGVtPgAAaAAAAmwAbBAoc3BfcnVudGltZRxnZW5lcmljGGRpZ2VzdChEaWdlc3RJdGVtAAEUKFByZVJ1bnRpbWUIAHABRENvbnNlbnN1c0VuZ2luZUlkAAAYARxWZWM8dTg+AAYAJENvbnNlbnN1cwgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABAAQU2VhbAgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABQAUT3RoZXIEABgBHFZlYzx1OD4AAABkUnVudGltZUVudmlyb25tZW50VXBkYXRlZAAIAABwAAADBAAAAAwAdAQYT3B0aW9uBARUAXgBCBBOb25lAAAAEFNvbWUEAHgAAAEAAHgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAB8DHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudExJbmJvdW5kTWVzc2FnZXNEYXRhAAAIAURkb3dud2FyZF9tZXNzYWdlc4ABfEFicmlkZ2VkSW5ib3VuZERvd253YXJkTWVzc2FnZXMAAUxob3Jpem9udGFsX21lc3NhZ2VzlAFsQWJyaWRnZWRJbmJvdW5kSHJtcE1lc3NhZ2VzAACADHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudIRBYnJpZGdlZEluYm91bmRNZXNzYWdlc0NvbGxlY3Rpb24EHE1lc3NhZ2UBhAAIATRmdWxsX21lc3NhZ2VziAEwVmVjPE1lc3NhZ2U+AAE8aGFzaGVkX21lc3NhZ2VzjAF8VmVjPE1lc3NhZ2U6OkNvbXByZXNzZWRNZXNzYWdlPgAAhAhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzWEluYm91bmREb3dud2FyZE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEMbXNnGAE8RG93bndhcmRNZXNzYWdlAACIAAAChACMAAACkACQCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50NEhhc2hlZE1lc3NhZ2UAAAgBHHNlbnRfYXQ4AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAASBtc2dfaGFzaDwBNHNwX2NvcmU6OkgyNTYAAJQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGYAAgBNGZ1bGxfbWVzc2FnZXOkATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOoAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACYAAAECJygAJwMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMISWQAAAQAOAEMdTMyAACgCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNISW5ib3VuZEhybXBNZXNzYWdlBCxCbG9ja051bWJlcgE4AAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AACkAAACmACoAAACrACsAAAECJyQALAMQHBhbGxldF90aW1lc3RhbXAYcGFsbGV0EENhbGwEBFQAAQQMc2V0BAEMbm93tAEkVDo6TW9tZW50AABMVFNldCB0aGUgY3VycmVudCB0aW1lLgBVAVRoaXMgY2FsbCBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb27UcGhhc2UsIGlmIHRoaXMgY2FsbCBoYXNuJ3QgYmVlbiBpbnZva2VkIGJ5IHRoYXQgdGltZS4AQQFUaGUgdGltZXN0YW1wIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gdGhlIHByZXZpb3VzIG9uZSBieSB0aGUgYW1vdW50IHNwZWNpZmllZCBieWhbYENvbmZpZzo6TWluaW11bVBlcmlvZGBdLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBRAVRoaXMgZGlzcGF0Y2ggY2xhc3MgaXMgX01hbmRhdG9yeV8gdG8gZW5zdXJlIGl0IGdldHMgZXhlY3V0ZWQgaW4gdGhlIGJsb2NrLiBCZSBhd2FyZVEBdGhhdCBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBvZiB0aGlzIGNhbGwgY291bGQgcmVzdWx0IGV4aGF1c3RpbmcgdGhlIHJlc291cmNlcyBpbiBhhGJsb2NrIHRvIGV4ZWN1dGUgYW55IG90aGVyIGNhbGxzLgA0IyMgQ29tcGxleGl0eTEBLSBgTygxKWAgKE5vdGUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgb2YgYE9uVGltZXN0YW1wU2V0YCBtdXN0IGFsc28gYmUgYE8oMSlgKVUBLSAxIHN0b3JhZ2UgcmVhZCBhbmQgMSBzdG9yYWdlIG11dGF0aW9uIChjb2RlYyBgTygxKWAgYmVjYXVzZSBvZiBgRGlkVXBkYXRlOjp0YWtlYCBpbkAgIGBvbl9maW5hbGl6ZWAp1C0gMSBldmVudCBoYW5kbGVyIGBvbl90aW1lc3RhbXBfc2V0YC4gTXVzdCBiZSBgTygxKWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrQAAAYoALgMWHN0YWdpbmdfcGFyYWNoYWluX2luZm8YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvAw4cGFsbGV0X3V0aWxpdHkYcGFsbGV0EENhbGwEBFQAASAUYmF0Y2gEARRjYWxsc8ABfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAEh8U2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzLgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBVAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaGVkIHdpdGhvdXQgY2hlY2tpbmcgb3JpZ2luIGZpbHRlci4gKFRoaXPsaW5jbHVkZXMgYnlwYXNzaW5nIGBmcmFtZV9zeXN0ZW06OkNvbmZpZzo6QmFzZUNhbGxGaWx0ZXJgKS4ANCMjIENvbXBsZXhpdHnQLSBPKEMpIHdoZXJlIEMgaXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBiZSBiYXRjaGVkLgBVAVRoaXMgd2lsbCByZXR1cm4gYE9rYCBpbiBhbGwgY2lyY3Vtc3RhbmNlcy4gVG8gZGV0ZXJtaW5lIHRoZSBzdWNjZXNzIG9mIHRoZSBiYXRjaCwgYW4xAWV2ZW50IGlzIGRlcG9zaXRlZC4gSWYgYSBjYWxsIGZhaWxlZCBhbmQgdGhlIGJhdGNoIHdhcyBpbnRlcnJ1cHRlZCwgdGhlbiB0aGVVAWBCYXRjaEludGVycnVwdGVkYCBldmVudCBpcyBkZXBvc2l0ZWQsIGFsb25nIHdpdGggdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIGNhbGxzIG1hZGVNAWFuZCB0aGUgZXJyb3Igb2YgdGhlIGZhaWxlZCBjYWxsLiBJZiBhbGwgd2VyZSBzdWNjZXNzZnVsLCB0aGVuIHRoZSBgQmF0Y2hDb21wbGV0ZWRgTGV2ZW50IGlzIGRlcG9zaXRlZC40YXNfZGVyaXZhdGl2ZQgBFGluZGV4xAEMdTE2AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AATTcU2VuZCBhIGNhbGwgdGhyb3VnaCBhbiBpbmRleGVkIHBzZXVkb255bSBvZiB0aGUgc2VuZGVyLgBVAUZpbHRlciBmcm9tIG9yaWdpbiBhcmUgcGFzc2VkIGFsb25nLiBUaGUgY2FsbCB3aWxsIGJlIGRpc3BhdGNoZWQgd2l0aCBhbiBvcmlnaW4gd2hpY2i8dXNlIHRoZSBzYW1lIGZpbHRlciBhcyB0aGUgb3JpZ2luIG9mIHRoaXMgY2FsbC4ARQFOT1RFOiBJZiB5b3UgbmVlZCB0byBlbnN1cmUgdGhhdCBhbnkgYWNjb3VudC1iYXNlZCBmaWx0ZXJpbmcgaXMgbm90IGhvbm9yZWQgKGkuZS5hAWJlY2F1c2UgeW91IGV4cGVjdCBgcHJveHlgIHRvIGhhdmUgYmVlbiB1c2VkIHByaW9yIGluIHRoZSBjYWxsIHN0YWNrIGFuZCB5b3UgZG8gbm90IHdhbnRRAXRoZSBjYWxsIHJlc3RyaWN0aW9ucyB0byBhcHBseSB0byBhbnkgc3ViLWFjY291bnRzKSwgdGhlbiB1c2UgYGFzX211bHRpX3RocmVzaG9sZF8xYHxpbiB0aGUgTXVsdGlzaWcgcGFsbGV0IGluc3RlYWQuAPROT1RFOiBQcmlvciB0byB2ZXJzaW9uICoxMiwgdGhpcyB3YXMgY2FsbGVkIGBhc19saW1pdGVkX3N1YmAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4kYmF0Y2hfYWxsBAEUY2FsbHPAAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAI07FNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscyBhbmQgYXRvbWljYWxseSBleGVjdXRlIHRoZW0uIQFUaGUgd2hvbGUgdHJhbnNhY3Rpb24gd2lsbCByb2xsYmFjayBhbmQgZmFpbCBpZiBhbnkgb2YgdGhlIGNhbGxzIGZhaWxlZC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sZGlzcGF0Y2hfYXMIASRhc19vcmlnaW7IAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgADGMhEaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgcHJvdmlkZWQgb3JpZ2luLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuLGZvcmNlX2JhdGNoBAEUY2FsbHPAAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAQ0fFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy7UVW5saWtlIGBiYXRjaGAsIGl0IGFsbG93cyBlcnJvcnMgYW5kIHdvbid0IGludGVycnVwdC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4ATQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2ggd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuLHdpdGhfd2VpZ2h0CAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AARh3ZWlnaHQpAQEYV2VpZ2h0AAUYxERpc3BhdGNoIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgc3BlY2lmaWVkIHdlaWdodC4ALQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGW4Um9vdCBvcmlnaW4gdG8gc3BlY2lmeSB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLhxpZl9lbHNlCAEQbWFpbiABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AASBmYWxsYmFjayABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABlwVAURpc3BhdGNoIGEgZmFsbGJhY2sgY2FsbCBpbiB0aGUgZXZlbnQgdGhlIG1haW4gY2FsbCBmYWlscyB0byBleGVjdXRlLrBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgDkVGhpcyBmdW5jdGlvbiBmaXJzdCBhdHRlbXB0cyB0byBkaXNwYXRjaCB0aGUgYG1haW5gIGNhbGwu1ElmIHRoZSBgbWFpbmAgY2FsbCBmYWlscywgdGhlIGBmYWxsYmFja2AgaXMgYXR0ZW10ZWQuFQFpZiB0aGUgZmFsbGJhY2sgaXMgc3VjY2Vzc2Z1bGx5IGRpc3BhdGNoZWQsIHRoZSB3ZWlnaHRzIG9mIGJvdGggY2FsbHMlAWFyZSBhY2N1bXVsYXRlZCBhbmQgYW4gZXZlbnQgY29udGFpbmluZyB0aGUgbWFpbiBjYWxsIGVycm9yIGlzIGRlcG9zaXRlZC4A3EluIHRoZSBldmVudCBvZiBhIGZhbGxiYWNrIGZhaWx1cmUgdGhlIHdob2xlIGNhbGwgZmFpbHNod2l0aCB0aGUgd2VpZ2h0cyByZXR1cm5lZC4AQQEtIGBtYWluYDogVGhlIG1haW4gY2FsbCB0byBiZSBkaXNwYXRjaGVkLiBUaGlzIGlzIHRoZSBwcmltYXJ5IGFjdGlvbiB0byBleGVjdXRlLj0BLSBgZmFsbGJhY2tgOiBUaGUgZmFsbGJhY2sgY2FsbCB0byBiZSBkaXNwYXRjaGVkIGluIGNhc2UgdGhlIGBtYWluYCBjYWxsIGZhaWxzLgBEIyMgRGlzcGF0Y2ggTG9naWNBAS0gSWYgdGhlIG9yaWdpbiBpcyBgcm9vdGAsIGJvdGggdGhlIG1haW4gYW5kIGZhbGxiYWNrIGNhbGxzIGFyZSBleGVjdXRlZCB3aXRob3V0eCAgYXBwbHlpbmcgYW55IG9yaWdpbiBmaWx0ZXJzLkkBLSBJZiB0aGUgb3JpZ2luIGlzIG5vdCBgcm9vdGAsIHRoZSBvcmlnaW4gZmlsdGVyIGlzIGFwcGxpZWQgdG8gYm90aCB0aGUgYG1haW5gIGFuZEwgIGBmYWxsYmFja2AgY2FsbHMuACwjIyBVc2UgQ2FzZVkBLSBTb21lIHVzZSBjYXNlcyBtaWdodCBpbnZvbHZlIHN1Ym1pdHRpbmcgYSBgYmF0Y2hgIHR5cGUgY2FsbCBpbiBlaXRoZXIgbWFpbiwgZmFsbGJhY2soICBvciBib3RoLlBkaXNwYXRjaF9hc19mYWxsaWJsZQgBJGFzX29yaWdpbsgBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAcUyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAFEBQWxtb3N0IHRoZSBzYW1lIGFzIFtgUGFsbGV0OjpkaXNwYXRjaF9hc2BdIGJ1dCBmb3J3YXJkcyBhbnkgZXJyb3Igb2YgdGhlIGlubmVyIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsAAAAIgAMQAAAUEAMgIYGJ1bGxldGluX3dlc3RlbmRfcnVudGltZTBPcmlnaW5DYWxsZXIAARAYc3lzdGVtBADMAXRmcmFtZV9zeXN0ZW06Ok9yaWdpbjxSdW50aW1lPgAAAEhUcmFuc2FjdGlvblN0b3JhZ2UEANABrHBhbGxldF90cmFuc2FjdGlvbl9zdG9yYWdlOjpPcmlnaW48UnVudGltZT4AKAAsUG9sa2Fkb3RYY20EANwBSHBhbGxldF94Y206Ok9yaWdpbgAfAChDdW11bHVzWGNtBAAlAQFoY3VtdWx1c19wYWxsZXRfeGNtOjpPcmlnaW4AIAAAzAw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaCRSYXdPcmlnaW4EJEFjY291bnRJZAEEARAQUm9vdAAAABhTaWduZWQEAAQBJEFjY291bnRJZAABABBOb25lAAIAKEF1dGhvcml6ZWQAAwAA0AxocGFsbGV0X3RyYW5zYWN0aW9uX3N0b3JhZ2UYcGFsbGV0GE9yaWdpbgQEVAHUAQQoQXV0aG9yaXplZAgBDHdobwQBMFQ6OkFjY291bnRJZAABFHNjb3Bl2AFgQXV0aG9yaXphdGlvblNjb3BlRm9yPFQ+AAAAANQIYGJ1bGxldGluX3dlc3RlbmRfcnVudGltZRxSdW50aW1lAAAAANgIaHBhbGxldF90cmFuc2FjdGlvbl9zdG9yYWdlSEF1dGhvcml6YXRpb25TY29wZQQkQWNjb3VudElkAQQBCBxBY2NvdW50BAAEASRBY2NvdW50SWQAAAAgUHJlaW1hZ2UEAAgBLENvbnRlbnRIYXNoAAEAANwMKHBhbGxldF94Y20YcGFsbGV0GE9yaWdpbgABCAxYY20EAOABIExvY2F0aW9uAAAAIFJlc3BvbnNlBADgASBMb2NhdGlvbgABAADgECxzdGFnaW5nX3hjbQh2NSBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3LkASRKdW5jdGlvbnMAAOQQLHN0YWdpbmdfeGNtCHY1JGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQA6AFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBAAJAQFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBAANAQFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BAARAQFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BAAVAQFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BAAZAQFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BAAdAQFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BAAhAQFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAAOgAAAMBAAAA7ADsECxzdGFnaW5nX3hjbQh2NSBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmvwAURPcHRpb248TmV0d29ya0lkPgABCGlkCAEgW3U4OyAzMl0AAQA4QWNjb3VudEluZGV4NjQIARxuZXR3b3Jr8AFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3Jr8AFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BAD4ARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWQBAQEYQm9keUlkAAEQcGFydAUBASBCb2R5UGFydAAIADxHbG9iYWxDb25zZW5zdXMEAPQBJE5ldHdvcmtJZAAJAADwBBhPcHRpb24EBFQB9AEIEE5vbmUAAAAQU29tZQQA9AAAAQAA9BAsc3RhZ2luZ194Y20IdjUganVuY3Rpb24kTmV0d29ya0lkAAEgJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADACBFdGhlcmV1bQQBIGNoYWluX2lktAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAA+AAABvwA/AAABQcAAQEQDHhjbQh2MyBqdW5jdGlvbhhCb2R5SWQAASgQVW5pdAAAABxNb25pa2VyBABwARxbdTg7IDRdAAEAFEluZGV4BABgAQx1MzIAAgAkRXhlY3V0aXZlAAMAJFRlY2huaWNhbAAEACxMZWdpc2xhdGl2ZQAFACBKdWRpY2lhbAAGABxEZWZlbnNlAAcAOEFkbWluaXN0cmF0aW9uAAgAIFRyZWFzdXJ5AAkAAAUBEAx4Y20IdjMganVuY3Rpb24gQm9keVBhcnQAARQUVm9pY2UAAAAcTWVtYmVycwQBFGNvdW50YAEMdTMyAAEAIEZyYWN0aW9uCAEMbm9tYAEMdTMyAAEUZGVub21gAQx1MzIAAgBEQXRMZWFzdFByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgADAEhNb3JlVGhhblByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgAEAAAJAQAAAwIAAADsAA0BAAADAwAAAOwAEQEAAAMEAAAA7AAVAQAAAwUAAADsABkBAAADBgAAAOwAHQEAAAMHAAAA7AAhAQAAAwgAAADsACUBDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0GE9yaWdpbgABCBRSZWxheQAAAEBTaWJsaW5nUGFyYWNoYWluBACcARhQYXJhSWQAAQAAKQEMKHNwX3dlaWdodHMkd2VpZ2h0X3YyGFdlaWdodAAACAEgcmVmX3RpbWW0AQx1NjQAAShwcm9vZl9zaXpltAEMdTY0AAAtAQw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBBDYWxsCARUAARJAAEkUHRyYW5zZmVyX2FsbG93X2RlYXRoCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWX4AShUOjpCYWxhbmNlAAAc1FRyYW5zZmVyIHNvbWUgbGlxdWlkIGZyZWUgYmFsYW5jZSB0byBhbm90aGVyIGFjY291bnQuADUBYHRyYW5zZmVyX2FsbG93X2RlYXRoYCB3aWxsIHNldCB0aGUgYEZyZWVCYWxhbmNlYCBvZiB0aGUgc2VuZGVyIGFuZCByZWNlaXZlci4RAUlmIHRoZSBzZW5kZXIncyBhY2NvdW50IGlzIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFzIGEgcmVzdWx0sG9mIHRoZSB0cmFuc2ZlciwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIHRyYW5zYWN0b3IuOGZvcmNlX3RyYW5zZmVyDAEYc291cmNlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZfgBKFQ6OkJhbGFuY2UAAghhAUV4YWN0bHkgYXMgYHRyYW5zZmVyX2FsbG93X2RlYXRoYCwgZXhjZXB0IHRoZSBvcmlnaW4gbXVzdCBiZSByb290IGFuZCB0aGUgc291cmNlIGFjY291bnREbWF5IGJlIHNwZWNpZmllZC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQgBEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVl+AEoVDo6QmFsYW5jZQADGFkBU2FtZSBhcyB0aGUgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGNhbGwsIGJ1dCB3aXRoIGEgY2hlY2sgdGhhdCB0aGUgdHJhbnNmZXIgd2lsbCBub3Rga2lsbCB0aGUgb3JpZ2luIGFjY291bnQuAOg5OSUgb2YgdGhlIHRpbWUgeW91IHdhbnQgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGluc3RlYWQuAPBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF06IHN0cnVjdC5QYWxsZXQuaHRtbCNtZXRob2QudHJhbnNmZXIwdHJhbnNmZXJfYWxsCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZTEBARBib29sAAQ8BQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0YQFhbnkgbG9ja2VkLCByZXNlcnZlZCwgb3IgZXhpc3RlbnRpYWwgZGVwb3NpdHMgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhY2NvdW50IHRvIGJlIGtpbGxlZCAoZmFsc2UpLCBvclkBICB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCwgd2hpY2ggd2lsbCBndWFyYW50ZWUgdG+cICBrZWVwIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuPGZvcmNlX3VucmVzZXJ2ZQgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50/AEoVDo6QmFsYW5jZQAFDLBVbnJlc2VydmUgc29tZSBiYWxhbmNlIGZyb20gYSB1c2VyIGJ5IGZvcmNlLgBsQ2FuIG9ubHkgYmUgY2FsbGVkIGJ5IFJPT1QuQHVwZ3JhZGVfYWNjb3VudHMEAQx3aG81AQFEVmVjPFQ6OkFjY291bnRJZD4ABiBwVXBncmFkZSBhIHNwZWNpZmllZCBhY2NvdW50LgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdXBncmFkZWQuAFUBVGhpcyB3aWxsIHdhaXZlIHRoZSB0cmFuc2FjdGlvbiBmZWUgaWYgYXQgbGVhc3QgYWxsIGJ1dCAxMCUgb2YgdGhlIGFjY291bnRzIG5lZWRlZCB0b0EBYmUgdXBncmFkZWQuIChXZSBsZXQgc29tZSBub3QgaGF2ZSB0byBiZSB1cGdyYWRlZCBqdXN0IGluIG9yZGVyIHRvIGFsbG93IGZvciB0aGVYcG9zc2liaWxpdHkgb2YgY2h1cm4pLkRmb3JjZV9zZXRfYmFsYW5jZQgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgbmV3X2ZyZWX4AShUOjpCYWxhbmNlAAgMrFNldCB0aGUgcmVndWxhciBiYWxhbmNlIG9mIGEgZ2l2ZW4gYWNjb3VudC4AsFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBpcyBgcm9vdGAubGZvcmNlX2FkanVzdF90b3RhbF9pc3N1YW5jZQgBJGRpcmVjdGlvbjkBAUxBZGp1c3RtZW50RGlyZWN0aW9uAAEUZGVsdGH4AShUOjpCYWxhbmNlAAkUuEFkanVzdCB0aGUgdG90YWwgaXNzdWFuY2UgaW4gYSBzYXR1cmF0aW5nIHdheS4A/ENhbiBvbmx5IGJlIGNhbGxlZCBieSByb290IGFuZCBhbHdheXMgbmVlZHMgYSBwb3NpdGl2ZSBgZGVsdGFgLgAkIyBFeGFtcGxlEGJ1cm4IARR2YWx1ZfgBKFQ6OkJhbGFuY2UAAShrZWVwX2FsaXZlMQEBEGJvb2wAChz8QnVybiB0aGUgc3BlY2lmaWVkIGxpcXVpZCBmcmVlIGJhbGFuY2UgZnJvbSB0aGUgb3JpZ2luIGFjY291bnQuACUBSWYgdGhlIG9yaWdpbidzIGFjY291bnQgZW5kcyB1cCBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCBhcyBhIHJlc3VsdAkBb2YgdGhlIGJ1cm4gYW5kIGBrZWVwX2FsaXZlYCBpcyBmYWxzZSwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuAFEBVW5saWtlIHNlbmRpbmcgZnVuZHMgdG8gYSBfYnVybl8gYWRkcmVzcywgd2hpY2ggbWVyZWx5IG1ha2VzIHRoZSBmdW5kcyBpbmFjY2Vzc2libGUsIQF0aGlzIGBidXJuYCBvcGVyYXRpb24gd2lsbCByZWR1Y2UgdG90YWwgaXNzdWFuY2UgYnkgdGhlIGFtb3VudCBfYnVybmVkXy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuMQEAAAUAADUBAAACBAA5AQw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzTEFkanVzdG1lbnREaXJlY3Rpb24AAQggSW5jcmVhc2UAAAAgRGVjcmVhc2UAAQAAPQEMaHBhbGxldF90cmFuc2FjdGlvbl9zdG9yYWdlGHBhbGxldBBDYWxsBARUAAEoFHN0b3JlBAEQZGF0YRgBHFZlYzx1OD4AADgdAUluZGV4IGFuZCBzdG9yZSBkYXRhIG9mZiBjaGFpbi4gTWluaW11bSBkYXRhIHNpemUgaXMgMSBieXRlLCBtYXhpbXVtIGlzRQFgTWF4VHJhbnNhY3Rpb25TaXplYC4gRGF0YSB3aWxsIGJlIHJlbW92ZWQgYWZ0ZXIgYFJldGVudGlvblBlcmlvZGAgYmxvY2tzLCB1bmxlc3NIYHJlbmV3YCBpcyBjYWxsZWQuAE0BQXV0aG9yaXphdGlvbiBpcyByZXF1aXJlZCB0byBzdG9yZSBkYXRhIHVzaW5nIHJlZ3VsYXIgc2lnbmVkL3Vuc2lnbmVkIHRyYW5zYWN0aW9ucy74UmVndWxhciBzaWduZWQgdHJhbnNhY3Rpb25zIHJlcXVpcmUgYWNjb3VudCBhdXRob3JpemF0aW9uIChzZWVZAVtgYXV0aG9yaXplX2FjY291bnRgXShTZWxmOjphdXRob3JpemVfYWNjb3VudCkpLCByZWd1bGFyIHVuc2lnbmVkIHRyYW5zYWN0aW9ucyByZXF1aXJlOQFwcmVpbWFnZSBhdXRob3JpemF0aW9uIChzZWUgW2BhdXRob3JpemVfcHJlaW1hZ2VgXShTZWxmOjphdXRob3JpemVfcHJlaW1hZ2UpKS4AwEVtaXRzIFtgU3RvcmVkYF0oRXZlbnQ6OlN0b3JlZCkgd2hlbiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eQAVAU8obipsb2cobikpIG9mIGRhdGEgc2l6ZSwgYXMgYWxsIGRhdGEgaXMgcHVzaGVkIHRvIGFuIGluLW1lbW9yeSB0cmllLlRzdG9yZV93aXRoX2NpZF9jb25maWcIAQxjaWRBAQEkQ2lkQ29uZmlnAAEQZGF0YRgBHFZlYzx1OD4ACRgJAUluZGV4IGFuZCBzdG9yZSBkYXRhIG9mZiBjaGFpbiB3aXRoIGFuIGV4cGxpY2l0IENJRCBjb25maWd1cmF0aW9uLgAhAUJlaGF2ZXMgaWRlbnRpY2FsbHkgdG8gW2BzdG9yZWBdKFNlbGY6OnN0b3JlKSwgYnV0IHRoZSBDSUQgY29uZmlndXJhdGlvbgEBKGNvZGVjIGFuZCBoYXNoaW5nIGFsZ29yaXRobSkgaXMgcGFzc2VkIGRpcmVjdGx5IGFzIGEgcGFyYW1ldGVyLgDARW1pdHMgW2BTdG9yZWRgXShFdmVudDo6U3RvcmVkKSB3aGVuIHN1Y2Nlc3NmdWwuFHJlbmV3CAEUYmxvY2s4AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4OAEMdTMyAAEwUQFSZW5ldyBwcmV2aW91c2x5IHN0b3JlZCBkYXRhLiBQYXJhbWV0ZXJzIGFyZSB0aGUgYmxvY2sgbnVtYmVyIHRoYXQgY29udGFpbnMgcHJldmlvdXNVAWBzdG9yZWAgb3IgYHJlbmV3YCBjYWxsIGFuZCB0cmFuc2FjdGlvbiBpbmRleCB3aXRoaW4gdGhhdCBibG9jay4gVHJhbnNhY3Rpb24gaW5kZXggaXOsZW1pdHRlZCBpbiB0aGUgYFN0b3JlZGAgb3IgYFJlbmV3ZWRgIGV2ZW50LgBVAUFzIHdpdGggW2BzdG9yZWBdKFNlbGY6OnN0b3JlKSwgYXV0aG9yaXphdGlvbiBpcyByZXF1aXJlZCB0byByZW5ldyBkYXRhIHVzaW5nIHJlZ3VsYXJ0c2lnbmVkL3Vuc2lnbmVkIHRyYW5zYWN0aW9ucy4AyEVtaXRzIFtgUmVuZXdlZGBdKEV2ZW50OjpSZW5ld2VkKSB3aGVuIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5ABRPKDEpLixjaGVja19wcm9vZgQBFHByb29mSQEBXFRyYW5zYWN0aW9uU3RvcmFnZVByb29mAAIcYQFDaGVjayBzdG9yYWdlIHByb29mIGZvciBibG9jayBudW1iZXIgYGJsb2NrX251bWJlcigpIC0gUmV0ZW50aW9uUGVyaW9kYC4gSWYgc3VjaCBhIGJsb2NrzGRvZXMgbm90IGV4aXN0LCB0aGUgcHJvb2YgaXMgZXhwZWN0ZWQgdG8gYmUgYE5vbmVgLgA0IyMgQ29tcGxleGl0eQBdAUxpbmVhciB3LnIudCB0aGUgbnVtYmVyIG9mIGluZGV4ZWQgdHJhbnNhY3Rpb25zIGluIHRoZSBwcm92ZWQgYmxvY2sgZm9yIHJhbmRvbSBwcm9iaW5nLpxUaGVyZSdzIGEgREIgcmVhZCBmb3IgZWFjaCB0cmFuc2FjdGlvbi5EYXV0aG9yaXplX2FjY291bnQMAQx3aG8EATBUOjpBY2NvdW50SWQAATB0cmFuc2FjdGlvbnM4AQx1MzIAARRieXRlcygBDHU2NAADPF0BQXV0aG9yaXplIGFuIGFjY291bnQgdG8gc3RvcmUgdXAgdG8gYSBnaXZlbiBhbW91bnQgb2YgYXJiaXRyYXJ5IGRhdGEuIFRoZSBhdXRob3JpemF0aW9uwHdpbGwgZXhwaXJlIGFmdGVyIGEgY29uZmlndXJlZCBudW1iZXIgb2YgYmxvY2tzLgBRAUlmIHRoZSBhY2NvdW50IGlzIGFscmVhZHkgYXV0aG9yaXplZCB0byBzdG9yZSBkYXRhLCB0aGlzIHdpbGwgaW5jcmVhc2UgdGhlIGFtb3VudCBvZl0BZGF0YSB0aGUgYWNjb3VudCBpcyBhdXRob3JpemVkIHRvIHN0b3JlIChhbmQgdGhlIG51bWJlciBvZiB0cmFuc2FjdGlvbnMgdGhlIGFjY291bnQgbWF5/HN1Ym1pdCB0byBzdXBwbHkgdGhlIGRhdGEpLCBhbmQgcHVzaCBiYWNrIHRoZSBleHBpcmF0aW9uIGJsb2NrLgAsUGFyYW1ldGVyczoAIQEtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZCB3aXRoIGFuIGF1dGhvcml6YXRpb24gdG8gc3RvcmUgZGF0YS5dAS0gYHRyYW5zYWN0aW9uc2A6IFRoZSBudW1iZXIgb2YgdHJhbnNhY3Rpb25zIHRoYXQgYHdob2AgbWF5IHN1Ym1pdCB0byBzdXBwbHkgdGhhdCBkYXRhLtQtIGBieXRlc2A6IFRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBgd2hvYCBtYXkgc3VibWl0LgAFAVRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBwYWxsZXQncyBgQXV0aG9yaXplcmAuIEVtaXRzAQFbYEFjY291bnRBdXRob3JpemVkYF0oRXZlbnQ6OkFjY291bnRBdXRob3JpemVkKSB3aGVuIHN1Y2Nlc3NmdWwuSGF1dGhvcml6ZV9wcmVpbWFnZQgBMGNvbnRlbnRfaGFzaAgBLENvbnRlbnRIYXNoAAEgbWF4X3NpemUoAQx1NjQABEBZAUF1dGhvcml6ZSBhbnlvbmUgdG8gc3RvcmUgYSBwcmVpbWFnZSBvZiB0aGUgZ2l2ZW4gY29udGVudCBoYXNoLiBUaGUgYXV0aG9yaXphdGlvbiB3aWxsrGV4cGlyZSBhZnRlciBhIGNvbmZpZ3VyZWQgbnVtYmVyIG9mIGJsb2Nrcy4ASQFJZiBhdXRob3JpemF0aW9uIGFscmVhZHkgZXhpc3RzIGZvciBhIHByZWltYWdlIG9mIHRoZSBnaXZlbiBoYXNoIHRvIGJlIHN0b3JlZCwgdGhlWQFtYXhpbXVtIHNpemUgb2YgdGhlIHByZWltYWdlIHdpbGwgYmUgaW5jcmVhc2VkIHRvIGBtYXhfc2l6ZWAsIGFuZCB0aGUgZXhwaXJhdGlvbiBibG9ja1B3aWxsIGJlIHB1c2hlZCBiYWNrLgAsUGFyYW1ldGVyczoAXQEtIGBjb250ZW50X2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgZGF0YSB0byBiZSBzdWJtaXR0ZWQuIEZvciBbYHN0b3JlYF0oU2VsZjo6c3RvcmUpIHRoaXNVASAgaXMgdGhlIEJMQUtFMmItMjU2IGhhc2g7IGZvciBbYHN0b3JlX3dpdGhfY2lkX2NvbmZpZ2BdKFNlbGY6OnN0b3JlX3dpdGhfY2lkX2NvbmZpZykJASAgdGhpcyBpcyB0aGUgaGFzaCBwcm9kdWNlZCBieSB0aGUgQ0lEIGNvbmZpZydzIGhhc2hpbmcgYWxnb3JpdGhtLugtIGBtYXhfc2l6ZWA6IFRoZSBtYXhpbXVtIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgcHJlaW1hZ2UuAAUBVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIHBhbGxldCdzIGBBdXRob3JpemVyYC4gRW1pdHMJAVtgUHJlaW1hZ2VBdXRob3JpemVkYF0oRXZlbnQ6OlByZWltYWdlQXV0aG9yaXplZCkgd2hlbiBzdWNjZXNzZnVsLpByZW1vdmVfZXhwaXJlZF9hY2NvdW50X2F1dGhvcml6YXRpb24EAQx3aG8EATBUOjpBY2NvdW50SWQABSAtAVJlbW92ZSBhbiBleHBpcmVkIGFjY291bnQgYXV0aG9yaXphdGlvbiBmcm9tIHN0b3JhZ2UuIEFueW9uZSBjYW4gY2FsbCB0aGlzLgAsUGFyYW1ldGVyczoA9C0gYHdob2A6IFRoZSBhY2NvdW50IHdpdGggYW4gZXhwaXJlZCBhdXRob3JpemF0aW9uIHRvIHJlbW92ZS4AXQFFbWl0cyBbYEV4cGlyZWRBY2NvdW50QXV0aG9yaXphdGlvblJlbW92ZWRgXShFdmVudDo6RXhwaXJlZEFjY291bnRBdXRob3JpemF0aW9uUmVtb3ZlZClAd2hlbiBzdWNjZXNzZnVsLpRyZW1vdmVfZXhwaXJlZF9wcmVpbWFnZV9hdXRob3JpemF0aW9uBAEwY29udGVudF9oYXNoCAEsQ29udGVudEhhc2gABiQxAVJlbW92ZSBhbiBleHBpcmVkIHByZWltYWdlIGF1dGhvcml6YXRpb24gZnJvbSBzdG9yYWdlLiBBbnlvbmUgY2FuIGNhbGwgdGhpcy4ALFBhcmFtZXRlcnM6ANwtIGBjb250ZW50X2hhc2hgOiBUaGUgQkxBS0UyYiBoYXNoIHRoYXQgd2FzIGF1dGhvcml6ZWQuABRFbWl0c00BW2BFeHBpcmVkUHJlaW1hZ2VBdXRob3JpemF0aW9uUmVtb3ZlZGBdKEV2ZW50OjpFeHBpcmVkUHJlaW1hZ2VBdXRob3JpemF0aW9uUmVtb3ZlZClAd2hlbiBzdWNjZXNzZnVsLnRyZWZyZXNoX2FjY291bnRfYXV0aG9yaXphdGlvbgQBDHdobwQBMFQ6OkFjY291bnRJZAAHKA0BUmVmcmVzaCB0aGUgZXhwaXJhdGlvbiBvZiBhbiBleGlzdGluZyBhdXRob3JpemF0aW9uIGZvciBhbiBhY2NvdW50LgAJAUlmIHRoZSBhY2NvdW50IGRvZXMgbm90IGhhdmUgYW4gYXV0aG9yaXphdGlvbiwgdGhlIGNhbGwgd2lsbCBmYWlsLgAsUGFyYW1ldGVyczoAIQEtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZCB3aXRoIGFuIGF1dGhvcml6YXRpb24gdG8gc3RvcmUgZGF0YS4ABQFUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgcGFsbGV0J3MgYEF1dGhvcml6ZXJgLiBFbWl0c2EBW2BBY2NvdW50QXV0aG9yaXphdGlvblJlZnJlc2hlZGBdKEV2ZW50OjpBY2NvdW50QXV0aG9yaXphdGlvblJlZnJlc2hlZCkgd2hlbiBzdWNjZXNzZnVsLnhyZWZyZXNoX3ByZWltYWdlX2F1dGhvcml6YXRpb24EATBjb250ZW50X2hhc2gIASxDb250ZW50SGFzaAAILFUBUmVmcmVzaCB0aGUgZXhwaXJhdGlvbiBvZiBhbiBleGlzdGluZyBhdXRob3JpemF0aW9uIGZvciBhIHByZWltYWdlIG9mIGEgQkxBS0UyYiBoYXNoLgANAUlmIHRoZSBwcmVpbWFnZSBkb2VzIG5vdCBoYXZlIGFuIGF1dGhvcml6YXRpb24sIHRoZSBjYWxsIHdpbGwgZmFpbC4ALFBhcmFtZXRlcnM6APwtIGBjb250ZW50X2hhc2hgOiBUaGUgQkxBS0UyYiBoYXNoIG9mIHRoZSBkYXRhIHRvIGJlIHN1Ym1pdHRlZC4ABQFUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgcGFsbGV0J3MgYEF1dGhvcml6ZXJgLiBFbWl0czkBW2BQcmVpbWFnZUF1dGhvcml6YXRpb25SZWZyZXNoZWRgXShFdmVudDo6UHJlaW1hZ2VBdXRob3JpemF0aW9uUmVmcmVzaGVkKSB3aGVuLHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkEBDHh0cmFuc2FjdGlvbl9zdG9yYWdlX3ByaW1pdGl2ZXMQY2lkcyRDaWRDb25maWcAAAgBFGNvZGVjKAEgQ2lkQ29kZWMAARxoYXNoaW5nRQEBQEhhc2hpbmdBbGdvcml0aG0AAEUBDHh0cmFuc2FjdGlvbl9zdG9yYWdlX3ByaW1pdGl2ZXMQY2lkc0BIYXNoaW5nQWxnb3JpdGhtAAEMKEJsYWtlMmIyNTYAAAAgU2hhMl8yNTYAAQAkS2VjY2FrMjU2AAIAAEkBCHBzcF90cmFuc2FjdGlvbl9zdG9yYWdlX3Byb29mXFRyYW5zYWN0aW9uU3RvcmFnZVByb29mAAAIARRjaHVuaxgBHFZlYzx1OD4AARRwcm9vZjQBMFZlYzxWZWM8dTg+PgAATQEMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0EENhbGwEBFQAASREc2V0X2ludnVsbmVyYWJsZXMEAQxuZXc1AQFEVmVjPFQ6OkFjY291bnRJZD4AADQxAVNldCB0aGUgbGlzdCBvZiBpbnZ1bG5lcmFibGUgKGZpeGVkKSBjb2xsYXRvcnMuIFRoZXNlIGNvbGxhdG9ycyBtdXN0IGRvIHNvbWXQcHJlcGFyYXRpb24sIG5hbWVseSB0byBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLgBZAVRoZSBjYWxsIHdpbGwgcmVtb3ZlIGFueSBhY2NvdW50cyB0aGF0IGhhdmUgbm90IHJlZ2lzdGVyZWQga2V5cyBmcm9tIHRoZSBzZXQuIFRoYXQgaXMsXQFpdCBpcyBub24tYXRvbWljOyB0aGUgY2FsbGVyIGFjY2VwdHMgYWxsIGBBY2NvdW50SWRgcyBwYXNzZWQgaW4gYG5ld2AgX2luZGl2aWR1YWxseV8gYXMxAWFjY2VwdGFibGUgSW52dWxuZXJhYmxlcywgYW5kIGlzIG5vdCBwcm9wb3NpbmcgYSBfc2V0XyBvZiBuZXcgSW52dWxuZXJhYmxlcy4AWQFUaGlzIGNhbGwgZG9lcyBub3QgbWFpbnRhaW4gbXV0dWFsIGV4Y2x1c2l2aXR5IG9mIGBJbnZ1bG5lcmFibGVzYCBhbmQgYENhbmRpZGF0ZXNgLiBJdGEBaXMgcmVjb21tZW5kZWQgdG8gdXNlIGEgYmF0Y2ggb2YgYGFkZF9pbnZ1bG5lcmFibGVgIGFuZCBgcmVtb3ZlX2ludnVsbmVyYWJsZWAgaW5zdGVhZC4gQVEBYGJhdGNoX2FsbGAgY2FuIGFsc28gYmUgdXNlZCB0byBlbmZvcmNlIGF0b21pY2l0eS4gSWYgYW55IGNhbmRpZGF0ZXMgYXJlIGluY2x1ZGVkIGluTQFgbmV3YCwgdGhleSBzaG91bGQgYmUgcmVtb3ZlZCB3aXRoIGByZW1vdmVfaW52dWxuZXJhYmxlX2NhbmRpZGF0ZWAgYWZ0ZXIgZXhlY3V0aW9uLgCUTXVzdCBiZSBjYWxsZWQgYnkgdGhlIGBVcGRhdGVPcmlnaW5gLlhzZXRfZGVzaXJlZF9jYW5kaWRhdGVzBAEMbWF4OAEMdTMyAAEUVQFTZXQgdGhlIGlkZWFsIG51bWJlciBvZiBub24taW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gSWYgbG93ZXJpbmcgdGhpcyBudW1iZXIsIHRoZW4gdGhlYQFudW1iZXIgb2YgcnVubmluZyBjb2xsYXRvcnMgY291bGQgYmUgaGlnaGVyIHRoYW4gdGhpcyBmaWd1cmUuIEFzaWRlIGZyb20gdGhhdCBlZGdlIGNhc2UsNQF0aGVyZSBzaG91bGQgYmUgbm8gb3RoZXIgd2F5IHRvIGhhdmUgbW9yZSBjYW5kaWRhdGVzIHRoYW4gdGhlIGRlc2lyZWQgbnVtYmVyLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkhzZXRfY2FuZGlkYWN5X2JvbmQEARBib25k/AEwQmFsYW5jZU9mPFQ+AAIceFNldCB0aGUgY2FuZGlkYWN5IGJvbmQgYW1vdW50LgBRAUlmIHRoZSBjYW5kaWRhY3kgYm9uZCBpcyBpbmNyZWFzZWQgYnkgdGhpcyBjYWxsLCBhbGwgY3VycmVudCBjYW5kaWRhdGVzIHdoaWNoIGhhdmUgYU0BZGVwb3NpdCBsb3dlciB0aGFuIHRoZSBuZXcgYm9uZCB3aWxsIGJlIGtpY2tlZCBmcm9tIHRoZSBsaXN0IGFuZCBnZXQgdGhlaXIgZGVwb3NpdHMUYmFjay4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC5UcmVnaXN0ZXJfYXNfY2FuZGlkYXRlAAMQQQFSZWdpc3RlciB0aGlzIGFjY291bnQgYXMgYSBjb2xsYXRvciBjYW5kaWRhdGUuIFRoZSBhY2NvdW50IG11c3QgKGEpIGFscmVhZHkgaGF2ZR0BcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMgYW5kIChiKSBiZSBhYmxlIHRvIHJlc2VydmUgdGhlIGBDYW5kaWRhY3lCb25kYC4A3FRoaXMgY2FsbCBpcyBub3QgYXZhaWxhYmxlIHRvIGBJbnZ1bG5lcmFibGVgIGNvbGxhdG9ycy4wbGVhdmVfaW50ZW50AAQUVQFEZXJlZ2lzdGVyIGBvcmlnaW5gIGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBOb3RlIHRoYXQgdGhlIGNvbGxhdG9yIGNhbiBvbmx5IGxlYXZlIG9uDQFzZXNzaW9uIGNoYW5nZS4gVGhlIGBDYW5kaWRhY3lCb25kYCB3aWxsIGJlIHVucmVzZXJ2ZWQgaW1tZWRpYXRlbHkuABkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgdG90YWwgbnVtYmVyIG9mIGNhbmRpZGF0ZXMgd291bGQgZHJvcCBiZWxvd1xgTWluRWxpZ2libGVDb2xsYXRvcnNgLkBhZGRfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAUQRQFBZGQgYSBuZXcgYWNjb3VudCBgd2hvYCB0byB0aGUgbGlzdCBvZiBgSW52dWxuZXJhYmxlc2AgY29sbGF0b3JzLiBgd2hvYCBtdXN0IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLiBJZiBgd2hvYCBpcyBhIGNhbmRpZGF0ZSwgdGhleSB3aWxsIGJlIHJlbW92ZWQuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuTHJlbW92ZV9pbnZ1bG5lcmFibGUEAQx3aG8EATBUOjpBY2NvdW50SWQABhBhAVJlbW92ZSBhbiBhY2NvdW50IGB3aG9gIGZyb20gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYEludnVsbmVyYWJsZXNgIG11c3QoYmUgc29ydGVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLix1cGRhdGVfYm9uZAQBLG5ld19kZXBvc2l0/AEwQmFsYW5jZU9mPFQ+AAccXQFVcGRhdGUgdGhlIGNhbmRpZGFjeSBib25kIG9mIGNvbGxhdG9yIGNhbmRpZGF0ZSBgb3JpZ2luYCB0byBhIG5ldyBhbW91bnQgYG5ld19kZXBvc2l0YC4AQQFTZXR0aW5nIGEgYG5ld19kZXBvc2l0YCB0aGF0IGlzIGxvd2VyIHRoYW4gdGhlIGN1cnJlbnQgZGVwb3NpdCB3aGlsZSBgb3JpZ2luYCBpc+BvY2N1cHlpbmcgYSB0b3AtYERlc2lyZWRDYW5kaWRhdGVzYCBzbG90IGlzIG5vdCBhbGxvd2VkLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgYG9yaWdpbmAgaXMgbm90IGEgY29sbGF0b3IgY2FuZGlkYXRlLCB0aGUgdXBkYXRlZCBib25kIGlzIGxvd2VyGQF0aGFuIHRoZSBtaW5pbXVtIGNhbmRpZGFjeSBib25kLCBhbmQvb3IgdGhlIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuTHRha2VfY2FuZGlkYXRlX3Nsb3QIARxkZXBvc2l0/AEwQmFsYW5jZU9mPFQ+AAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAgcTQFUaGUgY2FsbGVyIGBvcmlnaW5gIHJlcGxhY2VzIGEgY2FuZGlkYXRlIGB0YXJnZXRgIGluIHRoZSBjb2xsYXRvciBjYW5kaWRhdGUgbGlzdCBieVUBcmVzZXJ2aW5nIGBkZXBvc2l0YC4gVGhlIGFtb3VudCBgZGVwb3NpdGAgcmVzZXJ2ZWQgYnkgdGhlIGNhbGxlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbuB0aGUgZXhpc3RpbmcgYm9uZCBvZiB0aGUgdGFyZ2V0IGl0IGlzIHRyeWluZyB0byByZXBsYWNlLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IGEgY29sbGF0b3IgY2FuZGlkYXRlIG9yIGludnVsbmVyYWJsZSwgdGhlVQFjYWxsZXIgZG9lcyBub3QgaGF2ZSByZWdpc3RlcmVkIHNlc3Npb24ga2V5cywgdGhlIHRhcmdldCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsvGFuZC9vciB0aGUgYGRlcG9zaXRgIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlEBDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQQQ2FsbAQEVAABCCBzZXRfa2V5cwgBEGtleXNVAQEcVDo6S2V5cwABFHByb29mGAEcVmVjPHU4PgAALORTZXRzIHRoZSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyIHRvIGBrZXlzYC4AHQFBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4AAQEtIGBvcmlnaW5gOiBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzaWduZWQuVQEtIGBrZXlzYDogVGhlIG5ldyBzZXNzaW9uIGtleXMgdG8gc2V0LiBUaGVzZSBhcmUgdGhlIHB1YmxpYyBrZXlzIG9mIGFsbCBzZXNzaW9ucyBrZXlzXCAgc2V0dXAgaW4gdGhlIHJ1bnRpbWUuQQEtIGBwcm9vZmA6IFRoZSBwcm9vZiB0aGF0IGBvcmlnaW5gIGhhcyBhY2Nlc3MgdG8gdGhlIHByaXZhdGUga2V5cyBvZiBga2V5c2AuIFNlZU0BICBbYGltcGxfb3BhcXVlX2tleXNgXShzcF9ydW50aW1lOjppbXBsX29wYXF1ZV9rZXlzKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGU8ICBwcm9vZiBmb3JtYXQuKHB1cmdlX2tleXMAASDIUmVtb3ZlcyBhbnkgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlci4AwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIGFjY291bnQgbXVzdCBiZSBlaXRoZXIgYmVdAWNvbnZlcnRpYmxlIHRvIGEgdmFsaWRhdG9yIElEIHVzaW5nIHRoZSBjaGFpbidzIHR5cGljYWwgYWRkcmVzc2luZyBzeXN0ZW0gKHRoaXMgdXN1YWxseVEBbWVhbnMgYmVpbmcgYSBjb250cm9sbGVyIGFjY291bnQpIG9yIGRpcmVjdGx5IGNvbnZlcnRpYmxlIGludG8gYSB2YWxpZGF0b3IgSUQgKHdoaWNolHVzdWFsbHkgbWVhbnMgYmVpbmcgYSBzdGFzaCBhY2NvdW50KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuVQEIYGJ1bGxldGluX3dlc3RlbmRfcnVudGltZSxTZXNzaW9uS2V5cwAABAEQYXVyYVkBAcQ8QXVyYSBhcyAkY3JhdGU6OkJvdW5kVG9SdW50aW1lQXBwUHVibGljPjo6UHVibGljAABZARBEc3BfY29uc2Vuc3VzX2F1cmEcc3IyNTUxOSxhcHBfc3IyNTUxORhQdWJsaWMAAAQACAE8c3IyNTUxOTo6UHVibGljAABdAQxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQQQ2FsbAQEVAABFFRzdXNwZW5kX3hjbV9leGVjdXRpb24AAQxJAVN1c3BlbmRzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUsIHJlZ2FyZGxlc3Mgb2YgdGhlIHNlbmRlcidzIG9yaWdpbi4ApC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgQ29udHJvbGxlck9yaWdpbmAuUHJlc3VtZV94Y21fZXhlY3V0aW9uAAIUuFJlc3VtZXMgYWxsIFhDTSBleGVjdXRpb25zIGZvciB0aGUgWENNUCBxdWV1ZS4APQFOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGNoYW5nZSB0aGUgc3RhdHVzIG9mIHRoZSBpbi9vdXQgYm91bmQgY2hhbm5lbHMuAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLmB1cGRhdGVfc3VzcGVuZF90aHJlc2hvbGQEAQxuZXc4AQx1MzIAAxRJAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBmb3IgdGhlIG90aGVyIHNpZGUgdG8gYmV4dG9sZCB0byBzdXNwZW5kIHRoZWlyIHNlbmRpbmcuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLugtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLnN1c3BlbmRfdmFsdWVgVHVwZGF0ZV9kcm9wX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAEFEUBT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIG11c3QgYmUgaW4gdGhlIHF1ZXVlIGFmdGVyIHdoaWNoIHdlIGRyb3AgYW55iGZ1cnRoZXIgbWVzc2FnZXMgZnJvbSB0aGUgY2hhbm5lbC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu7C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEuZHJvcF90aHJlc2hvbGRgXHVwZGF0ZV9yZXN1bWVfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAUUTQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggdGhlIHF1ZXVlIG11c3QgYmUgcmVkdWNlZCB0byBiZWZvcmUgaXQgc2lnbmFscwEBdGhhdCBtZXNzYWdlIHNlbmRpbmcgbWF5IHJlY29tbWVuY2UgYWZ0ZXIgaXQgaGFzIGJlZW4gc3VzcGVuZGVkLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC70LSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5yZXN1bWVfdGhyZXNob2xkYAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5hAQwocGFsbGV0X3hjbRhwYWxsZXQQQ2FsbAQEVAABRBBzZW5kCAEQZGVzdGUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcbWVzc2FnZbEBAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4AAAA8dGVsZXBvcnRfYXNzZXRzEAEQZGVzdGUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnllAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c/ECAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAFIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgAdASoqVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOiBVc2UgYGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGVoICBmZWUgb24gdGhlIGBkZXN0YCBjaGFpbi5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5ccmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMQARBkZXN0ZQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeWUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRz8QIBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAAnhdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLHhkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZS4APQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIGFuZCBtYXkgbm90IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuTQEgLSBgYXNzZXRzYCBoYXZlIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuVQEgLSBgYXNzZXRzYCBoYXZlIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5hASAtIGBhc3NldHNgIGhhdmUgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmVhASAgIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGD0ICAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLgA9ASoqVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOiBVc2UgYGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHNgIGluc3RlYWQuKioAUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAuIFRoZSB3ZWlnaHQgbGltaXQgZm9yIGZlZXMgaXMgbm90IHByb3ZpZGVkIGFuZCB0aHVzIGlzIHVubGltaXRlZCy0d2l0aCBhbGwgZmVlcyB0YWtlbiBhcyBuZWVkZWQgZnJvbSB0aGUgYXNzZXQuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLhxleGVjdXRlCAEcbWVzc2FnZfUCAbRCb3g8VmVyc2lvbmVkWGNtPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPj4AAShtYXhfd2VpZ2h0KQEBGFdlaWdodAADINBFeGVjdXRlIGFuIFhDTSBtZXNzYWdlIGZyb20gYSBsb2NhbCwgc2lnbmVkLCBvcmlnaW4uAE0BQW4gZXZlbnQgaXMgZGVwb3NpdGVkIGluZGljYXRpbmcgd2hldGhlciBgbXNnYCBjb3VsZCBiZSBleGVjdXRlZCBjb21wbGV0ZWx5IG9yIG9ubHkocGFydGlhbGx5LgBdAU5vIG1vcmUgdGhhbiBgbWF4X3dlaWdodGAgd2lsbCBiZSB1c2VkIGluIGl0cyBhdHRlbXB0ZWQgZXhlY3V0aW9uLiBJZiB0aGlzIGlzIGxlc3MgdGhhbkEBdGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCB0aGF0IHRoZSBtZXNzYWdlIGNvdWxkIHRha2UgdG8gYmUgZXhlY3V0ZWQsIHRoZW4gbm98ZXhlY3V0aW9uIGF0dGVtcHQgd2lsbCBiZSBtYWRlLkRmb3JjZV94Y21fdmVyc2lvbggBIGxvY2F0aW9u4AE0Qm94PExvY2F0aW9uPgABHHZlcnNpb244AShYY21WZXJzaW9uAAQYSQFFeHRvbGwgdGhhdCBhIHBhcnRpY3VsYXIgZGVzdGluYXRpb24gY2FuIGJlIGNvbW11bmljYXRlZCB3aXRoIHRocm91Z2ggYSBwYXJ0aWN1bGFyPHZlcnNpb24gb2YgWENNLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLtgtIGBsb2NhdGlvbmA6IFRoZSBkZXN0aW5hdGlvbiB0aGF0IGlzIGJlaW5nIGRlc2NyaWJlZC4RAS0gYHhjbV92ZXJzaW9uYDogVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFhDTSB0aGF0IGBsb2NhdGlvbmAgc3VwcG9ydHMuZGZvcmNlX2RlZmF1bHRfeGNtX3ZlcnNpb24EAURtYXliZV94Y21fdmVyc2lvbiEDAUhPcHRpb248WGNtVmVyc2lvbj4ABRRZAVNldCBhIHNhZmUgWENNIHZlcnNpb24gKHRoZSB2ZXJzaW9uIHRoYXQgWENNIHNob3VsZCBiZSBlbmNvZGVkIHdpdGggaWYgdGhlIG1vc3QgcmVjZW50tHZlcnNpb24gYSBkZXN0aW5hdGlvbiBjYW4gYWNjZXB0IGlzIHVua25vd24pLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLjkBLSBgbWF5YmVfeGNtX3ZlcnNpb25gOiBUaGUgZGVmYXVsdCBYQ00gZW5jb2RpbmcgdmVyc2lvbiwgb3IgYE5vbmVgIHRvIGRpc2FibGUueGZvcmNlX3N1YnNjcmliZV92ZXJzaW9uX25vdGlmeQQBIGxvY2F0aW9uZQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ABhA5AUFzayBhIGxvY2F0aW9uIHRvIG5vdGlmeSB1cyByZWdhcmRpbmcgdGhlaXIgWENNIHZlcnNpb24gYW5kIGFueSBjaGFuZ2VzIHRvIGl0LgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLlkBLSBgbG9jYXRpb25gOiBUaGUgbG9jYXRpb24gdG8gd2hpY2ggd2Ugc2hvdWxkIHN1YnNjcmliZSBmb3IgWENNIHZlcnNpb24gbm90aWZpY2F0aW9ucy6AZm9yY2VfdW5zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbmUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAcYSQFSZXF1aXJlIHRoYXQgYSBwYXJ0aWN1bGFyIGRlc3RpbmF0aW9uIHNob3VsZCBubyBsb25nZXIgbm90aWZ5IHVzIHJlZ2FyZGluZyBhbnkgWENNQHZlcnNpb24gY2hhbmdlcy4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi49AS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIGFyZSBjdXJyZW50bHkgc3Vic2NyaWJlZCBmb3IgWENNIHZlcnNpb26oICBub3RpZmljYXRpb25zIHdoaWNoIHdlIG5vIGxvbmdlciBkZXNpcmUufGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMUARBkZXN0ZQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeWUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRz8QIBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXQlAgEsV2VpZ2h0TGltaXQACHhdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLHhkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZS4APQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIGFuZCBtYXkgbm90IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuTQEgLSBgYXNzZXRzYCBoYXZlIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuVQEgLSBgYXNzZXRzYCBoYXZlIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5hASAtIGBhc3NldHNgIGhhdmUgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmVhASAgIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGD0ICAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5cbGltaXRlZF90ZWxlcG9ydF9hc3NldHMUARBkZXN0ZQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeWUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRz8QIBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXQlAgEsV2VpZ2h0TGltaXQACUgRAVRlbGVwb3J0IHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHNvbWUgZGVzdGluYXRpb24gY2hhaW4uAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0WQFpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGVoICBmZWUgb24gdGhlIGBkZXN0YCBjaGFpbi5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLkBmb3JjZV9zdXNwZW5zaW9uBAEkc3VzcGVuZGVkMQEBEGJvb2wAChD0U2V0IG9yIHVuc2V0IHRoZSBnbG9iYWwgc3VzcGVuc2lvbiBzdGF0ZSBvZiB0aGUgWENNIGV4ZWN1dG9yLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLtAtIGBzdXNwZW5kZWRgOiBgdHJ1ZWAgdG8gc3VzcGVuZCwgYGZhbHNlYCB0byByZXN1bWUuPHRyYW5zZmVyX2Fzc2V0cxQBEGRlc3RlAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5ZQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHPxAgFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABMHdlaWdodF9saW1pdCUCASxXZWlnaHRMaW1pdAALhF0BVHJhbnNmZXIgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHRocm91Z2ggdGhlaXIgbG9jYWws0GRlc3RpbmF0aW9uIG9yIHJlbW90ZSByZXNlcnZlLCBvciB0aHJvdWdoIHRlbGVwb3J0cy4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2Y1AWluZGV4IGBmZWVfYXNzZXRfaXRlbWAgKGhlbmNlIHJlZmVycmVkIHRvIGFzIGBmZWVzYCksIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yQQFgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0IGlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZdxvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAGEBYGFzc2V0c2AgKGV4Y2x1ZGluZyBgZmVlc2ApIG11c3QgaGF2ZSBzYW1lIHJlc2VydmUgbG9jYXRpb24gb3Igb3RoZXJ3aXNlIGJlIHRlbGVwb3J0YWJsZbB0byBgZGVzdGAsIG5vIGxpbWl0YXRpb25zIGltcG9zZWQgb24gYGZlZXNgLk0BIC0gZm9yIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbiBjaGFpbiBhbmRNASAgIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvRCAgIGBiZW5lZmljaWFyeWAuYQEgLSBmb3IgZGVzdGluYXRpb24gcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gdG8gYGRlc3RgIGNoYWluWQEgICB0byB3aXRoZHJhdyB0aGUgcmVzZXJ2ZSBhc3NldHMgZnJvbSB0aGlzIGNoYWluJ3Mgc292ZXJlaWduIGFjY291bnQgYW5kIGRlcG9zaXQgdGhlbVAgICB0byBgYmVuZWZpY2lhcnlgLl0BIC0gZm9yIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlIHJlc2VydmVzXQEgICBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3RgIHRvIG1pbnTUICAgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5RASAtIGZvciB0ZWxlcG9ydHM6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG8gbWludC90ZWxlcG9ydLAgICBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uLQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFgyKFBhcmVudCxVASAgUGFyYWNoYWluKC4uKSlgIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgWDEoUGFyYWNoYWluKC4uKSlgIHRvIHNlbmRoICBmcm9tIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS4wY2xhaW1fYXNzZXRzCAEYYXNzZXRz8QIBUEJveDxWZXJzaW9uZWRBc3NldHM+AAEsYmVuZWZpY2lhcnllAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAMGFUBQ2xhaW1zIGFzc2V0cyB0cmFwcGVkIG9uIHRoaXMgcGFsbGV0IGJlY2F1c2Ugb2YgbGVmdG92ZXIgYXNzZXRzIGR1cmluZyBYQ00gZXhlY3V0aW9uLgCsLSBgb3JpZ2luYDogQW55b25lIGNhbiBjYWxsIHRoaXMgZXh0cmluc2ljLl0BLSBgYXNzZXRzYDogVGhlIGV4YWN0IGFzc2V0cyB0aGF0IHdlcmUgdHJhcHBlZC4gVXNlIHRoZSB2ZXJzaW9uIHRvIHNwZWNpZnkgd2hhdCB2ZXJzaW9umHdhcyB0aGUgbGF0ZXN0IHdoZW4gdGhleSB3ZXJlIHRyYXBwZWQuRQEtIGBiZW5lZmljaWFyeWA6IFRoZSBsb2NhdGlvbi9hY2NvdW50IHdoZXJlIHRoZSBjbGFpbWVkIGFzc2V0cyB3aWxsIGJlIGRlcG9zaXRlZC6MdHJhbnNmZXJfYXNzZXRzX3VzaW5nX3R5cGVfYW5kX3RoZW4cARBkZXN0ZQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHPxAgFQQm94PFZlcnNpb25lZEFzc2V0cz4AAVBhc3NldHNfdHJhbnNmZXJfdHlwZSUDAURCb3g8VHJhbnNmZXJUeXBlPgABOHJlbW90ZV9mZWVzX2lkKQMBVEJveDxWZXJzaW9uZWRBc3NldElkPgABSGZlZXNfdHJhbnNmZXJfdHlwZSUDAURCb3g8VHJhbnNmZXJUeXBlPgABSGN1c3RvbV94Y21fb25fZGVzdLEBAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4AATB3ZWlnaHRfbGltaXQlAgEsV2VpZ2h0TGltaXQADcBVAVRyYW5zZmVyIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdXNpbmcgZXhwbGljaXQgdHJhbnNmZXJodHlwZXMgZm9yIGFzc2V0cyBhbmQgZmVlcy4AWQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG1heSBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLiBDYWxsZXIgbXVzdOxwcm92aWRlIHRoZSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgIHRvIGJlIHVzZWQgZm9yIGBhc3NldHNgOlEBIC0gYFRyYW5zZmVyVHlwZTo6TG9jYWxSZXNlcnZlYDogdHJhbnNmZXIgYXNzZXRzIHRvIHNvdmVyZWlnbiBhY2NvdW50IG9mIGRlc3RpbmF0aW9uTQEgICBjaGFpbiBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZGwgICBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5ZASAtIGBUcmFuc2ZlclR5cGU6OkRlc3RpbmF0aW9uUmVzZXJ2ZWA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5ZASAtIGBUcmFuc2ZlclR5cGU6OlJlbW90ZVJlc2VydmUocmVzZXJ2ZSlgOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gYHJlc2VydmVgYQEgICBjaGFpbiB0byBtb3ZlIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyVQEgICBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4gVHlwaWNhbGx5lCAgIHRoZSByZW1vdGUgYHJlc2VydmVgIGlzIEFzc2V0IEh1Yi5FASAtIGBUcmFuc2ZlclR5cGU6OlRlbGVwb3J0YDogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgWENNIHRvIGBkZXN0YCBjaGFpbiB0b+ggICBtaW50L3RlbGVwb3J0IGFzc2V0cyBhbmQgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuAFUBT24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLCBhcyB3ZWxsIGFzIGFueSBpbnRlcm1lZGlhcnkgaG9wcywgYEJ1eUV4ZWN1dGlvbmAgaXMgdXNlZCB0byEBYnV5IGV4ZWN1dGlvbiB1c2luZyB0cmFuc2ZlcnJlZCBgYXNzZXRzYCBpZGVudGlmaWVkIGJ5IGByZW1vdGVfZmVlc19pZGAuWQFNYWtlIHN1cmUgZW5vdWdoIG9mIHRoZSBzcGVjaWZpZWQgYHJlbW90ZV9mZWVzX2lkYCBhc3NldCBpcyBpbmNsdWRlZCBpbiB0aGUgZ2l2ZW4gbGlzdGEBb2YgYGFzc2V0c2AuIGByZW1vdGVfZmVlc19pZGAgc2hvdWxkIGJlIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgLiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4ARQFgcmVtb3RlX2ZlZXNfaWRgIG1heSB1c2UgZGlmZmVyZW50IHRyYW5zZmVyIHR5cGUgdGhhbiByZXN0IG9mIGBhc3NldHNgIGFuZCBjYW4gYmWcc3BlY2lmaWVkIHRocm91Z2ggYGZlZXNfdHJhbnNmZXJfdHlwZWAuAGEBVGhlIGNhbGxlciBuZWVkcyB0byBzcGVjaWZ5IHdoYXQgc2hvdWxkIGhhcHBlbiB0byB0aGUgdHJhbnNmZXJyZWQgYXNzZXRzIG9uY2UgdGhleSByZWFjaEEBdGhlIGBkZXN0YCBjaGFpbi4gVGhpcyBpcyBkb25lIHRocm91Z2ggdGhlIGBjdXN0b21feGNtX29uX2Rlc3RgIHBhcmFtZXRlciwgd2hpY2j8Y29udGFpbnMgdGhlIGluc3RydWN0aW9ucyB0byBleGVjdXRlIG9uIGBkZXN0YCBhcyBhIGZpbmFsIHN0ZXAufCAgVGhpcyBpcyB1c3VhbGx5IGFzIHNpbXBsZSBhczpRASAgYFhjbSh2ZWMhW0RlcG9zaXRBc3NldCB7IGFzc2V0czogV2lsZChBbGxDb3VudGVkKGFzc2V0cy5sZW4oKSkpLCBiZW5lZmljaWFyeSB9XSlgLDEBICBidXQgY291bGQgYmUgc29tZXRoaW5nIG1vcmUgZXhvdGljIGxpa2Ugc2VuZGluZyB0aGUgYGFzc2V0c2AgZXZlbiBmdXJ0aGVyLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tPQEgIHJlbGF5IHRvIHBhcmFjaGFpbiwgb3IgYChwYXJlbnRzOiAyLCAoR2xvYmFsQ29uc2Vuc3VzKC4uKSwgLi4pKWAgdG8gc2VuZCBmcm9t9CAgcGFyYWNoYWluIGFjcm9zcyBhIGJyaWRnZSB0byBhbm90aGVyIGVjb3N5c3RlbSBkZXN0aW5hdGlvbi5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuPQEtIGBhc3NldHNfdHJhbnNmZXJfdHlwZWA6IFRoZSBYQ00gYFRyYW5zZmVyVHlwZWAgdXNlZCB0byB0cmFuc2ZlciB0aGUgYGFzc2V0c2AuIQEtIGByZW1vdGVfZmVlc19pZGA6IE9uZSBvZiB0aGUgaW5jbHVkZWQgYGFzc2V0c2AgdG8gYmUgdXNlZCB0byBwYXkgZmVlcy5JAS0gYGZlZXNfdHJhbnNmZXJfdHlwZWA6IFRoZSBYQ00gYFRyYW5zZmVyVHlwZWAgdXNlZCB0byB0cmFuc2ZlciB0aGUgYGZlZXNgIGFzc2V0cy5ZAS0gYGN1c3RvbV94Y21fb25fZGVzdGA6IFRoZSBYQ00gdG8gYmUgZXhlY3V0ZWQgb24gYGRlc3RgIGNoYWluIGFzIHRoZSBsYXN0IHN0ZXAgb2YgdGhlWQEgIHRyYW5zZmVyLCB3aGljaCBhbHNvIGRldGVybWluZXMgd2hhdCBoYXBwZW5zIHRvIHRoZSBhc3NldHMgb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuUGFkZF9hdXRob3JpemVkX2FsaWFzCAEcYWxpYXNlcmUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcZXhwaXJlcy0DASxPcHRpb248dTY0PgAOLF0BQXV0aG9yaXplIGFub3RoZXIgYGFsaWFzZXJgIGxvY2F0aW9uIHRvIGFsaWFzIGludG8gdGhlIGxvY2FsIGBvcmlnaW5gIG1ha2luZyB0aGlzIGNhbGwuKQFUaGUgYGFsaWFzZXJgIGlzIG9ubHkgYXV0aG9yaXplZCB1bnRpbCB0aGUgcHJvdmlkZWQgYGV4cGlyeWAgYmxvY2sgbnVtYmVyLkkBVGhlIGNhbGwgY2FuIGFsc28gYmUgdXNlZCBmb3IgYSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYWxpYXMgaW4gb3JkZXIgdG8gdXBkYXRlIGl0c1hgZXhwaXJ5YCBibG9jayBudW1iZXIuAFEBVXN1YWxseSB1c2VmdWwgdG8gYWxsb3cgeW91ciBsb2NhbCBhY2NvdW50IHRvIGJlIGFsaWFzZWQgaW50byBmcm9tIGEgcmVtb3RlIGxvY2F0aW9u9GFsc28gdW5kZXIgeW91ciBjb250cm9sIChsaWtlIHlvdXIgYWNjb3VudCBvbiBhbm90aGVyIGNoYWluKS4AUQFXQVJOSU5HOiBtYWtlIHN1cmUgdGhlIGNhbGxlciBgb3JpZ2luYCAoeW91KSB0cnVzdHMgdGhlIGBhbGlhc2VyYCBsb2NhdGlvbiB0byBhY3QgaW5ZAXRoZWlyL3lvdXIgbmFtZS4gT25jZSBhdXRob3JpemVkIHVzaW5nIHRoaXMgY2FsbCwgdGhlIGBhbGlhc2VyYCBjYW4gZnJlZWx5IGltcGVyc29uYXRl1GBvcmlnaW5gIGluIFhDTSBwcm9ncmFtcyBleGVjdXRlZCBvbiB0aGUgbG9jYWwgY2hhaW4uXHJlbW92ZV9hdXRob3JpemVkX2FsaWFzBAEcYWxpYXNlcmUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AA8IXQFSZW1vdmUgYSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYGFsaWFzZXJgIGZyb20gdGhlIGxpc3Qgb2YgbG9jYXRpb25zIHRoYXQgY2FuIGFsaWFzIGludG+QdGhlIGxvY2FsIGBvcmlnaW5gIG1ha2luZyB0aGlzIGNhbGwudHJlbW92ZV9hbGxfYXV0aG9yaXplZF9hbGlhc2VzABAISQFSZW1vdmUgYWxsIHByZXZpb3VzbHkgYXV0aG9yaXplZCBgYWxpYXNlcmBzIHRoYXQgY2FuIGFsaWFzIGludG8gdGhlIGxvY2FsIGBvcmlnaW5gRG1ha2luZyB0aGlzIGNhbGwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLmUBCAx4Y21EVmVyc2lvbmVkTG9jYXRpb24AAQwIVjMEAGkBAUR2Mzo6TXVsdGlMb2NhdGlvbgADAAhWNAQAfQEBMHY0OjpMb2NhdGlvbgAEAAhWNQQA4AEwdjU6OkxvY2F0aW9uAAUAAGkBECxzdGFnaW5nX3hjbQh2MzRtdWx0aWxvY2F0aW9uNE11bHRpTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9ybQEBJEp1bmN0aW9ucwAAbQEQDHhjbQh2MyRqdW5jdGlvbnMkSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEAHEBASBKdW5jdGlvbgABAAhYMggAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24AAgAIWDMMAHEBASBKdW5jdGlvbgAAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24AAwAIWDQQAHEBASBKdW5jdGlvbgAAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24AAHEBASBKdW5jdGlvbgAEAAhYNRQAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24AAHEBASBKdW5jdGlvbgAAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24ABQAIWDYYAHEBASBKdW5jdGlvbgAAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24AAHEBASBKdW5jdGlvbgAAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24ABgAIWDccAHEBASBKdW5jdGlvbgAAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24AAHEBASBKdW5jdGlvbgAAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24AAHEBASBKdW5jdGlvbgAHAAhYOCAAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24AAHEBASBKdW5jdGlvbgAAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24AAHEBASBKdW5jdGlvbgAAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24ACAAAcQEQDHhjbQh2MyBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmt1AQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya3UBAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmt1AQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BAD4ARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWQBAQEYQm9keUlkAAEQcGFydAUBASBCb2R5UGFydAAIADxHbG9iYWxDb25zZW5zdXMEAHkBASROZXR3b3JrSWQACQAAdQEEGE9wdGlvbgQEVAF5AQEIEE5vbmUAAAAQU29tZQQAeQEAAAEAAHkBEAx4Y20IdjMganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAH0BECxzdGFnaW5nX3hjbQh2NCBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3KBAQEkSnVuY3Rpb25zAACBARAsc3RhZ2luZ194Y20IdjQkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBACFAQFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBACVAQFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBACZAQFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BACdAQFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BAChAQFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BAClAQFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BACpAQFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BACtAQFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAAIUBAAADAQAAAIkBAIkBECxzdGFnaW5nX3hjbQh2NCBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmuNAQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya40BAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmuNAQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BAD4ARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWQBAQEYQm9keUlkAAEQcGFydAUBASBCb2R5UGFydAAIADxHbG9iYWxDb25zZW5zdXMEAJEBASROZXR3b3JrSWQACQAAjQEEGE9wdGlvbgQEVAGRAQEIEE5vbmUAAAAQU29tZQQAkQEAAAEAAJEBECxzdGFnaW5nX3hjbQh2NCBqdW5jdGlvbiROZXR3b3JrSWQAASwkQnlHZW5lc2lzBAAIASBbdTg7IDMyXQAAABhCeUZvcmsIATBibG9ja19udW1iZXIoAQx1NjQAAShibG9ja19oYXNoCAEgW3U4OyAzMl0AAQAgUG9sa2Fkb3QAAgAYS3VzYW1hAAMAHFdlc3RlbmQABAAYUm9jb2NvAAUAGFdvY29jbwAGACBFdGhlcmV1bQQBIGNoYWluX2lktAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAAlQEAAAMCAAAAiQEAmQEAAAMDAAAAiQEAnQEAAAMEAAAAiQEAoQEAAAMFAAAAiQEApQEAAAMGAAAAiQEAqQEAAAMHAAAAiQEArQEAAAMIAAAAiQEAsQEIDHhjbTBWZXJzaW9uZWRYY20ELFJ1bnRpbWVDYWxsAAEMCFYzBAC1AQFQdjM6OlhjbTxSdW50aW1lQ2FsbD4AAwAIVjQEACkCAVB2NDo6WGNtPFJ1bnRpbWVDYWxsPgAEAAhWNQQAdQIBUHY1OjpYY208UnVudGltZUNhbGw+AAUAALUBDAx4Y20IdjMMWGNtBBBDYWxsAAAEALkBAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAC5AQAAAr0BAL0BDAx4Y20IdjMsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAwQEBLE11bHRpQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAwQEBLE11bHRpQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAMEBASxNdWx0aUFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2XhAQEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0KQEBGFdlaWdodAABHHF1ZXJpZXIJAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHPBAQEsTXVsdGlBc3NldHMAASxiZW5lZmljaWFyeWkBATRNdWx0aUxvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzwQEBLE11bHRpQXNzZXRzAAEQZGVzdGkBATRNdWx0aUxvY2F0aW9uAAEMeGNttQEBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZA0CAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdCkBARhXZWlnaHQAARBjYWxsEQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAbQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAFQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0cxkCAUBNdWx0aUFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnlpAQE0TXVsdGlMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzGQIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN0aQEBNE11bHRpTG9jYXRpb24AAQx4Y221AQEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZRkCAUBNdWx0aUFzc2V0RmlsdGVyAAEQd2FudMEBASxNdWx0aUFzc2V0cwABHG1heGltYWwxAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0cxkCAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVzZXJ2ZWkBATRNdWx0aUxvY2F0aW9uAAEMeGNttQEBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0cxkCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdGkBATRNdWx0aUxvY2F0aW9uAAEMeGNttQEBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm8VAgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHMZAgFATXVsdGlBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzyQEBKE11bHRpQXNzZXQAATB3ZWlnaHRfbGltaXQlAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEALUBASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEALUBASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzwQEBLE11bHRpQXNzZXRzAAEYdGlja2V0aQEBNE11bHRpTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0KQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BADBAQEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEAMEBASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAAkCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAOUBAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAAQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mbxUCAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEABUCAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAcQEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JreQEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9ubQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbbUBARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0yQEBKE11bHRpQXNzZXQAASB1bmxvY2tlcmkBATRNdWx0aUxvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXTJAQEoTXVsdGlBc3NldAABGHRhcmdldGkBATRNdWx0aUxvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXTJAQEoTXVsdGlBc3NldAABFG93bmVyaQEBNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0yQEBKE11bHRpQXNzZXQAARhsb2NrZXJpAQE0TXVsdGlMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhdzEBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBABpAQE0TXVsdGlMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXQlAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW4JAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AC8AAMEBEAx4Y20IdjMobXVsdGlhc3NldCxNdWx0aUFzc2V0cwAABADFAQE8VmVjPE11bHRpQXNzZXQ+AADFAQAAAskBAMkBEAx4Y20IdjMobXVsdGlhc3NldChNdWx0aUFzc2V0AAAIAQhpZM0BARxBc3NldElkAAEMZnVu0QEBLEZ1bmdpYmlsaXR5AADNARAMeGNtCHYzKG11bHRpYXNzZXQcQXNzZXRJZAABCCBDb25jcmV0ZQQAaQEBNE11bHRpTG9jYXRpb24AAAAgQWJzdHJhY3QEAAgBIFt1ODsgMzJdAAEAANEBEAx4Y20IdjMobXVsdGlhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQA+AEQdTEyOAAAACxOb25GdW5naWJsZQQA1QEBNEFzc2V0SW5zdGFuY2UAAQAA1QEQDHhjbQh2MyhtdWx0aWFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BAD4ARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEANkBARxbdTg7IDhdAAMAHEFycmF5MTYEAN0BASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAADZAQAAAwgAAAAMAN0BAAADEAAAAAwA4QEMDHhjbQh2MyBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAwQEBLE11bHRpQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQA5QEBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBADxAQGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAAECAThNYXliZUVycm9yQ29kZQAFAADlAQQYT3B0aW9uBARUAekBAQgQTm9uZQAAABBTb21lBADpAQAAAQAA6QEAAAQIOO0BAO0BEAx4Y20IdjMYdHJhaXRzFEVycm9yAAGgIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAEACgBDHU2NAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiAExVbmhhbmRsZWRYY21WZXJzaW9uACMASFdlaWdodExpbWl0UmVhY2hlZAQAKQEBGFdlaWdodAAkABxCYXJyaWVyACUATFdlaWdodE5vdENvbXB1dGFibGUAJgBERXhjZWVkc1N0YWNrTGltaXQAJwAA8QEMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAH1AQRTAAAEAP0BARhWZWM8VD4AAPUBDAx4Y20IdjMoUGFsbGV0SW5mbwAAGAEUaW5kZXhgAQx1MzIAARBuYW1l+QEBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWX5AQGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcmABDHUzMgABFG1pbm9yYAEMdTMyAAEUcGF0Y2hgAQx1MzIAAPkBDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAA/QEAAAL1AQABAgwMeGNtCHYzOE1heWJlRXJyb3JDb2RlAAEMHFN1Y2Nlc3MAAAAURXJyb3IEAAUCAYxCb3VuZGVkVmVjPHU4LCBNYXhEaXNwYXRjaEVycm9yTGVuPgABADhUcnVuY2F0ZWRFcnJvcgQABQIBjEJvdW5kZWRWZWM8dTgsIE1heERpc3BhdGNoRXJyb3JMZW4+AAIAAAUCDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAACQIEGE9wdGlvbgQEVAFpAQEIEE5vbmUAAAAQU29tZQQAaQEAAAEAAA0CDAx4Y20IdjMoT3JpZ2luS2luZAABEBhOYXRpdmUAAABAU292ZXJlaWduQWNjb3VudAABACRTdXBlcnVzZXIAAgAMWGNtAAMAABECDAx4Y204ZG91YmxlX2VuY29kZWQ0RG91YmxlRW5jb2RlZAQEVAAABAEcZW5jb2RlZBgBHFZlYzx1OD4AABUCDAx4Y20IdjNEUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9uaQEBNE11bHRpTG9jYXRpb24AASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0KQEBGFdlaWdodAAAGQIQDHhjbQh2MyhtdWx0aWFzc2V0QE11bHRpQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAMEBASxNdWx0aUFzc2V0cwAAABBXaWxkBAAdAgE4V2lsZE11bHRpQXNzZXQAAQAAHQIQDHhjbQh2MyhtdWx0aWFzc2V0OFdpbGRNdWx0aUFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkzQEBHEFzc2V0SWQAAQxmdW4hAgE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZM0BARxBc3NldElkAAEMZnVuIQIBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAACECEAx4Y20IdjMobXVsdGlhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAJQIMDHhjbQh2MyxXZWlnaHRMaW1pdAABCCRVbmxpbWl0ZWQAAAAcTGltaXRlZAQAKQEBGFdlaWdodAABAAApAgwsc3RhZ2luZ194Y20IdjQMWGNtBBBDYWxsAAAEAC0CAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAAtAgAAAjECADECDCxzdGFnaW5nX3hjbQh2NCxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BAA1AgEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQANQIBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAA1AgEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZU0CASBSZXNwb25zZQABKG1heF93ZWlnaHQpAQEYV2VpZ2h0AAEccXVlcmllcmECAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHM1AgEYQXNzZXRzAAEsYmVuZWZpY2lhcnl9AQEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHM1AgEYQXNzZXRzAAEQZGVzdH0BASBMb2NhdGlvbgABDHhjbSkCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmQNAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QpAQEYV2VpZ2h0AAEQY2FsbBECAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAIEBAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBABlAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzaQIBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnl9AQEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c2kCASxBc3NldEZpbHRlcgABEGRlc3R9AQEgTG9jYXRpb24AAQx4Y20pAgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZWkCASxBc3NldEZpbHRlcgABEHdhbnQ1AgEYQXNzZXRzAAEcbWF4aW1hbDEBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzaQIBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZX0BASBMb2NhdGlvbgABDHhjbSkCARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHNpAgEsQXNzZXRGaWx0ZXIAARBkZXN0fQEBIExvY2F0aW9uAAEMeGNtKQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm9lAgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHNpAgEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlcz0CARRBc3NldAABMHdlaWdodF9saW1pdCUCASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAKQIBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAKQIBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHM1AgEYQXNzZXRzAAEYdGlja2V0fQEBIExvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodCkBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQANQIBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQANQIBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAGECAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBADlAQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAAECAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm9lAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBABlAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAIkBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya5EBASROZXR3b3JrSWQAASxkZXN0aW5hdGlvboEBAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtKQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXQ9AgEUQXNzZXQAASB1bmxvY2tlcn0BASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0PQIBFEFzc2V0AAEYdGFyZ2V0fQEBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXQ9AgEUQXNzZXQAARRvd25lcn0BASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXQ9AgEUQXNzZXQAARhsb2NrZXJ9AQEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXcxAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAfQEBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdCUCASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbmECAUBPcHRpb248TG9jYXRpb24+AC8AADUCECxzdGFnaW5nX3hjbQh2NBRhc3NldBhBc3NldHMAAAQAOQIBKFZlYzxBc3NldD4AADkCAAACPQIAPQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0FEFzc2V0AAAIAQhpZEECARxBc3NldElkAAEMZnVuRQIBLEZ1bmdpYmlsaXR5AABBAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQcQXNzZXRJZAAABAB9AQEgTG9jYXRpb24AAEUCECxzdGFnaW5nX3hjbQh2NBRhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQA+AEQdTEyOAAAACxOb25GdW5naWJsZQQASQIBNEFzc2V0SW5zdGFuY2UAAQAASQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BAD4ARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEANkBARxbdTg7IDhdAAMAHEFycmF5MTYEAN0BASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAABNAgwsc3RhZ2luZ194Y20IdjQgUmVzcG9uc2UAARgQTnVsbAAAABhBc3NldHMEADUCARhBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BADlAQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAOAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EAFECAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQAAQIBOE1heWJlRXJyb3JDb2RlAAUAAFECDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBVQIEUwAABABdAgEYVmVjPFQ+AABVAgwsc3RhZ2luZ194Y20IdjQoUGFsbGV0SW5mbwAAGAEUaW5kZXhgAQx1MzIAARBuYW1lWQIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWVZAgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcmABDHUzMgABFG1pbm9yYAEMdTMyAAEUcGF0Y2hgAQx1MzIAAFkCDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAXQIAAAJVAgBhAgQYT3B0aW9uBARUAX0BAQgQTm9uZQAAABBTb21lBAB9AQAAAQAAZQIMLHN0YWdpbmdfeGNtCHY0RFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbn0BASBMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHQpAQEYV2VpZ2h0AABpAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQsQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEADUCARhBc3NldHMAAAAQV2lsZAQAbQIBJFdpbGRBc3NldAABAABtAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQkV2lsZEFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkQQIBHEFzc2V0SWQAAQxmdW5xAgE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZEECARxBc3NldElkAAEMZnVucQIBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAAHECECxzdGFnaW5nX3hjbQh2NBRhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAdQIMLHN0YWdpbmdfeGNtCHY1DFhjbQQQQ2FsbAAABAB5AgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAeQIAAAJ9AgB9Agwsc3RhZ2luZ194Y20IdjUsSW5zdHJ1Y3Rpb24EEENhbGwAAdA0V2l0aGRyYXdBc3NldAQAgQIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAIECARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAgQIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2WZAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0KQEBGFdlaWdodAABHHF1ZXJpZXK5AgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzgQIBGEFzc2V0cwABLGJlbmVmaWNpYXJ54AEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHOBAgEYQXNzZXRzAAEQZGVzdOABIExvY2F0aW9uAAEMeGNtdQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZA0CAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodL0CAThPcHRpb248V2VpZ2h0PgABEGNhbGwRAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADkAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBADBAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzxQIBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnngASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzxQIBLEFzc2V0RmlsdGVyAAEQZGVzdOABIExvY2F0aW9uAAEMeGNtdQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmXFAgEsQXNzZXRGaWx0ZXIAARB3YW50gQIBGEFzc2V0cwABHG1heGltYWwxAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c8UCASxBc3NldEZpbHRlcgABHHJlc2VydmXgASBMb2NhdGlvbgABDHhjbXUCARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHPFAgEsQXNzZXRGaWx0ZXIAARBkZXN04AEgTG9jYXRpb24AAQx4Y211AgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb8ECAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c8UCASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVziQIBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0JQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAB1AgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAB1AgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c4ECARhBc3NldHMAARh0aWNrZXTgASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQpAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAIECARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAIECARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAC5AgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAnQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBAABAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvwQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAwQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBADsASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya/QBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9u5AFASW50ZXJpb3JMb2NhdGlvbgABDHhjbXUCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0iQIBFEFzc2V0AAEgdW5sb2NrZXLgASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0iQIBFEFzc2V0AAEYdGFyZ2V04AEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldIkCARRBc3NldAABFG93bmVy4AEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0iQIBFEFzc2V0AAEYbG9ja2Vy4AEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXcxAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQA4AEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0JQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luuQIBQE9wdGlvbjxMb2NhdGlvbj4ALwAcUGF5RmVlcwQBFGFzc2V0iQIBFEFzc2V0ADAAQEluaXRpYXRlVHJhbnNmZXIUASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEscmVtb3RlX2ZlZXPRAgFsT3B0aW9uPEFzc2V0VHJhbnNmZXJGaWx0ZXI+AAE8cHJlc2VydmVfb3JpZ2luMQEBEGJvb2wAARhhc3NldHPZAgHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNtdQIBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbuECAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y211AgEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHPlAgGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAAIECECxzdGFnaW5nX3hjbQh2NRRhc3NldBhBc3NldHMAAAQAhQIBKFZlYzxBc3NldD4AAIUCAAACiQIAiQIQLHN0YWdpbmdfeGNtCHY1FGFzc2V0FEFzc2V0AAAIAQhpZI0CARxBc3NldElkAAEMZnVukQIBLEZ1bmdpYmlsaXR5AACNAhAsc3RhZ2luZ194Y20IdjUUYXNzZXQcQXNzZXRJZAAABADgASBMb2NhdGlvbgAAkQIQLHN0YWdpbmdfeGNtCHY1FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBAD4ARB1MTI4AAAALE5vbkZ1bmdpYmxlBACVAgE0QXNzZXRJbnN0YW5jZQABAACVAhAsc3RhZ2luZ194Y20IdjUUYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAPgBEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQA2QEBHFt1ODsgOF0AAwAcQXJyYXkxNgQA3QEBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAAJkCDCxzdGFnaW5nX3hjbQh2NSBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAgQIBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAJ0CAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQAqQIBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BAABAgE4TWF5YmVFcnJvckNvZGUABQAAnQIEGE9wdGlvbgQEVAGhAgEIEE5vbmUAAAAQU29tZQQAoQIAAAEAAKECAAAECDilAgClAhAMeGNtCHY1GHRyYWl0cxRFcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAoAQx1NjQAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgA0VG9vTWFueUFzc2V0cwAjAExVbmhhbmRsZWRYY21WZXJzaW9uACQASFdlaWdodExpbWl0UmVhY2hlZAQAKQEBGFdlaWdodAAlABxCYXJyaWVyACYATFdlaWdodE5vdENvbXB1dGFibGUAJwBERXhjZWVkc1N0YWNrTGltaXQAKAAAqQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGtAgRTAAAEALUCARhWZWM8VD4AAK0CDCxzdGFnaW5nX3hjbQh2NShQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWWxAgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZbECAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAAsQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAC1AgAAAq0CALkCBBhPcHRpb24EBFQB4AEIEE5vbmUAAAAQU29tZQQA4AAAAQAAvQIEGE9wdGlvbgQEVAEpAQEIEE5vbmUAAAAQU29tZQQAKQEAAAEAAMECDCxzdGFnaW5nX3hjbQh2NURRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHQpAQEYV2VpZ2h0AADFAhAsc3RhZ2luZ194Y20IdjUUYXNzZXQsQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAIECARhBc3NldHMAAAAQV2lsZAQAyQIBJFdpbGRBc3NldAABAADJAhAsc3RhZ2luZ194Y20IdjUUYXNzZXQkV2lsZEFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkjQIBHEFzc2V0SWQAAQxmdW7NAgE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZI0CARxBc3NldElkAAEMZnVuzQIBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAAM0CECxzdGFnaW5nX3hjbQh2NRRhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAA0QIEGE9wdGlvbgQEVAHVAgEIEE5vbmUAAAAQU29tZQQA1QIAAAEAANUCECxzdGFnaW5nX3hjbQh2NRRhc3NldExBc3NldFRyYW5zZmVyRmlsdGVyAAEMIFRlbGVwb3J0BADFAgEsQXNzZXRGaWx0ZXIAAAA4UmVzZXJ2ZURlcG9zaXQEAMUCASxBc3NldEZpbHRlcgABADxSZXNlcnZlV2l0aGRyYXcEAMUCASxBc3NldEZpbHRlcgACAADZAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAdUCBFMAAAQA3QIBGFZlYzxUPgAA3QIAAALVAgDhAgQYT3B0aW9uBARUAeQBCBBOb25lAAAAEFNvbWUEAOQAAAEAAOUCDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB6QIEUwAABADtAgEYVmVjPFQ+AADpAgwsc3RhZ2luZ194Y20IdjUQSGludAABBDBBc3NldENsYWltZXIEASBsb2NhdGlvbuABIExvY2F0aW9uAAAAAO0CAAAC6QIA8QIIDHhjbTxWZXJzaW9uZWRBc3NldHMAAQwIVjMEAMEBATx2Mzo6TXVsdGlBc3NldHMAAwAIVjQEADUCASh2NDo6QXNzZXRzAAQACFY1BACBAgEodjU6OkFzc2V0cwAFAAD1AggMeGNtMFZlcnNpb25lZFhjbQQsUnVudGltZUNhbGwAAQwIVjMEAPkCAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQACQMBUHY0OjpYY208UnVudGltZUNhbGw+AAQACFY1BAAVAwFQdjU6OlhjbTxSdW50aW1lQ2FsbD4ABQAA+QIMDHhjbQh2MwxYY20EEENhbGwAAAQA/QIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAP0CAAACAQMAAQMMDHhjbQh2MyxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BADBAQEsTXVsdGlBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBADBAQEsTXVsdGlBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAwQEBLE11bHRpQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZeEBASBSZXNwb25zZQABKG1heF93ZWlnaHQpAQEYV2VpZ2h0AAEccXVlcmllcgkCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c8EBASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ5aQEBNE11bHRpTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHPBAQEsTXVsdGlBc3NldHMAARBkZXN0aQEBNE11bHRpTG9jYXRpb24AAQx4Y221AQEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kDQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0KQEBGFdlaWdodAABEGNhbGwFAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBABtAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAAVAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzGQIBQE11bHRpQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeWkBATRNdWx0aUxvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHMZAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3RpAQE0TXVsdGlMb2NhdGlvbgABDHhjbbUBARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlGQIBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50wQEBLE11bHRpQXNzZXRzAAEcbWF4aW1hbDEBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzGQIBQE11bHRpQXNzZXRGaWx0ZXIAARxyZXNlcnZlaQEBNE11bHRpTG9jYXRpb24AAQx4Y221AQEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzGQIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN0aQEBNE11bHRpTG9jYXRpb24AAQx4Y221AQEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mbxUCAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0cxkCAUBNdWx0aUFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXPJAQEoTXVsdGlBc3NldAABMHdlaWdodF9saW1pdCUCASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQA+QIBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQA+QIBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHPBAQEsTXVsdGlBc3NldHMAARh0aWNrZXRpAQE0TXVsdGlMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQpAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAMEBASxNdWx0aUFzc2V0cwAcACxFeHBlY3RBc3NldAQAwQEBLE11bHRpQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQACQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQA5QEBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBAABAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvFQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAFQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBABxAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmt5AQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb25tAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAEMeGNttQEBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXTJAQEoTXVsdGlBc3NldAABIHVubG9ja2VyaQEBNE11bHRpTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldMkBAShNdWx0aUFzc2V0AAEYdGFyZ2V0aQEBNE11bHRpTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldMkBAShNdWx0aUFzc2V0AAEUb3duZXJpAQE0TXVsdGlMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXTJAQEoTXVsdGlBc3NldAABGGxvY2tlcmkBATRNdWx0aUxvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3MQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAGkBATRNdWx0aUxvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdCUCASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbgkCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4ALwAABQMMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAACQMMLHN0YWdpbmdfeGNtCHY0DFhjbQQQQ2FsbAAABAANAwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAADQMAAAIRAwARAwwsc3RhZ2luZ194Y20IdjQsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQANQIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEADUCARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQANQIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2VNAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0KQEBGFdlaWdodAABHHF1ZXJpZXJhAgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzNQIBGEFzc2V0cwABLGJlbmVmaWNpYXJ5fQEBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzNQIBGEFzc2V0cwABEGRlc3R9AQEgTG9jYXRpb24AAQx4Y20pAgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kDQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0KQEBGFdlaWdodAABEGNhbGwFAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBACBAQFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAZQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c2kCASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5fQEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHNpAgEsQXNzZXRGaWx0ZXIAARBkZXN0fQEBIExvY2F0aW9uAAEMeGNtKQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVpAgEsQXNzZXRGaWx0ZXIAARB3YW50NQIBGEFzc2V0cwABHG1heGltYWwxAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c2kCASxBc3NldEZpbHRlcgABHHJlc2VydmV9AQEgTG9jYXRpb24AAQx4Y20pAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzaQIBLEFzc2V0RmlsdGVyAAEQZGVzdH0BASBMb2NhdGlvbgABDHhjbSkCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvZQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzaQIBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXM9AgEUQXNzZXQAATB3ZWlnaHRfbGltaXQlAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAAkDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAAkDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzNQIBGEFzc2V0cwABGHRpY2tldH0BASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQpAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEADUCARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEADUCARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABhAgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQA5QEBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBAABAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvZQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAZQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBACJAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmuRAQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb26BAQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbSkCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0PQIBFEFzc2V0AAEgdW5sb2NrZXJ9AQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldD0CARRBc3NldAABGHRhcmdldH0BASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0PQIBFEFzc2V0AAEUb3duZXJ9AQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0PQIBFEFzc2V0AAEYbG9ja2VyfQEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3MQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAH0BASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXQlAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW5hAgFAT3B0aW9uPExvY2F0aW9uPgAvAAAVAwwsc3RhZ2luZ194Y20IdjUMWGNtBBBDYWxsAAAEABkDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAAZAwAAAh0DAB0DDCxzdGFnaW5nX3hjbQh2NSxJbnN0cnVjdGlvbgQQQ2FsbAAB0DRXaXRoZHJhd0Fzc2V0BACBAgEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAgQIBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BACBAgEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZZkCASBSZXNwb25zZQABKG1heF93ZWlnaHQpAQEYV2VpZ2h0AAEccXVlcmllcrkCAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHOBAgEYQXNzZXRzAAEsYmVuZWZpY2lhcnngASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c4ECARhBc3NldHMAARBkZXN04AEgTG9jYXRpb24AAQx4Y211AgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kDQIBKE9yaWdpbktpbmQAAUxmYWxsYmFja19tYXhfd2VpZ2h0vQIBOE9wdGlvbjxXZWlnaHQ+AAEQY2FsbAUDAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAOQBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAMECAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHPFAgEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeeABIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHPFAgEsQXNzZXRGaWx0ZXIAARBkZXN04AEgTG9jYXRpb24AAQx4Y211AgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZcUCASxBc3NldEZpbHRlcgABEHdhbnSBAgEYQXNzZXRzAAEcbWF4aW1hbDEBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzxQIBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZeABIExvY2F0aW9uAAEMeGNtdQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c8UCASxBc3NldEZpbHRlcgABEGRlc3TgASBMb2NhdGlvbgABDHhjbXUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvwQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzxQIBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXOJAgEUQXNzZXQAATB3ZWlnaHRfbGltaXQlAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEABUDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEABUDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzgQIBGEFzc2V0cwABGHRpY2tldOABIExvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodCkBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAgQIBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQAgQIBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EALkCAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBACdAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAAECAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm/BAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBADBAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAOwBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr9AEkTmV0d29ya0lkAAEsZGVzdGluYXRpb27kAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtdQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXSJAgEUQXNzZXQAASB1bmxvY2tlcuABIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXSJAgEUQXNzZXQAARh0YXJnZXTgASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0iQIBFEFzc2V0AAEUb3duZXLgASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXSJAgEUQXNzZXQAARhsb2NrZXLgASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhdzEBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBADgASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXQlAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW65AgFAT3B0aW9uPExvY2F0aW9uPgAvABxQYXlGZWVzBAEUYXNzZXSJAgEUQXNzZXQAMABASW5pdGlhdGVUcmFuc2ZlchQBLGRlc3RpbmF0aW9u4AEgTG9jYXRpb24AASxyZW1vdGVfZmVlc9ECAWxPcHRpb248QXNzZXRUcmFuc2ZlckZpbHRlcj4AATxwcmVzZXJ2ZV9vcmlnaW4xAQEQYm9vbAABGGFzc2V0c9kCAeBCb3VuZGVkVmVjPEFzc2V0VHJhbnNmZXJGaWx0ZXIsIE1heEFzc2V0VHJhbnNmZXJGaWx0ZXJzPgABKHJlbW90ZV94Y211AgEcWGNtPCgpPgAxAERFeGVjdXRlV2l0aE9yaWdpbggBRGRlc2NlbmRhbnRfb3JpZ2lu4QIBYE9wdGlvbjxJbnRlcmlvckxvY2F0aW9uPgABDHhjbRUDASRYY208Q2FsbD4AMgAgU2V0SGludHMEARRoaW50c+UCAYRCb3VuZGVkVmVjPEhpbnQsIEhpbnROdW1WYXJpYW50cz4AMwAAIQMEGE9wdGlvbgQEVAE4AQgQTm9uZQAAABBTb21lBAA4AAABAAAlAxBQc3RhZ2luZ194Y21fZXhlY3V0b3IYdHJhaXRzOGFzc2V0X3RyYW5zZmVyMFRyYW5zZmVyVHlwZQABECBUZWxlcG9ydAAAADBMb2NhbFJlc2VydmUAAQBIRGVzdGluYXRpb25SZXNlcnZlAAIANFJlbW90ZVJlc2VydmUEAGUBAURWZXJzaW9uZWRMb2NhdGlvbgADAAApAwgMeGNtQFZlcnNpb25lZEFzc2V0SWQAAQwIVjMEAM0BASx2Mzo6QXNzZXRJZAADAAhWNAQAQQIBLHY0OjpBc3NldElkAAQACFY1BACNAgEsdjU6OkFzc2V0SWQABQAALQMEGE9wdGlvbgQEVAEoAQgQTm9uZQAAABBTb21lBAAoAAABAAAxAwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBBDYWxsBARUAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjUDDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQQQ2FsbAQEVAABCCRyZWFwX3BhZ2UIAThtZXNzYWdlX29yaWdpbjkDAUhNZXNzYWdlT3JpZ2luT2Y8VD4AAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AAAEPQFSZW1vdmUgYSBwYWdlIHdoaWNoIGhhcyBubyBtb3JlIG1lc3NhZ2VzIHJlbWFpbmluZyB0byBiZSBwcm9jZXNzZWQgb3IgaXMgc3RhbGUuSGV4ZWN1dGVfb3ZlcndlaWdodBABOG1lc3NhZ2Vfb3JpZ2luOQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgABEHBhZ2U4ASRQYWdlSW5kZXgAARRpbmRleDgBHFQ6OlNpemUAATB3ZWlnaHRfbGltaXQpAQEYV2VpZ2h0AAE0eEV4ZWN1dGUgYW4gb3ZlcndlaWdodCBtZXNzYWdlLgBNAVRlbXBvcmFyeSBwcm9jZXNzaW5nIGVycm9ycyB3aWxsIGJlIHByb3BhZ2F0ZWQgd2hlcmVhcyBwZXJtYW5lbnQgZXJyb3JzIGFyZSB0cmVhdGVkVGFzIHN1Y2Nlc3MgY29uZGl0aW9uLgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC41AS0gYG1lc3NhZ2Vfb3JpZ2luYDogVGhlIG9yaWdpbiBmcm9tIHdoaWNoIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkIGFycml2ZWQuPQEtIGBwYWdlYDogVGhlIHBhZ2UgaW4gdGhlIHF1ZXVlIGluIHdoaWNoIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkIGlzIHNpdHRpbmcuCQEtIGBpbmRleGA6IFRoZSBpbmRleCBpbnRvIHRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZC5ZAS0gYHdlaWdodF9saW1pdGA6IFRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgYWxsb3dlZCB0byBiZSBjb25zdW1lZCBpbiB0aGUgZXhlY3V0aW9uRCAgb2YgdGhlIG1lc3NhZ2UuAPRCZW5jaG1hcmsgY29tcGxleGl0eSBjb25zaWRlcmF0aW9uczogTyhpbmRleCArIHdlaWdodF9saW1pdCkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjkDCFxjdW11bHVzX3ByaW1pdGl2ZXNfY29yZVhBZ2dyZWdhdGVNZXNzYWdlT3JpZ2luAAEMEEhlcmUAAAAYUGFyZW50AAEAHFNpYmxpbmcEAJwBGFBhcmFJZAACAAA9AwwscGFsbGV0X3N1ZG8YcGFsbGV0EENhbGwEBFQAARQQc3VkbwQBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAENQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgUm9vdGAgb3JpZ2luLlRzdWRvX3VuY2hlY2tlZF93ZWlnaHQIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodCkBARhXZWlnaHQAARQ1AUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBSb290YCBvcmlnaW4uLQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGWwU3VkbyB1c2VyIHRvIHNwZWNpZnkgdGhlIHdlaWdodCBvZiB0aGUgY2FsbC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLhxzZXRfa2V5BAEMbmV3AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAghdAUF1dGhlbnRpY2F0ZXMgdGhlIGN1cnJlbnQgc3VkbyBrZXkgYW5kIHNldHMgdGhlIGdpdmVuIEFjY291bnRJZCAoYG5ld2ApIGFzIHRoZSBuZXcgc3VkbxBrZXkuHHN1ZG9fYXMIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAMQTQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgU2lnbmVkYCBvcmlnaW4gZnJvbUBhIGdpdmVuIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ocmVtb3ZlX2tleQAEDIRQZXJtYW5lbnRseSByZW1vdmVzIHRoZSBzdWRvIGtleS4AbCoqVGhpcyBjYW5ub3QgYmUgdW4tZG9uZS4qKgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5BAwgoc3BfcnVudGltZThNdWx0aVNpZ25hdHVyZQABEBxFZDI1NTE5BABFAwFIZWQyNTUxOTo6U2lnbmF0dXJlAAAAHFNyMjU1MTkEAEUDAUhzcjI1NTE5OjpTaWduYXR1cmUAAQAURWNkc2EEAEkDAUBlY2RzYTo6U2lnbmF0dXJlAAIADEV0aAQASQMBWGVjZHNhOjpLZWNjYWtTaWduYXR1cmUAAwAARQMAAANAAAAADABJAwAAA0EAAAAMAE0DEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczhhdXRob3JpemVfY2FsbDRBdXRob3JpemVDYWxsBARUAAAAAFEDEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc1RjaGVja19ub25femVyb19zZW5kZXJIQ2hlY2tOb25aZXJvU2VuZGVyBARUAAAAAFUDEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc0hjaGVja19zcGVjX3ZlcnNpb25AQ2hlY2tTcGVjVmVyc2lvbgQEVAAAAABZAxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNAY2hlY2tfdHhfdmVyc2lvbjhDaGVja1R4VmVyc2lvbgQEVAAAAABdAxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM0Y2hlY2tfZ2VuZXNpczBDaGVja0dlbmVzaXMEBFQAAAAAYQMQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zPGNoZWNrX21vcnRhbGl0eThDaGVja01vcnRhbGl0eQQEVAAABABlAwEMRXJhAABlAxAoc3BfcnVudGltZRxnZW5lcmljDGVyYQxFcmEAAQEEIEltbW9ydGFsAAAAHE1vcnRhbDEEAAwAAAEAHE1vcnRhbDIEAAwAAAIAHE1vcnRhbDMEAAwAAAMAHE1vcnRhbDQEAAwAAAQAHE1vcnRhbDUEAAwAAAUAHE1vcnRhbDYEAAwAAAYAHE1vcnRhbDcEAAwAAAcAHE1vcnRhbDgEAAwAAAgAHE1vcnRhbDkEAAwAAAkAIE1vcnRhbDEwBAAMAAAKACBNb3J0YWwxMQQADAAACwAgTW9ydGFsMTIEAAwAAAwAIE1vcnRhbDEzBAAMAAANACBNb3J0YWwxNAQADAAADgAgTW9ydGFsMTUEAAwAAA8AIE1vcnRhbDE2BAAMAAAQACBNb3J0YWwxNwQADAAAEQAgTW9ydGFsMTgEAAwAABIAIE1vcnRhbDE5BAAMAAATACBNb3J0YWwyMAQADAAAFAAgTW9ydGFsMjEEAAwAABUAIE1vcnRhbDIyBAAMAAAWACBNb3J0YWwyMwQADAAAFwAgTW9ydGFsMjQEAAwAABgAIE1vcnRhbDI1BAAMAAAZACBNb3J0YWwyNgQADAAAGgAgTW9ydGFsMjcEAAwAABsAIE1vcnRhbDI4BAAMAAAcACBNb3J0YWwyOQQADAAAHQAgTW9ydGFsMzAEAAwAAB4AIE1vcnRhbDMxBAAMAAAfACBNb3J0YWwzMgQADAAAIAAgTW9ydGFsMzMEAAwAACEAIE1vcnRhbDM0BAAMAAAiACBNb3J0YWwzNQQADAAAIwAgTW9ydGFsMzYEAAwAACQAIE1vcnRhbDM3BAAMAAAlACBNb3J0YWwzOAQADAAAJgAgTW9ydGFsMzkEAAwAACcAIE1vcnRhbDQwBAAMAAAoACBNb3J0YWw0MQQADAAAKQAgTW9ydGFsNDIEAAwAACoAIE1vcnRhbDQzBAAMAAArACBNb3J0YWw0NAQADAAALAAgTW9ydGFsNDUEAAwAAC0AIE1vcnRhbDQ2BAAMAAAuACBNb3J0YWw0NwQADAAALwAgTW9ydGFsNDgEAAwAADAAIE1vcnRhbDQ5BAAMAAAxACBNb3J0YWw1MAQADAAAMgAgTW9ydGFsNTEEAAwAADMAIE1vcnRhbDUyBAAMAAA0ACBNb3J0YWw1MwQADAAANQAgTW9ydGFsNTQEAAwAADYAIE1vcnRhbDU1BAAMAAA3ACBNb3J0YWw1NgQADAAAOAAgTW9ydGFsNTcEAAwAADkAIE1vcnRhbDU4BAAMAAA6ACBNb3J0YWw1OQQADAAAOwAgTW9ydGFsNjAEAAwAADwAIE1vcnRhbDYxBAAMAAA9ACBNb3J0YWw2MgQADAAAPgAgTW9ydGFsNjMEAAwAAD8AIE1vcnRhbDY0BAAMAABAACBNb3J0YWw2NQQADAAAQQAgTW9ydGFsNjYEAAwAAEIAIE1vcnRhbDY3BAAMAABDACBNb3J0YWw2OAQADAAARAAgTW9ydGFsNjkEAAwAAEUAIE1vcnRhbDcwBAAMAABGACBNb3J0YWw3MQQADAAARwAgTW9ydGFsNzIEAAwAAEgAIE1vcnRhbDczBAAMAABJACBNb3J0YWw3NAQADAAASgAgTW9ydGFsNzUEAAwAAEsAIE1vcnRhbDc2BAAMAABMACBNb3J0YWw3NwQADAAATQAgTW9ydGFsNzgEAAwAAE4AIE1vcnRhbDc5BAAMAABPACBNb3J0YWw4MAQADAAAUAAgTW9ydGFsODEEAAwAAFEAIE1vcnRhbDgyBAAMAABSACBNb3J0YWw4MwQADAAAUwAgTW9ydGFsODQEAAwAAFQAIE1vcnRhbDg1BAAMAABVACBNb3J0YWw4NgQADAAAVgAgTW9ydGFsODcEAAwAAFcAIE1vcnRhbDg4BAAMAABYACBNb3J0YWw4OQQADAAAWQAgTW9ydGFsOTAEAAwAAFoAIE1vcnRhbDkxBAAMAABbACBNb3J0YWw5MgQADAAAXAAgTW9ydGFsOTMEAAwAAF0AIE1vcnRhbDk0BAAMAABeACBNb3J0YWw5NQQADAAAXwAgTW9ydGFsOTYEAAwAAGAAIE1vcnRhbDk3BAAMAABhACBNb3J0YWw5OAQADAAAYgAgTW9ydGFsOTkEAAwAAGMAJE1vcnRhbDEwMAQADAAAZAAkTW9ydGFsMTAxBAAMAABlACRNb3J0YWwxMDIEAAwAAGYAJE1vcnRhbDEwMwQADAAAZwAkTW9ydGFsMTA0BAAMAABoACRNb3J0YWwxMDUEAAwAAGkAJE1vcnRhbDEwNgQADAAAagAkTW9ydGFsMTA3BAAMAABrACRNb3J0YWwxMDgEAAwAAGwAJE1vcnRhbDEwOQQADAAAbQAkTW9ydGFsMTEwBAAMAABuACRNb3J0YWwxMTEEAAwAAG8AJE1vcnRhbDExMgQADAAAcAAkTW9ydGFsMTEzBAAMAABxACRNb3J0YWwxMTQEAAwAAHIAJE1vcnRhbDExNQQADAAAcwAkTW9ydGFsMTE2BAAMAAB0ACRNb3J0YWwxMTcEAAwAAHUAJE1vcnRhbDExOAQADAAAdgAkTW9ydGFsMTE5BAAMAAB3ACRNb3J0YWwxMjAEAAwAAHgAJE1vcnRhbDEyMQQADAAAeQAkTW9ydGFsMTIyBAAMAAB6ACRNb3J0YWwxMjMEAAwAAHsAJE1vcnRhbDEyNAQADAAAfAAkTW9ydGFsMTI1BAAMAAB9ACRNb3J0YWwxMjYEAAwAAH4AJE1vcnRhbDEyNwQADAAAfwAkTW9ydGFsMTI4BAAMAACAACRNb3J0YWwxMjkEAAwAAIEAJE1vcnRhbDEzMAQADAAAggAkTW9ydGFsMTMxBAAMAACDACRNb3J0YWwxMzIEAAwAAIQAJE1vcnRhbDEzMwQADAAAhQAkTW9ydGFsMTM0BAAMAACGACRNb3J0YWwxMzUEAAwAAIcAJE1vcnRhbDEzNgQADAAAiAAkTW9ydGFsMTM3BAAMAACJACRNb3J0YWwxMzgEAAwAAIoAJE1vcnRhbDEzOQQADAAAiwAkTW9ydGFsMTQwBAAMAACMACRNb3J0YWwxNDEEAAwAAI0AJE1vcnRhbDE0MgQADAAAjgAkTW9ydGFsMTQzBAAMAACPACRNb3J0YWwxNDQEAAwAAJAAJE1vcnRhbDE0NQQADAAAkQAkTW9ydGFsMTQ2BAAMAACSACRNb3J0YWwxNDcEAAwAAJMAJE1vcnRhbDE0OAQADAAAlAAkTW9ydGFsMTQ5BAAMAACVACRNb3J0YWwxNTAEAAwAAJYAJE1vcnRhbDE1MQQADAAAlwAkTW9ydGFsMTUyBAAMAACYACRNb3J0YWwxNTMEAAwAAJkAJE1vcnRhbDE1NAQADAAAmgAkTW9ydGFsMTU1BAAMAACbACRNb3J0YWwxNTYEAAwAAJwAJE1vcnRhbDE1NwQADAAAnQAkTW9ydGFsMTU4BAAMAACeACRNb3J0YWwxNTkEAAwAAJ8AJE1vcnRhbDE2MAQADAAAoAAkTW9ydGFsMTYxBAAMAAChACRNb3J0YWwxNjIEAAwAAKIAJE1vcnRhbDE2MwQADAAAowAkTW9ydGFsMTY0BAAMAACkACRNb3J0YWwxNjUEAAwAAKUAJE1vcnRhbDE2NgQADAAApgAkTW9ydGFsMTY3BAAMAACnACRNb3J0YWwxNjgEAAwAAKgAJE1vcnRhbDE2OQQADAAAqQAkTW9ydGFsMTcwBAAMAACqACRNb3J0YWwxNzEEAAwAAKsAJE1vcnRhbDE3MgQADAAArAAkTW9ydGFsMTczBAAMAACtACRNb3J0YWwxNzQEAAwAAK4AJE1vcnRhbDE3NQQADAAArwAkTW9ydGFsMTc2BAAMAACwACRNb3J0YWwxNzcEAAwAALEAJE1vcnRhbDE3OAQADAAAsgAkTW9ydGFsMTc5BAAMAACzACRNb3J0YWwxODAEAAwAALQAJE1vcnRhbDE4MQQADAAAtQAkTW9ydGFsMTgyBAAMAAC2ACRNb3J0YWwxODMEAAwAALcAJE1vcnRhbDE4NAQADAAAuAAkTW9ydGFsMTg1BAAMAAC5ACRNb3J0YWwxODYEAAwAALoAJE1vcnRhbDE4NwQADAAAuwAkTW9ydGFsMTg4BAAMAAC8ACRNb3J0YWwxODkEAAwAAL0AJE1vcnRhbDE5MAQADAAAvgAkTW9ydGFsMTkxBAAMAAC/ACRNb3J0YWwxOTIEAAwAAMAAJE1vcnRhbDE5MwQADAAAwQAkTW9ydGFsMTk0BAAMAADCACRNb3J0YWwxOTUEAAwAAMMAJE1vcnRhbDE5NgQADAAAxAAkTW9ydGFsMTk3BAAMAADFACRNb3J0YWwxOTgEAAwAAMYAJE1vcnRhbDE5OQQADAAAxwAkTW9ydGFsMjAwBAAMAADIACRNb3J0YWwyMDEEAAwAAMkAJE1vcnRhbDIwMgQADAAAygAkTW9ydGFsMjAzBAAMAADLACRNb3J0YWwyMDQEAAwAAMwAJE1vcnRhbDIwNQQADAAAzQAkTW9ydGFsMjA2BAAMAADOACRNb3J0YWwyMDcEAAwAAM8AJE1vcnRhbDIwOAQADAAA0AAkTW9ydGFsMjA5BAAMAADRACRNb3J0YWwyMTAEAAwAANIAJE1vcnRhbDIxMQQADAAA0wAkTW9ydGFsMjEyBAAMAADUACRNb3J0YWwyMTMEAAwAANUAJE1vcnRhbDIxNAQADAAA1gAkTW9ydGFsMjE1BAAMAADXACRNb3J0YWwyMTYEAAwAANgAJE1vcnRhbDIxNwQADAAA2QAkTW9ydGFsMjE4BAAMAADaACRNb3J0YWwyMTkEAAwAANsAJE1vcnRhbDIyMAQADAAA3AAkTW9ydGFsMjIxBAAMAADdACRNb3J0YWwyMjIEAAwAAN4AJE1vcnRhbDIyMwQADAAA3wAkTW9ydGFsMjI0BAAMAADgACRNb3J0YWwyMjUEAAwAAOEAJE1vcnRhbDIyNgQADAAA4gAkTW9ydGFsMjI3BAAMAADjACRNb3J0YWwyMjgEAAwAAOQAJE1vcnRhbDIyOQQADAAA5QAkTW9ydGFsMjMwBAAMAADmACRNb3J0YWwyMzEEAAwAAOcAJE1vcnRhbDIzMgQADAAA6AAkTW9ydGFsMjMzBAAMAADpACRNb3J0YWwyMzQEAAwAAOoAJE1vcnRhbDIzNQQADAAA6wAkTW9ydGFsMjM2BAAMAADsACRNb3J0YWwyMzcEAAwAAO0AJE1vcnRhbDIzOAQADAAA7gAkTW9ydGFsMjM5BAAMAADvACRNb3J0YWwyNDAEAAwAAPAAJE1vcnRhbDI0MQQADAAA8QAkTW9ydGFsMjQyBAAMAADyACRNb3J0YWwyNDMEAAwAAPMAJE1vcnRhbDI0NAQADAAA9AAkTW9ydGFsMjQ1BAAMAAD1ACRNb3J0YWwyNDYEAAwAAPYAJE1vcnRhbDI0NwQADAAA9wAkTW9ydGFsMjQ4BAAMAAD4ACRNb3J0YWwyNDkEAAwAAPkAJE1vcnRhbDI1MAQADAAA+gAkTW9ydGFsMjUxBAAMAAD7ACRNb3J0YWwyNTIEAAwAAPwAJE1vcnRhbDI1MwQADAAA/QAkTW9ydGFsMjU0BAAMAAD+ACRNb3J0YWwyNTUEAAwAAP8AAGkDEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9ucyxjaGVja19ub25jZShDaGVja05vbmNlBARUAAAEAGABIFQ6Ok5vbmNlAABtAxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMwY2hlY2tfd2VpZ2h0LENoZWNrV2VpZ2h0BARUAAAAAHEDCGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudGBDaGFyZ2VUcmFuc2FjdGlvblBheW1lbnQEBFQAAAQA+AEwQmFsYW5jZU9mPFQ+AAB1AwxocGFsbGV0X3RyYW5zYWN0aW9uX3N0b3JhZ2UkZXh0ZW5zaW9uUFZhbGlkYXRlU3RvcmFnZUNhbGxzCARUAARJAAAAAHkDCHRmcmFtZV9tZXRhZGF0YV9oYXNoX2V4dGVuc2lvbkRDaGVja01ldGFkYXRhSGFzaAQEVAAABAEQbW9kZX0DARBNb2RlAAB9Awh0ZnJhbWVfbWV0YWRhdGFfaGFzaF9leHRlbnNpb24QTW9kZQABCCBEaXNhYmxlZAAAABxFbmFibGVkAAEAAIEDBBhPcHRpb24EBFQBCAEIEE5vbmUAAAAQU29tZQQACAAAAQAAhQMIMGZyYW1lX3N5c3RlbSxBY2NvdW50SW5mbwgUTm9uY2UBOCxBY2NvdW50RGF0YQGJAwAUARRub25jZTgBFE5vbmNlAAEkY29uc3VtZXJzOAEgUmVmQ291bnQAASRwcm92aWRlcnM4ASBSZWZDb3VudAABLHN1ZmZpY2llbnRzOAEgUmVmQ291bnQAARBkYXRhiQMBLEFjY291bnREYXRhAACJAww8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLEFjY291bnREYXRhBBxCYWxhbmNlAfwAEAEQZnJlZfwBHEJhbGFuY2UAASByZXNlcnZlZPwBHEJhbGFuY2UAARhmcm96ZW78ARxCYWxhbmNlAAEUZmxhZ3ONAwEoRXh0cmFGbGFncwAAjQMMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyhFeHRyYUZsYWdzAAAEAPwBEHUxMjgAAJEDDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBKQEADAEYbm9ybWFsKQEBBFQAASxvcGVyYXRpb25hbCkBAQRUAAEkbWFuZGF0b3J5KQEBBFQAAJUDAAACmQMAmQMIMGZyYW1lX3N5c3RlbSxFdmVudFJlY29yZAgERQGdAwRUATwADAEUcGhhc2UxBAEUUGhhc2UAARRldmVudJ0DAQRFAAEYdG9waWNzNQQBGFZlYzxUPgAAnQMIYGJ1bGxldGluX3dlc3RlbmRfcnVudGltZTBSdW50aW1lRXZlbnQAATgYU3lzdGVtBAChAwFwZnJhbWVfc3lzdGVtOjpFdmVudDxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAMkDAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFdmVudDxSdW50aW1lPgABABxVdGlsaXR5BADNAwFUcGFsbGV0X3V0aWxpdHk6OkV2ZW50AAYAIEJhbGFuY2VzBADVAwF8cGFsbGV0X2JhbGFuY2VzOjpFdmVudDxSdW50aW1lPgAKAEhUcmFuc2FjdGlvblBheW1lbnQEAPEDAahwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudDo6RXZlbnQ8UnVudGltZT4ACwBIU2tpcEZlZWxlc3NQYXltZW50BAD1AwGscGFsbGV0X3NraXBfZmVlbGVzc19wYXltZW50OjpFdmVudDxSdW50aW1lPgAMAEhUcmFuc2FjdGlvblN0b3JhZ2UEAPkDAahwYWxsZXRfdHJhbnNhY3Rpb25fc3RvcmFnZTo6RXZlbnQ8UnVudGltZT4AKABEQ29sbGF0b3JTZWxlY3Rpb24EAAEEAaRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uOjpFdmVudDxSdW50aW1lPgAVABxTZXNzaW9uBAAFBAF4cGFsbGV0X3Nlc3Npb246OkV2ZW50PFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQACQQBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkV2ZW50PFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBAANBAFocGFsbGV0X3hjbTo6RXZlbnQ8UnVudGltZT4AHwAoQ3VtdWx1c1hjbQQAHQQBiGN1bXVsdXNfcGFsbGV0X3hjbTo6RXZlbnQ8UnVudGltZT4AIAAwTWVzc2FnZVF1ZXVlBAAhBAGQcGFsbGV0X21lc3NhZ2VfcXVldWU6OkV2ZW50PFJ1bnRpbWU+ACIAEFN1ZG8EACkEAWxwYWxsZXRfc3Vkbzo6RXZlbnQ8UnVudGltZT4AZAAAoQMMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXZlbnQEBFQAASBARXh0cmluc2ljU3VjY2VzcwQBNGRpc3BhdGNoX2luZm+lAwFERGlzcGF0Y2hFdmVudEluZm8AAASQQW4gZXh0cmluc2ljIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuPEV4dHJpbnNpY0ZhaWxlZAgBOGRpc3BhdGNoX2Vycm9ysQMBNERpc3BhdGNoRXJyb3IAATRkaXNwYXRjaF9pbmZvpQMBRERpc3BhdGNoRXZlbnRJbmZvAAEEUEFuIGV4dHJpbnNpYyBmYWlsZWQuLENvZGVVcGRhdGVkAAIEUGA6Y29kZWAgd2FzIHVwZGF0ZWQuKE5ld0FjY291bnQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAMEaEEgbmV3IGFjY291bnQgd2FzIGNyZWF0ZWQuNEtpbGxlZEFjY291bnQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAQEWEFuIGFjY291bnQgd2FzIHJlYXBlZC4gUmVtYXJrZWQIARhzZW5kZXIEATBUOjpBY2NvdW50SWQAARBoYXNoPAEcVDo6SGFzaAAFBHBPbiBvbi1jaGFpbiByZW1hcmsgaGFwcGVuZWQuRFVwZ3JhZGVBdXRob3JpemVkCAEkY29kZV9oYXNoPAEcVDo6SGFzaAABNGNoZWNrX3ZlcnNpb24xAQEQYm9vbAAGBGhBbiB1cGdyYWRlIHdhcyBhdXRob3JpemVkLoBSZWplY3RlZEludmFsaWRBdXRob3JpemVkVXBncmFkZQgBJGNvZGVfaGFzaDwBHFQ6Okhhc2gAARRlcnJvcrEDATREaXNwYXRjaEVycm9yAAcEEQFBbiBpbnZhbGlkIGF1dGhvcml6ZWQgdXBncmFkZSB3YXMgcmVqZWN0ZWQgd2hpbGUgdHJ5aW5nIHRvIGFwcGx5IGl0LgRwRXZlbnQgZm9yIHRoZSBTeXN0ZW0gcGFsbGV0LqUDCDBmcmFtZV9zeXN0ZW1ERGlzcGF0Y2hFdmVudEluZm8AAAwBGHdlaWdodCkBARhXZWlnaHQAARRjbGFzc6kDATREaXNwYXRjaENsYXNzAAEgcGF5c19mZWWtAwEQUGF5cwAAqQMMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2g0RGlzcGF0Y2hDbGFzcwABDBhOb3JtYWwAAAAsT3BlcmF0aW9uYWwAAQAkTWFuZGF0b3J5AAIAAK0DDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoEFBheXMAAQgMWWVzAAAACE5vAAEAALEDCChzcF9ydW50aW1lNERpc3BhdGNoRXJyb3IAATwUT3RoZXIAAAAwQ2Fubm90TG9va3VwAAEAJEJhZE9yaWdpbgACABhNb2R1bGUEALUDASxNb2R1bGVFcnJvcgADAERDb25zdW1lclJlbWFpbmluZwAEACxOb1Byb3ZpZGVycwAFAEBUb29NYW55Q29uc3VtZXJzAAYAFFRva2VuBAC5AwEoVG9rZW5FcnJvcgAHAChBcml0aG1ldGljBAC9AwE8QXJpdGhtZXRpY0Vycm9yAAgANFRyYW5zYWN0aW9uYWwEAMEDAUhUcmFuc2FjdGlvbmFsRXJyb3IACQAkRXhoYXVzdGVkAAoAKENvcnJ1cHRpb24ACwAsVW5hdmFpbGFibGUADAA4Um9vdE5vdEFsbG93ZWQADQAQVHJpZQQAxQMBJFRyaWVFcnJvcgAOAAC1Awgoc3BfcnVudGltZSxNb2R1bGVFcnJvcgAACAEUaW5kZXgMAQh1OAABFGVycm9ycAGMW3U4OyBNQVhfTU9EVUxFX0VSUk9SX0VOQ09ERURfU0laRV0AALkDCChzcF9ydW50aW1lKFRva2VuRXJyb3IAAShARnVuZHNVbmF2YWlsYWJsZQAAADBPbmx5UHJvdmlkZXIAAQAwQmVsb3dNaW5pbXVtAAIAMENhbm5vdENyZWF0ZQADADBVbmtub3duQXNzZXQABAAYRnJvemVuAAUALFVuc3VwcG9ydGVkAAYAQENhbm5vdENyZWF0ZUhvbGQABwA0Tm90RXhwZW5kYWJsZQAIABxCbG9ja2VkAAkAAL0DCDRzcF9hcml0aG1ldGljPEFyaXRobWV0aWNFcnJvcgABDCRVbmRlcmZsb3cAAAAgT3ZlcmZsb3cAAQA4RGl2aXNpb25CeVplcm8AAgAAwQMIKHNwX3J1bnRpbWVIVHJhbnNhY3Rpb25hbEVycm9yAAEIMExpbWl0UmVhY2hlZAAAABxOb0xheWVyAAEAAMUDDChzcF9ydW50aW1lMHByb3ZpbmdfdHJpZSRUcmllRXJyb3IAAThASW52YWxpZFN0YXRlUm9vdAAAAEhJbmNvbXBsZXRlRGF0YWJhc2UAAQBQVmFsdWVBdEluY29tcGxldGVLZXkAAgAwRGVjb2RlckVycm9yAAMALEludmFsaWRIYXNoAAQAMER1cGxpY2F0ZUtleQAFADhFeHRyYW5lb3VzTm9kZQAGADxFeHRyYW5lb3VzVmFsdWUABwBcRXh0cmFuZW91c0hhc2hSZWZlcmVuY2UACABUSW52YWxpZENoaWxkUmVmZXJlbmNlAAkANFZhbHVlTWlzbWF0Y2gACgA8SW5jb21wbGV0ZVByb29mAAsAMFJvb3RNaXNtYXRjaAAMACxEZWNvZGVFcnJvcgANAADJAwx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQURXZlbnQEBFQAARhgVmFsaWRhdGlvbkZ1bmN0aW9uU3RvcmVkAAAE0FRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIGhhcyBiZWVuIHNjaGVkdWxlZCB0byBhcHBseS5kVmFsaWRhdGlvbkZ1bmN0aW9uQXBwbGllZAQBVHJlbGF5X2NoYWluX2Jsb2NrX251bTgBVFJlbGF5Q2hhaW5CbG9ja051bWJlcgABBEUBVGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gd2FzIGFwcGxpZWQgYXMgb2YgdGhlIGNvbnRhaW5lZCByZWxheSBjaGFpbiBibG9jayBudW1iZXIubFZhbGlkYXRpb25GdW5jdGlvbkRpc2NhcmRlZAACBLBUaGUgcmVsYXktY2hhaW4gYWJvcnRlZCB0aGUgdXBncmFkZSBwcm9jZXNzLmBEb3dud2FyZE1lc3NhZ2VzUmVjZWl2ZWQEARRjb3VudDgBDHUzMgADBAEBU29tZSBkb3dud2FyZCBtZXNzYWdlcyBoYXZlIGJlZW4gcmVjZWl2ZWQgYW5kIHdpbGwgYmUgcHJvY2Vzc2VkLmREb3dud2FyZE1lc3NhZ2VzUHJvY2Vzc2VkCAEsd2VpZ2h0X3VzZWQpAQEYV2VpZ2h0AAEgZG1xX2hlYWQ8AURyZWxheV9jaGFpbjo6SGFzaAAEBOBEb3dud2FyZCBtZXNzYWdlcyB3ZXJlIHByb2Nlc3NlZCB1c2luZyB0aGUgZ2l2ZW4gd2VpZ2h0LkRVcHdhcmRNZXNzYWdlU2VudAQBMG1lc3NhZ2VfaGFzaIEDATxPcHRpb248WGNtSGFzaD4ABQS4QW4gdXB3YXJkIG1lc3NhZ2Ugd2FzIHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldM0DDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQURXZlbnQAASBAQmF0Y2hJbnRlcnJ1cHRlZAgBFGluZGV4OAEMdTMyAAEUZXJyb3KxAwE0RGlzcGF0Y2hFcnJvcgAACFUBQmF0Y2ggb2YgZGlzcGF0Y2hlcyBkaWQgbm90IGNvbXBsZXRlIGZ1bGx5LiBJbmRleCBvZiBmaXJzdCBmYWlsaW5nIGRpc3BhdGNoIGdpdmVuLCBhc0h3ZWxsIGFzIHRoZSBlcnJvci44QmF0Y2hDb21wbGV0ZWQAAQTIQmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgZnVsbHkgd2l0aCBubyBlcnJvci5gQmF0Y2hDb21wbGV0ZWRXaXRoRXJyb3JzAAIEtEJhdGNoIG9mIGRpc3BhdGNoZXMgY29tcGxldGVkIGJ1dCBoYXMgZXJyb3JzLjRJdGVtQ29tcGxldGVkAAMEHQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIG5vIGVycm9yLihJdGVtRmFpbGVkBAEUZXJyb3KxAwE0RGlzcGF0Y2hFcnJvcgAEBBEBQSBzaW5nbGUgaXRlbSB3aXRoaW4gYSBCYXRjaCBvZiBkaXNwYXRjaGVzIGhhcyBjb21wbGV0ZWQgd2l0aCBlcnJvci4wRGlzcGF0Y2hlZEFzBAEYcmVzdWx00QMBOERpc3BhdGNoUmVzdWx0AAUEWEEgY2FsbCB3YXMgZGlzcGF0Y2hlZC5ESWZFbHNlTWFpblN1Y2Nlc3MABgRkTWFpbiBjYWxsIHdhcyBkaXNwYXRjaGVkLlBJZkVsc2VGYWxsYmFja0NhbGxlZAQBKG1haW5fZXJyb3KxAwE0RGlzcGF0Y2hFcnJvcgAHBIRUaGUgZmFsbGJhY2sgY2FsbCB3YXMgZGlzcGF0Y2hlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTRAwQYUmVzdWx0CARUARAERQGxAwEICE9rBAAQAAAAAAxFcnIEALEDAAABAADVAww8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBRFdmVudAgEVAAESQABeBxFbmRvd2VkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABMGZyZWVfYmFsYW5jZfwBKFQ6OkJhbGFuY2UAAAS4QW4gYWNjb3VudCB3YXMgY3JlYXRlZCB3aXRoIHNvbWUgZnJlZSBiYWxhbmNlLiBEdXN0TG9zdAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlAAEIPQFBbiBhY2NvdW50IHdhcyByZW1vdmVkIHdob3NlIGJhbGFuY2Ugd2FzIG5vbi16ZXJvIGJ1dCBiZWxvdyBFeGlzdGVudGlhbERlcG9zaXQseHJlc3VsdGluZyBpbiBhbiBvdXRyaWdodCBsb3NzLiBUcmFuc2ZlcgwBEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UAAgRMVHJhbnNmZXIgc3VjY2VlZGVkLihCYWxhbmNlU2V0CAEMd2hvBAEwVDo6QWNjb3VudElkAAEQZnJlZfwBKFQ6OkJhbGFuY2UAAwRoQSBiYWxhbmNlIHdhcyBzZXQgYnkgcm9vdC4gUmVzZXJ2ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlAAQE4FNvbWUgYmFsYW5jZSB3YXMgcmVzZXJ2ZWQgKG1vdmVkIGZyb20gZnJlZSB0byByZXNlcnZlZCkuKFVucmVzZXJ2ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlAAUE6FNvbWUgYmFsYW5jZSB3YXMgdW5yZXNlcnZlZCAobW92ZWQgZnJvbSByZXNlcnZlZCB0byBmcmVlKS5IUmVzZXJ2ZVJlcGF0cmlhdGVkEAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQABSGRlc3RpbmF0aW9uX3N0YXR1c9kDARhTdGF0dXMABghNAVNvbWUgYmFsYW5jZSB3YXMgbW92ZWQgZnJvbSB0aGUgcmVzZXJ2ZSBvZiB0aGUgZmlyc3QgYWNjb3VudCB0byB0aGUgc2Vjb25kIGFjY291bnQu2EZpbmFsIGFyZ3VtZW50IGluZGljYXRlcyB0aGUgZGVzdGluYXRpb24gYmFsYW5jZSB0eXBlLhxEZXBvc2l0CAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAHBNhTb21lIGFtb3VudCB3YXMgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4gV2l0aGRyYXcIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlAAgEHQFTb21lIGFtb3VudCB3YXMgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLhxTbGFzaGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAJBAEBU29tZSBhbW91bnQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgbWlzYmVoYXZpb3IpLhhNaW50ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlAAoEnFNvbWUgYW1vdW50IHdhcyBtaW50ZWQgaW50byBhbiBhY2NvdW50LjBNaW50ZWRDcmVkaXQEARhhbW91bnT8AShUOjpCYWxhbmNlAAsE4FNvbWUgY3JlZGl0IHdhcyBiYWxhbmNlZCBhbmQgYWRkZWQgdG8gdGhlIFRvdGFsSXNzdWFuY2UuGEJ1cm5lZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UADAScU29tZSBhbW91bnQgd2FzIGJ1cm5lZCBmcm9tIGFuIGFjY291bnQuKEJ1cm5lZERlYnQEARhhbW91bnT8AShUOjpCYWxhbmNlAA0EzFNvbWUgZGVidCBoYXMgYmVlbiBkcm9wcGVkIGZyb20gdGhlIFRvdGFsIElzc3VhbmNlLiRTdXNwZW5kZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlAA4EFQFTb21lIGFtb3VudCB3YXMgc3VzcGVuZGVkIGZyb20gYW4gYWNjb3VudCAoaXQgY2FuIGJlIHJlc3RvcmVkIGxhdGVyKS4gUmVzdG9yZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlAA8EpFNvbWUgYW1vdW50IHdhcyByZXN0b3JlZCBpbnRvIGFuIGFjY291bnQuIFVwZ3JhZGVkBAEMd2hvBAEwVDo6QWNjb3VudElkABAEYEFuIGFjY291bnQgd2FzIHVwZ3JhZGVkLhhJc3N1ZWQEARhhbW91bnT8AShUOjpCYWxhbmNlABEELQFUb3RhbCBpc3N1YW5jZSB3YXMgaW5jcmVhc2VkIGJ5IGBhbW91bnRgLCBjcmVhdGluZyBhIGNyZWRpdCB0byBiZSBiYWxhbmNlZC4kUmVzY2luZGVkBAEYYW1vdW50/AEoVDo6QmFsYW5jZQASBCUBVG90YWwgaXNzdWFuY2Ugd2FzIGRlY3JlYXNlZCBieSBgYW1vdW50YCwgY3JlYXRpbmcgYSBkZWJ0IHRvIGJlIGJhbGFuY2VkLhhMb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlABMEYFNvbWUgYmFsYW5jZSB3YXMgbG9ja2VkLiBVbmxvY2tlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UAFARoU29tZSBiYWxhbmNlIHdhcyB1bmxvY2tlZC4YRnJvemVuCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAVBGBTb21lIGJhbGFuY2Ugd2FzIGZyb3plbi4YVGhhd2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAWBGBTb21lIGJhbGFuY2Ugd2FzIHRoYXdlZC5MVG90YWxJc3N1YW5jZUZvcmNlZAgBDG9sZPwBKFQ6OkJhbGFuY2UAAQxuZXf8AShUOjpCYWxhbmNlABcErFRoZSBgVG90YWxJc3N1YW5jZWAgd2FzIGZvcmNlZnVsbHkgY2hhbmdlZC4QSGVsZAwBGHJlYXNvbt0DAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UAGASAU29tZSBiYWxhbmNlIHdhcyBwbGFjZWQgb24gaG9sZC4oQnVybmVkSGVsZAwBGHJlYXNvbt0DAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UAGQSgSGVsZCBiYWxhbmNlIHdhcyBidXJuZWQgZnJvbSBhbiBhY2NvdW50LjhUcmFuc2Zlck9uSG9sZBABGHJlYXNvbt0DAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABEGRlc3QEATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlABoEFQFBIHRyYW5zZmVyIG9mIGBhbW91bnRgIG9uIGhvbGQgZnJvbSBgc291cmNlYCB0byBgZGVzdGAgd2FzIGluaXRpYXRlZC48VHJhbnNmZXJBbmRIb2xkEAEYcmVhc29u3QMBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEQZGVzdAQBMFQ6OkFjY291bnRJZAABLHRyYW5zZmVycmVk/AEoVDo6QmFsYW5jZQAbBAkBVGhlIGB0cmFuc2ZlcnJlZGAgYmFsYW5jZSBpcyBwbGFjZWQgb24gaG9sZCBhdCB0aGUgYGRlc3RgIGFjY291bnQuIFJlbGVhc2VkDAEYcmVhc29u3QMBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAcBJBTb21lIGJhbGFuY2Ugd2FzIHJlbGVhc2VkIGZyb20gaG9sZC4oVW5leHBlY3RlZAQA7QMBOFVuZXhwZWN0ZWRLaW5kAB0EsEFuIHVuZXhwZWN0ZWQvZGVmZW5zaXZlIGV2ZW50IHdhcyB0cmlnZ2VyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV02QMUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjNEJhbGFuY2VTdGF0dXMAAQgQRnJlZQAAACBSZXNlcnZlZAABAADdAwhgYnVsbGV0aW5fd2VzdGVuZF9ydW50aW1lRFJ1bnRpbWVIb2xkUmVhc29uAAEMSFRyYW5zYWN0aW9uU3RvcmFnZQQA4QMBmHBhbGxldF90cmFuc2FjdGlvbl9zdG9yYWdlOjpIb2xkUmVhc29uACgAHFNlc3Npb24EAOUDAWhwYWxsZXRfc2Vzc2lvbjo6SG9sZFJlYXNvbgAWACxQb2xrYWRvdFhjbQQA6QMBWHBhbGxldF94Y206OkhvbGRSZWFzb24AHwAA4QMMaHBhbGxldF90cmFuc2FjdGlvbl9zdG9yYWdlGHBhbGxldChIb2xkUmVhc29uAAEEOFN0b3JhZ2VGZWVIb2xkAAAAAOUDDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQoSG9sZFJlYXNvbgABBBBLZXlzAAAAAOkDDChwYWxsZXRfeGNtGHBhbGxldChIb2xkUmVhc29uAAEEOEF1dGhvcml6ZUFsaWFzAAAAAO0DDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0OFVuZXhwZWN0ZWRLaW5kAAEIOEJhbGFuY2VVcGRhdGVkAAAAVEZhaWxlZFRvTXV0YXRlQWNjb3VudAABAADxAwxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQYcGFsbGV0FEV2ZW50BARUAAEESFRyYW5zYWN0aW9uRmVlUGFpZAwBDHdobwQBMFQ6OkFjY291bnRJZAABKGFjdHVhbF9mZWX8ATBCYWxhbmNlT2Y8VD4AAQx0aXD8ATBCYWxhbmNlT2Y8VD4AAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsXGhhcyBiZWVuIHBhaWQgYnkgYHdob2AuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV09QMMbHBhbGxldF9za2lwX2ZlZWxlc3NfcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQQoRmVlU2tpcHBlZAQBGG9yaWdpbsgBwDxUOjpSdW50aW1lT3JpZ2luIGFzIE9yaWdpblRyYWl0Pjo6UGFsbGV0c09yaWdpbgAABHhBIHRyYW5zYWN0aW9uIGZlZSB3YXMgc2tpcHBlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXT5AwxocGFsbGV0X3RyYW5zYWN0aW9uX3N0b3JhZ2UYcGFsbGV0FEV2ZW50BARUAAEkGFN0b3JlZAwBFGluZGV4OAEMdTMyAAEwY29udGVudF9oYXNoCAEsQ29udGVudEhhc2gAAQxjaWT9AwEsT3B0aW9uPENpZD4AAASIU3RvcmVkIGRhdGEgdW5kZXIgc3BlY2lmaWVkIGluZGV4LhxSZW5ld2VkCAEUaW5kZXg4AQx1MzIAATBjb250ZW50X2hhc2gIASxDb250ZW50SGFzaAABBIxSZW5ld2VkIGRhdGEgdW5kZXIgc3BlY2lmaWVkIGluZGV4LjBQcm9vZkNoZWNrZWQAAgScU3RvcmFnZSBwcm9vZiB3YXMgc3VjY2Vzc2Z1bGx5IGNoZWNrZWQuREFjY291bnRBdXRob3JpemVkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEwdHJhbnNhY3Rpb25zOAEMdTMyAAEUYnl0ZXMoAQx1NjQAAwRZAUFuIGFjY291bnQgYHdob2Agd2FzIGF1dGhvcml6ZWQgdG8gc3RvcmUgYGJ5dGVzYCBieXRlcyBpbiBgdHJhbnNhY3Rpb25zYCB0cmFuc2FjdGlvbnMudEFjY291bnRBdXRob3JpemF0aW9uUmVmcmVzaGVkBAEMd2hvBAEwVDo6QWNjb3VudElkAAQExEFuIGF1dGhvcml6YXRpb24gZm9yIGFjY291bnQgYHdob2Agd2FzIHJlZnJlc2hlZC5IUHJlaW1hZ2VBdXRob3JpemVkCAEwY29udGVudF9oYXNoCAEsQ29udGVudEhhc2gAASBtYXhfc2l6ZSgBDHU2NAAFCFkBQXV0aG9yaXphdGlvbiB3YXMgZ2l2ZW4gZm9yIGEgcHJlaW1hZ2Ugb2YgYGNvbnRlbnRfaGFzaGAgKG5vdCBleGNlZWRpbmcgYG1heF9zaXplYCkgdG9QYmUgc3RvcmVkIGJ5IGFueW9uZS54UHJlaW1hZ2VBdXRob3JpemF0aW9uUmVmcmVzaGVkBAEwY29udGVudF9oYXNoCAEsQ29udGVudEhhc2gABgQBAUFuIGF1dGhvcml6YXRpb24gZm9yIGEgcHJlaW1hZ2Ugb2YgYGNvbnRlbnRfaGFzaGAgd2FzIHJlZnJlc2hlZC6IRXhwaXJlZEFjY291bnRBdXRob3JpemF0aW9uUmVtb3ZlZAQBDHdobwQBMFQ6OkFjY291bnRJZAAHBLRBbiBleHBpcmVkIGFjY291bnQgYXV0aG9yaXphdGlvbiB3YXMgcmVtb3ZlZC6MRXhwaXJlZFByZWltYWdlQXV0aG9yaXphdGlvblJlbW92ZWQEATBjb250ZW50X2hhc2gIASxDb250ZW50SGFzaAAIBLhBbiBleHBpcmVkIHByZWltYWdlIGF1dGhvcml6YXRpb24gd2FzIHJlbW92ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0/QMEGE9wdGlvbgQEVAEYAQgQTm9uZQAAABBTb21lBAAYAAABAAABBAxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQURXZlbnQEBFQAAShATmV3SW52dWxuZXJhYmxlcwQBNGludnVsbmVyYWJsZXM1AQFEVmVjPFQ6OkFjY291bnRJZD4AAARsTmV3IEludnVsbmVyYWJsZXMgd2VyZSBzZXQuREludnVsbmVyYWJsZUFkZGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABBHRBIG5ldyBJbnZ1bG5lcmFibGUgd2FzIGFkZGVkLkxJbnZ1bG5lcmFibGVSZW1vdmVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAACBHBBbiBJbnZ1bG5lcmFibGUgd2FzIHJlbW92ZWQuUE5ld0Rlc2lyZWRDYW5kaWRhdGVzBAFIZGVzaXJlZF9jYW5kaWRhdGVzOAEMdTMyAAMEpFRoZSBudW1iZXIgb2YgZGVzaXJlZCBjYW5kaWRhdGVzIHdhcyBzZXQuQE5ld0NhbmRpZGFjeUJvbmQEASxib25kX2Ftb3VudPwBMEJhbGFuY2VPZjxUPgAEBGxUaGUgY2FuZGlkYWN5IGJvbmQgd2FzIHNldC44Q2FuZGlkYXRlQWRkZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdPwBMEJhbGFuY2VPZjxUPgAFBFxBIG5ldyBjYW5kaWRhdGUgam9pbmVkLlBDYW5kaWRhdGVCb25kVXBkYXRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0/AEwQmFsYW5jZU9mPFQ+AAYEcEJvbmQgb2YgYSBjYW5kaWRhdGUgdXBkYXRlZC5AQ2FuZGlkYXRlUmVtb3ZlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQABwRgQSBjYW5kaWRhdGUgd2FzIHJlbW92ZWQuRENhbmRpZGF0ZVJlcGxhY2VkDAEMb2xkBAEwVDo6QWNjb3VudElkAAEMbmV3BAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdPwBMEJhbGFuY2VPZjxUPgAIBPRBbiBhY2NvdW50IHdhcyByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgYnkgYW5vdGhlciBvbmUuaEludmFsaWRJbnZ1bG5lcmFibGVTa2lwcGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAJCFUBQW4gYWNjb3VudCB3YXMgdW5hYmxlIHRvIGJlIGFkZGVkIHRvIHRoZSBJbnZ1bG5lcmFibGVzIGJlY2F1c2UgdGhleSBkaWQgbm90IGhhdmUga2V5c8hyZWdpc3RlcmVkLiBPdGhlciBJbnZ1bG5lcmFibGVzIG1heSBoYXZlIGJlZW4gc2V0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldAUEDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXZlbnQEBFQAARAoTmV3U2Vzc2lvbgQBNHNlc3Npb25faW5kZXg4ATBTZXNzaW9uSW5kZXgAAAg5AU5ldyBzZXNzaW9uIGhhcyBoYXBwZW5lZC4gTm90ZSB0aGF0IHRoZSBhcmd1bWVudCBpcyB0aGUgc2Vzc2lvbiBpbmRleCwgbm90IHRoZZxibG9jayBudW1iZXIgYXMgdGhlIHR5cGUgbWlnaHQgc3VnZ2VzdC4kTmV3UXVldWVkAAEISQFUaGUgYE5ld1Nlc3Npb25gIGV2ZW50IGluIHRoZSBjdXJyZW50IGJsb2NrIGFsc28gaW1wbGllcyBhIG5ldyB2YWxpZGF0b3Igc2V0IHRvIGJlHHF1ZXVlZC5EVmFsaWRhdG9yRGlzYWJsZWQEASR2YWxpZGF0b3IEAThUOjpWYWxpZGF0b3JJZAACBHBWYWxpZGF0b3IgaGFzIGJlZW4gZGlzYWJsZWQuSFZhbGlkYXRvclJlZW5hYmxlZAQBJHZhbGlkYXRvcgQBOFQ6OlZhbGlkYXRvcklkAAMEeFZhbGlkYXRvciBoYXMgYmVlbiByZS1lbmFibGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldAkEDGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlGHBhbGxldBRFdmVudAQEVAABBDxYY21wTWVzc2FnZVNlbnQEATBtZXNzYWdlX2hhc2gIARxYY21IYXNoAAAEwEFuIEhSTVAgbWVzc2FnZSB3YXMgc2VudCB0byBhIHNpYmxpbmcgcGFyYWNoYWluLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldA0EDChwYWxsZXRfeGNtGHBhbGxldBRFdmVudAQEVAABdCRBdHRlbXB0ZWQEARxvdXRjb21lEQQBUHhjbTo6bGF0ZXN0OjpPdXRjb21lAAAEqEV4ZWN1dGlvbiBvZiBhbiBYQ00gbWVzc2FnZSB3YXMgYXR0ZW1wdGVkLhBTZW50EAEYb3JpZ2lu4AEgTG9jYXRpb24AASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEcbWVzc2FnZXUCARxYY208KCk+AAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAQRgQW4gWENNIG1lc3NhZ2Ugd2FzIHNlbnQuKFNlbmRGYWlsZWQQARhvcmlnaW7gASBMb2NhdGlvbgABLGRlc3RpbmF0aW9u4AEgTG9jYXRpb24AARRlcnJvchkEASRTZW5kRXJyb3IAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAACBHhBbiBYQ00gbWVzc2FnZSBmYWlsZWQgdG8gc2VuZC48UHJvY2Vzc1hjbUVycm9yDAEYb3JpZ2lu4AEgTG9jYXRpb24AARRlcnJvcqUCASBYY21FcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAMEhEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBwcm9jZXNzLkhVbmV4cGVjdGVkUmVzcG9uc2UIARhvcmlnaW7gASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAAEDFkBUXVlcnkgcmVzcG9uc2UgcmVjZWl2ZWQgd2hpY2ggZG9lcyBub3QgbWF0Y2ggYSByZWdpc3RlcmVkIHF1ZXJ5LiBUaGlzIG1heSBiZSBiZWNhdXNlIGFVAW1hdGNoaW5nIHF1ZXJ5IHdhcyBuZXZlciByZWdpc3RlcmVkLCBpdCBtYXkgYmUgYmVjYXVzZSBpdCBpcyBhIGR1cGxpY2F0ZSByZXNwb25zZSwgb3JwYmVjYXVzZSB0aGUgcXVlcnkgdGltZWQgb3V0LjRSZXNwb25zZVJlYWR5CAEgcXVlcnlfaWQoARxRdWVyeUlkAAEgcmVzcG9uc2WZAgEgUmVzcG9uc2UABQhdAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBpcyByZWFkeSBmb3IgdGFraW5nIHdpdGggYHRha2VfcmVzcG9uc2VgLiBUaGVyZSBpc4BubyByZWdpc3RlcmVkIG5vdGlmaWNhdGlvbiBjYWxsLiBOb3RpZmllZAwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAYIWQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uIGhhc6hiZWVuIGRpc3BhdGNoZWQgYW5kIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseS5ATm90aWZ5T3ZlcndlaWdodBQBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAE0YWN0dWFsX3dlaWdodCkBARhXZWlnaHQAAUxtYXhfYnVkZ2V0ZWRfd2VpZ2h0KQEBGFdlaWdodAAHDEkBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSByZWdpc3RlcmVkIG5vdGlmaWNhdGlvblkBY291bGQgbm90IGJlIGRpc3BhdGNoZWQgYmVjYXVzZSB0aGUgZGlzcGF0Y2ggd2VpZ2h0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11bSB3ZWlnaHTkb3JpZ2luYWxseSBidWRnZXRlZCBieSB0aGlzIHJ1bnRpbWUgZm9yIHRoZSBxdWVyeSByZXN1bHQuTE5vdGlmeURpc3BhdGNoRXJyb3IMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAICFUBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZXJlIHdhcyBhIGdlbmVyYWwgZXJyb3Igd2l0aIhkaXNwYXRjaGluZyB0aGUgbm90aWZpY2F0aW9uIGNhbGwuSE5vdGlmeURlY29kZUZhaWxlZAwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAkMUQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIGRpc3BhdGNoIHdhcyB1bmFibGUgdG8gYmVZAWRlY29kZWQgaW50byBhIGBDYWxsYDsgdGhpcyBtaWdodCBiZSBkdWUgdG8gZGlzcGF0Y2ggZnVuY3Rpb24gaGF2aW5nIGEgc2lnbmF0dXJlIHdoaWNolGlzIG5vdCBgKG9yaWdpbiwgUXVlcnlJZCwgUmVzcG9uc2UpYC5ASW52YWxpZFJlc3BvbmRlcgwBGG9yaWdpbuABIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAFEZXhwZWN0ZWRfbG9jYXRpb265AgFAT3B0aW9uPExvY2F0aW9uPgAKDFkBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBvcmlnaW4gbG9jYXRpb24gb2YgdGhlIHJlc3BvbnNlIGRvZXNVAW5vdCBtYXRjaCB0aGF0IGV4cGVjdGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkIGZvciBhIGxhdGVyLCB2YWxpZCwgcmVzcG9uc2UgdG9sYmUgcmVjZWl2ZWQgYW5kIGFjdGVkIHVwb24uXEludmFsaWRSZXNwb25kZXJWZXJzaW9uCAEYb3JpZ2lu4AEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQACxxRAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgb3JpZ2luIGxvY2F0aW9uIHBsYWNlZCBpbk0Bc3RvcmFnZSBieSB0aGlzIHJ1bnRpbWUgcHJldmlvdXNseSBjYW5ub3QgYmUgZGVjb2RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZC4AQQFUaGlzIGlzIHVuZXhwZWN0ZWQgKHNpbmNlIGEgbG9jYXRpb24gcGxhY2VkIGluIHN0b3JhZ2UgaW4gYSBwcmV2aW91c2x5IGV4ZWN1dGluZ00BcnVudGltZSBzaG91bGQgYmUgcmVhZGFibGUgcHJpb3IgdG8gcXVlcnkgdGltZW91dCkgYW5kIGRhbmdlcm91cyBzaW5jZSB0aGUgcG9zc2libHlZAXZhbGlkIHJlc3BvbnNlIHdpbGwgYmUgZHJvcHBlZC4gTWFudWFsIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uIGlzIHByb2JhYmx5IGdvaW5nIHRvIGJlHG5lZWRlZC40UmVzcG9uc2VUYWtlbgQBIHF1ZXJ5X2lkKAEcUXVlcnlJZAAMBMhSZWNlaXZlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWFkIGFuZCByZW1vdmVkLjRBc3NldHNUcmFwcGVkDAEQaGFzaDwBEEgyNTYAARhvcmlnaW7gASBMb2NhdGlvbgABGGFzc2V0c/ECATxWZXJzaW9uZWRBc3NldHMADQS4U29tZSBhc3NldHMgaGF2ZSBiZWVuIHBsYWNlZCBpbiBhbiBhc3NldCB0cmFwLlRWZXJzaW9uQ2hhbmdlTm90aWZpZWQQASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEYcmVzdWx0OAEoWGNtVmVyc2lvbgABEGNvc3SBAgEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gADgwlAUFuIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb24gbWVzc2FnZSBoYXMgYmVlbiBhdHRlbXB0ZWQgdG8gYmUgc2VudC4A4FRoZSBjb3N0IG9mIHNlbmRpbmcgaXQgKGJvcm5lIGJ5IHRoZSBjaGFpbikgaXMgaW5jbHVkZWQuXFN1cHBvcnRlZFZlcnNpb25DaGFuZ2VkCAEgbG9jYXRpb27gASBMb2NhdGlvbgABHHZlcnNpb244AShYY21WZXJzaW9uAA8IOQFUaGUgc3VwcG9ydGVkIHZlcnNpb24gb2YgYSBsb2NhdGlvbiBoYXMgYmVlbiBjaGFuZ2VkLiBUaGlzIG1pZ2h0IGJlIHRocm91Z2ggYW7AYXV0b21hdGljIG5vdGlmaWNhdGlvbiBvciBhIG1hbnVhbCBpbnRlcnZlbnRpb24uUE5vdGlmeVRhcmdldFNlbmRGYWlsDAEgbG9jYXRpb27gASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAABFGVycm9ypQIBIFhjbUVycm9yABAIWQFBIGdpdmVuIGxvY2F0aW9uIHdoaWNoIGhhZCBhIHZlcnNpb24gY2hhbmdlIHN1YnNjcmlwdGlvbiB3YXMgZHJvcHBlZCBvd2luZyB0byBhbiBlcnJvcnxzZW5kaW5nIHRoZSBub3RpZmljYXRpb24gdG8gaXQuZE5vdGlmeVRhcmdldE1pZ3JhdGlvbkZhaWwIASBsb2NhdGlvbmUBAURWZXJzaW9uZWRMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAARCFkBQSBnaXZlbiBsb2NhdGlvbiB3aGljaCBoYWQgYSB2ZXJzaW9uIGNoYW5nZSBzdWJzY3JpcHRpb24gd2FzIGRyb3BwZWQgb3dpbmcgdG8gYW4gZXJyb3K0bWlncmF0aW5nIHRoZSBsb2NhdGlvbiB0byBvdXIgbmV3IFhDTSBmb3JtYXQuVEludmFsaWRRdWVyaWVyVmVyc2lvbggBGG9yaWdpbuABIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkABIcVQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIGV4cGVjdGVkIHF1ZXJpZXIgbG9jYXRpb24gcGxhY2VkIGluTQFzdG9yYWdlIGJ5IHRoaXMgcnVudGltZSBwcmV2aW91c2x5IGNhbm5vdCBiZSBkZWNvZGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkLgBBAVRoaXMgaXMgdW5leHBlY3RlZCAoc2luY2UgYSBsb2NhdGlvbiBwbGFjZWQgaW4gc3RvcmFnZSBpbiBhIHByZXZpb3VzbHkgZXhlY3V0aW5nTQFydW50aW1lIHNob3VsZCBiZSByZWFkYWJsZSBwcmlvciB0byBxdWVyeSB0aW1lb3V0KSBhbmQgZGFuZ2Vyb3VzIHNpbmNlIHRoZSBwb3NzaWJseVkBdmFsaWQgcmVzcG9uc2Ugd2lsbCBiZSBkcm9wcGVkLiBNYW51YWwgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUcbmVlZGVkLjhJbnZhbGlkUXVlcmllchABGG9yaWdpbuABIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAFAZXhwZWN0ZWRfcXVlcmllcuABIExvY2F0aW9uAAFQbWF5YmVfYWN0dWFsX3F1ZXJpZXK5AgFAT3B0aW9uPExvY2F0aW9uPgATDF0BRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBxdWVyaWVyIGxvY2F0aW9uIG9mIHRoZSByZXNwb25zZSBkb2VzUQFub3QgbWF0Y2ggdGhlIGV4cGVjdGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkIGZvciBhIGxhdGVyLCB2YWxpZCwgcmVzcG9uc2UgdG9sYmUgcmVjZWl2ZWQgYW5kIGFjdGVkIHVwb24uUFZlcnNpb25Ob3RpZnlTdGFydGVkDAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABEGNvc3SBAgEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFAhZAUEgcmVtb3RlIGhhcyByZXF1ZXN0ZWQgWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBmcm9tIHVzIGFuZCB3ZSBoYXZlIGhvbm9yZWQgaXQuHQFBIHZlcnNpb24gaW5mb3JtYXRpb24gbWVzc2FnZSBpcyBzZW50IHRvIHRoZW0gYW5kIGl0cyBjb3N0IGlzIGluY2x1ZGVkLlhWZXJzaW9uTm90aWZ5UmVxdWVzdGVkDAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABEGNvc3SBAgEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFQQ9AVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc2VuZCB1cyBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9ucy5gVmVyc2lvbk5vdGlmeVVucmVxdWVzdGVkDAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABEGNvc3SBAgEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFgglAVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc3RvcHMgc2VuZGluZyB1cyBYQ00gdmVyc2lvbiBjaGFuZ2U4bm90aWZpY2F0aW9ucy4gRmVlc1BhaWQIARhwYXlpbmfgASBMb2NhdGlvbgABEGZlZXOBAgEYQXNzZXRzABcEMQFGZWVzIHdlcmUgcGFpZCBmcm9tIGEgbG9jYXRpb24gZm9yIGFuIG9wZXJhdGlvbiAob2Z0ZW4gZm9yIHVzaW5nIGBTZW5kWGNtYCkuNEFzc2V0c0NsYWltZWQMARBoYXNoPAEQSDI1NgABGG9yaWdpbuABIExvY2F0aW9uAAEYYXNzZXRz8QIBPFZlcnNpb25lZEFzc2V0cwAYBMBTb21lIGFzc2V0cyBoYXZlIGJlZW4gY2xhaW1lZCBmcm9tIGFuIGFzc2V0IHRyYXBgVmVyc2lvbk1pZ3JhdGlvbkZpbmlzaGVkBAEcdmVyc2lvbjgBKFhjbVZlcnNpb24AGQSEQSBYQ00gdmVyc2lvbiBtaWdyYXRpb24gZmluaXNoZWQuPEFsaWFzQXV0aG9yaXplZAwBHGFsaWFzZXLgASBMb2NhdGlvbgABGHRhcmdldOABIExvY2F0aW9uAAEYZXhwaXJ5LQMBLE9wdGlvbjx1NjQ+ABoIXQFBbiBgYWxpYXNlcmAgbG9jYXRpb24gd2FzIGF1dGhvcml6ZWQgYnkgYHRhcmdldGAgdG8gYWxpYXMgaXQsIGF1dGhvcml6YXRpb24gdmFsaWQgdW50aWxYYGV4cGlyeWAgYmxvY2sgbnVtYmVyLmRBbGlhc0F1dGhvcml6YXRpb25SZW1vdmVkCAEcYWxpYXNlcuABIExvY2F0aW9uAAEYdGFyZ2V04AEgTG9jYXRpb24AGwTMYHRhcmdldGAgcmVtb3ZlZCBhbGlhcyBhdXRob3JpemF0aW9uIGZvciBgYWxpYXNlcmAucEFsaWFzZXNBdXRob3JpemF0aW9uc1JlbW92ZWQEARh0YXJnZXTgASBMb2NhdGlvbgAcBKhgdGFyZ2V0YCByZW1vdmVkIGFsbCBhbGlhcyBhdXRob3JpemF0aW9ucy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQRBBAsc3RhZ2luZ194Y20IdjUYdHJhaXRzHE91dGNvbWUAAQwgQ29tcGxldGUEARB1c2VkKQEBGFdlaWdodAAAAChJbmNvbXBsZXRlCAEQdXNlZCkBARhXZWlnaHQAARRlcnJvchUEAUBJbnN0cnVjdGlvbkVycm9yAAEAFEVycm9yBAAVBAFASW5zdHJ1Y3Rpb25FcnJvcgACAAAVBBAsc3RhZ2luZ194Y20IdjUYdHJhaXRzQEluc3RydWN0aW9uRXJyb3IAAAgBFGluZGV4DAFASW5zdHJ1Y3Rpb25JbmRleAABFGVycm9ypQIBFEVycm9yAAAZBBAMeGNtCHYzGHRyYWl0cyRTZW5kRXJyb3IAARw0Tm90QXBwbGljYWJsZQAAACRUcmFuc3BvcnQAAQAoVW5yb3V0YWJsZQACAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAAMAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAEADxNaXNzaW5nQXJndW1lbnQABQAQRmVlcwAGAAAdBAxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBRFdmVudAQEVAABDDRJbnZhbGlkRm9ybWF0BAAIASBbdTg7IDMyXQAACIBEb3dud2FyZCBtZXNzYWdlIGlzIGludmFsaWQgWENNLiBcWyBpZCBcXUhVbnN1cHBvcnRlZFZlcnNpb24EAAgBIFt1ODsgMzJdAAEIvERvd253YXJkIG1lc3NhZ2UgaXMgdW5zdXBwb3J0ZWQgdmVyc2lvbiBvZiBYQ00uIFxbIGlkIFxdQEV4ZWN1dGVkRG93bndhcmQIAAgBIFt1ODsgMzJdAAARBAEcT3V0Y29tZQACCMREb3dud2FyZCBtZXNzYWdlIGV4ZWN1dGVkIHdpdGggdGhlIGdpdmVuIG91dGNvbWUuRFxbIGlkLCBvdXRjb21lIFxdBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0IQQMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFdmVudAQEVAABEEBQcm9jZXNzaW5nRmFpbGVkDAEIaWQ8ARBIMjU2BJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW45AwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuARRlcnJvciUEAUxQcm9jZXNzTWVzc2FnZUVycm9yEGBUaGUgZXJyb3IgdGhhdCBvY2N1cnJlZC4ASQFUaGlzIGVycm9yIGlzIHByZXR0eSBvcGFxdWUuIE1vcmUgZmluZS1ncmFpbmVkIGVycm9ycyBuZWVkIHRvIGJlIGVtaXR0ZWQgYXMgZXZlbnRzaGJ5IHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAuAARVAU1lc3NhZ2UgZGlzY2FyZGVkIGR1ZSB0byBhbiBlcnJvciBpbiB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgICh1c3VhbGx5IGEgZm9ybWF0IGVycm9yKS4kUHJvY2Vzc2VkEAEIaWQ8ARBIMjU2BJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW45AwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuASx3ZWlnaHRfdXNlZCkBARhXZWlnaHQEwEhvdyBtdWNoIHdlaWdodCB3YXMgdXNlZCB0byBwcm9jZXNzIHRoZSBtZXNzYWdlLgEcc3VjY2VzczEBARBib29sGIhXaGV0aGVyIHRoZSBtZXNzYWdlIHdhcyBwcm9jZXNzZWQuAEkBTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSB1bmRlcmx5aW5nIGBNZXNzYWdlUHJvY2Vzc29yYCB3YXMgaW50ZXJuYWxseTUBc3VjY2Vzc2Z1bC4gSXQgKnNvbGVseSogbWVhbnMgdGhhdCB0aGUgTVEgcGFsbGV0IHdpbGwgdHJlYXQgdGhpcyBhcyBhIHN1Y2Nlc3NNAWNvbmRpdGlvbiBhbmQgZGlzY2FyZCB0aGUgbWVzc2FnZS4gQW55IGludGVybmFsIGVycm9yIG5lZWRzIHRvIGJlIGVtaXR0ZWQgYXMgZXZlbnRzaGJ5IHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAuAQRUTWVzc2FnZSBpcyBwcm9jZXNzZWQuSE92ZXJ3ZWlnaHRFbnF1ZXVlZBABCGlkCAEgW3U4OyAzMl0ElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbjkDAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgEYFRoZSBwYWdlIG9mIHRoZSBtZXNzYWdlLgE0bWVzc2FnZV9pbmRleDgBHFQ6OlNpemUEpFRoZSBpbmRleCBvZiB0aGUgbWVzc2FnZSB3aXRoaW4gdGhlIHBhZ2UuAgSMTWVzc2FnZSBwbGFjZWQgaW4gb3ZlcndlaWdodCBxdWV1ZS4oUGFnZVJlYXBlZAgBGG9yaWdpbjkDAUhNZXNzYWdlT3JpZ2luT2Y8VD4EWFRoZSBxdWV1ZSBvZiB0aGUgcGFnZS4BFGluZGV4OAEkUGFnZUluZGV4BFhUaGUgaW5kZXggb2YgdGhlIHBhZ2UuAwRUVGhpcyBwYWdlIHdhcyByZWFwZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0JQQQNGZyYW1lX3N1cHBvcnQYdHJhaXRzIG1lc3NhZ2VzTFByb2Nlc3NNZXNzYWdlRXJyb3IAARgkQmFkRm9ybWF0AAAAHENvcnJ1cHQAAQAsVW5zdXBwb3J0ZWQAAgAoT3ZlcndlaWdodAQAKQEBGFdlaWdodAADABRZaWVsZAAEAERTdGFja0xpbWl0UmVhY2hlZAAFAAApBAwscGFsbGV0X3N1ZG8YcGFsbGV0FEV2ZW50BARUAAEQFFN1ZGlkBAEsc3Vkb19yZXN1bHTRAwE4RGlzcGF0Y2hSZXN1bHQEtFRoZSByZXN1bHQgb2YgdGhlIGNhbGwgbWFkZSBieSB0aGUgc3VkbyB1c2VyLgAEcEEgc3VkbyBjYWxsIGp1c3QgdG9vayBwbGFjZS4oS2V5Q2hhbmdlZAgBDG9sZC0EAVBPcHRpb248VDo6QWNjb3VudElkPgS0VGhlIG9sZCBzdWRvIGtleSAoaWYgb25lIHdhcyBwcmV2aW91c2x5IHNldCkuAQxuZXcEATBUOjpBY2NvdW50SWQEiFRoZSBuZXcgc3VkbyBrZXkgKGlmIG9uZSB3YXMgc2V0KS4BBHhUaGUgc3VkbyBrZXkgaGFzIGJlZW4gdXBkYXRlZC4oS2V5UmVtb3ZlZAACBIBUaGUga2V5IHdhcyBwZXJtYW5lbnRseSByZW1vdmVkLihTdWRvQXNEb25lBAEsc3Vkb19yZXN1bHTRAwE4RGlzcGF0Y2hSZXN1bHQEtFRoZSByZXN1bHQgb2YgdGhlIGNhbGwgbWFkZSBieSB0aGUgc3VkbyB1c2VyLgMEyEEgW3N1ZG9fYXNdKFBhbGxldDo6c3Vkb19hcykgY2FsbCBqdXN0IHRvb2sgcGxhY2UuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0LQQEGE9wdGlvbgQEVAEEAQgQTm9uZQAAABBTb21lBAAEAAABAAAxBAgwZnJhbWVfc3lzdGVtFFBoYXNlAAEMOEFwcGx5RXh0cmluc2ljBAA4AQx1MzIAAAAwRmluYWxpemF0aW9uAAEAOEluaXRpYWxpemF0aW9uAAIAADUEAAACPAA5BAAAAj0EAD0EAAAECDg4AEEECDBmcmFtZV9zeXN0ZW1YTGFzdFJ1bnRpbWVVcGdyYWRlSW5mbwAACAEwc3BlY192ZXJzaW9uYAFMY29kZWM6OkNvbXBhY3Q8dTMyPgABJHNwZWNfbmFtZUUEAURDb3c8J3N0YXRpYywgc3RyPgAARQQEDENvdwQEVAFJBAAEAEkEAAAASQQAAAUCAE0ECDBmcmFtZV9zeXN0ZW1gQ29kZVVwZ3JhZGVBdXRob3JpemF0aW9uBARUAAAIASRjb2RlX2hhc2g8ARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvbjEBARBib29sAABRBAwwZnJhbWVfc3lzdGVtGGxpbWl0czBCbG9ja1dlaWdodHMAAAwBKGJhc2VfYmxvY2spAQEYV2VpZ2h0AAEkbWF4X2Jsb2NrKQEBGFdlaWdodAABJHBlcl9jbGFzc1UEAYRQZXJEaXNwYXRjaENsYXNzPFdlaWdodHNQZXJDbGFzcz4AAFUEDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBWQQADAEYbm9ybWFsWQQBBFQAASxvcGVyYXRpb25hbFkEAQRUAAEkbWFuZGF0b3J5WQQBBFQAAFkEDDBmcmFtZV9zeXN0ZW0YbGltaXRzPFdlaWdodHNQZXJDbGFzcwAAEAE4YmFzZV9leHRyaW5zaWMpAQEYV2VpZ2h0AAE0bWF4X2V4dHJpbnNpY70CAThPcHRpb248V2VpZ2h0PgABJG1heF90b3RhbL0CAThPcHRpb248V2VpZ2h0PgABIHJlc2VydmVkvQIBOE9wdGlvbjxXZWlnaHQ+AABdBAwwZnJhbWVfc3lzdGVtGGxpbWl0cyxCbG9ja0xlbmd0aAAACAEMbWF4YQQBVFBlckRpc3BhdGNoQ2xhc3M8dTMyPgABPG1heF9oZWFkZXJfc2l6ZSEDASxPcHRpb248dTMyPgAAYQQMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAE4AAwBGG5vcm1hbDgBBFQAASxvcGVyYXRpb25hbDgBBFQAASRtYW5kYXRvcnk4AQRUAABlBAgoc3Bfd2VpZ2h0czxSdW50aW1lRGJXZWlnaHQAAAgBEHJlYWQoAQx1NjQAARR3cml0ZSgBDHU2NAAAaQQIKHNwX3ZlcnNpb244UnVudGltZVZlcnNpb24AACABJHNwZWNfbmFtZUUEAURDb3c8J3N0YXRpYywgc3RyPgABJGltcGxfbmFtZUUEAURDb3c8J3N0YXRpYywgc3RyPgABRGF1dGhvcmluZ192ZXJzaW9uOAEMdTMyAAEwc3BlY192ZXJzaW9uOAEMdTMyAAEwaW1wbF92ZXJzaW9uOAEMdTMyAAEQYXBpc20EARxBcGlzVmVjAAFMdHJhbnNhY3Rpb25fdmVyc2lvbjgBDHUzMgABOHN5c3RlbV92ZXJzaW9uDAEIdTgAAG0EBAxDb3cEBFQBcQQABABxBAAAAHEEAAACdQQAdQQAAAQI2QE4AHkEDDBmcmFtZV9zeXN0ZW0YcGFsbGV0FEVycm9yBARUAAEkPEludmFsaWRTcGVjTmFtZQAACBEBVGhlIG5hbWUgb2Ygc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBtYXRjaCBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS5oU3BlY1ZlcnNpb25OZWVkc1RvSW5jcmVhc2UAAQhBAVRoZSBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaXMgbm90IGFsbG93ZWQgdG8gZGVjcmVhc2UgYmV0d2VlbiB0aGUgY3VycmVudCBydW50aW1lUGFuZCB0aGUgbmV3IHJ1bnRpbWUudEZhaWxlZFRvRXh0cmFjdFJ1bnRpbWVWZXJzaW9uAAIM7EZhaWxlZCB0byBleHRyYWN0IHRoZSBydW50aW1lIHZlcnNpb24gZnJvbSB0aGUgbmV3IHJ1bnRpbWUuAAkBRWl0aGVyIGNhbGxpbmcgYENvcmVfdmVyc2lvbmAgb3IgZGVjb2RpbmcgYFJ1bnRpbWVWZXJzaW9uYCBmYWlsZWQuTE5vbkRlZmF1bHRDb21wb3NpdGUAAwT8U3VpY2lkZSBjYWxsZWQgd2hlbiB0aGUgYWNjb3VudCBoYXMgbm9uLWRlZmF1bHQgY29tcG9zaXRlIGRhdGEuPE5vblplcm9SZWZDb3VudAAEBDUBVGhlcmUgaXMgYSBub24temVybyByZWZlcmVuY2UgY291bnQgcHJldmVudGluZyB0aGUgYWNjb3VudCBmcm9tIGJlaW5nIHB1cmdlZC4wQ2FsbEZpbHRlcmVkAAUE0FRoZSBvcmlnaW4gZmlsdGVyIHByZXZlbnQgdGhlIGNhbGwgdG8gYmUgZGlzcGF0Y2hlZC5sTXVsdGlCbG9ja01pZ3JhdGlvbnNPbmdvaW5nAAYEVQFBIG11bHRpLWJsb2NrIG1pZ3JhdGlvbiBpcyBvbmdvaW5nIGFuZCBwcmV2ZW50cyB0aGUgY3VycmVudCBjb2RlIGZyb20gYmVpbmcgcmVwbGFjZWQuRE5vdGhpbmdBdXRob3JpemVkAAcEWE5vIHVwZ3JhZGUgYXV0aG9yaXplZC4wVW5hdXRob3JpemVkAAgElFRoZSBzdWJtaXR0ZWQgY29kZSBpcyBub3QgYXV0aG9yaXplZC4EbEVycm9yIGZvciB0aGUgU3lzdGVtIHBhbGxldH0EDChzcF9ydW50aW1lGHRyYWl0cyxCbGFrZVR3bzI1NgAAAACBBBAoc3BfcnVudGltZRxnZW5lcmljFGJsb2NrFEJsb2NrCBhIZWFkZXIBXCRFeHRyaW5zaWMBhQQACAEYaGVhZGVyXAEYSGVhZGVyAAEoZXh0cmluc2ljc5EEAThWZWM8RXh0cmluc2ljPgAAhQQQKHNwX3J1bnRpbWUcZ2VuZXJpY0x1bmNoZWNrZWRfZXh0cmluc2ljSFVuY2hlY2tlZEV4dHJpbnNpYxAcQWRkcmVzcwEAEENhbGwBICRTaWduYXR1cmUBQQMURXh0cmEBiQQABAAYAAAAiQQIdGN1bXVsdXNfcGFsbGV0X3dlaWdodF9yZWNsYWltUFN0b3JhZ2VXZWlnaHRSZWNsYWltCARUAARTAY0EAAQAjQQBBFMAAI0EAAAELE0DUQNVA1kDXQNhA2kDbQNxA3UDeQMAkQQAAAKFBACVBAAAApkEAJkEDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudCBBbmNlc3RvcgQESAE8AAwBOHVzZWRfYmFuZHdpZHRonQQBNFVzZWRCYW5kd2lkdGgAAThwYXJhX2hlYWRfaGFzaLEEASRPcHRpb248SD4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWy1BAGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AAJ0EDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudDRVc2VkQmFuZHdpZHRoAAAMATR1bXBfbXNnX2NvdW50OAEMdTMyAAE8dW1wX3RvdGFsX2J5dGVzOAEMdTMyAAE0aHJtcF9vdXRnb2luZ6EEAYxCVHJlZU1hcDxQYXJhSWQsIEhybXBDaGFubmVsVXBkYXRlPgAAoQQEIEJUcmVlTWFwCARLAZwEVgGlBAAEAKkEAAAApQQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50REhybXBDaGFubmVsVXBkYXRlAAAIASRtc2dfY291bnQ4AQx1MzIAASx0b3RhbF9ieXRlczgBDHUzMgAAqQQAAAKtBACtBAAABAicpQQAsQQEGE9wdGlvbgQEVAE8AQgQTm9uZQAAABBTb21lBAA8AAABAAC1BAQYT3B0aW9uBARUAbkEAQgQTm9uZQAAABBTb21lBAC5BAAAAQAAuQQMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk4VXBncmFkZUdvQWhlYWQAAQgUQWJvcnQAAAAcR29BaGVhZAABAAC9BAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQ4U2VnbWVudFRyYWNrZXIEBEgBPAAMATh1c2VkX2JhbmR3aWR0aJ0EATRVc2VkQmFuZHdpZHRoAAE4aHJtcF93YXRlcm1hcmshAwGAT3B0aW9uPHJlbGF5X2NoYWluOjpCbG9ja051bWJlcj4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWy1BAGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AAMEEBBhPcHRpb24EBFQBxQQBCBBOb25lAAAAEFNvbWUEAMUEAAABAADFBAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUhVcGdyYWRlUmVzdHJpY3Rpb24AAQQcUHJlc2VudAAAAADJBAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdFhNZXNzYWdpbmdTdGF0ZVNuYXBzaG90AAAQATBkbXFfbXFjX2hlYWQ8AURyZWxheV9jaGFpbjo6SGFzaAABnHJlbGF5X2Rpc3BhdGNoX3F1ZXVlX3JlbWFpbmluZ19jYXBhY2l0ec0EAYxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQABQGluZ3Jlc3NfY2hhbm5lbHPRBAGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgABPGVncmVzc19jaGFubmVsc9EEAYhWZWM8KFBhcmFJZCwgQWJyaWRnZWRIcm1wQ2hhbm5lbCk+AADNBAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdIxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQAACAE8cmVtYWluaW5nX2NvdW50OAEMdTMyAAE4cmVtYWluaW5nX3NpemU4AQx1MzIAANEEAAAC1QQA1QQAAAQInNkEANkEDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5TEFicmlkZ2VkSHJtcENoYW5uZWwAABgBMG1heF9jYXBhY2l0eTgBDHUzMgABOG1heF90b3RhbF9zaXplOAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZTgBDHUzMgABJG1zZ19jb3VudDgBDHUzMgABKHRvdGFsX3NpemU4AQx1MzIAASBtcWNfaGVhZLEEATBPcHRpb248SGFzaD4AAN0EDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5ZEFicmlkZ2VkSG9zdENvbmZpZ3VyYXRpb24AACgBNG1heF9jb2RlX3NpemU4AQx1MzIAAUhtYXhfaGVhZF9kYXRhX3NpemU4AQx1MzIAAVhtYXhfdXB3YXJkX3F1ZXVlX2NvdW50OAEMdTMyAAFUbWF4X3Vwd2FyZF9xdWV1ZV9zaXplOAEMdTMyAAFcbWF4X3Vwd2FyZF9tZXNzYWdlX3NpemU4AQx1MzIAAZBtYXhfdXB3YXJkX21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGU4AQx1MzIAAYhocm1wX21heF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAFsdmFsaWRhdGlvbl91cGdyYWRlX2Nvb2xkb3duOAEsQmxvY2tOdW1iZXIAAWB2YWxpZGF0aW9uX3VwZ3JhZGVfZGVsYXk4ASxCbG9ja051bWJlcgABUGFzeW5jX2JhY2tpbmdfcGFyYW1z4QQBSEFzeW5jQmFja2luZ1BhcmFtcwAA4QQQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk0YXN5bmNfYmFja2luZ0hBc3luY0JhY2tpbmdQYXJhbXMAAAgBTG1heF9jYW5kaWRhdGVfZGVwdGg4AQx1MzIAAVBhbGxvd2VkX2FuY2VzdHJ5X2xlbjgBDHUzMgAA5QQIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnRETWVzc2FnZVF1ZXVlQ2hhaW4AAAQAPAEkUmVsYXlIYXNoAADpBAQgQlRyZWVNYXAIBEsBnARWAeUEAAQA7QQAAADtBAAAAvEEAPEEAAAECJzlBAD1BAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRASW5ib3VuZE1lc3NhZ2VJZAAACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEscmV2ZXJzZV9pZHg4AQx1MzIAAPkEAAAC/QQA/QQIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0xPdXRib3VuZEhybXBNZXNzYWdlBAhJZAGcAAgBJHJlY2lwaWVudJwBCElkAAEQZGF0YRgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AAAEFDDRzcF9hcml0aG1ldGljLGZpeGVkX3BvaW50JEZpeGVkVTEyOAAABAD8ARB1MTI4AAAFBQx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAARhMT3ZlcmxhcHBpbmdVcGdyYWRlcwAABBkBQXR0ZW1wdCB0byB1cGdyYWRlIHZhbGlkYXRpb24gZnVuY3Rpb24gd2hpbGUgZXhpc3RpbmcgdXBncmFkZSBwZW5kaW5nLlBQcm9oaWJpdGVkQnlQb2xrYWRvdAABBE0BUG9sa2Fkb3QgY3VycmVudGx5IHByb2hpYml0cyB0aGlzIHBhcmFjaGFpbiBmcm9tIHVwZ3JhZGluZyBpdHMgdmFsaWRhdGlvbiBmdW5jdGlvbi4YVG9vQmlnAAIIRQFUaGUgc3VwcGxpZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiBoYXMgY29tcGlsZWQgaW50byBhIGJsb2IgbGFyZ2VyIHRoYW4gUG9sa2Fkb3QgaXM8d2lsbGluZyB0byBydW4uaFZhbGlkYXRpb25EYXRhTm90QXZhaWxhYmxlAAMEHQFUaGUgaW5oZXJlbnQgd2hpY2ggc3VwcGxpZXMgdGhlIHZhbGlkYXRpb24gZGF0YSBkaWQgbm90IHJ1biB0aGlzIGJsb2NrLnRIb3N0Q29uZmlndXJhdGlvbk5vdEF2YWlsYWJsZQAEBCkBVGhlIGluaGVyZW50IHdoaWNoIHN1cHBsaWVzIHRoZSBob3N0IGNvbmZpZ3VyYXRpb24gZGlkIG5vdCBydW4gdGhpcyBibG9jay4wTm90U2NoZWR1bGVkAAUE2E5vIHZhbGlkYXRpb24gZnVuY3Rpb24gdXBncmFkZSBpcyBjdXJyZW50bHkgc2NoZWR1bGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4JBQw4cGFsbGV0X3V0aWxpdHkYcGFsbGV0FEVycm9yBARUAAEEMFRvb01hbnlDYWxscwAABFxUb28gbWFueSBjYWxscyBiYXRjaGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4NBQxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAREFBFMAAAQAGQUBGFZlYzxUPgAAEQUMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxCYWxhbmNlTG9jawQcQmFsYW5jZQH8AAwBCGlk2QEBOExvY2tJZGVudGlmaWVyAAEYYW1vdW50/AEcQmFsYW5jZQABHHJlYXNvbnMVBQEcUmVhc29ucwAAFQUMPHBhbGxldF9iYWxhbmNlcxR0eXBlcxxSZWFzb25zAAEMDEZlZQAAABBNaXNjAAEADEFsbAACAAAZBQAAAhEFAB0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBIQUEUwAABAAlBQEYVmVjPFQ+AAAhBQw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLFJlc2VydmVEYXRhCERSZXNlcnZlSWRlbnRpZmllcgHZARxCYWxhbmNlAfwACAEIaWTZAQFEUmVzZXJ2ZUlkZW50aWZpZXIAARhhbW91bnT8ARxCYWxhbmNlAAAlBQAAAiEFACkFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBLQUEUwAABAAxBQEYVmVjPFQ+AAAtBRQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2MgSWRBbW91bnQICElkAd0DHEJhbGFuY2UB/AAIAQhpZN0DAQhJZAABGGFtb3VudPwBHEJhbGFuY2UAADEFAAACLQUANQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE5BQRTAAAEAD0FARhWZWM8VD4AADkFFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYyBJZEFtb3VudAgISWQBEBxCYWxhbmNlAfwACAEIaWQQAQhJZAABGGFtb3VudPwBHEJhbGFuY2UAAD0FAAACOQUAQQUMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXJyb3IIBFQABEkAATA4VmVzdGluZ0JhbGFuY2UAAAScVmVzdGluZyBiYWxhbmNlIHRvbyBoaWdoIHRvIHNlbmQgdmFsdWUuVExpcXVpZGl0eVJlc3RyaWN0aW9ucwABBMhBY2NvdW50IGxpcXVpZGl0eSByZXN0cmljdGlvbnMgcHJldmVudCB3aXRoZHJhd2FsLkxJbnN1ZmZpY2llbnRCYWxhbmNlAAIEeEJhbGFuY2UgdG9vIGxvdyB0byBzZW5kIHZhbHVlLkhFeGlzdGVudGlhbERlcG9zaXQAAwTsVmFsdWUgdG9vIGxvdyB0byBjcmVhdGUgYWNjb3VudCBkdWUgdG8gZXhpc3RlbnRpYWwgZGVwb3NpdC40RXhwZW5kYWJpbGl0eQAEBJBUcmFuc2Zlci9wYXltZW50IHdvdWxkIGtpbGwgYWNjb3VudC5cRXhpc3RpbmdWZXN0aW5nU2NoZWR1bGUABQTMQSB2ZXN0aW5nIHNjaGVkdWxlIGFscmVhZHkgZXhpc3RzIGZvciB0aGlzIGFjY291bnQuLERlYWRBY2NvdW50AAYEjEJlbmVmaWNpYXJ5IGFjY291bnQgbXVzdCBwcmUtZXhpc3QuPFRvb01hbnlSZXNlcnZlcwAHBLhOdW1iZXIgb2YgbmFtZWQgcmVzZXJ2ZXMgZXhjZWVkIGBNYXhSZXNlcnZlc2AuMFRvb01hbnlIb2xkcwAIBPhOdW1iZXIgb2YgaG9sZHMgZXhjZWVkIGBWYXJpYW50Q291bnRPZjxUOjpSdW50aW1lSG9sZFJlYXNvbj5gLjhUb29NYW55RnJlZXplcwAJBJhOdW1iZXIgb2YgZnJlZXplcyBleGNlZWQgYE1heEZyZWV6ZXNgLkxJc3N1YW5jZURlYWN0aXZhdGVkAAoEAQFUaGUgaXNzdWFuY2UgY2Fubm90IGJlIG1vZGlmaWVkIHNpbmNlIGl0IGlzIGFscmVhZHkgZGVhY3RpdmF0ZWQuJERlbHRhWmVybwALBGRUaGUgZGVsdGEgY2Fubm90IGJlIHplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LkUFCGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudCBSZWxlYXNlcwABCCRWMUFuY2llbnQAAAAIVjIAAQAASQUQNGZyYW1lX3N1cHBvcnQYdHJhaXRzHHN0b3JhZ2UYTm9Ecm9wBARUAU0FAAQATQUBBFQAAE0FGDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGUkaW1iYWxhbmNlJEltYmFsYW5jZQwEQgH8GE9uRHJvcAA4T3Bwb3NpdGVPbkRyb3AAAAQBGGFtb3VudPwBBEIAAFEFCGhwYWxsZXRfdHJhbnNhY3Rpb25fc3RvcmFnZTRBdXRob3JpemF0aW9uBCxCbG9ja051bWJlcgE4AAgBGGV4dGVudFUFAUxBdXRob3JpemF0aW9uRXh0ZW50AAEoZXhwaXJhdGlvbjgBLEJsb2NrTnVtYmVyAABVBQhocGFsbGV0X3RyYW5zYWN0aW9uX3N0b3JhZ2VMQXV0aG9yaXphdGlvbkV4dGVudAAACAEwdHJhbnNhY3Rpb25zOAEMdTMyAAEUYnl0ZXMoAQx1NjQAAFkFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBXQUEUwAABABhBQEYVmVjPFQ+AABdBQhocGFsbGV0X3RyYW5zYWN0aW9uX3N0b3JhZ2U8VHJhbnNhY3Rpb25JbmZvAAAYAShjaHVua19yb290PAF0PEJsYWtlVHdvMjU2IGFzIEhhc2g+OjpPdXRwdXQAATBjb250ZW50X2hhc2gIASxDb250ZW50SGFzaAABHGhhc2hpbmdFAQFASGFzaGluZ0FsZ29yaXRobQABJGNpZF9jb2RlYygBIENpZENvZGVjAAEQc2l6ZTgBDHUzMgABMGJsb2NrX2NodW5rczgBKENodW5rSW5kZXgAAGEFAAACXQUAZQUMaHBhbGxldF90cmFuc2FjdGlvbl9zdG9yYWdlGHBhbGxldBRFcnJvcgQEVAABOChCYWRDb250ZXh0AAAE9EF0dGVtcHRlZCB0byBjYWxsIGBzdG9yZWAvYHJlbmV3YCBvdXRzaWRlIG9mIGJsb2NrIGV4ZWN1dGlvbi4sQmFkRGF0YVNpemUAAQSYRGF0YSBzaXplIGlzIG5vdCBpbiB0aGUgYWxsb3dlZCByYW5nZS5MVG9vTWFueVRyYW5zYWN0aW9ucwACBIxUb28gbWFueSB0cmFuc2FjdGlvbnMgaW4gdGhlIGJsb2NrLjROb3RDb25maWd1cmVkAAMEWEludmFsaWQgY29uZmlndXJhdGlvbi48UmVuZXdlZE5vdEZvdW5kAAQEfFJlbmV3ZWQgZXh0cmluc2ljIGlzIG5vdCBmb3VuZC48VW5leHBlY3RlZFByb29mAAUElFByb29mIHdhcyBub3QgZXhwZWN0ZWQgaW4gdGhpcyBibG9jay4wSW52YWxpZFByb29mAAYEaFByb29mIGZhaWxlZCB2ZXJpZmljYXRpb24uME1pc3NpbmdQcm9vZgAHBFhNaXNzaW5nIHN0b3JhZ2UgcHJvb2YuQE1pc3NpbmdTdGF0ZURhdGEACATUVW5hYmxlIHRvIHZlcmlmeSBwcm9vZiBiZWNhdXNlIHN0YXRlIGRhdGEgaXMgbWlzc2luZy4sRG91YmxlQ2hlY2sACQSARG91YmxlIHByb29mIGNoZWNrIGluIHRoZSBibG9jay48UHJvb2ZOb3RDaGVja2VkAAoErFN0b3JhZ2UgcHJvb2Ygd2FzIG5vdCBjaGVja2VkIGluIHRoZSBibG9jay5UQXV0aG9yaXphdGlvbk5vdEZvdW5kAAsEcEF1dGhvcml6YXRpb24gd2FzIG5vdCBmb3VuZC5cQXV0aG9yaXphdGlvbk5vdEV4cGlyZWQADAR4QXV0aG9yaXphdGlvbiBoYXMgbm90IGV4cGlyZWQuSEludmFsaWRDb250ZW50SGFzaAANBIBDb250ZW50IGhhc2ggd2FzIG5vdCBjYWxjdWxhdGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5pBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABAA1AQEYVmVjPFQ+AABtBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAXEFBFMAAAQAdQUBGFZlYzxUPgAAcQUMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0NENhbmRpZGF0ZUluZm8IJEFjY291bnRJZAEEHEJhbGFuY2UB/AAIAQx3aG8EASRBY2NvdW50SWQAARxkZXBvc2l0/AEcQmFsYW5jZQAAdQUAAAJxBQB5BQg0ZnJhbWVfc3VwcG9ydCBQYWxsZXRJZAAABADZAQEcW3U4OyA4XQAAfQUMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEVycm9yBARUAAFERFRvb01hbnlDYW5kaWRhdGVzAAAEjFRoZSBwYWxsZXQgaGFzIHRvbyBtYW55IGNhbmRpZGF0ZXMuXFRvb0Zld0VsaWdpYmxlQ29sbGF0b3JzAAEErExlYXZpbmcgd291bGQgcmVzdWx0IGluIHRvbyBmZXcgY2FuZGlkYXRlcy5AQWxyZWFkeUNhbmRpZGF0ZQACBHxBY2NvdW50IGlzIGFscmVhZHkgYSBjYW5kaWRhdGUuME5vdENhbmRpZGF0ZQADBGxBY2NvdW50IGlzIG5vdCBhIGNhbmRpZGF0ZS5QVG9vTWFueUludnVsbmVyYWJsZXMABASEVGhlcmUgYXJlIHRvbyBtYW55IEludnVsbmVyYWJsZXMuTEFscmVhZHlJbnZ1bG5lcmFibGUABQSMQWNjb3VudCBpcyBhbHJlYWR5IGFuIEludnVsbmVyYWJsZS48Tm90SW52dWxuZXJhYmxlAAYEfEFjY291bnQgaXMgbm90IGFuIEludnVsbmVyYWJsZS5cTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQABwScQWNjb3VudCBoYXMgbm8gYXNzb2NpYXRlZCB2YWxpZGF0b3IgSUQuWFZhbGlkYXRvck5vdFJlZ2lzdGVyZWQACASMVmFsaWRhdG9yIElEIGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZC5sSW5zZXJ0VG9DYW5kaWRhdGVMaXN0RmFpbGVkAAkEnENvdWxkIG5vdCBpbnNlcnQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LnRSZW1vdmVGcm9tQ2FuZGlkYXRlTGlzdEZhaWxlZAAKBKRDb3VsZCBub3QgcmVtb3ZlIGZyb20gdGhlIGNhbmRpZGF0ZSBsaXN0LjREZXBvc2l0VG9vTG93AAsE9E5ldyBkZXBvc2l0IGFtb3VudCB3b3VsZCBiZSBiZWxvdyB0aGUgbWluaW11bSBjYW5kaWRhY3kgYm9uZC5kVXBkYXRlQ2FuZGlkYXRlTGlzdEZhaWxlZAAMBJBDb3VsZCBub3QgdXBkYXRlIHRoZSBjYW5kaWRhdGUgbGlzdC5ASW5zdWZmaWNpZW50Qm9uZAANBCkBRGVwb3NpdCBhbW91bnQgaXMgdG9vIGxvdyB0byB0YWtlIHRoZSB0YXJnZXQncyBzbG90IGluIHRoZSBjYW5kaWRhdGUgbGlzdC5QVGFyZ2V0SXNOb3RDYW5kaWRhdGUADgQtAVRoZSB0YXJnZXQgYWNjb3VudCB0byBiZSByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgaXMgbm90IGEgY2FuZGlkYXRlLkBJZGVudGljYWxEZXBvc2l0AA8EDQFUaGUgdXBkYXRlZCBkZXBvc2l0IGFtb3VudCBpcyBlcXVhbCB0byB0aGUgYW1vdW50IGFscmVhZHkgcmVzZXJ2ZWQuQEludmFsaWRVbnJlc2VydmUAEAQ9AUNhbm5vdCBsb3dlciBjYW5kaWRhY3kgYm9uZCB3aGlsZSBvY2N1cHlpbmcgYSBmdXR1cmUgY29sbGF0b3Igc2xvdCBpbiB0aGUgbGlzdC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQugQUAAAKFBQCFBQAABAgEVQEAiQUAAAKNBQCNBQAABAg4kQUAkQUMKHNwX3N0YWtpbmccb2ZmZW5jZTxPZmZlbmNlU2V2ZXJpdHkAAAQAlQUBHFBlcmJpbGwAAJUFDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVyYmlsbAAABAA4AQx1MzIAAJkFAAAECJ0FGACdBQwcc3BfY29yZRhjcnlwdG8kS2V5VHlwZUlkAAAEAHABHFt1ODsgNF0AAKEFDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXJyb3IEBFQAARQwSW52YWxpZFByb29mAAAEYEludmFsaWQgb3duZXJzaGlwIHByb29mLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAABBJxObyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRCBmb3IgYWNjb3VudC40RHVwbGljYXRlZEtleQACBGRSZWdpc3RlcmVkIGR1cGxpY2F0ZSBrZXkuGE5vS2V5cwADBKRObyBrZXlzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBhY2NvdW50LiROb0FjY291bnQABAQZAUtleSBzZXR0aW5nIGFjY291bnQgaXMgbm90IGxpdmUsIHNvIGl0J3MgaW1wb3NzaWJsZSB0byBhc3NvY2lhdGUga2V5cy4EdEVycm9yIGZvciB0aGUgc2Vzc2lvbiBwYWxsZXQupQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFZAQRTAAAEAKkFARhWZWM8VD4AAKkFAAACWQEArQUISHNwX2NvbnNlbnN1c19zbG90cxBTbG90AAAEACgBDHU2NAAAsQUAAAQIrQU4ALUFDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAGcBFMAAAQAuQUBLEJUcmVlU2V0PFQ+AAC5BQQgQlRyZWVTZXQEBFQBnAAEAL0FAAAAvQUAAAKcAMEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBxQUEUwAABADNBQEYVmVjPFQ+AADFBQhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZVhPdXRib3VuZENoYW5uZWxEZXRhaWxzAAAUASRyZWNpcGllbnScARhQYXJhSWQAARRzdGF0ZckFATRPdXRib3VuZFN0YXRlAAE0c2lnbmFsc19leGlzdDEBARBib29sAAEsZmlyc3RfaW5kZXjEAQx1MTYAAShsYXN0X2luZGV4xAEMdTE2AADJBQhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTRPdXRib3VuZFN0YXRlAAEICE9rAAAAJFN1c3BlbmRlZAABAADNBQAAAsUFANEFAAAECJzEANUFDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAA2QUIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU8UXVldWVDb25maWdEYXRhAAAMAURzdXNwZW5kX3RocmVzaG9sZDgBDHUzMgABOGRyb3BfdGhyZXNob2xkOAEMdTMyAAFAcmVzdW1lX3RocmVzaG9sZDgBDHUzMgAA3QUMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEVycm9yBARUAAEUOEJhZFF1ZXVlQ29uZmlnAAAEEQFTZXR0aW5nIHRoZSBxdWV1ZSBjb25maWcgZmFpbGVkIHNpbmNlIG9uZSBvZiBpdHMgdmFsdWVzIHdhcyBpbnZhbGlkLkBBbHJlYWR5U3VzcGVuZGVkAAEEjFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSBzdXNwZW5kZWQuOEFscmVhZHlSZXN1bWVkAAIEhFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSByZXN1bWVkLnRUb29NYW55QWN0aXZlT3V0Ym91bmRDaGFubmVscwADBLBUaGVyZSBhcmUgdG9vIG1hbnkgYWN0aXZlIG91dGJvdW5kIGNoYW5uZWxzLhhUb29CaWcABARcVGhlIG1lc3NhZ2UgaXMgdG9vIGJpZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu4QUMKHBhbGxldF94Y20YcGFsbGV0LFF1ZXJ5U3RhdHVzBCxCbG9ja051bWJlcgE4AQwcUGVuZGluZxABJHJlc3BvbmRlcmUBAURWZXJzaW9uZWRMb2NhdGlvbgABTG1heWJlX21hdGNoX3F1ZXJpZXLlBQFkT3B0aW9uPFZlcnNpb25lZExvY2F0aW9uPgABMG1heWJlX25vdGlmeekFAUBPcHRpb248KHU4LCB1OCk+AAEcdGltZW91dDgBLEJsb2NrTnVtYmVyAAAAPFZlcnNpb25Ob3RpZmllcggBGG9yaWdpbmUBAURWZXJzaW9uZWRMb2NhdGlvbgABJGlzX2FjdGl2ZTEBARBib29sAAEAFFJlYWR5CAEgcmVzcG9uc2XxBQFEVmVyc2lvbmVkUmVzcG9uc2UAAQhhdDgBLEJsb2NrTnVtYmVyAAIAAOUFBBhPcHRpb24EBFQBZQEBCBBOb25lAAAAEFNvbWUEAGUBAAABAADpBQQYT3B0aW9uBARUAe0FAQgQTm9uZQAAABBTb21lBADtBQAAAQAA7QUAAAQIDAwA8QUIDHhjbURWZXJzaW9uZWRSZXNwb25zZQABDAhWMwQA4QEBMHYzOjpSZXNwb25zZQADAAhWNAQATQIBMHY0OjpSZXNwb25zZQAEAAhWNQQAmQIBMHY1OjpSZXNwb25zZQAFAAD1BQAABAg4ZQEA+QUAAAQMKCkBOAD9BQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQEGBFMAAAQABQYBGFZlYzxUPgAAAQYAAAQIZQE4AAUGAAACAQYACQYMKHBhbGxldF94Y20YcGFsbGV0VFZlcnNpb25NaWdyYXRpb25TdGFnZQABEFxNaWdyYXRlU3VwcG9ydGVkVmVyc2lvbgAAAFxNaWdyYXRlVmVyc2lvbk5vdGlmaWVycwABAFBOb3RpZnlDdXJyZW50VGFyZ2V0cwQA/QMBPE9wdGlvbjxWZWM8dTg+PgACAGhNaWdyYXRlQW5kTm90aWZ5T2xkVGFyZ2V0cwADAAANBgAABAw4BCkDABEGDChwYWxsZXRfeGNtGHBhbGxldGhSZW1vdGVMb2NrZWRGdW5naWJsZVJlY29yZAhIQ29uc3VtZXJJZGVudGlmaWVyARAwTWF4Q29uc3VtZXJzAAAQARhhbW91bnT8ARB1MTI4AAEUb3duZXJlAQFEVmVyc2lvbmVkTG9jYXRpb24AARhsb2NrZXJlAQFEVmVyc2lvbmVkTG9jYXRpb24AASRjb25zdW1lcnMVBgHQQm91bmRlZFZlYzwoQ29uc3VtZXJJZGVudGlmaWVyLCB1MTI4KSwgTWF4Q29uc3VtZXJzPgAAFQYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEZBgRTAAAEAB0GARhWZWM8VD4AABkGAAAECBD8AB0GAAACGQYAIQYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAElBgRTAAAEACkGARhWZWM8VD4AACUGAAAECPxlAQApBgAAAiUGAC0GCChwYWxsZXRfeGNtWEF1dGhvcml6ZWRBbGlhc2VzRW50cnkIGFRpY2tldAExBgxNQVgBNQYACAEgYWxpYXNlcnM5BgF4Qm91bmRlZFZlYzxPcmlnaW5BbGlhc2VyLCBNQVg+AAEYdGlja2V0MQYBGFRpY2tldAAAMQYUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQA/AEoRjo6QmFsYW5jZQAANQYMKHBhbGxldF94Y20YcGFsbGV0UE1heEF1dGhvcml6ZWRBbGlhc2VzAAAAADkGDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBPQYEUwAABABBBgEYVmVjPFQ+AAA9BgxAeGNtX3J1bnRpbWVfYXBpc0hhdXRob3JpemVkX2FsaWFzZXM0T3JpZ2luQWxpYXNlcgAACAEgbG9jYXRpb25lAQFEVmVyc2lvbmVkTG9jYXRpb24AARhleHBpcnktAwEsT3B0aW9uPHU2ND4AAEEGAAACPQYARQYMKHBhbGxldF94Y20YcGFsbGV0FEVycm9yBARUAAFwLFVucmVhY2hhYmxlAAAIXQFUaGUgZGVzaXJlZCBkZXN0aW5hdGlvbiB3YXMgdW5yZWFjaGFibGUsIGdlbmVyYWxseSBiZWNhdXNlIHRoZXJlIGlzIGEgbm8gd2F5IG9mIHJvdXRpbmcYdG8gaXQuLFNlbmRGYWlsdXJlAAEIQQFUaGVyZSB3YXMgc29tZSBvdGhlciBpc3N1ZSAoaS5lLiBub3QgdG8gZG8gd2l0aCByb3V0aW5nKSBpbiBzZW5kaW5nIHRoZSBtZXNzYWdlLshQZXJoYXBzIGEgbGFjayBvZiBzcGFjZSBmb3IgYnVmZmVyaW5nIHRoZSBtZXNzYWdlLiBGaWx0ZXJlZAACBJxUaGUgbWVzc2FnZSBleGVjdXRpb24gZmFpbHMgdGhlIGZpbHRlci5IVW53ZWlnaGFibGVNZXNzYWdlAAMEtFRoZSBtZXNzYWdlJ3Mgd2VpZ2h0IGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkLmBEZXN0aW5hdGlvbk5vdEludmVydGlibGUABATcVGhlIGRlc3RpbmF0aW9uIGBMb2NhdGlvbmAgcHJvdmlkZWQgY2Fubm90IGJlIGludmVydGVkLhRFbXB0eQAFBIBUaGUgYXNzZXRzIHRvIGJlIHNlbnQgYXJlIGVtcHR5LjhDYW5ub3RSZWFuY2hvcgAGBDUBQ291bGQgbm90IHJlLWFuY2hvciB0aGUgYXNzZXRzIHRvIGRlY2xhcmUgdGhlIGZlZXMgZm9yIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi40VG9vTWFueUFzc2V0cwAHBMRUb28gbWFueSBhc3NldHMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuNEludmFsaWRPcmlnaW4ACAR4T3JpZ2luIGlzIGludmFsaWQgZm9yIHNlbmRpbmcuKEJhZFZlcnNpb24ACQQhAVRoZSB2ZXJzaW9uIG9mIHRoZSBgVmVyc2lvbmVkYCB2YWx1ZSB1c2VkIGlzIG5vdCBhYmxlIHRvIGJlIGludGVycHJldGVkLixCYWRMb2NhdGlvbgAKCEEBVGhlIGdpdmVuIGxvY2F0aW9uIGNvdWxkIG5vdCBiZSB1c2VkIChlLmcuIGJlY2F1c2UgaXQgY2Fubm90IGJlIGV4cHJlc3NlZCBpbiB0aGVgZGVzaXJlZCB2ZXJzaW9uIG9mIFhDTSkuOE5vU3Vic2NyaXB0aW9uAAsEvFRoZSByZWZlcmVuY2VkIHN1YnNjcmlwdGlvbiBjb3VsZCBub3QgYmUgZm91bmQuREFscmVhZHlTdWJzY3JpYmVkAAwEEQFUaGUgbG9jYXRpb24gaXMgaW52YWxpZCBzaW5jZSBpdCBhbHJlYWR5IGhhcyBhIHN1YnNjcmlwdGlvbiBmcm9tIHVzLlhDYW5ub3RDaGVja091dFRlbGVwb3J0AA0EKQFDb3VsZCBub3QgY2hlY2stb3V0IHRoZSBhc3NldHMgZm9yIHRlbGVwb3J0YXRpb24gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluLihMb3dCYWxhbmNlAA4EQQFUaGUgb3duZXIgZG9lcyBub3Qgb3duIChhbGwpIG9mIHRoZSBhc3NldCB0aGF0IHRoZXkgd2lzaCB0byBkbyB0aGUgb3BlcmF0aW9uIG9uLjBUb29NYW55TG9ja3MADwTAVGhlIGFzc2V0IG93bmVyIGhhcyB0b28gbWFueSBsb2NrcyBvbiB0aGUgYXNzZXQuTEFjY291bnROb3RTb3ZlcmVpZ24AEAQxAVRoZSBnaXZlbiBhY2NvdW50IGlzIG5vdCBhbiBpZGVudGlmaWFibGUgc292ZXJlaWduIGFjY291bnQgZm9yIGFueSBsb2NhdGlvbi4oRmVlc05vdE1ldAARBCkBVGhlIG9wZXJhdGlvbiByZXF1aXJlZCBmZWVzIHRvIGJlIHBhaWQgd2hpY2ggdGhlIGluaXRpYXRvciBjb3VsZCBub3QgbWVldC4wTG9ja05vdEZvdW5kABIE9EEgcmVtb3RlIGxvY2sgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBkYXRhIGNvdWxkIG5vdCBiZSBmb3VuZC4USW5Vc2UAEwRJAVRoZSB1bmxvY2sgb3BlcmF0aW9uIGNhbm5vdCBzdWNjZWVkIGJlY2F1c2UgdGhlcmUgYXJlIHN0aWxsIGNvbnN1bWVycyBvZiB0aGUgbG9jay5oSW52YWxpZEFzc2V0VW5rbm93blJlc2VydmUAFQTwSW52YWxpZCBhc3NldCwgcmVzZXJ2ZSBjaGFpbiBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBmb3IgaXQueEludmFsaWRBc3NldFVuc3VwcG9ydGVkUmVzZXJ2ZQAWBEUBSW52YWxpZCBhc3NldCwgZG8gbm90IHN1cHBvcnQgcmVtb3RlIGFzc2V0IHJlc2VydmVzIHdpdGggZGlmZmVyZW50IGZlZXMgcmVzZXJ2ZXMuPFRvb01hbnlSZXNlcnZlcwAXBEkBVG9vIG1hbnkgYXNzZXRzIHdpdGggZGlmZmVyZW50IHJlc2VydmUgbG9jYXRpb25zIGhhdmUgYmVlbiBhdHRlbXB0ZWQgZm9yIHRyYW5zZmVyLmBMb2NhbEV4ZWN1dGlvbkluY29tcGxldGUAGAR8TG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlLmBUb29NYW55QXV0aG9yaXplZEFsaWFzZXMAGQS4VG9vIG1hbnkgbG9jYXRpb25zIGF1dGhvcml6ZWQgdG8gYWxpYXMgb3JpZ2luLjRFeHBpcmVzSW5QYXN0ABoEjEV4cGlyeSBibG9jayBudW1iZXIgaXMgaW4gdGhlIHBhc3QuNEFsaWFzTm90Rm91bmQAGwTQVGhlIGFsaWFzIHRvIHJlbW92ZSBhdXRob3JpemF0aW9uIGZvciB3YXMgbm90IGZvdW5kLoRMb2NhbEV4ZWN1dGlvbkluY29tcGxldGVXaXRoRXJyb3IIARRpbmRleAwBQEluc3RydWN0aW9uSW5kZXgAARRlcnJvckkGAThFeGVjdXRpb25FcnJvcgAcCDUBTG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlIHdpdGggdGhlIGFjdHVhbCBYQ00gZXJyb3IgYW5kIHRoZSBpbmRleCBvZiB0aGWIaW5zdHJ1Y3Rpb24gdGhhdCBjYXVzZWQgdGhlIGVycm9yLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5JBgwocGFsbGV0X3hjbRhlcnJvcnM4RXhlY3V0aW9uRXJyb3IAAaQgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiADRUb29NYW55QXNzZXRzACMATFVuaGFuZGxlZFhjbVZlcnNpb24AJABIV2VpZ2h0TGltaXRSZWFjaGVkACUAHEJhcnJpZXIAJgBMV2VpZ2h0Tm90Q29tcHV0YWJsZQAnAERFeGNlZWRzU3RhY2tMaW1pdAAoAABNBghQcGFsbGV0X21lc3NhZ2VfcXVldWUkQm9va1N0YXRlBDRNZXNzYWdlT3JpZ2luATkDABgBFGJlZ2luOAEkUGFnZUluZGV4AAEMZW5kOAEkUGFnZUluZGV4AAEUY291bnQ4ASRQYWdlSW5kZXgAAUByZWFkeV9uZWlnaGJvdXJzUQYBhE9wdGlvbjxOZWlnaGJvdXJzPE1lc3NhZ2VPcmlnaW4+PgABNG1lc3NhZ2VfY291bnQoAQx1NjQAARBzaXplKAEMdTY0AABRBgQYT3B0aW9uBARUAVUGAQgQTm9uZQAAABBTb21lBABVBgAAAQAAVQYIUHBhbGxldF9tZXNzYWdlX3F1ZXVlKE5laWdoYm91cnMENE1lc3NhZ2VPcmlnaW4BOQMACAEQcHJldjkDATRNZXNzYWdlT3JpZ2luAAEQbmV4dDkDATRNZXNzYWdlT3JpZ2luAABZBgAABAg5AzgAXQYIUHBhbGxldF9tZXNzYWdlX3F1ZXVlEFBhZ2UIEFNpemUBOCBIZWFwU2l6ZQAAGAEkcmVtYWluaW5nOAEQU2l6ZQABOHJlbWFpbmluZ19zaXplOAEQU2l6ZQABLGZpcnN0X2luZGV4OAEQU2l6ZQABFGZpcnN0OAEQU2l6ZQABEGxhc3Q4ARBTaXplAAEQaGVhcGEGAZxCb3VuZGVkVmVjPHU4LCBJbnRvVTMyPEhlYXBTaXplLCBTaXplPj4AAGEGDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAZQYMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFcnJvcgQEVAABJCxOb3RSZWFwYWJsZQAACEkBUGFnZSBpcyBub3QgcmVhcGFibGUgYmVjYXVzZSBpdCBoYXMgaXRlbXMgcmVtYWluaW5nIHRvIGJlIHByb2Nlc3NlZCBhbmQgaXMgbm90IG9sZBxlbm91Z2guGE5vUGFnZQABBIRQYWdlIHRvIGJlIHJlYXBlZCBkb2VzIG5vdCBleGlzdC4kTm9NZXNzYWdlAAIEqFRoZSByZWZlcmVuY2VkIG1lc3NhZ2UgY291bGQgbm90IGJlIGZvdW5kLkBBbHJlYWR5UHJvY2Vzc2VkAAMEAQFUaGUgbWVzc2FnZSB3YXMgYWxyZWFkeSBwcm9jZXNzZWQgYW5kIGNhbm5vdCBiZSBwcm9jZXNzZWQgYWdhaW4uGFF1ZXVlZAAEBKxUaGUgbWVzc2FnZSBpcyBxdWV1ZWQgZm9yIGZ1dHVyZSBleGVjdXRpb24uSEluc3VmZmljaWVudFdlaWdodAAFBBkBVGhlcmUgaXMgdGVtcG9yYXJpbHkgbm90IGVub3VnaCB3ZWlnaHQgdG8gY29udGludWUgc2VydmljaW5nIG1lc3NhZ2VzLmBUZW1wb3JhcmlseVVucHJvY2Vzc2FibGUABhCoVGhpcyBtZXNzYWdlIGlzIHRlbXBvcmFyaWx5IHVucHJvY2Vzc2FibGUuAFkBU3VjaCBlcnJvcnMgYXJlIGV4cGVjdGVkLCBidXQgbm90IGd1YXJhbnRlZWQsIHRvIHJlc29sdmUgdGhlbXNlbHZlcyBldmVudHVhbGx5IHRocm91Z2gkcmV0cnlpbmcuLFF1ZXVlUGF1c2VkAAcM7FRoZSBxdWV1ZSBpcyBwYXVzZWQgYW5kIG5vIG1lc3NhZ2UgY2FuIGJlIGV4ZWN1dGVkIGZyb20gaXQuAB0BVGhpcyBjYW4gY2hhbmdlIGF0IGFueSB0aW1lIGFuZCBtYXkgcmVzb2x2ZSBpbiB0aGUgZnV0dXJlIGJ5IHJlLXRyeWluZy5MUmVjdXJzaXZlRGlzYWxsb3dlZAAIBDEBQW5vdGhlciBjYWxsIGlzIGluIHByb2dyZXNzIGFuZCBuZWVkcyB0byBmaW5pc2ggYmVmb3JlIHRoaXMgY2FsbCBjYW4gaGFwcGVuLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5pBgwscGFsbGV0X3N1ZG8YcGFsbGV0FEVycm9yBARUAAEELFJlcXVpcmVTdWRvAAAEgFNlbmRlciBtdXN0IGJlIHRoZSBTdWRvIGFjY291bnQuBGhFcnJvciBmb3IgdGhlIFN1ZG8gcGFsbGV0Lm0GCEhzcF9jb25zZW5zdXNfc2xvdHMwU2xvdER1cmF0aW9uAAAEACgBDHU2NAAAcQYQKHNwX3J1bnRpbWUcZ2VuZXJpYxRibG9jayRMYXp5QmxvY2sIGEhlYWRlcgFcJEV4dHJpbnNpYwGFBAAIARhoZWFkZXJcARhIZWFkZXIAAShleHRyaW5zaWNzdQYBUFZlYzxPcGFxdWVFeHRyaW5zaWM+AAB1BgAAAnkGAHkGCChzcF9ydW50aW1lPE9wYXF1ZUV4dHJpbnNpYwAABAAYARxWZWM8dTg+AAB9Bggoc3BfcnVudGltZVhFeHRyaW5zaWNJbmNsdXNpb25Nb2RlAAEINEFsbEV4dHJpbnNpY3MAAAA0T25seUluaGVyZW50cwABAACBBggcc3BfY29yZThPcGFxdWVNZXRhZGF0YQAABAAYARxWZWM8dTg+AACFBgQYT3B0aW9uBARUAYEGAQgQTm9uZQAAABBTb21lBACBBgAAAQAAiQYAAAI4AI0GBBhSZXN1bHQIBFQB0QMERQGRBgEICE9rBADRAwAAAAAMRXJyBACRBgAAAQAAkQYMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlgVHJhbnNhY3Rpb25WYWxpZGl0eUVycm9yAAEIHEludmFsaWQEAJUGAUhJbnZhbGlkVHJhbnNhY3Rpb24AAAAcVW5rbm93bgQAmQYBSFVua25vd25UcmFuc2FjdGlvbgABAACVBgwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhJbnZhbGlkVHJhbnNhY3Rpb24AATQQQ2FsbAAAABxQYXltZW50AAEAGEZ1dHVyZQACABRTdGFsZQADACBCYWRQcm9vZgAEAERBbmNpZW50QmlydGhCbG9jawAFAERFeGhhdXN0c1Jlc291cmNlcwAGABhDdXN0b20EAAwBCHU4AAcAMEJhZE1hbmRhdG9yeQAIAExNYW5kYXRvcnlWYWxpZGF0aW9uAAkAJEJhZFNpZ25lcgAKAFRJbmRldGVybWluYXRlSW1wbGljaXQACwA0VW5rbm93bk9yaWdpbgAMAACZBgwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhVbmtub3duVHJhbnNhY3Rpb24AAQwwQ2Fubm90TG9va3VwAAAATE5vVW5zaWduZWRWYWxpZGF0b3IAAQAYQ3VzdG9tBAAMAQh1OAACAACdBggwc3BfaW5oZXJlbnRzMEluaGVyZW50RGF0YQAABAEQZGF0YaEGAZRCVHJlZU1hcDxJbmhlcmVudElkZW50aWZpZXIsIFZlYzx1OD4+AAChBgQgQlRyZWVNYXAIBEsB2QEEVgEYAAQApQYAAAClBgAAAqkGAKkGAAAECNkBGACtBggwc3BfaW5oZXJlbnRzUENoZWNrSW5oZXJlbnRzUmVzdWx0AAAMARBva2F5MQEBEGJvb2wAASxmYXRhbF9lcnJvcjEBARBib29sAAEYZXJyb3JznQYBMEluaGVyZW50RGF0YQAAsQYMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlEVHJhbnNhY3Rpb25Tb3VyY2UAAQwcSW5CbG9jawAAABRMb2NhbAABACBFeHRlcm5hbAACAAC1BgQYUmVzdWx0CARUAbkGBEUBkQYBCAhPawQAuQYAAAAADEVycgQAkQYAAAEAALkGDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5QFZhbGlkVHJhbnNhY3Rpb24AABQBIHByaW9yaXR5KAFMVHJhbnNhY3Rpb25Qcmlvcml0eQABIHJlcXVpcmVzNAFMVmVjPFRyYW5zYWN0aW9uVGFnPgABIHByb3ZpZGVzNAFMVmVjPFRyYW5zYWN0aW9uVGFnPgABJGxvbmdldml0eSgBUFRyYW5zYWN0aW9uTG9uZ2V2aXR5AAEkcHJvcGFnYXRlMQEBEGJvb2wAAL0GDChzcF9zZXNzaW9uLHJ1bnRpbWVfYXBpaE9wYXF1ZUdlbmVyYXRlZFNlc3Npb25LZXlzAAAIARBrZXlzGAEcVmVjPHU4PgABFHByb29mGAEcVmVjPHU4PgAAwQYEGE9wdGlvbgQEVAHFBgEIEE5vbmUAAAAQU29tZQQAxQYAAAEAAMUGAAACyQYAyQYAAAQIGJ0FAM0GDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlc0xSdW50aW1lRGlzcGF0Y2hJbmZvCBxCYWxhbmNlAfwYV2VpZ2h0ASkBAAwBGHdlaWdodCkBARhXZWlnaHQAARRjbGFzc6kDATREaXNwYXRjaENsYXNzAAEscGFydGlhbF9mZWX8ARxCYWxhbmNlAADRBgxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXMoRmVlRGV0YWlscwQcQmFsYW5jZQH8AAgBNGluY2x1c2lvbl9mZWXVBgF0T3B0aW9uPEluY2x1c2lvbkZlZTxCYWxhbmNlPj4AAQx0aXD8ARxCYWxhbmNlAADVBgQYT3B0aW9uBARUAdkGAQgQTm9uZQAAABBTb21lBADZBgAAAQAA2QYMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzMEluY2x1c2lvbkZlZQQcQmFsYW5jZQH8AAwBIGJhc2VfZmVl/AEcQmFsYW5jZQABHGxlbl9mZWX8ARxCYWxhbmNlAAFMYWRqdXN0ZWRfd2VpZ2h0X2ZlZfwBHEJhbGFuY2UAAN0GBBhSZXN1bHQIBFQB4QYERQHlBgEICE9rBADhBgAAAAAMRXJyBADlBgAAAQAA4QYAAAIpAwDlBgxAeGNtX3J1bnRpbWVfYXBpcxBmZWVzFEVycm9yAAEYNFVuaW1wbGVtZW50ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAExXZWlnaHROb3RDb21wdXRhYmxlAAIATFVuaGFuZGxlZFhjbVZlcnNpb24AAwA0QXNzZXROb3RGb3VuZAAEAChVbnJvdXRhYmxlAAUAAOkGBBhSZXN1bHQIBFQBKQEERQHlBgEICE9rBAApAQAAAAAMRXJyBADlBgAAAQAA7QYEGFJlc3VsdAgEVAH8BEUB5QYBCAhPawQA/AAAAAAMRXJyBADlBgAAAQAA8QYEGFJlc3VsdAgEVAHxAgRFAeUGAQgIT2sEAPECAAAAAAxFcnIEAOUGAAABAAD1BgQYUmVzdWx0CARUAfkGBEUBHQcBCAhPawQA+QYAAAAADEVycgQAHQcAAAEAAPkGDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5EQ2FsbERyeVJ1bkVmZmVjdHMEFEV2ZW50AZ0DABABQGV4ZWN1dGlvbl9yZXN1bHT9BgFoRGlzcGF0Y2hSZXN1bHRXaXRoUG9zdEluZm8AAThlbWl0dGVkX2V2ZW50cwkHAShWZWM8RXZlbnQ+AAEkbG9jYWxfeGNtDQcBYE9wdGlvbjxWZXJzaW9uZWRYY208KCk+PgABOGZvcndhcmRlZF94Y21zEQcBvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AAD9BgQYUmVzdWx0CARUAQEHBEUBBQcBCAhPawQAAQcAAAAADEVycgQABQcAAAEAAAEHDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBvc3REaXNwYXRjaEluZm8AAAgBNGFjdHVhbF93ZWlnaHS9AgE4T3B0aW9uPFdlaWdodD4AASBwYXlzX2ZlZa0DARBQYXlzAAAFBwgoc3BfcnVudGltZWREaXNwYXRjaEVycm9yV2l0aFBvc3RJbmZvBBBJbmZvAQEHAAgBJHBvc3RfaW5mbwEHARBJbmZvAAEUZXJyb3KxAwE0RGlzcGF0Y2hFcnJvcgAACQcAAAKdAwANBwQYT3B0aW9uBARUAbEBAQgQTm9uZQAAABBTb21lBACxAQAAAQAAEQcAAAIVBwAVBwAABAhlARkHABkHAAACsQEAHQcMQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bhRFcnJvcgABCDRVbmltcGxlbWVudGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQAAIQcEGFJlc3VsdAgEVAElBwRFAR0HAQgIT2sEACUHAAAAAAxFcnIEAB0HAAABAAAlBwxAeGNtX3J1bnRpbWVfYXBpcxxkcnlfcnVuQFhjbURyeVJ1bkVmZmVjdHMEFEV2ZW50AZ0DAAwBQGV4ZWN1dGlvbl9yZXN1bHQRBAEcT3V0Y29tZQABOGVtaXR0ZWRfZXZlbnRzCQcBKFZlYzxFdmVudD4AAThmb3J3YXJkZWRfeGNtcxEHAbxWZWM8KFZlcnNpb25lZExvY2F0aW9uLCBWZWM8VmVyc2lvbmVkWGNtPCgpPj4pPgAAKQcEGFJlc3VsdAgEVAEEBEUBLQcBCAhPawQABAAAAAAMRXJyBAAtBwAAAQAALQcMQHhjbV9ydW50aW1lX2FwaXMsY29udmVyc2lvbnMURXJyb3IAAQgsVW5zdXBwb3J0ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAAAxBwgMeGNtOFZlcnNpb25lZEFzc2V0AAEMCFYzBADJAQE4djM6Ok11bHRpQXNzZXQAAwAIVjQEAD0CASR2NDo6QXNzZXQABAAIVjUEAIkCASR2NTo6QXNzZXQABQAANQcEGFJlc3VsdAgEVAExAQRFATkHAQgIT2sEADEBAAAAAAxFcnIEADkHAAABAAA5BwxAeGNtX3J1bnRpbWVfYXBpczR0cnVzdGVkX3F1ZXJ5FEVycm9yAAEIeFZlcnNpb25lZEFzc2V0Q29udmVyc2lvbkZhaWxlZAAAAIRWZXJzaW9uZWRMb2NhdGlvbkNvbnZlcnNpb25GYWlsZWQAAQAAPQcEGFJlc3VsdAgEVAFBBgRFAUEHAQgIT2sEAEEGAAAAAAxFcnIEAEEHAAABAABBBwxAeGNtX3J1bnRpbWVfYXBpc0hhdXRob3JpemVkX2FsaWFzZXMURXJyb3IAAQR8TG9jYXRpb25WZXJzaW9uQ29udmVyc2lvbkZhaWxlZAAAAABFBwQYUmVzdWx0CARUATEBBEUBQQcBCAhPawQAMQEAAAAADEVycgQAQQcAAAEAAEkHCFxjdW11bHVzX3ByaW1pdGl2ZXNfY29yZTRDb2xsYXRpb25JbmZvAAAYATx1cHdhcmRfbWVzc2FnZXM0AUhWZWM8VXB3YXJkTWVzc2FnZT4AAUxob3Jpem9udGFsX21lc3NhZ2Vz+QQBYFZlYzxPdXRib3VuZEhybXBNZXNzYWdlPgABTG5ld192YWxpZGF0aW9uX2NvZGVNBwGMT3B0aW9uPHJlbGF5X2NoYWluOjpWYWxpZGF0aW9uQ29kZT4AAWxwcm9jZXNzZWRfZG93bndhcmRfbWVzc2FnZXM4AQx1MzIAAThocm1wX3dhdGVybWFyazgBYHJlbGF5X2NoYWluOjpCbG9ja051bWJlcgABJGhlYWRfZGF0YUwBIEhlYWREYXRhAABNBwQYT3B0aW9uBARUAVEHAQgQTm9uZQAAABBTb21lBABRBwAAAQAAUQcMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXM4VmFsaWRhdGlvbkNvZGUAAAQAGAEcVmVjPHU4PgAAVQcEGFJlc3VsdAgEVAEQBEUBSQQBCAhPawQAEAAAAAAMRXJyBABJBAAAAQAAWQcEGE9wdGlvbgQEVAFJBAEIEE5vbmUAAAAQU29tZQQASQQAAAEAAF0HAAACSQQAYQcIYGJ1bGxldGluX3dlc3RlbmRfcnVudGltZTBSdW50aW1lRXJyb3IAASwYU3lzdGVtBAB5BAFwZnJhbWVfc3lzdGVtOjpFcnJvcjxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAAUFAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFcnJvcjxSdW50aW1lPgABABxVdGlsaXR5BAAJBQF4cGFsbGV0X3V0aWxpdHk6OkVycm9yPFJ1bnRpbWU+AAYAIEJhbGFuY2VzBABBBQF8cGFsbGV0X2JhbGFuY2VzOjpFcnJvcjxSdW50aW1lPgAKAEhUcmFuc2FjdGlvblN0b3JhZ2UEAGUFAahwYWxsZXRfdHJhbnNhY3Rpb25fc3RvcmFnZTo6RXJyb3I8UnVudGltZT4AKABEQ29sbGF0b3JTZWxlY3Rpb24EAH0FAaRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uOjpFcnJvcjxSdW50aW1lPgAVABxTZXNzaW9uBAChBQF4cGFsbGV0X3Nlc3Npb246OkVycm9yPFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQA3QUBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkVycm9yPFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBABFBgFocGFsbGV0X3hjbTo6RXJyb3I8UnVudGltZT4AHwAwTWVzc2FnZVF1ZXVlBABlBgGQcGFsbGV0X21lc3NhZ2VfcXVldWU6OkVycm9yPFJ1bnRpbWU+ACIAEFN1ZG8EAGkGAWxwYWxsZXRfc3Vkbzo6RXJyb3I8UnVudGltZT4AZAAAUBhTeXN0ZW0BGFN5c3RlbUwcQWNjb3VudAEBBAIEhQNBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACABOggVGhlIGZ1bGwgYWNjb3VudCBpbmZvcm1hdGlvbiBmb3IgYSBwYXJ0aWN1bGFyIGFjY291bnQgSUQuADhFeHRyaW5zaWNDb3VudAAAOAQABLggVG90YWwgZXh0cmluc2ljcyBjb3VudCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suAEBJbmhlcmVudHNBcHBsaWVkAQAxAQQABKQgV2hldGhlciBhbGwgaW5oZXJlbnRzIGhhdmUgYmVlbiBhcHBsaWVkLgAsQmxvY2tXZWlnaHQBAJEDGAAAAAAAAASIIFRoZSBjdXJyZW50IHdlaWdodCBmb3IgdGhlIGJsb2NrLgAkQmxvY2tTaXplAAA4BAAMsCBUb3RhbCBzaXplIChpbiBieXRlcykgb2YgdGhlIGN1cnJlbnQgYmxvY2suAMggVHJhY2tzIHRoZSBzaXplIG9mIHRoZSBoZWFkZXIgYW5kIGFsbCBleHRyaW5zaWNzLgAkQmxvY2tIYXNoAQEEBTg8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJggTWFwIG9mIGJsb2NrIG51bWJlcnMgdG8gYmxvY2sgaGFzaGVzLgA0RXh0cmluc2ljRGF0YQEBBAU4GAQABD0BIEV4dHJpbnNpY3MgZGF0YSBmb3IgdGhlIGN1cnJlbnQgYmxvY2sgKG1hcHMgYW4gZXh0cmluc2ljJ3MgaW5kZXggdG8gaXRzIGRhdGEpLgAYTnVtYmVyAQA4EAAAAAAECQEgVGhlIGN1cnJlbnQgYmxvY2sgbnVtYmVyIGJlaW5nIHByb2Nlc3NlZC4gU2V0IGJ5IGBleGVjdXRlX2Jsb2NrYC4AKFBhcmVudEhhc2gBADyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEcCBIYXNoIG9mIHRoZSBwcmV2aW91cyBibG9jay4AGERpZ2VzdAEAZAQABPAgRGlnZXN0IG9mIHRoZSBjdXJyZW50IGJsb2NrLCBhbHNvIHBhcnQgb2YgdGhlIGJsb2NrIGhlYWRlci4AGEV2ZW50cwEAlQMEABygIEV2ZW50cyBkZXBvc2l0ZWQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgAdASBOT1RFOiBUaGUgaXRlbSBpcyB1bmJvdW5kIGFuZCBzaG91bGQgdGhlcmVmb3JlIG5ldmVyIGJlIHJlYWQgb24gY2hhaW4u0CBJdCBjb3VsZCBvdGhlcndpc2UgaW5mbGF0ZSB0aGUgUG9WIHNpemUgb2YgYSBibG9jay4ALQEgRXZlbnRzIGhhdmUgYSBsYXJnZSBpbi1tZW1vcnkgc2l6ZS4gQm94IHRoZSBldmVudHMgdG8gbm90IGdvIG91dC1vZi1tZW1vcnn8IGp1c3QgaW4gY2FzZSBzb21lb25lIHN0aWxsIHJlYWRzIHRoZW0gZnJvbSB3aXRoaW4gdGhlIHJ1bnRpbWUuAChFdmVudENvdW50AQA4EAAAAAAEuCBUaGUgbnVtYmVyIG9mIGV2ZW50cyBpbiB0aGUgYEV2ZW50czxUPmAgbGlzdC4ALEV2ZW50VG9waWNzAQEEAjw5BAQAKCUBIE1hcHBpbmcgYmV0d2VlbiBhIHRvcGljIChyZXByZXNlbnRlZCBieSBUOjpIYXNoKSBhbmQgYSB2ZWN0b3Igb2YgaW5kZXhlc5Qgb2YgZXZlbnRzIGluIHRoZSBgPEV2ZW50czxUPj5gIGxpc3QuAFEBIEFsbCB0b3BpYyB2ZWN0b3JzIGhhdmUgZGV0ZXJtaW5pc3RpYyBzdG9yYWdlIGxvY2F0aW9ucyBkZXBlbmRpbmcgb24gdGhlIHRvcGljLiBUaGlzRQEgYWxsb3dzIGxpZ2h0LWNsaWVudHMgdG8gbGV2ZXJhZ2UgdGhlIGNoYW5nZXMgdHJpZSBzdG9yYWdlIHRyYWNraW5nIG1lY2hhbmlzbSBhbmTkIGluIGNhc2Ugb2YgY2hhbmdlcyBmZXRjaCB0aGUgbGlzdCBvZiBldmVudHMgb2YgaW50ZXJlc3QuAFkBIFRoZSB2YWx1ZSBoYXMgdGhlIHR5cGUgYChCbG9ja051bWJlckZvcjxUPiwgRXZlbnRJbmRleClgIGJlY2F1c2UgaWYgd2UgdXNlZCBvbmx5IGp1c3RNASB0aGUgYEV2ZW50SW5kZXhgIHRoZW4gaW4gY2FzZSBpZiB0aGUgdG9waWMgaGFzIHRoZSBzYW1lIGNvbnRlbnRzIG9uIHRoZSBuZXh0IGJsb2NrAQEgbm8gbm90aWZpY2F0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkIHRodXMgdGhlIGV2ZW50IG1pZ2h0IGJlIGxvc3QuAEhMYXN0UnVudGltZVVwZ3JhZGUAAEEEBAAEVQEgU3RvcmVzIHRoZSBgc3BlY192ZXJzaW9uYCBhbmQgYHNwZWNfbmFtZWAgb2Ygd2hlbiB0aGUgbGFzdCBydW50aW1lIHVwZ3JhZGUgaGFwcGVuZWQuAFRVcGdyYWRlZFRvVTMyUmVmQ291bnQBADEBBAAETQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgYHR5cGUgUmVmQ291bnRgIGlzIGB1MzJgLiBGYWxzZSAoZGVmYXVsdCkgaWYgbm90LgBgVXBncmFkZWRUb1RyaXBsZVJlZkNvdW50AQAxAQQACF0BIFRydWUgaWYgd2UgaGF2ZSB1cGdyYWRlZCBzbyB0aGF0IEFjY291bnRJbmZvIGNvbnRhaW5zIHRocmVlIHR5cGVzIG9mIGBSZWZDb3VudGAuIEZhbHNlSCAoZGVmYXVsdCkgaWYgbm90LgA4RXhlY3V0aW9uUGhhc2UAADEEBAAEiCBUaGUgZXhlY3V0aW9uIHBoYXNlIG9mIHRoZSBibG9jay4AREF1dGhvcml6ZWRVcGdyYWRlAABNBAQABLggYFNvbWVgIGlmIGEgY29kZSB1cGdyYWRlIGhhcyBiZWVuIGF1dGhvcml6ZWQuAGBFeHRyaW5zaWNXZWlnaHRSZWNsYWltZWQBACkBCAAAHKAgVGhlIHdlaWdodCByZWNsYWltZWQgZm9yIHRoZSBleHRyaW5zaWMuACEBIFRoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIHVudGlsIHRoZSBlbmQgb2YgdGhlIGV4dHJpbnNpYyBleGVjdXRpb24uIQEgTW9yZSBwcmVjaXNlbHkgdGhpcyBpbmZvcm1hdGlvbiBpcyByZW1vdmVkIGluIGBub3RlX2FwcGxpZWRfZXh0cmluc2ljYC4AcQEgTG9naWMgZG9pbmcgc29tZSBwb3N0IGRpc3BhdGNoIHdlaWdodCByZWR1Y3Rpb24gbXVzdCB1cGRhdGUgdGhpcyBzdG9yYWdlIHRvIGF2b2lkIGR1cGxpY2F0ZSwgcmVkdWN0aW9uLgABJAABoQMAGDBCbG9ja1dlaWdodHNRBIkBBwDyBSoBAAsAIEqp0QECAIACAmXNHQABC8AOcsiLAQIAIAIBCwBQXBijAQIAQAIBAAACZc0dAAELwN5fWboBAgBgAgELACBKqdEBAgCAAgEHANDtkC4CAEAAAmXNHQAAAAAE0CBCbG9jayAmIGV4dHJpbnNpY3Mgd2VpZ2h0czogYmFzZSB2YWx1ZXMgYW5kIGxpbWl0cy4ALEJsb2NrTGVuZ3RoXQQ0AACQAAAAoAAAAKAAAASoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIGJsb2NrIChpbiBieXRlcykuADhCbG9ja0hhc2hDb3VudDgQABAAAARVASBNYXhpbXVtIG51bWJlciBvZiBibG9jayBudW1iZXIgdG8gYmxvY2sgaGFzaCBtYXBwaW5ncyB0byBrZWVwIChvbGRlc3QgcHJ1bmVkIGZpcnN0KS4AIERiV2VpZ2h0ZQRAQHh9AQAAAAAA4fUFAAAAAAQJASBUaGUgd2VpZ2h0IG9mIHJ1bnRpbWUgZGF0YWJhc2Ugb3BlcmF0aW9ucyB0aGUgcnVudGltZSBjYW4gaW52b2tlLgAcVmVyc2lvbmkEwQRAYnVsbGV0aW4td2VzdGVuZEBidWxsZXRpbi13ZXN0ZW5kAQAAAEpCDwABAAAAVN1xjVzFMmLUAQAAAATnBSGg09L4AQAAANe92KJyyg1lAgAAAN9qy2iZB2CbBQAAADfjl/x8kfXkAgAAAED+OtQB+JWaBgAAANK8mJfu0I8VAwAAAPeLJ4vlP0VMAgAAAKs8BXIpH+uLAgAAALydiZBPW5I/AQAAADfIuxNQqaKoBAAAAPP/FNWrUnBZAwAAAG/1LuhY5sW9AgAAAJGxyLFjKOuSAgAAAJ/7UFqnONacAQAAACYJvoOsRGjcAQAAABLI49TX4G3gAQAAAOqT4/FvPWliAwAAADsc/EQN0j9JAQAAAPvFd7nXR+/WAQAAAKLdtqWEd79jAQAAAAEAAAABBIQgR2V0IHRoZSBjaGFpbidzIGluLWNvZGUgdmVyc2lvbi4AKFNTNThQcmVmaXjECCoAFKggVGhlIGRlc2lnbmF0ZWQgU1M1OCBwcmVmaXggb2YgdGhpcyBjaGFpbi4AOQEgVGhpcyByZXBsYWNlcyB0aGUgInNzNThGb3JtYXQiIHByb3BlcnR5IGRlY2xhcmVkIGluIHRoZSBjaGFpbiBzcGVjLiBSZWFzb24gaXMxASB0aGF0IHRoZSBydW50aW1lIHNob3VsZCBrbm93IGFib3V0IHRoZSBwcmVmaXggaW4gb3JkZXIgdG8gbWFrZSB1c2Ugb2YgaXQgYXNwIGFuIGlkZW50aWZpZXIgb2YgdGhlIGNoYWluLgABeQQAHCxSdW50aW1lQ2FsbCAEjCBUaGUgYWdncmVnYXRlZCBgUnVudGltZUNhbGxgIHR5cGUuFE5vbmNlOARJASBUaGlzIHN0b3JlcyB0aGUgbnVtYmVyIG9mIHByZXZpb3VzIHRyYW5zYWN0aW9ucyBhc3NvY2lhdGVkIHdpdGggYSBzZW5kZXIgYWNjb3VudC4QSGFzaDwEmCBUaGUgb3V0cHV0IG9mIHRoZSBgSGFzaGluZ2AgZnVuY3Rpb24uHEhhc2hpbmd9BAQhASBUaGUgaGFzaGluZyBzeXN0ZW0gKGFsZ29yaXRobSkgYmVpbmcgdXNlZCBpbiB0aGUgcnVudGltZSAoZS5nLiBCbGFrZTIpLiRBY2NvdW50SWQEBMggVGhlIHVzZXIgYWNjb3VudCBpZGVudGlmaWVyIHR5cGUgZm9yIHRoZSBydW50aW1lLhRCbG9ja4EECGEBIFRoZSBCbG9jayB0eXBlIHVzZWQgYnkgdGhlIHJ1bnRpbWUuIFRoaXMgaXMgdXNlZCBieSBgY29uc3RydWN0X3J1bnRpbWVgIHRvIHJldHJpZXZlIHRoZcwgZXh0cmluc2ljcyBvciBvdGhlciBibG9jayBzcGVjaWZpYyBkYXRhIGFzIG5lZWRlZC4sQWNjb3VudERhdGGJAwhhASBEYXRhIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCBhbiBhY2NvdW50IChvdGhlciB0aGFuIG5vbmNlL3RyYW5zYWN0aW9uIGNvdW50ZXIsIHdoaWNoIHRoaXNkIHBhbGxldCBkb2VzIHJlZ2FyZGxlc3MpLgAAAAA8UGFyYWNoYWluU3lzdGVtATxQYXJhY2hhaW5TeXN0ZW1sRFVuaW5jbHVkZWRTZWdtZW50AQCVBAQAGEkBIExhdGVzdCBpbmNsdWRlZCBibG9jayBkZXNjZW5kYW50cyB0aGUgcnVudGltZSBhY2NlcHRlZC4gSW4gb3RoZXIgd29yZHMsIHRoZXNlIGFyZWEBIGFuY2VzdG9ycyBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBibG9jayB3aGljaCBoYXZlIG5vdCBiZWVuIGluY2x1ZGVkIGluIHRoZSBvYnNlcnZlZEwgcmVsYXktY2hhaW4gc3RhdGUuAHUBIFRoZSBzZWdtZW50IGxlbmd0aCBpcyBsaW1pdGVkIGJ5IHRoZSBjYXBhY2l0eSByZXR1cm5lZCBmcm9tIHRoZSBbYENvbnNlbnN1c0hvb2tgXSBjb25maWd1cmVkPCBpbiB0aGUgcGFsbGV0LgBsQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50AAC9BAQADGkBIFN0b3JhZ2UgZmllbGQgdGhhdCBrZWVwcyB0cmFjayBvZiBiYW5kd2lkdGggdXNlZCBieSB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGFsb25nIHdpdGggdGhlLQEgbGF0ZXN0IEhSTVAgd2F0ZXJtYXJrLiBVc2VkIGZvciBsaW1pdGluZyB0aGUgYWNjZXB0YW5jZSBvZiBuZXcgYmxvY2tzIHdpdGiQIHJlc3BlY3QgdG8gcmVsYXkgY2hhaW4gY29uc3RyYWludHMuAFRQZW5kaW5nVmFsaWRhdGlvbkNvZGUBABgEABhZASBJbiBjYXNlIG9mIGEgc2NoZWR1bGVkIHVwZ3JhZGUsIHRoaXMgc3RvcmFnZSBmaWVsZCBjb250YWlucyB0aGUgdmFsaWRhdGlvbiBjb2RlIHRvIGJlJCBhcHBsaWVkLgA9ASBBcyBzb29uIGFzIHRoZSByZWxheSBjaGFpbiBnaXZlcyB1cyB0aGUgZ28tYWhlYWQgc2lnbmFsLCB3ZSB3aWxsIG92ZXJ3cml0ZSB0aGVxASBbYDpjb2RlYF1bc3BfY29yZTo6c3RvcmFnZTo6d2VsbF9rbm93bl9rZXlzOjpDT0RFXSB3aGljaCB3aWxsIHJlc3VsdCB0aGUgbmV4dCBibG9jayBwcm9jZXNzCQEgd2l0aCB0aGUgbmV3IHZhbGlkYXRpb24gY29kZS4gVGhpcyBjb25jbHVkZXMgdGhlIHVwZ3JhZGUgcHJvY2Vzcy4ARE5ld1ZhbGlkYXRpb25Db2RlAAAYBAAUXQEgVmFsaWRhdGlvbiBjb2RlIHRoYXQgaXMgc2V0IGJ5IHRoZSBwYXJhY2hhaW4gYW5kIGlzIHRvIGJlIGNvbW11bmljYXRlZCB0byBjb2xsYXRvciBhbmR4IGNvbnNlcXVlbnRseSB0aGUgcmVsYXktY2hhaW4uAGUBIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jayBpZiBubyBvdGhlciBwYWxsZXQgYWxyZWFkeSBzZXQsIHRoZSB2YWx1ZS4AOFZhbGlkYXRpb25EYXRhAABIBAAM0CBUaGUgW2BQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YWBdIHNldCBmb3IgdGhpcyBibG9jay4AcQEgVGhpcyB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBzZXQgb25seSBvbmNlIGJ5IHRoZSBbYFBhbGxldDo6c2V0X3ZhbGlkYXRpb25fZGF0YWBdIGluaGVyZW50LgBQRGlkU2V0VmFsaWRhdGlvbkNvZGUBADEBBAAE4CBXZXJlIHRoZSB2YWxpZGF0aW9uIGRhdGEgc2V0IHRvIG5vdGlmeSB0aGUgcmVsYXkgY2hhaW4/AGRMYXN0UmVsYXlDaGFpbkJsb2NrTnVtYmVyAQA4EAAAAAAMHQEgVGhlIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhlIGxhc3QgcGFyYWNoYWluIGJsb2NrLgCIIFRoaXMgaXMgdXBkYXRlZCBpbiBgb25fZmluYWxpemVgLgBgVXBncmFkZVJlc3RyaWN0aW9uU2lnbmFsAQDBBAQAHHUBIEFuIG9wdGlvbiB3aGljaCBpbmRpY2F0ZXMgaWYgdGhlIHJlbGF5LWNoYWluIHJlc3RyaWN0cyBzaWduYWxsaW5nIGEgdmFsaWRhdGlvbiBjb2RlIHVwZ3JhZGUuYQEgSW4gb3RoZXIgd29yZHMsIGlmIHRoaXMgaXMgYFNvbWVgIGFuZCBbYE5ld1ZhbGlkYXRpb25Db2RlYF0gaXMgYFNvbWVgIHRoZW4gdGhlIHByb2R1Y2VkbCBjYW5kaWRhdGUgd2lsbCBiZSBpbnZhbGlkLgBxASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBhIG1pcnJvciBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGZyb20gdGhlbQEgcmVsYXktY2hhaW4uIFRoaXMgdmFsdWUgaXMgZXBoZW1lcmFsIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgaGl0IHRoZSBzdG9yYWdlLiBUaGlzIHZhbHVlIGlzYCBzZXQgYWZ0ZXIgdGhlIGluaGVyZW50LgA4VXBncmFkZUdvQWhlYWQBALUEBAAU3CBPcHRpb25hbCB1cGdyYWRlIGdvLWFoZWFkIHNpZ25hbCBmcm9tIHRoZSByZWxheS1jaGFpbi4AcQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgYSBtaXJyb3Igb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZm9yIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBmcm9tIHRoZW0BIHJlbGF5LWNoYWluLiBUaGlzIHZhbHVlIGlzIGVwaGVtZXJhbCB3aGljaCBtZWFucyBpdCBkb2Vzbid0IGhpdCB0aGUgc3RvcmFnZS4gVGhpcyB2YWx1ZSBpc2Agc2V0IGFmdGVyIHRoZSBpbmhlcmVudC4APFJlbGF5U3RhdGVQcm9vZgAAUAQAGMQgVGhlIHN0YXRlIHByb29mIGZvciB0aGUgbGFzdCByZWxheSBwYXJlbnQgYmxvY2suAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AWFJlbGV2YW50TWVzc2FnaW5nU3RhdGUAAMkEBAAcZQEgVGhlIHNuYXBzaG90IG9mIHNvbWUgc3RhdGUgcmVsYXRlZCB0byBtZXNzYWdpbmcgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgcGFyYWNoYWluIGFzIHBlckggdGhlIHJlbGF5IHBhcmVudC4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgBESG9zdENvbmZpZ3VyYXRpb24AAN0EBAAYKQEgVGhlIHBhcmFjaGFpbiBob3N0IGNvbmZpZ3VyYXRpb24gdGhhdCB3YXMgb2J0YWluZWQgZnJvbSB0aGUgcmVsYXkgcGFyZW50LgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuADhMYXN0RG1xTXFjSGVhZAEA5QSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ9CBUaGUgbGFzdCBkb3dud2FyZCBtZXNzYWdlIHF1ZXVlIGNoYWluIGhlYWQgd2UgaGF2ZSBvYnNlcnZlZC4AZQEgVGhpcyB2YWx1ZSBpcyBsb2FkZWQgYmVmb3JlIGFuZCBzYXZlZCBhZnRlciBwcm9jZXNzaW5nIGluYm91bmQgZG93bndhcmQgbWVzc2FnZXMgY2FycmllZGAgYnkgdGhlIHN5c3RlbSBpbmhlcmVudC4AQExhc3RIcm1wTXFjSGVhZHMBAOkEBAAQSQEgVGhlIG1lc3NhZ2UgcXVldWUgY2hhaW4gaGVhZHMgd2UgaGF2ZSBvYnNlcnZlZCBwZXIgZWFjaCBjaGFubmVsIGluY29taW5nIGNoYW5uZWwuAGUBIFRoaXMgdmFsdWUgaXMgbG9hZGVkIGJlZm9yZSBhbmQgc2F2ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBpbmJvdW5kIGRvd253YXJkIG1lc3NhZ2VzIGNhcnJpZWRgIGJ5IHRoZSBzeXN0ZW0gaW5oZXJlbnQuAGRQcm9jZXNzZWREb3dud2FyZE1lc3NhZ2VzAQA4EAAAAAAMyCBOdW1iZXIgb2YgZG93bndhcmQgbWVzc2FnZXMgcHJvY2Vzc2VkIGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgBwTGFzdFByb2Nlc3NlZERvd253YXJkTWVzc2FnZQAA9QQEAAyUIFRoZSBsYXN0IHByb2Nlc3NlZCBkb3dud2FyZCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgA0SHJtcFdhdGVybWFyawEAOBAAAAAABKAgSFJNUCB3YXRlcm1hcmsgdGhhdCB3YXMgc2V0IGluIGEgYmxvY2suAGBMYXN0UHJvY2Vzc2VkSHJtcE1lc3NhZ2UAAPUEBAAMhCBUaGUgbGFzdCBwcm9jZXNzZWQgSFJNUCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgBQSHJtcE91dGJvdW5kTWVzc2FnZXMBAPkEBAAMpCBIUk1QIG1lc3NhZ2VzIHRoYXQgd2VyZSBzZW50IGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgA4VXB3YXJkTWVzc2FnZXMBADQEAAysIFVwd2FyZCBtZXNzYWdlcyB0aGF0IHdlcmUgc2VudCBpbiBhIGJsb2NrLgDwIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBmb3IgZWFjaCBuZXcgYmxvY2suAFRQZW5kaW5nVXB3YXJkTWVzc2FnZXMBADQEAAQxASBVcHdhcmQgbWVzc2FnZXMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4AUFBlbmRpbmdVcHdhcmRTaWduYWxzAQA0BAAMLQEgVXB3YXJkIHNpZ25hbHMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4A2CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25fZmluYWxpemVgIGZvciBlYWNoIGJsb2NrLgBcVXB3YXJkRGVsaXZlcnlGZWVGYWN0b3IBAAEFQAAAZKeztuANAAAAAAAAAAAE5CBUaGUgZmFjdG9yIHRvIG11bHRpcGx5IHRoZSBiYXNlIGRlbGl2ZXJ5IGZlZSBieSBmb3IgVU1QLgCEQW5ub3VuY2VkSHJtcE1lc3NhZ2VzUGVyQ2FuZGlkYXRlAQA4EAAAAAAIZQEgVGhlIG51bWJlciBvZiBIUk1QIG1lc3NhZ2VzIHdlIG9ic2VydmVkIGluIGBvbl9pbml0aWFsaXplYCBhbmQgdGh1cyB1c2VkIHRoYXQgbnVtYmVyIGZvcvAgYW5ub3VuY2luZyB0aGUgd2VpZ2h0IG9mIGBvbl9pbml0aWFsaXplYCBhbmQgYG9uX2ZpbmFsaXplYC4AaFJlc2VydmVkWGNtcFdlaWdodE92ZXJyaWRlAAApAQQACF0BIFRoZSB3ZWlnaHQgd2UgcmVzZXJ2ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBibG9jayBmb3IgcHJvY2Vzc2luZyBYQ01QIG1lc3NhZ2VzLiBUaGlzuCBvdmVycmlkZXMgdGhlIGFtb3VudCBzZXQgaW4gdGhlIENvbmZpZyB0cmFpdC4AZFJlc2VydmVkRG1wV2VpZ2h0T3ZlcnJpZGUAACkBBAAIWQEgVGhlIHdlaWdodCB3ZSByZXNlcnZlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrIGZvciBwcm9jZXNzaW5nIERNUCBtZXNzYWdlcy4gVGhpc7ggb3ZlcnJpZGVzIHRoZSBhbW91bnQgc2V0IGluIHRoZSBDb25maWcgdHJhaXQuAGBDdXN0b21WYWxpZGF0aW9uSGVhZERhdGEAABgEAAwpASBBIGN1c3RvbSBoZWFkIGRhdGEgdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQgYXMgcmVzdWx0IG9mIGB2YWxpZGF0ZV9ibG9ja2AuABEBIFNlZSBgUGFsbGV0OjpzZXRfY3VzdG9tX3ZhbGlkYXRpb25faGVhZF9kYXRhYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4AAUAAAckDAAQoU2VsZlBhcmFJZJwQ/hMAAAS4IFJldHVybnMgdGhlIHBhcmFjaGFpbiBJRCB3ZSBhcmUgcnVubmluZyB3aXRoLgABBQUAAAABAAAkVGltZXN0YW1wASRUaW1lc3RhbXAIDE5vdwEAKCAAAAAAAAAAAASgIFRoZSBjdXJyZW50IHRpbWUgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgAkRGlkVXBkYXRlAQAxAQQAENggV2hldGhlciB0aGUgdGltZXN0YW1wIGhhcyBiZWVuIHVwZGF0ZWQgaW4gdGhpcyBibG9jay4AVQEgVGhpcyB2YWx1ZSBpcyB1cGRhdGVkIHRvIGB0cnVlYCB1cG9uIHN1Y2Nlc3NmdWwgc3VibWlzc2lvbiBvZiBhIHRpbWVzdGFtcCBieSBhIG5vZGUuRQEgSXQgaXMgdGhlbiBjaGVja2VkIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jayBleGVjdXRpb24gaW4gdGhlIGBvbl9maW5hbGl6ZWAgaG9vay4AAbAAAAQ0TWluaW11bVBlcmlvZCggAAAAAAAAAAAYjCBUaGUgbWluaW11bSBwZXJpb2QgYmV0d2VlbiBibG9ja3MuAE0BIEJlIGF3YXJlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgdG8gdGhlICpleHBlY3RlZCogcGVyaW9kIHRoYXQgdGhlIGJsb2NrIHByb2R1Y3Rpb25JASBhcHBhcmF0dXMgcHJvdmlkZXMuIFlvdXIgY2hvc2VuIGNvbnNlbnN1cyBzeXN0ZW0gd2lsbCBnZW5lcmFsbHkgd29yayB3aXRoIHRoaXMgdG9hASBkZXRlcm1pbmUgYSBzZW5zaWJsZSBibG9jayB0aW1lLiBGb3IgZXhhbXBsZSwgaW4gdGhlIEF1cmEgcGFsbGV0IGl0IHdpbGwgYmUgZG91YmxlIHRoaXNwIHBlcmlvZCBvbiBkZWZhdWx0IHNldHRpbmdzLgAABBhNb21lbnQoBJggVHlwZSB1c2VkIGZvciBleHByZXNzaW5nIGEgdGltZXN0YW1wLgADAAA0UGFyYWNoYWluSW5mbwE0UGFyYWNoYWluSW5mbwQsUGFyYWNoYWluSWQBAJwQZAAAAAAAAbgAAAAAAAAEAAA0V2VpZ2h0UmVjbGFpbQAAAAAAAAAFCIEBIFBhbGxldCB0byB1c2UgYWxvbmdzaWRlIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gW2BTdG9yYWdlV2VpZ2h0UmVjbGFpbWBdLCB0aGUgcGFsbGV0IHByb3ZpZGVzjCB3ZWlnaHQgaW5mb3JtYXRpb24gYW5kIGJlbmNobWFya3MuABxVdGlsaXR5AAG8AAHNAwAETGJhdGNoZWRfY2FsbHNfbGltaXQ4EKoqAAAEqCBUaGUgbGltaXQgb24gdGhlIG51bWJlciBvZiBiYXRjaGVkIGNhbGxzLgABCQUACCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLjRQYWxsZXRzT3JpZ2luyATwIFRoZSBjYWxsZXIgb3JpZ2luLCBvdmVyYXJjaGluZyB0eXBlIG9mIGFsbCBwYWxsZXRzIG9yaWdpbnMuAAYAACBCYWxhbmNlcwEgQmFsYW5jZXMcNFRvdGFsSXNzdWFuY2UBAPxAAAAAAAAAAAAAAAAAAAAAAASYIFRoZSB0b3RhbCB1bml0cyBpc3N1ZWQgaW4gdGhlIHN5c3RlbS4AQEluYWN0aXZlSXNzdWFuY2UBAPxAAAAAAAAAAAAAAAAAAAAAAAQJASBUaGUgdG90YWwgdW5pdHMgb2Ygb3V0c3RhbmRpbmcgZGVhY3RpdmF0ZWQgYmFsYW5jZSBpbiB0aGUgc3lzdGVtLgAcQWNjb3VudAEBBAIEiQMBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBgCQEgVGhlIEJhbGFuY2VzIHBhbGxldCBleGFtcGxlIG9mIHN0b3JpbmcgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC4AKCAjIEV4YW1wbGUANCBgYGBub2NvbXBpbGWwICBpbXBsIHBhbGxldF9iYWxhbmNlczo6Q29uZmlnIGZvciBSdW50aW1lIHsZAiAgICB0eXBlIEFjY291bnRTdG9yZSA9IFN0b3JhZ2VNYXBTaGltPFNlbGY6OkFjY291bnQ8UnVudGltZT4sIGZyYW1lX3N5c3RlbTo6UHJvdmlkZXI8UnVudGltZT4sIEFjY291bnRJZCwgU2VsZjo6QWNjb3VudERhdGE8QmFsYW5jZT4+DCAgfRAgYGBgABUBIFlvdSBjYW4gYWxzbyBzdG9yZSB0aGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50IGluIHRoZSBgU3lzdGVtYCBwYWxsZXQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7dCAgIHR5cGUgQWNjb3VudFN0b3JlID0gU3lzdGVtDCAgfRAgYGBgAFEBIEJ1dCB0aGlzIGNvbWVzIHdpdGggdHJhZGVvZmZzLCBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlIHN5c3RlbSBwYWxsZXQgc3RvcmVzbQEgYGZyYW1lX3N5c3RlbWAgZGF0YSBhbG9uZ3NpZGUgdGhlIGFjY291bnQgZGF0YSBjb250cmFyeSB0byBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlKQEgYEJhbGFuY2VzYCBwYWxsZXQsIHdoaWNoIHVzZXMgYSBgU3RvcmFnZU1hcGAgdG8gc3RvcmUgYmFsYW5jZXMgZGF0YSBvbmx5LkEBIE5PVEU6IFRoaXMgaXMgb25seSB1c2VkIGluIHRoZSBjYXNlIHRoYXQgdGhpcyBwYWxsZXQgaXMgdXNlZCB0byBzdG9yZSBiYWxhbmNlcy4AFExvY2tzAQEEAgQNBQQAELggQW55IGxpcXVpZGl0eSBsb2NrcyBvbiBzb21lIGFjY291bnQgYmFsYW5jZXMuJQEgTk9URTogU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgd2hlbiBzZXR0aW5nLCBjaGFuZ2luZyBhbmQgZnJlZWluZyBhIGxvY2suAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAIFJlc2VydmVzAQEEAgQdBQQADKQgTmFtZWQgcmVzZXJ2ZXMgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAUSG9sZHMBAQQCBCkFBAAEbCBIb2xkcyBvbiBhY2NvdW50IGJhbGFuY2VzLgAcRnJlZXplcwEBBAIENQUEAASIIEZyZWV6ZSBsb2NrcyBvbiBhY2NvdW50IGJhbGFuY2VzLgABLQEAAdUDABBIRXhpc3RlbnRpYWxEZXBvc2l0/EAAypo7AAAAAAAAAAAAAAAAIEEBIFRoZSBtaW5pbXVtIGFtb3VudCByZXF1aXJlZCB0byBrZWVwIGFuIGFjY291bnQgb3Blbi4gTVVTVCBCRSBHUkVBVEVSIFRIQU4gWkVSTyEAWQEgSWYgeW91ICpyZWFsbHkqIG5lZWQgaXQgdG8gYmUgemVybywgeW91IGNhbiBlbmFibGUgdGhlIGZlYXR1cmUgYGluc2VjdXJlX3plcm9fZWRgIGZvcmEBIHRoaXMgcGFsbGV0LiBIb3dldmVyLCB5b3UgZG8gc28gYXQgeW91ciBvd24gcmlzazogdGhpcyB3aWxsIG9wZW4gdXAgYSBtYWpvciBEb1MgdmVjdG9yLlkBIEluIGNhc2UgeW91IGhhdmUgbXVsdGlwbGUgc291cmNlcyBvZiBwcm92aWRlciByZWZlcmVuY2VzLCB5b3UgbWF5IGFsc28gZ2V0IHVuZXhwZWN0ZWSMIGJlaGF2aW91ciBpZiB5b3Ugc2V0IHRoaXMgdG8gemVyby4A8CBCb3R0b20gbGluZTogRG8geW91cnNlbGYgYSBmYXZvdXIgYW5kIG1ha2UgaXQgYXQgbGVhc3Qgb25lIQAgTWF4TG9ja3M4EDIAAAAQ9CBUaGUgbWF4aW11bSBudW1iZXIgb2YgbG9ja3MgdGhhdCBzaG91bGQgZXhpc3Qgb24gYW4gYWNjb3VudC7cIE5vdCBzdHJpY3RseSBlbmZvcmNlZCwgYnV0IHVzZWQgZm9yIHdlaWdodCBlc3RpbWF0aW9uLgCtASBVc2Ugb2YgbG9ja3MgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgZnJlZXplcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gACxNYXhSZXNlcnZlczgQMgAAAAwNASBUaGUgbWF4aW11bSBudW1iZXIgb2YgbmFtZWQgcmVzZXJ2ZXMgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudC4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAKE1heEZyZWV6ZXM4EAAAAAAEYQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGluZGl2aWR1YWwgZnJlZXplIGxvY2tzIHRoYXQgY2FuIGV4aXN0IG9uIGFuIGFjY291bnQgYXQgYW55IHRpbWUuAAFBBQAQRFJ1bnRpbWVIb2xkUmVhc29u3QMEdCBUaGUgb3ZlcmFyY2hpbmcgaG9sZCByZWFzb24uHEJhbGFuY2X8BGwgVGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC5EUmVzZXJ2ZUlkZW50aWZpZXLZAQxoIFRoZSBJRCB0eXBlIGZvciByZXNlcnZlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2BARnJlZXplSWRlbnRpZmllchAEZCBUaGUgSUQgdHlwZSBmb3IgZnJlZXplcy4ACgAASFRyYW5zYWN0aW9uUGF5bWVudAFIVHJhbnNhY3Rpb25QYXltZW50DEROZXh0RmVlTXVsdGlwbGllcgEAAQVAAABkp7O24A0AAAAAAAAAAAAAOFN0b3JhZ2VWZXJzaW9uAQBFBQQAAAA8VHhQYXltZW50Q3JlZGl0AABJBQQADPAgVGhlIGBPbkNoYXJnZVRyYW5zYWN0aW9uYCBzdG9yZXMgdGhlIHdpdGhkcmF3biB0eCBmZWUgaGVyZS4ANQEgVXNlIGB3aXRoZHJhd190eGZlZWAgYW5kIGByZW1haW5pbmdfdHhmZWVgIHRvIGFjY2VzcyBmcm9tIG91dHNpZGUgdGhlIGNyYXRlLgAAAfEDAARgT3BlcmF0aW9uYWxGZWVNdWx0aXBsaWVyDAQFVFkBIEEgZmVlIG11bHRpcGxpZXIgZm9yIGBPcGVyYXRpb25hbGAgZXh0cmluc2ljcyB0byBjb21wdXRlICJ2aXJ0dWFsIHRpcCIgdG8gYm9vc3QgdGhlaXIsIGBwcmlvcml0eWAAUQEgVGhpcyB2YWx1ZSBpcyBtdWx0aXBsaWVkIGJ5IHRoZSBgZmluYWxfZmVlYCB0byBvYnRhaW4gYSAidmlydHVhbCB0aXAiIHRoYXQgaXMgbGF0ZXL0IGFkZGVkIHRvIGEgdGlwIGNvbXBvbmVudCBpbiByZWd1bGFyIGBwcmlvcml0eWAgY2FsY3VsYXRpb25zLk0BIEl0IG1lYW5zIHRoYXQgYSBgTm9ybWFsYCB0cmFuc2FjdGlvbiBjYW4gZnJvbnQtcnVuIGEgc2ltaWxhcmx5LXNpemVkIGBPcGVyYXRpb25hbGBBASBleHRyaW5zaWMgKHdpdGggbm8gdGlwKSwgYnkgaW5jbHVkaW5nIGEgdGlwIHZhbHVlIGdyZWF0ZXIgdGhhbiB0aGUgdmlydHVhbCB0aXAuADwgYGBgcnVzdCxpZ25vcmVAIC8vIEZvciBgTm9ybWFsYIwgbGV0IHByaW9yaXR5ID0gcHJpb3JpdHlfY2FsYyh0aXApOwBUIC8vIEZvciBgT3BlcmF0aW9uYWxgEQEgbGV0IHZpcnR1YWxfdGlwID0gKGluY2x1c2lvbl9mZWUgKyB0aXApICogT3BlcmF0aW9uYWxGZWVNdWx0aXBsaWVyO8QgbGV0IHByaW9yaXR5ID0gcHJpb3JpdHlfY2FsYyh0aXAgKyB2aXJ0dWFsX3RpcCk7ECBgYGAAUQEgTm90ZSB0aGF0IHNpbmNlIHdlIHVzZSBgZmluYWxfZmVlYCB0aGUgbXVsdGlwbGllciBhcHBsaWVzIGFsc28gdG8gdGhlIHJlZ3VsYXIgYHRpcGBdASBzZW50IHdpdGggdGhlIHRyYW5zYWN0aW9uLiBTbywgbm90IG9ubHkgZG9lcyB0aGUgdHJhbnNhY3Rpb24gZ2V0IGEgcHJpb3JpdHkgYnVtcCBiYXNlZGEBIG9uIHRoZSBgaW5jbHVzaW9uX2ZlZWAsIGJ1dCB3ZSBhbHNvIGFtcGxpZnkgdGhlIGltcGFjdCBvZiB0aXBzIGFwcGxpZWQgdG8gYE9wZXJhdGlvbmFsYDggdHJhbnNhY3Rpb25zLgAAAAALAABIU2tpcEZlZWxlc3NQYXltZW50AAAB9QMAAAAAAAwAAEhUcmFuc2FjdGlvblN0b3JhZ2UBSFRyYW5zYWN0aW9uU3RvcmFnZRw4QXV0aG9yaXphdGlvbnMAAQQC2FEFBAAEgCBBdXRob3JpemF0aW9ucywga2V5ZWQgYnkgc2NvcGUuADBUcmFuc2FjdGlvbnMAAQQCOFkFBAAE0CBDb2xsZWN0aW9uIG9mIHRyYW5zYWN0aW9uIG1ldGFkYXRhIGJ5IGJsb2NrIG51bWJlci4AHEJ5dGVGZWUAAPwEAARYIFN0b3JhZ2UgZmVlIHBlciBieXRlLgAgRW50cnlGZWUAAPwEAAR0IFN0b3JhZ2UgZmVlIHBlciB0cmFuc2FjdGlvbi4APFJldGVudGlvblBlcmlvZAEAOBAAAAAAFOQgTnVtYmVyIG9mIGJsb2NrcyBmb3Igd2hpY2ggc3RvcmVkIGRhdGEgbXVzdCBiZSByZXRhaW5lZC4ALQEgRGF0YSBvbGRlciB0aGFuIGBSZXRlbnRpb25QZXJpb2RgIGJsb2NrcyBpcyBlbGlnaWJsZSBmb3IgcmVtb3ZhbCB1bmxlc3MgaXQxASBoYXMgYmVlbiBleHBsaWNpdGx5IHJlbmV3ZWQuIFZhbGlkYXRvcnMgYXJlIHJlcXVpcmVkIHRvIHByb3ZlIHBvc3Nlc3Npb24gb2YxASBkYXRhIGNvcnJlc3BvbmRpbmcgdG8gYmxvY2sgYE4gLSBSZXRlbnRpb25QZXJpb2RgIHdoZW4gcHJvZHVjaW5nIGJsb2NrIGBOYC4AREJsb2NrVHJhbnNhY3Rpb25zAQBZBQQAAAAwUHJvb2ZDaGVja2VkAQAxAQQABJQgV2FzIHRoZSBwcm9vZiBjaGVja2VkIGluIHRoaXMgYmxvY2s/AAE9AQAB+QMAHFBNYXhCbG9ja1RyYW5zYWN0aW9uczgQAAIAAATUIE1heGltdW0gbnVtYmVyIG9mIGluZGV4ZWQgdHJhbnNhY3Rpb25zIGluIHRoZSBibG9jay4ASE1heFRyYW5zYWN0aW9uU2l6ZTgQAAAgAATMIE1heGltdW0gZGF0YSBzZXQgaW4gYSBzaW5nbGUgdHJhbnNhY3Rpb24gaW4gYnl0ZXMuAExBdXRob3JpemF0aW9uUGVyaW9kOBCAxhMABLggQXV0aG9yaXphdGlvbnMgZXhwaXJlIGFmdGVyIHRoaXMgbWFueSBibG9ja3MuAEhTdG9yZVJlbmV3UHJpb3JpdHkoIPz/////////BJggUHJpb3JpdHkgb2Ygc3RvcmUvcmVuZXcgdHJhbnNhY3Rpb25zLgBMU3RvcmVSZW5ld0xvbmdldml0eSggQDgAAAAAAAAEnCBMb25nZXZpdHkgb2Ygc3RvcmUvcmVuZXcgdHJhbnNhY3Rpb25zLgCIUmVtb3ZlRXhwaXJlZEF1dGhvcml6YXRpb25Qcmlvcml0eSgg/f////////8EEQEgUHJpb3JpdHkgb2YgdW5zaWduZWQgdHJhbnNhY3Rpb25zIHRvIHJlbW92ZSBleHBpcmVkIGF1dGhvcml6YXRpb25zLgCMUmVtb3ZlRXhwaXJlZEF1dGhvcml6YXRpb25Mb25nZXZpdHkoIEA4AAAAAAAABBUBIExvbmdldml0eSBvZiB1bnNpZ25lZCB0cmFuc2FjdGlvbnMgdG8gcmVtb3ZlIGV4cGlyZWQgYXV0aG9yaXphdGlvbnMuAAFlBQAELFJ1bnRpbWVDYWxsIARUIEEgZGlzcGF0Y2hhYmxlIGNhbGwuACgAAChBdXRob3JzaGlwAShBdXRob3JzaGlwBBhBdXRob3IAAAQEAARkIEF1dGhvciBvZiBjdXJyZW50IGJsb2NrLgAAAAAAAAAUAABEQ29sbGF0b3JTZWxlY3Rpb24BRENvbGxhdG9yU2VsZWN0aW9uFDRJbnZ1bG5lcmFibGVzAQBpBQQABBEBIFRoZSBpbnZ1bG5lcmFibGUsIHBlcm1pc3Npb25lZCBjb2xsYXRvcnMuIFRoaXMgbGlzdCBtdXN0IGJlIHNvcnRlZC4ANENhbmRpZGF0ZUxpc3QBAG0FBAAUaQEgVGhlIChjb21tdW5pdHksIGxpbWl0ZWQpIGNvbGxhdGlvbiBjYW5kaWRhdGVzLiBgQ2FuZGlkYXRlc2AgYW5kIGBJbnZ1bG5lcmFibGVzYCBzaG91bGQgYmVQIG11dHVhbGx5IGV4Y2x1c2l2ZS4AdQEgVGhpcyBsaXN0IGlzIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgZGVwb3NpdCBhbmQgd2hlbiB0aGUgZGVwb3NpdHMgYXJlIGVxdWFsLCB0aGUgbGVhc3SgIHJlY2VudGx5IHVwZGF0ZWQgaXMgY29uc2lkZXJlZCBncmVhdGVyLgBETGFzdEF1dGhvcmVkQmxvY2sBAQQFBDgQAAAAAASEIExhc3QgYmxvY2sgYXV0aG9yZWQgYnkgY29sbGF0b3IuAEREZXNpcmVkQ2FuZGlkYXRlcwEAOBAAAAAADHggRGVzaXJlZCBudW1iZXIgb2YgY2FuZGlkYXRlcy4AdQEgVGhpcyBzaG91bGQgaWRlYWxseSBhbHdheXMgYmUgbGVzcyB0aGFuIFtgQ29uZmlnOjpNYXhDYW5kaWRhdGVzYF0gZm9yIHdlaWdodHMgdG8gYmUgY29ycmVjdC4ANENhbmRpZGFjeUJvbmQBAPxAAAAAAAAAAAAAAAAAAAAAAAy4IEZpeGVkIGFtb3VudCB0byBkZXBvc2l0IHRvIGJlY29tZSBhIGNvbGxhdG9yLgBBASBXaGVuIGEgY29sbGF0b3IgY2FsbHMgYGxlYXZlX2ludGVudGAgdGhleSBpbW1lZGlhdGVseSByZWNlaXZlIHRoZSBkZXBvc2l0IGJhY2suAAFNAQABAQQAGBRQb3RJZHkFIFBvdFN0YWtlBPQgQWNjb3VudCBJZGVudGlmaWVyIGZyb20gd2hpY2ggdGhlIGludGVybmFsIFBvdCBpcyBnZW5lcmF0ZWQuADRNYXhDYW5kaWRhdGVzOBBkAAAADMggTWF4aW11bSBudW1iZXIgb2YgY2FuZGlkYXRlcyB0aGF0IHdlIHNob3VsZCBoYXZlLgDMIFRoaXMgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIGludnVsbmVyYWJsZXMuAFBNaW5FbGlnaWJsZUNvbGxhdG9yczgQBAAAAAxVASBNaW5pbXVtIG51bWJlciBlbGlnaWJsZSBjb2xsYXRvcnMuIFNob3VsZCBhbHdheXMgYmUgZ3JlYXRlciB0aGFuIHplcm8uIFRoaXMgaW5jbHVkZXNRASBJbnZ1bG5lcmFibGUgY29sbGF0b3JzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGVyZSB3aWxsIGFsd2F5cyBiZSBvbmUgY29sbGF0b3Igd2hvIGNhbkQgcHJvZHVjZSBhIGJsb2NrLgBATWF4SW52dWxuZXJhYmxlczgQFAAAAASEIE1heGltdW0gbnVtYmVyIG9mIGludnVsbmVyYWJsZXMuADRLaWNrVGhyZXNob2xkOBAQDgAAAAAscG90X2FjY291bnQEgG1vZGxQb3RTdGFrZQAAAAAAAAAAAAAAAAAAAAAAAAAABKAgR2V0cyB0aGlzIHBhbGxldCdzIGRlcml2ZWQgcG90IGFjY291bnQuAAF9BQAELFZhbGlkYXRvcklkBAR0IEEgc3RhYmxlIElEIGZvciBhIHZhbGlkYXRvci4AFQAAHFNlc3Npb24BHFNlc3Npb24gKFZhbGlkYXRvcnMBADUBBAAEfCBUaGUgY3VycmVudCBzZXQgb2YgdmFsaWRhdG9ycy4AMEN1cnJlbnRJbmRleAEAOBAAAAAABHggQ3VycmVudCBpbmRleCBvZiB0aGUgc2Vzc2lvbi4ANFF1ZXVlZENoYW5nZWQBADEBBAAIOQEgVHJ1ZSBpZiB0aGUgdW5kZXJseWluZyBlY29ub21pYyBpZGVudGl0aWVzIG9yIHdlaWdodGluZyBiZWhpbmQgdGhlIHZhbGlkYXRvcnOkIGhhcyBjaGFuZ2VkIGluIHRoZSBxdWV1ZWQgdmFsaWRhdG9yIHNldC4AKFF1ZXVlZEtleXMBAIEFBAAIPQEgVGhlIHF1ZXVlZCBrZXlzIGZvciB0aGUgbmV4dCBzZXNzaW9uLiBXaGVuIHRoZSBuZXh0IHNlc3Npb24gYmVnaW5zLCB0aGVzZSBrZXlz4CB3aWxsIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB2YWxpZGF0b3IncyBzZXNzaW9uIGtleXMuAEhEaXNhYmxlZFZhbGlkYXRvcnMBAIkFBAAUgCBJbmRpY2VzIG9mIGRpc2FibGVkIHZhbGlkYXRvcnMuAD0BIFRoZSB2ZWMgaXMgYWx3YXlzIGtlcHQgc29ydGVkIHNvIHRoYXQgd2UgY2FuIGZpbmQgd2hldGhlciBhIGdpdmVuIHZhbGlkYXRvciBpcz0BIGRpc2FibGVkIHVzaW5nIGJpbmFyeSBzZWFyY2guIEl0IGdldHMgY2xlYXJlZCB3aGVuIGBvbl9zZXNzaW9uX2VuZGluZ2AgcmV0dXJuc2QgYSBuZXcgc2V0IG9mIGlkZW50aXRpZXMuACBOZXh0S2V5cwABBAUEVQEEAAScIFRoZSBuZXh0IHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IuACBLZXlPd25lcgABBAWZBQQEAAQJASBUaGUgb3duZXIgb2YgYSBrZXkuIFRoZSBrZXkgaXMgdGhlIGBLZXlUeXBlSWRgICsgdGhlIGVuY29kZWQga2V5LgBERXh0ZXJuYWxseVNldEtleXMAAQQFBBAEABAxASBBY2NvdW50cyB3aG9zZSBrZXlzIHdlcmUgc2V0IHZpYSBgU2Vzc2lvbkludGVyZmFjZWAgKGV4dGVybmFsIHBhdGgpIHdpdGhvdXQ5ASBpbmNyZW1lbnRpbmcgdGhlIGNvbnN1bWVyIHJlZmVyZW5jZSBvciBwbGFjaW5nIGEga2V5IGRlcG9zaXQuIGBkb19wdXJnZV9rZXlzYDkBIG9ubHkgZGVjcmVtZW50cyBjb25zdW1lcnMgZm9yIGFjY291bnRzIHRoYXQgd2VyZSByZWdpc3RlcmVkIHRocm91Z2ggdGhlIGxvY2FsQCBzZXNzaW9uIHBhbGxldC4AAVEBAAEFBAAEKEtleURlcG9zaXT8QAAAAAAAAAAAAAAAAAAAAAAEpCBUaGUgYW1vdW50IHRvIGJlIGhlbGQgd2hlbiBzZXR0aW5nIGtleXMuAAGhBQAILFZhbGlkYXRvcklkBAR0IEEgc3RhYmxlIElEIGZvciBhIHZhbGlkYXRvci4QS2V5c1UBBCggVGhlIGtleXMuABYAABBBdXJhARBBdXJhCCxBdXRob3JpdGllcwEApQUEAARsIFRoZSBjdXJyZW50IGF1dGhvcml0eSBzZXQuACxDdXJyZW50U2xvdAEArQUgAAAAAAAAAAAMgCBUaGUgY3VycmVudCBzbG90IG9mIHRoaXMgYmxvY2suAJQgVGhpcyB3aWxsIGJlIHNldCBpbiBgb25faW5pdGlhbGl6ZWAuAAAABDBTbG90RHVyYXRpb24oIHAXAAAAAAAAFA0BIFRoZSBzbG90IGR1cmF0aW9uIEF1cmEgc2hvdWxkIHJ1biB3aXRoLCBleHByZXNzZWQgaW4gbWlsbGlzZWNvbmRzLgAhASBUaGUgZWZmZWN0aXZlIHZhbHVlIG9mIHRoaXMgdHlwZSBjYW4gYmUgY2hhbmdlZCB3aXRoIGEgcnVudGltZSB1cGdyYWRlLgA1ASBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgZWl0aGVyIHVzZSBbYE1pbmltdW1QZXJpb2RUaW1lc1R3b2BdIG9yIGEgY29uc3QuAAAELEF1dGhvcml0eUlkWQEEmCBUaGUgaWRlbnRpZmllciB0eXBlIGZvciBhbiBhdXRob3JpdHkuABcAABxBdXJhRXh0ARxBdXJhRXh0CCxBdXRob3JpdGllcwEApQUEABSUIFNlcnZlcyBhcyBjYWNoZSBmb3IgdGhlIGF1dGhvcml0aWVzLgBxASBUaGUgYXV0aG9yaXRpZXMgaW4gQXVSYSBhcmUgb3ZlcndyaXR0ZW4gaW4gYG9uX2luaXRpYWxpemVgIHdoZW4gd2Ugc3dpdGNoIHRvIGEgbmV3IHNlc3Npb24sXQEgYnV0IHdlIHJlcXVpcmUgdGhlIG9sZCBhdXRob3JpdGllcyB0byB2ZXJpZnkgdGhlIHNlYWwgd2hlbiB2YWxpZGF0aW5nIGEgUG9WLiBUaGlzIHdpbGwNASBhbHdheXMgYmUgdXBkYXRlZCB0byB0aGUgbGF0ZXN0IEF1UmEgYXV0aG9yaXRpZXMgaW4gYG9uX2ZpbmFsaXplYC4ANFJlbGF5U2xvdEluZm8AALEFBAAQCQEgQ3VycmVudCByZWxheSBjaGFpbiBzbG90IHBhaXJlZCB3aXRoIGEgbnVtYmVyIG9mIGF1dGhvcmVkIGJsb2Nrcy4AZQEgVGhpcyBpcyB1cGRhdGVkIGluIFtgRml4ZWRWZWxvY2l0eUNvbnNlbnN1c0hvb2s6Om9uX3N0YXRlX3Byb29mYF0gd2l0aCB0aGUgY3VycmVudCByZWxhedwgY2hhaW4gc2xvdCBhcyBwcm92aWRlZCBieSB0aGUgcmVsYXkgY2hhaW4gc3RhdGUgcHJvb2YuAAAAAAAAABgAACRYY21wUXVldWUBJFhjbXBRdWV1ZRxQSW5ib3VuZFhjbXBTdXNwZW5kZWQBALUFBAAgDQEgVGhlIHN1c3BlbmRlZCBpbmJvdW5kIFhDTVAgY2hhbm5lbHMuIEFsbCBvdGhlcnMgYXJlIG5vdCBzdXNwZW5kZWQuAHEBIFRoaXMgaXMgYSBgU3RvcmFnZVZhbHVlYCBpbnN0ZWFkIG9mIGEgYFN0b3JhZ2VNYXBgIHNpbmNlIHdlIGV4cGVjdCBtdWx0aXBsZSByZWFkcyBwZXIgYmxvY2tpASB0byBkaWZmZXJlbnQga2V5cyB3aXRoIGEgb25lIGJ5dGUgcGF5bG9hZC4gVGhlIGFjY2VzcyB0byBgQm91bmRlZEJUcmVlU2V0YCB3aWxsIGJlIGNhY2hlZBUBIHdpdGhpbiB0aGUgYmxvY2sgYW5kIHRoZXJlZm9yZSBvbmx5IGluY2x1ZGVkIG9uY2UgaW4gdGhlIHByb29mIHNpemUuAGUBIE5PVEU6IFRoZSBQb1YgYmVuY2htYXJraW5nIGNhbm5vdCBrbm93IHRoaXMgYW5kIHdpbGwgb3Zlci1lc3RpbWF0ZSwgYnV0IHRoZSBhY3R1YWwgcHJvb2ZEIHdpbGwgYmUgc21hbGxlci4ASE91dGJvdW5kWGNtcFN0YXR1cwEAwQUEABhdASBUaGUgbm9uLWVtcHR5IFhDTVAgY2hhbm5lbHMgaW4gb3JkZXIgb2YgYmVjb21pbmcgbm9uLWVtcHR5LCBhbmQgdGhlIGluZGV4IG9mIHRoZSBmaXJzdFEBIGFuZCBsYXN0IG91dGJvdW5kIG1lc3NhZ2UuIElmIHRoZSB0d28gaW5kaWNlcyBhcmUgZXF1YWwsIHRoZW4gaXQgaW5kaWNhdGVzIGFuIGVtcHR5WQEgcXVldWUgYW5kIHRoZXJlIG11c3QgYmUgYSBub24tYE9rYCBgT3V0Ym91bmRTdGF0dXNgLiBXZSBhc3N1bWUgcXVldWVzIGdyb3cgbm8gZ3JlYXRlclkBIHRoYW4gNjU1MzUgaXRlbXMuIFF1ZXVlIGluZGljZXMgZm9yIG5vcm1hbCBtZXNzYWdlcyBiZWdpbiBhdCBvbmU7IHplcm8gaXMgcmVzZXJ2ZWQgaW4RASBjYXNlIG9mIHRoZSBuZWVkIHRvIHNlbmQgYSBoaWdoLXByaW9yaXR5IHNpZ25hbCBtZXNzYWdlIHRoaXMgYmxvY2suCQEgVGhlIGJvb2wgaXMgdHJ1ZSBpZiB0aGVyZSBpcyBhIHNpZ25hbCBtZXNzYWdlIHdhaXRpbmcgdG8gYmUgc2VudC4AUE91dGJvdW5kWGNtcE1lc3NhZ2VzAQEIAgXRBdUFBAAEvCBUaGUgbWVzc2FnZXMgb3V0Ym91bmQgaW4gYSBnaXZlbiBYQ01QIGNoYW5uZWwuADhTaWduYWxNZXNzYWdlcwEBBAKc1QUEAASgIEFueSBzaWduYWwgbWVzc2FnZXMgd2FpdGluZyB0byBiZSBzZW50LgAsUXVldWVDb25maWcBANkFMCAAAAAwAAAACAAAAAQVASBUaGUgY29uZmlndXJhdGlvbiB3aGljaCBjb250cm9scyB0aGUgZHluYW1pY3Mgb2YgdGhlIG91dGJvdW5kIHF1ZXVlLgA4UXVldWVTdXNwZW5kZWQBADEBBAAEQQEgV2hldGhlciBvciBub3QgdGhlIFhDTVAgcXVldWUgaXMgc3VzcGVuZGVkIGZyb20gZXhlY3V0aW5nIGluY29taW5nIFhDTXMgb3Igbm90LgBERGVsaXZlcnlGZWVGYWN0b3IBAQQFnAEFQAAAZKeztuANAAAAAAAAAAAExCBUaGUgZmFjdG9yIHRvIG11bHRpcGx5IHRoZSBiYXNlIGRlbGl2ZXJ5IGZlZSBieS4AAV0BAAEJBAAMTE1heEluYm91bmRTdXNwZW5kZWQ4EOgDAAAUSQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGluYm91bmQgWENNUCBjaGFubmVscyB0aGF0IGNhbiBiZSBzdXNwZW5kZWQgc2ltdWx0YW5lb3VzbHkuAF0BIEFueSBmdXJ0aGVyIGNoYW5uZWwgc3VzcGVuc2lvbnMgd2lsbCBmYWlsIGFuZCBtZXNzYWdlcyBtYXkgZ2V0IGRyb3BwZWQgd2l0aG91dCBmdXJ0aGVyRQEgbm90aWNlLiBDaG9vc2luZyBhIGhpZ2ggdmFsdWUgKDEwMDApIGlzIG9rYXk7IHRoZSB0cmFkZS1vZmYgdGhhdCBpcyBkZXNjcmliZWQgaW7YIFtgSW5ib3VuZFhjbXBTdXNwZW5kZWRgXSBzdGlsbCBhcHBsaWVzIGF0IHRoYXQgc2NhbGUuAGRNYXhBY3RpdmVPdXRib3VuZENoYW5uZWxzOBCAAAAAIGUBIE1heGltYWwgbnVtYmVyIG9mIG91dGJvdW5kIFhDTVAgY2hhbm5lbHMgdGhhdCBjYW4gaGF2ZSBtZXNzYWdlcyBxdWV1ZWQgYXQgdGhlIHNhbWUgdGltZS4AVQEgSWYgdGhpcyBpcyByZWFjaGVkLCB0aGVuIG5vIGZ1cnRoZXIgbWVzc2FnZXMgY2FuIGJlIHNlbnQgdG8gY2hhbm5lbHMgdGhhdCBkbyBub3QgeWV0XQEgaGF2ZSBhIG1lc3NhZ2UgcXVldWVkLiBUaGlzIHNob3VsZCBiZSBzZXQgdG8gdGhlIGV4cGVjdGVkIG1heGltdW0gb2Ygb3V0Ym91bmQgY2hhbm5lbHNhASB3aGljaCBpcyBkZXRlcm1pbmVkIGJ5IFtgU2VsZjo6Q2hhbm5lbEluZm9gXS4gSXQgaXMgaW1wb3J0YW50IHRvIHNldCB0aGlzIGxhcmdlIGVub3VnaCxdASBzaW5jZSBvdGhlcndpc2UgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBwcm90b2NvbCB3aWxsIG5vdCB3b3JrIGFzIGludGVuZGVkIGFuZCBtZXNzYWdlc1EBIG1heSBiZSBkcm9wcGVkLiBUaGlzIHZhbHVlIGluY3JlYXNlcyB0aGUgUG9WIGFuZCBzaG91bGQgdGhlcmVmb3JlIG5vdCBiZSBwaWNrZWQgdG9vTQEgaGlnaC4gR292ZXJuYW5jZSBuZWVkcyB0byBwYXkgYXR0ZW50aW9uIHRvIG5vdCBvcGVuIG1vcmUgY2hhbm5lbHMgdGhhbiB0aGlzIHZhbHVlLgAsTWF4UGFnZVNpemU4EACcAQAUuCBUaGUgbWF4aW1hbCBwYWdlIHNpemUgZm9yIEhSTVAgbWVzc2FnZSBwYWdlcy4AYQEgQSBsb3dlciBsaW1pdCBjYW4gYmUgc2V0IGR5bmFtaWNhbGx5LCBidXQgdGhpcyBpcyB0aGUgaGFyZC1saW1pdCBmb3IgdGhlIFBvViB3b3JzdCBjYXNlVQEgYmVuY2htYXJraW5nLiBUaGUgbGltaXQgZm9yIHRoZSBzaXplIG9mIGEgbWVzc2FnZSBpcyBzbGlnaHRseSBiZWxvdyB0aGlzLCBzaW5jZSBzb21luCBvdmVyaGVhZCBpcyBpbmN1cnJlZCBmb3IgZW5jb2RpbmcgdGhlIGZvcm1hdC4AAd0FAAAAHgAALFBvbGthZG90WGNtASxQb2xrYWRvdFhjbTwwUXVlcnlDb3VudGVyAQAoIAAAAAAAAAAABIggVGhlIGxhdGVzdCBhdmFpbGFibGUgcXVlcnkgaW5kZXguABxRdWVyaWVzAAEEAijhBQQABFQgVGhlIG9uZ29pbmcgcXVlcmllcy4AKEFzc2V0VHJhcHMBAQQGPDgQAAAAABBoIFRoZSBleGlzdGluZyBhc3NldCB0cmFwcy4AYQEgS2V5IGlzIHRoZSBibGFrZTIgMjU2IGhhc2ggb2YgKG9yaWdpbiwgdmVyc2lvbmVkIGBBc3NldHNgKSBwYWlyLiBWYWx1ZSBpcyB0aGUgbnVtYmVyIG9mHQEgdGltZXMgdGhpcyBwYWlyIGhhcyBiZWVuIHRyYXBwZWQgKHVzdWFsbHkganVzdCAxIGlmIGl0IGV4aXN0cyBhdCBhbGwpLgA4U2FmZVhjbVZlcnNpb24AADgEAAhhASBEZWZhdWx0IHZlcnNpb24gdG8gZW5jb2RlIFhDTSB3aGVuIGxhdGVzdCB2ZXJzaW9uIG9mIGRlc3RpbmF0aW9uIGlzIHVua25vd24uIElmIGBOb25lYCw9ASB0aGVuIHRoZSBkZXN0aW5hdGlvbnMgd2hvc2UgWENNIHZlcnNpb24gaXMgdW5rbm93biBhcmUgY29uc2lkZXJlZCB1bnJlYWNoYWJsZS4AQFN1cHBvcnRlZFZlcnNpb24AAQgFAvUFOAQABPAgVGhlIExhdGVzdCB2ZXJzaW9ucyB0aGF0IHdlIGtub3cgdmFyaW91cyBsb2NhdGlvbnMgc3VwcG9ydC4AQFZlcnNpb25Ob3RpZmllcnMAAQgFAvUFKAQABAUBIEFsbCBsb2NhdGlvbnMgdGhhdCB3ZSBoYXZlIHJlcXVlc3RlZCB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMgZnJvbS4AUFZlcnNpb25Ob3RpZnlUYXJnZXRzAAEIBQL1BfkFBAAIcQEgVGhlIHRhcmdldCBsb2NhdGlvbnMgdGhhdCBhcmUgc3Vic2NyaWJlZCB0byBvdXIgdmVyc2lvbiBjaGFuZ2VzLCBhcyB3ZWxsIGFzIHRoZSBtb3N0IHJlY2VudJQgb2Ygb3VyIHZlcnNpb25zIHdlIGluZm9ybWVkIHRoZW0gb2YuAFRWZXJzaW9uRGlzY292ZXJ5UXVldWUBAP0FBAAMZQEgRGVzdGluYXRpb25zIHdob3NlIGxhdGVzdCBYQ00gdmVyc2lvbiB3ZSB3b3VsZCBsaWtlIHRvIGtub3cuIER1cGxpY2F0ZXMgbm90IGFsbG93ZWQsIGFuZHEBIHRoZSBgdTMyYCBjb3VudGVyIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBhIHNlbmQgdG8gdGhlIGRlc3RpbmF0aW9uIGhhcyBiZWVuIGF0dGVtcHRlZCyMIHdoaWNoIGlzIHVzZWQgYXMgYSBwcmlvcml0aXphdGlvbi4AQEN1cnJlbnRNaWdyYXRpb24AAAkGBAAEnCBUaGUgY3VycmVudCBtaWdyYXRpb24ncyBzdGFnZSwgaWYgYW55LgBUUmVtb3RlTG9ja2VkRnVuZ2libGVzAAEMBQICDQYRBgQABPAgRnVuZ2libGUgYXNzZXRzIHdoaWNoIHdlIGtub3cgYXJlIGxvY2tlZCBvbiBhIHJlbW90ZSBjaGFpbi4APExvY2tlZEZ1bmdpYmxlcwABBAIEIQYEAATgIEZ1bmdpYmxlIGFzc2V0cyB3aGljaCB3ZSBrbm93IGFyZSBsb2NrZWQgb24gdGhpcyBjaGFpbi4AVFhjbUV4ZWN1dGlvblN1c3BlbmRlZAEAMQEEAAS0IEdsb2JhbCBzdXNwZW5zaW9uIHN0YXRlIG9mIHRoZSBYQ00gZXhlY3V0b3IuADxTaG91bGRSZWNvcmRYY20BADEBBAAcWQEgV2hldGhlciBvciBub3QgaW5jb21pbmcgWENNcyAoYm90aCBleGVjdXRlZCBsb2NhbGx5IGFuZCByZWNlaXZlZCkgc2hvdWxkIGJlIHJlY29yZGVkLsQgT25seSBvbmUgWENNIHByb2dyYW0gd2lsbCBiZSByZWNvcmRlZCBhdCBhIHRpbWUuKQEgVGhpcyBpcyBtZWFudCB0byBiZSB1c2VkIGluIHJ1bnRpbWUgQVBJcywgYW5kIGl0J3MgYWR2aXNlZCBpdCBzdGF5cyBmYWxzZQ0BIGZvciBhbGwgb3RoZXIgdXNlIGNhc2VzLCBzbyBhcyB0byBub3QgZGVncmFkZSByZWd1bGFyIHBlcmZvcm1hbmNlLgBZASBPbmx5IHJlbGV2YW50IGlmIHRoaXMgcGFsbGV0IGlzIGJlaW5nIHVzZWQgYXMgdGhlIFtgeGNtX2V4ZWN1dG9yOjp0cmFpdHM6OlJlY29yZFhjbWBdyCBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgWENNIGV4ZWN1dG9yIGNvbmZpZ3VyYXRpb24uACxSZWNvcmRlZFhjbQAAdQIEABhJASBJZiBbYFNob3VsZFJlY29yZFhjbWBdIGlzIHNldCB0byB0cnVlLCB0aGVuIHRoZSBsYXN0IFhDTSBwcm9ncmFtIGV4ZWN1dGVkIGxvY2FsbHlUIHdpbGwgYmUgc3RvcmVkIGhlcmUuKQEgUnVudGltZSBBUElzIGNhbiBmZXRjaCB0aGUgWENNIHRoYXQgd2FzIGV4ZWN1dGVkIGJ5IGFjY2Vzc2luZyB0aGlzIHZhbHVlLgBZASBPbmx5IHJlbGV2YW50IGlmIHRoaXMgcGFsbGV0IGlzIGJlaW5nIHVzZWQgYXMgdGhlIFtgeGNtX2V4ZWN1dG9yOjp0cmFpdHM6OlJlY29yZFhjbWBdyCBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgWENNIGV4ZWN1dG9yIGNvbmZpZ3VyYXRpb24uAERBdXRob3JpemVkQWxpYXNlcwABBAJlAS0GBAAMZQEgTWFwIG9mIGF1dGhvcml6ZWQgYWxpYXNlcnMgb2YgbG9jYWwgb3JpZ2lucy4gRWFjaCBsb2NhbCBsb2NhdGlvbiBjYW4gYXV0aG9yaXplIGEgbGlzdCBvZlkBIG90aGVyIGxvY2F0aW9ucyB0byBhbGlhcyBpbnRvIGl0LiBFYWNoIGFsaWFzZXIgaXMgb25seSB2YWxpZCB1bnRpbCBpdHMgaW5uZXIgYGV4cGlyeWA4IGJsb2NrIG51bWJlci4AAWEBCAECuQFUaGlzIGV4dHJpbnNpYyB1c2VzIGBXZWlnaHRMaW1pdDo6VW5saW1pdGVkYCwgcGxlYXNlIG1pZ3JhdGUgdG8gYGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzYCBvciBgdHJhbnNmZXJfYXNzZXRzYAACAtkBVGhpcyBleHRyaW5zaWMgdXNlcyBgV2VpZ2h0TGltaXQ6OlVubGltaXRlZGAsIHBsZWFzZSBtaWdyYXRlIHRvIGBsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzYCBvciBgdHJhbnNmZXJfYXNzZXRzYAABDQQAEERVbml2ZXJzYWxMb2NhdGlvbuSYAgkA4UPyOAOsUOj2+OYmldHOnk4daKo2wc0s/RU0AhPzQj4A+U8EhCBUaGlzIGNoYWluJ3MgVW5pdmVyc2FsIExvY2F0aW9uLgBQQWR2ZXJ0aXNlZFhjbVZlcnNpb244EAUAAAAIJQEgVGhlIGxhdGVzdCBzdXBwb3J0ZWQgdmVyc2lvbiB0aGF0IHdlIGFkdmVydGlzZS4gR2VuZXJhbGx5IGp1c3Qgc2V0IGl0IHRvhCBgcGFsbGV0X3hjbTo6Q3VycmVudFhjbVZlcnNpb25gLgAoTWF4TG9ja2VyczgQCAAAAAQZASBUaGUgbWF4aW11bSBudW1iZXIgb2YgbG9jYWwgWENNIGxvY2tzIHRoYXQgYSBzaW5nbGUgYWNjb3VudCBtYXkgaGF2ZS4AWE1heFJlbW90ZUxvY2tDb25zdW1lcnM4EAAAAAAE/CBUaGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGEgc2luZ2xlIHJlbW90ZSBsb2NrIG1heSBoYXZlLgABRQYEGAK8VXNlIGBMb2NhbEV4ZWN1dGlvbkluY29tcGxldGVXaXRoRXJyb3JgIGluc3RlYWQBGDIwLjAuMAgsUnVudGltZUNhbGwgBGQgVGhlIHJ1bnRpbWUgYENhbGxgIHR5cGUucFJlbW90ZUxvY2tDb25zdW1lcklkZW50aWZpZXIQBMQgVGhlIElEIHR5cGUgZm9yIGxvY2FsIGNvbnN1bWVycyBvZiByZW1vdGUgbG9ja3MuAB8AAChDdW11bHVzWGNtAAExAwABHQQAAAAAACAAADBNZXNzYWdlUXVldWUBME1lc3NhZ2VRdWV1ZQwwQm9va1N0YXRlRm9yAQEEBTkDTQZ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEzCBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IGFuZCBsYXN0IChub24tZW1wdHkpIHBhZ2VzLgAsU2VydmljZUhlYWQAADkDBAAEvCBUaGUgb3JpZ2luIGF0IHdoaWNoIHdlIHNob3VsZCBiZWdpbiBzZXJ2aWNpbmcuABRQYWdlcwABCAUFWQZdBgQABIggVGhlIG1hcCBvZiBwYWdlIGluZGljZXMgdG8gcGFnZXMuAAE1AwABIQQAECBIZWFwU2l6ZTgQAJwBABQ9ASBUaGUgc2l6ZSBvZiB0aGUgcGFnZTsgdGhpcyBpbXBsaWVzIHRoZSBtYXhpbXVtIG1lc3NhZ2Ugc2l6ZSB3aGljaCBjYW4gYmUgc2VudC4AWQEgQSBnb29kIHZhbHVlIGRlcGVuZHMgb24gdGhlIGV4cGVjdGVkIG1lc3NhZ2Ugc2l6ZXMsIHRoZWlyIHdlaWdodHMsIHRoZSB3ZWlnaHQgdGhhdCBpc10BIGF2YWlsYWJsZSBmb3IgcHJvY2Vzc2luZyB0aGVtIGFuZCB0aGUgbWF4aW1hbCBuZWVkZWQgbWVzc2FnZSBzaXplLiBUaGUgbWF4aW1hbCBtZXNzYWdlEQEgc2l6ZSBpcyBzbGlnaHRseSBsb3dlciB0aGFuIHRoaXMgYXMgZGVmaW5lZCBieSBbYE1heE1lc3NhZ2VMZW5PZmBdLgAgTWF4U3RhbGU4EAgAAAAMXQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWxlIHBhZ2VzIChpLmUuIG9mIG92ZXJ3ZWlnaHQgbWVzc2FnZXMpIGFsbG93ZWQgYmVmb3JlIGN1bGxpbmdRASBjYW4gaGFwcGVuLiBPbmNlIHRoZXJlIGFyZSBtb3JlIHN0YWxlIHBhZ2VzIHRoYW4gdGhpcywgdGhlbiBoaXN0b3JpY2FsIHBhZ2VzIG1heSBiZfwgZHJvcHBlZCwgZXZlbiBpZiB0aGV5IGNvbnRhaW4gdW5wcm9jZXNzZWQgb3ZlcndlaWdodCBtZXNzYWdlcy4ANFNlcnZpY2VXZWlnaHS9AiwBBwBYQPuiAgDgABhBASBUaGUgYW1vdW50IG9mIHdlaWdodCAoaWYgYW55KSB3aGljaCBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdGhlIG1lc3NhZ2UgcXVldWUgZm9yqCBzZXJ2aWNpbmcgZW5xdWV1ZWQgaXRlbXMgYG9uX2luaXRpYWxpemVgLgD8IFRoaXMgbWF5IGJlIGxlZ2l0aW1hdGVseSBgTm9uZWAgaW4gdGhlIGNhc2UgdGhhdCB5b3Ugd2lsbCBjYWxsXQEgYFNlcnZpY2VRdWV1ZXM6OnNlcnZpY2VfcXVldWVzYCBtYW51YWxseSBvciBzZXQgW2BTZWxmOjpJZGxlTWF4U2VydmljZVdlaWdodGBdIHRvIGhhdmVUIGl0IHJ1biBpbiBgb25faWRsZWAuAFBJZGxlTWF4U2VydmljZVdlaWdodL0CLAEHAFhA+6ICAOAAFF0BIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgKGlmIGFueSkgdG8gYmUgdXNlZCBmcm9tIHJlbWFpbmluZyB3ZWlnaHQgYG9uX2lkbGVgIHdoaWNoQQEgc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIGZvciBzZXJ2aWNpbmcgZW5xdWV1ZWQgaXRlbXMgYG9uX2lkbGVgLj0BIFVzZWZ1bCBmb3IgcGFyYWNoYWlucyB0byBwcm9jZXNzIG1lc3NhZ2VzIGF0IHRoZSBzYW1lIGJsb2NrIHRoZXkgYXJlIHJlY2VpdmVkLgApASBJZiBgTm9uZWAsIGl0IHdpbGwgbm90IGNhbGwgYFNlcnZpY2VRdWV1ZXM6OnNlcnZpY2VfcXVldWVzYCBpbiBgb25faWRsZWAuAAFlBgAEEFNpemU4BFQgUGFnZS9oZWFwIHNpemUgdHlwZS4AIgAAEFN1ZG8BEFN1ZG8EDEtleQAABAQABIQgVGhlIGBBY2NvdW50SWRgIG9mIHRoZSBzdWRvIGtleS4AAT0DAAEpBAAAAWkGAAQsUnVudGltZUNhbGwgBEggQSBzdWRvLWFibGUgY2FsbC4AZAAACAQFACBBAwQAMAAECAwQFBgcICQoLDA0QXV0aG9yaXplQ2FsbE0DEEhDaGVja05vblplcm9TZW5kZXJRAxBAQ2hlY2tTcGVjVmVyc2lvblUDODhDaGVja1R4VmVyc2lvblkDODBDaGVja0dlbmVzaXNdAzw4Q2hlY2tNb3J0YWxpdHlhAzwoQ2hlY2tOb25jZWkDECxDaGVja1dlaWdodG0DEGBDaGFyZ2VUcmFuc2FjdGlvblBheW1lbnRxAxBQVmFsaWRhdGVTdG9yYWdlQ2FsbHN1AxBEQ2hlY2tNZXRhZGF0YUhhc2h5A4EDUFN0b3JhZ2VXZWlnaHRSZWNsYWltEBBUHEF1cmFBcGkINHNsb3RfZHVyYXRpb24AbQYMkCBSZXR1cm5zIHRoZSBzbG90IGR1cmF0aW9uIGZvciBBdXJhLgAlASBDdXJyZW50bHksIG9ubHkgdGhlIHZhbHVlIHByb3ZpZGVkIGJ5IHRoaXMgdHlwZSBhdCBnZW5lc2lzIHdpbGwgYmUgdXNlZC4ALGF1dGhvcml0aWVzAKkFBJwgUmV0dXJuIHRoZSBjdXJyZW50IHNldCBvZiBhdXRob3JpdGllcy4ABLggQVBJIG5lY2Vzc2FyeSBmb3IgYmxvY2sgYXV0aG9yc2hpcCB3aXRoIGF1cmEuBABQUmVsYXlQYXJlbnRPZmZzZXRBcGkETHJlbGF5X3BhcmVudF9vZmZzZXQAOAT0IEZldGNoIHRoZSBzbG90IG9mZnNldCB0aGF0IGlzIGV4cGVjdGVkIGZyb20gdGhlIHJlbGF5IGNoYWluLgAQBQEgQVBJIHRvIHRlbGwgdGhlIG5vZGUgc2lkZSBob3cgdGhlIHJlbGF5IHBhcmVudCBzaG91bGQgYmUgY2hvc2VuLgBpASBBIGxhcmdlciBvZmZzZXQgaW5kaWNhdGVzIHRoYXQgdGhlIHJlbGF5IHBhcmVudCBzaG91bGQgbm90IGJlIHRoZSB0aXAgb2YgdGhlIHJlbGF5IGNoYWluLDEBIGJ1dCBgTmAgYmxvY2tzIGJlaGluZCB0aGUgdGlwLiBUaGlzIG9mZnNldCBpcyB0aGVuIGVuZm9yY2VkIGJ5IHRoZSBydW50aW1lLgQAYEF1cmFVbmluY2x1ZGVkU2VnbWVudEFwaQQ4Y2FuX2J1aWxkX3Vwb24INGluY2x1ZGVkX2hhc2g8EHNsb3StBTEBKDkBIFdoZXRoZXIgaXQgaXMgbGVnYWwgdG8gZXh0ZW5kIHRoZSBjaGFpbiwgYXNzdW1pbmcgdGhlIGdpdmVuIGJsb2NrIGlzIHRoZSBtb3N0NQEgcmVjZW50bHkgaW5jbHVkZWQgb25lIGFzLW9mIHRoZSByZWxheSBwYXJlbnQgdGhhdCB3aWxsIGJlIGJ1aWx0IGFnYWluc3QsIGFuZHAgdGhlIGdpdmVuIHJlbGF5IGNoYWluIHNsb3QuAFEBIFRoaXMgc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9naWMgdGhlIHJ1bnRpbWUgdXNlcyB3aGVuIHZhbGlkYXRpbmcgYmxvY2tzIHRvOCBhdm9pZCBpc3N1ZXMuAGEBIFdoZW4gdGhlIHVuaW5jbHVkZWQgc2VnbWVudCBpcyBlbXB0eSwgaS5lLiBgaW5jbHVkZWRfaGFzaCA9PSBhdGAsIHdoZXJlIGF0IGlzIHRoZSBibG9ja2EBIHdob3NlIHN0YXRlIHdlIGFyZSBxdWVyeWluZyBhZ2FpbnN0LCB0aGlzIG11c3QgYWx3YXlzIHJldHVybiBgdHJ1ZWAgYXMgbG9uZyBhcyB0aGUgc2xvdLwgaXMgbW9yZSByZWNlbnQgdGhhbiB0aGUgaW5jbHVkZWQgYmxvY2sgaXRzZWxmLgA0NQEgVGhpcyBydW50aW1lIEFQSSBpcyB1c2VkIHRvIGluZm9ybSBwb3RlbnRpYWwgYmxvY2sgYXV0aG9ycyB3aGV0aGVyIHRoZXkgd2lsbCUBIGhhdmUgdGhlIHJpZ2h0IHRvIGF1dGhvciBhdCBhIHNsb3QsIGFzc3VtaW5nIHRoZXkgaGF2ZSBjbGFpbWVkIHRoZSBzbG90LgB1ASBJbiBwYXJ0aWN1bGFyLCB0aGlzIEFQSSBhbGxvd3MgQXVyYS1iYXNlZCBwYXJhY2hhaW5zIHRvIHJlZ3VsYXRlIHRoZWlyICJ1bmluY2x1ZGVkIHNlZ21lbnQiLG0BIHdoaWNoIGlzIHRoZSBzZWN0aW9uIG9mIHRoZSBoZWFkIG9mIHRoZSBjaGFpbiB3aGljaCBoYXMgbm90IHlldCBiZWVuIG1hZGUgYXZhaWxhYmxlIGluIHRoZTQgcmVsYXkgY2hhaW4uAGEBIFdoZW4gdGhlIHVuaW5jbHVkZWQgc2VnbWVudCBpcyBzaG9ydCwgQXVyYSBjaGFpbnMgd2lsbCBhbGxvdyBhdXRob3JzIHRvIGNyZWF0ZSBtdWx0aXBsZV0BIGJsb2NrcyBwZXIgc2xvdCBpbiBvcmRlciB0byBidWlsZCBhIGJhY2tsb2cuIFdoZW4gaXQgaXMgc2F0dXJhdGVkLCB0aGlzIEFQSSB3aWxsIGxpbWl0qCB0aGUgYW1vdW50IG9mIGJsb2NrcyB0aGF0IGNhbiBiZSBjcmVhdGVkLgAkIENoYW5nZXM6kQEgLSBWZXJzaW9uIDI6IFVwZGF0ZSB0byBgY2FuX2J1aWxkX3Vwb25gIHRvIHRha2UgYSByZWxheSBjaGFpbiBgU2xvdGAgaW5zdGVhZCBvZiBhIHBhcmFjaGFpbiBgU2xvdGAuCAAQQ29yZQwcdmVyc2lvbgBpBASQIFJldHVybnMgdGhlIHZlcnNpb24gb2YgdGhlIHJ1bnRpbWUuADRleGVjdXRlX2Jsb2NrBBRibG9ja3EGEARkIEV4ZWN1dGUgdGhlIGdpdmVuIGJsb2NrLgBAaW5pdGlhbGl6ZV9ibG9jawQYaGVhZGVyXH0GBEEBIEluaXRpYWxpemUgYSBibG9jayB3aXRoIHRoZSBnaXZlbiBoZWFkZXIgYW5kIHJldHVybiB0aGUgcnVudGltZSBleGVjdXRpdmUgbW9kZS4ABCEBIFRoZSBgQ29yZWAgcnVudGltZSBhcGkgdGhhdCBldmVyeSBTdWJzdHJhdGUgcnVudGltZSBuZWVkcyB0byBpbXBsZW1lbnQuFAAgTWV0YWRhdGEMIG1ldGFkYXRhAIEGBIwgUmV0dXJucyB0aGUgbWV0YWRhdGEgb2YgYSBydW50aW1lLgBMbWV0YWRhdGFfYXRfdmVyc2lvbgQcdmVyc2lvbjiFBhCkIFJldHVybnMgdGhlIG1ldGFkYXRhIGF0IGEgZ2l2ZW4gdmVyc2lvbi4ABQEgSWYgdGhlIGdpdmVuIGB2ZXJzaW9uYCBpc24ndCBzdXBwb3J0ZWQsIHRoaXMgd2lsbCByZXR1cm4gYE5vbmVgLnUBIFVzZSBbYFNlbGY6Om1ldGFkYXRhX3ZlcnNpb25zYF0gdG8gZmluZCBvdXQgYWJvdXQgc3VwcG9ydGVkIG1ldGFkYXRhIHZlcnNpb24gb2YgdGhlIHJ1bnRpbWUuAERtZXRhZGF0YV92ZXJzaW9ucwCJBgykIFJldHVybnMgdGhlIHN1cHBvcnRlZCBtZXRhZGF0YSB2ZXJzaW9ucy4AwCBUaGlzIGNhbiBiZSB1c2VkIHRvIGNhbGwgYG1ldGFkYXRhX2F0X3ZlcnNpb25gLgAEAQEgVGhlIGBNZXRhZGF0YWAgYXBpIHRyYWl0IHRoYXQgcmV0dXJucyBtZXRhZGF0YSBmb3IgdGhlIHJ1bnRpbWUuCAAwQmxvY2tCdWlsZGVyEDxhcHBseV9leHRyaW5zaWMEJGV4dHJpbnNpY4UEjQYQbCBBcHBseSB0aGUgZ2l2ZW4gZXh0cmluc2ljLgA5ASBSZXR1cm5zIGFuIGluY2x1c2lvbiBvdXRjb21lIHdoaWNoIHNwZWNpZmllcyBpZiB0aGlzIGV4dHJpbnNpYyBpcyBpbmNsdWRlZCBpbkwgdGhpcyBibG9jayBvciBub3QuADhmaW5hbGl6ZV9ibG9jawBcBGggRmluaXNoIHRoZSBjdXJyZW50IGJsb2NrLgBMaW5oZXJlbnRfZXh0cmluc2ljcwQgaW5oZXJlbnSdBpEEBD0BIEdlbmVyYXRlIGluaGVyZW50IGV4dHJpbnNpY3MuIFRoZSBpbmhlcmVudCBkYXRhIHdpbGwgdmFyeSBmcm9tIGNoYWluIHRvIGNoYWluLgA8Y2hlY2tfaW5oZXJlbnRzCBRibG9ja3EGEGRhdGGdBq0GBFUBIENoZWNrIHRoYXQgdGhlIGluaGVyZW50cyBhcmUgdmFsaWQuIFRoZSBpbmhlcmVudCBkYXRhIHdpbGwgdmFyeSBmcm9tIGNoYWluIHRvIGNoYWluLgAEcQEgVGhlIGBCbG9ja0J1aWxkZXJgIGFwaSB0cmFpdCB0aGF0IHByb3ZpZGVzIHRoZSByZXF1aXJlZCBmdW5jdGlvbmFsaXR5IGZvciBidWlsZGluZyBhIGJsb2NrLhgAWFRhZ2dlZFRyYW5zYWN0aW9uUXVldWUEUHZhbGlkYXRlX3RyYW5zYWN0aW9uDBhzb3VyY2WxBgh0eIUEKGJsb2NrX2hhc2g8tQYkaCBWYWxpZGF0ZSB0aGUgdHJhbnNhY3Rpb24uAGUBIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYnkgdGhlIHRyYW5zYWN0aW9uIHBvb2wgdG8gbGVhcm4gZGV0YWlscyBhYm91dCBnaXZlbiB0cmFuc2FjdGlvbi5FASBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIG1ha2Ugc3VyZSB0byB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSB0cmFuc2FjdGlvbk0BIGFnYWluc3QgY3VycmVudCBzdGF0ZS4gVGhlIGdpdmVuIGBibG9ja19oYXNoYCBjb3JyZXNwb25kcyB0byB0aGUgaGFzaCBvZiB0aGUgYmxvY2t8IHRoYXQgaXMgdXNlZCBhcyBjdXJyZW50IHN0YXRlLgBFASBOb3RlIHRoYXQgdGhpcyBjYWxsIG1heSBiZSBwZXJmb3JtZWQgYnkgdGhlIHBvb2wgbXVsdGlwbGUgdGltZXMgYW5kIHRyYW5zYWN0aW9uc6QgbWlnaHQgYmUgdmVyaWZpZWQgaW4gYW55IHBvc3NpYmxlIG9yZGVyLgAETQEgVGhlIGBUYWdnZWRUcmFuc2FjdGlvblF1ZXVlYCBhcGkgdHJhaXQgZm9yIGludGVyZmVyaW5nIHdpdGggdGhlIHRyYW5zYWN0aW9uIHF1ZXVlLgwARE9mZmNoYWluV29ya2VyQXBpBDxvZmZjaGFpbl93b3JrZXIEGGhlYWRlclwQBMggU3RhcnRzIHRoZSBvZmYtY2hhaW4gdGFzayBmb3IgZ2l2ZW4gYmxvY2sgaGVhZGVyLgAEZCBUaGUgb2ZmY2hhaW4gd29ya2VyIGFwaS4IACxTZXNzaW9uS2V5cwhUZ2VuZXJhdGVfc2Vzc2lvbl9rZXlzCBRvd25lchgQc2VlZP0DvQYcFQEgR2VuZXJhdGUgYSBzZXQgb2Ygc2Vzc2lvbiBrZXlzIHdpdGggb3B0aW9uYWxseSB1c2luZyB0aGUgZ2l2ZW4gc2VlZC4JASBUaGUga2V5cyBzaG91bGQgYmUgc3RvcmVkIHdpdGhpbiB0aGUga2V5c3RvcmUgZXhwb3NlZCB2aWEgcnVudGltZTwgZXh0ZXJuYWxpdGllcy4AsCBUaGUgc2VlZCBuZWVkcyB0byBiZSBhIHZhbGlkIGB1dGY4YCBzdHJpbmcuANAgUmV0dXJucyB0aGUgY29uY2F0ZW5hdGVkIFNDQUxFIGVuY29kZWQgcHVibGljIGtleXMuAExkZWNvZGVfc2Vzc2lvbl9rZXlzBBxlbmNvZGVkGMEGDJggRGVjb2RlIHRoZSBnaXZlbiBwdWJsaWMgc2Vzc2lvbiBrZXlzLgDcIFJldHVybnMgdGhlIGxpc3Qgb2YgcHVibGljIHJhdyBwdWJsaWMga2V5cyArIGtleSB0eXBlLgAEaCBTZXNzaW9uIGtleXMgcnVudGltZSBhcGkuCAA8QWNjb3VudE5vbmNlQXBpBDRhY2NvdW50X25vbmNlBBxhY2NvdW50BDgEwCBHZXQgY3VycmVudCBhY2NvdW50IG5vbmNlIG9mIGdpdmVuIGBBY2NvdW50SWRgLgAEgCBUaGUgQVBJIHRvIHF1ZXJ5IGFjY291bnQgbm9uY2UuBABUVHJhbnNhY3Rpb25QYXltZW50QXBpEChxdWVyeV9pbmZvCAx1eHSFBAxsZW44zQYAAERxdWVyeV9mZWVfZGV0YWlscwgMdXh0hQQMbGVuONEGAABMcXVlcnlfd2VpZ2h0X3RvX2ZlZQQYd2VpZ2h0KQH8AABMcXVlcnlfbGVuZ3RoX3RvX2ZlZQQYbGVuZ3RoOPwAAAAQAGRUcmFuc2FjdGlvblBheW1lbnRDYWxsQXBpEDxxdWVyeV9jYWxsX2luZm8IEGNhbGwgDGxlbjjNBgRJASBRdWVyeSBpbmZvcm1hdGlvbiBvZiBhIGRpc3BhdGNoIGNsYXNzLCB3ZWlnaHQsIGFuZCBmZWUgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4AWHF1ZXJ5X2NhbGxfZmVlX2RldGFpbHMIEGNhbGwgDGxlbjjRBgS0IFF1ZXJ5IGZlZSBkZXRhaWxzIG9mIGEgZ2l2ZW4gZW5jb2RlZCBgQ2FsbGAuAExxdWVyeV93ZWlnaHRfdG9fZmVlBBh3ZWlnaHQpAfwEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgV2VpZ2h0VG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4/AQBASBRdWVyeSB0aGUgb3V0cHV0IG9mIHRoZSBjdXJyZW50IGBMZW5ndGhUb0ZlZWAgZ2l2ZW4gc29tZSBpbnB1dC4AAAwANFhjbVBheW1lbnRBcGkQfHF1ZXJ5X2FjY2VwdGFibGVfcGF5bWVudF9hc3NldHMELHhjbV92ZXJzaW9uON0GFLQgUmV0dXJucyBhIGxpc3Qgb2YgYWNjZXB0YWJsZSBwYXltZW50IGFzc2V0cy4AMCAjIEFyZ3VtZW50cwBoICogYHhjbV92ZXJzaW9uYDogVmVyc2lvbi4AQHF1ZXJ5X3hjbV93ZWlnaHQEHG1lc3NhZ2WxAekGFKggUmV0dXJucyBhIHdlaWdodCBuZWVkZWQgdG8gZXhlY3V0ZSBhIFhDTS4AMCAjIEFyZ3VtZW50cwB0ICogYG1lc3NhZ2VgOiBgVmVyc2lvbmVkWGNtYC4AZHF1ZXJ5X3dlaWdodF90b19hc3NldF9mZWUIGHdlaWdodCkBFGFzc2V0KQPtBhjoIENvbnZlcnRzIGEgd2VpZ2h0IGludG8gYSBmZWUgZm9yIHRoZSBzcGVjaWZpZWQgYEFzc2V0SWRgLgAwICMgQXJndW1lbnRzAIggKiBgd2VpZ2h0YDogY29udmVydGlibGUgYFdlaWdodGAufCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldElkYC4ATHF1ZXJ5X2RlbGl2ZXJ5X2ZlZXMMLGRlc3RpbmF0aW9uZQEcbWVzc2FnZbEBIGFzc2V0X2lkKQPxBihgIFF1ZXJ5IGRlbGl2ZXJ5IGZlZXMgVjIuAB0BIEdldCBkZWxpdmVyeSBmZWVzIGZvciBzZW5kaW5nIGEgc3BlY2lmaWMgYG1lc3NhZ2VgIHRvIGEgYGRlc3RpbmF0aW9uYC70IFRoZXNlIGFsd2F5cyBjb21lIGluIGEgc3BlY2lmaWMgYXNzZXQsIGRlZmluZWQgYnkgdGhlIGNoYWluLgAwICMgQXJndW1lbnRzgQEgKiBgbWVzc2FnZWA6IFRoZSBtZXNzYWdlIHRoYXQnbGwgYmUgc2VudCwgbmVjZXNzYXJ5IGJlY2F1c2UgbW9zdCBkZWxpdmVyeSBmZWVzIGFyZSBiYXNlZCBvbiB0aGVcICAgc2l6ZSBvZiB0aGUgbWVzc2FnZS5hASAqIGBkZXN0aW5hdGlvbmA6IFRoZSBkZXN0aW5hdGlvbiB0byBzZW5kIHRoZSBtZXNzYWdlIHRvLiBEaWZmZXJlbnQgZGVzdGluYXRpb25zIG1heSB1c2XAICAgZGlmZmVyZW50IHNlbmRlcnMgdGhhdCBjaGFyZ2UgZGlmZmVyZW50IGZlZXMuACxwIEEgdHJhaXQgb2YgWENNIHBheW1lbnQgQVBJLgCoIEFQSSBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvciBvYnRhaW5pbmc6AMQgKiB0aGUgd2VpZ2h0IHJlcXVpcmVkIHRvIGV4ZWN1dGUgYW4gWENNIG1lc3NhZ2UsBQEgKiBhIGxpc3Qgb2YgYWNjZXB0YWJsZSBgQXNzZXRJZGBzIGZvciBtZXNzYWdlIGV4ZWN1dGlvbiBwYXltZW50LAEBICogdGhlIGNvc3Qgb2YgdGhlIHdlaWdodCBpbiB0aGUgc3BlY2lmaWVkIGFjY2VwdGFibGUgYEFzc2V0SWRgLqAgKiB0aGUgZmVlcyBmb3IgYW4gWENNIG1lc3NhZ2UgZGVsaXZlcnkuAPAgVG8gZGV0ZXJtaW5lIHRoZSBleGVjdXRpb24gd2VpZ2h0IG9mIHRoZSBjYWxscyByZXF1aXJlZCBmb3J1ASBbYHhjbTo6bGF0ZXN0OjpJbnN0cnVjdGlvbjo6VHJhbnNhY3RgXSBpbnN0cnVjdGlvbiwgYFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGlgIGNhbiBiZSB1c2VkLggAJERyeVJ1bkFwaQgwZHJ5X3J1bl9jYWxsDBhvcmlnaW7IEGNhbGwgTHJlc3VsdF94Y21zX3ZlcnNpb2449QYERCBEcnkgcnVuIGNhbGwgVjIuACxkcnlfcnVuX3hjbQg8b3JpZ2luX2xvY2F0aW9uZQEMeGNt9QIhBwRQIERyeSBydW4gWENNIHByb2dyYW0AJLEBIEFQSSBmb3IgZHJ5LXJ1bm5pbmcgZXh0cmluc2ljcyBhbmQgWENNIHByb2dyYW1zIHRvIGdldCB0aGUgcHJvZ3JhbXMgdGhhdCBuZWVkIHRvIGJlIHBhc3NlZCB0byB0aGUgZmVlcyBBUEkuAIEBIEFsbCBjYWxscyByZXR1cm4gYSB2ZWN0b3Igb2YgdHVwbGVzIChsb2NhdGlvbiwgeGNtKSB3aGVyZSBlYWNoICJ4Y20iIGlzIGV4ZWN1dGVkIGluICJsb2NhdGlvbiIu5CBJZiB0aGVyZSdzIGxvY2FsIGV4ZWN1dGlvbiwgdGhlIGxvY2F0aW9uIHdpbGwgYmUgIkhlcmUiLh0BIFRoaXMgdmVjdG9yIGNhbiBiZSB1c2VkIHRvIGNhbGN1bGF0ZSBib3RoIGV4ZWN1dGlvbiBhbmQgZGVsaXZlcnkgZmVlcy4AmQEgQ2FsbHMgb3IgWENNcyBtaWdodCBmYWlsIHdoZW4gZXhlY3V0ZWQsIHRoaXMgZG9lc24ndCBtZWFuIHRoZSByZXN1bHQgb2YgdGhlc2UgY2FsbHMgd2lsbCBiZSBhbiBgRXJyYC5lASBJbiB0aG9zZSBjYXNlcywgdGhlcmUgbWlnaHQgc3RpbGwgYmUgYSB2YWxpZCByZXN1bHQsIHdpdGggdGhlIGV4ZWN1dGlvbiBlcnJvciBpbnNpZGUgaXQuZQEgVGhlIG9ubHkgcmVhc29ucyB3aHkgdGhlc2UgY2FsbHMgbWlnaHQgcmV0dXJuIGFuIGVycm9yIGFyZSBsaXN0ZWQgaW4gdGhlIFtgRXJyb3JgXSBlbnVtLggAUExvY2F0aW9uVG9BY2NvdW50QXBpBEBjb252ZXJ0X2xvY2F0aW9uBCBsb2NhdGlvbmUBKQcEkCBDb252ZXJ0cyBgTG9jYXRpb25gIHRvIGBBY2NvdW50SWRgLgAEDQEgQVBJIGZvciB1c2VmdWwgY29udmVyc2lvbnMgYmV0d2VlbiBYQ00gYExvY2F0aW9uYCBhbmQgYEFjY291bnRJZGAuBAA8VHJ1c3RlZFF1ZXJ5QXBpCEhpc190cnVzdGVkX3Jlc2VydmUIFGFzc2V0MQcgbG9jYXRpb25lATUHFPAgUmV0dXJucyBpZiB0aGUgbG9jYXRpb24gaXMgYSB0cnVzdGVkIHJlc2VydmUgZm9yIHRoZSBhc3NldC4AMCAjIEFyZ3VtZW50c3QgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRgLowgKiBgbG9jYXRpb25gOiBgVmVyc2lvbmVkTG9jYXRpb25gLgBUaXNfdHJ1c3RlZF90ZWxlcG9ydGVyCBRhc3NldDEHIGxvY2F0aW9uZQE1BxTgIFJldHVybnMgaWYgdGhlIGFzc2V0IGNhbiBiZSB0ZWxlcG9ydGVkIHRvIHRoZSBsb2NhdGlvbi4AMCAjIEFyZ3VtZW50c3QgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRgLowgKiBgbG9jYXRpb25gOiBgVmVyc2lvbmVkTG9jYXRpb25gLgAE7CBBUEkgZm9yIHF1ZXJ5aW5nIHRydXN0ZWQgcmVzZXJ2ZXMgYW5kIHRydXN0ZWQgdGVsZXBvcnRlcnMuBABUQXV0aG9yaXplZEFsaWFzZXJzQXBpCExhdXRob3JpemVkX2FsaWFzZXJzBBh0YXJnZXRlAT0HBPQgUmV0dXJucyBsb2NhdGlvbnMgYWxsb3dlZCB0byBhbGlhcyBpbnRvIGFuZCBhY3QgYXMgYHRhcmdldGAuAExpc19hdXRob3JpemVkX2FsaWFzCBhvcmlnaW5lARh0YXJnZXRlAUUHBB0BIFJldHVybnMgd2hldGhlciBgb3JpZ2luYCBpcyBhbGxvd2VkIHRvIGFsaWFzIGludG8gYW5kIGFjdCBhcyBgdGFyZ2V0YC4ABKAgQVBJIGZvciBxdWVyeWluZyBYQ00gYXV0aG9yaXplZCBhbGlhc2VzBABQQ29sbGVjdENvbGxhdGlvbkluZm8EWGNvbGxlY3RfY29sbGF0aW9uX2luZm8EGGhlYWRlclxJBxCcIENvbGxlY3QgaW5mb3JtYXRpb24gYWJvdXQgYSBjb2xsYXRpb24uAPQgVGhlIGdpdmVuIGBoZWFkZXJgIGlzIHRoZSBoZWFkZXIgb2YgdGhlIGJ1aWx0IGJsb2NrIGZvciB0aGF0qCB3ZSBhcmUgY29sbGVjdGluZyB0aGUgY29sbGF0aW9uIGluZm8gZm9yLgAU2CBSdW50aW1lIGFwaSB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLgBEIFZlcnNpb24gaGlzdG9yeToBASAtIFZlcnNpb24gMjogQ2hhbmdlZCBbYFNlbGY6OmNvbGxlY3RfY29sbGF0aW9uX2luZm9gXSBzaWduYXR1cmU1ASAtIFZlcnNpb24gMzogU2lnbmFscyB0byB0aGUgbm9kZSB0byB1c2UgdmVyc2lvbiAxIG9mIFtgUGFyYWNoYWluQmxvY2tEYXRhYF0uDABUVHJhbnNhY3Rpb25TdG9yYWdlQXBpBEByZXRlbnRpb25fcGVyaW9kADgE2CBHZXQgdGhlIGFjdHVhbCB2YWx1ZSBvZiBhIHJldGVudGlvbiBwZXJpb2QgaW4gYmxvY2tzLgAEzCBSdW50aW1lIEFQSSB0cmFpdCBmb3IgdHJhbnNhY3Rpb24gc3RvcmFnZSBzdXBwb3J0LgQAOEdlbmVzaXNCdWlsZGVyDCxidWlsZF9zdGF0ZQQQanNvbhhVByhlASBCdWlsZCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gYSBKU09OIGJsb2Igbm90IHVzaW5nIGFueSBkZWZhdWx0cyBhbmQgc3RvcmUgaXQgaW4gdGhlJCBzdG9yYWdlLgApASBJbiB0aGUgY2FzZSBvZiBhIEZSQU1FLWJhc2VkIHJ1bnRpbWUsIHRoaXMgZnVuY3Rpb24gZGVzZXJpYWxpemVzIHRoZSBmdWxsVQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmcm9tIHRoZSBnaXZlbiBKU09OIGJsb2IgYW5kIHB1dHMgaXQgaW50byB0aGUgc3RvcmFnZS4gSWYgdGhlVQEgcHJvdmlkZWQgSlNPTiBibG9iIGlzIGluY29ycmVjdCBvciBpbmNvbXBsZXRlIG9yIHRoZSBkZXNlcmlhbGl6YXRpb24gZmFpbHMsIGFuIGVycm9yNCBpcyByZXR1cm5lZC4AXQEgUGxlYXNlIG5vdGUgdGhhdCBwcm92aWRlZCBKU09OIGJsb2IgbXVzdCBjb250YWluIGFsbCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZpZWxkcywgbm9cIGRlZmF1bHRzIHdpbGwgYmUgdXNlZC4AKGdldF9wcmVzZXQECGlkWQf9AzhhASBSZXR1cm5zIGEgSlNPTiBibG9iIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBidWlsdC1pbiBgUnVudGltZUdlbmVzaXNDb25maWdgIGlkZW50aWZpZWQgYnkYIGBpZGAuAFUBIElmIGBpZGAgaXMgYE5vbmVgIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIEpTT04gYmxvYiByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGVmYXVsdEkBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2Agc3RydWN0IG9mIHRoZSBydW50aW1lLiBJbXBsZW1lbnRhdGlvbiBtdXN0IHByb3ZpZGUgZGVmYXVsdGAgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYC4AIQEgT3RoZXJ3aXNlIGZ1bmN0aW9uIHJldHVybnMgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBidWlsdC1pbiwgbmFtZWRRASBgUnVudGltZUdlbmVzaXNDb25maWdgIHByZXNldCBpZGVudGlmaWVkIGJ5IGBpZGAsIG9yIGBOb25lYCBpZiBzdWNoIHByZXNldCBkb2VzIG5vdGEBIGV4aXN0LiBSZXR1cm5lZCBgVmVjPHU4PmAgY29udGFpbnMgYnl0ZXMgb2YgSlNPTiBibG9iIChwYXRjaCkgd2hpY2ggY29tcHJpc2VzIGEgbGlzdCBvZk0BIChwb3RlbnRpYWxseSBuZXN0ZWQpIGtleS12YWx1ZSBwYWlycyB0aGF0IGFyZSBpbnRlbmRlZCBmb3IgY3VzdG9taXppbmcgdGhlIGRlZmF1bHRlASBydW50aW1lIGdlbmVzaXMgY29uZmlnLiBUaGUgcGF0Y2ggc2hhbGwgYmUgbWVyZ2VkIChyZmM3Mzg2KSB3aXRoIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uYQEgb2YgdGhlIGRlZmF1bHQgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCB0byBjcmVhdGUgYSBjb21wcmVoZW5zaXZlIGdlbmVzaXMgY29uZmlnIHRoYXQgY2FuhCBiZSB1c2VkIGluIGBidWlsZF9zdGF0ZWAgbWV0aG9kLgAwcHJlc2V0X25hbWVzAF0HEFEBIFJldHVybnMgYSBsaXN0IG9mIGlkZW50aWZpZXJzIGZvciBhdmFpbGFibGUgYnVpbHRpbiBgUnVudGltZUdlbmVzaXNDb25maWdgIHByZXNldHMuAGEBIFRoZSBwcmVzZXRzIGZyb20gdGhlIGxpc3QgY2FuIGJlIHF1ZXJpZWQgd2l0aCBbYEdlbmVzaXNCdWlsZGVyOjpnZXRfcHJlc2V0YF0gbWV0aG9kLiBJZgEBIG5vIG5hbWVkIHByZXNldHMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBydW50aW1lIHRoZSBsaXN0IGlzIGVtcHR5LgAE8CBBUEkgdG8gaW50ZXJhY3Qgd2l0aCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZvciB0aGUgcnVudGltZQQAQEdldFBhcmFjaGFpbkluZm8EMHBhcmFjaGFpbl9pZACcBLAgUmV0cmlldmUgdGhlIHBhcmFjaGFpbiBpZCB1c2VkIGZvciBydW50aW1lLgAEDQEgUnVudGltZSBhcGkgdXNlZCB0byBhY2Nlc3MgZ2VuZXJhbCBpbmZvIGFib3V0IGEgcGFyYWNoYWluIHJ1bnRpbWUuBAAgnQNhBwA="; -var bulletin_metadata_default = binMeta; -export { - bulletin_metadata_default as default -}; diff --git a/web/.papi/descriptors/dist/common-types.d.ts b/web/.papi/descriptors/dist/common-types.d.ts index 7622c0bc..e682ab91 100644 --- a/web/.papi/descriptors/dist/common-types.d.ts +++ b/web/.papi/descriptors/dist/common-types.d.ts @@ -2290,7 +2290,8 @@ export type I8jhsbaiultviu = { export type Ia246gkb4f2soh = { "dispatch_error": Anonymize; }; -export type I95g6i7ilua7lq = Array>; +export type I95g6i7ilua7lq = Array>; +export type I9jd27rnpm8ttv = FixedSizeArray<2, number>; export type Ieniouoqkq4icf = { "spec_version": number; "spec_name": string; @@ -2412,14 +2413,15 @@ export type I6cs1itejju2vv = [bigint, number]; export type Icgljjb6j82uhn = Array; export type Ib77b0fp1a6mjr = Array<{ "recipient": number; - "state": Enum<{ - "Ok": undefined; - "Suspended": undefined; - }>; + "state": Anonymize; "signals_exist": boolean; "first_index": number; "last_index": number; }>; +export type Ic2gg6ldfq068e = AnonymousEnum<{ + "Ok": undefined; + "Suspended": undefined; +}>; export type I5g2vv0ckl2m8b = [number, number]; export type Ifup3lg9ro8a0f = { "suspend_threshold": number; @@ -4527,28 +4529,30 @@ export type I512dtcl0pn07c = ResultPayload, Enum<{ "Value": undefined; "Dust": undefined; }>>; -export type Ibn2t84v0qbqml = Array<{ +export type Ibkvrqg3rqhj06 = Array<{ "phase": Phase; - "event": Anonymize; + "event": Anonymize; "topics": Anonymize; }>; -export type Itrj5j3atrcpn = AnonymousEnum<{ - "System": Anonymize; +export type Ifud6fmhdgide1 = AnonymousEnum<{ + "System": Anonymize; "ParachainSystem": Anonymize; - "Utility": Anonymize; + "Utility": Anonymize; + "MultiBlockMigrations": Anonymize; "Balances": Anonymize; "TransactionPayment": TransactionPaymentEvent; "SkipFeelessPayment": Anonymize; - "TransactionStorage": Anonymize; + "TransactionStorage": Anonymize; + "DataRenewal": Anonymize; "CollatorSelection": Anonymize; "Session": Anonymize; "XcmpQueue": Anonymize; "PolkadotXcm": Anonymize; "CumulusXcm": Anonymize; "MessageQueue": Anonymize; - "Sudo": Anonymize; + "Sudo": Anonymize; }>; -export type It0dac3277no5 = AnonymousEnum<{ +export type I72m3t5stdsdd9 = AnonymousEnum<{ /** * An extrinsic completed successfully. */ @@ -4556,11 +4560,11 @@ export type It0dac3277no5 = AnonymousEnum<{ /** * An extrinsic failed. */ - "ExtrinsicFailed": Anonymize; + "ExtrinsicFailed": Anonymize; /** - * `:code` was updated. + * `:code` was updated to the code with the given hash. */ - "CodeUpdated": undefined; + "CodeUpdated": Anonymize; /** * A new account was created. */ @@ -4580,13 +4584,13 @@ export type It0dac3277no5 = AnonymousEnum<{ /** * An invalid authorized upgrade was rejected while trying to apply it. */ - "RejectedInvalidAuthorizedUpgrade": Anonymize; + "RejectedInvalidAuthorizedUpgrade": Anonymize; }>; -export type Icsa46bnbuohqc = { - "dispatch_error": Anonymize; +export type Ic9nd01o41rpld = { + "dispatch_error": Anonymize; "dispatch_info": Anonymize; }; -export type Id3cclc8rha27v = AnonymousEnum<{ +export type Iam4td08afnm42 = AnonymousEnum<{ "Other": undefined; "CannotLookup": undefined; "BadOrigin": undefined; @@ -4597,10 +4601,13 @@ export type Id3cclc8rha27v = AnonymousEnum<{ "ParachainInfo": undefined; "WeightReclaim": undefined; "Utility": Anonymize; + "MultiBlockMigrations": Anonymize; "Balances": Anonymize; "TransactionPayment": undefined; "SkipFeelessPayment": undefined; - "TransactionStorage": Anonymize; + "TransactionStorage": Anonymize; + "HopPromotion": undefined; + "DataRenewal": Anonymize; "Authorship": undefined; "CollatorSelection": Anonymize; "Session": Anonymize; @@ -4630,7 +4637,13 @@ export type I8dt2g2hcrgh36 = AnonymousEnum<{ */ "TooManyCalls": undefined; }>; -export type I3t32lkif2hg4k = AnonymousEnum<{ +export type Iaaqq5jevtahm8 = AnonymousEnum<{ + /** + * The operation cannot complete since some MBMs are ongoing. + */ + "Ongoing": undefined; +}>; +export type Iddlurdin6pet3 = AnonymousEnum<{ /** * Attempted to call `store`/`renew` outside of block execution. */ @@ -4687,17 +4700,74 @@ export type I3t32lkif2hg4k = AnonymousEnum<{ * Content hash was not calculated. */ "InvalidContentHash": undefined; + /** + * Authorizer account was not found. + */ + "AuthorizerNotFound": undefined; + /** + * Authorizer is not eligible for permissionless removal — it still has budget on both + * axes AND (if `valid_until` is set) has not yet expired. + */ + "AuthorizerBudgetNotExhausted": undefined; + /** + * `valid_until` supplied to `add_authorizer` is in the past (`<= now`, would + * expire immediately). Pass `None` for no expiration. + */ + "InvalidValidUntil": undefined; + /** + * `authorize_account` / `authorize_preimage` called by a signer whose + * `AllowedAuthorizers` budget cannot cover the requested + * `transactions` / `bytes` (or `max_size`). + */ + "InsufficientAuthorizerBudget": undefined; +}>; +export type Ibmvkumv9budpp = AnonymousEnum<{ + /** + * Attempted to call `force_renew` outside of block execution. + */ + "BadContext": undefined; + /** + * Renewed extrinsic is not found. + */ + "RenewedNotFound": undefined; + /** + * Block already contains the maximum number of transactions. + */ + "TooManyTransactions": undefined; + /** + * A renewal is already registered for this content hash. + */ + "RenewalAlreadyEnabled": undefined; + /** + * Auto-renewal is not enabled for this content hash. + */ + "AutoRenewalNotEnabled": undefined; + /** + * Caller is not the owner of the auto-renewal registration. + */ + "NotAutoRenewalOwner": undefined; + /** + * `disable_auto_renew` rejected: the registration has been prepaid for its next + * cycle and cannot be disabled by the owner until the cycle fires and consumes + * the prepayment. Root can still disable for governance cleanup. + */ + "CannotDisablePrepaidAutoRenewal": undefined; + /** + * Data size of the renewed entry is not in the allowed range. Appended last: the + * earlier indices are wire-visible. + */ + "BadDataSize": undefined; }>; -export type I67n6mbhp91nlg = { +export type I74iaf1m5gd367 = { "code_hash": FixedSizeBinary<32>; - "error": Anonymize; + "error": Anonymize; }; -export type Iaouq041baf2nh = AnonymousEnum<{ +export type Ic7fip0a36rqsi = AnonymousEnum<{ /** * Batch of dispatches did not complete fully. Index of first failing dispatch given, as * well as the error. */ - "BatchInterrupted": Anonymize; + "BatchInterrupted": Anonymize; /** * Batch of dispatches completed fully with no error. */ @@ -4713,11 +4783,11 @@ export type Iaouq041baf2nh = AnonymousEnum<{ /** * A single item within a Batch of dispatches has completed with error. */ - "ItemFailed": Anonymize; + "ItemFailed": Anonymize; /** * A call was dispatched. */ - "DispatchedAs": Anonymize; + "DispatchedAs": Anonymize; /** * Main call was dispatched. */ @@ -4725,21 +4795,94 @@ export type Iaouq041baf2nh = AnonymousEnum<{ /** * The fallback call was dispatched. */ - "IfElseFallbackCalled": Anonymize; + "IfElseFallbackCalled": Anonymize; }>; -export type I368e0tjmrcvlt = { +export type Ia2l0jp3eo4een = { "index": number; - "error": Anonymize; + "error": Anonymize; }; -export type I6akqkga7li13u = { - "error": Anonymize; +export type Ie8ljddc762t8h = { + "error": Anonymize; }; -export type I133qpg6ru2jqi = { - "result": Anonymize; +export type I3m1ba97d0pnd1 = { + "result": Anonymize; }; -export type I46bjfmr3l2gfb = ResultPayload>; -export type I3bp93psani87u = { - "main_error": Anonymize; +export type I45s8o9g18m625 = ResultPayload>; +export type Ifu08h95ov02o9 = { + "main_error": Anonymize; +}; +export type I94co7vj7h6bo = AnonymousEnum<{ + /** + * A Runtime upgrade started. + * + * Its end is indicated by `UpgradeCompleted` or `UpgradeFailed`. + */ + "UpgradeStarted": Anonymize; + /** + * The current runtime upgrade completed. + * + * This implies that all of its migrations completed successfully as well. + */ + "UpgradeCompleted": undefined; + /** + * Runtime upgrade failed. + * + * This is very bad and will require governance intervention. + */ + "UpgradeFailed": undefined; + /** + * A migration was skipped since it was already executed in the past. + */ + "MigrationSkipped": Anonymize; + /** + * A migration progressed. + */ + "MigrationAdvanced": Anonymize; + /** + * A Migration completed. + */ + "MigrationCompleted": Anonymize; + /** + * A Migration failed. + * + * This implies that the whole upgrade failed and governance intervention is required. + */ + "MigrationFailed": Anonymize; + /** + * The set of historical migrations has been cleared. + */ + "HistoricCleared": Anonymize; +}>; +export type If1co0pilmi7oq = { + /** + * The number of migrations that this upgrade contains. + * + * This can be used to design a progress indicator in combination with counting the + * `MigrationCompleted` and `MigrationSkipped` events. + */ + "migrations": number; +}; +export type I666bl2fqjkejo = { + /** + * The index of the skipped migration within the [`Config::Migrations`] list. + */ + "index": number; +}; +export type Iae74gjak1qibn = { + /** + * The index of the migration within the [`Config::Migrations`] list. + */ + "index": number; + /** + * The number of blocks that this migration took so far. + */ + "took": number; +}; +export type I3escdojpj0551 = { + /** + * Should be passed to `clear_historic` in a successive call. + */ + "next_cursor"?: Anonymize; }; export type Ifhlvt8s3bh824 = AnonymousEnum<{ /** @@ -4924,21 +5067,18 @@ export type Icd998p53cb80u = AnonymousEnum<{ "Account": SS58String; "Preimage": FixedSizeBinary<32>; }>; -export type I6a9k53vnitigf = AnonymousEnum<{ +export type I3pm6g8sfakph3 = AnonymousEnum<{ /** * Stored data under specified index. */ "Stored": Anonymize; - /** - * Renewed data under specified index. - */ - "Renewed": Anonymize; /** * Storage proof was successfully checked. */ "ProofChecked": undefined; /** - * An account `who` was authorized to store `bytes` bytes in `transactions` transactions. + * An account `who` was authorized to store `bytes` bytes in `transactions` boost-tier + * transactions. */ "AccountAuthorized": Anonymize; /** @@ -4962,16 +5102,24 @@ export type I6a9k53vnitigf = AnonymousEnum<{ * An expired preimage authorization was removed. */ "ExpiredPreimageAuthorizationRemoved": Anonymize; + /** + * An authorizer was added to the allowed list. + */ + "AuthorizerAdded": Anonymize; + /** + * An authorizer was removed from the allowed list by the manager. + */ + "AuthorizerRemoved": Anonymize; + /** + * An authorizer was removed from the allowed list due to budget exhaustion. + */ + "ExhaustedAuthorizerRemoved": Anonymize; }>; export type I395h9meqpi2hf = { "index": number; "content_hash": FixedSizeBinary<32>; "cid"?: Anonymize; }; -export type I66jdpl6lile9j = { - "index": number; - "content_hash": FixedSizeBinary<32>; -}; export type I2i8iea6e4ne1j = { "who": SS58String; "transactions": number; @@ -4984,11 +5132,76 @@ export type I4jotama61aldv = { export type I3rfugj0vt1ug5 = { "content_hash": FixedSizeBinary<32>; }; -export type I4mr5fuq4vs8tb = AnonymousEnum<{ +export type Ie06nk6ek5i6q9 = AnonymousEnum<{ + /** + * Renewed data under specified index. + */ + "Renewed": Anonymize; + /** + * A renewal was enabled for `content_hash` by `who`. + */ + "RenewalEnabled": Anonymize; + /** + * Auto-renewal disabled for `content_hash`. `who` is the registration's owner + * (not the caller when Root issued the disable). + */ + "AutoRenewalDisabled": Anonymize; + /** + * A registered renewal fired, re-storing the data at `index`. + */ + "DataRenewed": Anonymize; + /** + * A registered renewal failed on `account`'s authorization; the registration is + * dropped and the data expires. + */ + "RenewalFailed": Anonymize; + /** + * `PermanentStorageUsed` changed (a `renew` bumped it, or the obsolete sweep + * decremented it). Off-chain capacity-planning consumers can drive their dashboards + * from these. + */ + "PermanentStorageUsedUpdated": Anonymize; + /** + * `PermanentStorageUsed` just crossed the [`PERMANENT_STORAGE_NEAR_CAP_PERCENT`] + * threshold of `MaxPermanentStorageSize` on the rising edge. Emitted once per + * crossing — no re-emission while still above the threshold. + */ + "PermanentStorageNearCap": Anonymize; +}>; +export type I66jdpl6lile9j = { + "index": number; + "content_hash": FixedSizeBinary<32>; +}; +export type Ifa84va5usjhbs = { + "content_hash": FixedSizeBinary<32>; + "who": SS58String; + "recurring": boolean; +}; +export type I7qnibt85843h4 = { + "content_hash": FixedSizeBinary<32>; + "who": SS58String; +}; +export type Iecest14o0pmc2 = { + "index": number; + "content_hash": FixedSizeBinary<32>; + "account": SS58String; +}; +export type I5i6clrj1m1v3f = { + "content_hash": FixedSizeBinary<32>; + "account": SS58String; +}; +export type Ife9a8l1jn5dhf = { + "used": bigint; +}; +export type I1srmrc4hmsm4 = { + "used": bigint; + "cap": bigint; +}; +export type I16u4tpq3l7g0m = AnonymousEnum<{ /** * A sudo call just took place. */ - "Sudid": Anonymize; + "Sudid": Anonymize; /** * The sudo key has been updated. */ @@ -5000,38 +5213,100 @@ export type I4mr5fuq4vs8tb = AnonymousEnum<{ /** * A [sudo_as](Pallet::sudo_as) call just took place. */ - "SudoAsDone": Anonymize; + "SudoAsDone": Anonymize; }>; -export type I4kigljjkan2n6 = { +export type I776bdj5qm6ld3 = { /** * The result of the call made by the sudo user. */ - "sudo_result": Anonymize; + "sudo_result": Anonymize; }; +export type I8re9183nrhr3n = AnonymousEnum<{ + "FullCore": { + "context": number; + }; + "PotentialFullCore": { + "context": number; + "first_transaction_index"?: Anonymize; + "target_weight": Anonymize; + }; + "FractionOfCore": { + "context": number; + "first_transaction_index"?: Anonymize; + }; +}>; +export type Inofn0qqbjtb9 = { + "relay_storage_root_or_hash": FixedSizeBinary<32>; + "core_selector": number; + "bundle_index": number; + "ump_msg_count": number; + "hrmp_outbound_count": number; + "hrmp_outbound_recipients": Anonymize; +}; +export type Iepbsvlk3qceij = AnonymousEnum<{ + "Active": { + "index": number; + "inner_cursor"?: Anonymize; + "started_at": number; + }; + "Stuck": undefined; +}>; export type Iafsev9pf8ur2h = Array<{ "id": Anonymize; "amount": bigint; }>; -export type I52552vmt51a1m = { +export type Ifmlh2ccap0uke = { "extent": { "transactions": number; + "transactions_allowance": number; "bytes": bigint; + "extra": bigint; + "bytes_allowance": bigint; }; "expiration": number; }; -export type Ianratlvp36bb8 = Array<{ +export type Iecn3tfn6gr5ce = { + "quota"?: ({ + "transactions": number; + "bytes": bigint; + }) | undefined; + "valid_until"?: Anonymize; + "feeless": boolean; +}; +export type Icm182d6u507gc = Array>; +export type Ie4uv6dnql4ikj = { "chunk_root": FixedSizeBinary<32>; "content_hash": FixedSizeBinary<32>; "hashing": Anonymize; "cid_codec": bigint; "size": number; + "extrinsic_index": number; "block_chunks": number; -}>; + "meta": Enum<{ + "Store": undefined; + "Renew": undefined; + }>; +}; export type Ifmrgam3blcf8 = AnonymousEnum<{ "Blake2b256": undefined; "Sha2_256": undefined; "Keccak256": undefined; }>; +export type I9i4rhi4dg5bdo = { + "account": SS58String; + "recurring": boolean; + "paid": boolean; +}; +export type I7mhb4q0v4cblf = Array<[FixedSizeBinary<32>, Anonymize, Anonymize]>; +export type I5mpbmq1ooiq9i = Array<{ + "recipient": number; + "state": Anonymize; + "signals_exist": boolean; + "first_index": number; + "last_index": number; + "flags": number; + "queued_bytes": number; +}>; export type Ibkm2gcn4pji30 = { "aliasers": Anonymize; "ticket": bigint; @@ -5040,7 +5315,12 @@ export type Ibtil0ss5munbk = { "max": Anonymize; "max_header_size"?: Anonymize; }; -export type I5oa8llr99j3e3 = AnonymousEnum<{ +export type I9s2ue1goudgqc = { + "tag_prefix": string; + "priority": bigint; + "longevity": bigint; +}; +export type Icg973ohsugp3b = AnonymousEnum<{ /** * Send a batch of dispatch calls. * @@ -5061,7 +5341,7 @@ export type I5oa8llr99j3e3 = AnonymousEnum<{ * and the error of the failed call. If all were successful, then the `BatchCompleted` * event is deposited. */ - "batch": Anonymize; + "batch": Anonymize; /** * Send a call through an indexed pseudonym of the sender. * @@ -5077,7 +5357,7 @@ export type I5oa8llr99j3e3 = AnonymousEnum<{ * * The dispatch origin for this call must be _Signed_. */ - "as_derivative": Anonymize; + "as_derivative": Anonymize; /** * Send a batch of dispatch calls and atomically execute them. * The whole transaction will rollback and fail if any of the calls failed. @@ -5093,7 +5373,7 @@ export type I5oa8llr99j3e3 = AnonymousEnum<{ * ## Complexity * - O(C) where C is the number of calls to be batched. */ - "batch_all": Anonymize; + "batch_all": Anonymize; /** * Dispatches a function call with a provided origin. * @@ -5102,7 +5382,7 @@ export type I5oa8llr99j3e3 = AnonymousEnum<{ * ## Complexity * - O(1). */ - "dispatch_as": Anonymize; + "dispatch_as": Anonymize; /** * Send a batch of dispatch calls. * Unlike `batch`, it allows errors and won't interrupt. @@ -5118,7 +5398,7 @@ export type I5oa8llr99j3e3 = AnonymousEnum<{ * ## Complexity * - O(C) where C is the number of calls to be batched. */ - "force_batch": Anonymize; + "force_batch": Anonymize; /** * Dispatch a function call with a specified weight. * @@ -5127,7 +5407,7 @@ export type I5oa8llr99j3e3 = AnonymousEnum<{ * * The dispatch origin for this call must be _Root_. */ - "with_weight": Anonymize; + "with_weight": Anonymize; /** * Dispatch a fallback call in the event the main call fails to execute. * May be called from any origin except `None`. @@ -5153,7 +5433,7 @@ export type I5oa8llr99j3e3 = AnonymousEnum<{ * - Some use cases might involve submitting a `batch` type call in either main, fallback * or both. */ - "if_else": Anonymize; + "if_else": Anonymize; /** * Dispatches a function call with a provided origin. * @@ -5161,28 +5441,79 @@ export type I5oa8llr99j3e3 = AnonymousEnum<{ * * The dispatch origin for this call must be _Root_. */ - "dispatch_as_fallible": Anonymize; + "dispatch_as_fallible": Anonymize; }>; -export type I4m23d919gtr5d = { +export type I9nqp66v0721n1 = { "calls": Array; }; -export type I7esubsve8jvbp = { +export type Idk1ivh3nldv2l = { "index": number; "call": TxCallData; }; -export type I69p6pkv67dei3 = { +export type Ib3877m4t1f6f4 = { "as_origin": Anonymize; "call": TxCallData; }; -export type I13j8trtusi7dq = { +export type I3a0ttnbnho23s = { "call": TxCallData; "weight": Anonymize; }; -export type I74eam70qc8398 = { +export type Ia06u24rop478l = { "main": TxCallData; "fallback": TxCallData; }; -export type I29pvdqcplt85e = AnonymousEnum<{ +export type I4oqb168b2d4er = AnonymousEnum<{ + /** + * Allows root to set a cursor to forcefully start, stop or forward the migration process. + * + * Should normally not be needed and is only in place as emergency measure. Note that + * restarting the migration process in this manner will not call the + * [`MigrationStatusHandler::started`] hook or emit an `UpgradeStarted` event. + */ + "force_set_cursor": Anonymize; + /** + * Allows root to set an active cursor to forcefully start/forward the migration process. + * + * This is an edge-case version of [`Self::force_set_cursor`] that allows to set the + * `started_at` value to the next block number. Otherwise this would not be possible, since + * `force_set_cursor` takes an absolute block number. Setting `started_at` to `None` + * indicates that the current block number plus one should be used. + */ + "force_set_active_cursor": Anonymize; + /** + * Forces the onboarding of the migrations. + * + * This process happens automatically on a runtime upgrade. It is in place as an emergency + * measurement. The cursor needs to be `None` for this to succeed. + */ + "force_onboard_mbms": undefined; + /** + * Clears the `Historic` set. + * + * `map_cursor` must be set to the last value that was returned by the + * `HistoricCleared` event. The first time `None` can be used. `limit` must be chosen in a + * way that will result in a sensible weight. + */ + "clear_historic": Anonymize; +}>; +export type Ibou4u1engb441 = { + "cursor"?: (Anonymize) | undefined; +}; +export type Id6nbvqoqdj4o2 = { + "index": number; + "inner_cursor"?: Anonymize; + "started_at"?: Anonymize; +}; +export type I95iqep3b8snn9 = { + "selector": Enum<{ + "Specific": Anonymize; + "Wildcard": { + "limit"?: Anonymize; + "previous_cursor"?: Anonymize; + }; + }>; +}; +export type I68hv2obuqj2ot = AnonymousEnum<{ /** * Index and store data off chain. Minimum data size is 1 byte, maximum is * `MaxTransactionSize`. Data will be removed after `RetentionPeriod` blocks, unless @@ -5210,42 +5541,21 @@ export type I29pvdqcplt85e = AnonymousEnum<{ */ "store_with_cid_config": Anonymize; /** - * Renew previously stored data. Parameters are the block number that contains previous - * `store` or `renew` call and transaction index within that block. Transaction index is - * emitted in the `Stored` or `Renewed` event. - * - * As with [`store`](Self::store), authorization is required to renew data using regular - * signed/unsigned transactions. - * - * Emits [`Renewed`](Event::Renewed) when successful. - * - * ## Complexity + * Authorize an account to store up to `bytes` of arbitrary data in `transactions` + * boost-tier transactions. The authorization will expire after a configured number + * of blocks. * - * O(1). - */ - "renew": Anonymize; - /** - * Check storage proof for block number `block_number() - RetentionPeriod`. If such a block - * does not exist, the proof is expected to be `None`. - * - * ## Complexity - * - * Linear w.r.t the number of indexed transactions in the proved block for random probing. - * There's a DB read for each transaction. - */ - "check_proof": Anonymize; - /** - * Authorize an account to store up to a given amount of arbitrary data. The authorization - * will expire after a configured number of blocks. - * - * If the account is already authorized to store data, this will increase the amount of - * data the account is authorized to store (and the number of transactions the account may - * submit to supply the data), and push back the expiration block. + * If the account already has an unexpired authorization, this call **adds** `bytes` + * and `transactions` to the existing `bytes_allowance` and `transactions_allowance` + * caps (both saturating); the expiration block is **not** pushed back, and the + * consumed counters are preserved. Once the authorization has expired, the next call + * replaces it with a fresh entry (consumed counters reset to `0`, allowances set to + * the new values, expiry = `now + AuthorizationPeriod`). * * Parameters: * * - `who`: The account to be credited with an authorization to store data. - * - `transactions`: The number of transactions that `who` may submit to supply that data. + * - `transactions`: The number of boost-tier transactions that `who` may submit. * - `bytes`: The number of bytes that `who` may submit. * * The origin for this call must be the pallet's `Authorizer`. Emits @@ -5257,8 +5567,10 @@ export type I29pvdqcplt85e = AnonymousEnum<{ * expire after a configured number of blocks. * * If authorization already exists for a preimage of the given hash to be stored, the - * maximum size of the preimage will be increased to `max_size`, and the expiration block - * will be pushed back. + * maximum size of the preimage will be increased to `max_size`. The expiration block + * is **not** pushed back; use + * [`refresh_preimage_authorization`](Self::refresh_preimage_authorization) to extend + * expiry. * * Parameters: * @@ -5297,6 +5609,11 @@ export type I29pvdqcplt85e = AnonymousEnum<{ /** * Refresh the expiration of an existing authorization for an account. * + * Only the expiration block is updated — consumed counters (`bytes`, + * `transactions`) and the granted caps (`bytes_allowance`, + * `transactions_allowance`) are left untouched. To extend the caps, call + * `authorize_account` instead (additive on the unexpired path). + * * If the account does not have an authorization, the call will fail. * * Parameters: @@ -5310,6 +5627,11 @@ export type I29pvdqcplt85e = AnonymousEnum<{ /** * Refresh the expiration of an existing authorization for a preimage of a BLAKE2b hash. * + * Only the expiration block is updated — consumed counters (`bytes`, + * `transactions`) and the granted caps (`bytes_allowance`, + * `transactions_allowance`) are left untouched. To raise the cap, call + * `authorize_preimage` instead. + * * If the preimage does not have an authorization, the call will fail. * * Parameters: @@ -5321,6 +5643,60 @@ export type I29pvdqcplt85e = AnonymousEnum<{ * successful. */ "refresh_preimage_authorization": Anonymize; + /** + * Block-level mandatory inherent for the transaction-storage proof. + * + * `proof` is `Some` when the inherent data provider supplied one; otherwise the + * proof step is skipped (early or empty blocks). The companion drain of pending + * auto-renewals lives in `pallet-bulletin-data-renewal`'s own inherent. + */ + "apply_block_inherents": Anonymize; + /** + * Add an account to the set of allowed authorizers. Allowed authorizers can call + * [`authorize_account`](Self::authorize_account) and + * [`authorize_preimage`](Self::authorize_preimage) to grant storage access. + * + * If the account is already an allowed authorizer, its `budget` is **overwritten** + * with the new values. + * + * `budget` constraints: + * + * - `valid_until`: when `Some(t)`, must satisfy `t > now`. The entry stops authorizing + * once `now >= t` and becomes eligible for permissionless cleanup via + * [`remove_exhausted_authorizer`](Self::remove_exhausted_authorizer). Authorizations + * granted by this entry have their expiration clamped to `t`. + * + * The origin for this call must satisfy `AuthorizerRegistrarOrigin`. Emits + * [`AuthorizerAdded`](Event::AuthorizerAdded) when successful. + */ + "add_authorizer": Anonymize; + /** + * Remove an account from the set of allowed authorizers. The removed account will no + * longer be able to call [`authorize_account`](Self::authorize_account) or + * [`authorize_preimage`](Self::authorize_preimage). + * + * If the account is not currently an allowed authorizer, this is a no-op. + * + * Parameters: + * + * - `who`: The account to remove from the allowed authorizers. + * + * The origin for this call must satisfy `AuthorizerRegistrarOrigin`. Emits + * [`AuthorizerRemoved`](Event::AuthorizerRemoved) when successful. + */ + "remove_authorizer": Anonymize; + /** + * Remove an authorizer that is exhausted (budget zero on either axis) or expired + * (`now >= valid_until` for an entry that set `valid_period`). Anyone can call this. + * + * Parameters: + * + * - `who`: The authorizer to remove. + * + * Emits [`ExhaustedAuthorizerRemoved`](Event::ExhaustedAuthorizerRemoved) + * when successful. + */ + "remove_exhausted_authorizer": Anonymize; }>; export type Itrlf5b2o2l8q = { "data": Binary; @@ -5332,21 +5708,100 @@ export type Icegg8a2cqf1gu = { }; "data": Binary; }; -export type I4vj3ndsquheo1 = { - "block": number; - "index": number; -}; -export type I7h5kud22qmfsg = { - "proof": { +export type Ifq8h9n7vmgpf0 = { + "proof"?: ({ "chunk": Binary; "proof": Anonymize; - }; + }) | undefined; }; -export type I1gudpbr3uell9 = AnonymousEnum<{ +export type Ifa480ahjcunq = { + "who": SS58String; + "budget": Anonymize; +}; +export type Ievgomvcu5futk = AnonymousEnum<{ + "promote": Anonymize; + /** + * V2 variant of [`Self::promote`]: identical body, but the authorize hook + * requires the user's signature to additionally cover the chain genesis + * hash and a hash of the recipients list (see [`signing_payload_v2`]). + */ + "promote_v2": Anonymize; +}>; +export type Ic4jjdr1cl5bit = { + "signer": Anonymize; + "signature": Anonymize; + "submit_timestamp": bigint; + "data": Binary; +}; +export type I8p068g003vpi6 = AnonymousEnum<{ + "Ed25519": FixedSizeBinary<32>; + "Sr25519": FixedSizeBinary<32>; + "Ecdsa": FixedSizeBinary<33>; + "Eth": FixedSizeBinary<33>; +}>; +export type I3fo6882e5tjh8 = AnonymousEnum<{ + "Ed25519": FixedSizeBinary<64>; + "Sr25519": FixedSizeBinary<64>; + "Ecdsa": FixedSizeBinary<65>; + "Eth": FixedSizeBinary<65>; +}>; +export type I9j03oeh6p8l87 = { + "signer": Anonymize; + "signature": Anonymize; + "submit_timestamp": bigint; + "recipients_hash": FixedSizeBinary<32>; + "data": Binary; +}; +export type I3862no0724u4g = AnonymousEnum<{ + /** + * Schedule a one-shot auto-renewal. Fires once at the + * `RetentionPeriod` boundary, then the registration is removed. + * Prepaid at registration; see [`force_renew`](Self::force_renew) for + * synchronous renewal or [`enable_auto_renew`](Self::enable_auto_renew) + * for recurring. + */ + "renew": Anonymize; + /** + * Renew previously stored data synchronously. Charges `info.size` against + * the caller's `bytes_permanent` and the chain-wide `PermanentStorageUsed`. + */ + "force_renew": Anonymize; + /** + * Register recurring auto-renewal for `content_hash`. First cycle is + * prepaid at registration (`paid = true`); subsequent cycles charge + * the owner's authorization in `do_process_pending_renewals` and + * drop the registration on quota exhaustion with + * [`Event::RenewalFailed`]. + */ + "enable_auto_renew": Anonymize; + /** + * Disable auto-renewal. Signed callers must own the registration AND + * wait for the prepaid first cycle to have fired (else + * [`Error::CannotDisablePrepaidAutoRenewal`]). Root bypasses both + * checks. + */ + "disable_auto_renew": Anonymize; + /** + * Mandatory inherent: drain [`PendingRenewals`] for the current + * block. Refunds to the actually-drained count via `PostDispatchInfo`. + */ + "process_pending_renewals": undefined; +}>; +export type I7d71c6b0ekmt9 = { + "entry": Anonymize; +}; +export type I3oi105i165rd5 = AnonymousEnum<{ + "Position": { + "block": number; + "index": number; + }; + "ContentHash": FixedSizeBinary<32>; +}>; +export type I5rk8ete22duad = AnonymousEnum<{ /** * Authenticates the sudo key and dispatches a function call with `Root` origin. */ - "sudo": Anonymize; + "sudo": Anonymize; /** * Authenticates the sudo key and dispatches a function call with `Root` origin. * This function does not check the weight of the call, and instead allows the @@ -5354,7 +5809,7 @@ export type I1gudpbr3uell9 = AnonymousEnum<{ * * The dispatch origin for this call must be _Signed_. */ - "sudo_unchecked_weight": Anonymize; + "sudo_unchecked_weight": Anonymize; /** * Authenticates the current sudo key and sets the given AccountId (`new`) as the new sudo * key. @@ -5366,7 +5821,7 @@ export type I1gudpbr3uell9 = AnonymousEnum<{ * * The dispatch origin for this call must be _Signed_. */ - "sudo_as": Anonymize; + "sudo_as": Anonymize; /** * Permanently removes the sudo key. * @@ -5374,33 +5829,52 @@ export type I1gudpbr3uell9 = AnonymousEnum<{ */ "remove_key": undefined; }>; -export type I2hedg0a6u185f = { +export type Ic10m30chc0lcl = { "call": TxCallData; }; -export type I550f2tngqhbp1 = { +export type I8a5t0g4sf473u = { "who": MultiAddress; "call": TxCallData; }; -export type Ieeb2u9t56qdcr = ResultPayload, Anonymize>; +export type I9vodnt2k1kha = AnonymousEnum<{ + "Yes": undefined; + "No": undefined; + "Stuck": undefined; +}>; +export type I4ao1le27fcisl = ({ + "current_migration": number; + "total_migrations": number; + "current_migration_steps": number; + "current_migration_max_steps"?: Anonymize; +}) | undefined; +export type Ih4ursllob8fg = { + "ongoing": Anonymize; + "progress"?: Anonymize; + "prefixes": Anonymize; +}; +export type I4ch97923evid8 = ResultPayload, Anonymize>; export type I4ph3d1eepnmr1 = { "keys": Binary; "proof": Binary; }; -export type Icd41grt22tk3v = AnonymousEnum<{ +export type I88472ck6vehhv = AnonymousEnum<{ "System": Anonymize; "ParachainSystem": Anonymize; "Timestamp": Anonymize; "ParachainInfo": undefined; - "Utility": Anonymize; + "Utility": Anonymize; + "MultiBlockMigrations": Anonymize; "Balances": Anonymize; - "TransactionStorage": Anonymize; + "TransactionStorage": Anonymize; + "HopPromotion": Anonymize; + "DataRenewal": Anonymize; "CollatorSelection": Anonymize; "Session": Anonymize; "XcmpQueue": Anonymize; "PolkadotXcm": Anonymize; "CumulusXcm": undefined; "MessageQueue": Anonymize; - "Sudo": Anonymize; + "Sudo": Anonymize; }>; export type Iftvbctbo05fu4 = ResultPayload, Anonymize>; export type Iavct6f844hfju = AnonymousEnum<{ @@ -5414,12 +5888,12 @@ export type Iavct6f844hfju = AnonymousEnum<{ export type Ic0c3req3mlc1l = ResultPayload, Anonymize>; export type I7ocn4njqde3v5 = ResultPayload>; export type Iek7ha36da9mf5 = ResultPayload>; -export type Ia0qb5p8rcp095 = ResultPayload<{ +export type Iavcjlern8lpkb = ResultPayload<{ "execution_result": ResultPayload, { "post_info": Anonymize; - "error": Anonymize; + "error": Anonymize; }>; - "emitted_events": Anonymize; + "emitted_events": Anonymize; "local_xcm"?: (XcmVersionedXcm) | undefined; "forwarded_xcms": Anonymize; }, Anonymize>; @@ -5427,15 +5901,15 @@ export type Ia1u1r3n74r13c = { "actual_weight"?: Anonymize; "pays_fee": Anonymize; }; -export type I58aj202ockvkq = Array>; +export type Ififbdnnmp3rbr = Array>; export type Ialhmrpub9sefe = Array<[XcmVersionedLocation, Array]>; export type I55ku9c5gk50hb = AnonymousEnum<{ "Unimplemented": undefined; "VersionedConversionFailed": undefined; }>; -export type I7f06kkvfvbvn3 = ResultPayload<{ +export type I7q29odn6kt7nd = ResultPayload<{ "execution_result": Anonymize; - "emitted_events": Anonymize; + "emitted_events": Anonymize; "forwarded_xcms": Anonymize; }, Anonymize>; export type Ieh6nis3hdbtgi = ResultPayload; export type I5gif8vomct5i8 = ResultPayload>; +export type If4oj302humfb5 = Array<{ + "content_hash": FixedSizeBinary<32>; + "size": number; + "hashing": Anonymize; + "cid_codec": bigint; + "extrinsic_index": number; +}>; +export type If5dekqlo7be3f = ({ + "expires_at": number; + "bytes_allowance": bigint; + "bytes_used": bigint; + "bytes_permanent_used": bigint; + "transactions_allowance": number; + "transactions_used": number; +}) | undefined; export {}; diff --git a/web/.papi/descriptors/dist/descriptors-VDZJ5VNF.mjs b/web/.papi/descriptors/dist/descriptors-VDZJ5VNF.mjs new file mode 100644 index 00000000..0d54a6a8 --- /dev/null +++ b/web/.papi/descriptors/dist/descriptors-VDZJ5VNF.mjs @@ -0,0 +1,29 @@ +// .papi/descriptors/src/descriptors.ts +var [minified, commonTrees, tokens] = JSON.parse(`[{"stack_template":{"120":{"18":{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":1,"7":6,"8":7,"9":8,"10":1,"11":9,"12":10,"13":2,"14":2,"15":11,"16":12,"17":13,"AllExtrinsicsLen":1},"46":{"19":33,"20":34,"21":35,"22":35,"23":36,"24":2,"25":1,"26":37,"27":38,"28":39,"29":40,"30":41,"31":6,"32":42,"33":1,"34":43,"35":1,"36":43,"37":44,"38":39,"39":39,"40":39,"41":45,"42":1,"43":13,"44":13,"45":35},"49":0,"51":1,"52":2,"59":{"0":53,"53":45,"54":45,"55":54,"56":55,"57":56,"58":57},"63":3,"65":4,"67":5,"73":6,"82":7,"85":8,"87":9,"95":{"88":115,"89":116,"90":117,"91":5,"92":118,"93":2,"94":119},"111":{"96":45,"97":122,"98":123,"99":1,"100":124,"101":125,"102":126,"103":127,"104":128,"105":129,"106":130,"107":2,"108":2,"109":131,"110":132},"112":2,"116":10,"117":2,"118":{"Claims":182},"119":{"4":4,"PristineCode":185,"CodeInfoOf":186,"AccountInfoOf":187,"ImmutableDataOf":188,"DeletionQueue":5,"DeletionQueueCounter":189,"OriginalAccount":190,"EthereumBlock":191,"ReceiptInfoData":192,"EthBlockBuilderIR":193,"EthBlockBuilderFirstValues":194,"DebugSettingsOf":195}},"188":{"18":11,"46":12,"49":13,"51":2,"52":2,"59":14,"63":2,"65":{"144":82,"145":83,"146":84,"147":85,"148":86},"67":2,"73":15,"82":16,"85":2,"87":2,"95":17,"111":18,"112":2,"116":19,"117":2,"118":{"create_claim":183,"revoke_claim":183},"119":{"123":204,"184":196,"185":197,"186":198,"187":203,"instantiate_with_code":199,"eth_instantiate_with_code":200,"eth_call":201,"eth_substrate_call":202,"remove_code":24,"map_account":86,"unmap_account":86,"dispatch_as_fallback_account":82}},"289":{"18":{"189":25,"190":26,"191":27,"192":28,"193":28,"194":29,"195":30,"196":31},"46":20,"49":2,"51":2,"52":2,"59":{"203":66,"204":67,"205":68,"206":69,"207":70,"208":70,"209":71,"210":70,"211":70,"212":70,"213":70,"214":72,"215":70,"216":72,"217":70,"218":70,"219":73,"220":72,"221":72,"222":70,"223":70,"224":70,"225":70,"226":74,"227":75,"228":75,"229":76,"230":77,"231":75,"232":78},"63":21,"65":{"234":87,"235":88,"236":27,"237":87},"67":2,"73":22,"82":23,"85":2,"87":2,"95":24,"111":25,"112":26,"116":27,"117":{"NewStatement":181},"118":{"ClaimCreated":184,"ClaimRevoked":184},"119":{"ContractEmitted":205,"Instantiated":206,"EthExtrinsicRevert":207}},"322":{"18":{"290":14,"291":15,"292":1,"293":16,"294":17,"295":1},"46":28,"49":29,"51":2,"52":2,"59":30,"63":31,"65":2,"67":2,"73":32,"82":33,"85":34,"87":2,"95":35,"111":36,"112":2,"116":37,"117":{"StatementCost":45,"ByteCost":45,"MinAllowedStatements":1,"MaxAllowedStatements":1,"MinAllowedBytes":1,"MaxAllowedBytes":1},"118":2,"119":{"DepositPerByte":45,"DepositPerItem":45,"DepositPerChildTrieItem":45,"CodeHashLockupDepositPercent":1,"UnsafeUnstableInterface":2,"AllowEVMBytecode":2,"ChainId":45,"NativeToEthRatio":1,"MaxEthExtrinsicWeight":45,"DebugEnabled":2,"GasScale":1}},"323":{"18":2,"46":2,"49":2,"51":2,"52":2,"59":2,"63":2,"65":2,"67":2,"73":2,"82":2,"85":2,"87":2,"95":2,"111":2,"112":2,"116":2,"117":2,"118":2,"119":2},"365":{"326":38,"328":39,"332":40,"336":41,"341":{"337":218,"338":219,"339":220,"340":221},"343":42,"345":43,"348":{"346":224,"347":225},"350":44,"355":45,"358":{"353":229,"354":230,"356":231,"357":232},"360":46,"364":47,"RuntimeViewFunction":{"execute_view_function":217},"ValidateStatement":{"validate_statement":234},"ReviveApi":{"184":246,"185":244,"186":245,"187":248,"eth_block":238,"eth_block_hash":239,"eth_receipt_data":240,"block_gas_limit":241,"balance":242,"gas_price":241,"nonce":243,"eth_transact_with_config":247,"get_storage":249,"get_storage_var_key":250,"trace_block":251,"trace_tx":252,"trace_call":253,"block_author":254,"address":255,"account_id":256,"runtime_pallets_address":254,"code":257,"new_balance_with_dust":258}}},"bulletin":{"120":{"18":{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":1,"7":6,"8":7,"9":259,"10":1,"11":9,"12":10,"13":2,"14":2,"15":11,"16":12,"17":13,"BlockSize":1,"BlocksTillUpgrade":1},"46":{"19":33,"20":34,"21":35,"22":35,"23":36,"24":2,"25":1,"26":37,"27":38,"28":39,"29":40,"30":41,"31":6,"32":42,"33":1,"34":43,"35":1,"36":43,"37":44,"38":39,"39":39,"40":39,"41":45,"42":1,"43":13,"44":13,"45":35,"BlockWeightMode":264,"PreviousCoreCount":1,"PendingApprovedPeer":35,"PoVMessagesTracker":265},"49":0,"51":1,"52":2,"59":{"0":53,"53":45,"54":45,"55":54,"56":55,"57":288,"58":57},"63":3,"65":4,"67":5,"73":6,"82":7,"85":8,"87":9,"95":{"88":115,"89":322,"90":117,"91":5,"92":118,"93":2,"94":119},"111":{"96":45,"97":122,"98":123,"99":1,"100":124,"101":125,"102":126,"103":127,"104":128,"105":129,"106":130,"107":2,"108":2,"109":131,"110":323},"112":2,"116":10,"366":2,"367":{"Cursor":275,"Historic":276},"368":2,"370":{"369":2,"Authorizations":293,"AllowedAuthorizers":294,"Transactions":295,"ByteFee":45,"EntryFee":45,"RetentionPeriod":1,"BlockTransactions":296,"TransactionByContentHash":297},"371":2,"372":{"Renewals":312,"PendingRenewals":313,"PermanentStorageUsed":45}},"188":{"18":11,"46":12,"49":13,"51":2,"52":2,"59":14,"63":2,"65":{"144":324,"145":269,"146":84,"147":325,"148":86},"67":2,"73":15,"82":16,"85":2,"87":2,"95":17,"111":18,"112":2,"116":19,"366":{"batch":266,"as_derivative":267,"batch_all":266,"dispatch_as":268,"force_batch":266,"with_weight":269,"if_else":270,"dispatch_as_fallible":268},"367":{"force_set_cursor":281,"force_set_active_cursor":282,"force_onboard_mbms":86,"clear_historic":283},"368":2,"370":{"store":299,"store_with_cid_config":300,"authorize_account":301,"authorize_preimage":302,"remove_expired_account_authorization":96,"remove_expired_preimage_authorization":303,"refresh_account_authorization":96,"refresh_preimage_authorization":303,"apply_block_inherents":304,"add_authorizer":305,"remove_authorizer":96,"remove_exhausted_authorizer":96},"371":{"promote":310,"promote_v2":311},"372":{"renew":314,"force_renew":314,"enable_auto_renew":303,"disable_auto_renew":303,"process_pending_renewals":86}},"289":{"18":{"189":25,"190":261,"191":262,"192":28,"193":28,"194":29,"195":30,"196":263},"46":20,"49":2,"51":2,"52":2,"59":{"203":66,"204":67,"205":68,"206":69,"207":70,"208":70,"209":71,"210":70,"211":70,"212":70,"213":70,"214":72,"215":70,"216":72,"217":70,"218":70,"219":73,"220":72,"221":72,"222":70,"223":70,"224":70,"225":70,"226":74,"227":289,"228":289,"229":290,"230":291,"231":289,"232":78},"63":21,"65":{"234":326,"235":88,"236":27,"237":326},"67":2,"73":22,"82":23,"85":2,"87":2,"95":24,"111":25,"112":26,"116":27,"366":{"BatchInterrupted":271,"BatchCompleted":27,"BatchCompletedWithErrors":27,"ItemCompleted":27,"ItemFailed":272,"DispatchedAs":273,"IfElseMainSuccess":27,"IfElseFallbackCalled":274},"367":{"UpgradeStarted":284,"UpgradeCompleted":27,"UpgradeFailed":27,"MigrationSkipped":285,"MigrationAdvanced":286,"MigrationCompleted":286,"MigrationFailed":286,"HistoricCleared":287},"368":{"FeeSkipped":292},"370":{"369":27,"Stored":306,"AccountAuthorized":307,"AccountAuthorizationRefreshed":73,"PreimageAuthorized":308,"PreimageAuthorizationRefreshed":309,"ExpiredAccountAuthorizationRemoved":73,"ExpiredPreimageAuthorizationRemoved":309,"AuthorizerAdded":73,"AuthorizerRemoved":73,"ExhaustedAuthorizerRemoved":73},"371":2,"372":{"Renewed":315,"RenewalEnabled":316,"AutoRenewalDisabled":317,"DataRenewed":318,"RenewalFailed":319,"PermanentStorageUsedUpdated":320,"PermanentStorageNearCap":321}},"322":{"18":{"290":14,"291":260,"292":1,"293":16,"294":17,"295":1},"46":28,"49":29,"51":2,"52":2,"59":30,"63":31,"65":2,"67":2,"73":32,"82":33,"85":34,"87":2,"95":35,"111":36,"112":2,"116":37,"366":{"batched_calls_limit":1},"367":{"CursorMaxLen":1,"IdentifierMaxLen":1},"368":2,"370":{"MaxBlockTransactions":1,"MaxTransactionSize":1,"AuthorizationPeriod":1,"StoreTxParams":298,"AuthorizeTxParams":298,"RemoveExpiredAccountAuthorizationTxParams":298,"RemoveExpiredPreimageAuthorizationTxParams":298,"RemoveExhaustedAuthorizerTxParams":298},"371":{"SubmitTimestampTolerance":45,"PromoteTxParams":298},"372":{"MaxPermanentStorageSize":45,"RenewTxParams":298}},"323":{"18":2,"46":2,"49":2,"51":2,"52":2,"59":2,"63":2,"65":2,"67":2,"73":2,"82":2,"85":2,"87":2,"95":2,"111":2,"112":2,"116":2,"366":2,"367":{"ongoing_status":277,"progress":278,"affected_prefixes":279,"status":280},"368":2,"370":2,"371":2,"372":2},"365":{"326":38,"328":39,"332":40,"336":41,"341":{"337":328,"338":219,"339":220,"340":221},"343":42,"345":43,"348":{"346":329,"347":225},"350":44,"355":45,"358":{"353":229,"354":230,"356":330,"357":331},"360":46,"364":47,"RelayParentOffsetApi":{"relay_parent_offset":327,"max_claim_queue_offset":327},"XcmPaymentApi":{"query_acceptable_payment_assets":332,"query_xcm_weight":333,"query_weight_to_asset_fee":334,"query_delivery_fees":335},"DryRunApi":{"dry_run_call":336,"dry_run_xcm":337},"LocationToAccountApi":{"convert_location":338},"TrustedQueryApi":{"is_trusted_reserve":339,"is_trusted_teleporter":339},"AuthorizedAliasersApi":{"authorized_aliasers":340,"is_authorized_alias":341},"TransactionStorageApi":{"retention_period":327,"indexed_transactions":342},"HopRuntimeApi":{"max_promotion_size":327,"can_account_promote":343,"create_promotion_extrinsic":344,"is_promoted_on_chain":345},"BulletinTransactionStorageApi":{"account_authorization":346,"can_store":347,"can_renew":348},"GetParachainInfo":{"parachain_id":327}}}},[{"47":45,"48":2},{"50":1},{},{"60":45,"61":79,"62":45},{"64":81},{"66":81},{"68":89,"69":90,"70":91,"71":1,"72":45},{"74":89,"75":1,"76":2,"77":105,"78":106,"79":107,"80":108,"81":109},{"83":113,"84":45},{"83":113,"86":114},{"113":171,"114":172,"115":173},{"121":18,"122":19,"123":20,"124":20,"125":21,"126":22,"127":23,"128":18,"129":24,"130":24,"131":20},{"132":46,"133":47},{"134":52},{"135":58,"136":59,"137":58,"138":60,"139":61,"140":62,"141":63,"142":64,"143":65},{"149":93,"150":94,"151":95,"152":86,"153":86,"154":96,"155":96,"156":97,"157":98},{"158":110,"159":86},{"160":86,"161":86,"162":120,"163":120,"164":120},{"165":134,"166":135,"167":135,"168":136,"169":137,"170":138,"171":139,"172":139,"173":140,"174":140,"175":141,"176":140,"177":142,"178":143,"179":144,"180":145,"181":86},{"182":175,"183":176},{"197":27,"198":48,"199":27,"200":49,"201":50,"202":51},{"233":80},{"238":99,"239":100,"240":100,"241":101,"242":102,"243":103,"244":103,"245":100,"246":104,"247":100},{"248":111,"249":27,"250":112,"251":112},{"252":121},{"253":146,"254":147,"255":148,"256":149,"257":150,"258":151,"259":152,"260":153,"261":152,"262":152,"263":154,"264":150,"265":155,"266":156,"267":157,"268":158,"269":159,"270":160,"271":150,"272":161,"273":162,"274":162,"275":162,"276":163,"277":156,"278":164,"279":165,"280":166,"281":167},{"282":169,"283":169,"284":170},{"285":177,"286":178,"287":179,"288":180},{"296":1},{"297":45},{"298":45,"299":1,"300":1,"301":1},{"302":1},{"303":92,"304":1,"305":1,"306":1,"307":1,"308":81},{"309":45},{"310":45},{"311":1,"312":1,"313":1},{"314":133,"315":1,"316":1,"317":1},{"318":1,"319":1,"320":174,"321":174},{"324":208,"325":209},{"327":210},{"329":211,"330":212,"331":213},{"333":214,"334":215,"335":216},{"342":222},{"344":223},{"349":226},{"351":227,"352":228,"353":229,"354":230},{"359":233},{"361":235,"362":236,"363":237}],["Account","ExtrinsicCount","InherentsApplied","BlockWeight","BlockHash","ExtrinsicData","Number","ParentHash","Digest","Events","EventCount","EventTopics","LastRuntimeUpgrade","UpgradedToU32RefCount","UpgradedToTripleRefCount","ExecutionPhase","AuthorizedUpgrade","ExtrinsicWeightReclaimed","System","UnincludedSegment","AggregatedUnincludedSegment","PendingValidationCode","NewValidationCode","ValidationData","DidSetValidationCode","LastRelayChainBlockNumber","UpgradeRestrictionSignal","UpgradeGoAhead","RelayStateProof","RelevantMessagingState","HostConfiguration","LastDmqMqcHead","LastHrmpMqcHeads","ProcessedDownwardMessages","LastProcessedDownwardMessage","HrmpWatermark","LastProcessedHrmpMessage","HrmpOutboundMessages","UpwardMessages","PendingUpwardMessages","PendingUpwardSignals","UpwardDeliveryFeeFactor","AnnouncedHrmpMessagesPerCandidate","ReservedXcmpWeightOverride","ReservedDmpWeightOverride","CustomValidationHeadData","ParachainSystem","Now","DidUpdate","Timestamp","ParachainId","ParachainInfo","WeightReclaim","TotalIssuance","InactiveIssuance","Locks","Reserves","Holds","Freezes","Balances","NextFeeMultiplier","StorageVersion","TxPaymentCredit","TransactionPayment","Key","Sudo","Author","Authorship","Invulnerables","CandidateList","LastAuthoredBlock","DesiredCandidates","CandidacyBond","CollatorSelection","Validators","CurrentIndex","QueuedChanged","QueuedKeys","DisabledValidators","NextKeys","KeyOwner","ExternallySetKeys","Session","Authorities","CurrentSlot","Aura","RelaySlotInfo","AuraExt","InboundXcmpSuspended","OutboundXcmpStatus","OutboundXcmpMessages","SignalMessages","QueueConfig","QueueSuspended","DeliveryFeeFactor","XcmpQueue","QueryCounter","Queries","AssetTraps","SafeXcmVersion","SupportedVersion","VersionNotifiers","VersionNotifyTargets","VersionDiscoveryQueue","CurrentMigration","RemoteLockedFungibles","LockedFungibles","XcmExecutionSuspended","ShouldRecordXcm","RecordedXcm","AuthorizedAliases","PolkadotXcm","CumulusXcm","BookStateFor","ServiceHead","Pages","MessageQueue","Statement","TemplatePallet","Revive","storage","remark","set_heap_pages","set_code","set_code_without_checks","set_storage","kill_storage","kill_prefix","remark_with_event","authorize_upgrade","authorize_upgrade_without_checks","apply_authorized_upgrade","set_validation_data","sudo_send_upward_message","set","transfer_allow_death","force_transfer","transfer_keep_alive","transfer_all","force_unreserve","upgrade_accounts","force_set_balance","force_adjust_total_issuance","burn","sudo","sudo_unchecked_weight","set_key","sudo_as","remove_key","set_invulnerables","set_desired_candidates","set_candidacy_bond","register_as_candidate","leave_intent","add_invulnerable","remove_invulnerable","update_bond","take_candidate_slot","set_keys","purge_keys","suspend_xcm_execution","resume_xcm_execution","update_suspend_threshold","update_drop_threshold","update_resume_threshold","send","teleport_assets","reserve_transfer_assets","execute","force_xcm_version","force_default_xcm_version","force_subscribe_version_notify","force_unsubscribe_version_notify","limited_reserve_transfer_assets","limited_teleport_assets","force_suspension","transfer_assets","claim_assets","transfer_assets_using_type_and_then","add_authorized_alias","remove_authorized_alias","remove_all_authorized_aliases","reap_page","execute_overweight","eth_transact","call","instantiate","upload_code","tx","ExtrinsicSuccess","ExtrinsicFailed","CodeUpdated","NewAccount","KilledAccount","Remarked","UpgradeAuthorized","RejectedInvalidAuthorizedUpgrade","ValidationFunctionStored","ValidationFunctionApplied","ValidationFunctionDiscarded","DownwardMessagesReceived","DownwardMessagesProcessed","UpwardMessageSent","Endowed","DustLost","Transfer","BalanceSet","Reserved","Unreserved","ReserveRepatriated","Deposit","Withdraw","Slashed","Minted","MintedCredit","Burned","BurnedDebt","Suspended","Restored","Upgraded","Issued","Rescinded","Locked","Unlocked","Frozen","Thawed","TotalIssuanceForced","Held","BurnedHeld","TransferOnHold","TransferAndHold","Released","Unexpected","TransactionFeePaid","Sudid","KeyChanged","KeyRemoved","SudoAsDone","NewInvulnerables","InvulnerableAdded","InvulnerableRemoved","NewDesiredCandidates","NewCandidacyBond","CandidateAdded","CandidateBondUpdated","CandidateRemoved","CandidateReplaced","InvalidInvulnerableSkipped","NewSession","NewQueued","ValidatorDisabled","ValidatorReenabled","XcmpMessageSent","Attempted","Sent","SendFailed","ProcessXcmError","UnexpectedResponse","ResponseReady","Notified","NotifyOverweight","NotifyDispatchError","NotifyDecodeFailed","InvalidResponder","InvalidResponderVersion","ResponseTaken","AssetsTrapped","VersionChangeNotified","SupportedVersionChanged","NotifyTargetSendFail","NotifyTargetMigrationFail","InvalidQuerierVersion","InvalidQuerier","VersionNotifyStarted","VersionNotifyRequested","VersionNotifyUnrequested","FeesPaid","AssetsClaimed","VersionMigrationFinished","AliasAuthorized","AliasAuthorizationRemoved","AliasesAuthorizationsRemoved","InvalidFormat","UnsupportedVersion","ExecutedDownward","ProcessingFailed","Processed","OverweightEnqueued","PageReaped","events","BlockWeights","BlockLength","BlockHashCount","DbWeight","Version","SS58Prefix","SelfParaId","MinimumPeriod","ExistentialDeposit","MaxLocks","MaxReserves","MaxFreezes","OperationalFeeMultiplier","PotId","MaxCandidates","MinEligibleCollators","MaxInvulnerables","KickThreshold","pot_account","KeyDeposit","SlotDuration","MaxInboundSuspended","MaxActiveOutboundChannels","MaxPageSize","UniversalLocation","AdvertisedXcmVersion","MaxLockers","MaxRemoteLockConsumers","HeapSize","MaxStale","ServiceWeight","IdleMaxServiceWeight","constants","viewFns","slot_duration","authorities","AuraApi","can_build_upon","AuraUnincludedSegmentApi","version","execute_block","initialize_block","Core","metadata","metadata_at_version","metadata_versions","Metadata","apply_extrinsic","finalize_block","inherent_extrinsics","check_inherents","BlockBuilder","validate_transaction","TaggedTransactionQueue","offchain_worker","OffchainWorkerApi","generate_session_keys","decode_session_keys","SessionKeys","account_nonce","AccountNonceApi","query_info","query_fee_details","query_weight_to_fee","query_length_to_fee","TransactionPaymentApi","query_call_info","query_call_fee_details","TransactionPaymentCallApi","collect_collation_info","CollectCollationInfo","build_state","get_preset","preset_names","GenesisBuilder","apis","Utility","MultiBlockMigrations","SkipFeelessPayment","ProofChecked","TransactionStorage","HopPromotion","DataRenewal"]]`); +var replaceTokens = (obj) => Object.fromEntries( + Object.entries(obj).map(([key, value]) => { + const unwrappedValue = typeof value === "object" ? replaceTokens(value) : value; + const numericKey = Number(key); + if (Number.isNaN(numericKey)) { + return [key, unwrappedValue]; + } + return [tokens[numericKey], unwrappedValue]; + }) +); +var tokenizedCommonTrees = commonTrees.map(replaceTokens); +var unwrap = (obj, depth) => depth === 0 ? obj : Object.fromEntries( + Object.entries(obj).map(([key, value]) => [ + key, + unwrap( + typeof value === "object" ? value : tokenizedCommonTrees[value], + depth - 1 + ) + ]) +); +var getChainDescriptors = (key) => unwrap(replaceTokens(minified[key]), 2); +var Stack_template = getChainDescriptors("stack_template"); +var Bulletin = getChainDescriptors("bulletin"); +export { + Bulletin, + Stack_template +}; diff --git a/web/.papi/descriptors/dist/descriptors-WIWSIN73.mjs b/web/.papi/descriptors/dist/descriptors-WIWSIN73.mjs deleted file mode 100644 index db435795..00000000 --- a/web/.papi/descriptors/dist/descriptors-WIWSIN73.mjs +++ /dev/null @@ -1,29 +0,0 @@ -// .papi/descriptors/src/descriptors.ts -var [minified, commonTrees, tokens] = JSON.parse(`[{"stack_template":{"120":{"18":{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":1,"7":6,"8":7,"9":8,"10":1,"11":9,"12":10,"13":2,"14":2,"15":11,"16":12,"17":13,"AllExtrinsicsLen":1},"46":0,"49":1,"51":2,"52":3,"59":{"0":53,"53":45,"54":45,"55":54,"56":55,"57":56,"58":57},"63":4,"65":5,"67":6,"73":7,"82":8,"85":9,"87":10,"95":11,"111":{"96":45,"97":122,"98":123,"99":1,"100":124,"101":125,"102":126,"103":127,"104":128,"105":129,"106":130,"107":2,"108":2,"109":131,"110":132},"112":3,"116":12,"117":3,"118":{"Claims":182},"119":{"4":4,"PristineCode":185,"CodeInfoOf":186,"AccountInfoOf":187,"ImmutableDataOf":188,"DeletionQueue":5,"DeletionQueueCounter":189,"OriginalAccount":190,"EthereumBlock":191,"ReceiptInfoData":192,"EthBlockBuilderIR":193,"EthBlockBuilderFirstValues":194,"DebugSettingsOf":195}},"188":{"18":13,"46":14,"49":15,"51":3,"52":3,"59":16,"63":3,"65":{"144":82,"145":83,"146":84,"147":85,"148":86},"67":3,"73":17,"82":18,"85":3,"87":3,"95":19,"111":20,"112":3,"116":21,"117":3,"118":{"create_claim":183,"revoke_claim":183},"119":{"123":204,"184":196,"185":197,"186":198,"187":203,"instantiate_with_code":199,"eth_instantiate_with_code":200,"eth_call":201,"eth_substrate_call":202,"remove_code":24,"map_account":86,"unmap_account":86,"dispatch_as_fallback_account":82}},"289":{"18":{"189":25,"190":26,"191":27,"192":28,"193":28,"194":29,"195":30,"196":31},"46":22,"49":3,"51":3,"52":3,"59":{"203":66,"204":67,"205":68,"206":69,"207":70,"208":70,"209":71,"210":70,"211":70,"212":70,"213":70,"214":72,"215":70,"216":72,"217":70,"218":70,"219":73,"220":72,"221":72,"222":70,"223":70,"224":70,"225":70,"226":74,"227":75,"228":75,"229":76,"230":77,"231":75,"232":78},"63":23,"65":{"234":87,"235":88,"236":27,"237":87},"67":3,"73":24,"82":25,"85":3,"87":3,"95":26,"111":27,"112":28,"116":29,"117":{"NewStatement":181},"118":{"ClaimCreated":184,"ClaimRevoked":184},"119":{"ContractEmitted":205,"Instantiated":206,"EthExtrinsicRevert":207}},"322":{"18":{"290":14,"291":15,"292":1,"293":16,"294":17,"295":1},"46":30,"49":31,"51":3,"52":3,"59":32,"63":33,"65":3,"67":3,"73":34,"82":35,"85":36,"87":3,"95":37,"111":38,"112":3,"116":39,"117":{"StatementCost":45,"ByteCost":45,"MinAllowedStatements":1,"MaxAllowedStatements":1,"MinAllowedBytes":1,"MaxAllowedBytes":1},"118":3,"119":{"DepositPerByte":45,"DepositPerItem":45,"DepositPerChildTrieItem":45,"CodeHashLockupDepositPercent":1,"UnsafeUnstableInterface":2,"AllowEVMBytecode":2,"ChainId":45,"NativeToEthRatio":1,"MaxEthExtrinsicWeight":45,"DebugEnabled":2,"GasScale":1}},"323":{"18":3,"46":3,"49":3,"51":3,"52":3,"59":3,"63":3,"65":3,"67":3,"73":3,"82":3,"85":3,"87":3,"95":3,"111":3,"112":3,"116":3,"117":3,"118":3,"119":3},"365":{"326":40,"328":41,"332":42,"336":43,"341":{"337":218,"338":219,"339":220,"340":221},"343":44,"345":45,"348":{"346":224,"347":225},"350":46,"355":47,"358":{"353":229,"354":230,"356":231,"357":232},"360":48,"364":49,"RuntimeViewFunction":{"execute_view_function":217},"ValidateStatement":{"validate_statement":234},"ReviveApi":{"184":246,"185":244,"186":245,"187":248,"eth_block":238,"eth_block_hash":239,"eth_receipt_data":240,"block_gas_limit":241,"balance":242,"gas_price":241,"nonce":243,"eth_transact_with_config":247,"get_storage":249,"get_storage_var_key":250,"trace_block":251,"trace_tx":252,"trace_call":253,"block_author":254,"address":255,"account_id":256,"runtime_pallets_address":254,"code":257,"new_balance_with_dust":258}}},"bulletin":{"120":{"18":{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":1,"7":6,"8":7,"9":259,"10":1,"11":9,"12":10,"13":2,"14":2,"15":11,"16":12,"17":13,"BlockSize":1},"46":0,"49":1,"51":2,"52":3,"59":{"0":53,"53":45,"54":45,"55":54,"56":55,"57":272,"58":57},"63":4,"65":5,"67":6,"73":7,"82":8,"85":9,"87":10,"95":11,"111":{"96":45,"97":122,"98":123,"99":1,"100":124,"101":125,"102":126,"103":127,"104":128,"105":129,"106":130,"107":2,"108":2,"109":131,"110":292},"112":3,"116":12,"366":3,"367":3,"369":{"368":2,"Authorizations":277,"Transactions":278,"ByteFee":45,"EntryFee":45,"RetentionPeriod":1,"BlockTransactions":279}},"188":{"18":13,"46":14,"49":15,"51":3,"52":3,"59":16,"63":3,"65":{"144":293,"145":266,"146":84,"147":294,"148":86},"67":3,"73":17,"82":18,"85":3,"87":3,"95":19,"111":20,"112":3,"116":21,"366":{"batch":263,"as_derivative":264,"batch_all":263,"dispatch_as":265,"force_batch":263,"with_weight":266,"if_else":267,"dispatch_as_fallible":265},"367":3,"369":{"store":280,"store_with_cid_config":281,"renew":282,"check_proof":283,"authorize_account":284,"authorize_preimage":285,"remove_expired_account_authorization":96,"remove_expired_preimage_authorization":286,"refresh_account_authorization":96,"refresh_preimage_authorization":286}},"289":{"18":{"189":25,"190":261,"191":27,"192":28,"193":28,"194":29,"195":30,"196":262},"46":22,"49":3,"51":3,"52":3,"59":{"203":66,"204":67,"205":68,"206":69,"207":70,"208":70,"209":71,"210":70,"211":70,"212":70,"213":70,"214":72,"215":70,"216":72,"217":70,"218":70,"219":73,"220":72,"221":72,"222":70,"223":70,"224":70,"225":70,"226":74,"227":273,"228":273,"229":274,"230":275,"231":273,"232":78},"63":23,"65":{"234":295,"235":88,"236":27,"237":295},"67":3,"73":24,"82":25,"85":3,"87":3,"95":26,"111":27,"112":28,"116":29,"366":{"BatchInterrupted":268,"BatchCompleted":27,"BatchCompletedWithErrors":27,"ItemCompleted":27,"ItemFailed":269,"DispatchedAs":270,"IfElseMainSuccess":27,"IfElseFallbackCalled":271},"367":{"FeeSkipped":276},"369":{"368":27,"Stored":287,"Renewed":288,"AccountAuthorized":289,"AccountAuthorizationRefreshed":73,"PreimageAuthorized":290,"PreimageAuthorizationRefreshed":291,"ExpiredAccountAuthorizationRemoved":73,"ExpiredPreimageAuthorizationRemoved":291}},"322":{"18":{"290":14,"291":260,"292":1,"293":16,"294":17,"295":1},"46":30,"49":31,"51":3,"52":3,"59":32,"63":33,"65":3,"67":3,"73":34,"82":35,"85":36,"87":3,"95":37,"111":38,"112":3,"116":39,"366":{"batched_calls_limit":1},"367":3,"369":{"MaxBlockTransactions":1,"MaxTransactionSize":1,"AuthorizationPeriod":1,"StoreRenewPriority":45,"StoreRenewLongevity":45,"RemoveExpiredAuthorizationPriority":45,"RemoveExpiredAuthorizationLongevity":45}},"323":{"18":3,"46":3,"49":3,"51":3,"52":3,"59":3,"63":3,"65":3,"67":3,"73":3,"82":3,"85":3,"87":3,"95":3,"111":3,"112":3,"116":3,"366":3,"367":3,"369":3},"365":{"326":40,"328":41,"332":42,"336":43,"341":{"337":297,"338":219,"339":220,"340":221},"343":44,"345":45,"348":{"346":298,"347":225},"350":46,"355":47,"358":{"353":229,"354":230,"356":299,"357":300},"360":48,"364":49,"RelayParentOffsetApi":{"relay_parent_offset":296},"XcmPaymentApi":{"query_acceptable_payment_assets":301,"query_xcm_weight":302,"query_weight_to_asset_fee":303,"query_delivery_fees":304},"DryRunApi":{"dry_run_call":305,"dry_run_xcm":306},"LocationToAccountApi":{"convert_location":307},"TrustedQueryApi":{"is_trusted_reserve":308,"is_trusted_teleporter":308},"AuthorizedAliasersApi":{"authorized_aliasers":309,"is_authorized_alias":310},"TransactionStorageApi":{"retention_period":296},"GetParachainInfo":{"parachain_id":296}}}},[{"19":33,"20":34,"21":35,"22":35,"23":36,"24":2,"25":1,"26":37,"27":38,"28":39,"29":40,"30":41,"31":6,"32":42,"33":1,"34":43,"35":1,"36":43,"37":44,"38":39,"39":39,"40":39,"41":45,"42":1,"43":13,"44":13,"45":35},{"47":45,"48":2},{"50":1},{},{"60":45,"61":79,"62":45},{"64":81},{"66":81},{"68":89,"69":90,"70":91,"71":1,"72":45},{"74":89,"75":1,"76":2,"77":105,"78":106,"79":107,"80":108,"81":109},{"83":113,"84":45},{"83":113,"86":114},{"88":115,"89":116,"90":117,"91":5,"92":118,"93":2,"94":119},{"113":171,"114":172,"115":173},{"121":18,"122":19,"123":20,"124":20,"125":21,"126":22,"127":23,"128":18,"129":24,"130":24,"131":20},{"132":46,"133":47},{"134":52},{"135":58,"136":59,"137":58,"138":60,"139":61,"140":62,"141":63,"142":64,"143":65},{"149":93,"150":94,"151":95,"152":86,"153":86,"154":96,"155":96,"156":97,"157":98},{"158":110,"159":86},{"160":86,"161":86,"162":120,"163":120,"164":120},{"165":134,"166":135,"167":135,"168":136,"169":137,"170":138,"171":139,"172":139,"173":140,"174":140,"175":141,"176":140,"177":142,"178":143,"179":144,"180":145,"181":86},{"182":175,"183":176},{"197":27,"198":48,"199":27,"200":49,"201":50,"202":51},{"233":80},{"238":99,"239":100,"240":100,"241":101,"242":102,"243":103,"244":103,"245":100,"246":104,"247":100},{"248":111,"249":27,"250":112,"251":112},{"252":121},{"253":146,"254":147,"255":148,"256":149,"257":150,"258":151,"259":152,"260":153,"261":152,"262":152,"263":154,"264":150,"265":155,"266":156,"267":157,"268":158,"269":159,"270":160,"271":150,"272":161,"273":162,"274":162,"275":162,"276":163,"277":156,"278":164,"279":165,"280":166,"281":167},{"282":169,"283":169,"284":170},{"285":177,"286":178,"287":179,"288":180},{"296":1},{"297":45},{"298":45,"299":1,"300":1,"301":1},{"302":1},{"303":92,"304":1,"305":1,"306":1,"307":1,"308":81},{"309":45},{"310":45},{"311":1,"312":1,"313":1},{"314":133,"315":1,"316":1,"317":1},{"318":1,"319":1,"320":174,"321":174},{"324":208,"325":209},{"327":210},{"329":211,"330":212,"331":213},{"333":214,"334":215,"335":216},{"342":222},{"344":223},{"349":226},{"351":227,"352":228,"353":229,"354":230},{"359":233},{"361":235,"362":236,"363":237}],["Account","ExtrinsicCount","InherentsApplied","BlockWeight","BlockHash","ExtrinsicData","Number","ParentHash","Digest","Events","EventCount","EventTopics","LastRuntimeUpgrade","UpgradedToU32RefCount","UpgradedToTripleRefCount","ExecutionPhase","AuthorizedUpgrade","ExtrinsicWeightReclaimed","System","UnincludedSegment","AggregatedUnincludedSegment","PendingValidationCode","NewValidationCode","ValidationData","DidSetValidationCode","LastRelayChainBlockNumber","UpgradeRestrictionSignal","UpgradeGoAhead","RelayStateProof","RelevantMessagingState","HostConfiguration","LastDmqMqcHead","LastHrmpMqcHeads","ProcessedDownwardMessages","LastProcessedDownwardMessage","HrmpWatermark","LastProcessedHrmpMessage","HrmpOutboundMessages","UpwardMessages","PendingUpwardMessages","PendingUpwardSignals","UpwardDeliveryFeeFactor","AnnouncedHrmpMessagesPerCandidate","ReservedXcmpWeightOverride","ReservedDmpWeightOverride","CustomValidationHeadData","ParachainSystem","Now","DidUpdate","Timestamp","ParachainId","ParachainInfo","WeightReclaim","TotalIssuance","InactiveIssuance","Locks","Reserves","Holds","Freezes","Balances","NextFeeMultiplier","StorageVersion","TxPaymentCredit","TransactionPayment","Key","Sudo","Author","Authorship","Invulnerables","CandidateList","LastAuthoredBlock","DesiredCandidates","CandidacyBond","CollatorSelection","Validators","CurrentIndex","QueuedChanged","QueuedKeys","DisabledValidators","NextKeys","KeyOwner","ExternallySetKeys","Session","Authorities","CurrentSlot","Aura","RelaySlotInfo","AuraExt","InboundXcmpSuspended","OutboundXcmpStatus","OutboundXcmpMessages","SignalMessages","QueueConfig","QueueSuspended","DeliveryFeeFactor","XcmpQueue","QueryCounter","Queries","AssetTraps","SafeXcmVersion","SupportedVersion","VersionNotifiers","VersionNotifyTargets","VersionDiscoveryQueue","CurrentMigration","RemoteLockedFungibles","LockedFungibles","XcmExecutionSuspended","ShouldRecordXcm","RecordedXcm","AuthorizedAliases","PolkadotXcm","CumulusXcm","BookStateFor","ServiceHead","Pages","MessageQueue","Statement","TemplatePallet","Revive","storage","remark","set_heap_pages","set_code","set_code_without_checks","set_storage","kill_storage","kill_prefix","remark_with_event","authorize_upgrade","authorize_upgrade_without_checks","apply_authorized_upgrade","set_validation_data","sudo_send_upward_message","set","transfer_allow_death","force_transfer","transfer_keep_alive","transfer_all","force_unreserve","upgrade_accounts","force_set_balance","force_adjust_total_issuance","burn","sudo","sudo_unchecked_weight","set_key","sudo_as","remove_key","set_invulnerables","set_desired_candidates","set_candidacy_bond","register_as_candidate","leave_intent","add_invulnerable","remove_invulnerable","update_bond","take_candidate_slot","set_keys","purge_keys","suspend_xcm_execution","resume_xcm_execution","update_suspend_threshold","update_drop_threshold","update_resume_threshold","send","teleport_assets","reserve_transfer_assets","execute","force_xcm_version","force_default_xcm_version","force_subscribe_version_notify","force_unsubscribe_version_notify","limited_reserve_transfer_assets","limited_teleport_assets","force_suspension","transfer_assets","claim_assets","transfer_assets_using_type_and_then","add_authorized_alias","remove_authorized_alias","remove_all_authorized_aliases","reap_page","execute_overweight","eth_transact","call","instantiate","upload_code","tx","ExtrinsicSuccess","ExtrinsicFailed","CodeUpdated","NewAccount","KilledAccount","Remarked","UpgradeAuthorized","RejectedInvalidAuthorizedUpgrade","ValidationFunctionStored","ValidationFunctionApplied","ValidationFunctionDiscarded","DownwardMessagesReceived","DownwardMessagesProcessed","UpwardMessageSent","Endowed","DustLost","Transfer","BalanceSet","Reserved","Unreserved","ReserveRepatriated","Deposit","Withdraw","Slashed","Minted","MintedCredit","Burned","BurnedDebt","Suspended","Restored","Upgraded","Issued","Rescinded","Locked","Unlocked","Frozen","Thawed","TotalIssuanceForced","Held","BurnedHeld","TransferOnHold","TransferAndHold","Released","Unexpected","TransactionFeePaid","Sudid","KeyChanged","KeyRemoved","SudoAsDone","NewInvulnerables","InvulnerableAdded","InvulnerableRemoved","NewDesiredCandidates","NewCandidacyBond","CandidateAdded","CandidateBondUpdated","CandidateRemoved","CandidateReplaced","InvalidInvulnerableSkipped","NewSession","NewQueued","ValidatorDisabled","ValidatorReenabled","XcmpMessageSent","Attempted","Sent","SendFailed","ProcessXcmError","UnexpectedResponse","ResponseReady","Notified","NotifyOverweight","NotifyDispatchError","NotifyDecodeFailed","InvalidResponder","InvalidResponderVersion","ResponseTaken","AssetsTrapped","VersionChangeNotified","SupportedVersionChanged","NotifyTargetSendFail","NotifyTargetMigrationFail","InvalidQuerierVersion","InvalidQuerier","VersionNotifyStarted","VersionNotifyRequested","VersionNotifyUnrequested","FeesPaid","AssetsClaimed","VersionMigrationFinished","AliasAuthorized","AliasAuthorizationRemoved","AliasesAuthorizationsRemoved","InvalidFormat","UnsupportedVersion","ExecutedDownward","ProcessingFailed","Processed","OverweightEnqueued","PageReaped","events","BlockWeights","BlockLength","BlockHashCount","DbWeight","Version","SS58Prefix","SelfParaId","MinimumPeriod","ExistentialDeposit","MaxLocks","MaxReserves","MaxFreezes","OperationalFeeMultiplier","PotId","MaxCandidates","MinEligibleCollators","MaxInvulnerables","KickThreshold","pot_account","KeyDeposit","SlotDuration","MaxInboundSuspended","MaxActiveOutboundChannels","MaxPageSize","UniversalLocation","AdvertisedXcmVersion","MaxLockers","MaxRemoteLockConsumers","HeapSize","MaxStale","ServiceWeight","IdleMaxServiceWeight","constants","viewFns","slot_duration","authorities","AuraApi","can_build_upon","AuraUnincludedSegmentApi","version","execute_block","initialize_block","Core","metadata","metadata_at_version","metadata_versions","Metadata","apply_extrinsic","finalize_block","inherent_extrinsics","check_inherents","BlockBuilder","validate_transaction","TaggedTransactionQueue","offchain_worker","OffchainWorkerApi","generate_session_keys","decode_session_keys","SessionKeys","account_nonce","AccountNonceApi","query_info","query_fee_details","query_weight_to_fee","query_length_to_fee","TransactionPaymentApi","query_call_info","query_call_fee_details","TransactionPaymentCallApi","collect_collation_info","CollectCollationInfo","build_state","get_preset","preset_names","GenesisBuilder","apis","Utility","SkipFeelessPayment","ProofChecked","TransactionStorage"]]`); -var replaceTokens = (obj) => Object.fromEntries( - Object.entries(obj).map(([key, value]) => { - const unwrappedValue = typeof value === "object" ? replaceTokens(value) : value; - const numericKey = Number(key); - if (Number.isNaN(numericKey)) { - return [key, unwrappedValue]; - } - return [tokens[numericKey], unwrappedValue]; - }) -); -var tokenizedCommonTrees = commonTrees.map(replaceTokens); -var unwrap = (obj, depth) => depth === 0 ? obj : Object.fromEntries( - Object.entries(obj).map(([key, value]) => [ - key, - unwrap( - typeof value === "object" ? value : tokenizedCommonTrees[value], - depth - 1 - ) - ]) -); -var getChainDescriptors = (key) => unwrap(replaceTokens(minified[key]), 2); -var Stack_template = getChainDescriptors("stack_template"); -var Bulletin = getChainDescriptors("bulletin"); -export { - Bulletin, - Stack_template -}; diff --git a/web/.papi/descriptors/dist/index.js b/web/.papi/descriptors/dist/index.js index d4b83d97..fcfbd31c 100644 --- a/web/.papi/descriptors/dist/index.js +++ b/web/.papi/descriptors/dist/index.js @@ -30,7 +30,7 @@ var minified, commonTrees, tokens, replaceTokens, tokenizedCommonTrees, unwrap, var init_descriptors = __esm({ ".papi/descriptors/src/descriptors.ts"() { "use strict"; - [minified, commonTrees, tokens] = JSON.parse(`[{"stack_template":{"120":{"18":{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":1,"7":6,"8":7,"9":8,"10":1,"11":9,"12":10,"13":2,"14":2,"15":11,"16":12,"17":13,"AllExtrinsicsLen":1},"46":0,"49":1,"51":2,"52":3,"59":{"0":53,"53":45,"54":45,"55":54,"56":55,"57":56,"58":57},"63":4,"65":5,"67":6,"73":7,"82":8,"85":9,"87":10,"95":11,"111":{"96":45,"97":122,"98":123,"99":1,"100":124,"101":125,"102":126,"103":127,"104":128,"105":129,"106":130,"107":2,"108":2,"109":131,"110":132},"112":3,"116":12,"117":3,"118":{"Claims":182},"119":{"4":4,"PristineCode":185,"CodeInfoOf":186,"AccountInfoOf":187,"ImmutableDataOf":188,"DeletionQueue":5,"DeletionQueueCounter":189,"OriginalAccount":190,"EthereumBlock":191,"ReceiptInfoData":192,"EthBlockBuilderIR":193,"EthBlockBuilderFirstValues":194,"DebugSettingsOf":195}},"188":{"18":13,"46":14,"49":15,"51":3,"52":3,"59":16,"63":3,"65":{"144":82,"145":83,"146":84,"147":85,"148":86},"67":3,"73":17,"82":18,"85":3,"87":3,"95":19,"111":20,"112":3,"116":21,"117":3,"118":{"create_claim":183,"revoke_claim":183},"119":{"123":204,"184":196,"185":197,"186":198,"187":203,"instantiate_with_code":199,"eth_instantiate_with_code":200,"eth_call":201,"eth_substrate_call":202,"remove_code":24,"map_account":86,"unmap_account":86,"dispatch_as_fallback_account":82}},"289":{"18":{"189":25,"190":26,"191":27,"192":28,"193":28,"194":29,"195":30,"196":31},"46":22,"49":3,"51":3,"52":3,"59":{"203":66,"204":67,"205":68,"206":69,"207":70,"208":70,"209":71,"210":70,"211":70,"212":70,"213":70,"214":72,"215":70,"216":72,"217":70,"218":70,"219":73,"220":72,"221":72,"222":70,"223":70,"224":70,"225":70,"226":74,"227":75,"228":75,"229":76,"230":77,"231":75,"232":78},"63":23,"65":{"234":87,"235":88,"236":27,"237":87},"67":3,"73":24,"82":25,"85":3,"87":3,"95":26,"111":27,"112":28,"116":29,"117":{"NewStatement":181},"118":{"ClaimCreated":184,"ClaimRevoked":184},"119":{"ContractEmitted":205,"Instantiated":206,"EthExtrinsicRevert":207}},"322":{"18":{"290":14,"291":15,"292":1,"293":16,"294":17,"295":1},"46":30,"49":31,"51":3,"52":3,"59":32,"63":33,"65":3,"67":3,"73":34,"82":35,"85":36,"87":3,"95":37,"111":38,"112":3,"116":39,"117":{"StatementCost":45,"ByteCost":45,"MinAllowedStatements":1,"MaxAllowedStatements":1,"MinAllowedBytes":1,"MaxAllowedBytes":1},"118":3,"119":{"DepositPerByte":45,"DepositPerItem":45,"DepositPerChildTrieItem":45,"CodeHashLockupDepositPercent":1,"UnsafeUnstableInterface":2,"AllowEVMBytecode":2,"ChainId":45,"NativeToEthRatio":1,"MaxEthExtrinsicWeight":45,"DebugEnabled":2,"GasScale":1}},"323":{"18":3,"46":3,"49":3,"51":3,"52":3,"59":3,"63":3,"65":3,"67":3,"73":3,"82":3,"85":3,"87":3,"95":3,"111":3,"112":3,"116":3,"117":3,"118":3,"119":3},"365":{"326":40,"328":41,"332":42,"336":43,"341":{"337":218,"338":219,"339":220,"340":221},"343":44,"345":45,"348":{"346":224,"347":225},"350":46,"355":47,"358":{"353":229,"354":230,"356":231,"357":232},"360":48,"364":49,"RuntimeViewFunction":{"execute_view_function":217},"ValidateStatement":{"validate_statement":234},"ReviveApi":{"184":246,"185":244,"186":245,"187":248,"eth_block":238,"eth_block_hash":239,"eth_receipt_data":240,"block_gas_limit":241,"balance":242,"gas_price":241,"nonce":243,"eth_transact_with_config":247,"get_storage":249,"get_storage_var_key":250,"trace_block":251,"trace_tx":252,"trace_call":253,"block_author":254,"address":255,"account_id":256,"runtime_pallets_address":254,"code":257,"new_balance_with_dust":258}}},"bulletin":{"120":{"18":{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":1,"7":6,"8":7,"9":259,"10":1,"11":9,"12":10,"13":2,"14":2,"15":11,"16":12,"17":13,"BlockSize":1},"46":0,"49":1,"51":2,"52":3,"59":{"0":53,"53":45,"54":45,"55":54,"56":55,"57":272,"58":57},"63":4,"65":5,"67":6,"73":7,"82":8,"85":9,"87":10,"95":11,"111":{"96":45,"97":122,"98":123,"99":1,"100":124,"101":125,"102":126,"103":127,"104":128,"105":129,"106":130,"107":2,"108":2,"109":131,"110":292},"112":3,"116":12,"366":3,"367":3,"369":{"368":2,"Authorizations":277,"Transactions":278,"ByteFee":45,"EntryFee":45,"RetentionPeriod":1,"BlockTransactions":279}},"188":{"18":13,"46":14,"49":15,"51":3,"52":3,"59":16,"63":3,"65":{"144":293,"145":266,"146":84,"147":294,"148":86},"67":3,"73":17,"82":18,"85":3,"87":3,"95":19,"111":20,"112":3,"116":21,"366":{"batch":263,"as_derivative":264,"batch_all":263,"dispatch_as":265,"force_batch":263,"with_weight":266,"if_else":267,"dispatch_as_fallible":265},"367":3,"369":{"store":280,"store_with_cid_config":281,"renew":282,"check_proof":283,"authorize_account":284,"authorize_preimage":285,"remove_expired_account_authorization":96,"remove_expired_preimage_authorization":286,"refresh_account_authorization":96,"refresh_preimage_authorization":286}},"289":{"18":{"189":25,"190":261,"191":27,"192":28,"193":28,"194":29,"195":30,"196":262},"46":22,"49":3,"51":3,"52":3,"59":{"203":66,"204":67,"205":68,"206":69,"207":70,"208":70,"209":71,"210":70,"211":70,"212":70,"213":70,"214":72,"215":70,"216":72,"217":70,"218":70,"219":73,"220":72,"221":72,"222":70,"223":70,"224":70,"225":70,"226":74,"227":273,"228":273,"229":274,"230":275,"231":273,"232":78},"63":23,"65":{"234":295,"235":88,"236":27,"237":295},"67":3,"73":24,"82":25,"85":3,"87":3,"95":26,"111":27,"112":28,"116":29,"366":{"BatchInterrupted":268,"BatchCompleted":27,"BatchCompletedWithErrors":27,"ItemCompleted":27,"ItemFailed":269,"DispatchedAs":270,"IfElseMainSuccess":27,"IfElseFallbackCalled":271},"367":{"FeeSkipped":276},"369":{"368":27,"Stored":287,"Renewed":288,"AccountAuthorized":289,"AccountAuthorizationRefreshed":73,"PreimageAuthorized":290,"PreimageAuthorizationRefreshed":291,"ExpiredAccountAuthorizationRemoved":73,"ExpiredPreimageAuthorizationRemoved":291}},"322":{"18":{"290":14,"291":260,"292":1,"293":16,"294":17,"295":1},"46":30,"49":31,"51":3,"52":3,"59":32,"63":33,"65":3,"67":3,"73":34,"82":35,"85":36,"87":3,"95":37,"111":38,"112":3,"116":39,"366":{"batched_calls_limit":1},"367":3,"369":{"MaxBlockTransactions":1,"MaxTransactionSize":1,"AuthorizationPeriod":1,"StoreRenewPriority":45,"StoreRenewLongevity":45,"RemoveExpiredAuthorizationPriority":45,"RemoveExpiredAuthorizationLongevity":45}},"323":{"18":3,"46":3,"49":3,"51":3,"52":3,"59":3,"63":3,"65":3,"67":3,"73":3,"82":3,"85":3,"87":3,"95":3,"111":3,"112":3,"116":3,"366":3,"367":3,"369":3},"365":{"326":40,"328":41,"332":42,"336":43,"341":{"337":297,"338":219,"339":220,"340":221},"343":44,"345":45,"348":{"346":298,"347":225},"350":46,"355":47,"358":{"353":229,"354":230,"356":299,"357":300},"360":48,"364":49,"RelayParentOffsetApi":{"relay_parent_offset":296},"XcmPaymentApi":{"query_acceptable_payment_assets":301,"query_xcm_weight":302,"query_weight_to_asset_fee":303,"query_delivery_fees":304},"DryRunApi":{"dry_run_call":305,"dry_run_xcm":306},"LocationToAccountApi":{"convert_location":307},"TrustedQueryApi":{"is_trusted_reserve":308,"is_trusted_teleporter":308},"AuthorizedAliasersApi":{"authorized_aliasers":309,"is_authorized_alias":310},"TransactionStorageApi":{"retention_period":296},"GetParachainInfo":{"parachain_id":296}}}},[{"19":33,"20":34,"21":35,"22":35,"23":36,"24":2,"25":1,"26":37,"27":38,"28":39,"29":40,"30":41,"31":6,"32":42,"33":1,"34":43,"35":1,"36":43,"37":44,"38":39,"39":39,"40":39,"41":45,"42":1,"43":13,"44":13,"45":35},{"47":45,"48":2},{"50":1},{},{"60":45,"61":79,"62":45},{"64":81},{"66":81},{"68":89,"69":90,"70":91,"71":1,"72":45},{"74":89,"75":1,"76":2,"77":105,"78":106,"79":107,"80":108,"81":109},{"83":113,"84":45},{"83":113,"86":114},{"88":115,"89":116,"90":117,"91":5,"92":118,"93":2,"94":119},{"113":171,"114":172,"115":173},{"121":18,"122":19,"123":20,"124":20,"125":21,"126":22,"127":23,"128":18,"129":24,"130":24,"131":20},{"132":46,"133":47},{"134":52},{"135":58,"136":59,"137":58,"138":60,"139":61,"140":62,"141":63,"142":64,"143":65},{"149":93,"150":94,"151":95,"152":86,"153":86,"154":96,"155":96,"156":97,"157":98},{"158":110,"159":86},{"160":86,"161":86,"162":120,"163":120,"164":120},{"165":134,"166":135,"167":135,"168":136,"169":137,"170":138,"171":139,"172":139,"173":140,"174":140,"175":141,"176":140,"177":142,"178":143,"179":144,"180":145,"181":86},{"182":175,"183":176},{"197":27,"198":48,"199":27,"200":49,"201":50,"202":51},{"233":80},{"238":99,"239":100,"240":100,"241":101,"242":102,"243":103,"244":103,"245":100,"246":104,"247":100},{"248":111,"249":27,"250":112,"251":112},{"252":121},{"253":146,"254":147,"255":148,"256":149,"257":150,"258":151,"259":152,"260":153,"261":152,"262":152,"263":154,"264":150,"265":155,"266":156,"267":157,"268":158,"269":159,"270":160,"271":150,"272":161,"273":162,"274":162,"275":162,"276":163,"277":156,"278":164,"279":165,"280":166,"281":167},{"282":169,"283":169,"284":170},{"285":177,"286":178,"287":179,"288":180},{"296":1},{"297":45},{"298":45,"299":1,"300":1,"301":1},{"302":1},{"303":92,"304":1,"305":1,"306":1,"307":1,"308":81},{"309":45},{"310":45},{"311":1,"312":1,"313":1},{"314":133,"315":1,"316":1,"317":1},{"318":1,"319":1,"320":174,"321":174},{"324":208,"325":209},{"327":210},{"329":211,"330":212,"331":213},{"333":214,"334":215,"335":216},{"342":222},{"344":223},{"349":226},{"351":227,"352":228,"353":229,"354":230},{"359":233},{"361":235,"362":236,"363":237}],["Account","ExtrinsicCount","InherentsApplied","BlockWeight","BlockHash","ExtrinsicData","Number","ParentHash","Digest","Events","EventCount","EventTopics","LastRuntimeUpgrade","UpgradedToU32RefCount","UpgradedToTripleRefCount","ExecutionPhase","AuthorizedUpgrade","ExtrinsicWeightReclaimed","System","UnincludedSegment","AggregatedUnincludedSegment","PendingValidationCode","NewValidationCode","ValidationData","DidSetValidationCode","LastRelayChainBlockNumber","UpgradeRestrictionSignal","UpgradeGoAhead","RelayStateProof","RelevantMessagingState","HostConfiguration","LastDmqMqcHead","LastHrmpMqcHeads","ProcessedDownwardMessages","LastProcessedDownwardMessage","HrmpWatermark","LastProcessedHrmpMessage","HrmpOutboundMessages","UpwardMessages","PendingUpwardMessages","PendingUpwardSignals","UpwardDeliveryFeeFactor","AnnouncedHrmpMessagesPerCandidate","ReservedXcmpWeightOverride","ReservedDmpWeightOverride","CustomValidationHeadData","ParachainSystem","Now","DidUpdate","Timestamp","ParachainId","ParachainInfo","WeightReclaim","TotalIssuance","InactiveIssuance","Locks","Reserves","Holds","Freezes","Balances","NextFeeMultiplier","StorageVersion","TxPaymentCredit","TransactionPayment","Key","Sudo","Author","Authorship","Invulnerables","CandidateList","LastAuthoredBlock","DesiredCandidates","CandidacyBond","CollatorSelection","Validators","CurrentIndex","QueuedChanged","QueuedKeys","DisabledValidators","NextKeys","KeyOwner","ExternallySetKeys","Session","Authorities","CurrentSlot","Aura","RelaySlotInfo","AuraExt","InboundXcmpSuspended","OutboundXcmpStatus","OutboundXcmpMessages","SignalMessages","QueueConfig","QueueSuspended","DeliveryFeeFactor","XcmpQueue","QueryCounter","Queries","AssetTraps","SafeXcmVersion","SupportedVersion","VersionNotifiers","VersionNotifyTargets","VersionDiscoveryQueue","CurrentMigration","RemoteLockedFungibles","LockedFungibles","XcmExecutionSuspended","ShouldRecordXcm","RecordedXcm","AuthorizedAliases","PolkadotXcm","CumulusXcm","BookStateFor","ServiceHead","Pages","MessageQueue","Statement","TemplatePallet","Revive","storage","remark","set_heap_pages","set_code","set_code_without_checks","set_storage","kill_storage","kill_prefix","remark_with_event","authorize_upgrade","authorize_upgrade_without_checks","apply_authorized_upgrade","set_validation_data","sudo_send_upward_message","set","transfer_allow_death","force_transfer","transfer_keep_alive","transfer_all","force_unreserve","upgrade_accounts","force_set_balance","force_adjust_total_issuance","burn","sudo","sudo_unchecked_weight","set_key","sudo_as","remove_key","set_invulnerables","set_desired_candidates","set_candidacy_bond","register_as_candidate","leave_intent","add_invulnerable","remove_invulnerable","update_bond","take_candidate_slot","set_keys","purge_keys","suspend_xcm_execution","resume_xcm_execution","update_suspend_threshold","update_drop_threshold","update_resume_threshold","send","teleport_assets","reserve_transfer_assets","execute","force_xcm_version","force_default_xcm_version","force_subscribe_version_notify","force_unsubscribe_version_notify","limited_reserve_transfer_assets","limited_teleport_assets","force_suspension","transfer_assets","claim_assets","transfer_assets_using_type_and_then","add_authorized_alias","remove_authorized_alias","remove_all_authorized_aliases","reap_page","execute_overweight","eth_transact","call","instantiate","upload_code","tx","ExtrinsicSuccess","ExtrinsicFailed","CodeUpdated","NewAccount","KilledAccount","Remarked","UpgradeAuthorized","RejectedInvalidAuthorizedUpgrade","ValidationFunctionStored","ValidationFunctionApplied","ValidationFunctionDiscarded","DownwardMessagesReceived","DownwardMessagesProcessed","UpwardMessageSent","Endowed","DustLost","Transfer","BalanceSet","Reserved","Unreserved","ReserveRepatriated","Deposit","Withdraw","Slashed","Minted","MintedCredit","Burned","BurnedDebt","Suspended","Restored","Upgraded","Issued","Rescinded","Locked","Unlocked","Frozen","Thawed","TotalIssuanceForced","Held","BurnedHeld","TransferOnHold","TransferAndHold","Released","Unexpected","TransactionFeePaid","Sudid","KeyChanged","KeyRemoved","SudoAsDone","NewInvulnerables","InvulnerableAdded","InvulnerableRemoved","NewDesiredCandidates","NewCandidacyBond","CandidateAdded","CandidateBondUpdated","CandidateRemoved","CandidateReplaced","InvalidInvulnerableSkipped","NewSession","NewQueued","ValidatorDisabled","ValidatorReenabled","XcmpMessageSent","Attempted","Sent","SendFailed","ProcessXcmError","UnexpectedResponse","ResponseReady","Notified","NotifyOverweight","NotifyDispatchError","NotifyDecodeFailed","InvalidResponder","InvalidResponderVersion","ResponseTaken","AssetsTrapped","VersionChangeNotified","SupportedVersionChanged","NotifyTargetSendFail","NotifyTargetMigrationFail","InvalidQuerierVersion","InvalidQuerier","VersionNotifyStarted","VersionNotifyRequested","VersionNotifyUnrequested","FeesPaid","AssetsClaimed","VersionMigrationFinished","AliasAuthorized","AliasAuthorizationRemoved","AliasesAuthorizationsRemoved","InvalidFormat","UnsupportedVersion","ExecutedDownward","ProcessingFailed","Processed","OverweightEnqueued","PageReaped","events","BlockWeights","BlockLength","BlockHashCount","DbWeight","Version","SS58Prefix","SelfParaId","MinimumPeriod","ExistentialDeposit","MaxLocks","MaxReserves","MaxFreezes","OperationalFeeMultiplier","PotId","MaxCandidates","MinEligibleCollators","MaxInvulnerables","KickThreshold","pot_account","KeyDeposit","SlotDuration","MaxInboundSuspended","MaxActiveOutboundChannels","MaxPageSize","UniversalLocation","AdvertisedXcmVersion","MaxLockers","MaxRemoteLockConsumers","HeapSize","MaxStale","ServiceWeight","IdleMaxServiceWeight","constants","viewFns","slot_duration","authorities","AuraApi","can_build_upon","AuraUnincludedSegmentApi","version","execute_block","initialize_block","Core","metadata","metadata_at_version","metadata_versions","Metadata","apply_extrinsic","finalize_block","inherent_extrinsics","check_inherents","BlockBuilder","validate_transaction","TaggedTransactionQueue","offchain_worker","OffchainWorkerApi","generate_session_keys","decode_session_keys","SessionKeys","account_nonce","AccountNonceApi","query_info","query_fee_details","query_weight_to_fee","query_length_to_fee","TransactionPaymentApi","query_call_info","query_call_fee_details","TransactionPaymentCallApi","collect_collation_info","CollectCollationInfo","build_state","get_preset","preset_names","GenesisBuilder","apis","Utility","SkipFeelessPayment","ProofChecked","TransactionStorage"]]`); + [minified, commonTrees, tokens] = JSON.parse(`[{"stack_template":{"120":{"18":{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":1,"7":6,"8":7,"9":8,"10":1,"11":9,"12":10,"13":2,"14":2,"15":11,"16":12,"17":13,"AllExtrinsicsLen":1},"46":{"19":33,"20":34,"21":35,"22":35,"23":36,"24":2,"25":1,"26":37,"27":38,"28":39,"29":40,"30":41,"31":6,"32":42,"33":1,"34":43,"35":1,"36":43,"37":44,"38":39,"39":39,"40":39,"41":45,"42":1,"43":13,"44":13,"45":35},"49":0,"51":1,"52":2,"59":{"0":53,"53":45,"54":45,"55":54,"56":55,"57":56,"58":57},"63":3,"65":4,"67":5,"73":6,"82":7,"85":8,"87":9,"95":{"88":115,"89":116,"90":117,"91":5,"92":118,"93":2,"94":119},"111":{"96":45,"97":122,"98":123,"99":1,"100":124,"101":125,"102":126,"103":127,"104":128,"105":129,"106":130,"107":2,"108":2,"109":131,"110":132},"112":2,"116":10,"117":2,"118":{"Claims":182},"119":{"4":4,"PristineCode":185,"CodeInfoOf":186,"AccountInfoOf":187,"ImmutableDataOf":188,"DeletionQueue":5,"DeletionQueueCounter":189,"OriginalAccount":190,"EthereumBlock":191,"ReceiptInfoData":192,"EthBlockBuilderIR":193,"EthBlockBuilderFirstValues":194,"DebugSettingsOf":195}},"188":{"18":11,"46":12,"49":13,"51":2,"52":2,"59":14,"63":2,"65":{"144":82,"145":83,"146":84,"147":85,"148":86},"67":2,"73":15,"82":16,"85":2,"87":2,"95":17,"111":18,"112":2,"116":19,"117":2,"118":{"create_claim":183,"revoke_claim":183},"119":{"123":204,"184":196,"185":197,"186":198,"187":203,"instantiate_with_code":199,"eth_instantiate_with_code":200,"eth_call":201,"eth_substrate_call":202,"remove_code":24,"map_account":86,"unmap_account":86,"dispatch_as_fallback_account":82}},"289":{"18":{"189":25,"190":26,"191":27,"192":28,"193":28,"194":29,"195":30,"196":31},"46":20,"49":2,"51":2,"52":2,"59":{"203":66,"204":67,"205":68,"206":69,"207":70,"208":70,"209":71,"210":70,"211":70,"212":70,"213":70,"214":72,"215":70,"216":72,"217":70,"218":70,"219":73,"220":72,"221":72,"222":70,"223":70,"224":70,"225":70,"226":74,"227":75,"228":75,"229":76,"230":77,"231":75,"232":78},"63":21,"65":{"234":87,"235":88,"236":27,"237":87},"67":2,"73":22,"82":23,"85":2,"87":2,"95":24,"111":25,"112":26,"116":27,"117":{"NewStatement":181},"118":{"ClaimCreated":184,"ClaimRevoked":184},"119":{"ContractEmitted":205,"Instantiated":206,"EthExtrinsicRevert":207}},"322":{"18":{"290":14,"291":15,"292":1,"293":16,"294":17,"295":1},"46":28,"49":29,"51":2,"52":2,"59":30,"63":31,"65":2,"67":2,"73":32,"82":33,"85":34,"87":2,"95":35,"111":36,"112":2,"116":37,"117":{"StatementCost":45,"ByteCost":45,"MinAllowedStatements":1,"MaxAllowedStatements":1,"MinAllowedBytes":1,"MaxAllowedBytes":1},"118":2,"119":{"DepositPerByte":45,"DepositPerItem":45,"DepositPerChildTrieItem":45,"CodeHashLockupDepositPercent":1,"UnsafeUnstableInterface":2,"AllowEVMBytecode":2,"ChainId":45,"NativeToEthRatio":1,"MaxEthExtrinsicWeight":45,"DebugEnabled":2,"GasScale":1}},"323":{"18":2,"46":2,"49":2,"51":2,"52":2,"59":2,"63":2,"65":2,"67":2,"73":2,"82":2,"85":2,"87":2,"95":2,"111":2,"112":2,"116":2,"117":2,"118":2,"119":2},"365":{"326":38,"328":39,"332":40,"336":41,"341":{"337":218,"338":219,"339":220,"340":221},"343":42,"345":43,"348":{"346":224,"347":225},"350":44,"355":45,"358":{"353":229,"354":230,"356":231,"357":232},"360":46,"364":47,"RuntimeViewFunction":{"execute_view_function":217},"ValidateStatement":{"validate_statement":234},"ReviveApi":{"184":246,"185":244,"186":245,"187":248,"eth_block":238,"eth_block_hash":239,"eth_receipt_data":240,"block_gas_limit":241,"balance":242,"gas_price":241,"nonce":243,"eth_transact_with_config":247,"get_storage":249,"get_storage_var_key":250,"trace_block":251,"trace_tx":252,"trace_call":253,"block_author":254,"address":255,"account_id":256,"runtime_pallets_address":254,"code":257,"new_balance_with_dust":258}}},"bulletin":{"120":{"18":{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":1,"7":6,"8":7,"9":259,"10":1,"11":9,"12":10,"13":2,"14":2,"15":11,"16":12,"17":13,"BlockSize":1,"BlocksTillUpgrade":1},"46":{"19":33,"20":34,"21":35,"22":35,"23":36,"24":2,"25":1,"26":37,"27":38,"28":39,"29":40,"30":41,"31":6,"32":42,"33":1,"34":43,"35":1,"36":43,"37":44,"38":39,"39":39,"40":39,"41":45,"42":1,"43":13,"44":13,"45":35,"BlockWeightMode":264,"PreviousCoreCount":1,"PendingApprovedPeer":35,"PoVMessagesTracker":265},"49":0,"51":1,"52":2,"59":{"0":53,"53":45,"54":45,"55":54,"56":55,"57":288,"58":57},"63":3,"65":4,"67":5,"73":6,"82":7,"85":8,"87":9,"95":{"88":115,"89":322,"90":117,"91":5,"92":118,"93":2,"94":119},"111":{"96":45,"97":122,"98":123,"99":1,"100":124,"101":125,"102":126,"103":127,"104":128,"105":129,"106":130,"107":2,"108":2,"109":131,"110":323},"112":2,"116":10,"366":2,"367":{"Cursor":275,"Historic":276},"368":2,"370":{"369":2,"Authorizations":293,"AllowedAuthorizers":294,"Transactions":295,"ByteFee":45,"EntryFee":45,"RetentionPeriod":1,"BlockTransactions":296,"TransactionByContentHash":297},"371":2,"372":{"Renewals":312,"PendingRenewals":313,"PermanentStorageUsed":45}},"188":{"18":11,"46":12,"49":13,"51":2,"52":2,"59":14,"63":2,"65":{"144":324,"145":269,"146":84,"147":325,"148":86},"67":2,"73":15,"82":16,"85":2,"87":2,"95":17,"111":18,"112":2,"116":19,"366":{"batch":266,"as_derivative":267,"batch_all":266,"dispatch_as":268,"force_batch":266,"with_weight":269,"if_else":270,"dispatch_as_fallible":268},"367":{"force_set_cursor":281,"force_set_active_cursor":282,"force_onboard_mbms":86,"clear_historic":283},"368":2,"370":{"store":299,"store_with_cid_config":300,"authorize_account":301,"authorize_preimage":302,"remove_expired_account_authorization":96,"remove_expired_preimage_authorization":303,"refresh_account_authorization":96,"refresh_preimage_authorization":303,"apply_block_inherents":304,"add_authorizer":305,"remove_authorizer":96,"remove_exhausted_authorizer":96},"371":{"promote":310,"promote_v2":311},"372":{"renew":314,"force_renew":314,"enable_auto_renew":303,"disable_auto_renew":303,"process_pending_renewals":86}},"289":{"18":{"189":25,"190":261,"191":262,"192":28,"193":28,"194":29,"195":30,"196":263},"46":20,"49":2,"51":2,"52":2,"59":{"203":66,"204":67,"205":68,"206":69,"207":70,"208":70,"209":71,"210":70,"211":70,"212":70,"213":70,"214":72,"215":70,"216":72,"217":70,"218":70,"219":73,"220":72,"221":72,"222":70,"223":70,"224":70,"225":70,"226":74,"227":289,"228":289,"229":290,"230":291,"231":289,"232":78},"63":21,"65":{"234":326,"235":88,"236":27,"237":326},"67":2,"73":22,"82":23,"85":2,"87":2,"95":24,"111":25,"112":26,"116":27,"366":{"BatchInterrupted":271,"BatchCompleted":27,"BatchCompletedWithErrors":27,"ItemCompleted":27,"ItemFailed":272,"DispatchedAs":273,"IfElseMainSuccess":27,"IfElseFallbackCalled":274},"367":{"UpgradeStarted":284,"UpgradeCompleted":27,"UpgradeFailed":27,"MigrationSkipped":285,"MigrationAdvanced":286,"MigrationCompleted":286,"MigrationFailed":286,"HistoricCleared":287},"368":{"FeeSkipped":292},"370":{"369":27,"Stored":306,"AccountAuthorized":307,"AccountAuthorizationRefreshed":73,"PreimageAuthorized":308,"PreimageAuthorizationRefreshed":309,"ExpiredAccountAuthorizationRemoved":73,"ExpiredPreimageAuthorizationRemoved":309,"AuthorizerAdded":73,"AuthorizerRemoved":73,"ExhaustedAuthorizerRemoved":73},"371":2,"372":{"Renewed":315,"RenewalEnabled":316,"AutoRenewalDisabled":317,"DataRenewed":318,"RenewalFailed":319,"PermanentStorageUsedUpdated":320,"PermanentStorageNearCap":321}},"322":{"18":{"290":14,"291":260,"292":1,"293":16,"294":17,"295":1},"46":28,"49":29,"51":2,"52":2,"59":30,"63":31,"65":2,"67":2,"73":32,"82":33,"85":34,"87":2,"95":35,"111":36,"112":2,"116":37,"366":{"batched_calls_limit":1},"367":{"CursorMaxLen":1,"IdentifierMaxLen":1},"368":2,"370":{"MaxBlockTransactions":1,"MaxTransactionSize":1,"AuthorizationPeriod":1,"StoreTxParams":298,"AuthorizeTxParams":298,"RemoveExpiredAccountAuthorizationTxParams":298,"RemoveExpiredPreimageAuthorizationTxParams":298,"RemoveExhaustedAuthorizerTxParams":298},"371":{"SubmitTimestampTolerance":45,"PromoteTxParams":298},"372":{"MaxPermanentStorageSize":45,"RenewTxParams":298}},"323":{"18":2,"46":2,"49":2,"51":2,"52":2,"59":2,"63":2,"65":2,"67":2,"73":2,"82":2,"85":2,"87":2,"95":2,"111":2,"112":2,"116":2,"366":2,"367":{"ongoing_status":277,"progress":278,"affected_prefixes":279,"status":280},"368":2,"370":2,"371":2,"372":2},"365":{"326":38,"328":39,"332":40,"336":41,"341":{"337":328,"338":219,"339":220,"340":221},"343":42,"345":43,"348":{"346":329,"347":225},"350":44,"355":45,"358":{"353":229,"354":230,"356":330,"357":331},"360":46,"364":47,"RelayParentOffsetApi":{"relay_parent_offset":327,"max_claim_queue_offset":327},"XcmPaymentApi":{"query_acceptable_payment_assets":332,"query_xcm_weight":333,"query_weight_to_asset_fee":334,"query_delivery_fees":335},"DryRunApi":{"dry_run_call":336,"dry_run_xcm":337},"LocationToAccountApi":{"convert_location":338},"TrustedQueryApi":{"is_trusted_reserve":339,"is_trusted_teleporter":339},"AuthorizedAliasersApi":{"authorized_aliasers":340,"is_authorized_alias":341},"TransactionStorageApi":{"retention_period":327,"indexed_transactions":342},"HopRuntimeApi":{"max_promotion_size":327,"can_account_promote":343,"create_promotion_extrinsic":344,"is_promoted_on_chain":345},"BulletinTransactionStorageApi":{"account_authorization":346,"can_store":347,"can_renew":348},"GetParachainInfo":{"parachain_id":327}}}},[{"47":45,"48":2},{"50":1},{},{"60":45,"61":79,"62":45},{"64":81},{"66":81},{"68":89,"69":90,"70":91,"71":1,"72":45},{"74":89,"75":1,"76":2,"77":105,"78":106,"79":107,"80":108,"81":109},{"83":113,"84":45},{"83":113,"86":114},{"113":171,"114":172,"115":173},{"121":18,"122":19,"123":20,"124":20,"125":21,"126":22,"127":23,"128":18,"129":24,"130":24,"131":20},{"132":46,"133":47},{"134":52},{"135":58,"136":59,"137":58,"138":60,"139":61,"140":62,"141":63,"142":64,"143":65},{"149":93,"150":94,"151":95,"152":86,"153":86,"154":96,"155":96,"156":97,"157":98},{"158":110,"159":86},{"160":86,"161":86,"162":120,"163":120,"164":120},{"165":134,"166":135,"167":135,"168":136,"169":137,"170":138,"171":139,"172":139,"173":140,"174":140,"175":141,"176":140,"177":142,"178":143,"179":144,"180":145,"181":86},{"182":175,"183":176},{"197":27,"198":48,"199":27,"200":49,"201":50,"202":51},{"233":80},{"238":99,"239":100,"240":100,"241":101,"242":102,"243":103,"244":103,"245":100,"246":104,"247":100},{"248":111,"249":27,"250":112,"251":112},{"252":121},{"253":146,"254":147,"255":148,"256":149,"257":150,"258":151,"259":152,"260":153,"261":152,"262":152,"263":154,"264":150,"265":155,"266":156,"267":157,"268":158,"269":159,"270":160,"271":150,"272":161,"273":162,"274":162,"275":162,"276":163,"277":156,"278":164,"279":165,"280":166,"281":167},{"282":169,"283":169,"284":170},{"285":177,"286":178,"287":179,"288":180},{"296":1},{"297":45},{"298":45,"299":1,"300":1,"301":1},{"302":1},{"303":92,"304":1,"305":1,"306":1,"307":1,"308":81},{"309":45},{"310":45},{"311":1,"312":1,"313":1},{"314":133,"315":1,"316":1,"317":1},{"318":1,"319":1,"320":174,"321":174},{"324":208,"325":209},{"327":210},{"329":211,"330":212,"331":213},{"333":214,"334":215,"335":216},{"342":222},{"344":223},{"349":226},{"351":227,"352":228,"353":229,"354":230},{"359":233},{"361":235,"362":236,"363":237}],["Account","ExtrinsicCount","InherentsApplied","BlockWeight","BlockHash","ExtrinsicData","Number","ParentHash","Digest","Events","EventCount","EventTopics","LastRuntimeUpgrade","UpgradedToU32RefCount","UpgradedToTripleRefCount","ExecutionPhase","AuthorizedUpgrade","ExtrinsicWeightReclaimed","System","UnincludedSegment","AggregatedUnincludedSegment","PendingValidationCode","NewValidationCode","ValidationData","DidSetValidationCode","LastRelayChainBlockNumber","UpgradeRestrictionSignal","UpgradeGoAhead","RelayStateProof","RelevantMessagingState","HostConfiguration","LastDmqMqcHead","LastHrmpMqcHeads","ProcessedDownwardMessages","LastProcessedDownwardMessage","HrmpWatermark","LastProcessedHrmpMessage","HrmpOutboundMessages","UpwardMessages","PendingUpwardMessages","PendingUpwardSignals","UpwardDeliveryFeeFactor","AnnouncedHrmpMessagesPerCandidate","ReservedXcmpWeightOverride","ReservedDmpWeightOverride","CustomValidationHeadData","ParachainSystem","Now","DidUpdate","Timestamp","ParachainId","ParachainInfo","WeightReclaim","TotalIssuance","InactiveIssuance","Locks","Reserves","Holds","Freezes","Balances","NextFeeMultiplier","StorageVersion","TxPaymentCredit","TransactionPayment","Key","Sudo","Author","Authorship","Invulnerables","CandidateList","LastAuthoredBlock","DesiredCandidates","CandidacyBond","CollatorSelection","Validators","CurrentIndex","QueuedChanged","QueuedKeys","DisabledValidators","NextKeys","KeyOwner","ExternallySetKeys","Session","Authorities","CurrentSlot","Aura","RelaySlotInfo","AuraExt","InboundXcmpSuspended","OutboundXcmpStatus","OutboundXcmpMessages","SignalMessages","QueueConfig","QueueSuspended","DeliveryFeeFactor","XcmpQueue","QueryCounter","Queries","AssetTraps","SafeXcmVersion","SupportedVersion","VersionNotifiers","VersionNotifyTargets","VersionDiscoveryQueue","CurrentMigration","RemoteLockedFungibles","LockedFungibles","XcmExecutionSuspended","ShouldRecordXcm","RecordedXcm","AuthorizedAliases","PolkadotXcm","CumulusXcm","BookStateFor","ServiceHead","Pages","MessageQueue","Statement","TemplatePallet","Revive","storage","remark","set_heap_pages","set_code","set_code_without_checks","set_storage","kill_storage","kill_prefix","remark_with_event","authorize_upgrade","authorize_upgrade_without_checks","apply_authorized_upgrade","set_validation_data","sudo_send_upward_message","set","transfer_allow_death","force_transfer","transfer_keep_alive","transfer_all","force_unreserve","upgrade_accounts","force_set_balance","force_adjust_total_issuance","burn","sudo","sudo_unchecked_weight","set_key","sudo_as","remove_key","set_invulnerables","set_desired_candidates","set_candidacy_bond","register_as_candidate","leave_intent","add_invulnerable","remove_invulnerable","update_bond","take_candidate_slot","set_keys","purge_keys","suspend_xcm_execution","resume_xcm_execution","update_suspend_threshold","update_drop_threshold","update_resume_threshold","send","teleport_assets","reserve_transfer_assets","execute","force_xcm_version","force_default_xcm_version","force_subscribe_version_notify","force_unsubscribe_version_notify","limited_reserve_transfer_assets","limited_teleport_assets","force_suspension","transfer_assets","claim_assets","transfer_assets_using_type_and_then","add_authorized_alias","remove_authorized_alias","remove_all_authorized_aliases","reap_page","execute_overweight","eth_transact","call","instantiate","upload_code","tx","ExtrinsicSuccess","ExtrinsicFailed","CodeUpdated","NewAccount","KilledAccount","Remarked","UpgradeAuthorized","RejectedInvalidAuthorizedUpgrade","ValidationFunctionStored","ValidationFunctionApplied","ValidationFunctionDiscarded","DownwardMessagesReceived","DownwardMessagesProcessed","UpwardMessageSent","Endowed","DustLost","Transfer","BalanceSet","Reserved","Unreserved","ReserveRepatriated","Deposit","Withdraw","Slashed","Minted","MintedCredit","Burned","BurnedDebt","Suspended","Restored","Upgraded","Issued","Rescinded","Locked","Unlocked","Frozen","Thawed","TotalIssuanceForced","Held","BurnedHeld","TransferOnHold","TransferAndHold","Released","Unexpected","TransactionFeePaid","Sudid","KeyChanged","KeyRemoved","SudoAsDone","NewInvulnerables","InvulnerableAdded","InvulnerableRemoved","NewDesiredCandidates","NewCandidacyBond","CandidateAdded","CandidateBondUpdated","CandidateRemoved","CandidateReplaced","InvalidInvulnerableSkipped","NewSession","NewQueued","ValidatorDisabled","ValidatorReenabled","XcmpMessageSent","Attempted","Sent","SendFailed","ProcessXcmError","UnexpectedResponse","ResponseReady","Notified","NotifyOverweight","NotifyDispatchError","NotifyDecodeFailed","InvalidResponder","InvalidResponderVersion","ResponseTaken","AssetsTrapped","VersionChangeNotified","SupportedVersionChanged","NotifyTargetSendFail","NotifyTargetMigrationFail","InvalidQuerierVersion","InvalidQuerier","VersionNotifyStarted","VersionNotifyRequested","VersionNotifyUnrequested","FeesPaid","AssetsClaimed","VersionMigrationFinished","AliasAuthorized","AliasAuthorizationRemoved","AliasesAuthorizationsRemoved","InvalidFormat","UnsupportedVersion","ExecutedDownward","ProcessingFailed","Processed","OverweightEnqueued","PageReaped","events","BlockWeights","BlockLength","BlockHashCount","DbWeight","Version","SS58Prefix","SelfParaId","MinimumPeriod","ExistentialDeposit","MaxLocks","MaxReserves","MaxFreezes","OperationalFeeMultiplier","PotId","MaxCandidates","MinEligibleCollators","MaxInvulnerables","KickThreshold","pot_account","KeyDeposit","SlotDuration","MaxInboundSuspended","MaxActiveOutboundChannels","MaxPageSize","UniversalLocation","AdvertisedXcmVersion","MaxLockers","MaxRemoteLockConsumers","HeapSize","MaxStale","ServiceWeight","IdleMaxServiceWeight","constants","viewFns","slot_duration","authorities","AuraApi","can_build_upon","AuraUnincludedSegmentApi","version","execute_block","initialize_block","Core","metadata","metadata_at_version","metadata_versions","Metadata","apply_extrinsic","finalize_block","inherent_extrinsics","check_inherents","BlockBuilder","validate_transaction","TaggedTransactionQueue","offchain_worker","OffchainWorkerApi","generate_session_keys","decode_session_keys","SessionKeys","account_nonce","AccountNonceApi","query_info","query_fee_details","query_weight_to_fee","query_length_to_fee","TransactionPaymentApi","query_call_info","query_call_fee_details","TransactionPaymentCallApi","collect_collation_info","CollectCollationInfo","build_state","get_preset","preset_names","GenesisBuilder","apis","Utility","MultiBlockMigrations","SkipFeelessPayment","ProofChecked","TransactionStorage","HopPromotion","DataRenewal"]]`); replaceTokens = (obj) => Object.fromEntries( Object.entries(obj).map(([key, value]) => { const unwrappedValue = typeof value === "object" ? replaceTokens(value) : value; @@ -66,7 +66,7 @@ var content, metadataTypes_default; var init_metadataTypes = __esm({ ".papi/descriptors/src/metadataTypes.ts"() { "use strict"; - content = "3QQAAAAQAQEFAAQBAQUAFAEBBQAcAAQAIAAEACQBAQUAIAEBBQAwAQEFABkCACAAIQIBAQUAKQIBAQUANAEBBQAtAgEBBQAYAQEFADkCAQEFAD0CAQEFAEECAQEFAE0CAQAEGHJlbWFyayQBAQUBAAQUcGFnZXMIAQEFAQAEEGNvZGUkAQEFAQAEFGl0ZW1zVQIBAQUBAAQQa2V5c1kCAQEFAQAIGHByZWZpeCQcc3Via2V5cwQBAQUBAAQkY29kZV9oYXNoIAEBBQEBBQEABDRkaXNwYXRjaF9pbmZvQAEBBQEACDhkaXNwYXRjaF9lcnJvcog0ZGlzcGF0Y2hfaW5mb0ABAQUBAQUBAQUBAAQcYWNjb3VudAABAQUBAAgYc2VuZGVyABBoYXNoIAEBBQEACCRjb2RlX2hhc2ggNGNoZWNrX3ZlcnNpb24UAQEFAQAIJGNvZGVfaGFzaCAUZXJyb3KIAQEFAQEFAQEFAHkCAQEFAH0CAQEFACQBAQUAgQIBAQUAiQIBAQUAcQIBAQUAWQIBAQUAnQIBAQUApQIBAQUArQIBAQUAsQIBAQUAuQIBAQUACAEACBBkYXRhxQJUaW5ib3VuZF9tZXNzYWdlc19kYXRh9QIBAQUBAAQcbWVzc2FnZSQBAQUBAQUBAARUcmVsYXlfY2hhaW5fYmxvY2tfbnVtBAEBBQEABBRjb3VudAQBAQUBAAgsd2VpZ2h0X3VzZWQYIGRtcV9oZWFkIAEBBQEABDBtZXNzYWdlX2hhc2iQAQAEDG5vdwgBAQUAAAAMAAAAAQMAAAAJAwAAABEDAAAAGQMBAAgQZGVzdB0DFHZhbHVlCAEBBQEADBhzb3VyY2UdAxBkZXN0HQMUdmFsdWUIAQEFAQAIEGRlc3QdAyhrZWVwX2FsaXZlFAEBBQEACAx3aG8dAxhhbW91bnQIAQEFAQAEDHdob8gBAQUBAAgMd2hvHQMgbmV3X2ZyZWUIAQEFAQAIJGRpcmVjdGlvbiEDFGRlbHRhCAEBBQEACBR2YWx1ZQgoa2VlcF9hbGl2ZRQBAQUBAQUBAAgcYWNjb3VudAAwZnJlZV9iYWxhbmNlCAEBBQEACBxhY2NvdW50ABhhbW91bnQIAQEFAQAMEGZyb20ACHRvABhhbW91bnQIAQEFAQAIDHdobwAQZnJlZQgBAQUBAAgMd2hvABhhbW91bnQIAQEFAQAQEGZyb20ACHRvABhhbW91bnQISGRlc3RpbmF0aW9uX3N0YXR1c5gBAQUBAAQYYW1vdW50CAEBBQEABAx3aG8AAQEFAQAIDG9sZAgMbmV3CAEBBQEADBhyZWFzb26oDHdobwAYYW1vdW50CAEBBQEAEBhyZWFzb26oGHNvdXJjZQAQZGVzdAAYYW1vdW50CAEBBQEAEBhyZWFzb26oGHNvdXJjZQAQZGVzdAAsdHJhbnNmZXJyZWQIAQEFAKwBAQUAJQMBAQUBAAwMd2hvAChhY3R1YWxfZmVlCAx0aXAIAQEFAAABAAQQY2FsbKUDAQEFAQAIEGNhbGylAxh3ZWlnaHQYAQEFAQAEDG5ldx0DAQEFAQAIDHdobx0DEGNhbGylAwEBBQEBBQEBBQEBBQEABCxzdWRvX3Jlc3VsdLwBAQUBAAgMb2xkwAxuZXcAAQEFAMgBAQUArQMAAAAEAQEFACEBAQAEDG5ld8gBAQUBAAQMbWF4BAEBBQEABBBib25kCAEBBQEABAx3aG8AAQEFAQAELG5ld19kZXBvc2l0CAEBBQEACBxkZXBvc2l0CBh0YXJnZXQAAQEFAQEFAQAENGludnVsbmVyYWJsZXPIAQEFAQAEKGFjY291bnRfaWQAAQEFAQAESGRlc2lyZWRfY2FuZGlkYXRlcwQBAQUBAAQsYm9uZF9hbW91bnQIAQEFAQAIKGFjY291bnRfaWQAHGRlcG9zaXQIAQEFAQAMDG9sZAAMbmV3ABxkZXBvc2l0CAEBBQC1AwEBBQAhAgAAACAAuQMAAAAAALgBAAgQa2V5cyAUcHJvb2YkAQEFAQEFAQAENHNlc3Npb25faW5kZXgEAQEFAQAEJHZhbGlkYXRvcgABAQUACQIBAQUAvQMBAQUAwQMBAQUAzQMA0QMAJAEBBQDVAwAEAAgBAAQMbmV3BAEBBQEBBQEABDBtZXNzYWdlX2hhc2ggAAgA6QMAIAAEAO0DAAQA7QMACADtAwDxAwEBBQD5AwEBBQD9AwABBAANBAAAABUEAQEFAI0BAMEBACEEAQEFABkBAQAIEGRlc3TBARxtZXNzYWdlhQMBAQUBABAQZGVzdMEBLGJlbmVmaWNpYXJ5wQEYYXNzZXRzvQE4ZmVlX2Fzc2V0X2l0ZW0EAQEFAQAIHG1lc3NhZ2WFAyhtYXhfd2VpZ2h0GAEBBQEACCBsb2NhdGlvbh0BHHZlcnNpb24EAQEFAQAERG1heWJlX3hjbV92ZXJzaW9u8QEBAQUBAAQgbG9jYXRpb27BAQEBBQEAFBBkZXN0wQEsYmVuZWZpY2lhcnnBARhhc3NldHO9AThmZWVfYXNzZXRfaXRlbQQwd2VpZ2h0X2xpbWl0bQEBAQUBAAQkc3VzcGVuZGVkFAEBBQEACBhhc3NldHO9ASxiZW5lZmljaWFyecEBAQEFAQAcEGRlc3TBARhhc3NldHO9AVBhc3NldHNfdHJhbnNmZXJfdHlwZYkDOHJlbW90ZV9mZWVzX2lkjQNIZmVlc190cmFuc2Zlcl90eXBliQNIY3VzdG9tX3hjbV9vbl9kZXN0hQMwd2VpZ2h0X2xpbWl0bQEBAQUBAAgcYWxpYXNlcsEBHGV4cGlyZXPFAQEBBQEABBxhbGlhc2VywQEBAQUBAQUBAAQcb3V0Y29tZeABAQUBABAYb3JpZ2luHQEsZGVzdGluYXRpb24dARxtZXNzYWdljQEobWVzc2FnZV9pZCABAQUBABAYb3JpZ2luHQEsZGVzdGluYXRpb24dARRlcnJvcpEBKG1lc3NhZ2VfaWQgAQEFAQAMGG9yaWdpbh0BFGVycm9y2ChtZXNzYWdlX2lkIAEBBQEACBhvcmlnaW4dASBxdWVyeV9pZAgBAQUBAAggcXVlcnlfaWQIIHJlc3BvbnNlTQEBAQUBAAwgcXVlcnlfaWQIMHBhbGxldF9pbmRleAQoY2FsbF9pbmRleAQBAQUBABQgcXVlcnlfaWQIMHBhbGxldF9pbmRleAQoY2FsbF9pbmRleAQ0YWN0dWFsX3dlaWdodBhMbWF4X2J1ZGdldGVkX3dlaWdodBgBAQUBAAwYb3JpZ2luHQEgcXVlcnlfaWQIRGV4cGVjdGVkX2xvY2F0aW9uUQEBAQUBAAQgcXVlcnlfaWQIAQEFAQAMEGhhc2ggGG9yaWdpbh0BGGFzc2V0c70BAQEFAQAQLGRlc3RpbmF0aW9uHQEYcmVzdWx0BBBjb3N0NQEobWVzc2FnZV9pZCABAQUBAAggbG9jYXRpb24dARx2ZXJzaW9uBAEBBQEADCBsb2NhdGlvbh0BIHF1ZXJ5X2lkCBRlcnJvctgBAQUBAAggbG9jYXRpb27BASBxdWVyeV9pZAgBAQUBABAYb3JpZ2luHQEgcXVlcnlfaWQIQGV4cGVjdGVkX3F1ZXJpZXIdAVBtYXliZV9hY3R1YWxfcXVlcmllclEBAQEFAQAMLGRlc3RpbmF0aW9uHQEQY29zdDUBKG1lc3NhZ2VfaWQgAQEFAQAIGHBheWluZx0BEGZlZXM1AQEBBQEABBx2ZXJzaW9uBAEBBQEADBxhbGlhc2VyHQEYdGFyZ2V0HQEYZXhwaXJ5xQEBAQUBAAgcYWxpYXNlch0BGHRhcmdldB0BAQEFAQAEGHRhcmdldB0BAQEFAQAIFGluZGV4BBRlcnJvcmABAQUAIAEBBQEDCCDgANEBAC0EAQEFANEBADEEADUEAQEFAFkBAQAIOG1lc3NhZ2Vfb3JpZ2lu0QEocGFnZV9pbmRleAQBAQUBABA4bWVzc2FnZV9vcmlnaW7RARBwYWdlBBRpbmRleAQwd2VpZ2h0X2xpbWl0GAEBBQEBBQEADAhpZCAYb3JpZ2lu0QEUZXJyb3LVAQEBBQEAEAhpZCAYb3JpZ2lu0QEsd2VpZ2h0X3VzZWQYHHN1Y2Nlc3MUAQEFAQAQCGlkIBhvcmlnaW7RAShwYWdlX2luZGV4BDRtZXNzYWdlX2luZGV4BAEBBQEACBhvcmlnaW7RARRpbmRleAQBAQUBAAgcYWNjb3VudAAkc3RhdGVtZW50/QEAIAA5BAEABBBoYXNoIAEBBQEBBQEACAx3aG8AEGhhc2ggACAAJAAgAEEEAOwATQQA7AAkAQEFAFEEAOwAAAEBBQCxBAEBBQC5BAEBBQDBBAEBBQDFBAEBBQDJBAEABBxwYXlsb2FkJAEBBQEAFBBkZXN07BR2YWx1ZQgwd2VpZ2h0X2xpbWl0GFRzdG9yYWdlX2RlcG9zaXRfbGltaXQIEGRhdGEkAQEFAQAYFHZhbHVlCDB3ZWlnaHRfbGltaXQYVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgkY29kZV9oYXNoIBBkYXRhJBBzYWx0kAEBBQEAGBR2YWx1ZQgwd2VpZ2h0X2xpbWl0GFRzdG9yYWdlX2RlcG9zaXRfbGltaXQIEGNvZGUkEGRhdGEkEHNhbHSQAQEFAQAgFHZhbHVlnQMwd2VpZ2h0X2xpbWl0GDRldGhfZ2FzX2xpbWl0nQMQY29kZSQQZGF0YSRMdHJhbnNhY3Rpb25fZW5jb2RlZCRMZWZmZWN0aXZlX2dhc19wcmljZZ0DLGVuY29kZWRfbGVuBAEBBQEAIBBkZXN07BR2YWx1ZZ0DMHdlaWdodF9saW1pdBg0ZXRoX2dhc19saW1pdJ0DEGRhdGEkTHRyYW5zYWN0aW9uX2VuY29kZWQkTGVmZmVjdGl2ZV9nYXNfcHJpY2WdAyxlbmNvZGVkX2xlbgQBAQUBAAgQY2FsbKUDTHRyYW5zYWN0aW9uX2VuY29kZWQkAQEFAQAIEGNvZGUkVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgBAQUBAAgQZGVzdOwkY29kZV9oYXNoIAEBBQEBBQEADCBjb250cmFjdOwQZGF0YSQYdG9waWNzCQIBAQUBAAggZGVwbG95ZXLsIGNvbnRyYWN07AEBBQEABDhkaXNwYXRjaF9lcnJvcogBAwAACAEDAAAJAgEDCCAIABQBAwAATQIBAwTNBAC4AQMEvQIA0QQBAwAAJAEDBAQA+QEBAwAAwQMBAwjVBCQA3QQBAwQkAO0EAQMAAL0CAQME9QQAWQIBAwjNBPUEAPkEAQMM/QQkIAAFBQEDBL0CALgBAwT5AQAkAQMEJAARBQEDBAAABAEDCCQEABUFAQMIJAQAIQUBAwQYAAgBAwQEAAgBAwilAwQAFQUBAwilAwQAIQUBAwS9AgAlBQEDCCkF/QEANQUBAwQkADkFAQMEPQUA+QEBAwAAQQUBAwAAsQQBAwSdAwCQAQMAALkEAQMAAJ0DAQME7ACdAwEDBOwABAEDGADsCFkBxQEkAFEFAQMcAAhZAcUBVQUkkABhBQEDBG0FAHkFAQMIbQV9BQB5BQEDDAAkxQEAhQUBAwjsIACNBQEDCOwkAI0FAQMIzQShBQDZBQEDDM0EBKEFAN0FAQMIbQWhBQDhBQEDAADsAQMEAADsAQME7AAAAQME7AAkAQMEnQMA6QUBAQUAQQYBAQUARQYBAQUBAAg4ZGlzcGF0Y2hfZXJyb3L5BTRkaXNwYXRjaF9pbmZvQAEBBQEACCRjb2RlX2hhc2ggFGVycm9y+QUBAAQUY2FsbHNlBgEBBQEACBRpbmRleAQQY2FsbGEGAQEFAQAIJGFzX29yaWdpbikGEGNhbGxhBgEBBQEACBBjYWxsYQYYd2VpZ2h0GAEBBQEACBBtYWluYQYgZmFsbGJhY2thBgEBBQEBBQEACBRpbmRleAQUZXJyb3L5BQEBBQEABBRlcnJvcvkFAQEFAQAEGHJlc3VsdAEGAQEFAQAEKG1haW5fZXJyb3L5BQAAAG0GAQEFAQAMGHJlYXNvbg0GDHdobwAYYW1vdW50CAEBBQEAEBhyZWFzb24NBhhzb3VyY2UAEGRlc3QAGGFtb3VudAgBAQUBABAYcmVhc29uDQYYc291cmNlABBkZXN0ACx0cmFuc2ZlcnJlZAgBAQUBAAQYb3JpZ2luKQYAGQYAdQYABAB9BgEBBQB9BgEABBBkYXRhJAEBBQEACAxjaWRRBhBkYXRhJAEBBQEACBRibG9jawQUaW5kZXgEAQEFAQAEFHByb29mVQYBAQUBAAwMd2hvADB0cmFuc2FjdGlvbnMEFGJ5dGVzCAEBBQEACDBjb250ZW50X2hhc2ggIG1heF9zaXplCAEBBQEABDBjb250ZW50X2hhc2ggAQEFAQEFAQAMFGluZGV4BDBjb250ZW50X2hhc2ggDGNpZPkBAQEFAQAIFGluZGV4BDBjb250ZW50X2hhc2ggAQEFAQAMDHdobwAwdHJhbnNhY3Rpb25zBBRieXRlcwgBAQUBAAgwY29udGVudF9oYXNoICBtYXhfc2l6ZQgBAQUBAAQwY29udGVudF9oYXNoIADBAQCBBgEABBBjYWxsYQYBAQUBAAgMd2hvHQMQY2FsbGEGAQEFAQEFAQAELHN1ZG9fcmVzdWx0AQYBAwAABAEDBCQAhQYBAwgk+QEAiQYBAwhhBgQAFQUBAwhhBgQAIQUBAwQEAJUGAQMEhQMAmQYBAwgYjQMAnQYBAwzBAYUDjQMAoQYBAwwpBmEGBADNBgEDCMEBhQMA1QYBAwTBAQDdBgEDCOEGwQEA6QYBAwTBAQDxBgEDCMEBwQEA9Qb5BgEBAQIBAwAQEGZyZWUIIHJlc2VydmVkCBhmcm96ZW4IFGZsYWdzCAAUFG5vbmNlBCRjb25zdW1lcnMEJHByb3ZpZGVycwQsc3VmZmljaWVudHMEEGRhdGEMAQAACCByZWZfdGltZQgocHJvb2Zfc2l6ZQgADBhub3JtYWwYLG9wZXJhdGlvbmFsGCRtYW5kYXRvcnkYBQGABQAFARACFChQcmVSdW50aW1lAAMIKCQkQ29uc2Vuc3VzAAMIKCQQU2VhbAADCCgkFE90aGVyASRkUnVudGltZUVudmlyb25tZW50VXBkYXRlZAABBQQsAAIMOEFwcGx5RXh0cmluc2ljAQQwRmluYWxpemF0aW9uAAEFOEluaXRpYWxpemF0aW9uAAEFAgwYTm9ybWFsAAEFLE9wZXJhdGlvbmFsAAEFJE1hbmRhdG9yeQABBQIIDFllcwABBQhObwABBQAMGHdlaWdodBgUY2xhc3M4IHBheXNfZmVlPAIkPEludmFsaWRTcGVjTmFtZQABBWhTcGVjVmVyc2lvbk5lZWRzVG9JbmNyZWFzZQABBXRGYWlsZWRUb0V4dHJhY3RSdW50aW1lVmVyc2lvbgABBUxOb25EZWZhdWx0Q29tcG9zaXRlAAEFPE5vblplcm9SZWZDb3VudAABBTBDYWxsRmlsdGVyZWQAAQVsTXVsdGlCbG9ja01pZ3JhdGlvbnNPbmdvaW5nAAEFRE5vdGhpbmdBdXRob3JpemVkAAEFMFVuYXV0aG9yaXplZAABBQIYTE92ZXJsYXBwaW5nVXBncmFkZXMAAQVQUHJvaGliaXRlZEJ5UG9sa2Fkb3QAAQUYVG9vQmlnAAEFaFZhbGlkYXRpb25EYXRhTm90QXZhaWxhYmxlAAEFdEhvc3RDb25maWd1cmF0aW9uTm90QXZhaWxhYmxlAAEFME5vdFNjaGVkdWxlZAABBQIwOFZlc3RpbmdCYWxhbmNlAAEFVExpcXVpZGl0eVJlc3RyaWN0aW9ucwABBUxJbnN1ZmZpY2llbnRCYWxhbmNlAAEFSEV4aXN0ZW50aWFsRGVwb3NpdAABBTRFeHBlbmRhYmlsaXR5AAEFXEV4aXN0aW5nVmVzdGluZ1NjaGVkdWxlAAEFLERlYWRBY2NvdW50AAEFPFRvb01hbnlSZXNlcnZlcwABBTBUb29NYW55SG9sZHMAAQU4VG9vTWFueUZyZWV6ZXMAAQVMSXNzdWFuY2VEZWFjdGl2YXRlZAABBSREZWx0YVplcm8AAQUCBCxSZXF1aXJlU3VkbwABBQJERFRvb01hbnlDYW5kaWRhdGVzAAEFXFRvb0Zld0VsaWdpYmxlQ29sbGF0b3JzAAEFQEFscmVhZHlDYW5kaWRhdGUAAQUwTm90Q2FuZGlkYXRlAAEFUFRvb01hbnlJbnZ1bG5lcmFibGVzAAEFTEFscmVhZHlJbnZ1bG5lcmFibGUAAQU8Tm90SW52dWxuZXJhYmxlAAEFXE5vQXNzb2NpYXRlZFZhbGlkYXRvcklkAAEFWFZhbGlkYXRvck5vdFJlZ2lzdGVyZWQAAQVsSW5zZXJ0VG9DYW5kaWRhdGVMaXN0RmFpbGVkAAEFdFJlbW92ZUZyb21DYW5kaWRhdGVMaXN0RmFpbGVkAAEFNERlcG9zaXRUb29Mb3cAAQVkVXBkYXRlQ2FuZGlkYXRlTGlzdEZhaWxlZAABBUBJbnN1ZmZpY2llbnRCb25kAAEFUFRhcmdldElzTm90Q2FuZGlkYXRlAAEFQElkZW50aWNhbERlcG9zaXQAAQVASW52YWxpZFVucmVzZXJ2ZQABBQIUMEludmFsaWRQcm9vZgABBVxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAABBTREdXBsaWNhdGVkS2V5AAEFGE5vS2V5cwABBSROb0FjY291bnQAAQUCFDhCYWRRdWV1ZUNvbmZpZwABBUBBbHJlYWR5U3VzcGVuZGVkAAEFOEFscmVhZHlSZXN1bWVkAAEFdFRvb01hbnlBY3RpdmVPdXRib3VuZENoYW5uZWxzAAEFGFRvb0JpZwABBQKkIE92ZXJmbG93AAEFNFVuaW1wbGVtZW50ZWQAAQVgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAEFZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAQUwTG9jYXRpb25GdWxsAAEFVExvY2F0aW9uTm90SW52ZXJ0aWJsZQABBSRCYWRPcmlnaW4AAQU8SW52YWxpZExvY2F0aW9uAAEFNEFzc2V0Tm90Rm91bmQAAQVURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAEFPE5vdFdpdGhkcmF3YWJsZQABBUhMb2NhdGlvbkNhbm5vdEhvbGQAAQVURXhjZWVkc01heE1lc3NhZ2VTaXplAAEFWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQAAQUkVHJhbnNwb3J0AAEFKFVucm91dGFibGUAAQUwVW5rbm93bkNsYWltAAEFOEZhaWxlZFRvRGVjb2RlAAEFQE1heFdlaWdodEludmFsaWQAAQU4Tm90SG9sZGluZ0ZlZXMAAQUwVG9vRXhwZW5zaXZlAAEFEFRyYXAAAQVARXhwZWN0YXRpb25GYWxzZQABBThQYWxsZXROb3RGb3VuZAABBTBOYW1lTWlzbWF0Y2gAAQVMVmVyc2lvbkluY29tcGF0aWJsZQABBVBIb2xkaW5nV291bGRPdmVyZmxvdwABBSxFeHBvcnRFcnJvcgABBThSZWFuY2hvckZhaWxlZAABBRhOb0RlYWwAAQUoRmVlc05vdE1ldAABBSRMb2NrRXJyb3IAAQUwTm9QZXJtaXNzaW9uAAEFKFVuYW5jaG9yZWQAAQU4Tm90RGVwb3NpdGFibGUAAQU0VG9vTWFueUFzc2V0cwABBUxVbmhhbmRsZWRYY21WZXJzaW9uAAEFSFdlaWdodExpbWl0UmVhY2hlZAABBRxCYXJyaWVyAAEFTFdlaWdodE5vdENvbXB1dGFibGUAAQVERXhjZWVkc1N0YWNrTGltaXQAAQUCcCxVbnJlYWNoYWJsZQABBSxTZW5kRmFpbHVyZQABBSBGaWx0ZXJlZAABBUhVbndlaWdoYWJsZU1lc3NhZ2UAAQVgRGVzdGluYXRpb25Ob3RJbnZlcnRpYmxlAAEFFEVtcHR5AAEFOENhbm5vdFJlYW5jaG9yAAEFNFRvb01hbnlBc3NldHMAAQU0SW52YWxpZE9yaWdpbgABBShCYWRWZXJzaW9uAAEFLEJhZExvY2F0aW9uAAEFOE5vU3Vic2NyaXB0aW9uAAEFREFscmVhZHlTdWJzY3JpYmVkAAEFWENhbm5vdENoZWNrT3V0VGVsZXBvcnQAAQUoTG93QmFsYW5jZQABBTBUb29NYW55TG9ja3MAAQVMQWNjb3VudE5vdFNvdmVyZWlnbgABBShGZWVzTm90TWV0AAEFMExvY2tOb3RGb3VuZAABBRRJblVzZQABBWhJbnZhbGlkQXNzZXRVbmtub3duUmVzZXJ2ZQABBXhJbnZhbGlkQXNzZXRVbnN1cHBvcnRlZFJlc2VydmUAAQU8VG9vTWFueVJlc2VydmVzAAEFYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZQABBWBUb29NYW55QXV0aG9yaXplZEFsaWFzZXMAAQU0RXhwaXJlc0luUGFzdAABBTRBbGlhc05vdEZvdW5kAAEFhExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcgAACBRpbmRleAQUZXJyb3JgAiQsTm90UmVhcGFibGUAAQUYTm9QYWdlAAEFJE5vTWVzc2FnZQABBUBBbHJlYWR5UHJvY2Vzc2VkAAEFGFF1ZXVlZAABBUhJbnN1ZmZpY2llbnRXZWlnaHQAAQVgVGVtcG9yYXJpbHlVbnByb2Nlc3NhYmxlAAEFLFF1ZXVlUGF1c2VkAAEFTFJlY3Vyc2l2ZURpc2FsbG93ZWQAAQUCDDhBbHJlYWR5Q2xhaW1lZAABBTROb3RDbGFpbU93bmVyAAEFNENsYWltTm90Rm91bmQAAQUC4DxJbnZhbGlkU2NoZWR1bGUAAQVASW52YWxpZENhbGxGbGFncwABBSBPdXRPZkdhcwABBThUcmFuc2ZlckZhaWxlZAABBUxNYXhDYWxsRGVwdGhSZWFjaGVkAAEFQENvbnRyYWN0Tm90Rm91bmQAAQUwQ29kZU5vdEZvdW5kAAEFQENvZGVJbmZvTm90Rm91bmQAAQUsT3V0T2ZCb3VuZHMAAQU4RGVjb2RpbmdGYWlsZWQAAQU8Q29udHJhY3RUcmFwcGVkAAEFNFZhbHVlVG9vTGFyZ2UAAQVgVGVybWluYXRlZFdoaWxlUmVlbnRyYW50AAEFOElucHV0Rm9yd2FyZGVkAAEFNFRvb01hbnlUb3BpY3MAAQVERHVwbGljYXRlQ29udHJhY3QAAQVcVGVybWluYXRlZEluQ29uc3RydWN0b3IAAQVAUmVlbnRyYW5jZURlbmllZAABBTxSZWVudGVyZWRQYWxsZXQAAQVEU3RhdGVDaGFuZ2VEZW5pZWQAAQVwU3RvcmFnZURlcG9zaXROb3RFbm91Z2hGdW5kcwABBXBTdG9yYWdlRGVwb3NpdExpbWl0RXhoYXVzdGVkAAEFJENvZGVJblVzZQABBUBDb250cmFjdFJldmVydGVkAAEFMENvZGVSZWplY3RlZAABBTBCbG9iVG9vTGFyZ2UAAQVQU3RhdGljTWVtb3J5VG9vTGFyZ2UAAQVIQmFzaWNCbG9ja1Rvb0xhcmdlAAEFSEludmFsaWRJbnN0cnVjdGlvbgABBXhNYXhEZWxlZ2F0ZURlcGVuZGVuY2llc1JlYWNoZWQAAQVoRGVsZWdhdGVEZXBlbmRlbmN5Tm90Rm91bmQAAQV8RGVsZWdhdGVEZXBlbmRlbmN5QWxyZWFkeUV4aXN0cwABBYRDYW5ub3RBZGRTZWxmQXNEZWxlZ2F0ZURlcGVuZGVuY3kAAQVUT3V0T2ZUcmFuc2llbnRTdG9yYWdlAAEFOEludmFsaWRTeXNjYWxsAAEFTEludmFsaWRTdG9yYWdlRmxhZ3MAAQU8RXhlY3V0aW9uRmFpbGVkAAEFXEJhbGFuY2VDb252ZXJzaW9uRmFpbGVkAAEFWEludmFsaWRJbW11dGFibGVBY2Nlc3MAAQU8QWNjb3VudFVubWFwcGVkAAEFUEFjY291bnRBbHJlYWR5TWFwcGVkAAEFZEludmFsaWRHZW5lcmljVHJhbnNhY3Rpb24AAQVcUmVmY291bnRPdmVyT3JVbmRlcmZsb3cAAQVwVW5zdXBwb3J0ZWRQcmVjb21waWxlQWRkcmVzcwABBUBDYWxsRGF0YVRvb0xhcmdlAAEFSFJldHVybkRhdGFUb29MYXJnZQABBSxJbnZhbGlkSnVtcAABBThTdGFja1VuZGVyZmxvdwABBTRTdGFja092ZXJmbG93AAEFNFR4RmVlT3ZlcmRyYXcAAQVoRXZtQ29uc3RydWN0b3JOb25FbXB0eURhdGEAAQVYRXZtQ29uc3RydWN0ZWRGcm9tSGFzaAABBWxTdG9yYWdlUmVmdW5kTm90RW5vdWdoRnVuZHMAAQVMU3RvcmFnZVJlZnVuZExvY2tlZAABBWBQcmVjb21waWxlRGVsZWdhdGVEZW5pZWQAAQVMRWNkc2FSZWNvdmVyeUZhaWxlZAABBQJQGFN5c3RlbQFEPFBhcmFjaGFpblN5c3RlbQFIJFRpbWVzdGFtcAABBTRQYXJhY2hhaW5JbmZvAAEFNFdlaWdodFJlY2xhaW0AAQUgQmFsYW5jZXMBTEhUcmFuc2FjdGlvblBheW1lbnQAAQUQU3VkbwFQKEF1dGhvcnNoaXAAAQVEQ29sbGF0b3JTZWxlY3Rpb24BVBxTZXNzaW9uAVgQQXVyYQABBRxBdXJhRXh0AAEFJFhjbXBRdWV1ZQFcLFBvbGthZG90WGNtAWQoQ3VtdWx1c1hjbQABBTBNZXNzYWdlUXVldWUBaCRTdGF0ZW1lbnQAAQU4VGVtcGxhdGVQYWxsZXQBbBhSZXZpdmUBcAIoQEZ1bmRzVW5hdmFpbGFibGUAAQUwT25seVByb3ZpZGVyAAEFMEJlbG93TWluaW11bQABBTBDYW5ub3RDcmVhdGUAAQUwVW5rbm93bkFzc2V0AAEFGEZyb3plbgABBSxVbnN1cHBvcnRlZAABBUBDYW5ub3RDcmVhdGVIb2xkAAEFNE5vdEV4cGVuZGFibGUAAQUcQmxvY2tlZAABBQIMJFVuZGVyZmxvdwABBSBPdmVyZmxvdwABBThEaXZpc2lvbkJ5WmVybwABBQIIMExpbWl0UmVhY2hlZAABBRxOb0xheWVyAAEFAjhASW52YWxpZFN0YXRlUm9vdAABBUhJbmNvbXBsZXRlRGF0YWJhc2UAAQVQVmFsdWVBdEluY29tcGxldGVLZXkAAQUwRGVjb2RlckVycm9yAAEFLEludmFsaWRIYXNoAAEFMER1cGxpY2F0ZUtleQABBThFeHRyYW5lb3VzTm9kZQABBTxFeHRyYW5lb3VzVmFsdWUAAQVcRXh0cmFuZW91c0hhc2hSZWZlcmVuY2UAAQVUSW52YWxpZENoaWxkUmVmZXJlbmNlAAEFNFZhbHVlTWlzbWF0Y2gAAQU8SW5jb21wbGV0ZVByb29mAAEFMFJvb3RNaXNtYXRjaAABBSxEZWNvZGVFcnJvcgABBQI8FE90aGVyAAEFMENhbm5vdExvb2t1cAABBSRCYWRPcmlnaW4AAQUYTW9kdWxlAXREQ29uc3VtZXJSZW1haW5pbmcAAQUsTm9Qcm92aWRlcnMAAQVAVG9vTWFueUNvbnN1bWVycwABBRRUb2tlbgF4KEFyaXRobWV0aWMBfDRUcmFuc2FjdGlvbmFsAYAkRXhoYXVzdGVkAAEFKENvcnJ1cHRpb24AAQUsVW5hdmFpbGFibGUAAQU4Um9vdE5vdEFsbG93ZWQAAQUQVHJpZQGEAiBARXh0cmluc2ljU3VjY2VzcwAABDRkaXNwYXRjaF9pbmZvQDxFeHRyaW5zaWNGYWlsZWQAAAg4ZGlzcGF0Y2hfZXJyb3KINGRpc3BhdGNoX2luZm9ALENvZGVVcGRhdGVkAAEFKE5ld0FjY291bnQAAAQcYWNjb3VudAA0S2lsbGVkQWNjb3VudAAABBxhY2NvdW50ACBSZW1hcmtlZAAACBhzZW5kZXIAEGhhc2ggRFVwZ3JhZGVBdXRob3JpemVkAAAIJGNvZGVfaGFzaCA0Y2hlY2tfdmVyc2lvbhSAUmVqZWN0ZWRJbnZhbGlkQXV0aG9yaXplZFVwZ3JhZGUAAAgkY29kZV9oYXNoIBRlcnJvcogGIAIYYFZhbGlkYXRpb25GdW5jdGlvblN0b3JlZAABBWRWYWxpZGF0aW9uRnVuY3Rpb25BcHBsaWVkAAAEVHJlbGF5X2NoYWluX2Jsb2NrX251bQRsVmFsaWRhdGlvbkZ1bmN0aW9uRGlzY2FyZGVkAAEFYERvd253YXJkTWVzc2FnZXNSZWNlaXZlZAAABBRjb3VudARkRG93bndhcmRNZXNzYWdlc1Byb2Nlc3NlZAAACCx3ZWlnaHRfdXNlZBggZG1xX2hlYWQgRFVwd2FyZE1lc3NhZ2VTZW50AAAEMG1lc3NhZ2VfaGFzaJACCBBGcmVlAAEFIFJlc2VydmVkAAEFAgQQS2V5cwABBQIEOEF1dGhvcml6ZUFsaWFzAAEFAgxgQ29kZVVwbG9hZERlcG9zaXRSZXNlcnZlAAEFVFN0b3JhZ2VEZXBvc2l0UmVzZXJ2ZQABBThBZGRyZXNzTWFwcGluZwABBQIMHFNlc3Npb24BnCxQb2xrYWRvdFhjbQGgGFJldml2ZQGkAgg4QmFsYW5jZVVwZGF0ZWQAAQVURmFpbGVkVG9NdXRhdGVBY2NvdW50AAEFAngcRW5kb3dlZAAACBxhY2NvdW50ADBmcmVlX2JhbGFuY2UIIER1c3RMb3N0AAAIHGFjY291bnQAGGFtb3VudAggVHJhbnNmZXIAAAwQZnJvbQAIdG8AGGFtb3VudAgoQmFsYW5jZVNldAAACAx3aG8AEGZyZWUIIFJlc2VydmVkAAAIDHdobwAYYW1vdW50CChVbnJlc2VydmVkAAAIDHdobwAYYW1vdW50CEhSZXNlcnZlUmVwYXRyaWF0ZWQAABAQZnJvbQAIdG8AGGFtb3VudAhIZGVzdGluYXRpb25fc3RhdHVzmBxEZXBvc2l0AAAIDHdobwAYYW1vdW50CCBXaXRoZHJhdwAACAx3aG8AGGFtb3VudAgcU2xhc2hlZAAACAx3aG8AGGFtb3VudAgYTWludGVkAAAIDHdobwAYYW1vdW50CDBNaW50ZWRDcmVkaXQAAAQYYW1vdW50CBhCdXJuZWQAAAgMd2hvABhhbW91bnQIKEJ1cm5lZERlYnQAAAQYYW1vdW50CCRTdXNwZW5kZWQAAAgMd2hvABhhbW91bnQIIFJlc3RvcmVkAAAIDHdobwAYYW1vdW50CCBVcGdyYWRlZAAABAx3aG8AGElzc3VlZAAABBhhbW91bnQIJFJlc2NpbmRlZAAABBhhbW91bnQIGExvY2tlZAAACAx3aG8AGGFtb3VudAggVW5sb2NrZWQAAAgMd2hvABhhbW91bnQIGEZyb3plbgAACAx3aG8AGGFtb3VudAgYVGhhd2VkAAAIDHdobwAYYW1vdW50CExUb3RhbElzc3VhbmNlRm9yY2VkAAAIDG9sZAgMbmV3CBBIZWxkAAAMGHJlYXNvbqgMd2hvABhhbW91bnQIKEJ1cm5lZEhlbGQAAAwYcmVhc29uqAx3aG8AGGFtb3VudAg4VHJhbnNmZXJPbkhvbGQAABAYcmVhc29uqBhzb3VyY2UAEGRlc3QAGGFtb3VudAg8VHJhbnNmZXJBbmRIb2xkAAAQGHJlYXNvbqgYc291cmNlABBkZXN0ACx0cmFuc2ZlcnJlZAggUmVsZWFzZWQAAAwYcmVhc29uqAx3aG8AGGFtb3VudAgoVW5leHBlY3RlZAGsAgRIVHJhbnNhY3Rpb25GZWVQYWlkAAAMDHdobwAoYWN0dWFsX2ZlZQgMdGlwCAEFB7iIBgACEBRTdWRpZAAABCxzdWRvX3Jlc3VsdLwoS2V5Q2hhbmdlZAAACAxvbGTADG5ldwAoS2V5UmVtb3ZlZAABBShTdWRvQXNEb25lAAAELHN1ZG9fcmVzdWx0vAQAAAIoQE5ld0ludnVsbmVyYWJsZXMAAAQ0aW52dWxuZXJhYmxlc8hESW52dWxuZXJhYmxlQWRkZWQAAAQoYWNjb3VudF9pZABMSW52dWxuZXJhYmxlUmVtb3ZlZAAABChhY2NvdW50X2lkAFBOZXdEZXNpcmVkQ2FuZGlkYXRlcwAABEhkZXNpcmVkX2NhbmRpZGF0ZXMEQE5ld0NhbmRpZGFjeUJvbmQAAAQsYm9uZF9hbW91bnQIOENhbmRpZGF0ZUFkZGVkAAAIKGFjY291bnRfaWQAHGRlcG9zaXQIUENhbmRpZGF0ZUJvbmRVcGRhdGVkAAAIKGFjY291bnRfaWQAHGRlcG9zaXQIQENhbmRpZGF0ZVJlbW92ZWQAAAQoYWNjb3VudF9pZABEQ2FuZGlkYXRlUmVwbGFjZWQAAAwMb2xkAAxuZXcAHGRlcG9zaXQIaEludmFsaWRJbnZ1bG5lcmFibGVTa2lwcGVkAAAEKGFjY291bnRfaWQAAhAoTmV3U2Vzc2lvbgAABDRzZXNzaW9uX2luZGV4BCROZXdRdWV1ZWQAAQVEVmFsaWRhdG9yRGlzYWJsZWQAAAQkdmFsaWRhdG9yAEhWYWxpZGF0b3JSZWVuYWJsZWQAAAQkdmFsaWRhdG9yAAIEPFhjbXBNZXNzYWdlU2VudAAABDBtZXNzYWdlX2hhc2ggAqQgT3ZlcmZsb3cAAQU0VW5pbXBsZW1lbnRlZAABBWBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAQVkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgABBTBMb2NhdGlvbkZ1bGwAAQVUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAEFJEJhZE9yaWdpbgABBTxJbnZhbGlkTG9jYXRpb24AAQU0QXNzZXROb3RGb3VuZAABBVRGYWlsZWRUb1RyYW5zYWN0QXNzZXQAAQU8Tm90V2l0aGRyYXdhYmxlAAEFSExvY2F0aW9uQ2Fubm90SG9sZAABBVRFeGNlZWRzTWF4TWVzc2FnZVNpemUAAQVYRGVzdGluYXRpb25VbnN1cHBvcnRlZAABBSRUcmFuc3BvcnQAAQUoVW5yb3V0YWJsZQABBTBVbmtub3duQ2xhaW0AAQU4RmFpbGVkVG9EZWNvZGUAAQVATWF4V2VpZ2h0SW52YWxpZAABBThOb3RIb2xkaW5nRmVlcwABBTBUb29FeHBlbnNpdmUAAQUQVHJhcAEIQEV4cGVjdGF0aW9uRmFsc2UAAQU4UGFsbGV0Tm90Rm91bmQAAQUwTmFtZU1pc21hdGNoAAEFTFZlcnNpb25JbmNvbXBhdGlibGUAAQVQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAAQUsRXhwb3J0RXJyb3IAAQU4UmVhbmNob3JGYWlsZWQAAQUYTm9EZWFsAAEFKEZlZXNOb3RNZXQAAQUkTG9ja0Vycm9yAAEFME5vUGVybWlzc2lvbgABBShVbmFuY2hvcmVkAAEFOE5vdERlcG9zaXRhYmxlAAEFNFRvb01hbnlBc3NldHMAAQVMVW5oYW5kbGVkWGNtVmVyc2lvbgABBUhXZWlnaHRMaW1pdFJlYWNoZWQBGBxCYXJyaWVyAAEFTFdlaWdodE5vdENvbXB1dGFibGUAAQVERXhjZWVkc1N0YWNrTGltaXQAAQUACBRpbmRleAQUZXJyb3LYAgwgQ29tcGxldGUAAAQQdXNlZBgoSW5jb21wbGV0ZQAACBB1c2VkGBRlcnJvctwURXJyb3IB3AIgJEJ5R2VuZXNpcwEgGEJ5Rm9yawAACDBibG9ja19udW1iZXIIKGJsb2NrX2hhc2ggIFBvbGthZG90AAEFGEt1c2FtYQABBSBFdGhlcmV1bQAABCBjaGFpbl9pZAgsQml0Y29pbkNvcmUAAQUsQml0Y29pbkNhc2gAAQVAUG9sa2Fkb3RCdWxsZXRpbgABBQbkBQFQAigQVW5pdAABBRxNb25pa2VyASgUSW5kZXgBBCRFeGVjdXRpdmUAAQUkVGVjaG5pY2FsAAEFLExlZ2lzbGF0aXZlAAEFIEp1ZGljaWFsAAEFHERlZmVuc2UAAQU4QWRtaW5pc3RyYXRpb24AAQUgVHJlYXN1cnkAAQUCFBRWb2ljZQABBRxNZW1iZXJzAAAEFGNvdW50BCBGcmFjdGlvbgAACAxub20EFGRlbm9tBERBdExlYXN0UHJvcG9ydGlvbgAACAxub20EFGRlbm9tBEhNb3JlVGhhblByb3BvcnRpb24AAAgMbm9tBBRkZW5vbQQCKCRQYXJhY2hhaW4BBCxBY2NvdW50SWQzMgAACBxuZXR3b3Jr6AhpZCA4QWNjb3VudEluZGV4NjQAAAgcbmV0d29ya+gUaW5kZXgIMEFjY291bnRLZXkyMAAACBxuZXR3b3Jr6AxrZXnsOFBhbGxldEluc3RhbmNlAQQwR2VuZXJhbEluZGV4AQgoR2VuZXJhbEtleQAACBhsZW5ndGgEEGRhdGEgJE9ubHlDaGlsZAABBSRQbHVyYWxpdHkAAAgIaWTwEHBhcnT0PEdsb2JhbENvbnNlbnN1cwHkBPgBCAT4AQwE+AEQBPgBFAT4ARgE+AEcBPgBIAIkEEhlcmUAAQUIWDEB+AhYMgH8CFgzAQEBCFg0AQUBCFg1AQkBCFg2AQ0BCFg3AREBCFg4ARUBAAgccGFyZW50cwQgaW50ZXJpb3IZAQUBIAUBQAIYJFVuZGVmaW5lZAABBRRJbmRleAEIGEFycmF5NAEoGEFycmF5OAEhARxBcnJheTE2ASUBHEFycmF5MzIBIAIIIEZ1bmdpYmxlAQgsTm9uRnVuZ2libGUBKQEACAhpZB0BDGZ1bi0BBDEBAAMIBNgGOQEAGBRpbmRleAQQbmFtZSQsbW9kdWxlX25hbWUkFG1ham9yBBRtaW5vcgQUcGF0Y2gEBEEBAAIMHFN1Y2Nlc3MAAQUURXJyb3IBJDhUcnVuY2F0ZWRFcnJvcgEkAhgQTnVsbAABBRhBc3NldHMBNQE8RXhlY3V0aW9uUmVzdWx0AT0BHFZlcnNpb24BBCxQYWxsZXRzSW5mbwFFAThEaXNwYXRjaFJlc3VsdAFJAQYdAQIQGE5hdGl2ZQABBUBTb3ZlcmVpZ25BY2NvdW50AAEFJFN1cGVydXNlcgABBQxYY20AAQUGGAAMLGRlc3RpbmF0aW9uHQEgcXVlcnlfaWQIKG1heF93ZWlnaHQYAgggRnVuZ2libGUAAQUsTm9uRnVuZ2libGUAAQUCEAxBbGwAAQUUQWxsT2YAAAgIaWQdAQxmdW5hAShBbGxDb3VudGVkAQQwQWxsT2ZDb3VudGVkAAAMCGlkHQEMZnVuYQEUY291bnQEAgggRGVmaW5pdGUBNQEQV2lsZAFlAQIIJFVubGltaXRlZAABBRxMaW1pdGVkARgCDCBUZWxlcG9ydAFpAThSZXNlcnZlRGVwb3NpdAFpATxSZXNlcnZlV2l0aGRyYXcBaQEGcQEEcQEABhkBAgQwQXNzZXRDbGFpbWVyAAAEIGxvY2F0aW9uHQEEgQEAAtA0V2l0aGRyYXdBc3NldAE1AVRSZXNlcnZlQXNzZXREZXBvc2l0ZWQBNQFYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAE1ATRRdWVyeVJlc3BvbnNlAAAQIHF1ZXJ5X2lkCCByZXNwb25zZU0BKG1heF93ZWlnaHQYHHF1ZXJpZXJRATRUcmFuc2ZlckFzc2V0AAAIGGFzc2V0czUBLGJlbmVmaWNpYXJ5HQFQVHJhbnNmZXJSZXNlcnZlQXNzZXQAAAwYYXNzZXRzNQEQZGVzdB0BDHhjbY0BIFRyYW5zYWN0AAAMLG9yaWdpbl9raW5kVQFMZmFsbGJhY2tfbWF4X3dlaWdodFkBEGNhbGwkZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QAAAwYc2VuZGVyBEBtYXhfbWVzc2FnZV9zaXplBDBtYXhfY2FwYWNpdHkETEhybXBDaGFubmVsQWNjZXB0ZWQAAAQkcmVjaXBpZW50BEhIcm1wQ2hhbm5lbENsb3NpbmcAAAwkaW5pdGlhdG9yBBhzZW5kZXIEJHJlY2lwaWVudAQsQ2xlYXJPcmlnaW4AAQU0RGVzY2VuZE9yaWdpbgEZASxSZXBvcnRFcnJvcgFdATBEZXBvc2l0QXNzZXQAAAgYYXNzZXRzaQEsYmVuZWZpY2lhcnkdAUxEZXBvc2l0UmVzZXJ2ZUFzc2V0AAAMGGFzc2V0c2kBEGRlc3QdAQx4Y22NATRFeGNoYW5nZUFzc2V0AAAMEGdpdmVpARB3YW50NQEcbWF4aW1hbBRcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcAAAwYYXNzZXRzaQEccmVzZXJ2ZR0BDHhjbY0BQEluaXRpYXRlVGVsZXBvcnQAAAwYYXNzZXRzaQEQZGVzdB0BDHhjbY0BNFJlcG9ydEhvbGRpbmcAAAg0cmVzcG9uc2VfaW5mb10BGGFzc2V0c2kBMEJ1eUV4ZWN1dGlvbgAACBBmZWVzMQEwd2VpZ2h0X2xpbWl0bQE0UmVmdW5kU3VycGx1cwABBTxTZXRFcnJvckhhbmRsZXIBjQEsU2V0QXBwZW5kaXgBjQEoQ2xlYXJFcnJvcgABBShDbGFpbUFzc2V0AAAIGGFzc2V0czUBGHRpY2tldB0BEFRyYXABCEBTdWJzY3JpYmVWZXJzaW9uAAAIIHF1ZXJ5X2lkCExtYXhfcmVzcG9uc2Vfd2VpZ2h0GEhVbnN1YnNjcmliZVZlcnNpb24AAQUkQnVybkFzc2V0ATUBLEV4cGVjdEFzc2V0ATUBMEV4cGVjdE9yaWdpbgFRASxFeHBlY3RFcnJvcgE9AVBFeHBlY3RUcmFuc2FjdFN0YXR1cwFJASxRdWVyeVBhbGxldAAACCxtb2R1bGVfbmFtZSQ0cmVzcG9uc2VfaW5mb10BMEV4cGVjdFBhbGxldAAAFBRpbmRleAQQbmFtZSQsbW9kdWxlX25hbWUkLGNyYXRlX21ham9yBDxtaW5fY3JhdGVfbWlub3IEUFJlcG9ydFRyYW5zYWN0U3RhdHVzAV0BTENsZWFyVHJhbnNhY3RTdGF0dXMAAQU8VW5pdmVyc2FsT3JpZ2luAfg0RXhwb3J0TWVzc2FnZQAADBxuZXR3b3Jr5CxkZXN0aW5hdGlvbhkBDHhjbY0BJExvY2tBc3NldAAACBRhc3NldDEBIHVubG9ja2VyHQEsVW5sb2NrQXNzZXQAAAgUYXNzZXQxARh0YXJnZXQdAThOb3RlVW5sb2NrYWJsZQAACBRhc3NldDEBFG93bmVyHQE0UmVxdWVzdFVubG9jawAACBRhc3NldDEBGGxvY2tlch0BLFNldEZlZXNNb2RlAAAEMGppdF93aXRoZHJhdxQgU2V0VG9waWMBIChDbGVhclRvcGljAAEFLEFsaWFzT3JpZ2luAR0BPFVucGFpZEV4ZWN1dGlvbgAACDB3ZWlnaHRfbGltaXRtATBjaGVja19vcmlnaW5RARxQYXlGZWVzAAAEFGFzc2V0MQFASW5pdGlhdGVUcmFuc2ZlcgAAFCxkZXN0aW5hdGlvbh0BLHJlbW90ZV9mZWVzdQE8cHJlc2VydmVfb3JpZ2luFBhhc3NldHN5AShyZW1vdGVfeGNtjQFERXhlY3V0ZVdpdGhPcmlnaW4AAAhEZGVzY2VuZGFudF9vcmlnaW59AQx4Y22NASBTZXRIaW50cwAABBRoaW50c4UBBIkBAAIcNE5vdEFwcGxpY2FibGUAAQUkVHJhbnNwb3J0AAEFKFVucm91dGFibGUAAQVYRGVzdGluYXRpb25VbnN1cHBvcnRlZAABBVRFeGNlZWRzTWF4TWVzc2FnZVNpemUAAQU8TWlzc2luZ0FyZ3VtZW50AAEFEEZlZXMAAQUCLCRCeUdlbmVzaXMBIBhCeUZvcmsAAAgwYmxvY2tfbnVtYmVyCChibG9ja19oYXNoICBQb2xrYWRvdAABBRhLdXNhbWEAAQUcV2VzdGVuZAABBRhSb2NvY28AAQUYV29jb2NvAAEFIEV0aGVyZXVtAAAEIGNoYWluX2lkCCxCaXRjb2luQ29yZQABBSxCaXRjb2luQ2FzaAABBUBQb2xrYWRvdEJ1bGxldGluAAEFBpUBAigkUGFyYWNoYWluAQQsQWNjb3VudElkMzIAAAgcbmV0d29ya5kBCGlkIDhBY2NvdW50SW5kZXg2NAAACBxuZXR3b3JrmQEUaW5kZXgIMEFjY291bnRLZXkyMAAACBxuZXR3b3JrmQEMa2V57DhQYWxsZXRJbnN0YW5jZQEEMEdlbmVyYWxJbmRleAEIKEdlbmVyYWxLZXkAAAgYbGVuZ3RoBBBkYXRhICRPbmx5Q2hpbGQAAQUkUGx1cmFsaXR5AAAICGlk8BBwYXJ09DxHbG9iYWxDb25zZW5zdXMBlQECJBBIZXJlAAEFCFgxAZ0BCFgyAASdAQEICFgzAASdAQEMCFg0AASdAQEQCFg1AASdAQEUCFg2AASdAQEYCFg3AASdAQEcCFg4AASdAQEgAAgccGFyZW50cwQgaW50ZXJpb3KhAQIIIENvbmNyZXRlAaUBIEFic3RyYWN0ASAACAhpZKkBDGZ1bi0BBK0BAAAICGlkpQEMZnVuLQEEtQEAAgwIVjMBsQEIVjQBuQEIVjUBNQECDAhWMwGlAQhWNAGlAQhWNQEdAQYIAnQkQXR0ZW1wdGVkAAAEHG91dGNvbWXgEFNlbnQAABAYb3JpZ2luHQEsZGVzdGluYXRpb24dARxtZXNzYWdljQEobWVzc2FnZV9pZCAoU2VuZEZhaWxlZAAAEBhvcmlnaW4dASxkZXN0aW5hdGlvbh0BFGVycm9ykQEobWVzc2FnZV9pZCA8UHJvY2Vzc1hjbUVycm9yAAAMGG9yaWdpbh0BFGVycm9y2ChtZXNzYWdlX2lkIEhVbmV4cGVjdGVkUmVzcG9uc2UAAAgYb3JpZ2luHQEgcXVlcnlfaWQINFJlc3BvbnNlUmVhZHkAAAggcXVlcnlfaWQIIHJlc3BvbnNlTQEgTm90aWZpZWQAAAwgcXVlcnlfaWQIMHBhbGxldF9pbmRleAQoY2FsbF9pbmRleARATm90aWZ5T3ZlcndlaWdodAAAFCBxdWVyeV9pZAgwcGFsbGV0X2luZGV4BChjYWxsX2luZGV4BDRhY3R1YWxfd2VpZ2h0GExtYXhfYnVkZ2V0ZWRfd2VpZ2h0GExOb3RpZnlEaXNwYXRjaEVycm9yAAAMIHF1ZXJ5X2lkCDBwYWxsZXRfaW5kZXgEKGNhbGxfaW5kZXgESE5vdGlmeURlY29kZUZhaWxlZAAADCBxdWVyeV9pZAgwcGFsbGV0X2luZGV4BChjYWxsX2luZGV4BEBJbnZhbGlkUmVzcG9uZGVyAAAMGG9yaWdpbh0BIHF1ZXJ5X2lkCERleHBlY3RlZF9sb2NhdGlvblEBXEludmFsaWRSZXNwb25kZXJWZXJzaW9uAAAIGG9yaWdpbh0BIHF1ZXJ5X2lkCDRSZXNwb25zZVRha2VuAAAEIHF1ZXJ5X2lkCDRBc3NldHNUcmFwcGVkAAAMEGhhc2ggGG9yaWdpbh0BGGFzc2V0c70BVFZlcnNpb25DaGFuZ2VOb3RpZmllZAAAECxkZXN0aW5hdGlvbh0BGHJlc3VsdAQQY29zdDUBKG1lc3NhZ2VfaWQgXFN1cHBvcnRlZFZlcnNpb25DaGFuZ2VkAAAIIGxvY2F0aW9uHQEcdmVyc2lvbgRQTm90aWZ5VGFyZ2V0U2VuZEZhaWwAAAwgbG9jYXRpb24dASBxdWVyeV9pZAgUZXJyb3LYZE5vdGlmeVRhcmdldE1pZ3JhdGlvbkZhaWwAAAggbG9jYXRpb27BASBxdWVyeV9pZAhUSW52YWxpZFF1ZXJpZXJWZXJzaW9uAAAIGG9yaWdpbh0BIHF1ZXJ5X2lkCDhJbnZhbGlkUXVlcmllcgAAEBhvcmlnaW4dASBxdWVyeV9pZAhAZXhwZWN0ZWRfcXVlcmllch0BUG1heWJlX2FjdHVhbF9xdWVyaWVyUQFQVmVyc2lvbk5vdGlmeVN0YXJ0ZWQAAAwsZGVzdGluYXRpb24dARBjb3N0NQEobWVzc2FnZV9pZCBYVmVyc2lvbk5vdGlmeVJlcXVlc3RlZAAADCxkZXN0aW5hdGlvbh0BEGNvc3Q1AShtZXNzYWdlX2lkIGBWZXJzaW9uTm90aWZ5VW5yZXF1ZXN0ZWQAAAwsZGVzdGluYXRpb24dARBjb3N0NQEobWVzc2FnZV9pZCAgRmVlc1BhaWQAAAgYcGF5aW5nHQEQZmVlczUBNEFzc2V0c0NsYWltZWQAAAwQaGFzaCAYb3JpZ2luHQEYYXNzZXRzvQFgVmVyc2lvbk1pZ3JhdGlvbkZpbmlzaGVkAAAEHHZlcnNpb24EPEFsaWFzQXV0aG9yaXplZAAADBxhbGlhc2VyHQEYdGFyZ2V0HQEYZXhwaXJ5xQFkQWxpYXNBdXRob3JpemF0aW9uUmVtb3ZlZAAACBxhbGlhc2VyHQEYdGFyZ2V0HQFwQWxpYXNlc0F1dGhvcml6YXRpb25zUmVtb3ZlZAAABBh0YXJnZXQdAQIMNEludmFsaWRGb3JtYXQBIEhVbnN1cHBvcnRlZFZlcnNpb24BIEBFeGVjdXRlZERvd253YXJkAAMIIOACDBBIZXJlAAEFGFBhcmVudAABBRxTaWJsaW5nAQQCGCRCYWRGb3JtYXQAAQUcQ29ycnVwdAABBSxVbnN1cHBvcnRlZAABBShPdmVyd2VpZ2h0ARgUWWllbGQAAQVEU3RhY2tMaW1pdFJlYWNoZWQAAQUCEEBQcm9jZXNzaW5nRmFpbGVkAAAMCGlkIBhvcmlnaW7RARRlcnJvctUBJFByb2Nlc3NlZAAAEAhpZCAYb3JpZ2lu0QEsd2VpZ2h0X3VzZWQYHHN1Y2Nlc3MUSE92ZXJ3ZWlnaHRFbnF1ZXVlZAAAEAhpZCAYb3JpZ2lu0QEocGFnZV9pbmRleAQ0bWVzc2FnZV9pbmRleAQoUGFnZVJlYXBlZAAACBhvcmlnaW7RARRpbmRleAQFAQEBBQEFAQUBhAIQHFNyMjU1MTkAAAgkc2lnbmF0dXJl3QEYc2lnbmVyIBxFZDI1NTE5AAAIJHNpZ25hdHVyZd0BGHNpZ25lciA4U2VjcDI1NmsxRWNkc2EAAAgkc2lnbmF0dXJl4QEYc2lnbmVy5QEcT25DaGFpbgAADAx3aG8gKGJsb2NrX2hhc2ggLGV2ZW50X2luZGV4CAbpAQYEBCABEAYkABwUcHJvb2btAThkZWNyeXB0aW9uX2tleZAcY2hhbm5lbJAgcHJpb3JpdHnxAShudW1fdG9waWNzBBh0b3BpY3P1ARBkYXRh+QECBDBOZXdTdGF0ZW1lbnQAAAgcYWNjb3VudAAkc3RhdGVtZW50/QECCDBDbGFpbUNyZWF0ZWQAAAgMd2hvABBoYXNoIDBDbGFpbVJldm9rZWQAAAgMd2hvABBoYXNoIAQgAAIMPENvbnRyYWN0RW1pdHRlZAAADCBjb250cmFjdOwQZGF0YSQYdG9waWNzCQIwSW5zdGFudGlhdGVkAAAIIGRlcGxveWVy7CBjb250cmFjdOxIRXRoRXh0cmluc2ljUmV2ZXJ0AAAEOGRpc3BhdGNoX2Vycm9yiAI4GFN5c3RlbQGMPFBhcmFjaGFpblN5c3RlbQGUIEJhbGFuY2VzAbBIVHJhbnNhY3Rpb25QYXltZW50AbQQU3VkbwHERENvbGxhdG9yU2VsZWN0aW9uAcwcU2Vzc2lvbgHQJFhjbXBRdWV1ZQHULFBvbGthZG90WGNtAckBKEN1bXVsdXNYY20BzQEwTWVzc2FnZVF1ZXVlAdkBJFN0YXRlbWVudAEBAjhUZW1wbGF0ZVBhbGxldAEFAhhSZXZpdmUBDQIADBRwaGFzZTQUZXZlbnQRAhh0b3BpY3MJAgQVAgAEBAEIBB0CAAEBAAgwc3BlY192ZXJzaW9uBCRzcGVjX25hbWUlAgAIJGNvZGVfaGFzaCA0Y2hlY2tfdmVyc2lvbhQAEDhiYXNlX2V4dHJpbnNpYxg0bWF4X2V4dHJpbnNpY1kBJG1heF90b3RhbFkBIHJlc2VydmVkWQEADBhub3JtYWwxAixvcGVyYXRpb25hbDECJG1hbmRhdG9yeTECAAwoYmFzZV9ibG9jaxgkbWF4X2Jsb2NrGCRwZXJfY2xhc3M1AgAMGG5vcm1hbAQsb3BlcmF0aW9uYWwEJG1hbmRhdG9yeQQACBByZWFkCBR3cml0ZQgDCCEBBARFAgAAICRzcGVjX25hbWUlAiRpbXBsX25hbWUlAkRhdXRob3JpbmdfdmVyc2lvbgQwc3BlY192ZXJzaW9uBDBpbXBsX3ZlcnNpb24EEGFwaXNJAkx0cmFuc2FjdGlvbl92ZXJzaW9uBDhzeXN0ZW1fdmVyc2lvbgQEJAEIBFECAAQkAAAIJG1zZ19jb3VudAQsdG90YWxfYnl0ZXMEAwgEXQIEYQIAAAw0dW1wX21zZ19jb3VudAQ8dW1wX3RvdGFsX2J5dGVzBDRocm1wX291dGdvaW5nZQICCBRBYm9ydAABBRxHb0FoZWFkAAEFBm0CAAw4dXNlZF9iYW5kd2lkdGhpAjhwYXJhX2hlYWRfaGFzaJBgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFscQIEdQIAAAw4dXNlZF9iYW5kd2lkdGhpAjhocm1wX3dhdGVybWFya/EBYGNvbnN1bWVkX2dvX2FoZWFkX3NpZ25hbHECABAscGFyZW50X2hlYWQkTHJlbGF5X3BhcmVudF9udW1iZXIEZHJlbGF5X3BhcmVudF9zdG9yYWdlX3Jvb3QgMG1heF9wb3Zfc2l6ZQQCBBxQcmVzZW50AAEFBoUCAAg8cmVtYWluaW5nX2NvdW50BDhyZW1haW5pbmdfc2l6ZQQAGDBtYXhfY2FwYWNpdHkEOG1heF90b3RhbF9zaXplBEBtYXhfbWVzc2FnZV9zaXplBCRtc2dfY291bnQEKHRvdGFsX3NpemUEIG1xY19oZWFkkAMIBJECBJUCAAAQMGRtcV9tcWNfaGVhZCCccmVsYXlfZGlzcGF0Y2hfcXVldWVfcmVtYWluaW5nX2NhcGFjaXR5jQJAaW5ncmVzc19jaGFubmVsc5kCPGVncmVzc19jaGFubmVsc5kCAAhMbWF4X2NhbmRpZGF0ZV9kZXB0aARQYWxsb3dlZF9hbmNlc3RyeV9sZW4EACg0bWF4X2NvZGVfc2l6ZQRIbWF4X2hlYWRfZGF0YV9zaXplBFhtYXhfdXB3YXJkX3F1ZXVlX2NvdW50BFRtYXhfdXB3YXJkX3F1ZXVlX3NpemUEXG1heF91cHdhcmRfbWVzc2FnZV9zaXplBJBtYXhfdXB3YXJkX21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGUEiGhybXBfbWF4X21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGUEbHZhbGlkYXRpb25fdXBncmFkZV9jb29sZG93bgRgdmFsaWRhdGlvbl91cGdyYWRlX2RlbGF5BFBhc3luY19iYWNraW5nX3BhcmFtc6ECAwgEIASpAgAACBxzZW50X2F0BCxyZXZlcnNlX2lkeAQACCRyZWNpcGllbnQEEGRhdGEkBLUCAAAULHBhcmVudF9oYXNoIBhudW1iZXIEKHN0YXRlX3Jvb3QgPGV4dHJpbnNpY3Nfcm9vdCAYZGlnZXN0MAS9AgAAEDx2YWxpZGF0aW9uX2RhdGGBAkRyZWxheV9jaGFpbl9zdGF0ZVkCYHJlbGF5X3BhcmVudF9kZXNjZW5kYW50c8ECQGNvbGxhdG9yX3BlZXJfaWT5AQAIHHNlbnRfYXQEDG1zZyQEyQIAAAgcc2VudF9hdAQgbXNnX2hhc2ggBNECAAAINGZ1bGxfbWVzc2FnZXPNAjxoYXNoZWRfbWVzc2FnZXPVAgAIHHNlbnRfYXQEEGRhdGEkAwgE3QIE4QIAAwgE0QIE6QIAAAg0ZnVsbF9tZXNzYWdlc+UCPGhhc2hlZF9tZXNzYWdlc+0CAAhEZG93bndhcmRfbWVzc2FnZXPZAkxob3Jpem9udGFsX21lc3NhZ2Vz8QICDAxGZWUAAQUQTWlzYwABBQxBbGwAAQUADAhpZCEBGGFtb3VudAgccmVhc29uc/kCBP0CAAAICGlkIQEYYW1vdW50CAQFAwAACAhpZKgYYW1vdW50CAQNAwAABBhhbW91bnQIBBUDAAIUCElkAQAUSW5kZXgBuAxSYXcBJCRBZGRyZXNzMzIBICRBZGRyZXNzMjAB7AIIIEluY3JlYXNlAAEFIERlY3JlYXNlAAEFAggkVjFBbmNpZW50AAEFCFYyAAEFAiwYcmVtYXJrAAAEGHJlbWFyayQ4c2V0X2hlYXBfcGFnZXMAAAQUcGFnZXMIIHNldF9jb2RlAAAEEGNvZGUkXHNldF9jb2RlX3dpdGhvdXRfY2hlY2tzAAAEEGNvZGUkLHNldF9zdG9yYWdlAAAEFGl0ZW1zVQIwa2lsbF9zdG9yYWdlAAAEEGtleXNZAixraWxsX3ByZWZpeAAACBhwcmVmaXgkHHN1YmtleXMERHJlbWFya193aXRoX2V2ZW50AAAEGHJlbWFyayREYXV0aG9yaXplX3VwZ3JhZGUAAAQkY29kZV9oYXNoIIBhdXRob3JpemVfdXBncmFkZV93aXRob3V0X2NoZWNrcwAABCRjb2RlX2hhc2ggYGFwcGx5X2F1dGhvcml6ZWRfdXBncmFkZQAABBBjb2RlJAIITHNldF92YWxpZGF0aW9uX2RhdGEAAAgQZGF0YcUCVGluYm91bmRfbWVzc2FnZXNfZGF0YfUCYHN1ZG9fc2VuZF91cHdhcmRfbWVzc2FnZQAABBxtZXNzYWdlJAIEDHNldAAABAxub3cIAiRQdHJhbnNmZXJfYWxsb3dfZGVhdGgAAAgQZGVzdB0DFHZhbHVlCDhmb3JjZV90cmFuc2ZlcgAADBhzb3VyY2UdAxBkZXN0HQMUdmFsdWUITHRyYW5zZmVyX2tlZXBfYWxpdmUAAAgQZGVzdB0DFHZhbHVlCDB0cmFuc2Zlcl9hbGwAAAgQZGVzdB0DKGtlZXBfYWxpdmUUPGZvcmNlX3VucmVzZXJ2ZQAACAx3aG8dAxhhbW91bnQIQHVwZ3JhZGVfYWNjb3VudHMAAAQMd2hvyERmb3JjZV9zZXRfYmFsYW5jZQAACAx3aG8dAyBuZXdfZnJlZQhsZm9yY2VfYWRqdXN0X3RvdGFsX2lzc3VhbmNlAAAIJGRpcmVjdGlvbiEDFGRlbHRhCBBidXJuAAAIFHZhbHVlCChrZWVwX2FsaXZlFAIUEHN1ZG8AAAQQY2FsbKUDVHN1ZG9fdW5jaGVja2VkX3dlaWdodAAACBBjYWxspQMYd2VpZ2h0GBxzZXRfa2V5AAAEDG5ldx0DHHN1ZG9fYXMAAAgMd2hvHQMQY2FsbKUDKHJlbW92ZV9rZXkAAQUCJERzZXRfaW52dWxuZXJhYmxlcwAABAxuZXfIWHNldF9kZXNpcmVkX2NhbmRpZGF0ZXMAAAQMbWF4BEhzZXRfY2FuZGlkYWN5X2JvbmQAAAQQYm9uZAhUcmVnaXN0ZXJfYXNfY2FuZGlkYXRlAAEFMGxlYXZlX2ludGVudAABBUBhZGRfaW52dWxuZXJhYmxlAAAEDHdobwBMcmVtb3ZlX2ludnVsbmVyYWJsZQAABAx3aG8ALHVwZGF0ZV9ib25kAAAELG5ld19kZXBvc2l0CEx0YWtlX2NhbmRpZGF0ZV9zbG90AAAIHGRlcG9zaXQIGHRhcmdldAACCCBzZXRfa2V5cwAACBBrZXlzIBRwcm9vZiQocHVyZ2Vfa2V5cwABBQIUVHN1c3BlbmRfeGNtX2V4ZWN1dGlvbgABBVByZXN1bWVfeGNtX2V4ZWN1dGlvbgABBWB1cGRhdGVfc3VzcGVuZF90aHJlc2hvbGQAAAQMbmV3BFR1cGRhdGVfZHJvcF90aHJlc2hvbGQAAAQMbmV3BFx1cGRhdGVfcmVzdW1lX3RocmVzaG9sZAAABAxuZXcEAqAgT3ZlcmZsb3cAAQU0VW5pbXBsZW1lbnRlZAABBWBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAQVkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgABBTBMb2NhdGlvbkZ1bGwAAQVUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAEFJEJhZE9yaWdpbgABBTxJbnZhbGlkTG9jYXRpb24AAQU0QXNzZXROb3RGb3VuZAABBVRGYWlsZWRUb1RyYW5zYWN0QXNzZXQAAQU8Tm90V2l0aGRyYXdhYmxlAAEFSExvY2F0aW9uQ2Fubm90SG9sZAABBVRFeGNlZWRzTWF4TWVzc2FnZVNpemUAAQVYRGVzdGluYXRpb25VbnN1cHBvcnRlZAABBSRUcmFuc3BvcnQAAQUoVW5yb3V0YWJsZQABBTBVbmtub3duQ2xhaW0AAQU4RmFpbGVkVG9EZWNvZGUAAQVATWF4V2VpZ2h0SW52YWxpZAABBThOb3RIb2xkaW5nRmVlcwABBTBUb29FeHBlbnNpdmUAAQUQVHJhcAEIQEV4cGVjdGF0aW9uRmFsc2UAAQU4UGFsbGV0Tm90Rm91bmQAAQUwTmFtZU1pc21hdGNoAAEFTFZlcnNpb25JbmNvbXBhdGlibGUAAQVQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAAQUsRXhwb3J0RXJyb3IAAQU4UmVhbmNob3JGYWlsZWQAAQUYTm9EZWFsAAEFKEZlZXNOb3RNZXQAAQUkTG9ja0Vycm9yAAEFME5vUGVybWlzc2lvbgABBShVbmFuY2hvcmVkAAEFOE5vdERlcG9zaXRhYmxlAAEFTFVuaGFuZGxlZFhjbVZlcnNpb24AAQVIV2VpZ2h0TGltaXRSZWFjaGVkARgcQmFycmllcgABBUxXZWlnaHROb3RDb21wdXRhYmxlAAEFREV4Y2VlZHNTdGFja0xpbWl0AAEFAwgESQMGTQMCGBBOdWxsAAEFGEFzc2V0cwGxATxFeGVjdXRpb25SZXN1bHQBUQMcVmVyc2lvbgEELFBhbGxldHNJbmZvAUUBOERpc3BhdGNoUmVzdWx0AUkBBqUBAAwsZGVzdGluYXRpb26lASBxdWVyeV9pZAgobWF4X3dlaWdodBgCEAxBbGwAAQUUQWxsT2YAAAgIaWSpAQxmdW5hAShBbGxDb3VudGVkAQQwQWxsT2ZDb3VudGVkAAAMCGlkqQEMZnVuYQEUY291bnQEAgggRGVmaW5pdGUBsQEQV2lsZAFhAwLANFdpdGhkcmF3QXNzZXQBsQFUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkAbEBWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQBsQE0UXVlcnlSZXNwb25zZQAAECBxdWVyeV9pZAggcmVzcG9uc2VVAyhtYXhfd2VpZ2h0GBxxdWVyaWVyWQM0VHJhbnNmZXJBc3NldAAACBhhc3NldHOxASxiZW5lZmljaWFyeaUBUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0AAAMGGFzc2V0c7EBEGRlc3SlAQx4Y21tAyBUcmFuc2FjdAAADCxvcmlnaW5fa2luZFUBWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QYEGNhbGwkZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QAAAwYc2VuZGVyBEBtYXhfbWVzc2FnZV9zaXplBDBtYXhfY2FwYWNpdHkETEhybXBDaGFubmVsQWNjZXB0ZWQAAAQkcmVjaXBpZW50BEhIcm1wQ2hhbm5lbENsb3NpbmcAAAwkaW5pdGlhdG9yBBhzZW5kZXIEJHJlY2lwaWVudAQsQ2xlYXJPcmlnaW4AAQU0RGVzY2VuZE9yaWdpbgGhASxSZXBvcnRFcnJvcgFdAzBEZXBvc2l0QXNzZXQAAAgYYXNzZXRzZQMsYmVuZWZpY2lhcnmlAUxEZXBvc2l0UmVzZXJ2ZUFzc2V0AAAMGGFzc2V0c2UDEGRlc3SlAQx4Y21tAzRFeGNoYW5nZUFzc2V0AAAMEGdpdmVlAxB3YW50sQEcbWF4aW1hbBRcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcAAAwYYXNzZXRzZQMccmVzZXJ2ZaUBDHhjbW0DQEluaXRpYXRlVGVsZXBvcnQAAAwYYXNzZXRzZQMQZGVzdKUBDHhjbW0DNFJlcG9ydEhvbGRpbmcAAAg0cmVzcG9uc2VfaW5mb10DGGFzc2V0c2UDMEJ1eUV4ZWN1dGlvbgAACBBmZWVzrQEwd2VpZ2h0X2xpbWl0bQE0UmVmdW5kU3VycGx1cwABBTxTZXRFcnJvckhhbmRsZXIBbQMsU2V0QXBwZW5kaXgBbQMoQ2xlYXJFcnJvcgABBShDbGFpbUFzc2V0AAAIGGFzc2V0c7EBGHRpY2tldKUBEFRyYXABCEBTdWJzY3JpYmVWZXJzaW9uAAAIIHF1ZXJ5X2lkCExtYXhfcmVzcG9uc2Vfd2VpZ2h0GEhVbnN1YnNjcmliZVZlcnNpb24AAQUkQnVybkFzc2V0AbEBLEV4cGVjdEFzc2V0AbEBMEV4cGVjdE9yaWdpbgFZAyxFeHBlY3RFcnJvcgFRA1BFeHBlY3RUcmFuc2FjdFN0YXR1cwFJASxRdWVyeVBhbGxldAAACCxtb2R1bGVfbmFtZSQ0cmVzcG9uc2VfaW5mb10DMEV4cGVjdFBhbGxldAAAFBRpbmRleAQQbmFtZSQsbW9kdWxlX25hbWUkLGNyYXRlX21ham9yBDxtaW5fY3JhdGVfbWlub3IEUFJlcG9ydFRyYW5zYWN0U3RhdHVzAV0DTENsZWFyVHJhbnNhY3RTdGF0dXMAAQU8VW5pdmVyc2FsT3JpZ2luAZ0BNEV4cG9ydE1lc3NhZ2UAAAwcbmV0d29ya5UBLGRlc3RpbmF0aW9uoQEMeGNtbQMkTG9ja0Fzc2V0AAAIFGFzc2V0rQEgdW5sb2NrZXKlASxVbmxvY2tBc3NldAAACBRhc3NldK0BGHRhcmdldKUBOE5vdGVVbmxvY2thYmxlAAAIFGFzc2V0rQEUb3duZXKlATRSZXF1ZXN0VW5sb2NrAAAIFGFzc2V0rQEYbG9ja2VypQEsU2V0RmVlc01vZGUAAAQwaml0X3dpdGhkcmF3FCBTZXRUb3BpYwEgKENsZWFyVG9waWMAAQUsQWxpYXNPcmlnaW4BpQE8VW5wYWlkRXhlY3V0aW9uAAAIMHdlaWdodF9saW1pdG0BMGNoZWNrX29yaWdpblkDBGkDAAIYEE51bGwAAQUYQXNzZXRzAbkBPEV4ZWN1dGlvblJlc3VsdAFRAxxWZXJzaW9uAQQsUGFsbGV0c0luZm8BRQE4RGlzcGF0Y2hSZXN1bHQBSQECEAxBbGwAAQUUQWxsT2YAAAgIaWSlAQxmdW5hAShBbGxDb3VudGVkAQQwQWxsT2ZDb3VudGVkAAAMCGlkpQEMZnVuYQEUY291bnQEAgggRGVmaW5pdGUBuQEQV2lsZAF1AwLANFdpdGhkcmF3QXNzZXQBuQFUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkAbkBWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQBuQE0UXVlcnlSZXNwb25zZQAAECBxdWVyeV9pZAggcmVzcG9uc2VxAyhtYXhfd2VpZ2h0GBxxdWVyaWVyWQM0VHJhbnNmZXJBc3NldAAACBhhc3NldHO5ASxiZW5lZmljaWFyeaUBUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0AAAMGGFzc2V0c7kBEGRlc3SlAQx4Y22BAyBUcmFuc2FjdAAADCxvcmlnaW5fa2luZFUBWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QYEGNhbGwkZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QAAAwYc2VuZGVyBEBtYXhfbWVzc2FnZV9zaXplBDBtYXhfY2FwYWNpdHkETEhybXBDaGFubmVsQWNjZXB0ZWQAAAQkcmVjaXBpZW50BEhIcm1wQ2hhbm5lbENsb3NpbmcAAAwkaW5pdGlhdG9yBBhzZW5kZXIEJHJlY2lwaWVudAQsQ2xlYXJPcmlnaW4AAQU0RGVzY2VuZE9yaWdpbgGhASxSZXBvcnRFcnJvcgFdAzBEZXBvc2l0QXNzZXQAAAgYYXNzZXRzeQMsYmVuZWZpY2lhcnmlAUxEZXBvc2l0UmVzZXJ2ZUFzc2V0AAAMGGFzc2V0c3kDEGRlc3SlAQx4Y22BAzRFeGNoYW5nZUFzc2V0AAAMEGdpdmV5AxB3YW50uQEcbWF4aW1hbBRcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcAAAwYYXNzZXRzeQMccmVzZXJ2ZaUBDHhjbYEDQEluaXRpYXRlVGVsZXBvcnQAAAwYYXNzZXRzeQMQZGVzdKUBDHhjbYEDNFJlcG9ydEhvbGRpbmcAAAg0cmVzcG9uc2VfaW5mb10DGGFzc2V0c3kDMEJ1eUV4ZWN1dGlvbgAACBBmZWVztQEwd2VpZ2h0X2xpbWl0bQE0UmVmdW5kU3VycGx1cwABBTxTZXRFcnJvckhhbmRsZXIBgQMsU2V0QXBwZW5kaXgBgQMoQ2xlYXJFcnJvcgABBShDbGFpbUFzc2V0AAAIGGFzc2V0c7kBGHRpY2tldKUBEFRyYXABCEBTdWJzY3JpYmVWZXJzaW9uAAAIIHF1ZXJ5X2lkCExtYXhfcmVzcG9uc2Vfd2VpZ2h0GEhVbnN1YnNjcmliZVZlcnNpb24AAQUkQnVybkFzc2V0AbkBLEV4cGVjdEFzc2V0AbkBMEV4cGVjdE9yaWdpbgFZAyxFeHBlY3RFcnJvcgFRA1BFeHBlY3RUcmFuc2FjdFN0YXR1cwFJASxRdWVyeVBhbGxldAAACCxtb2R1bGVfbmFtZSQ0cmVzcG9uc2VfaW5mb10DMEV4cGVjdFBhbGxldAAAFBRpbmRleAQQbmFtZSQsbW9kdWxlX25hbWUkLGNyYXRlX21ham9yBDxtaW5fY3JhdGVfbWlub3IEUFJlcG9ydFRyYW5zYWN0U3RhdHVzAV0DTENsZWFyVHJhbnNhY3RTdGF0dXMAAQU8VW5pdmVyc2FsT3JpZ2luAZ0BNEV4cG9ydE1lc3NhZ2UAAAwcbmV0d29ya5UBLGRlc3RpbmF0aW9uoQEMeGNtgQMkTG9ja0Fzc2V0AAAIFGFzc2V0tQEgdW5sb2NrZXKlASxVbmxvY2tBc3NldAAACBRhc3NldLUBGHRhcmdldKUBOE5vdGVVbmxvY2thYmxlAAAIFGFzc2V0tQEUb3duZXKlATRSZXF1ZXN0VW5sb2NrAAAIFGFzc2V0tQEYbG9ja2VypQEsU2V0RmVlc01vZGUAAAQwaml0X3dpdGhkcmF3FCBTZXRUb3BpYwEgKENsZWFyVG9waWMAAQUsQWxpYXNPcmlnaW4BpQE8VW5wYWlkRXhlY3V0aW9uAAAIMHdlaWdodF9saW1pdG0BMGNoZWNrX29yaWdpblkDBH0DAAIMCFYzAW0DCFY0AYEDCFY1AY0BAhAgVGVsZXBvcnQAAQUwTG9jYWxSZXNlcnZlAAEFSERlc3RpbmF0aW9uUmVzZXJ2ZQABBTRSZW1vdGVSZXNlcnZlAcEBAgwIVjMBqQEIVjQBpQEIVjUBHQECRBBzZW5kAAAIEGRlc3TBARxtZXNzYWdlhQM8dGVsZXBvcnRfYXNzZXRzAAAQEGRlc3TBASxiZW5lZmljaWFyecEBGGFzc2V0c70BOGZlZV9hc3NldF9pdGVtBFxyZXNlcnZlX3RyYW5zZmVyX2Fzc2V0cwAAEBBkZXN0wQEsYmVuZWZpY2lhcnnBARhhc3NldHO9AThmZWVfYXNzZXRfaXRlbQQcZXhlY3V0ZQAACBxtZXNzYWdlhQMobWF4X3dlaWdodBhEZm9yY2VfeGNtX3ZlcnNpb24AAAggbG9jYXRpb24dARx2ZXJzaW9uBGRmb3JjZV9kZWZhdWx0X3hjbV92ZXJzaW9uAAAERG1heWJlX3hjbV92ZXJzaW9u8QF4Zm9yY2Vfc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5AAAEIGxvY2F0aW9uwQGAZm9yY2VfdW5zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkAAAQgbG9jYXRpb27BAXxsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzAAAUEGRlc3TBASxiZW5lZmljaWFyecEBGGFzc2V0c70BOGZlZV9hc3NldF9pdGVtBDB3ZWlnaHRfbGltaXRtAVxsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0cwAAFBBkZXN0wQEsYmVuZWZpY2lhcnnBARhhc3NldHO9AThmZWVfYXNzZXRfaXRlbQQwd2VpZ2h0X2xpbWl0bQFAZm9yY2Vfc3VzcGVuc2lvbgAABCRzdXNwZW5kZWQUPHRyYW5zZmVyX2Fzc2V0cwAAFBBkZXN0wQEsYmVuZWZpY2lhcnnBARhhc3NldHO9AThmZWVfYXNzZXRfaXRlbQQwd2VpZ2h0X2xpbWl0bQEwY2xhaW1fYXNzZXRzAAAIGGFzc2V0c70BLGJlbmVmaWNpYXJ5wQGMdHJhbnNmZXJfYXNzZXRzX3VzaW5nX3R5cGVfYW5kX3RoZW4AABwQZGVzdMEBGGFzc2V0c70BUGFzc2V0c190cmFuc2Zlcl90eXBliQM4cmVtb3RlX2ZlZXNfaWSNA0hmZWVzX3RyYW5zZmVyX3R5cGWJA0hjdXN0b21feGNtX29uX2Rlc3SFAzB3ZWlnaHRfbGltaXRtAVBhZGRfYXV0aG9yaXplZF9hbGlhcwAACBxhbGlhc2VywQEcZXhwaXJlc8UBXHJlbW92ZV9hdXRob3JpemVkX2FsaWFzAAAEHGFsaWFzZXLBAXRyZW1vdmVfYWxsX2F1dGhvcml6ZWRfYWxpYXNlcwABBQIIJHJlYXBfcGFnZQAACDhtZXNzYWdlX29yaWdpbtEBKHBhZ2VfaW5kZXgESGV4ZWN1dGVfb3ZlcndlaWdodAAAEDhtZXNzYWdlX29yaWdpbtEBEHBhZ2UEFGluZGV4BDB3ZWlnaHRfbGltaXQYAggwY3JlYXRlX2NsYWltAAAEEGhhc2ggMHJldm9rZV9jbGFpbQAABBBoYXNoIAQIARACNDBldGhfdHJhbnNhY3QAAAQccGF5bG9hZCQQY2FsbAAAFBBkZXN07BR2YWx1ZQgwd2VpZ2h0X2xpbWl0GFRzdG9yYWdlX2RlcG9zaXRfbGltaXQIEGRhdGEkLGluc3RhbnRpYXRlAAAYFHZhbHVlCDB3ZWlnaHRfbGltaXQYVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgkY29kZV9oYXNoIBBkYXRhJBBzYWx0kFRpbnN0YW50aWF0ZV93aXRoX2NvZGUAABgUdmFsdWUIMHdlaWdodF9saW1pdBhUc3RvcmFnZV9kZXBvc2l0X2xpbWl0CBBjb2RlJBBkYXRhJBBzYWx0kGRldGhfaW5zdGFudGlhdGVfd2l0aF9jb2RlAAAgFHZhbHVlnQMwd2VpZ2h0X2xpbWl0GDRldGhfZ2FzX2xpbWl0nQMQY29kZSQQZGF0YSRMdHJhbnNhY3Rpb25fZW5jb2RlZCRMZWZmZWN0aXZlX2dhc19wcmljZZ0DLGVuY29kZWRfbGVuBCBldGhfY2FsbAAAIBBkZXN07BR2YWx1ZZ0DMHdlaWdodF9saW1pdBg0ZXRoX2dhc19saW1pdJ0DEGRhdGEkTHRyYW5zYWN0aW9uX2VuY29kZWQkTGVmZmVjdGl2ZV9nYXNfcHJpY2WdAyxlbmNvZGVkX2xlbgRIZXRoX3N1YnN0cmF0ZV9jYWxsAAAIEGNhbGylA0x0cmFuc2FjdGlvbl9lbmNvZGVkJCx1cGxvYWRfY29kZQAACBBjb2RlJFRzdG9yYWdlX2RlcG9zaXRfbGltaXQILHJlbW92ZV9jb2RlAAAEJGNvZGVfaGFzaCAgc2V0X2NvZGUAAAgQZGVzdOwkY29kZV9oYXNoICxtYXBfYWNjb3VudAABBTR1bm1hcF9hY2NvdW50AAEFcGRpc3BhdGNoX2FzX2ZhbGxiYWNrX2FjY291bnQAAAQQY2FsbKUDAjgYU3lzdGVtASkDPFBhcmFjaGFpblN5c3RlbQEtAyRUaW1lc3RhbXABMQM0UGFyYWNoYWluSW5mbwG4IEJhbGFuY2VzATUDEFN1ZG8BOQNEQ29sbGF0b3JTZWxlY3Rpb24BPQMcU2Vzc2lvbgFBAyRYY21wUXVldWUBRQMsUG9sa2Fkb3RYY20BkQMoQ3VtdWx1c1hjbQG4ME1lc3NhZ2VRdWV1ZQGVAzhUZW1wbGF0ZVBhbGxldAGZAxhSZXZpdmUBoQMACAx3aG8AHGRlcG9zaXQIBKkDAAMIACAEsQMAAwgoJAMICAQEBAACCAhPawABBSRTdXNwZW5kZWQAAQUAFCRyZWNpcGllbnQEFHN0YXRlxQM0c2lnbmFsc19leGlzdBQsZmlyc3RfaW5kZXgEKGxhc3RfaW5kZXgEBMkDAAMIBAQADERzdXNwZW5kX3RocmVzaG9sZAQ4ZHJvcF90aHJlc2hvbGQEQHJlc3VtZV90aHJlc2hvbGQEBsEBBQEIBt0DAgwIVjMBVQMIVjQBcQMIVjUBTQECDBxQZW5kaW5nAAAQJHJlc3BvbmRlcsEBTG1heWJlX21hdGNoX3F1ZXJpZXLZAzBtYXliZV9ub3RpZnnhAxx0aW1lb3V0BDxWZXJzaW9uTm90aWZpZXIAAAgYb3JpZ2luwQEkaXNfYWN0aXZlFBRSZWFkeQAACCByZXNwb25zZeUDCGF0BAMIBMEBAwwIGAQDCMEBBAT1AwACEFxNaWdyYXRlU3VwcG9ydGVkVmVyc2lvbgABBVxNaWdyYXRlVmVyc2lvbk5vdGlmaWVycwABBVBOb3RpZnlDdXJyZW50VGFyZ2V0cwH5AWhNaWdyYXRlQW5kTm90aWZ5T2xkVGFyZ2V0cwABBQMMBACNAwMIuAgEBQQAABAYYW1vdW50CBRvd25lcsEBGGxvY2tlcsEBJGNvbnN1bWVycwkEAwgIwQEEEQQAAAggbG9jYXRpb27BARhleHBpcnnFAQQZBAAABCBhbGlhc2Vycx0EAAgQcHJldtEBEG5leHTRAQYlBAAYFGJlZ2luBAxlbmQEFGNvdW50BEByZWFkeV9uZWlnaGJvdXJzKQQ0bWVzc2FnZV9jb3VudAgQc2l6ZQgDCNEBBAAYJHJlbWFpbmluZwQ4cmVtYWluaW5nX3NpemUELGZpcnN0X2luZGV4BBRmaXJzdAQQbGFzdAQQaGVhcCQACBRvd25lcgAwYmxvY2tfbnVtYmVyBAIIDFB2bQABBQxFdm0AAQUAGBRvd25lcgAcZGVwb3NpdAggcmVmY291bnQIIGNvZGVfbGVuBCRjb2RlX3R5cGU9BERiZWhhdmlvdXJfdmVyc2lvbgQAIBx0cmllX2lkJCRjb2RlX2hhc2ggNHN0b3JhZ2VfYnl0ZXMENHN0b3JhZ2VfaXRlbXMEUHN0b3JhZ2VfYnl0ZV9kZXBvc2l0CFBzdG9yYWdlX2l0ZW1fZGVwb3NpdAhQc3RvcmFnZV9iYXNlX2RlcG9zaXQISGltbXV0YWJsZV9kYXRhX2xlbgQCCCBDb250cmFjdAFFBAxFT0EAAQUACDBhY2NvdW50X3R5cGVJBBBkdXN0BAAIOGluc2VydF9jb3VudGVyBDhkZWxldGVfY291bnRlcgQFAQEEBp0DAAgcYWRkcmVzc+wwc3RvcmFnZV9rZXlzCQIEXQQAABggY2hhaW5faWSdAxxhZGRyZXNz7BRub25jZZ0DIHlfcGFyaXR5nQMEcp0DBHOdAwRlBAAAMCxhY2Nlc3NfbGlzdGEESGF1dGhvcml6YXRpb25fbGlzdGkEIGNoYWluX2lknQMMZ2FznQMkZ2FzX3ByaWNlnQMUaW5wdXQkPG1heF9mZWVfcGVyX2dhc50DYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc50DFG5vbmNlnQMIdG/sGHIjdHlwZQQUdmFsdWWdAwAUZHRyYW5zYWN0aW9uXzc3MDJfdW5zaWduZWRtBARynQMEc50DBHZZBCB5X3Bhcml0eZ0DADAsYWNjZXNzX2xpc3RhBFRibG9iX3ZlcnNpb25lZF9oYXNoZXMJAiBjaGFpbl9pZJ0DDGdhc50DFGlucHV0JFBtYXhfZmVlX3Blcl9ibG9iX2dhc50DPG1heF9mZWVfcGVyX2dhc50DYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc50DFG5vbmNlnQMIdG/sGHIjdHlwZQQUdmFsdWWdAwAQZHRyYW5zYWN0aW9uXzQ4NDRfdW5zaWduZWR1BARynQMEc50DIHlfcGFyaXR5nQMG7AAsLGFjY2Vzc19saXN0YQQgY2hhaW5faWSdAwxnYXOdAyRnYXNfcHJpY2WdAxRpbnB1dCQ8bWF4X2ZlZV9wZXJfZ2FznQNgbWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FznQMUbm9uY2WdAwh0b30EGHIjdHlwZQQUdmFsdWWdAwAUZHRyYW5zYWN0aW9uXzE1NTlfdW5zaWduZWSBBARynQMEc50DBHZZBCB5X3Bhcml0eZ0DACQsYWNjZXNzX2xpc3RhBCBjaGFpbl9pZJ0DDGdhc50DJGdhc19wcmljZZ0DFGlucHV0JBRub25jZZ0DCHRvfQQYciN0eXBlBBR2YWx1ZZ0DABRkdHJhbnNhY3Rpb25fMjkzMF91bnNpZ25lZIkEBHKdAwRznQMEdlkEIHlfcGFyaXR5nQMAICBjaGFpbl9pZFkEDGdhc50DJGdhc19wcmljZZ0DFGlucHV0JBRub25jZZ0DCHRvfQQYciN0eXBlBBR2YWx1ZZ0DABBsdHJhbnNhY3Rpb25fbGVnYWN5X3Vuc2lnbmVkkQQEcp0DBHOdAwR2nQMCFFRUcmFuc2FjdGlvbjc3MDJTaWduZWQBcQRUVHJhbnNhY3Rpb240ODQ0U2lnbmVkAXkEVFRyYW5zYWN0aW9uMTU1OVNpZ25lZAGFBFRUcmFuc2FjdGlvbjI5MzBTaWduZWQBjQRcVHJhbnNhY3Rpb25MZWdhY3lTaWduZWQBlQQAGChibG9ja19oYXNoIDBibG9ja19udW1iZXKdAxBmcm9t7BBoYXNoIER0cmFuc2FjdGlvbl9pbmRleJ0DSHRyYW5zYWN0aW9uX3NpZ25lZJkEBJ0EAAIIGEhhc2hlcwEJAkBUcmFuc2FjdGlvbkluZm9zAaEEABAcYWRkcmVzc+wYYW1vdW50nQMUaW5kZXidAzx2YWxpZGF0b3JfaW5kZXidAwSpBAAAbEBiYXNlX2ZlZV9wZXJfZ2FznQM0YmxvYl9nYXNfdXNlZJ0DKGRpZmZpY3VsdHmdAzxleGNlc3NfYmxvYl9nYXOdAyhleHRyYV9kYXRhJCRnYXNfbGltaXSdAyBnYXNfdXNlZJ0DEGhhc2ggKGxvZ3NfYmxvb21VBBRtaW5lcuwgbWl4X2hhc2ggFG5vbmNlIQEYbnVtYmVynQNgcGFyZW50X2JlYWNvbl9ibG9ja19yb290kCxwYXJlbnRfaGFzaCA0cmVjZWlwdHNfcm9vdCA0cmVxdWVzdHNfaGFzaJAwc2hhXzNfdW5jbGVzIBBzaXplnQMoc3RhdGVfcm9vdCAkdGltZXN0YW1wnQNAdG90YWxfZGlmZmljdWx0eVkEMHRyYW5zYWN0aW9uc6UERHRyYW5zYWN0aW9uc19yb290IBh1bmNsZXMJAix3aXRoZHJhd2Fsc60EQHdpdGhkcmF3YWxzX3Jvb3QgAAggZ2FzX3VzZWSdA0xlZmZlY3RpdmVfZ2FzX3ByaWNlnQMEtQQAACgMa2V5JCh2YWx1ZV90eXBlBDRidWlsZGVyX3ZhbHVlJBRzdGFja1kCLHN0YXRlX21hc2tzwQModHJlZV9tYXNrc8EDKGhhc2hfbWFza3PBA0hzdG9yZWRfaW5fZGF0YWJhc2UUHHJscF9idWYkFGluZGV4CAAgYHRyYW5zYWN0aW9uX3Jvb3RfYnVpbGRlcr0EVHJlY2VpcHRzX3Jvb3RfYnVpbGRlcr0EQGJhc2VfZmVlX3Blcl9nYXOdAzxibG9ja19nYXNfbGltaXSdAyBnYXNfdXNlZJ0DKGxvZ3NfYmxvb21VBCR0eF9oYXNoZXMJAiBnYXNfaW5mb7kEBlECAAx0YWxsb3dfdW5saW1pdGVkX2NvbnRyYWN0X3NpemUUPGJ5cGFzc19laXBfMzYwNxQgcHZtX2xvZ3MUAAgYaGVhZGVyvQIoZXh0cmluc2ljc1kCAgg0QWxsRXh0cmluc2ljcwABBTRPbmx5SW5oZXJlbnRzAAEFAAgYcHJlZml4JQEYc3VmZml4JQECDDhOb3RJbXBsZW1lbnRlZAABBSBOb3RGb3VuZAHVBBRDb2RlYwABBQck2QQCNBBDYWxsAAEFHFBheW1lbnQAAQUYRnV0dXJlAAEFFFN0YWxlAAEFIEJhZFByb29mAAEFREFuY2llbnRCaXJ0aEJsb2NrAAEFREV4aGF1c3RzUmVzb3VyY2VzAAEFGEN1c3RvbQEEMEJhZE1hbmRhdG9yeQABBUxNYW5kYXRvcnlWYWxpZGF0aW9uAAEFJEJhZFNpZ25lcgABBVRJbmRldGVybWluYXRlSW1wbGljaXQAAQU0VW5rbm93bk9yaWdpbgABBQIMMENhbm5vdExvb2t1cAABBUxOb1Vuc2lnbmVkVmFsaWRhdG9yAAEFGEN1c3RvbQEEAggcSW52YWxpZAHhBBxVbmtub3duAeUEB7zpBAMIIQEkBPEEAAAMEG9rYXkULGZhdGFsX2Vycm9yFBhlcnJvcnP1BAIMHEluQmxvY2sAAQUUTG9jYWwAAQUgRXh0ZXJuYWwAAQUAFCBwcmlvcml0eQggcmVxdWlyZXNZAiBwcm92aWRlc1kCJGxvbmdldml0eQgkcHJvcGFnYXRlFAcBBekEAwgkKAQJBQAGDQUADBh3ZWlnaHQYFGNsYXNzOCxwYXJ0aWFsX2ZlZQgADCBiYXNlX2ZlZQgcbGVuX2ZlZQhMYWRqdXN0ZWRfd2VpZ2h0X2ZlZQgGGQUACDRpbmNsdXNpb25fZmVlHQUMdGlwCAAYPHVwd2FyZF9tZXNzYWdlc1kCTGhvcml6b250YWxfbWVzc2FnZXO5AkxuZXdfdmFsaWRhdGlvbl9jb2Rl+QFscHJvY2Vzc2VkX2Rvd253YXJkX21lc3NhZ2VzBDhocm1wX3dhdGVybWFyawQkaGVhZF9kYXRhJAIMFENoYWluAAEFHE5ldHdvcmsAAQUUTG9jYWwAAQUACCRtYXhfY291bnQEIG1heF9zaXplBAIMIEJhZFByb29mAAEFHE5vUHJvb2YAAQU0SW50ZXJuYWxFcnJvcgABBQctBTEFB7glAgYlAgQlAgACCBhSZWZ1bmQBCBhDaGFyZ2UBCAAIFGZsYWdzBBBkYXRhJAdJBYgAGDx3ZWlnaHRfY29uc3VtZWQYPHdlaWdodF9yZXF1aXJlZBg8c3RvcmFnZV9kZXBvc2l0RQVMbWF4X3N0b3JhZ2VfZGVwb3NpdEUFMGdhc19jb25zdW1lZAgYcmVzdWx0TQUCCBhVcGxvYWQBJCBFeGlzdGluZwEgAAgYcmVzdWx0SQUQYWRkcuwHWQWIABg8d2VpZ2h0X2NvbnN1bWVkGDx3ZWlnaHRfcmVxdWlyZWQYPHN0b3JhZ2VfZGVwb3NpdEUFTG1heF9zdG9yYWdlX2RlcG9zaXRFBTBnYXNfY29uc3VtZWQIGHJlc3VsdF0FBmEEAAgUaW5wdXT5ARBkYXRh+QEAQCxhY2Nlc3NfbGlzdGUFSGF1dGhvcml6YXRpb25fbGlzdGkEVGJsb2JfdmVyc2lvbmVkX2hhc2hlcwkCFGJsb2JzWQIgY2hhaW5faWRZBBBmcm9tfQQMZ2FzWQQkZ2FzX3ByaWNlWQQUaW5wdXRpBVBtYXhfZmVlX3Blcl9ibG9iX2dhc1kEPG1heF9mZWVfcGVyX2dhc1kEYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc1kEFG5vbmNlWQQIdG99BBhyI3R5cGXxARR2YWx1ZVkEABQ8d2VpZ2h0X3JlcXVpcmVkGDxzdG9yYWdlX2RlcG9zaXQITG1heF9zdG9yYWdlX2RlcG9zaXQIHGV0aF9nYXOdAxBkYXRhJAIIEERhdGEBJBxNZXNzYWdlASUCB3EFdQUACEh0aW1lc3RhbXBfb3ZlcnJpZGXFASByZXNlcnZlZBQACCRjb2RlX2hhc2ggHGRlcG9zaXQIB4EFiAIMLERvZXNudEV4aXN0AAEFREtleURlY29kaW5nRmFpbGVkAAEFSFN0b3JhZ2VXcml0ZUZhaWxlZAGIB/kBiQUACCR3aXRoX2xvZ3MUNG9ubHlfdG9wX2NhbGwUBpEFAAwkZGlmZl9tb2RlFDxkaXNhYmxlX3N0b3JhZ2UUMGRpc2FibGVfY29kZRQGmQUCCChDYWxsVHJhY2VyAZUFOFByZXN0YXRlVHJhY2VyAZ0FBLUFAAAQHGFkZHJlc3PsGHRvcGljcwkCEGRhdGEkIHBvc2l0aW9uBASpBQACGBBDYWxsAAEFKFN0YXRpY0NhbGwAAQUwRGVsZWdhdGVDYWxsAAEFGENyZWF0ZQABBRxDcmVhdGUyAAEFMFNlbGZkZXN0cnVjdAABBQA0EGZyb23sDGdhc50DIGdhc191c2VknQMIdG/sFGlucHV0JBhvdXRwdXQkFGVycm9yPQU0cmV2ZXJ0X3JlYXNvbj0FFGNhbGxzpQUQbG9nc60FFHZhbHVlWQQkY2FsbF90eXBlsQVAY2hpbGRfY2FsbF9jb3VudAQDCCT5AQS5BQAAEBxiYWxhbmNlWQQUbm9uY2XxARBjb2Rl+QEcc3RvcmFnZb0FAwjswQUExQUAAgggUHJlc3RhdGUByQUgRGlmZk1vZGUAAAgMcHJlyQUQcG9zdMkFAggQQ2FsbAG1BSBQcmVzdGF0ZQHNBQMIBNEFBNUFAAbRBQfRBXUFAggUVmFsdWUAAQUQRHVzdAABBQe9A+UFAgQwVG9vTWFueUNhbGxzAAEFAjgoQmFkQ29udGV4dAABBSxCYWREYXRhU2l6ZQABBUxUb29NYW55VHJhbnNhY3Rpb25zAAEFNE5vdENvbmZpZ3VyZWQAAQU8UmVuZXdlZE5vdEZvdW5kAAEFPFVuZXhwZWN0ZWRQcm9vZgABBTBJbnZhbGlkUHJvb2YAAQUwTWlzc2luZ1Byb29mAAEFQE1pc3NpbmdTdGF0ZURhdGEAAQUsRG91YmxlQ2hlY2sAAQU8UHJvb2ZOb3RDaGVja2VkAAEFVEF1dGhvcml6YXRpb25Ob3RGb3VuZAABBVxBdXRob3JpemF0aW9uTm90RXhwaXJlZAABBUhJbnZhbGlkQ29udGVudEhhc2gAAQUCUBhTeXN0ZW0BRDxQYXJhY2hhaW5TeXN0ZW0BSCRUaW1lc3RhbXAAAQU0UGFyYWNoYWluSW5mbwABBTRXZWlnaHRSZWNsYWltAAEFHFV0aWxpdHkB7QUgQmFsYW5jZXMBTEhUcmFuc2FjdGlvblBheW1lbnQAAQVIU2tpcEZlZWxlc3NQYXltZW50AAEFSFRyYW5zYWN0aW9uU3RvcmFnZQHxBShBdXRob3JzaGlwAAEFRENvbGxhdG9yU2VsZWN0aW9uAVQcU2Vzc2lvbgFYEEF1cmEAAQUcQXVyYUV4dAABBSRYY21wUXVldWUBXCxQb2xrYWRvdFhjbQFkKEN1bXVsdXNYY20AAQUwTWVzc2FnZVF1ZXVlAWgQU3VkbwFQAjwUT3RoZXIAAQUwQ2Fubm90TG9va3VwAAEFJEJhZE9yaWdpbgABBRhNb2R1bGUB9QVEQ29uc3VtZXJSZW1haW5pbmcAAQUsTm9Qcm92aWRlcnMAAQVAVG9vTWFueUNvbnN1bWVycwABBRRUb2tlbgF4KEFyaXRobWV0aWMBfDRUcmFuc2FjdGlvbmFsAYAkRXhoYXVzdGVkAAEFKENvcnJ1cHRpb24AAQUsVW5hdmFpbGFibGUAAQU4Um9vdE5vdEFsbG93ZWQAAQUQVHJpZQGEAiBARXh0cmluc2ljU3VjY2VzcwAABDRkaXNwYXRjaF9pbmZvQDxFeHRyaW5zaWNGYWlsZWQAAAg4ZGlzcGF0Y2hfZXJyb3L5BTRkaXNwYXRjaF9pbmZvQCxDb2RlVXBkYXRlZAABBShOZXdBY2NvdW50AAAEHGFjY291bnQANEtpbGxlZEFjY291bnQAAAQcYWNjb3VudAAgUmVtYXJrZWQAAAgYc2VuZGVyABBoYXNoIERVcGdyYWRlQXV0aG9yaXplZAAACCRjb2RlX2hhc2ggNGNoZWNrX3ZlcnNpb24UgFJlamVjdGVkSW52YWxpZEF1dGhvcml6ZWRVcGdyYWRlAAAIJGNvZGVfaGFzaCAUZXJyb3L5BQe4+QUCIEBCYXRjaEludGVycnVwdGVkAAAIFGluZGV4BBRlcnJvcvkFOEJhdGNoQ29tcGxldGVkAAEFYEJhdGNoQ29tcGxldGVkV2l0aEVycm9ycwABBTRJdGVtQ29tcGxldGVkAAEFKEl0ZW1GYWlsZWQAAAQUZXJyb3L5BTBEaXNwYXRjaGVkQXMAAAQYcmVzdWx0AQZESWZFbHNlTWFpblN1Y2Nlc3MAAQVQSWZFbHNlRmFsbGJhY2tDYWxsZWQAAAQobWFpbl9lcnJvcvkFAgQ4U3RvcmFnZUZlZUhvbGQAAQUCDEhUcmFuc2FjdGlvblN0b3JhZ2UBCQYcU2Vzc2lvbgGcLFBvbGthZG90WGNtAaACeBxFbmRvd2VkAAAIHGFjY291bnQAMGZyZWVfYmFsYW5jZQggRHVzdExvc3QAAAgcYWNjb3VudAAYYW1vdW50CCBUcmFuc2ZlcgAADBBmcm9tAAh0bwAYYW1vdW50CChCYWxhbmNlU2V0AAAIDHdobwAQZnJlZQggUmVzZXJ2ZWQAAAgMd2hvABhhbW91bnQIKFVucmVzZXJ2ZWQAAAgMd2hvABhhbW91bnQISFJlc2VydmVSZXBhdHJpYXRlZAAAEBBmcm9tAAh0bwAYYW1vdW50CEhkZXN0aW5hdGlvbl9zdGF0dXOYHERlcG9zaXQAAAgMd2hvABhhbW91bnQIIFdpdGhkcmF3AAAIDHdobwAYYW1vdW50CBxTbGFzaGVkAAAIDHdobwAYYW1vdW50CBhNaW50ZWQAAAgMd2hvABhhbW91bnQIME1pbnRlZENyZWRpdAAABBhhbW91bnQIGEJ1cm5lZAAACAx3aG8AGGFtb3VudAgoQnVybmVkRGVidAAABBhhbW91bnQIJFN1c3BlbmRlZAAACAx3aG8AGGFtb3VudAggUmVzdG9yZWQAAAgMd2hvABhhbW91bnQIIFVwZ3JhZGVkAAAEDHdobwAYSXNzdWVkAAAEGGFtb3VudAgkUmVzY2luZGVkAAAEGGFtb3VudAgYTG9ja2VkAAAIDHdobwAYYW1vdW50CCBVbmxvY2tlZAAACAx3aG8AGGFtb3VudAgYRnJvemVuAAAIDHdobwAYYW1vdW50CBhUaGF3ZWQAAAgMd2hvABhhbW91bnQITFRvdGFsSXNzdWFuY2VGb3JjZWQAAAgMb2xkCAxuZXcIEEhlbGQAAAwYcmVhc29uDQYMd2hvABhhbW91bnQIKEJ1cm5lZEhlbGQAAAwYcmVhc29uDQYMd2hvABhhbW91bnQIOFRyYW5zZmVyT25Ib2xkAAAQGHJlYXNvbg0GGHNvdXJjZQAQZGVzdAAYYW1vdW50CDxUcmFuc2ZlckFuZEhvbGQAABAYcmVhc29uDQYYc291cmNlABBkZXN0ACx0cmFuc2ZlcnJlZAggUmVsZWFzZWQAAAwYcmVhc29uDQYMd2hvABhhbW91bnQIKFVuZXhwZWN0ZWQBrAIQEFJvb3QAAQUYU2lnbmVkAQAQTm9uZQABBShBdXRob3JpemVkAAEFAggcQWNjb3VudAEAIFByZWltYWdlASACBChBdXRob3JpemVkAAAIDHdobwAUc2NvcGUZBgIIDFhjbQEdASBSZXNwb25zZQEdAQIIFFJlbGF5AAEFQFNpYmxpbmdQYXJhY2hhaW4BBAIQGHN5c3RlbQEVBkhUcmFuc2FjdGlvblN0b3JhZ2UBHQYsUG9sa2Fkb3RYY20BIQYoQ3VtdWx1c1hjbQElBgIEKEZlZVNraXBwZWQAAAQYb3JpZ2luKQYCJBhTdG9yZWQAAAwUaW5kZXgEMGNvbnRlbnRfaGFzaCAMY2lk+QEcUmVuZXdlZAAACBRpbmRleAQwY29udGVudF9oYXNoIDBQcm9vZkNoZWNrZWQAAQVEQWNjb3VudEF1dGhvcml6ZWQAAAwMd2hvADB0cmFuc2FjdGlvbnMEFGJ5dGVzCHRBY2NvdW50QXV0aG9yaXphdGlvblJlZnJlc2hlZAAABAx3aG8ASFByZWltYWdlQXV0aG9yaXplZAAACDBjb250ZW50X2hhc2ggIG1heF9zaXplCHhQcmVpbWFnZUF1dGhvcml6YXRpb25SZWZyZXNoZWQAAAQwY29udGVudF9oYXNoIIhFeHBpcmVkQWNjb3VudEF1dGhvcml6YXRpb25SZW1vdmVkAAAEDHdobwCMRXhwaXJlZFByZWltYWdlQXV0aG9yaXphdGlvblJlbW92ZWQAAAQwY29udGVudF9oYXNoIAIQFFN1ZGlkAAAELHN1ZG9fcmVzdWx0AQYoS2V5Q2hhbmdlZAAACAxvbGTADG5ldwAoS2V5UmVtb3ZlZAABBShTdWRvQXNEb25lAAAELHN1ZG9fcmVzdWx0AQYCOBhTeXN0ZW0B/QU8UGFyYWNoYWluU3lzdGVtAZQcVXRpbGl0eQEFBiBCYWxhbmNlcwERBkhUcmFuc2FjdGlvblBheW1lbnQBtEhTa2lwRmVlbGVzc1BheW1lbnQBLQZIVHJhbnNhY3Rpb25TdG9yYWdlATEGRENvbGxhdG9yU2VsZWN0aW9uAcwcU2Vzc2lvbgHQJFhjbXBRdWV1ZQHULFBvbGthZG90WGNtAckBKEN1bXVsdXNYY20BzQEwTWVzc2FnZVF1ZXVlAdkBEFN1ZG8BNQYADBRwaGFzZTQUZXZlbnQ5Bhh0b3BpY3MJAgQ9BgAACAxtYXg9AjxtYXhfaGVhZGVyX3NpemXxAQIgFGJhdGNoAAAEFGNhbGxzZQY0YXNfZGVyaXZhdGl2ZQAACBRpbmRleAQQY2FsbGEGJGJhdGNoX2FsbAAABBRjYWxsc2UGLGRpc3BhdGNoX2FzAAAIJGFzX29yaWdpbikGEGNhbGxhBixmb3JjZV9iYXRjaAAABBRjYWxsc2UGLHdpdGhfd2VpZ2h0AAAIEGNhbGxhBhh3ZWlnaHQYHGlmX2Vsc2UAAAgQbWFpbmEGIGZhbGxiYWNrYQZQZGlzcGF0Y2hfYXNfZmFsbGlibGUAAAgkYXNfb3JpZ2luKQYQY2FsbGEGAgwoQmxha2UyYjI1NgABBSBTaGEyXzI1NgABBSRLZWNjYWsyNTYAAQUACBRjb2RlYwgcaGFzaGluZ00GAAgUY2h1bmskFHByb29mWQICKBRzdG9yZQAABBBkYXRhJFRzdG9yZV93aXRoX2NpZF9jb25maWcAAAgMY2lkUQYQZGF0YSQUcmVuZXcAAAgUYmxvY2sEFGluZGV4BCxjaGVja19wcm9vZgAABBRwcm9vZlUGRGF1dGhvcml6ZV9hY2NvdW50AAAMDHdobwAwdHJhbnNhY3Rpb25zBBRieXRlcwhIYXV0aG9yaXplX3ByZWltYWdlAAAIMGNvbnRlbnRfaGFzaCAgbWF4X3NpemUIkHJlbW92ZV9leHBpcmVkX2FjY291bnRfYXV0aG9yaXphdGlvbgAABAx3aG8AlHJlbW92ZV9leHBpcmVkX3ByZWltYWdlX2F1dGhvcml6YXRpb24AAAQwY29udGVudF9oYXNoIHRyZWZyZXNoX2FjY291bnRfYXV0aG9yaXphdGlvbgAABAx3aG8AeHJlZnJlc2hfcHJlaW1hZ2VfYXV0aG9yaXphdGlvbgAABDBjb250ZW50X2hhc2ggAhQQc3VkbwAABBBjYWxsYQZUc3Vkb191bmNoZWNrZWRfd2VpZ2h0AAAIEGNhbGxhBhh3ZWlnaHQYHHNldF9rZXkAAAQMbmV3HQMcc3Vkb19hcwAACAx3aG8dAxBjYWxsYQYocmVtb3ZlX2tleQABBQI4GFN5c3RlbQEpAzxQYXJhY2hhaW5TeXN0ZW0BLQMkVGltZXN0YW1wATEDNFBhcmFjaGFpbkluZm8BuBxVdGlsaXR5AUkGIEJhbGFuY2VzATUDSFRyYW5zYWN0aW9uU3RvcmFnZQFZBkRDb2xsYXRvclNlbGVjdGlvbgE9AxxTZXNzaW9uAUEDJFhjbXBRdWV1ZQFFAyxQb2xrYWRvdFhjbQGRAyhDdW11bHVzWGNtAbgwTWVzc2FnZVF1ZXVlAZUDEFN1ZG8BXQYEYQYAAAgIaWQNBhhhbW91bnQIBGkGAAAIMHRyYW5zYWN0aW9ucwQUYnl0ZXMIAAgYZXh0ZW50cQYoZXhwaXJhdGlvbgQAGChjaHVua19yb290IDBjb250ZW50X2hhc2ggHGhhc2hpbmdNBiRjaWRfY29kZWMIEHNpemUEMGJsb2NrX2NodW5rcwQEeQYAAAggYWxpYXNlcnMdBBh0aWNrZXQIBwEG6QQACBBrZXlzJBRwcm9vZiQEjQMAAhg0VW5pbXBsZW1lbnRlZAABBWRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEFTFdlaWdodE5vdENvbXB1dGFibGUAAQVMVW5oYW5kbGVkWGNtVmVyc2lvbgABBTRBc3NldE5vdEZvdW5kAAEFKFVucm91dGFibGUAAQUHjQaRBgcYkQYHCJEGB70BkQYACDRhY3R1YWxfd2VpZ2h0WQEgcGF5c19mZWU8AAgkcG9zdF9pbmZvpQYUZXJyb3L5BQelBqkGBDkGAAaFAwSFAwADCMEBuQYEvQYAABBAZXhlY3V0aW9uX3Jlc3VsdK0GOGVtaXR0ZWRfZXZlbnRzsQYkbG9jYWxfeGNttQY4Zm9yd2FyZGVkX3hjbXPBBgIINFVuaW1wbGVtZW50ZWQAAQVkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABBQfFBskGAAxAZXhlY3V0aW9uX3Jlc3VsdOA4ZW1pdHRlZF9ldmVudHOxBjhmb3J3YXJkZWRfeGNtc8EGB9EGyQYCCCxVbnN1cHBvcnRlZAABBWRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEFBwDZBgIMCFYzAa0BCFY0AbUBCFY1ATEBAgh4VmVyc2lvbmVkQXNzZXRDb252ZXJzaW9uRmFpbGVkAAEFhFZlcnNpb25lZExvY2F0aW9uQ29udmVyc2lvbkZhaWxlZAABBQcU5QYCBHxMb2NhdGlvblZlcnNpb25Db252ZXJzaW9uRmFpbGVkAAEFBx0E7QYHFO0G"; + content = "dQUAAAAQAQEFAAQBAQUAFAEBBQAcAAQAIAAEACQBAQUAIAEBBQAwAQEFABkCACAAIQIBAQUAKQIBAQUANAEBBQAtAgEBBQAYAQEFADkCAQEFAD0CAQEFAEECAQEFAE0CAQAEGHJlbWFyayQBAQUBAAQUcGFnZXMIAQEFAQAEEGNvZGUkAQEFAQAEFGl0ZW1zVQIBAQUBAAQQa2V5c1kCAQEFAQAIGHByZWZpeCQcc3Via2V5cwQBAQUBAAQkY29kZV9oYXNoIAEBBQEBBQEABDRkaXNwYXRjaF9pbmZvQAEBBQEACDhkaXNwYXRjaF9lcnJvcog0ZGlzcGF0Y2hfaW5mb0ABAQUBAQUBAQUBAAQcYWNjb3VudAABAQUBAAgYc2VuZGVyABBoYXNoIAEBBQEACCRjb2RlX2hhc2ggNGNoZWNrX3ZlcnNpb24UAQEFAQAIJGNvZGVfaGFzaCAUZXJyb3KIAQEFAQEFAQEFAHkCAQEFAH0CAQEFACQBAQUAgQIBAQUAiQIBAQUAcQIBAQUAWQIBAQUAnQIBAQUApQIBAQUArQIBAQUAsQIBAQUAuQIBAQUACAEACBBkYXRhxQJUaW5ib3VuZF9tZXNzYWdlc19kYXRh9QIBAQUBAAQcbWVzc2FnZSQBAQUBAQUBAARUcmVsYXlfY2hhaW5fYmxvY2tfbnVtBAEBBQEABBRjb3VudAQBAQUBAAgsd2VpZ2h0X3VzZWQYIGRtcV9oZWFkIAEBBQEABDBtZXNzYWdlX2hhc2iQAQAEDG5vdwgBAQUAAAAMAAAAAQMAAAAJAwAAABEDAAAAGQMBAAgQZGVzdB0DFHZhbHVlCAEBBQEADBhzb3VyY2UdAxBkZXN0HQMUdmFsdWUIAQEFAQAIEGRlc3QdAyhrZWVwX2FsaXZlFAEBBQEACAx3aG8dAxhhbW91bnQIAQEFAQAEDHdob8gBAQUBAAgMd2hvHQMgbmV3X2ZyZWUIAQEFAQAIJGRpcmVjdGlvbiEDFGRlbHRhCAEBBQEACBR2YWx1ZQgoa2VlcF9hbGl2ZRQBAQUBAQUBAAgcYWNjb3VudAAwZnJlZV9iYWxhbmNlCAEBBQEACBxhY2NvdW50ABhhbW91bnQIAQEFAQAMEGZyb20ACHRvABhhbW91bnQIAQEFAQAIDHdobwAQZnJlZQgBAQUBAAgMd2hvABhhbW91bnQIAQEFAQAQEGZyb20ACHRvABhhbW91bnQISGRlc3RpbmF0aW9uX3N0YXR1c5gBAQUBAAQYYW1vdW50CAEBBQEABAx3aG8AAQEFAQAIDG9sZAgMbmV3CAEBBQEADBhyZWFzb26oDHdobwAYYW1vdW50CAEBBQEAEBhyZWFzb26oGHNvdXJjZQAQZGVzdAAYYW1vdW50CAEBBQEAEBhyZWFzb26oGHNvdXJjZQAQZGVzdAAsdHJhbnNmZXJyZWQIAQEFAKwBAQUAJQMBAQUBAAwMd2hvAChhY3R1YWxfZmVlCAx0aXAIAQEFAAABAAQQY2FsbKUDAQEFAQAIEGNhbGylAxh3ZWlnaHQYAQEFAQAEDG5ldx0DAQEFAQAIDHdobx0DEGNhbGylAwEBBQEBBQEBBQEBBQEABCxzdWRvX3Jlc3VsdLwBAQUBAAgMb2xkwAxuZXcAAQEFAMgBAQUArQMAAAAEAQEFACEBAQAEDG5ld8gBAQUBAAQMbWF4BAEBBQEABBBib25kCAEBBQEABAx3aG8AAQEFAQAELG5ld19kZXBvc2l0CAEBBQEACBxkZXBvc2l0CBh0YXJnZXQAAQEFAQEFAQAENGludnVsbmVyYWJsZXPIAQEFAQAEKGFjY291bnRfaWQAAQEFAQAESGRlc2lyZWRfY2FuZGlkYXRlcwQBAQUBAAQsYm9uZF9hbW91bnQIAQEFAQAIKGFjY291bnRfaWQAHGRlcG9zaXQIAQEFAQAMDG9sZAAMbmV3ABxkZXBvc2l0CAEBBQC1AwEBBQAhAgAAACAAuQMAAAAAALgBAAgQa2V5cyAUcHJvb2YkAQEFAQEFAQAENHNlc3Npb25faW5kZXgEAQEFAQAEJHZhbGlkYXRvcgABAQUACQIBAQUAvQMBAQUAwQMBAQUAzQMA0QMAJAEBBQDVAwAEAAgBAAQMbmV3BAEBBQEBBQEABDBtZXNzYWdlX2hhc2ggAAgA6QMAIAAEAO0DAAQA7QMACADtAwDxAwEBBQD5AwEBBQD9AwABBAANBAAAABUEAQEFAI0BAMEBACEEAQEFABkBAQAIEGRlc3TBARxtZXNzYWdlhQMBAQUBABAQZGVzdMEBLGJlbmVmaWNpYXJ5wQEYYXNzZXRzvQE4ZmVlX2Fzc2V0X2l0ZW0EAQEFAQAIHG1lc3NhZ2WFAyhtYXhfd2VpZ2h0GAEBBQEACCBsb2NhdGlvbh0BHHZlcnNpb24EAQEFAQAERG1heWJlX3hjbV92ZXJzaW9u8QEBAQUBAAQgbG9jYXRpb27BAQEBBQEAFBBkZXN0wQEsYmVuZWZpY2lhcnnBARhhc3NldHO9AThmZWVfYXNzZXRfaXRlbQQwd2VpZ2h0X2xpbWl0bQEBAQUBAAQkc3VzcGVuZGVkFAEBBQEACBhhc3NldHO9ASxiZW5lZmljaWFyecEBAQEFAQAcEGRlc3TBARhhc3NldHO9AVBhc3NldHNfdHJhbnNmZXJfdHlwZYkDOHJlbW90ZV9mZWVzX2lkjQNIZmVlc190cmFuc2Zlcl90eXBliQNIY3VzdG9tX3hjbV9vbl9kZXN0hQMwd2VpZ2h0X2xpbWl0bQEBAQUBAAgcYWxpYXNlcsEBHGV4cGlyZXPFAQEBBQEABBxhbGlhc2VywQEBAQUBAQUBAAQcb3V0Y29tZeABAQUBABAYb3JpZ2luHQEsZGVzdGluYXRpb24dARxtZXNzYWdljQEobWVzc2FnZV9pZCABAQUBABAYb3JpZ2luHQEsZGVzdGluYXRpb24dARRlcnJvcpEBKG1lc3NhZ2VfaWQgAQEFAQAMGG9yaWdpbh0BFGVycm9y2ChtZXNzYWdlX2lkIAEBBQEACBhvcmlnaW4dASBxdWVyeV9pZAgBAQUBAAggcXVlcnlfaWQIIHJlc3BvbnNlTQEBAQUBAAwgcXVlcnlfaWQIMHBhbGxldF9pbmRleAQoY2FsbF9pbmRleAQBAQUBABQgcXVlcnlfaWQIMHBhbGxldF9pbmRleAQoY2FsbF9pbmRleAQ0YWN0dWFsX3dlaWdodBhMbWF4X2J1ZGdldGVkX3dlaWdodBgBAQUBAAwYb3JpZ2luHQEgcXVlcnlfaWQIRGV4cGVjdGVkX2xvY2F0aW9uUQEBAQUBAAQgcXVlcnlfaWQIAQEFAQAMEGhhc2ggGG9yaWdpbh0BGGFzc2V0c70BAQEFAQAQLGRlc3RpbmF0aW9uHQEYcmVzdWx0BBBjb3N0NQEobWVzc2FnZV9pZCABAQUBAAggbG9jYXRpb24dARx2ZXJzaW9uBAEBBQEADCBsb2NhdGlvbh0BIHF1ZXJ5X2lkCBRlcnJvctgBAQUBAAggbG9jYXRpb27BASBxdWVyeV9pZAgBAQUBABAYb3JpZ2luHQEgcXVlcnlfaWQIQGV4cGVjdGVkX3F1ZXJpZXIdAVBtYXliZV9hY3R1YWxfcXVlcmllclEBAQEFAQAMLGRlc3RpbmF0aW9uHQEQY29zdDUBKG1lc3NhZ2VfaWQgAQEFAQAIGHBheWluZx0BEGZlZXM1AQEBBQEABBx2ZXJzaW9uBAEBBQEADBxhbGlhc2VyHQEYdGFyZ2V0HQEYZXhwaXJ5xQEBAQUBAAgcYWxpYXNlch0BGHRhcmdldB0BAQEFAQAEGHRhcmdldB0BAQEFAQAIFGluZGV4BBRlcnJvcmABAQUAIAEBBQEDCCDgANEBAC0EAQEFANEBADEEADUEAQEFAFkBAQAIOG1lc3NhZ2Vfb3JpZ2lu0QEocGFnZV9pbmRleAQBAQUBABA4bWVzc2FnZV9vcmlnaW7RARBwYWdlBBRpbmRleAQwd2VpZ2h0X2xpbWl0GAEBBQEBBQEADAhpZCAYb3JpZ2lu0QEUZXJyb3LVAQEBBQEAEAhpZCAYb3JpZ2lu0QEsd2VpZ2h0X3VzZWQYHHN1Y2Nlc3MUAQEFAQAQCGlkIBhvcmlnaW7RAShwYWdlX2luZGV4BDRtZXNzYWdlX2luZGV4BAEBBQEACBhvcmlnaW7RARRpbmRleAQBAQUBAAgcYWNjb3VudAAkc3RhdGVtZW50/QEAIAA5BAEABBBoYXNoIAEBBQEBBQEACAx3aG8AEGhhc2ggACAAJAAgAEEEAOwATQQA7AAkAQEFAFEEAOwAAAEBBQCxBAEBBQC5BAEBBQDBBAEBBQDFBAEBBQDJBAEABBxwYXlsb2FkJAEBBQEAFBBkZXN07BR2YWx1ZQgwd2VpZ2h0X2xpbWl0GFRzdG9yYWdlX2RlcG9zaXRfbGltaXQIEGRhdGEkAQEFAQAYFHZhbHVlCDB3ZWlnaHRfbGltaXQYVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgkY29kZV9oYXNoIBBkYXRhJBBzYWx0kAEBBQEAGBR2YWx1ZQgwd2VpZ2h0X2xpbWl0GFRzdG9yYWdlX2RlcG9zaXRfbGltaXQIEGNvZGUkEGRhdGEkEHNhbHSQAQEFAQAgFHZhbHVlnQMwd2VpZ2h0X2xpbWl0GDRldGhfZ2FzX2xpbWl0nQMQY29kZSQQZGF0YSRMdHJhbnNhY3Rpb25fZW5jb2RlZCRMZWZmZWN0aXZlX2dhc19wcmljZZ0DLGVuY29kZWRfbGVuBAEBBQEAIBBkZXN07BR2YWx1ZZ0DMHdlaWdodF9saW1pdBg0ZXRoX2dhc19saW1pdJ0DEGRhdGEkTHRyYW5zYWN0aW9uX2VuY29kZWQkTGVmZmVjdGl2ZV9nYXNfcHJpY2WdAyxlbmNvZGVkX2xlbgQBAQUBAAgQY2FsbKUDTHRyYW5zYWN0aW9uX2VuY29kZWQkAQEFAQAIEGNvZGUkVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgBAQUBAAgQZGVzdOwkY29kZV9oYXNoIAEBBQEBBQEADCBjb250cmFjdOwQZGF0YSQYdG9waWNzCQIBAQUBAAggZGVwbG95ZXLsIGNvbnRyYWN07AEBBQEABDhkaXNwYXRjaF9lcnJvcogBAwAACAEDAAAJAgEDCCAIABQBAwAATQIBAwTNBAC4AQMEvQIA0QQBAwAAJAEDBAQA+QEBAwAAwQMBAwjVBCQA3QQBAwQkAO0EAQMAAL0CAQME9QQAWQIBAwjNBPUEAPkEAQMM/QQkIAAFBQEDBL0CALgBAwT5AQAkAQMEJAARBQEDBAAABAEDCCQEABUFAQMIJAQAIQUBAwQYAAgBAwQEAAgBAwilAwQAFQUBAwilAwQAIQUBAwS9AgAlBQEDCCkF/QEANQUBAwQkADkFAQMEPQUA+QEBAwAAQQUBAwAAsQQBAwSdAwCQAQMAALkEAQMAAJ0DAQME7ACdAwEDBOwABAEDGADsCFkBxQEkAFEFAQMcAAhZAcUBVQUkkABhBQEDBG0FAHkFAQMIbQV9BQB5BQEDDAAkxQEAhQUBAwjsIACNBQEDCOwkAI0FAQMIzQShBQDZBQEDDM0EBKEFAN0FAQMIbQWhBQDhBQEDAADsAQMEAADsAQME7AAAAQME7AAkAQMEnQMA6QUBAQUAUQYBAQUAVQYBAQUBAAg4ZGlzcGF0Y2hfZXJyb3IBBjRkaXNwYXRjaF9pbmZvQAEBBQEABBBoYXNoIAEBBQEACCRjb2RlX2hhc2ggFGVycm9yAQYBAQUAWQYBAQUAXQYBAAQUY2FsbHO1BgEBBQEACBRpbmRleAQQY2FsbLEGAQEFAQAIJGFzX29yaWdpbjUGEGNhbGyxBgEBBQEACBBjYWxssQYYd2VpZ2h0GAEBBQEACBBtYWlusQYgZmFsbGJhY2uxBgEBBQEBBQEACBRpbmRleAQUZXJyb3IBBgEBBQEABBRlcnJvcgEGAQEFAQAEGHJlc3VsdAkGAQEFAQAEKG1haW5fZXJyb3IBBgEBBQBpBgAkALgBAwAAuQYBAwAAwQYBAwAAWQIBAwAAxQYBAAQYY3Vyc29ybQYBAQUBAAwUaW5kZXgEMGlubmVyX2N1cnNvcvkBKHN0YXJ0ZWRfYXTxAQEBBQEABCBzZWxlY3RvcnEGAQEFAQEFAQAEKG1pZ3JhdGlvbnMEAQEFAQAEFGluZGV4BAEBBQEACBRpbmRleAQQdG9vawQBAQUBAAQsbmV4dF9jdXJzb3L5AQAAAM0GAQEFAQAMGHJlYXNvbhkGDHdobwAYYW1vdW50CAEBBQEAEBhyZWFzb24ZBhhzb3VyY2UAEGRlc3QAGGFtb3VudAgBAQUBABAYcmVhc29uGQYYc291cmNlABBkZXN0ACx0cmFuc2ZlcnJlZAgBAQUBAAQYb3JpZ2luNQYAJQYA1QYAAACRBgAEAOEGAQEFAOEGACAAHQIBAQUA5QYBAAQQZGF0YSQBAQUBAAgMY2lkfQYQZGF0YSQBAQUBAAwMd2hvADB0cmFuc2FjdGlvbnMEFGJ5dGVzCAEBBQEACDBjb250ZW50X2hhc2ggIG1heF9zaXplCAEBBQEABDBjb250ZW50X2hhc2ggAQEFAQAEFHByb29mhQYBAQUBAAgMd2hvABhidWRnZXSRBgEBBQEBBQEADBRpbmRleAQwY29udGVudF9oYXNoIAxjaWT5AQEBBQEADAx3aG8AMHRyYW5zYWN0aW9ucwQUYnl0ZXMIAQEFAQAIMGNvbnRlbnRfaGFzaCAgbWF4X3NpemUIAQEFAQAEMGNvbnRlbnRfaGFzaCABABAYc2lnbmVymQYkc2lnbmF0dXJlnQZAc3VibWl0X3RpbWVzdGFtcAgQZGF0YSQBAQUBABQYc2lnbmVymQYkc2lnbmF0dXJlnQZAc3VibWl0X3RpbWVzdGFtcAg8cmVjaXBpZW50c19oYXNoIBBkYXRhJAEBBQAgAOkGAQEFAPEGAQAEFGVudHJ5pQYBAQUBAQUBAAgUaW5kZXgEMGNvbnRlbnRfaGFzaCABAQUBAAwwY29udGVudF9oYXNoIAx3aG8AJHJlY3VycmluZxQBAQUBAAgwY29udGVudF9oYXNoIAx3aG8AAQEFAQAMFGluZGV4BDBjb250ZW50X2hhc2ggHGFjY291bnQAAQEFAQAIMGNvbnRlbnRfaGFzaCAcYWNjb3VudAABAQUBAAQQdXNlZAgBAQUBAAgQdXNlZAgMY2FwCAEBBQD5BgDBAQD9BgEABBBjYWxssQYBAQUBAAgMd2hvHQMQY2FsbLEGAQEFAQEFAQAELHN1ZG9fcmVzdWx0CQYBAwAABAEDBCQAAQcBAwgk+QEABQcBAwixBgQAFQUBAwixBgQAIQUBAwQEABEHAQMEhQMAFQcBAwgYjQMAGQcBAwzBAYUDjQMAHQcBAww1BrEGBABJBwEDCMEBhQMAUQcBAwTBAQBZBwEDCF0HwQEAZQcBAwTBAQBtBwEDCMEBwQEAcQcBAwQEAHkHAQMIAAQAFAEDECSZBp0GCAAkAQMEIAAUAQMEAACBBwEDCAAEABQBAwgApQYAFIUHAQEBAgEDABAQZnJlZQggcmVzZXJ2ZWQIGGZyb3plbggUZmxhZ3MIABQUbm9uY2UEJGNvbnN1bWVycwQkcHJvdmlkZXJzBCxzdWZmaWNpZW50cwQQZGF0YQwBAAAIIHJlZl90aW1lCChwcm9vZl9zaXplCAAMGG5vcm1hbBgsb3BlcmF0aW9uYWwYJG1hbmRhdG9yeRgFAYAFAAUBEAIUKFByZVJ1bnRpbWUAAwgoJCRDb25zZW5zdXMAAwgoJBBTZWFsAAMIKCQUT3RoZXIBJGRSdW50aW1lRW52aXJvbm1lbnRVcGRhdGVkAAEFBCwAAgw4QXBwbHlFeHRyaW5zaWMBBDBGaW5hbGl6YXRpb24AAQU4SW5pdGlhbGl6YXRpb24AAQUCDBhOb3JtYWwAAQUsT3BlcmF0aW9uYWwAAQUkTWFuZGF0b3J5AAEFAggMWWVzAAEFCE5vAAEFAAwYd2VpZ2h0GBRjbGFzczggcGF5c19mZWU8AiQ8SW52YWxpZFNwZWNOYW1lAAEFaFNwZWNWZXJzaW9uTmVlZHNUb0luY3JlYXNlAAEFdEZhaWxlZFRvRXh0cmFjdFJ1bnRpbWVWZXJzaW9uAAEFTE5vbkRlZmF1bHRDb21wb3NpdGUAAQU8Tm9uWmVyb1JlZkNvdW50AAEFMENhbGxGaWx0ZXJlZAABBWxNdWx0aUJsb2NrTWlncmF0aW9uc09uZ29pbmcAAQVETm90aGluZ0F1dGhvcml6ZWQAAQUwVW5hdXRob3JpemVkAAEFAhhMT3ZlcmxhcHBpbmdVcGdyYWRlcwABBVBQcm9oaWJpdGVkQnlQb2xrYWRvdAABBRhUb29CaWcAAQVoVmFsaWRhdGlvbkRhdGFOb3RBdmFpbGFibGUAAQV0SG9zdENvbmZpZ3VyYXRpb25Ob3RBdmFpbGFibGUAAQUwTm90U2NoZWR1bGVkAAEFAjA4VmVzdGluZ0JhbGFuY2UAAQVUTGlxdWlkaXR5UmVzdHJpY3Rpb25zAAEFTEluc3VmZmljaWVudEJhbGFuY2UAAQVIRXhpc3RlbnRpYWxEZXBvc2l0AAEFNEV4cGVuZGFiaWxpdHkAAQVcRXhpc3RpbmdWZXN0aW5nU2NoZWR1bGUAAQUsRGVhZEFjY291bnQAAQU8VG9vTWFueVJlc2VydmVzAAEFMFRvb01hbnlIb2xkcwABBThUb29NYW55RnJlZXplcwABBUxJc3N1YW5jZURlYWN0aXZhdGVkAAEFJERlbHRhWmVybwABBQIELFJlcXVpcmVTdWRvAAEFAkREVG9vTWFueUNhbmRpZGF0ZXMAAQVcVG9vRmV3RWxpZ2libGVDb2xsYXRvcnMAAQVAQWxyZWFkeUNhbmRpZGF0ZQABBTBOb3RDYW5kaWRhdGUAAQVQVG9vTWFueUludnVsbmVyYWJsZXMAAQVMQWxyZWFkeUludnVsbmVyYWJsZQABBTxOb3RJbnZ1bG5lcmFibGUAAQVcTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQAAQVYVmFsaWRhdG9yTm90UmVnaXN0ZXJlZAABBWxJbnNlcnRUb0NhbmRpZGF0ZUxpc3RGYWlsZWQAAQV0UmVtb3ZlRnJvbUNhbmRpZGF0ZUxpc3RGYWlsZWQAAQU0RGVwb3NpdFRvb0xvdwABBWRVcGRhdGVDYW5kaWRhdGVMaXN0RmFpbGVkAAEFQEluc3VmZmljaWVudEJvbmQAAQVQVGFyZ2V0SXNOb3RDYW5kaWRhdGUAAQVASWRlbnRpY2FsRGVwb3NpdAABBUBJbnZhbGlkVW5yZXNlcnZlAAEFAhQwSW52YWxpZFByb29mAAEFXE5vQXNzb2NpYXRlZFZhbGlkYXRvcklkAAEFNER1cGxpY2F0ZWRLZXkAAQUYTm9LZXlzAAEFJE5vQWNjb3VudAABBQIUOEJhZFF1ZXVlQ29uZmlnAAEFQEFscmVhZHlTdXNwZW5kZWQAAQU4QWxyZWFkeVJlc3VtZWQAAQV0VG9vTWFueUFjdGl2ZU91dGJvdW5kQ2hhbm5lbHMAAQUYVG9vQmlnAAEFAqQgT3ZlcmZsb3cAAQU0VW5pbXBsZW1lbnRlZAABBWBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAQVkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgABBTBMb2NhdGlvbkZ1bGwAAQVUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAEFJEJhZE9yaWdpbgABBTxJbnZhbGlkTG9jYXRpb24AAQU0QXNzZXROb3RGb3VuZAABBVRGYWlsZWRUb1RyYW5zYWN0QXNzZXQAAQU8Tm90V2l0aGRyYXdhYmxlAAEFSExvY2F0aW9uQ2Fubm90SG9sZAABBVRFeGNlZWRzTWF4TWVzc2FnZVNpemUAAQVYRGVzdGluYXRpb25VbnN1cHBvcnRlZAABBSRUcmFuc3BvcnQAAQUoVW5yb3V0YWJsZQABBTBVbmtub3duQ2xhaW0AAQU4RmFpbGVkVG9EZWNvZGUAAQVATWF4V2VpZ2h0SW52YWxpZAABBThOb3RIb2xkaW5nRmVlcwABBTBUb29FeHBlbnNpdmUAAQUQVHJhcAABBUBFeHBlY3RhdGlvbkZhbHNlAAEFOFBhbGxldE5vdEZvdW5kAAEFME5hbWVNaXNtYXRjaAABBUxWZXJzaW9uSW5jb21wYXRpYmxlAAEFUEhvbGRpbmdXb3VsZE92ZXJmbG93AAEFLEV4cG9ydEVycm9yAAEFOFJlYW5jaG9yRmFpbGVkAAEFGE5vRGVhbAABBShGZWVzTm90TWV0AAEFJExvY2tFcnJvcgABBTBOb1Blcm1pc3Npb24AAQUoVW5hbmNob3JlZAABBThOb3REZXBvc2l0YWJsZQABBTRUb29NYW55QXNzZXRzAAEFTFVuaGFuZGxlZFhjbVZlcnNpb24AAQVIV2VpZ2h0TGltaXRSZWFjaGVkAAEFHEJhcnJpZXIAAQVMV2VpZ2h0Tm90Q29tcHV0YWJsZQABBURFeGNlZWRzU3RhY2tMaW1pdAABBQJwLFVucmVhY2hhYmxlAAEFLFNlbmRGYWlsdXJlAAEFIEZpbHRlcmVkAAEFSFVud2VpZ2hhYmxlTWVzc2FnZQABBWBEZXN0aW5hdGlvbk5vdEludmVydGlibGUAAQUURW1wdHkAAQU4Q2Fubm90UmVhbmNob3IAAQU0VG9vTWFueUFzc2V0cwABBTRJbnZhbGlkT3JpZ2luAAEFKEJhZFZlcnNpb24AAQUsQmFkTG9jYXRpb24AAQU4Tm9TdWJzY3JpcHRpb24AAQVEQWxyZWFkeVN1YnNjcmliZWQAAQVYQ2Fubm90Q2hlY2tPdXRUZWxlcG9ydAABBShMb3dCYWxhbmNlAAEFMFRvb01hbnlMb2NrcwABBUxBY2NvdW50Tm90U292ZXJlaWduAAEFKEZlZXNOb3RNZXQAAQUwTG9ja05vdEZvdW5kAAEFFEluVXNlAAEFaEludmFsaWRBc3NldFVua25vd25SZXNlcnZlAAEFeEludmFsaWRBc3NldFVuc3VwcG9ydGVkUmVzZXJ2ZQABBTxUb29NYW55UmVzZXJ2ZXMAAQVgTG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlAAEFYFRvb01hbnlBdXRob3JpemVkQWxpYXNlcwABBTRFeHBpcmVzSW5QYXN0AAEFNEFsaWFzTm90Rm91bmQAAQWETG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlV2l0aEVycm9yAAAIFGluZGV4BBRlcnJvcmACJCxOb3RSZWFwYWJsZQABBRhOb1BhZ2UAAQUkTm9NZXNzYWdlAAEFQEFscmVhZHlQcm9jZXNzZWQAAQUYUXVldWVkAAEFSEluc3VmZmljaWVudFdlaWdodAABBWBUZW1wb3JhcmlseVVucHJvY2Vzc2FibGUAAQUsUXVldWVQYXVzZWQAAQVMUmVjdXJzaXZlRGlzYWxsb3dlZAABBQIMOEFscmVhZHlDbGFpbWVkAAEFNE5vdENsYWltT3duZXIAAQU0Q2xhaW1Ob3RGb3VuZAABBQLgPEludmFsaWRTY2hlZHVsZQABBUBJbnZhbGlkQ2FsbEZsYWdzAAEFIE91dE9mR2FzAAEFOFRyYW5zZmVyRmFpbGVkAAEFTE1heENhbGxEZXB0aFJlYWNoZWQAAQVAQ29udHJhY3ROb3RGb3VuZAABBTBDb2RlTm90Rm91bmQAAQVAQ29kZUluZm9Ob3RGb3VuZAABBSxPdXRPZkJvdW5kcwABBThEZWNvZGluZ0ZhaWxlZAABBTxDb250cmFjdFRyYXBwZWQAAQU0VmFsdWVUb29MYXJnZQABBWBUZXJtaW5hdGVkV2hpbGVSZWVudHJhbnQAAQU4SW5wdXRGb3J3YXJkZWQAAQU0VG9vTWFueVRvcGljcwABBUREdXBsaWNhdGVDb250cmFjdAABBVxUZXJtaW5hdGVkSW5Db25zdHJ1Y3RvcgABBUBSZWVudHJhbmNlRGVuaWVkAAEFPFJlZW50ZXJlZFBhbGxldAABBURTdGF0ZUNoYW5nZURlbmllZAABBXBTdG9yYWdlRGVwb3NpdE5vdEVub3VnaEZ1bmRzAAEFcFN0b3JhZ2VEZXBvc2l0TGltaXRFeGhhdXN0ZWQAAQUkQ29kZUluVXNlAAEFQENvbnRyYWN0UmV2ZXJ0ZWQAAQUwQ29kZVJlamVjdGVkAAEFMEJsb2JUb29MYXJnZQABBVBTdGF0aWNNZW1vcnlUb29MYXJnZQABBUhCYXNpY0Jsb2NrVG9vTGFyZ2UAAQVISW52YWxpZEluc3RydWN0aW9uAAEFeE1heERlbGVnYXRlRGVwZW5kZW5jaWVzUmVhY2hlZAABBWhEZWxlZ2F0ZURlcGVuZGVuY3lOb3RGb3VuZAABBXxEZWxlZ2F0ZURlcGVuZGVuY3lBbHJlYWR5RXhpc3RzAAEFhENhbm5vdEFkZFNlbGZBc0RlbGVnYXRlRGVwZW5kZW5jeQABBVRPdXRPZlRyYW5zaWVudFN0b3JhZ2UAAQU4SW52YWxpZFN5c2NhbGwAAQVMSW52YWxpZFN0b3JhZ2VGbGFncwABBTxFeGVjdXRpb25GYWlsZWQAAQVcQmFsYW5jZUNvbnZlcnNpb25GYWlsZWQAAQVYSW52YWxpZEltbXV0YWJsZUFjY2VzcwABBTxBY2NvdW50VW5tYXBwZWQAAQVQQWNjb3VudEFscmVhZHlNYXBwZWQAAQVkSW52YWxpZEdlbmVyaWNUcmFuc2FjdGlvbgABBVxSZWZjb3VudE92ZXJPclVuZGVyZmxvdwABBXBVbnN1cHBvcnRlZFByZWNvbXBpbGVBZGRyZXNzAAEFQENhbGxEYXRhVG9vTGFyZ2UAAQVIUmV0dXJuRGF0YVRvb0xhcmdlAAEFLEludmFsaWRKdW1wAAEFOFN0YWNrVW5kZXJmbG93AAEFNFN0YWNrT3ZlcmZsb3cAAQU0VHhGZWVPdmVyZHJhdwABBWhFdm1Db25zdHJ1Y3Rvck5vbkVtcHR5RGF0YQABBVhFdm1Db25zdHJ1Y3RlZEZyb21IYXNoAAEFbFN0b3JhZ2VSZWZ1bmROb3RFbm91Z2hGdW5kcwABBUxTdG9yYWdlUmVmdW5kTG9ja2VkAAEFYFByZWNvbXBpbGVEZWxlZ2F0ZURlbmllZAABBUxFY2RzYVJlY292ZXJ5RmFpbGVkAAEFAlAYU3lzdGVtAUQ8UGFyYWNoYWluU3lzdGVtAUgkVGltZXN0YW1wAAEFNFBhcmFjaGFpbkluZm8AAQU0V2VpZ2h0UmVjbGFpbQABBSBCYWxhbmNlcwFMSFRyYW5zYWN0aW9uUGF5bWVudAABBRBTdWRvAVAoQXV0aG9yc2hpcAABBURDb2xsYXRvclNlbGVjdGlvbgFUHFNlc3Npb24BWBBBdXJhAAEFHEF1cmFFeHQAAQUkWGNtcFF1ZXVlAVwsUG9sa2Fkb3RYY20BZChDdW11bHVzWGNtAAEFME1lc3NhZ2VRdWV1ZQFoJFN0YXRlbWVudAABBThUZW1wbGF0ZVBhbGxldAFsGFJldml2ZQFwAihARnVuZHNVbmF2YWlsYWJsZQABBTBPbmx5UHJvdmlkZXIAAQUwQmVsb3dNaW5pbXVtAAEFMENhbm5vdENyZWF0ZQABBTBVbmtub3duQXNzZXQAAQUYRnJvemVuAAEFLFVuc3VwcG9ydGVkAAEFQENhbm5vdENyZWF0ZUhvbGQAAQU0Tm90RXhwZW5kYWJsZQABBRxCbG9ja2VkAAEFAgwkVW5kZXJmbG93AAEFIE92ZXJmbG93AAEFOERpdmlzaW9uQnlaZXJvAAEFAggwTGltaXRSZWFjaGVkAAEFHE5vTGF5ZXIAAQUCOEBJbnZhbGlkU3RhdGVSb290AAEFSEluY29tcGxldGVEYXRhYmFzZQABBVBWYWx1ZUF0SW5jb21wbGV0ZUtleQABBTBEZWNvZGVyRXJyb3IAAQUsSW52YWxpZEhhc2gAAQUwRHVwbGljYXRlS2V5AAEFOEV4dHJhbmVvdXNOb2RlAAEFPEV4dHJhbmVvdXNWYWx1ZQABBVxFeHRyYW5lb3VzSGFzaFJlZmVyZW5jZQABBVRJbnZhbGlkQ2hpbGRSZWZlcmVuY2UAAQU0VmFsdWVNaXNtYXRjaAABBTxJbmNvbXBsZXRlUHJvb2YAAQUwUm9vdE1pc21hdGNoAAEFLERlY29kZUVycm9yAAEFAjwUT3RoZXIAAQUwQ2Fubm90TG9va3VwAAEFJEJhZE9yaWdpbgABBRhNb2R1bGUBdERDb25zdW1lclJlbWFpbmluZwABBSxOb1Byb3ZpZGVycwABBUBUb29NYW55Q29uc3VtZXJzAAEFFFRva2VuAXgoQXJpdGhtZXRpYwF8NFRyYW5zYWN0aW9uYWwBgCRFeGhhdXN0ZWQAAQUoQ29ycnVwdGlvbgABBSxVbmF2YWlsYWJsZQABBThSb290Tm90QWxsb3dlZAABBRBUcmllAYQCIEBFeHRyaW5zaWNTdWNjZXNzAAAENGRpc3BhdGNoX2luZm9APEV4dHJpbnNpY0ZhaWxlZAAACDhkaXNwYXRjaF9lcnJvcog0ZGlzcGF0Y2hfaW5mb0AsQ29kZVVwZGF0ZWQAAQUoTmV3QWNjb3VudAAABBxhY2NvdW50ADRLaWxsZWRBY2NvdW50AAAEHGFjY291bnQAIFJlbWFya2VkAAAIGHNlbmRlcgAQaGFzaCBEVXBncmFkZUF1dGhvcml6ZWQAAAgkY29kZV9oYXNoIDRjaGVja192ZXJzaW9uFIBSZWplY3RlZEludmFsaWRBdXRob3JpemVkVXBncmFkZQAACCRjb2RlX2hhc2ggFGVycm9yiAYgAhhgVmFsaWRhdGlvbkZ1bmN0aW9uU3RvcmVkAAEFZFZhbGlkYXRpb25GdW5jdGlvbkFwcGxpZWQAAARUcmVsYXlfY2hhaW5fYmxvY2tfbnVtBGxWYWxpZGF0aW9uRnVuY3Rpb25EaXNjYXJkZWQAAQVgRG93bndhcmRNZXNzYWdlc1JlY2VpdmVkAAAEFGNvdW50BGREb3dud2FyZE1lc3NhZ2VzUHJvY2Vzc2VkAAAILHdlaWdodF91c2VkGCBkbXFfaGVhZCBEVXB3YXJkTWVzc2FnZVNlbnQAAAQwbWVzc2FnZV9oYXNokAIIEEZyZWUAAQUgUmVzZXJ2ZWQAAQUCBBBLZXlzAAEFAgQ4QXV0aG9yaXplQWxpYXMAAQUCDGBDb2RlVXBsb2FkRGVwb3NpdFJlc2VydmUAAQVUU3RvcmFnZURlcG9zaXRSZXNlcnZlAAEFOEFkZHJlc3NNYXBwaW5nAAEFAgwcU2Vzc2lvbgGcLFBvbGthZG90WGNtAaAYUmV2aXZlAaQCCDhCYWxhbmNlVXBkYXRlZAABBVRGYWlsZWRUb011dGF0ZUFjY291bnQAAQUCeBxFbmRvd2VkAAAIHGFjY291bnQAMGZyZWVfYmFsYW5jZQggRHVzdExvc3QAAAgcYWNjb3VudAAYYW1vdW50CCBUcmFuc2ZlcgAADBBmcm9tAAh0bwAYYW1vdW50CChCYWxhbmNlU2V0AAAIDHdobwAQZnJlZQggUmVzZXJ2ZWQAAAgMd2hvABhhbW91bnQIKFVucmVzZXJ2ZWQAAAgMd2hvABhhbW91bnQISFJlc2VydmVSZXBhdHJpYXRlZAAAEBBmcm9tAAh0bwAYYW1vdW50CEhkZXN0aW5hdGlvbl9zdGF0dXOYHERlcG9zaXQAAAgMd2hvABhhbW91bnQIIFdpdGhkcmF3AAAIDHdobwAYYW1vdW50CBxTbGFzaGVkAAAIDHdobwAYYW1vdW50CBhNaW50ZWQAAAgMd2hvABhhbW91bnQIME1pbnRlZENyZWRpdAAABBhhbW91bnQIGEJ1cm5lZAAACAx3aG8AGGFtb3VudAgoQnVybmVkRGVidAAABBhhbW91bnQIJFN1c3BlbmRlZAAACAx3aG8AGGFtb3VudAggUmVzdG9yZWQAAAgMd2hvABhhbW91bnQIIFVwZ3JhZGVkAAAEDHdobwAYSXNzdWVkAAAEGGFtb3VudAgkUmVzY2luZGVkAAAEGGFtb3VudAgYTG9ja2VkAAAIDHdobwAYYW1vdW50CCBVbmxvY2tlZAAACAx3aG8AGGFtb3VudAgYRnJvemVuAAAIDHdobwAYYW1vdW50CBhUaGF3ZWQAAAgMd2hvABhhbW91bnQITFRvdGFsSXNzdWFuY2VGb3JjZWQAAAgMb2xkCAxuZXcIEEhlbGQAAAwYcmVhc29uqAx3aG8AGGFtb3VudAgoQnVybmVkSGVsZAAADBhyZWFzb26oDHdobwAYYW1vdW50CDhUcmFuc2Zlck9uSG9sZAAAEBhyZWFzb26oGHNvdXJjZQAQZGVzdAAYYW1vdW50CDxUcmFuc2ZlckFuZEhvbGQAABAYcmVhc29uqBhzb3VyY2UAEGRlc3QALHRyYW5zZmVycmVkCCBSZWxlYXNlZAAADBhyZWFzb26oDHdobwAYYW1vdW50CChVbmV4cGVjdGVkAawCBEhUcmFuc2FjdGlvbkZlZVBhaWQAAAwMd2hvAChhY3R1YWxfZmVlCAx0aXAIAQUHuIgGAAIQFFN1ZGlkAAAELHN1ZG9fcmVzdWx0vChLZXlDaGFuZ2VkAAAIDG9sZMAMbmV3AChLZXlSZW1vdmVkAAEFKFN1ZG9Bc0RvbmUAAAQsc3Vkb19yZXN1bHS8BAAAAihATmV3SW52dWxuZXJhYmxlcwAABDRpbnZ1bG5lcmFibGVzyERJbnZ1bG5lcmFibGVBZGRlZAAABChhY2NvdW50X2lkAExJbnZ1bG5lcmFibGVSZW1vdmVkAAAEKGFjY291bnRfaWQAUE5ld0Rlc2lyZWRDYW5kaWRhdGVzAAAESGRlc2lyZWRfY2FuZGlkYXRlcwRATmV3Q2FuZGlkYWN5Qm9uZAAABCxib25kX2Ftb3VudAg4Q2FuZGlkYXRlQWRkZWQAAAgoYWNjb3VudF9pZAAcZGVwb3NpdAhQQ2FuZGlkYXRlQm9uZFVwZGF0ZWQAAAgoYWNjb3VudF9pZAAcZGVwb3NpdAhAQ2FuZGlkYXRlUmVtb3ZlZAAABChhY2NvdW50X2lkAERDYW5kaWRhdGVSZXBsYWNlZAAADAxvbGQADG5ldwAcZGVwb3NpdAhoSW52YWxpZEludnVsbmVyYWJsZVNraXBwZWQAAAQoYWNjb3VudF9pZAACEChOZXdTZXNzaW9uAAAENHNlc3Npb25faW5kZXgEJE5ld1F1ZXVlZAABBURWYWxpZGF0b3JEaXNhYmxlZAAABCR2YWxpZGF0b3IASFZhbGlkYXRvclJlZW5hYmxlZAAABCR2YWxpZGF0b3IAAgQ8WGNtcE1lc3NhZ2VTZW50AAAEMG1lc3NhZ2VfaGFzaCACpCBPdmVyZmxvdwABBTRVbmltcGxlbWVudGVkAAEFYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgABBWRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAEFMExvY2F0aW9uRnVsbAABBVRMb2NhdGlvbk5vdEludmVydGlibGUAAQUkQmFkT3JpZ2luAAEFPEludmFsaWRMb2NhdGlvbgABBTRBc3NldE5vdEZvdW5kAAEFVEZhaWxlZFRvVHJhbnNhY3RBc3NldAABBTxOb3RXaXRoZHJhd2FibGUAAQVITG9jYXRpb25DYW5ub3RIb2xkAAEFVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQABBVhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAAEFJFRyYW5zcG9ydAABBShVbnJvdXRhYmxlAAEFMFVua25vd25DbGFpbQABBThGYWlsZWRUb0RlY29kZQABBUBNYXhXZWlnaHRJbnZhbGlkAAEFOE5vdEhvbGRpbmdGZWVzAAEFMFRvb0V4cGVuc2l2ZQABBRBUcmFwAQhARXhwZWN0YXRpb25GYWxzZQABBThQYWxsZXROb3RGb3VuZAABBTBOYW1lTWlzbWF0Y2gAAQVMVmVyc2lvbkluY29tcGF0aWJsZQABBVBIb2xkaW5nV291bGRPdmVyZmxvdwABBSxFeHBvcnRFcnJvcgABBThSZWFuY2hvckZhaWxlZAABBRhOb0RlYWwAAQUoRmVlc05vdE1ldAABBSRMb2NrRXJyb3IAAQUwTm9QZXJtaXNzaW9uAAEFKFVuYW5jaG9yZWQAAQU4Tm90RGVwb3NpdGFibGUAAQU0VG9vTWFueUFzc2V0cwABBUxVbmhhbmRsZWRYY21WZXJzaW9uAAEFSFdlaWdodExpbWl0UmVhY2hlZAEYHEJhcnJpZXIAAQVMV2VpZ2h0Tm90Q29tcHV0YWJsZQABBURFeGNlZWRzU3RhY2tMaW1pdAABBQAIFGluZGV4BBRlcnJvctgCDCBDb21wbGV0ZQAABBB1c2VkGChJbmNvbXBsZXRlAAAIEHVzZWQYFGVycm9y3BRFcnJvcgHcAiAkQnlHZW5lc2lzASAYQnlGb3JrAAAIMGJsb2NrX251bWJlcggoYmxvY2tfaGFzaCAgUG9sa2Fkb3QAAQUYS3VzYW1hAAEFIEV0aGVyZXVtAAAEIGNoYWluX2lkCCxCaXRjb2luQ29yZQABBSxCaXRjb2luQ2FzaAABBUBQb2xrYWRvdEJ1bGxldGluAAEFBuQFAVACKBBVbml0AAEFHE1vbmlrZXIBKBRJbmRleAEEJEV4ZWN1dGl2ZQABBSRUZWNobmljYWwAAQUsTGVnaXNsYXRpdmUAAQUgSnVkaWNpYWwAAQUcRGVmZW5zZQABBThBZG1pbmlzdHJhdGlvbgABBSBUcmVhc3VyeQABBQIUFFZvaWNlAAEFHE1lbWJlcnMAAAQUY291bnQEIEZyYWN0aW9uAAAIDG5vbQQUZGVub20EREF0TGVhc3RQcm9wb3J0aW9uAAAIDG5vbQQUZGVub20ESE1vcmVUaGFuUHJvcG9ydGlvbgAACAxub20EFGRlbm9tBAIoJFBhcmFjaGFpbgEELEFjY291bnRJZDMyAAAIHG5ldHdvcmvoCGlkIDhBY2NvdW50SW5kZXg2NAAACBxuZXR3b3Jr6BRpbmRleAgwQWNjb3VudEtleTIwAAAIHG5ldHdvcmvoDGtleew4UGFsbGV0SW5zdGFuY2UBBDBHZW5lcmFsSW5kZXgBCChHZW5lcmFsS2V5AAAIGGxlbmd0aAQQZGF0YSAkT25seUNoaWxkAAEFJFBsdXJhbGl0eQAACAhpZPAQcGFydPQ8R2xvYmFsQ29uc2Vuc3VzAeQE+AEIBPgBDAT4ARAE+AEUBPgBGAT4ARwE+AEgAiQQSGVyZQABBQhYMQH4CFgyAfwIWDMBAQEIWDQBBQEIWDUBCQEIWDYBDQEIWDcBEQEIWDgBFQEACBxwYXJlbnRzBCBpbnRlcmlvchkBBQEgBQFAAhgkVW5kZWZpbmVkAAEFFEluZGV4AQgYQXJyYXk0ASgYQXJyYXk4ASEBHEFycmF5MTYBJQEcQXJyYXkzMgEgAgggRnVuZ2libGUBCCxOb25GdW5naWJsZQEpAQAICGlkHQEMZnVuLQEEMQEAAwgE2AY5AQAYFGluZGV4BBBuYW1lJCxtb2R1bGVfbmFtZSQUbWFqb3IEFG1pbm9yBBRwYXRjaAQEQQEAAgwcU3VjY2VzcwABBRRFcnJvcgEkOFRydW5jYXRlZEVycm9yASQCGBBOdWxsAAEFGEFzc2V0cwE1ATxFeGVjdXRpb25SZXN1bHQBPQEcVmVyc2lvbgEELFBhbGxldHNJbmZvAUUBOERpc3BhdGNoUmVzdWx0AUkBBh0BAhAYTmF0aXZlAAEFQFNvdmVyZWlnbkFjY291bnQAAQUkU3VwZXJ1c2VyAAEFDFhjbQABBQYYAAwsZGVzdGluYXRpb24dASBxdWVyeV9pZAgobWF4X3dlaWdodBgCCCBGdW5naWJsZQABBSxOb25GdW5naWJsZQABBQIQDEFsbAABBRRBbGxPZgAACAhpZB0BDGZ1bmEBKEFsbENvdW50ZWQBBDBBbGxPZkNvdW50ZWQAAAwIaWQdAQxmdW5hARRjb3VudAQCCCBEZWZpbml0ZQE1ARBXaWxkAWUBAggkVW5saW1pdGVkAAEFHExpbWl0ZWQBGAIMIFRlbGVwb3J0AWkBOFJlc2VydmVEZXBvc2l0AWkBPFJlc2VydmVXaXRoZHJhdwFpAQZxAQRxAQAGGQECBDBBc3NldENsYWltZXIAAAQgbG9jYXRpb24dAQSBAQAC0DRXaXRoZHJhd0Fzc2V0ATUBVFJlc2VydmVBc3NldERlcG9zaXRlZAE1AVhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0ATUBNFF1ZXJ5UmVzcG9uc2UAABAgcXVlcnlfaWQIIHJlc3BvbnNlTQEobWF4X3dlaWdodBgccXVlcmllclEBNFRyYW5zZmVyQXNzZXQAAAgYYXNzZXRzNQEsYmVuZWZpY2lhcnkdAVBUcmFuc2ZlclJlc2VydmVBc3NldAAADBhhc3NldHM1ARBkZXN0HQEMeGNtjQEgVHJhbnNhY3QAAAwsb3JpZ2luX2tpbmRVAUxmYWxsYmFja19tYXhfd2VpZ2h0WQEQY2FsbCRkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAAADBhzZW5kZXIEQG1heF9tZXNzYWdlX3NpemUEMG1heF9jYXBhY2l0eQRMSHJtcENoYW5uZWxBY2NlcHRlZAAABCRyZWNpcGllbnQESEhybXBDaGFubmVsQ2xvc2luZwAADCRpbml0aWF0b3IEGHNlbmRlcgQkcmVjaXBpZW50BCxDbGVhck9yaWdpbgABBTREZXNjZW5kT3JpZ2luARkBLFJlcG9ydEVycm9yAV0BMERlcG9zaXRBc3NldAAACBhhc3NldHNpASxiZW5lZmljaWFyeR0BTERlcG9zaXRSZXNlcnZlQXNzZXQAAAwYYXNzZXRzaQEQZGVzdB0BDHhjbY0BNEV4Y2hhbmdlQXNzZXQAAAwQZ2l2ZWkBEHdhbnQ1ARxtYXhpbWFsFFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwAADBhhc3NldHNpARxyZXNlcnZlHQEMeGNtjQFASW5pdGlhdGVUZWxlcG9ydAAADBhhc3NldHNpARBkZXN0HQEMeGNtjQE0UmVwb3J0SG9sZGluZwAACDRyZXNwb25zZV9pbmZvXQEYYXNzZXRzaQEwQnV5RXhlY3V0aW9uAAAIEGZlZXMxATB3ZWlnaHRfbGltaXRtATRSZWZ1bmRTdXJwbHVzAAEFPFNldEVycm9ySGFuZGxlcgGNASxTZXRBcHBlbmRpeAGNAShDbGVhckVycm9yAAEFKENsYWltQXNzZXQAAAgYYXNzZXRzNQEYdGlja2V0HQEQVHJhcAEIQFN1YnNjcmliZVZlcnNpb24AAAggcXVlcnlfaWQITG1heF9yZXNwb25zZV93ZWlnaHQYSFVuc3Vic2NyaWJlVmVyc2lvbgABBSRCdXJuQXNzZXQBNQEsRXhwZWN0QXNzZXQBNQEwRXhwZWN0T3JpZ2luAVEBLEV4cGVjdEVycm9yAT0BUEV4cGVjdFRyYW5zYWN0U3RhdHVzAUkBLFF1ZXJ5UGFsbGV0AAAILG1vZHVsZV9uYW1lJDRyZXNwb25zZV9pbmZvXQEwRXhwZWN0UGFsbGV0AAAUFGluZGV4BBBuYW1lJCxtb2R1bGVfbmFtZSQsY3JhdGVfbWFqb3IEPG1pbl9jcmF0ZV9taW5vcgRQUmVwb3J0VHJhbnNhY3RTdGF0dXMBXQFMQ2xlYXJUcmFuc2FjdFN0YXR1cwABBTxVbml2ZXJzYWxPcmlnaW4B+DRFeHBvcnRNZXNzYWdlAAAMHG5ldHdvcmvkLGRlc3RpbmF0aW9uGQEMeGNtjQEkTG9ja0Fzc2V0AAAIFGFzc2V0MQEgdW5sb2NrZXIdASxVbmxvY2tBc3NldAAACBRhc3NldDEBGHRhcmdldB0BOE5vdGVVbmxvY2thYmxlAAAIFGFzc2V0MQEUb3duZXIdATRSZXF1ZXN0VW5sb2NrAAAIFGFzc2V0MQEYbG9ja2VyHQEsU2V0RmVlc01vZGUAAAQwaml0X3dpdGhkcmF3FCBTZXRUb3BpYwEgKENsZWFyVG9waWMAAQUsQWxpYXNPcmlnaW4BHQE8VW5wYWlkRXhlY3V0aW9uAAAIMHdlaWdodF9saW1pdG0BMGNoZWNrX29yaWdpblEBHFBheUZlZXMAAAQUYXNzZXQxAUBJbml0aWF0ZVRyYW5zZmVyAAAULGRlc3RpbmF0aW9uHQEscmVtb3RlX2ZlZXN1ATxwcmVzZXJ2ZV9vcmlnaW4UGGFzc2V0c3kBKHJlbW90ZV94Y22NAURFeGVjdXRlV2l0aE9yaWdpbgAACERkZXNjZW5kYW50X29yaWdpbn0BDHhjbY0BIFNldEhpbnRzAAAEFGhpbnRzhQEEiQEAAhw0Tm90QXBwbGljYWJsZQABBSRUcmFuc3BvcnQAAQUoVW5yb3V0YWJsZQABBVhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAAEFVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQABBTxNaXNzaW5nQXJndW1lbnQAAQUQRmVlcwABBQIsJEJ5R2VuZXNpcwEgGEJ5Rm9yawAACDBibG9ja19udW1iZXIIKGJsb2NrX2hhc2ggIFBvbGthZG90AAEFGEt1c2FtYQABBRxXZXN0ZW5kAAEFGFJvY29jbwABBRhXb2NvY28AAQUgRXRoZXJldW0AAAQgY2hhaW5faWQILEJpdGNvaW5Db3JlAAEFLEJpdGNvaW5DYXNoAAEFQFBvbGthZG90QnVsbGV0aW4AAQUGlQECKCRQYXJhY2hhaW4BBCxBY2NvdW50SWQzMgAACBxuZXR3b3JrmQEIaWQgOEFjY291bnRJbmRleDY0AAAIHG5ldHdvcmuZARRpbmRleAgwQWNjb3VudEtleTIwAAAIHG5ldHdvcmuZAQxrZXnsOFBhbGxldEluc3RhbmNlAQQwR2VuZXJhbEluZGV4AQgoR2VuZXJhbEtleQAACBhsZW5ndGgEEGRhdGEgJE9ubHlDaGlsZAABBSRQbHVyYWxpdHkAAAgIaWTwEHBhcnT0PEdsb2JhbENvbnNlbnN1cwGVAQIkEEhlcmUAAQUIWDEBnQEIWDIABJ0BAQgIWDMABJ0BAQwIWDQABJ0BARAIWDUABJ0BARQIWDYABJ0BARgIWDcABJ0BARwIWDgABJ0BASAACBxwYXJlbnRzBCBpbnRlcmlvcqEBAgggQ29uY3JldGUBpQEgQWJzdHJhY3QBIAAICGlkqQEMZnVuLQEErQEAAAgIaWSlAQxmdW4tAQS1AQACDAhWMwGxAQhWNAG5AQhWNQE1AQIMCFYzAaUBCFY0AaUBCFY1AR0BBggCdCRBdHRlbXB0ZWQAAAQcb3V0Y29tZeAQU2VudAAAEBhvcmlnaW4dASxkZXN0aW5hdGlvbh0BHG1lc3NhZ2WNAShtZXNzYWdlX2lkIChTZW5kRmFpbGVkAAAQGG9yaWdpbh0BLGRlc3RpbmF0aW9uHQEUZXJyb3KRAShtZXNzYWdlX2lkIDxQcm9jZXNzWGNtRXJyb3IAAAwYb3JpZ2luHQEUZXJyb3LYKG1lc3NhZ2VfaWQgSFVuZXhwZWN0ZWRSZXNwb25zZQAACBhvcmlnaW4dASBxdWVyeV9pZAg0UmVzcG9uc2VSZWFkeQAACCBxdWVyeV9pZAggcmVzcG9uc2VNASBOb3RpZmllZAAADCBxdWVyeV9pZAgwcGFsbGV0X2luZGV4BChjYWxsX2luZGV4BEBOb3RpZnlPdmVyd2VpZ2h0AAAUIHF1ZXJ5X2lkCDBwYWxsZXRfaW5kZXgEKGNhbGxfaW5kZXgENGFjdHVhbF93ZWlnaHQYTG1heF9idWRnZXRlZF93ZWlnaHQYTE5vdGlmeURpc3BhdGNoRXJyb3IAAAwgcXVlcnlfaWQIMHBhbGxldF9pbmRleAQoY2FsbF9pbmRleARITm90aWZ5RGVjb2RlRmFpbGVkAAAMIHF1ZXJ5X2lkCDBwYWxsZXRfaW5kZXgEKGNhbGxfaW5kZXgEQEludmFsaWRSZXNwb25kZXIAAAwYb3JpZ2luHQEgcXVlcnlfaWQIRGV4cGVjdGVkX2xvY2F0aW9uUQFcSW52YWxpZFJlc3BvbmRlclZlcnNpb24AAAgYb3JpZ2luHQEgcXVlcnlfaWQINFJlc3BvbnNlVGFrZW4AAAQgcXVlcnlfaWQINEFzc2V0c1RyYXBwZWQAAAwQaGFzaCAYb3JpZ2luHQEYYXNzZXRzvQFUVmVyc2lvbkNoYW5nZU5vdGlmaWVkAAAQLGRlc3RpbmF0aW9uHQEYcmVzdWx0BBBjb3N0NQEobWVzc2FnZV9pZCBcU3VwcG9ydGVkVmVyc2lvbkNoYW5nZWQAAAggbG9jYXRpb24dARx2ZXJzaW9uBFBOb3RpZnlUYXJnZXRTZW5kRmFpbAAADCBsb2NhdGlvbh0BIHF1ZXJ5X2lkCBRlcnJvcthkTm90aWZ5VGFyZ2V0TWlncmF0aW9uRmFpbAAACCBsb2NhdGlvbsEBIHF1ZXJ5X2lkCFRJbnZhbGlkUXVlcmllclZlcnNpb24AAAgYb3JpZ2luHQEgcXVlcnlfaWQIOEludmFsaWRRdWVyaWVyAAAQGG9yaWdpbh0BIHF1ZXJ5X2lkCEBleHBlY3RlZF9xdWVyaWVyHQFQbWF5YmVfYWN0dWFsX3F1ZXJpZXJRAVBWZXJzaW9uTm90aWZ5U3RhcnRlZAAADCxkZXN0aW5hdGlvbh0BEGNvc3Q1AShtZXNzYWdlX2lkIFhWZXJzaW9uTm90aWZ5UmVxdWVzdGVkAAAMLGRlc3RpbmF0aW9uHQEQY29zdDUBKG1lc3NhZ2VfaWQgYFZlcnNpb25Ob3RpZnlVbnJlcXVlc3RlZAAADCxkZXN0aW5hdGlvbh0BEGNvc3Q1AShtZXNzYWdlX2lkICBGZWVzUGFpZAAACBhwYXlpbmcdARBmZWVzNQE0QXNzZXRzQ2xhaW1lZAAADBBoYXNoIBhvcmlnaW4dARhhc3NldHO9AWBWZXJzaW9uTWlncmF0aW9uRmluaXNoZWQAAAQcdmVyc2lvbgQ8QWxpYXNBdXRob3JpemVkAAAMHGFsaWFzZXIdARh0YXJnZXQdARhleHBpcnnFAWRBbGlhc0F1dGhvcml6YXRpb25SZW1vdmVkAAAIHGFsaWFzZXIdARh0YXJnZXQdAXBBbGlhc2VzQXV0aG9yaXphdGlvbnNSZW1vdmVkAAAEGHRhcmdldB0BAgw0SW52YWxpZEZvcm1hdAEgSFVuc3VwcG9ydGVkVmVyc2lvbgEgQEV4ZWN1dGVkRG93bndhcmQAAwgg4AIMEEhlcmUAAQUYUGFyZW50AAEFHFNpYmxpbmcBBAIYJEJhZEZvcm1hdAABBRxDb3JydXB0AAEFLFVuc3VwcG9ydGVkAAEFKE92ZXJ3ZWlnaHQBGBRZaWVsZAABBURTdGFja0xpbWl0UmVhY2hlZAABBQIQQFByb2Nlc3NpbmdGYWlsZWQAAAwIaWQgGG9yaWdpbtEBFGVycm9y1QEkUHJvY2Vzc2VkAAAQCGlkIBhvcmlnaW7RASx3ZWlnaHRfdXNlZBgcc3VjY2VzcxRIT3ZlcndlaWdodEVucXVldWVkAAAQCGlkIBhvcmlnaW7RAShwYWdlX2luZGV4BDRtZXNzYWdlX2luZGV4BChQYWdlUmVhcGVkAAAIGG9yaWdpbtEBFGluZGV4BAUBAQEFAQUBBQGEAhAcU3IyNTUxOQAACCRzaWduYXR1cmXdARhzaWduZXIgHEVkMjU1MTkAAAgkc2lnbmF0dXJl3QEYc2lnbmVyIDhTZWNwMjU2azFFY2RzYQAACCRzaWduYXR1cmXhARhzaWduZXLlARxPbkNoYWluAAAMDHdobyAoYmxvY2tfaGFzaCAsZXZlbnRfaW5kZXgIBukBBgQEIAEQBiQAHBRwcm9vZu0BOGRlY3J5cHRpb25fa2V5kBxjaGFubmVskCBwcmlvcml0efEBKG51bV90b3BpY3MEGHRvcGljc/UBEGRhdGH5AQIEME5ld1N0YXRlbWVudAAACBxhY2NvdW50ACRzdGF0ZW1lbnT9AQIIMENsYWltQ3JlYXRlZAAACAx3aG8AEGhhc2ggMENsYWltUmV2b2tlZAAACAx3aG8AEGhhc2ggBCAAAgw8Q29udHJhY3RFbWl0dGVkAAAMIGNvbnRyYWN07BBkYXRhJBh0b3BpY3MJAjBJbnN0YW50aWF0ZWQAAAggZGVwbG95ZXLsIGNvbnRyYWN07EhFdGhFeHRyaW5zaWNSZXZlcnQAAAQ4ZGlzcGF0Y2hfZXJyb3KIAjgYU3lzdGVtAYw8UGFyYWNoYWluU3lzdGVtAZQgQmFsYW5jZXMBsEhUcmFuc2FjdGlvblBheW1lbnQBtBBTdWRvAcREQ29sbGF0b3JTZWxlY3Rpb24BzBxTZXNzaW9uAdAkWGNtcFF1ZXVlAdQsUG9sa2Fkb3RYY20ByQEoQ3VtdWx1c1hjbQHNATBNZXNzYWdlUXVldWUB2QEkU3RhdGVtZW50AQECOFRlbXBsYXRlUGFsbGV0AQUCGFJldml2ZQENAgAMFHBoYXNlNBRldmVudBECGHRvcGljcwkCBBUCAAQEAQgEHQIAAQEACDBzcGVjX3ZlcnNpb24EJHNwZWNfbmFtZSUCAAgkY29kZV9oYXNoIDRjaGVja192ZXJzaW9uFAAQOGJhc2VfZXh0cmluc2ljGDRtYXhfZXh0cmluc2ljWQEkbWF4X3RvdGFsWQEgcmVzZXJ2ZWRZAQAMGG5vcm1hbDECLG9wZXJhdGlvbmFsMQIkbWFuZGF0b3J5MQIADChiYXNlX2Jsb2NrGCRtYXhfYmxvY2sYJHBlcl9jbGFzczUCAAwYbm9ybWFsBCxvcGVyYXRpb25hbAQkbWFuZGF0b3J5BAAIEHJlYWQIFHdyaXRlCAMIIQEEBEUCAAAgJHNwZWNfbmFtZSUCJGltcGxfbmFtZSUCRGF1dGhvcmluZ192ZXJzaW9uBDBzcGVjX3ZlcnNpb24EMGltcGxfdmVyc2lvbgQQYXBpc0kCTHRyYW5zYWN0aW9uX3ZlcnNpb24EOHN5c3RlbV92ZXJzaW9uBAQkAQgEUQIABCQAAAgkbXNnX2NvdW50BCx0b3RhbF9ieXRlcwQDCARdAgRhAgAADDR1bXBfbXNnX2NvdW50BDx1bXBfdG90YWxfYnl0ZXMENGhybXBfb3V0Z29pbmdlAgIIFEFib3J0AAEFHEdvQWhlYWQAAQUGbQIADDh1c2VkX2JhbmR3aWR0aGkCOHBhcmFfaGVhZF9oYXNokGBjb25zdW1lZF9nb19haGVhZF9zaWduYWxxAgR1AgAADDh1c2VkX2JhbmR3aWR0aGkCOGhybXBfd2F0ZXJtYXJr8QFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFscQIAECxwYXJlbnRfaGVhZCRMcmVsYXlfcGFyZW50X251bWJlcgRkcmVsYXlfcGFyZW50X3N0b3JhZ2Vfcm9vdCAwbWF4X3Bvdl9zaXplBAIEHFByZXNlbnQAAQUGhQIACDxyZW1haW5pbmdfY291bnQEOHJlbWFpbmluZ19zaXplBAAYMG1heF9jYXBhY2l0eQQ4bWF4X3RvdGFsX3NpemUEQG1heF9tZXNzYWdlX3NpemUEJG1zZ19jb3VudAQodG90YWxfc2l6ZQQgbXFjX2hlYWSQAwgEkQIElQIAABAwZG1xX21xY19oZWFkIJxyZWxheV9kaXNwYXRjaF9xdWV1ZV9yZW1haW5pbmdfY2FwYWNpdHmNAkBpbmdyZXNzX2NoYW5uZWxzmQI8ZWdyZXNzX2NoYW5uZWxzmQIACExtYXhfY2FuZGlkYXRlX2RlcHRoBFBhbGxvd2VkX2FuY2VzdHJ5X2xlbgQAKDRtYXhfY29kZV9zaXplBEhtYXhfaGVhZF9kYXRhX3NpemUEWG1heF91cHdhcmRfcXVldWVfY291bnQEVG1heF91cHdhcmRfcXVldWVfc2l6ZQRcbWF4X3Vwd2FyZF9tZXNzYWdlX3NpemUEkG1heF91cHdhcmRfbWVzc2FnZV9udW1fcGVyX2NhbmRpZGF0ZQSIaHJtcF9tYXhfbWVzc2FnZV9udW1fcGVyX2NhbmRpZGF0ZQRsdmFsaWRhdGlvbl91cGdyYWRlX2Nvb2xkb3duBGB2YWxpZGF0aW9uX3VwZ3JhZGVfZGVsYXkEUGFzeW5jX2JhY2tpbmdfcGFyYW1zoQIDCAQgBKkCAAAIHHNlbnRfYXQELHJldmVyc2VfaWR4BAAIJHJlY2lwaWVudAQQZGF0YSQEtQIAABQscGFyZW50X2hhc2ggGG51bWJlcgQoc3RhdGVfcm9vdCA8ZXh0cmluc2ljc19yb290IBhkaWdlc3QwBL0CAAAQPHZhbGlkYXRpb25fZGF0YYECRHJlbGF5X2NoYWluX3N0YXRlWQJgcmVsYXlfcGFyZW50X2Rlc2NlbmRhbnRzwQJAY29sbGF0b3JfcGVlcl9pZPkBAAgcc2VudF9hdAQMbXNnJATJAgAACBxzZW50X2F0BCBtc2dfaGFzaCAE0QIAAAg0ZnVsbF9tZXNzYWdlc80CPGhhc2hlZF9tZXNzYWdlc9UCAAgcc2VudF9hdAQQZGF0YSQDCATdAgThAgADCATRAgTpAgAACDRmdWxsX21lc3NhZ2Vz5QI8aGFzaGVkX21lc3NhZ2Vz7QIACERkb3dud2FyZF9tZXNzYWdlc9kCTGhvcml6b250YWxfbWVzc2FnZXPxAgIMDEZlZQABBRBNaXNjAAEFDEFsbAABBQAMCGlkIQEYYW1vdW50CBxyZWFzb25z+QIE/QIAAAgIaWQhARhhbW91bnQIBAUDAAAICGlkqBhhbW91bnQIBA0DAAAEGGFtb3VudAgEFQMAAhQISWQBABRJbmRleAG4DFJhdwEkJEFkZHJlc3MzMgEgJEFkZHJlc3MyMAHsAgggSW5jcmVhc2UAAQUgRGVjcmVhc2UAAQUCCCRWMUFuY2llbnQAAQUIVjIAAQUCLBhyZW1hcmsAAAQYcmVtYXJrJDhzZXRfaGVhcF9wYWdlcwAABBRwYWdlcwggc2V0X2NvZGUAAAQQY29kZSRcc2V0X2NvZGVfd2l0aG91dF9jaGVja3MAAAQQY29kZSQsc2V0X3N0b3JhZ2UAAAQUaXRlbXNVAjBraWxsX3N0b3JhZ2UAAAQQa2V5c1kCLGtpbGxfcHJlZml4AAAIGHByZWZpeCQcc3Via2V5cwREcmVtYXJrX3dpdGhfZXZlbnQAAAQYcmVtYXJrJERhdXRob3JpemVfdXBncmFkZQAABCRjb2RlX2hhc2gggGF1dGhvcml6ZV91cGdyYWRlX3dpdGhvdXRfY2hlY2tzAAAEJGNvZGVfaGFzaCBgYXBwbHlfYXV0aG9yaXplZF91cGdyYWRlAAAEEGNvZGUkAghMc2V0X3ZhbGlkYXRpb25fZGF0YQAACBBkYXRhxQJUaW5ib3VuZF9tZXNzYWdlc19kYXRh9QJgc3Vkb19zZW5kX3Vwd2FyZF9tZXNzYWdlAAAEHG1lc3NhZ2UkAgQMc2V0AAAEDG5vdwgCJFB0cmFuc2Zlcl9hbGxvd19kZWF0aAAACBBkZXN0HQMUdmFsdWUIOGZvcmNlX3RyYW5zZmVyAAAMGHNvdXJjZR0DEGRlc3QdAxR2YWx1ZQhMdHJhbnNmZXJfa2VlcF9hbGl2ZQAACBBkZXN0HQMUdmFsdWUIMHRyYW5zZmVyX2FsbAAACBBkZXN0HQMoa2VlcF9hbGl2ZRQ8Zm9yY2VfdW5yZXNlcnZlAAAIDHdobx0DGGFtb3VudAhAdXBncmFkZV9hY2NvdW50cwAABAx3aG/IRGZvcmNlX3NldF9iYWxhbmNlAAAIDHdobx0DIG5ld19mcmVlCGxmb3JjZV9hZGp1c3RfdG90YWxfaXNzdWFuY2UAAAgkZGlyZWN0aW9uIQMUZGVsdGEIEGJ1cm4AAAgUdmFsdWUIKGtlZXBfYWxpdmUUAhQQc3VkbwAABBBjYWxspQNUc3Vkb191bmNoZWNrZWRfd2VpZ2h0AAAIEGNhbGylAxh3ZWlnaHQYHHNldF9rZXkAAAQMbmV3HQMcc3Vkb19hcwAACAx3aG8dAxBjYWxspQMocmVtb3ZlX2tleQABBQIkRHNldF9pbnZ1bG5lcmFibGVzAAAEDG5ld8hYc2V0X2Rlc2lyZWRfY2FuZGlkYXRlcwAABAxtYXgESHNldF9jYW5kaWRhY3lfYm9uZAAABBBib25kCFRyZWdpc3Rlcl9hc19jYW5kaWRhdGUAAQUwbGVhdmVfaW50ZW50AAEFQGFkZF9pbnZ1bG5lcmFibGUAAAQMd2hvAExyZW1vdmVfaW52dWxuZXJhYmxlAAAEDHdobwAsdXBkYXRlX2JvbmQAAAQsbmV3X2RlcG9zaXQITHRha2VfY2FuZGlkYXRlX3Nsb3QAAAgcZGVwb3NpdAgYdGFyZ2V0AAIIIHNldF9rZXlzAAAIEGtleXMgFHByb29mJChwdXJnZV9rZXlzAAEFAhRUc3VzcGVuZF94Y21fZXhlY3V0aW9uAAEFUHJlc3VtZV94Y21fZXhlY3V0aW9uAAEFYHVwZGF0ZV9zdXNwZW5kX3RocmVzaG9sZAAABAxuZXcEVHVwZGF0ZV9kcm9wX3RocmVzaG9sZAAABAxuZXcEXHVwZGF0ZV9yZXN1bWVfdGhyZXNob2xkAAAEDG5ldwQCoCBPdmVyZmxvdwABBTRVbmltcGxlbWVudGVkAAEFYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgABBWRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAEFMExvY2F0aW9uRnVsbAABBVRMb2NhdGlvbk5vdEludmVydGlibGUAAQUkQmFkT3JpZ2luAAEFPEludmFsaWRMb2NhdGlvbgABBTRBc3NldE5vdEZvdW5kAAEFVEZhaWxlZFRvVHJhbnNhY3RBc3NldAABBTxOb3RXaXRoZHJhd2FibGUAAQVITG9jYXRpb25DYW5ub3RIb2xkAAEFVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQABBVhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAAEFJFRyYW5zcG9ydAABBShVbnJvdXRhYmxlAAEFMFVua25vd25DbGFpbQABBThGYWlsZWRUb0RlY29kZQABBUBNYXhXZWlnaHRJbnZhbGlkAAEFOE5vdEhvbGRpbmdGZWVzAAEFMFRvb0V4cGVuc2l2ZQABBRBUcmFwAQhARXhwZWN0YXRpb25GYWxzZQABBThQYWxsZXROb3RGb3VuZAABBTBOYW1lTWlzbWF0Y2gAAQVMVmVyc2lvbkluY29tcGF0aWJsZQABBVBIb2xkaW5nV291bGRPdmVyZmxvdwABBSxFeHBvcnRFcnJvcgABBThSZWFuY2hvckZhaWxlZAABBRhOb0RlYWwAAQUoRmVlc05vdE1ldAABBSRMb2NrRXJyb3IAAQUwTm9QZXJtaXNzaW9uAAEFKFVuYW5jaG9yZWQAAQU4Tm90RGVwb3NpdGFibGUAAQVMVW5oYW5kbGVkWGNtVmVyc2lvbgABBUhXZWlnaHRMaW1pdFJlYWNoZWQBGBxCYXJyaWVyAAEFTFdlaWdodE5vdENvbXB1dGFibGUAAQVERXhjZWVkc1N0YWNrTGltaXQAAQUDCARJAwZNAwIYEE51bGwAAQUYQXNzZXRzAbEBPEV4ZWN1dGlvblJlc3VsdAFRAxxWZXJzaW9uAQQsUGFsbGV0c0luZm8BRQE4RGlzcGF0Y2hSZXN1bHQBSQEGpQEADCxkZXN0aW5hdGlvbqUBIHF1ZXJ5X2lkCChtYXhfd2VpZ2h0GAIQDEFsbAABBRRBbGxPZgAACAhpZKkBDGZ1bmEBKEFsbENvdW50ZWQBBDBBbGxPZkNvdW50ZWQAAAwIaWSpAQxmdW5hARRjb3VudAQCCCBEZWZpbml0ZQGxARBXaWxkAWEDAsA0V2l0aGRyYXdBc3NldAGxAVRSZXNlcnZlQXNzZXREZXBvc2l0ZWQBsQFYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAGxATRRdWVyeVJlc3BvbnNlAAAQIHF1ZXJ5X2lkCCByZXNwb25zZVUDKG1heF93ZWlnaHQYHHF1ZXJpZXJZAzRUcmFuc2ZlckFzc2V0AAAIGGFzc2V0c7EBLGJlbmVmaWNpYXJ5pQFQVHJhbnNmZXJSZXNlcnZlQXNzZXQAAAwYYXNzZXRzsQEQZGVzdKUBDHhjbW0DIFRyYW5zYWN0AAAMLG9yaWdpbl9raW5kVQFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdBgQY2FsbCRkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAAADBhzZW5kZXIEQG1heF9tZXNzYWdlX3NpemUEMG1heF9jYXBhY2l0eQRMSHJtcENoYW5uZWxBY2NlcHRlZAAABCRyZWNpcGllbnQESEhybXBDaGFubmVsQ2xvc2luZwAADCRpbml0aWF0b3IEGHNlbmRlcgQkcmVjaXBpZW50BCxDbGVhck9yaWdpbgABBTREZXNjZW5kT3JpZ2luAaEBLFJlcG9ydEVycm9yAV0DMERlcG9zaXRBc3NldAAACBhhc3NldHNlAyxiZW5lZmljaWFyeaUBTERlcG9zaXRSZXNlcnZlQXNzZXQAAAwYYXNzZXRzZQMQZGVzdKUBDHhjbW0DNEV4Y2hhbmdlQXNzZXQAAAwQZ2l2ZWUDEHdhbnSxARxtYXhpbWFsFFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwAADBhhc3NldHNlAxxyZXNlcnZlpQEMeGNtbQNASW5pdGlhdGVUZWxlcG9ydAAADBhhc3NldHNlAxBkZXN0pQEMeGNtbQM0UmVwb3J0SG9sZGluZwAACDRyZXNwb25zZV9pbmZvXQMYYXNzZXRzZQMwQnV5RXhlY3V0aW9uAAAIEGZlZXOtATB3ZWlnaHRfbGltaXRtATRSZWZ1bmRTdXJwbHVzAAEFPFNldEVycm9ySGFuZGxlcgFtAyxTZXRBcHBlbmRpeAFtAyhDbGVhckVycm9yAAEFKENsYWltQXNzZXQAAAgYYXNzZXRzsQEYdGlja2V0pQEQVHJhcAEIQFN1YnNjcmliZVZlcnNpb24AAAggcXVlcnlfaWQITG1heF9yZXNwb25zZV93ZWlnaHQYSFVuc3Vic2NyaWJlVmVyc2lvbgABBSRCdXJuQXNzZXQBsQEsRXhwZWN0QXNzZXQBsQEwRXhwZWN0T3JpZ2luAVkDLEV4cGVjdEVycm9yAVEDUEV4cGVjdFRyYW5zYWN0U3RhdHVzAUkBLFF1ZXJ5UGFsbGV0AAAILG1vZHVsZV9uYW1lJDRyZXNwb25zZV9pbmZvXQMwRXhwZWN0UGFsbGV0AAAUFGluZGV4BBBuYW1lJCxtb2R1bGVfbmFtZSQsY3JhdGVfbWFqb3IEPG1pbl9jcmF0ZV9taW5vcgRQUmVwb3J0VHJhbnNhY3RTdGF0dXMBXQNMQ2xlYXJUcmFuc2FjdFN0YXR1cwABBTxVbml2ZXJzYWxPcmlnaW4BnQE0RXhwb3J0TWVzc2FnZQAADBxuZXR3b3JrlQEsZGVzdGluYXRpb26hAQx4Y21tAyRMb2NrQXNzZXQAAAgUYXNzZXStASB1bmxvY2tlcqUBLFVubG9ja0Fzc2V0AAAIFGFzc2V0rQEYdGFyZ2V0pQE4Tm90ZVVubG9ja2FibGUAAAgUYXNzZXStARRvd25lcqUBNFJlcXVlc3RVbmxvY2sAAAgUYXNzZXStARhsb2NrZXKlASxTZXRGZWVzTW9kZQAABDBqaXRfd2l0aGRyYXcUIFNldFRvcGljASAoQ2xlYXJUb3BpYwABBSxBbGlhc09yaWdpbgGlATxVbnBhaWRFeGVjdXRpb24AAAgwd2VpZ2h0X2xpbWl0bQEwY2hlY2tfb3JpZ2luWQMEaQMAAhgQTnVsbAABBRhBc3NldHMBuQE8RXhlY3V0aW9uUmVzdWx0AVEDHFZlcnNpb24BBCxQYWxsZXRzSW5mbwFFAThEaXNwYXRjaFJlc3VsdAFJAQIQDEFsbAABBRRBbGxPZgAACAhpZKUBDGZ1bmEBKEFsbENvdW50ZWQBBDBBbGxPZkNvdW50ZWQAAAwIaWSlAQxmdW5hARRjb3VudAQCCCBEZWZpbml0ZQG5ARBXaWxkAXUDAsA0V2l0aGRyYXdBc3NldAG5AVRSZXNlcnZlQXNzZXREZXBvc2l0ZWQBuQFYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAG5ATRRdWVyeVJlc3BvbnNlAAAQIHF1ZXJ5X2lkCCByZXNwb25zZXEDKG1heF93ZWlnaHQYHHF1ZXJpZXJZAzRUcmFuc2ZlckFzc2V0AAAIGGFzc2V0c7kBLGJlbmVmaWNpYXJ5pQFQVHJhbnNmZXJSZXNlcnZlQXNzZXQAAAwYYXNzZXRzuQEQZGVzdKUBDHhjbYEDIFRyYW5zYWN0AAAMLG9yaWdpbl9raW5kVQFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdBgQY2FsbCRkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAAADBhzZW5kZXIEQG1heF9tZXNzYWdlX3NpemUEMG1heF9jYXBhY2l0eQRMSHJtcENoYW5uZWxBY2NlcHRlZAAABCRyZWNpcGllbnQESEhybXBDaGFubmVsQ2xvc2luZwAADCRpbml0aWF0b3IEGHNlbmRlcgQkcmVjaXBpZW50BCxDbGVhck9yaWdpbgABBTREZXNjZW5kT3JpZ2luAaEBLFJlcG9ydEVycm9yAV0DMERlcG9zaXRBc3NldAAACBhhc3NldHN5AyxiZW5lZmljaWFyeaUBTERlcG9zaXRSZXNlcnZlQXNzZXQAAAwYYXNzZXRzeQMQZGVzdKUBDHhjbYEDNEV4Y2hhbmdlQXNzZXQAAAwQZ2l2ZXkDEHdhbnS5ARxtYXhpbWFsFFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwAADBhhc3NldHN5AxxyZXNlcnZlpQEMeGNtgQNASW5pdGlhdGVUZWxlcG9ydAAADBhhc3NldHN5AxBkZXN0pQEMeGNtgQM0UmVwb3J0SG9sZGluZwAACDRyZXNwb25zZV9pbmZvXQMYYXNzZXRzeQMwQnV5RXhlY3V0aW9uAAAIEGZlZXO1ATB3ZWlnaHRfbGltaXRtATRSZWZ1bmRTdXJwbHVzAAEFPFNldEVycm9ySGFuZGxlcgGBAyxTZXRBcHBlbmRpeAGBAyhDbGVhckVycm9yAAEFKENsYWltQXNzZXQAAAgYYXNzZXRzuQEYdGlja2V0pQEQVHJhcAEIQFN1YnNjcmliZVZlcnNpb24AAAggcXVlcnlfaWQITG1heF9yZXNwb25zZV93ZWlnaHQYSFVuc3Vic2NyaWJlVmVyc2lvbgABBSRCdXJuQXNzZXQBuQEsRXhwZWN0QXNzZXQBuQEwRXhwZWN0T3JpZ2luAVkDLEV4cGVjdEVycm9yAVEDUEV4cGVjdFRyYW5zYWN0U3RhdHVzAUkBLFF1ZXJ5UGFsbGV0AAAILG1vZHVsZV9uYW1lJDRyZXNwb25zZV9pbmZvXQMwRXhwZWN0UGFsbGV0AAAUFGluZGV4BBBuYW1lJCxtb2R1bGVfbmFtZSQsY3JhdGVfbWFqb3IEPG1pbl9jcmF0ZV9taW5vcgRQUmVwb3J0VHJhbnNhY3RTdGF0dXMBXQNMQ2xlYXJUcmFuc2FjdFN0YXR1cwABBTxVbml2ZXJzYWxPcmlnaW4BnQE0RXhwb3J0TWVzc2FnZQAADBxuZXR3b3JrlQEsZGVzdGluYXRpb26hAQx4Y22BAyRMb2NrQXNzZXQAAAgUYXNzZXS1ASB1bmxvY2tlcqUBLFVubG9ja0Fzc2V0AAAIFGFzc2V0tQEYdGFyZ2V0pQE4Tm90ZVVubG9ja2FibGUAAAgUYXNzZXS1ARRvd25lcqUBNFJlcXVlc3RVbmxvY2sAAAgUYXNzZXS1ARhsb2NrZXKlASxTZXRGZWVzTW9kZQAABDBqaXRfd2l0aGRyYXcUIFNldFRvcGljASAoQ2xlYXJUb3BpYwABBSxBbGlhc09yaWdpbgGlATxVbnBhaWRFeGVjdXRpb24AAAgwd2VpZ2h0X2xpbWl0bQEwY2hlY2tfb3JpZ2luWQMEfQMAAgwIVjMBbQMIVjQBgQMIVjUBjQECECBUZWxlcG9ydAABBTBMb2NhbFJlc2VydmUAAQVIRGVzdGluYXRpb25SZXNlcnZlAAEFNFJlbW90ZVJlc2VydmUBwQECDAhWMwGpAQhWNAGlAQhWNQEdAQJEEHNlbmQAAAgQZGVzdMEBHG1lc3NhZ2WFAzx0ZWxlcG9ydF9hc3NldHMAABAQZGVzdMEBLGJlbmVmaWNpYXJ5wQEYYXNzZXRzvQE4ZmVlX2Fzc2V0X2l0ZW0EXHJlc2VydmVfdHJhbnNmZXJfYXNzZXRzAAAQEGRlc3TBASxiZW5lZmljaWFyecEBGGFzc2V0c70BOGZlZV9hc3NldF9pdGVtBBxleGVjdXRlAAAIHG1lc3NhZ2WFAyhtYXhfd2VpZ2h0GERmb3JjZV94Y21fdmVyc2lvbgAACCBsb2NhdGlvbh0BHHZlcnNpb24EZGZvcmNlX2RlZmF1bHRfeGNtX3ZlcnNpb24AAAREbWF5YmVfeGNtX3ZlcnNpb27xAXhmb3JjZV9zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkAAAQgbG9jYXRpb27BAYBmb3JjZV91bnN1YnNjcmliZV92ZXJzaW9uX25vdGlmeQAABCBsb2NhdGlvbsEBfGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMAABQQZGVzdMEBLGJlbmVmaWNpYXJ5wQEYYXNzZXRzvQE4ZmVlX2Fzc2V0X2l0ZW0EMHdlaWdodF9saW1pdG0BXGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzAAAUEGRlc3TBASxiZW5lZmljaWFyecEBGGFzc2V0c70BOGZlZV9hc3NldF9pdGVtBDB3ZWlnaHRfbGltaXRtAUBmb3JjZV9zdXNwZW5zaW9uAAAEJHN1c3BlbmRlZBQ8dHJhbnNmZXJfYXNzZXRzAAAUEGRlc3TBASxiZW5lZmljaWFyecEBGGFzc2V0c70BOGZlZV9hc3NldF9pdGVtBDB3ZWlnaHRfbGltaXRtATBjbGFpbV9hc3NldHMAAAgYYXNzZXRzvQEsYmVuZWZpY2lhcnnBAYx0cmFuc2Zlcl9hc3NldHNfdXNpbmdfdHlwZV9hbmRfdGhlbgAAHBBkZXN0wQEYYXNzZXRzvQFQYXNzZXRzX3RyYW5zZmVyX3R5cGWJAzhyZW1vdGVfZmVlc19pZI0DSGZlZXNfdHJhbnNmZXJfdHlwZYkDSGN1c3RvbV94Y21fb25fZGVzdIUDMHdlaWdodF9saW1pdG0BUGFkZF9hdXRob3JpemVkX2FsaWFzAAAIHGFsaWFzZXLBARxleHBpcmVzxQFccmVtb3ZlX2F1dGhvcml6ZWRfYWxpYXMAAAQcYWxpYXNlcsEBdHJlbW92ZV9hbGxfYXV0aG9yaXplZF9hbGlhc2VzAAEFAggkcmVhcF9wYWdlAAAIOG1lc3NhZ2Vfb3JpZ2lu0QEocGFnZV9pbmRleARIZXhlY3V0ZV9vdmVyd2VpZ2h0AAAQOG1lc3NhZ2Vfb3JpZ2lu0QEQcGFnZQQUaW5kZXgEMHdlaWdodF9saW1pdBgCCDBjcmVhdGVfY2xhaW0AAAQQaGFzaCAwcmV2b2tlX2NsYWltAAAEEGhhc2ggBAgBEAI0MGV0aF90cmFuc2FjdAAABBxwYXlsb2FkJBBjYWxsAAAUEGRlc3TsFHZhbHVlCDB3ZWlnaHRfbGltaXQYVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgQZGF0YSQsaW5zdGFudGlhdGUAABgUdmFsdWUIMHdlaWdodF9saW1pdBhUc3RvcmFnZV9kZXBvc2l0X2xpbWl0CCRjb2RlX2hhc2ggEGRhdGEkEHNhbHSQVGluc3RhbnRpYXRlX3dpdGhfY29kZQAAGBR2YWx1ZQgwd2VpZ2h0X2xpbWl0GFRzdG9yYWdlX2RlcG9zaXRfbGltaXQIEGNvZGUkEGRhdGEkEHNhbHSQZGV0aF9pbnN0YW50aWF0ZV93aXRoX2NvZGUAACAUdmFsdWWdAzB3ZWlnaHRfbGltaXQYNGV0aF9nYXNfbGltaXSdAxBjb2RlJBBkYXRhJEx0cmFuc2FjdGlvbl9lbmNvZGVkJExlZmZlY3RpdmVfZ2FzX3ByaWNlnQMsZW5jb2RlZF9sZW4EIGV0aF9jYWxsAAAgEGRlc3TsFHZhbHVlnQMwd2VpZ2h0X2xpbWl0GDRldGhfZ2FzX2xpbWl0nQMQZGF0YSRMdHJhbnNhY3Rpb25fZW5jb2RlZCRMZWZmZWN0aXZlX2dhc19wcmljZZ0DLGVuY29kZWRfbGVuBEhldGhfc3Vic3RyYXRlX2NhbGwAAAgQY2FsbKUDTHRyYW5zYWN0aW9uX2VuY29kZWQkLHVwbG9hZF9jb2RlAAAIEGNvZGUkVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgscmVtb3ZlX2NvZGUAAAQkY29kZV9oYXNoICBzZXRfY29kZQAACBBkZXN07CRjb2RlX2hhc2ggLG1hcF9hY2NvdW50AAEFNHVubWFwX2FjY291bnQAAQVwZGlzcGF0Y2hfYXNfZmFsbGJhY2tfYWNjb3VudAAABBBjYWxspQMCOBhTeXN0ZW0BKQM8UGFyYWNoYWluU3lzdGVtAS0DJFRpbWVzdGFtcAExAzRQYXJhY2hhaW5JbmZvAbggQmFsYW5jZXMBNQMQU3VkbwE5A0RDb2xsYXRvclNlbGVjdGlvbgE9AxxTZXNzaW9uAUEDJFhjbXBRdWV1ZQFFAyxQb2xrYWRvdFhjbQGRAyhDdW11bHVzWGNtAbgwTWVzc2FnZVF1ZXVlAZUDOFRlbXBsYXRlUGFsbGV0AZkDGFJldml2ZQGhAwAIDHdobwAcZGVwb3NpdAgEqQMAAwgAIASxAwADCCgkAwgIBAQEAAIICE9rAAEFJFN1c3BlbmRlZAABBQAUJHJlY2lwaWVudAQUc3RhdGXFAzRzaWduYWxzX2V4aXN0FCxmaXJzdF9pbmRleAQobGFzdF9pbmRleAQEyQMAAwgEBAAMRHN1c3BlbmRfdGhyZXNob2xkBDhkcm9wX3RocmVzaG9sZARAcmVzdW1lX3RocmVzaG9sZAQGwQEFAQgG3QMCDAhWMwFVAwhWNAFxAwhWNQFNAQIMHFBlbmRpbmcAABAkcmVzcG9uZGVywQFMbWF5YmVfbWF0Y2hfcXVlcmllctkDMG1heWJlX25vdGlmeeEDHHRpbWVvdXQEPFZlcnNpb25Ob3RpZmllcgAACBhvcmlnaW7BASRpc19hY3RpdmUUFFJlYWR5AAAIIHJlc3BvbnNl5QMIYXQEAwgEwQEDDAgYBAMIwQEEBPUDAAIQXE1pZ3JhdGVTdXBwb3J0ZWRWZXJzaW9uAAEFXE1pZ3JhdGVWZXJzaW9uTm90aWZpZXJzAAEFUE5vdGlmeUN1cnJlbnRUYXJnZXRzAfkBaE1pZ3JhdGVBbmROb3RpZnlPbGRUYXJnZXRzAAEFAwwEAI0DAwi4CAQFBAAAEBhhbW91bnQIFG93bmVywQEYbG9ja2VywQEkY29uc3VtZXJzCQQDCAjBAQQRBAAACCBsb2NhdGlvbsEBGGV4cGlyecUBBBkEAAAEIGFsaWFzZXJzHQQACBBwcmV20QEQbmV4dNEBBiUEABgUYmVnaW4EDGVuZAQUY291bnQEQHJlYWR5X25laWdoYm91cnMpBDRtZXNzYWdlX2NvdW50CBBzaXplCAMI0QEEABgkcmVtYWluaW5nBDhyZW1haW5pbmdfc2l6ZQQsZmlyc3RfaW5kZXgEFGZpcnN0BBBsYXN0BBBoZWFwJAAIFG93bmVyADBibG9ja19udW1iZXIEAggMUHZtAAEFDEV2bQABBQAYFG93bmVyABxkZXBvc2l0CCByZWZjb3VudAggY29kZV9sZW4EJGNvZGVfdHlwZT0ERGJlaGF2aW91cl92ZXJzaW9uBAAgHHRyaWVfaWQkJGNvZGVfaGFzaCA0c3RvcmFnZV9ieXRlcwQ0c3RvcmFnZV9pdGVtcwRQc3RvcmFnZV9ieXRlX2RlcG9zaXQIUHN0b3JhZ2VfaXRlbV9kZXBvc2l0CFBzdG9yYWdlX2Jhc2VfZGVwb3NpdAhIaW1tdXRhYmxlX2RhdGFfbGVuBAIIIENvbnRyYWN0AUUEDEVPQQABBQAIMGFjY291bnRfdHlwZUkEEGR1c3QEAAg4aW5zZXJ0X2NvdW50ZXIEOGRlbGV0ZV9jb3VudGVyBAUBAQQGnQMACBxhZGRyZXNz7DBzdG9yYWdlX2tleXMJAgRdBAAAGCBjaGFpbl9pZJ0DHGFkZHJlc3PsFG5vbmNlnQMgeV9wYXJpdHmdAwRynQMEc50DBGUEAAAwLGFjY2Vzc19saXN0YQRIYXV0aG9yaXphdGlvbl9saXN0aQQgY2hhaW5faWSdAwxnYXOdAyRnYXNfcHJpY2WdAxRpbnB1dCQ8bWF4X2ZlZV9wZXJfZ2FznQNgbWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FznQMUbm9uY2WdAwh0b+wYciN0eXBlBBR2YWx1ZZ0DABRkdHJhbnNhY3Rpb25fNzcwMl91bnNpZ25lZG0EBHKdAwRznQMEdlkEIHlfcGFyaXR5nQMAMCxhY2Nlc3NfbGlzdGEEVGJsb2JfdmVyc2lvbmVkX2hhc2hlcwkCIGNoYWluX2lknQMMZ2FznQMUaW5wdXQkUG1heF9mZWVfcGVyX2Jsb2JfZ2FznQM8bWF4X2ZlZV9wZXJfZ2FznQNgbWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FznQMUbm9uY2WdAwh0b+wYciN0eXBlBBR2YWx1ZZ0DABBkdHJhbnNhY3Rpb25fNDg0NF91bnNpZ25lZHUEBHKdAwRznQMgeV9wYXJpdHmdAwbsACwsYWNjZXNzX2xpc3RhBCBjaGFpbl9pZJ0DDGdhc50DJGdhc19wcmljZZ0DFGlucHV0JDxtYXhfZmVlX3Blcl9nYXOdA2BtYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXOdAxRub25jZZ0DCHRvfQQYciN0eXBlBBR2YWx1ZZ0DABRkdHJhbnNhY3Rpb25fMTU1OV91bnNpZ25lZIEEBHKdAwRznQMEdlkEIHlfcGFyaXR5nQMAJCxhY2Nlc3NfbGlzdGEEIGNoYWluX2lknQMMZ2FznQMkZ2FzX3ByaWNlnQMUaW5wdXQkFG5vbmNlnQMIdG99BBhyI3R5cGUEFHZhbHVlnQMAFGR0cmFuc2FjdGlvbl8yOTMwX3Vuc2lnbmVkiQQEcp0DBHOdAwR2WQQgeV9wYXJpdHmdAwAgIGNoYWluX2lkWQQMZ2FznQMkZ2FzX3ByaWNlnQMUaW5wdXQkFG5vbmNlnQMIdG99BBhyI3R5cGUEFHZhbHVlnQMAEGx0cmFuc2FjdGlvbl9sZWdhY3lfdW5zaWduZWSRBARynQMEc50DBHadAwIUVFRyYW5zYWN0aW9uNzcwMlNpZ25lZAFxBFRUcmFuc2FjdGlvbjQ4NDRTaWduZWQBeQRUVHJhbnNhY3Rpb24xNTU5U2lnbmVkAYUEVFRyYW5zYWN0aW9uMjkzMFNpZ25lZAGNBFxUcmFuc2FjdGlvbkxlZ2FjeVNpZ25lZAGVBAAYKGJsb2NrX2hhc2ggMGJsb2NrX251bWJlcp0DEGZyb23sEGhhc2ggRHRyYW5zYWN0aW9uX2luZGV4nQNIdHJhbnNhY3Rpb25fc2lnbmVkmQQEnQQAAggYSGFzaGVzAQkCQFRyYW5zYWN0aW9uSW5mb3MBoQQAEBxhZGRyZXNz7BhhbW91bnSdAxRpbmRleJ0DPHZhbGlkYXRvcl9pbmRleJ0DBKkEAABsQGJhc2VfZmVlX3Blcl9nYXOdAzRibG9iX2dhc191c2VknQMoZGlmZmljdWx0eZ0DPGV4Y2Vzc19ibG9iX2dhc50DKGV4dHJhX2RhdGEkJGdhc19saW1pdJ0DIGdhc191c2VknQMQaGFzaCAobG9nc19ibG9vbVUEFG1pbmVy7CBtaXhfaGFzaCAUbm9uY2UhARhudW1iZXKdA2BwYXJlbnRfYmVhY29uX2Jsb2NrX3Jvb3SQLHBhcmVudF9oYXNoIDRyZWNlaXB0c19yb290IDRyZXF1ZXN0c19oYXNokDBzaGFfM191bmNsZXMgEHNpemWdAyhzdGF0ZV9yb290ICR0aW1lc3RhbXCdA0B0b3RhbF9kaWZmaWN1bHR5WQQwdHJhbnNhY3Rpb25zpQREdHJhbnNhY3Rpb25zX3Jvb3QgGHVuY2xlcwkCLHdpdGhkcmF3YWxzrQRAd2l0aGRyYXdhbHNfcm9vdCAACCBnYXNfdXNlZJ0DTGVmZmVjdGl2ZV9nYXNfcHJpY2WdAwS1BAAAKAxrZXkkKHZhbHVlX3R5cGUENGJ1aWxkZXJfdmFsdWUkFHN0YWNrWQIsc3RhdGVfbWFza3PBAyh0cmVlX21hc2tzwQMoaGFzaF9tYXNrc8EDSHN0b3JlZF9pbl9kYXRhYmFzZRQccmxwX2J1ZiQUaW5kZXgIACBgdHJhbnNhY3Rpb25fcm9vdF9idWlsZGVyvQRUcmVjZWlwdHNfcm9vdF9idWlsZGVyvQRAYmFzZV9mZWVfcGVyX2dhc50DPGJsb2NrX2dhc19saW1pdJ0DIGdhc191c2VknQMobG9nc19ibG9vbVUEJHR4X2hhc2hlcwkCIGdhc19pbmZvuQQGUQIADHRhbGxvd191bmxpbWl0ZWRfY29udHJhY3Rfc2l6ZRQ8YnlwYXNzX2VpcF8zNjA3FCBwdm1fbG9ncxQACBhoZWFkZXK9AihleHRyaW5zaWNzWQICCDRBbGxFeHRyaW5zaWNzAAEFNE9ubHlJbmhlcmVudHMAAQUACBhwcmVmaXglARhzdWZmaXglAQIMOE5vdEltcGxlbWVudGVkAAEFIE5vdEZvdW5kAdUEFENvZGVjAAEFByTZBAI0EENhbGwAAQUcUGF5bWVudAABBRhGdXR1cmUAAQUUU3RhbGUAAQUgQmFkUHJvb2YAAQVEQW5jaWVudEJpcnRoQmxvY2sAAQVERXhoYXVzdHNSZXNvdXJjZXMAAQUYQ3VzdG9tAQQwQmFkTWFuZGF0b3J5AAEFTE1hbmRhdG9yeVZhbGlkYXRpb24AAQUkQmFkU2lnbmVyAAEFVEluZGV0ZXJtaW5hdGVJbXBsaWNpdAABBTRVbmtub3duT3JpZ2luAAEFAgwwQ2Fubm90TG9va3VwAAEFTE5vVW5zaWduZWRWYWxpZGF0b3IAAQUYQ3VzdG9tAQQCCBxJbnZhbGlkAeEEHFVua25vd24B5QQHvOkEAwghASQE8QQAAAwQb2theRQsZmF0YWxfZXJyb3IUGGVycm9yc/UEAgwcSW5CbG9jawABBRRMb2NhbAABBSBFeHRlcm5hbAABBQAUIHByaW9yaXR5CCByZXF1aXJlc1kCIHByb3ZpZGVzWQIkbG9uZ2V2aXR5CCRwcm9wYWdhdGUUBwEF6QQDCCQoBAkFAAYNBQAMGHdlaWdodBgUY2xhc3M4LHBhcnRpYWxfZmVlCAAMIGJhc2VfZmVlCBxsZW5fZmVlCExhZGp1c3RlZF93ZWlnaHRfZmVlCAYZBQAINGluY2x1c2lvbl9mZWUdBQx0aXAIABg8dXB3YXJkX21lc3NhZ2VzWQJMaG9yaXpvbnRhbF9tZXNzYWdlc7kCTG5ld192YWxpZGF0aW9uX2NvZGX5AWxwcm9jZXNzZWRfZG93bndhcmRfbWVzc2FnZXMEOGhybXBfd2F0ZXJtYXJrBCRoZWFkX2RhdGEkAgwUQ2hhaW4AAQUcTmV0d29yawABBRRMb2NhbAABBQAIJG1heF9jb3VudAQgbWF4X3NpemUEAgwgQmFkUHJvb2YAAQUcTm9Qcm9vZgABBTRJbnRlcm5hbEVycm9yAAEFBy0FMQUHuCUCBiUCBCUCAAIIGFJlZnVuZAEIGENoYXJnZQEIAAgUZmxhZ3MEEGRhdGEkB0kFiAAYPHdlaWdodF9jb25zdW1lZBg8d2VpZ2h0X3JlcXVpcmVkGDxzdG9yYWdlX2RlcG9zaXRFBUxtYXhfc3RvcmFnZV9kZXBvc2l0RQUwZ2FzX2NvbnN1bWVkCBhyZXN1bHRNBQIIGFVwbG9hZAEkIEV4aXN0aW5nASAACBhyZXN1bHRJBRBhZGRy7AdZBYgAGDx3ZWlnaHRfY29uc3VtZWQYPHdlaWdodF9yZXF1aXJlZBg8c3RvcmFnZV9kZXBvc2l0RQVMbWF4X3N0b3JhZ2VfZGVwb3NpdEUFMGdhc19jb25zdW1lZAgYcmVzdWx0XQUGYQQACBRpbnB1dPkBEGRhdGH5AQBALGFjY2Vzc19saXN0ZQVIYXV0aG9yaXphdGlvbl9saXN0aQRUYmxvYl92ZXJzaW9uZWRfaGFzaGVzCQIUYmxvYnNZAiBjaGFpbl9pZFkEEGZyb219BAxnYXNZBCRnYXNfcHJpY2VZBBRpbnB1dGkFUG1heF9mZWVfcGVyX2Jsb2JfZ2FzWQQ8bWF4X2ZlZV9wZXJfZ2FzWQRgbWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FzWQQUbm9uY2VZBAh0b30EGHIjdHlwZfEBFHZhbHVlWQQAFDx3ZWlnaHRfcmVxdWlyZWQYPHN0b3JhZ2VfZGVwb3NpdAhMbWF4X3N0b3JhZ2VfZGVwb3NpdAgcZXRoX2dhc50DEGRhdGEkAggQRGF0YQEkHE1lc3NhZ2UBJQIHcQV1BQAISHRpbWVzdGFtcF9vdmVycmlkZcUBIHJlc2VydmVkFAAIJGNvZGVfaGFzaCAcZGVwb3NpdAgHgQWIAgwsRG9lc250RXhpc3QAAQVES2V5RGVjb2RpbmdGYWlsZWQAAQVIU3RvcmFnZVdyaXRlRmFpbGVkAYgH+QGJBQAIJHdpdGhfbG9ncxQ0b25seV90b3BfY2FsbBQGkQUADCRkaWZmX21vZGUUPGRpc2FibGVfc3RvcmFnZRQwZGlzYWJsZV9jb2RlFAaZBQIIKENhbGxUcmFjZXIBlQU4UHJlc3RhdGVUcmFjZXIBnQUEtQUAABAcYWRkcmVzc+wYdG9waWNzCQIQZGF0YSQgcG9zaXRpb24EBKkFAAIYEENhbGwAAQUoU3RhdGljQ2FsbAABBTBEZWxlZ2F0ZUNhbGwAAQUYQ3JlYXRlAAEFHENyZWF0ZTIAAQUwU2VsZmRlc3RydWN0AAEFADQQZnJvbewMZ2FznQMgZ2FzX3VzZWSdAwh0b+wUaW5wdXQkGG91dHB1dCQUZXJyb3I9BTRyZXZlcnRfcmVhc29uPQUUY2FsbHOlBRBsb2dzrQUUdmFsdWVZBCRjYWxsX3R5cGWxBUBjaGlsZF9jYWxsX2NvdW50BAMIJPkBBLkFAAAQHGJhbGFuY2VZBBRub25jZfEBEGNvZGX5ARxzdG9yYWdlvQUDCOzBBQTFBQACCCBQcmVzdGF0ZQHJBSBEaWZmTW9kZQAACAxwcmXJBRBwb3N0yQUCCBBDYWxsAbUFIFByZXN0YXRlAc0FAwgE0QUE1QUABtEFB9EFdQUCCBRWYWx1ZQABBRBEdXN0AAEFB70D5QUCBDBUb29NYW55Q2FsbHMAAQUCBBxPbmdvaW5nAAEFAkgoQmFkQ29udGV4dAABBSxCYWREYXRhU2l6ZQABBUxUb29NYW55VHJhbnNhY3Rpb25zAAEFNE5vdENvbmZpZ3VyZWQAAQU8UmVuZXdlZE5vdEZvdW5kAAEFPFVuZXhwZWN0ZWRQcm9vZgABBTBJbnZhbGlkUHJvb2YAAQUwTWlzc2luZ1Byb29mAAEFQE1pc3NpbmdTdGF0ZURhdGEAAQUsRG91YmxlQ2hlY2sAAQU8UHJvb2ZOb3RDaGVja2VkAAEFVEF1dGhvcml6YXRpb25Ob3RGb3VuZAABBVxBdXRob3JpemF0aW9uTm90RXhwaXJlZAABBUhJbnZhbGlkQ29udGVudEhhc2gAAQVIQXV0aG9yaXplck5vdEZvdW5kAAEFcEF1dGhvcml6ZXJCdWRnZXROb3RFeGhhdXN0ZWQAAQVESW52YWxpZFZhbGlkVW50aWwAAQVwSW5zdWZmaWNpZW50QXV0aG9yaXplckJ1ZGdldAABBQIgKEJhZENvbnRleHQAAQU8UmVuZXdlZE5vdEZvdW5kAAEFTFRvb01hbnlUcmFuc2FjdGlvbnMAAQVUUmVuZXdhbEFscmVhZHlFbmFibGVkAAEFVEF1dG9SZW5ld2FsTm90RW5hYmxlZAABBUxOb3RBdXRvUmVuZXdhbE93bmVyAAEFfENhbm5vdERpc2FibGVQcmVwYWlkQXV0b1JlbmV3YWwAAQUsQmFkRGF0YVNpemUAAQUCXBhTeXN0ZW0BRDxQYXJhY2hhaW5TeXN0ZW0BSCRUaW1lc3RhbXAAAQU0UGFyYWNoYWluSW5mbwABBTRXZWlnaHRSZWNsYWltAAEFHFV0aWxpdHkB7QVQTXVsdGlCbG9ja01pZ3JhdGlvbnMB8QUgQmFsYW5jZXMBTEhUcmFuc2FjdGlvblBheW1lbnQAAQVIU2tpcEZlZWxlc3NQYXltZW50AAEFSFRyYW5zYWN0aW9uU3RvcmFnZQH1BTBIb3BQcm9tb3Rpb24AAQUsRGF0YVJlbmV3YWwB+QUoQXV0aG9yc2hpcAABBURDb2xsYXRvclNlbGVjdGlvbgFUHFNlc3Npb24BWBBBdXJhAAEFHEF1cmFFeHQAAQUkWGNtcFF1ZXVlAVwsUG9sa2Fkb3RYY20BZChDdW11bHVzWGNtAAEFME1lc3NhZ2VRdWV1ZQFoEFN1ZG8BUAI8FE90aGVyAAEFMENhbm5vdExvb2t1cAABBSRCYWRPcmlnaW4AAQUYTW9kdWxlAf0FRENvbnN1bWVyUmVtYWluaW5nAAEFLE5vUHJvdmlkZXJzAAEFQFRvb01hbnlDb25zdW1lcnMAAQUUVG9rZW4BeChBcml0aG1ldGljAXw0VHJhbnNhY3Rpb25hbAGAJEV4aGF1c3RlZAABBShDb3JydXB0aW9uAAEFLFVuYXZhaWxhYmxlAAEFOFJvb3ROb3RBbGxvd2VkAAEFEFRyaWUBhAIgQEV4dHJpbnNpY1N1Y2Nlc3MAAAQ0ZGlzcGF0Y2hfaW5mb0A8RXh0cmluc2ljRmFpbGVkAAAIOGRpc3BhdGNoX2Vycm9yAQY0ZGlzcGF0Y2hfaW5mb0AsQ29kZVVwZGF0ZWQAAAQQaGFzaCAoTmV3QWNjb3VudAAABBxhY2NvdW50ADRLaWxsZWRBY2NvdW50AAAEHGFjY291bnQAIFJlbWFya2VkAAAIGHNlbmRlcgAQaGFzaCBEVXBncmFkZUF1dGhvcml6ZWQAAAgkY29kZV9oYXNoIDRjaGVja192ZXJzaW9uFIBSZWplY3RlZEludmFsaWRBdXRob3JpemVkVXBncmFkZQAACCRjb2RlX2hhc2ggFGVycm9yAQYHuAEGAiBAQmF0Y2hJbnRlcnJ1cHRlZAAACBRpbmRleAQUZXJyb3IBBjhCYXRjaENvbXBsZXRlZAABBWBCYXRjaENvbXBsZXRlZFdpdGhFcnJvcnMAAQU0SXRlbUNvbXBsZXRlZAABBShJdGVtRmFpbGVkAAAEFGVycm9yAQYwRGlzcGF0Y2hlZEFzAAAEGHJlc3VsdAkGRElmRWxzZU1haW5TdWNjZXNzAAEFUElmRWxzZUZhbGxiYWNrQ2FsbGVkAAAEKG1haW5fZXJyb3IBBgIgOFVwZ3JhZGVTdGFydGVkAAAEKG1pZ3JhdGlvbnMEQFVwZ3JhZGVDb21wbGV0ZWQAAQU0VXBncmFkZUZhaWxlZAABBUBNaWdyYXRpb25Ta2lwcGVkAAAEFGluZGV4BERNaWdyYXRpb25BZHZhbmNlZAAACBRpbmRleAQQdG9vawRITWlncmF0aW9uQ29tcGxldGVkAAAIFGluZGV4BBB0b29rBDxNaWdyYXRpb25GYWlsZWQAAAgUaW5kZXgEEHRvb2sEPEhpc3RvcmljQ2xlYXJlZAAABCxuZXh0X2N1cnNvcvkBAgQ4U3RvcmFnZUZlZUhvbGQAAQUCDEhUcmFuc2FjdGlvblN0b3JhZ2UBFQYcU2Vzc2lvbgGcLFBvbGthZG90WGNtAaACeBxFbmRvd2VkAAAIHGFjY291bnQAMGZyZWVfYmFsYW5jZQggRHVzdExvc3QAAAgcYWNjb3VudAAYYW1vdW50CCBUcmFuc2ZlcgAADBBmcm9tAAh0bwAYYW1vdW50CChCYWxhbmNlU2V0AAAIDHdobwAQZnJlZQggUmVzZXJ2ZWQAAAgMd2hvABhhbW91bnQIKFVucmVzZXJ2ZWQAAAgMd2hvABhhbW91bnQISFJlc2VydmVSZXBhdHJpYXRlZAAAEBBmcm9tAAh0bwAYYW1vdW50CEhkZXN0aW5hdGlvbl9zdGF0dXOYHERlcG9zaXQAAAgMd2hvABhhbW91bnQIIFdpdGhkcmF3AAAIDHdobwAYYW1vdW50CBxTbGFzaGVkAAAIDHdobwAYYW1vdW50CBhNaW50ZWQAAAgMd2hvABhhbW91bnQIME1pbnRlZENyZWRpdAAABBhhbW91bnQIGEJ1cm5lZAAACAx3aG8AGGFtb3VudAgoQnVybmVkRGVidAAABBhhbW91bnQIJFN1c3BlbmRlZAAACAx3aG8AGGFtb3VudAggUmVzdG9yZWQAAAgMd2hvABhhbW91bnQIIFVwZ3JhZGVkAAAEDHdobwAYSXNzdWVkAAAEGGFtb3VudAgkUmVzY2luZGVkAAAEGGFtb3VudAgYTG9ja2VkAAAIDHdobwAYYW1vdW50CCBVbmxvY2tlZAAACAx3aG8AGGFtb3VudAgYRnJvemVuAAAIDHdobwAYYW1vdW50CBhUaGF3ZWQAAAgMd2hvABhhbW91bnQITFRvdGFsSXNzdWFuY2VGb3JjZWQAAAgMb2xkCAxuZXcIEEhlbGQAAAwYcmVhc29uGQYMd2hvABhhbW91bnQIKEJ1cm5lZEhlbGQAAAwYcmVhc29uGQYMd2hvABhhbW91bnQIOFRyYW5zZmVyT25Ib2xkAAAQGHJlYXNvbhkGGHNvdXJjZQAQZGVzdAAYYW1vdW50CDxUcmFuc2ZlckFuZEhvbGQAABAYcmVhc29uGQYYc291cmNlABBkZXN0ACx0cmFuc2ZlcnJlZAggUmVsZWFzZWQAAAwYcmVhc29uGQYMd2hvABhhbW91bnQIKFVuZXhwZWN0ZWQBrAIQEFJvb3QAAQUYU2lnbmVkAQAQTm9uZQABBShBdXRob3JpemVkAAEFAggcQWNjb3VudAEAIFByZWltYWdlASACBChBdXRob3JpemVkAAAIDHdobwAUc2NvcGUlBgIIDFhjbQEdASBSZXNwb25zZQEdAQIIFFJlbGF5AAEFQFNpYmxpbmdQYXJhY2hhaW4BBAIQGHN5c3RlbQEhBkhUcmFuc2FjdGlvblN0b3JhZ2UBKQYsUG9sa2Fkb3RYY20BLQYoQ3VtdWx1c1hjbQExBgIEKEZlZVNraXBwZWQAAAQYb3JpZ2luNQYCLBhTdG9yZWQAAAwUaW5kZXgEMGNvbnRlbnRfaGFzaCAMY2lk+QEwUHJvb2ZDaGVja2VkAAEFREFjY291bnRBdXRob3JpemVkAAAMDHdobwAwdHJhbnNhY3Rpb25zBBRieXRlcwh0QWNjb3VudEF1dGhvcml6YXRpb25SZWZyZXNoZWQAAAQMd2hvAEhQcmVpbWFnZUF1dGhvcml6ZWQAAAgwY29udGVudF9oYXNoICBtYXhfc2l6ZQh4UHJlaW1hZ2VBdXRob3JpemF0aW9uUmVmcmVzaGVkAAAEMGNvbnRlbnRfaGFzaCCIRXhwaXJlZEFjY291bnRBdXRob3JpemF0aW9uUmVtb3ZlZAAABAx3aG8AjEV4cGlyZWRQcmVpbWFnZUF1dGhvcml6YXRpb25SZW1vdmVkAAAEMGNvbnRlbnRfaGFzaCA8QXV0aG9yaXplckFkZGVkAAAEDHdobwBEQXV0aG9yaXplclJlbW92ZWQAAAQMd2hvAGhFeGhhdXN0ZWRBdXRob3JpemVyUmVtb3ZlZAAABAx3aG8AAhwcUmVuZXdlZAAACBRpbmRleAQwY29udGVudF9oYXNoIDhSZW5ld2FsRW5hYmxlZAAADDBjb250ZW50X2hhc2ggDHdobwAkcmVjdXJyaW5nFExBdXRvUmVuZXdhbERpc2FibGVkAAAIMGNvbnRlbnRfaGFzaCAMd2hvACxEYXRhUmVuZXdlZAAADBRpbmRleAQwY29udGVudF9oYXNoIBxhY2NvdW50ADRSZW5ld2FsRmFpbGVkAAAIMGNvbnRlbnRfaGFzaCAcYWNjb3VudABsUGVybWFuZW50U3RvcmFnZVVzZWRVcGRhdGVkAAAEEHVzZWQIXFBlcm1hbmVudFN0b3JhZ2VOZWFyQ2FwAAAIEHVzZWQIDGNhcAgCEBRTdWRpZAAABCxzdWRvX3Jlc3VsdAkGKEtleUNoYW5nZWQAAAgMb2xkwAxuZXcAKEtleVJlbW92ZWQAAQUoU3Vkb0FzRG9uZQAABCxzdWRvX3Jlc3VsdAkGAkAYU3lzdGVtAQUGPFBhcmFjaGFpblN5c3RlbQGUHFV0aWxpdHkBDQZQTXVsdGlCbG9ja01pZ3JhdGlvbnMBEQYgQmFsYW5jZXMBHQZIVHJhbnNhY3Rpb25QYXltZW50AbRIU2tpcEZlZWxlc3NQYXltZW50ATkGSFRyYW5zYWN0aW9uU3RvcmFnZQE9BixEYXRhUmVuZXdhbAFBBkRDb2xsYXRvclNlbGVjdGlvbgHMHFNlc3Npb24B0CRYY21wUXVldWUB1CxQb2xrYWRvdFhjbQHJAShDdW11bHVzWGNtAc0BME1lc3NhZ2VRdWV1ZQHZARBTdWRvAUUGAAwUcGhhc2U0FGV2ZW50SQYYdG9waWNzCQIETQYAAAgMbWF4PQI8bWF4X2hlYWRlcl9zaXpl8QECDCBGdWxsQ29yZQAABBxjb250ZXh0BERQb3RlbnRpYWxGdWxsQ29yZQAADBxjb250ZXh0BFxmaXJzdF90cmFuc2FjdGlvbl9pbmRlePEBNHRhcmdldF93ZWlnaHQYOEZyYWN0aW9uT2ZDb3JlAAAIHGNvbnRleHQEXGZpcnN0X3RyYW5zYWN0aW9uX2luZGV48QEAGGhyZWxheV9zdG9yYWdlX3Jvb3Rfb3JfaGFzaCA0Y29yZV9zZWxlY3RvcgQwYnVuZGxlX2luZGV4BDR1bXBfbXNnX2NvdW50BExocm1wX291dGJvdW5kX2NvdW50BGBocm1wX291dGJvdW5kX3JlY2lwaWVudHPBAwIgFGJhdGNoAAAEFGNhbGxztQY0YXNfZGVyaXZhdGl2ZQAACBRpbmRleAQQY2FsbLEGJGJhdGNoX2FsbAAABBRjYWxsc7UGLGRpc3BhdGNoX2FzAAAIJGFzX29yaWdpbjUGEGNhbGyxBixmb3JjZV9iYXRjaAAABBRjYWxsc7UGLHdpdGhfd2VpZ2h0AAAIEGNhbGyxBhh3ZWlnaHQYHGlmX2Vsc2UAAAgQbWFpbrEGIGZhbGxiYWNrsQZQZGlzcGF0Y2hfYXNfZmFsbGlibGUAAAgkYXNfb3JpZ2luNQYQY2FsbLEGAAwUaW5kZXgEMGlubmVyX2N1cnNvcvkBKHN0YXJ0ZWRfYXQEAggYQWN0aXZlAWUGFFN0dWNrAAEFBmkGAgggU3BlY2lmaWMBWQIgV2lsZGNhcmQAAAgUbGltaXTxATxwcmV2aW91c19jdXJzb3L5AQIQQGZvcmNlX3NldF9jdXJzb3IAAAQYY3Vyc29ybQZcZm9yY2Vfc2V0X2FjdGl2ZV9jdXJzb3IAAAwUaW5kZXgEMGlubmVyX2N1cnNvcvkBKHN0YXJ0ZWRfYXTxAUhmb3JjZV9vbmJvYXJkX21ibXMAAQU4Y2xlYXJfaGlzdG9yaWMAAAQgc2VsZWN0b3JxBgIMKEJsYWtlMmIyNTYAAQUgU2hhMl8yNTYAAQUkS2VjY2FrMjU2AAEFAAgUY29kZWMIHGhhc2hpbmd5BgAIFGNodW5rJBRwcm9vZlkCBoEGAAgwdHJhbnNhY3Rpb25zBBRieXRlcwgGiQYADBRxdW90YY0GLHZhbGlkX3VudGls8QEcZmVlbGVzcxQCMBRzdG9yZQAABBBkYXRhJFRzdG9yZV93aXRoX2NpZF9jb25maWcAAAgMY2lkfQYQZGF0YSREYXV0aG9yaXplX2FjY291bnQAAAwMd2hvADB0cmFuc2FjdGlvbnMEFGJ5dGVzCEhhdXRob3JpemVfcHJlaW1hZ2UAAAgwY29udGVudF9oYXNoICBtYXhfc2l6ZQiQcmVtb3ZlX2V4cGlyZWRfYWNjb3VudF9hdXRob3JpemF0aW9uAAAEDHdobwCUcmVtb3ZlX2V4cGlyZWRfcHJlaW1hZ2VfYXV0aG9yaXphdGlvbgAABDBjb250ZW50X2hhc2ggdHJlZnJlc2hfYWNjb3VudF9hdXRob3JpemF0aW9uAAAEDHdobwB4cmVmcmVzaF9wcmVpbWFnZV9hdXRob3JpemF0aW9uAAAEMGNvbnRlbnRfaGFzaCBUYXBwbHlfYmxvY2tfaW5oZXJlbnRzAAAEFHByb29mhQY4YWRkX2F1dGhvcml6ZXIAAAgMd2hvABhidWRnZXSRBkRyZW1vdmVfYXV0aG9yaXplcgAABAx3aG8AbHJlbW92ZV9leGhhdXN0ZWRfYXV0aG9yaXplcgAABAx3aG8AAhAcRWQyNTUxOQEgHFNyMjU1MTkBIBRFY2RzYQHlAQxFdGgB5QECEBxFZDI1NTE5Ad0BHFNyMjU1MTkB3QEURWNkc2EB4QEMRXRoAeEBAggccHJvbW90ZQAAEBhzaWduZXKZBiRzaWduYXR1cmWdBkBzdWJtaXRfdGltZXN0YW1wCBBkYXRhJChwcm9tb3RlX3YyAAAUGHNpZ25lcpkGJHNpZ25hdHVyZZ0GQHN1Ym1pdF90aW1lc3RhbXAIPHJlY2lwaWVudHNfaGFzaCAQZGF0YSQCCCBQb3NpdGlvbgAACBRibG9jawQUaW5kZXgELENvbnRlbnRIYXNoASACFBRyZW5ldwAABBRlbnRyeaUGLGZvcmNlX3JlbmV3AAAEFGVudHJ5pQZEZW5hYmxlX2F1dG9fcmVuZXcAAAQwY29udGVudF9oYXNoIEhkaXNhYmxlX2F1dG9fcmVuZXcAAAQwY29udGVudF9oYXNoIGBwcm9jZXNzX3BlbmRpbmdfcmVuZXdhbHMAAQUCFBBzdWRvAAAEEGNhbGyxBlRzdWRvX3VuY2hlY2tlZF93ZWlnaHQAAAgQY2FsbLEGGHdlaWdodBgcc2V0X2tleQAABAxuZXcdAxxzdWRvX2FzAAAIDHdobx0DEGNhbGyxBihyZW1vdmVfa2V5AAEFAkQYU3lzdGVtASkDPFBhcmFjaGFpblN5c3RlbQEtAyRUaW1lc3RhbXABMQM0UGFyYWNoYWluSW5mbwG4HFV0aWxpdHkBYQZQTXVsdGlCbG9ja01pZ3JhdGlvbnMBdQYgQmFsYW5jZXMBNQNIVHJhbnNhY3Rpb25TdG9yYWdlAZUGMEhvcFByb21vdGlvbgGhBixEYXRhUmVuZXdhbAGpBkRDb2xsYXRvclNlbGVjdGlvbgE9AxxTZXNzaW9uAUEDJFhjbXBRdWV1ZQFFAyxQb2xrYWRvdFhjbQGRAyhDdW11bHVzWGNtAbgwTWVzc2FnZVF1ZXVlAZUDEFN1ZG8BrQYEsQYAAgwMWWVzAAEFCE5vAAEFFFN0dWNrAAEFABBEY3VycmVudF9taWdyYXRpb24EQHRvdGFsX21pZ3JhdGlvbnMEXGN1cnJlbnRfbWlncmF0aW9uX3N0ZXBzBGxjdXJyZW50X21pZ3JhdGlvbl9tYXhfc3RlcHPxAQa9BgAMHG9uZ29pbme5BiBwcm9ncmVzc8EGIHByZWZpeGVzWQIACAhpZBkGGGFtb3VudAgEyQYAABQwdHJhbnNhY3Rpb25zBFh0cmFuc2FjdGlvbnNfYWxsb3dhbmNlBBRieXRlcwgUZXh0cmEIPGJ5dGVzX2FsbG93YW5jZQgACBhleHRlbnTRBihleHBpcmF0aW9uBAIIFFN0b3JlAAEFFFJlbmV3AAEFACAoY2h1bmtfcm9vdCAwY29udGVudF9oYXNoIBxoYXNoaW5neQYkY2lkX2NvZGVjCBBzaXplBDxleHRyaW5zaWNfaW5kZXgEMGJsb2NrX2NodW5rcwQQbWV0YdkGBN0GAAAMKHRhZ19wcmVmaXglAiBwcmlvcml0eQgkbG9uZ2V2aXR5CAAMHGFjY291bnQAJHJlY3VycmluZxQQcGFpZBQDDCDdBukGBO0GAAAcJHJlY2lwaWVudAQUc3RhdGXFAzRzaWduYWxzX2V4aXN0FCxmaXJzdF9pbmRleAQobGFzdF9pbmRleAQUZmxhZ3MEMHF1ZXVlZF9ieXRlcwQE9QYAAAggYWxpYXNlcnMdBBh0aWNrZXQIBwkG6QQACBBrZXlzJBRwcm9vZiQEjQMAAhg0VW5pbXBsZW1lbnRlZAABBWRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEFTFdlaWdodE5vdENvbXB1dGFibGUAAQVMVW5oYW5kbGVkWGNtVmVyc2lvbgABBTRBc3NldE5vdEZvdW5kAAEFKFVucm91dGFibGUAAQUHCQcNBwcYDQcHCA0HB70BDQcACDRhY3R1YWxfd2VpZ2h0WQEgcGF5c19mZWU8AAgkcG9zdF9pbmZvIQcUZXJyb3IBBgchByUHBEkGAAaFAwSFAwADCMEBNQcEOQcAABBAZXhlY3V0aW9uX3Jlc3VsdCkHOGVtaXR0ZWRfZXZlbnRzLQckbG9jYWxfeGNtMQc4Zm9yd2FyZGVkX3hjbXM9BwIINFVuaW1wbGVtZW50ZWQAAQVkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABBQdBB0UHAAxAZXhlY3V0aW9uX3Jlc3VsdOA4ZW1pdHRlZF9ldmVudHMtBzhmb3J3YXJkZWRfeGNtcz0HB00HRQcCCCxVbnN1cHBvcnRlZAABBWRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEFBwBVBwIMCFYzAa0BCFY0AbUBCFY1ATEBAgh4VmVyc2lvbmVkQXNzZXRDb252ZXJzaW9uRmFpbGVkAAEFhFZlcnNpb25lZExvY2F0aW9uQ29udmVyc2lvbkZhaWxlZAABBQcUYQcCBHxMb2NhdGlvblZlcnNpb25Db252ZXJzaW9uRmFpbGVkAAEFBx0EaQcHFGkHABQwY29udGVudF9oYXNoIBBzaXplBBxoYXNoaW5neQYkY2lkX2NvZGVjCDxleHRyaW5zaWNfaW5kZXgEBHUHAAAYKGV4cGlyZXNfYXQEPGJ5dGVzX2FsbG93YW5jZQgoYnl0ZXNfdXNlZAhQYnl0ZXNfcGVybWFuZW50X3VzZWQIWHRyYW5zYWN0aW9uc19hbGxvd2FuY2UERHRyYW5zYWN0aW9uc191c2VkBAZ9Bw=="; metadataTypes_default = content; } }); @@ -94,7 +94,7 @@ var binMeta2, bulletin_metadata_default; var init_bulletin_metadata = __esm({ ".papi/descriptors/src/bulletin_metadata.ts"() { "use strict"; - binMeta2 = "bWV0YRBlBwAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCGBidWxsZXRpbl93ZXN0ZW5kX3J1bnRpbWUsUnVudGltZUNhbGwAATgYU3lzdGVtBAAkAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN5c3RlbSwgUnVudGltZT4AAAA8UGFyYWNoYWluU3lzdGVtBABAAdEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFjaGFpblN5c3RlbSwgUnVudGltZT4AAQAkVGltZXN0YW1wBACwAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFRpbWVzdGFtcCwgUnVudGltZT4AAwA0UGFyYWNoYWluSW5mbwQAuAHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhY2hhaW5JbmZvLCBSdW50aW1lPgAEABxVdGlsaXR5BAC8AbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFV0aWxpdHksIFJ1bnRpbWU+AAYAIEJhbGFuY2VzBAAtAQG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxCYWxhbmNlcywgUnVudGltZT4ACgBIVHJhbnNhY3Rpb25TdG9yYWdlBAA9AQHdAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUcmFuc2FjdGlvblN0b3JhZ2UsIFJ1bnRpbWU+ACgARENvbGxhdG9yU2VsZWN0aW9uBABNAQHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDb2xsYXRvclNlbGVjdGlvbiwgUnVudGltZT4AFQAcU2Vzc2lvbgQAUQEBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2Vzc2lvbiwgUnVudGltZT4AFgAkWGNtcFF1ZXVlBABdAQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxYY21wUXVldWUsIFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBABhAQHBAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQb2xrYWRvdFhjbSwgUnVudGltZT4AHwAoQ3VtdWx1c1hjbQQAMQMBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q3VtdWx1c1hjbSwgUnVudGltZT4AIAAwTWVzc2FnZVF1ZXVlBAA1AwHFAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZXNzYWdlUXVldWUsIFJ1bnRpbWU+ACIAEFN1ZG8EAD0DAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN1ZG8sIFJ1bnRpbWU+AGQAACQMMGZyYW1lX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABLBhyZW1hcmsEARhyZW1hcmsYARxWZWM8dTg+AAAMaE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsuAIhDYW4gYmUgZXhlY3V0ZWQgYnkgZXZlcnkgYG9yaWdpbmAuOHNldF9oZWFwX3BhZ2VzBAEUcGFnZXMoAQx1NjQAAQT4U2V0IHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIFdlYkFzc2VtYmx5IGVudmlyb25tZW50J3MgaGVhcC4gc2V0X2NvZGUEARBjb2RlGAEcVmVjPHU4PgACBGRTZXQgdGhlIG5ldyBydW50aW1lIGNvZGUuXHNldF9jb2RlX3dpdGhvdXRfY2hlY2tzBAEQY29kZRgBHFZlYzx1OD4AAxAZAVNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZSB3aXRob3V0IGRvaW5nIGFueSBjaGVja3Mgb2YgdGhlIGdpdmVuIGBjb2RlYC4AUQFOb3RlIHRoYXQgcnVudGltZSB1cGdyYWRlcyB3aWxsIG5vdCBydW4gaWYgdGhpcyBpcyBjYWxsZWQgd2l0aCBhIG5vdC1pbmNyZWFzaW5nIHNwZWMgdmVyc2lvbiEsc2V0X3N0b3JhZ2UEARRpdGVtcywBNFZlYzxLZXlWYWx1ZT4ABARoU2V0IHNvbWUgaXRlbXMgb2Ygc3RvcmFnZS4wa2lsbF9zdG9yYWdlBAEQa2V5czQBIFZlYzxLZXk+AAUEdEtpbGwgc29tZSBpdGVtcyBmcm9tIHN0b3JhZ2UuLGtpbGxfcHJlZml4CAEYcHJlZml4GAEMS2V5AAEcc3Via2V5czgBDHUzMgAGEBEBS2lsbCBhbGwgc3RvcmFnZSBpdGVtcyB3aXRoIGEga2V5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeC4AOQEqKk5PVEU6KiogV2UgcmVseSBvbiB0aGUgUm9vdCBvcmlnaW4gdG8gcHJvdmlkZSB1cyB0aGUgbnVtYmVyIG9mIHN1YmtleXMgdW5kZXI9AXRoZSBwcmVmaXggd2UgYXJlIHJlbW92aW5nIHRvIGFjY3VyYXRlbHkgY2FsY3VsYXRlIHRoZSB3ZWlnaHQgb2YgdGhpcyBmdW5jdGlvbi5EcmVtYXJrX3dpdGhfZXZlbnQEARhyZW1hcmsYARxWZWM8dTg+AAcEpE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsgYW5kIGVtaXQgZXZlbnQuRGF1dGhvcml6ZV91cGdyYWRlBAEkY29kZV9oYXNoPAEcVDo6SGFzaAAJEGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi6AYXV0aG9yaXplX3VwZ3JhZGVfd2l0aG91dF9jaGVja3MEASRjb2RlX2hhc2g8ARxUOjpIYXNoAAogYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgBdAVdBUk5JTkc6IFRoaXMgYXV0aG9yaXplcyBhbiB1cGdyYWRlIHRoYXQgd2lsbCB0YWtlIHBsYWNlIHdpdGhvdXQgYW55IHNhZmV0eSBjaGVja3MsIGZvclkBZXhhbXBsZSB0aGF0IHRoZSBzcGVjIG5hbWUgcmVtYWlucyB0aGUgc2FtZSBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaW5jcmVhc2VzLiBOb3TwcmVjb21tZW5kZWQgZm9yIG5vcm1hbCB1c2UuIFVzZSBgYXV0aG9yaXplX3VwZ3JhZGVgIGluc3RlYWQuAHxUaGlzIGNhbGwgcmVxdWlyZXMgUm9vdCBvcmlnaW4uYGFwcGx5X2F1dGhvcml6ZWRfdXBncmFkZQQBEGNvZGUYARxWZWM8dTg+AAskVQFQcm92aWRlIHRoZSBwcmVpbWFnZSAocnVudGltZSBiaW5hcnkpIGBjb2RlYCBmb3IgYW4gdXBncmFkZSB0aGF0IGhhcyBiZWVuIGF1dGhvcml6ZWQuAEkBSWYgdGhlIGF1dGhvcml6YXRpb24gcmVxdWlyZWQgYSB2ZXJzaW9uIGNoZWNrLCB0aGlzIGNhbGwgd2lsbCBlbnN1cmUgdGhlIHNwZWMgbmFtZehyZW1haW5zIHVuY2hhbmdlZCBhbmQgdGhhdCB0aGUgc3BlYyB2ZXJzaW9uIGhhcyBpbmNyZWFzZWQuAFkBRGVwZW5kaW5nIG9uIHRoZSBydW50aW1lJ3MgYE9uU2V0Q29kZWAgY29uZmlndXJhdGlvbiwgdGhpcyBmdW5jdGlvbiBtYXkgZGlyZWN0bHkgYXBwbHkRAXRoZSBuZXcgYGNvZGVgIGluIHRoZSBzYW1lIGJsb2NrIG9yIGF0dGVtcHQgdG8gc2NoZWR1bGUgdGhlIHVwZ3JhZGUuAGBBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKAAABQYALAAAAjAAMAAABAgYGAA0AAACGAA4AAAFBQA8CDxwcmltaXRpdmVfdHlwZXMQSDI1NgAABAAIASBbdTg7IDMyXQAAQAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABCExzZXRfdmFsaWRhdGlvbl9kYXRhCAEQZGF0YUQBaEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAFUaW5ib3VuZF9tZXNzYWdlc19kYXRhfAFMSW5ib3VuZE1lc3NhZ2VzRGF0YQAAJIBTZXQgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBkYXRhLgBBAVRoaXMgc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIHBlciBibG9jay4gSXQgd2lsbCBwYW5pYyBhdCB0aGUgZmluYWxpemF0aW9uiHBoYXNlIGlmIHRoZSBjYWxsIHdhcyBub3QgaW52b2tlZC4A0FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBJbmhlcmVudGAAIQFBcyBhIHNpZGUgZWZmZWN0LCB0aGlzIGZ1bmN0aW9uIHVwZ3JhZGVzIHRoZSBjdXJyZW50IHZhbGlkYXRpb24gZnVuY3Rpb26EaWYgdGhlIGFwcHJvcHJpYXRlIHRpbWUgaGFzIGNvbWUuYHN1ZG9fc2VuZF91cHdhcmRfbWVzc2FnZQQBHG1lc3NhZ2UYATRVcHdhcmRNZXNzYWdlAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50aEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAAQATx2YWxpZGF0aW9uX2RhdGFIAVxQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YQABRHJlbGF5X2NoYWluX3N0YXRlUAFUc3BfdHJpZTo6U3RvcmFnZVByb29mAAFgcmVsYXlfcGFyZW50X2Rlc2NlbmRhbnRzWAFAVmVjPFJlbGF5SGVhZGVyPgABQGNvbGxhdG9yX3BlZXJfaWR0AVhPcHRpb248QXBwcm92ZWRQZWVySWQ+AABIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5XFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhCARIATwETgE4ABABLHBhcmVudF9oZWFkTAEgSGVhZERhdGEAAUxyZWxheV9wYXJlbnRfbnVtYmVyOAEETgABZHJlbGF5X3BhcmVudF9zdG9yYWdlX3Jvb3Q8AQRIAAEwbWF4X3Bvdl9zaXplOAEMdTMyAABMDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzIEhlYWREYXRhAAAEABgBHFZlYzx1OD4AAFAMHHNwX3RyaWU0c3RvcmFnZV9wcm9vZjBTdG9yYWdlUHJvb2YAAAQBKHRyaWVfbm9kZXNUAURCVHJlZVNldDxWZWM8dTg+PgAAVAQgQlRyZWVTZXQEBFQBGAAEADQAAABYAAACXABcEChzcF9ydW50aW1lHGdlbmVyaWMYaGVhZGVyGEhlYWRlcggYTnVtYmVyATgQSGFzaAAAFAEscGFyZW50X2hhc2g8ATBIYXNoOjpPdXRwdXQAARhudW1iZXJgARhOdW1iZXIAAShzdGF0ZV9yb290PAEwSGFzaDo6T3V0cHV0AAE8ZXh0cmluc2ljc19yb290PAEwSGFzaDo6T3V0cHV0AAEYZGlnZXN0ZAEYRGlnZXN0AABgAAAGOABkEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0GERpZ2VzdAAABAEQbG9nc2gBPFZlYzxEaWdlc3RJdGVtPgAAaAAAAmwAbBAoc3BfcnVudGltZRxnZW5lcmljGGRpZ2VzdChEaWdlc3RJdGVtAAEUKFByZVJ1bnRpbWUIAHABRENvbnNlbnN1c0VuZ2luZUlkAAAYARxWZWM8dTg+AAYAJENvbnNlbnN1cwgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABAAQU2VhbAgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABQAUT3RoZXIEABgBHFZlYzx1OD4AAABkUnVudGltZUVudmlyb25tZW50VXBkYXRlZAAIAABwAAADBAAAAAwAdAQYT3B0aW9uBARUAXgBCBBOb25lAAAAEFNvbWUEAHgAAAEAAHgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAB8DHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudExJbmJvdW5kTWVzc2FnZXNEYXRhAAAIAURkb3dud2FyZF9tZXNzYWdlc4ABfEFicmlkZ2VkSW5ib3VuZERvd253YXJkTWVzc2FnZXMAAUxob3Jpem9udGFsX21lc3NhZ2VzlAFsQWJyaWRnZWRJbmJvdW5kSHJtcE1lc3NhZ2VzAACADHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudIRBYnJpZGdlZEluYm91bmRNZXNzYWdlc0NvbGxlY3Rpb24EHE1lc3NhZ2UBhAAIATRmdWxsX21lc3NhZ2VziAEwVmVjPE1lc3NhZ2U+AAE8aGFzaGVkX21lc3NhZ2VzjAF8VmVjPE1lc3NhZ2U6OkNvbXByZXNzZWRNZXNzYWdlPgAAhAhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzWEluYm91bmREb3dud2FyZE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEMbXNnGAE8RG93bndhcmRNZXNzYWdlAACIAAAChACMAAACkACQCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50NEhhc2hlZE1lc3NhZ2UAAAgBHHNlbnRfYXQ4AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAASBtc2dfaGFzaDwBNHNwX2NvcmU6OkgyNTYAAJQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGYAAgBNGZ1bGxfbWVzc2FnZXOkATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOoAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACYAAAECJygAJwMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMISWQAAAQAOAEMdTMyAACgCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNISW5ib3VuZEhybXBNZXNzYWdlBCxCbG9ja051bWJlcgE4AAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AACkAAACmACoAAACrACsAAAECJyQALAMQHBhbGxldF90aW1lc3RhbXAYcGFsbGV0EENhbGwEBFQAAQQMc2V0BAEMbm93tAEkVDo6TW9tZW50AABMVFNldCB0aGUgY3VycmVudCB0aW1lLgBVAVRoaXMgY2FsbCBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb27UcGhhc2UsIGlmIHRoaXMgY2FsbCBoYXNuJ3QgYmVlbiBpbnZva2VkIGJ5IHRoYXQgdGltZS4AQQFUaGUgdGltZXN0YW1wIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gdGhlIHByZXZpb3VzIG9uZSBieSB0aGUgYW1vdW50IHNwZWNpZmllZCBieWhbYENvbmZpZzo6TWluaW11bVBlcmlvZGBdLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBRAVRoaXMgZGlzcGF0Y2ggY2xhc3MgaXMgX01hbmRhdG9yeV8gdG8gZW5zdXJlIGl0IGdldHMgZXhlY3V0ZWQgaW4gdGhlIGJsb2NrLiBCZSBhd2FyZVEBdGhhdCBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBvZiB0aGlzIGNhbGwgY291bGQgcmVzdWx0IGV4aGF1c3RpbmcgdGhlIHJlc291cmNlcyBpbiBhhGJsb2NrIHRvIGV4ZWN1dGUgYW55IG90aGVyIGNhbGxzLgA0IyMgQ29tcGxleGl0eTEBLSBgTygxKWAgKE5vdGUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgb2YgYE9uVGltZXN0YW1wU2V0YCBtdXN0IGFsc28gYmUgYE8oMSlgKVUBLSAxIHN0b3JhZ2UgcmVhZCBhbmQgMSBzdG9yYWdlIG11dGF0aW9uIChjb2RlYyBgTygxKWAgYmVjYXVzZSBvZiBgRGlkVXBkYXRlOjp0YWtlYCBpbkAgIGBvbl9maW5hbGl6ZWAp1C0gMSBldmVudCBoYW5kbGVyIGBvbl90aW1lc3RhbXBfc2V0YC4gTXVzdCBiZSBgTygxKWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrQAAAYoALgMWHN0YWdpbmdfcGFyYWNoYWluX2luZm8YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvAw4cGFsbGV0X3V0aWxpdHkYcGFsbGV0EENhbGwEBFQAASAUYmF0Y2gEARRjYWxsc8ABfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAEh8U2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzLgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBVAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaGVkIHdpdGhvdXQgY2hlY2tpbmcgb3JpZ2luIGZpbHRlci4gKFRoaXPsaW5jbHVkZXMgYnlwYXNzaW5nIGBmcmFtZV9zeXN0ZW06OkNvbmZpZzo6QmFzZUNhbGxGaWx0ZXJgKS4ANCMjIENvbXBsZXhpdHnQLSBPKEMpIHdoZXJlIEMgaXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBiZSBiYXRjaGVkLgBVAVRoaXMgd2lsbCByZXR1cm4gYE9rYCBpbiBhbGwgY2lyY3Vtc3RhbmNlcy4gVG8gZGV0ZXJtaW5lIHRoZSBzdWNjZXNzIG9mIHRoZSBiYXRjaCwgYW4xAWV2ZW50IGlzIGRlcG9zaXRlZC4gSWYgYSBjYWxsIGZhaWxlZCBhbmQgdGhlIGJhdGNoIHdhcyBpbnRlcnJ1cHRlZCwgdGhlbiB0aGVVAWBCYXRjaEludGVycnVwdGVkYCBldmVudCBpcyBkZXBvc2l0ZWQsIGFsb25nIHdpdGggdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIGNhbGxzIG1hZGVNAWFuZCB0aGUgZXJyb3Igb2YgdGhlIGZhaWxlZCBjYWxsLiBJZiBhbGwgd2VyZSBzdWNjZXNzZnVsLCB0aGVuIHRoZSBgQmF0Y2hDb21wbGV0ZWRgTGV2ZW50IGlzIGRlcG9zaXRlZC40YXNfZGVyaXZhdGl2ZQgBFGluZGV4xAEMdTE2AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AATTcU2VuZCBhIGNhbGwgdGhyb3VnaCBhbiBpbmRleGVkIHBzZXVkb255bSBvZiB0aGUgc2VuZGVyLgBVAUZpbHRlciBmcm9tIG9yaWdpbiBhcmUgcGFzc2VkIGFsb25nLiBUaGUgY2FsbCB3aWxsIGJlIGRpc3BhdGNoZWQgd2l0aCBhbiBvcmlnaW4gd2hpY2i8dXNlIHRoZSBzYW1lIGZpbHRlciBhcyB0aGUgb3JpZ2luIG9mIHRoaXMgY2FsbC4ARQFOT1RFOiBJZiB5b3UgbmVlZCB0byBlbnN1cmUgdGhhdCBhbnkgYWNjb3VudC1iYXNlZCBmaWx0ZXJpbmcgaXMgbm90IGhvbm9yZWQgKGkuZS5hAWJlY2F1c2UgeW91IGV4cGVjdCBgcHJveHlgIHRvIGhhdmUgYmVlbiB1c2VkIHByaW9yIGluIHRoZSBjYWxsIHN0YWNrIGFuZCB5b3UgZG8gbm90IHdhbnRRAXRoZSBjYWxsIHJlc3RyaWN0aW9ucyB0byBhcHBseSB0byBhbnkgc3ViLWFjY291bnRzKSwgdGhlbiB1c2UgYGFzX211bHRpX3RocmVzaG9sZF8xYHxpbiB0aGUgTXVsdGlzaWcgcGFsbGV0IGluc3RlYWQuAPROT1RFOiBQcmlvciB0byB2ZXJzaW9uICoxMiwgdGhpcyB3YXMgY2FsbGVkIGBhc19saW1pdGVkX3N1YmAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4kYmF0Y2hfYWxsBAEUY2FsbHPAAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAI07FNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscyBhbmQgYXRvbWljYWxseSBleGVjdXRlIHRoZW0uIQFUaGUgd2hvbGUgdHJhbnNhY3Rpb24gd2lsbCByb2xsYmFjayBhbmQgZmFpbCBpZiBhbnkgb2YgdGhlIGNhbGxzIGZhaWxlZC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sZGlzcGF0Y2hfYXMIASRhc19vcmlnaW7IAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgADGMhEaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgcHJvdmlkZWQgb3JpZ2luLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuLGZvcmNlX2JhdGNoBAEUY2FsbHPAAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAQ0fFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy7UVW5saWtlIGBiYXRjaGAsIGl0IGFsbG93cyBlcnJvcnMgYW5kIHdvbid0IGludGVycnVwdC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4ATQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2ggd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuLHdpdGhfd2VpZ2h0CAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AARh3ZWlnaHQpAQEYV2VpZ2h0AAUYxERpc3BhdGNoIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgc3BlY2lmaWVkIHdlaWdodC4ALQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGW4Um9vdCBvcmlnaW4gdG8gc3BlY2lmeSB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLhxpZl9lbHNlCAEQbWFpbiABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AASBmYWxsYmFjayABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABlwVAURpc3BhdGNoIGEgZmFsbGJhY2sgY2FsbCBpbiB0aGUgZXZlbnQgdGhlIG1haW4gY2FsbCBmYWlscyB0byBleGVjdXRlLrBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgDkVGhpcyBmdW5jdGlvbiBmaXJzdCBhdHRlbXB0cyB0byBkaXNwYXRjaCB0aGUgYG1haW5gIGNhbGwu1ElmIHRoZSBgbWFpbmAgY2FsbCBmYWlscywgdGhlIGBmYWxsYmFja2AgaXMgYXR0ZW10ZWQuFQFpZiB0aGUgZmFsbGJhY2sgaXMgc3VjY2Vzc2Z1bGx5IGRpc3BhdGNoZWQsIHRoZSB3ZWlnaHRzIG9mIGJvdGggY2FsbHMlAWFyZSBhY2N1bXVsYXRlZCBhbmQgYW4gZXZlbnQgY29udGFpbmluZyB0aGUgbWFpbiBjYWxsIGVycm9yIGlzIGRlcG9zaXRlZC4A3EluIHRoZSBldmVudCBvZiBhIGZhbGxiYWNrIGZhaWx1cmUgdGhlIHdob2xlIGNhbGwgZmFpbHNod2l0aCB0aGUgd2VpZ2h0cyByZXR1cm5lZC4AQQEtIGBtYWluYDogVGhlIG1haW4gY2FsbCB0byBiZSBkaXNwYXRjaGVkLiBUaGlzIGlzIHRoZSBwcmltYXJ5IGFjdGlvbiB0byBleGVjdXRlLj0BLSBgZmFsbGJhY2tgOiBUaGUgZmFsbGJhY2sgY2FsbCB0byBiZSBkaXNwYXRjaGVkIGluIGNhc2UgdGhlIGBtYWluYCBjYWxsIGZhaWxzLgBEIyMgRGlzcGF0Y2ggTG9naWNBAS0gSWYgdGhlIG9yaWdpbiBpcyBgcm9vdGAsIGJvdGggdGhlIG1haW4gYW5kIGZhbGxiYWNrIGNhbGxzIGFyZSBleGVjdXRlZCB3aXRob3V0eCAgYXBwbHlpbmcgYW55IG9yaWdpbiBmaWx0ZXJzLkkBLSBJZiB0aGUgb3JpZ2luIGlzIG5vdCBgcm9vdGAsIHRoZSBvcmlnaW4gZmlsdGVyIGlzIGFwcGxpZWQgdG8gYm90aCB0aGUgYG1haW5gIGFuZEwgIGBmYWxsYmFja2AgY2FsbHMuACwjIyBVc2UgQ2FzZVkBLSBTb21lIHVzZSBjYXNlcyBtaWdodCBpbnZvbHZlIHN1Ym1pdHRpbmcgYSBgYmF0Y2hgIHR5cGUgY2FsbCBpbiBlaXRoZXIgbWFpbiwgZmFsbGJhY2soICBvciBib3RoLlBkaXNwYXRjaF9hc19mYWxsaWJsZQgBJGFzX29yaWdpbsgBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAcUyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAFEBQWxtb3N0IHRoZSBzYW1lIGFzIFtgUGFsbGV0OjpkaXNwYXRjaF9hc2BdIGJ1dCBmb3J3YXJkcyBhbnkgZXJyb3Igb2YgdGhlIGlubmVyIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsAAAAIgAMQAAAUEAMgIYGJ1bGxldGluX3dlc3RlbmRfcnVudGltZTBPcmlnaW5DYWxsZXIAARAYc3lzdGVtBADMAXRmcmFtZV9zeXN0ZW06Ok9yaWdpbjxSdW50aW1lPgAAAEhUcmFuc2FjdGlvblN0b3JhZ2UEANABrHBhbGxldF90cmFuc2FjdGlvbl9zdG9yYWdlOjpPcmlnaW48UnVudGltZT4AKAAsUG9sa2Fkb3RYY20EANwBSHBhbGxldF94Y206Ok9yaWdpbgAfAChDdW11bHVzWGNtBAAlAQFoY3VtdWx1c19wYWxsZXRfeGNtOjpPcmlnaW4AIAAAzAw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaCRSYXdPcmlnaW4EJEFjY291bnRJZAEEARAQUm9vdAAAABhTaWduZWQEAAQBJEFjY291bnRJZAABABBOb25lAAIAKEF1dGhvcml6ZWQAAwAA0AxocGFsbGV0X3RyYW5zYWN0aW9uX3N0b3JhZ2UYcGFsbGV0GE9yaWdpbgQEVAHUAQQoQXV0aG9yaXplZAgBDHdobwQBMFQ6OkFjY291bnRJZAABFHNjb3Bl2AFgQXV0aG9yaXphdGlvblNjb3BlRm9yPFQ+AAAAANQIYGJ1bGxldGluX3dlc3RlbmRfcnVudGltZRxSdW50aW1lAAAAANgIaHBhbGxldF90cmFuc2FjdGlvbl9zdG9yYWdlSEF1dGhvcml6YXRpb25TY29wZQQkQWNjb3VudElkAQQBCBxBY2NvdW50BAAEASRBY2NvdW50SWQAAAAgUHJlaW1hZ2UEAAgBLENvbnRlbnRIYXNoAAEAANwMKHBhbGxldF94Y20YcGFsbGV0GE9yaWdpbgABCAxYY20EAOABIExvY2F0aW9uAAAAIFJlc3BvbnNlBADgASBMb2NhdGlvbgABAADgECxzdGFnaW5nX3hjbQh2NSBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3LkASRKdW5jdGlvbnMAAOQQLHN0YWdpbmdfeGNtCHY1JGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQA6AFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBAAJAQFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBAANAQFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BAARAQFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BAAVAQFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BAAZAQFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BAAdAQFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BAAhAQFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAAOgAAAMBAAAA7ADsECxzdGFnaW5nX3hjbQh2NSBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmvwAURPcHRpb248TmV0d29ya0lkPgABCGlkCAEgW3U4OyAzMl0AAQA4QWNjb3VudEluZGV4NjQIARxuZXR3b3Jr8AFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3Jr8AFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BAD4ARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWQBAQEYQm9keUlkAAEQcGFydAUBASBCb2R5UGFydAAIADxHbG9iYWxDb25zZW5zdXMEAPQBJE5ldHdvcmtJZAAJAADwBBhPcHRpb24EBFQB9AEIEE5vbmUAAAAQU29tZQQA9AAAAQAA9BAsc3RhZ2luZ194Y20IdjUganVuY3Rpb24kTmV0d29ya0lkAAEgJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADACBFdGhlcmV1bQQBIGNoYWluX2lktAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAA+AAABvwA/AAABQcAAQEQDHhjbQh2MyBqdW5jdGlvbhhCb2R5SWQAASgQVW5pdAAAABxNb25pa2VyBABwARxbdTg7IDRdAAEAFEluZGV4BABgAQx1MzIAAgAkRXhlY3V0aXZlAAMAJFRlY2huaWNhbAAEACxMZWdpc2xhdGl2ZQAFACBKdWRpY2lhbAAGABxEZWZlbnNlAAcAOEFkbWluaXN0cmF0aW9uAAgAIFRyZWFzdXJ5AAkAAAUBEAx4Y20IdjMganVuY3Rpb24gQm9keVBhcnQAARQUVm9pY2UAAAAcTWVtYmVycwQBFGNvdW50YAEMdTMyAAEAIEZyYWN0aW9uCAEMbm9tYAEMdTMyAAEUZGVub21gAQx1MzIAAgBEQXRMZWFzdFByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgADAEhNb3JlVGhhblByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgAEAAAJAQAAAwIAAADsAA0BAAADAwAAAOwAEQEAAAMEAAAA7AAVAQAAAwUAAADsABkBAAADBgAAAOwAHQEAAAMHAAAA7AAhAQAAAwgAAADsACUBDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0GE9yaWdpbgABCBRSZWxheQAAAEBTaWJsaW5nUGFyYWNoYWluBACcARhQYXJhSWQAAQAAKQEMKHNwX3dlaWdodHMkd2VpZ2h0X3YyGFdlaWdodAAACAEgcmVmX3RpbWW0AQx1NjQAAShwcm9vZl9zaXpltAEMdTY0AAAtAQw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBBDYWxsCARUAARJAAEkUHRyYW5zZmVyX2FsbG93X2RlYXRoCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWX4AShUOjpCYWxhbmNlAAAc1FRyYW5zZmVyIHNvbWUgbGlxdWlkIGZyZWUgYmFsYW5jZSB0byBhbm90aGVyIGFjY291bnQuADUBYHRyYW5zZmVyX2FsbG93X2RlYXRoYCB3aWxsIHNldCB0aGUgYEZyZWVCYWxhbmNlYCBvZiB0aGUgc2VuZGVyIGFuZCByZWNlaXZlci4RAUlmIHRoZSBzZW5kZXIncyBhY2NvdW50IGlzIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFzIGEgcmVzdWx0sG9mIHRoZSB0cmFuc2ZlciwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIHRyYW5zYWN0b3IuOGZvcmNlX3RyYW5zZmVyDAEYc291cmNlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZfgBKFQ6OkJhbGFuY2UAAghhAUV4YWN0bHkgYXMgYHRyYW5zZmVyX2FsbG93X2RlYXRoYCwgZXhjZXB0IHRoZSBvcmlnaW4gbXVzdCBiZSByb290IGFuZCB0aGUgc291cmNlIGFjY291bnREbWF5IGJlIHNwZWNpZmllZC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQgBEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVl+AEoVDo6QmFsYW5jZQADGFkBU2FtZSBhcyB0aGUgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGNhbGwsIGJ1dCB3aXRoIGEgY2hlY2sgdGhhdCB0aGUgdHJhbnNmZXIgd2lsbCBub3Rga2lsbCB0aGUgb3JpZ2luIGFjY291bnQuAOg5OSUgb2YgdGhlIHRpbWUgeW91IHdhbnQgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGluc3RlYWQuAPBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF06IHN0cnVjdC5QYWxsZXQuaHRtbCNtZXRob2QudHJhbnNmZXIwdHJhbnNmZXJfYWxsCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZTEBARBib29sAAQ8BQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0YQFhbnkgbG9ja2VkLCByZXNlcnZlZCwgb3IgZXhpc3RlbnRpYWwgZGVwb3NpdHMgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhY2NvdW50IHRvIGJlIGtpbGxlZCAoZmFsc2UpLCBvclkBICB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCwgd2hpY2ggd2lsbCBndWFyYW50ZWUgdG+cICBrZWVwIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuPGZvcmNlX3VucmVzZXJ2ZQgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50/AEoVDo6QmFsYW5jZQAFDLBVbnJlc2VydmUgc29tZSBiYWxhbmNlIGZyb20gYSB1c2VyIGJ5IGZvcmNlLgBsQ2FuIG9ubHkgYmUgY2FsbGVkIGJ5IFJPT1QuQHVwZ3JhZGVfYWNjb3VudHMEAQx3aG81AQFEVmVjPFQ6OkFjY291bnRJZD4ABiBwVXBncmFkZSBhIHNwZWNpZmllZCBhY2NvdW50LgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdXBncmFkZWQuAFUBVGhpcyB3aWxsIHdhaXZlIHRoZSB0cmFuc2FjdGlvbiBmZWUgaWYgYXQgbGVhc3QgYWxsIGJ1dCAxMCUgb2YgdGhlIGFjY291bnRzIG5lZWRlZCB0b0EBYmUgdXBncmFkZWQuIChXZSBsZXQgc29tZSBub3QgaGF2ZSB0byBiZSB1cGdyYWRlZCBqdXN0IGluIG9yZGVyIHRvIGFsbG93IGZvciB0aGVYcG9zc2liaWxpdHkgb2YgY2h1cm4pLkRmb3JjZV9zZXRfYmFsYW5jZQgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgbmV3X2ZyZWX4AShUOjpCYWxhbmNlAAgMrFNldCB0aGUgcmVndWxhciBiYWxhbmNlIG9mIGEgZ2l2ZW4gYWNjb3VudC4AsFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBpcyBgcm9vdGAubGZvcmNlX2FkanVzdF90b3RhbF9pc3N1YW5jZQgBJGRpcmVjdGlvbjkBAUxBZGp1c3RtZW50RGlyZWN0aW9uAAEUZGVsdGH4AShUOjpCYWxhbmNlAAkUuEFkanVzdCB0aGUgdG90YWwgaXNzdWFuY2UgaW4gYSBzYXR1cmF0aW5nIHdheS4A/ENhbiBvbmx5IGJlIGNhbGxlZCBieSByb290IGFuZCBhbHdheXMgbmVlZHMgYSBwb3NpdGl2ZSBgZGVsdGFgLgAkIyBFeGFtcGxlEGJ1cm4IARR2YWx1ZfgBKFQ6OkJhbGFuY2UAAShrZWVwX2FsaXZlMQEBEGJvb2wAChz8QnVybiB0aGUgc3BlY2lmaWVkIGxpcXVpZCBmcmVlIGJhbGFuY2UgZnJvbSB0aGUgb3JpZ2luIGFjY291bnQuACUBSWYgdGhlIG9yaWdpbidzIGFjY291bnQgZW5kcyB1cCBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCBhcyBhIHJlc3VsdAkBb2YgdGhlIGJ1cm4gYW5kIGBrZWVwX2FsaXZlYCBpcyBmYWxzZSwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuAFEBVW5saWtlIHNlbmRpbmcgZnVuZHMgdG8gYSBfYnVybl8gYWRkcmVzcywgd2hpY2ggbWVyZWx5IG1ha2VzIHRoZSBmdW5kcyBpbmFjY2Vzc2libGUsIQF0aGlzIGBidXJuYCBvcGVyYXRpb24gd2lsbCByZWR1Y2UgdG90YWwgaXNzdWFuY2UgYnkgdGhlIGFtb3VudCBfYnVybmVkXy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuMQEAAAUAADUBAAACBAA5AQw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzTEFkanVzdG1lbnREaXJlY3Rpb24AAQggSW5jcmVhc2UAAAAgRGVjcmVhc2UAAQAAPQEMaHBhbGxldF90cmFuc2FjdGlvbl9zdG9yYWdlGHBhbGxldBBDYWxsBARUAAEoFHN0b3JlBAEQZGF0YRgBHFZlYzx1OD4AADgdAUluZGV4IGFuZCBzdG9yZSBkYXRhIG9mZiBjaGFpbi4gTWluaW11bSBkYXRhIHNpemUgaXMgMSBieXRlLCBtYXhpbXVtIGlzRQFgTWF4VHJhbnNhY3Rpb25TaXplYC4gRGF0YSB3aWxsIGJlIHJlbW92ZWQgYWZ0ZXIgYFJldGVudGlvblBlcmlvZGAgYmxvY2tzLCB1bmxlc3NIYHJlbmV3YCBpcyBjYWxsZWQuAE0BQXV0aG9yaXphdGlvbiBpcyByZXF1aXJlZCB0byBzdG9yZSBkYXRhIHVzaW5nIHJlZ3VsYXIgc2lnbmVkL3Vuc2lnbmVkIHRyYW5zYWN0aW9ucy74UmVndWxhciBzaWduZWQgdHJhbnNhY3Rpb25zIHJlcXVpcmUgYWNjb3VudCBhdXRob3JpemF0aW9uIChzZWVZAVtgYXV0aG9yaXplX2FjY291bnRgXShTZWxmOjphdXRob3JpemVfYWNjb3VudCkpLCByZWd1bGFyIHVuc2lnbmVkIHRyYW5zYWN0aW9ucyByZXF1aXJlOQFwcmVpbWFnZSBhdXRob3JpemF0aW9uIChzZWUgW2BhdXRob3JpemVfcHJlaW1hZ2VgXShTZWxmOjphdXRob3JpemVfcHJlaW1hZ2UpKS4AwEVtaXRzIFtgU3RvcmVkYF0oRXZlbnQ6OlN0b3JlZCkgd2hlbiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eQAVAU8obipsb2cobikpIG9mIGRhdGEgc2l6ZSwgYXMgYWxsIGRhdGEgaXMgcHVzaGVkIHRvIGFuIGluLW1lbW9yeSB0cmllLlRzdG9yZV93aXRoX2NpZF9jb25maWcIAQxjaWRBAQEkQ2lkQ29uZmlnAAEQZGF0YRgBHFZlYzx1OD4ACRgJAUluZGV4IGFuZCBzdG9yZSBkYXRhIG9mZiBjaGFpbiB3aXRoIGFuIGV4cGxpY2l0IENJRCBjb25maWd1cmF0aW9uLgAhAUJlaGF2ZXMgaWRlbnRpY2FsbHkgdG8gW2BzdG9yZWBdKFNlbGY6OnN0b3JlKSwgYnV0IHRoZSBDSUQgY29uZmlndXJhdGlvbgEBKGNvZGVjIGFuZCBoYXNoaW5nIGFsZ29yaXRobSkgaXMgcGFzc2VkIGRpcmVjdGx5IGFzIGEgcGFyYW1ldGVyLgDARW1pdHMgW2BTdG9yZWRgXShFdmVudDo6U3RvcmVkKSB3aGVuIHN1Y2Nlc3NmdWwuFHJlbmV3CAEUYmxvY2s4AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4OAEMdTMyAAEwUQFSZW5ldyBwcmV2aW91c2x5IHN0b3JlZCBkYXRhLiBQYXJhbWV0ZXJzIGFyZSB0aGUgYmxvY2sgbnVtYmVyIHRoYXQgY29udGFpbnMgcHJldmlvdXNVAWBzdG9yZWAgb3IgYHJlbmV3YCBjYWxsIGFuZCB0cmFuc2FjdGlvbiBpbmRleCB3aXRoaW4gdGhhdCBibG9jay4gVHJhbnNhY3Rpb24gaW5kZXggaXOsZW1pdHRlZCBpbiB0aGUgYFN0b3JlZGAgb3IgYFJlbmV3ZWRgIGV2ZW50LgBVAUFzIHdpdGggW2BzdG9yZWBdKFNlbGY6OnN0b3JlKSwgYXV0aG9yaXphdGlvbiBpcyByZXF1aXJlZCB0byByZW5ldyBkYXRhIHVzaW5nIHJlZ3VsYXJ0c2lnbmVkL3Vuc2lnbmVkIHRyYW5zYWN0aW9ucy4AyEVtaXRzIFtgUmVuZXdlZGBdKEV2ZW50OjpSZW5ld2VkKSB3aGVuIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5ABRPKDEpLixjaGVja19wcm9vZgQBFHByb29mSQEBXFRyYW5zYWN0aW9uU3RvcmFnZVByb29mAAIcYQFDaGVjayBzdG9yYWdlIHByb29mIGZvciBibG9jayBudW1iZXIgYGJsb2NrX251bWJlcigpIC0gUmV0ZW50aW9uUGVyaW9kYC4gSWYgc3VjaCBhIGJsb2NrzGRvZXMgbm90IGV4aXN0LCB0aGUgcHJvb2YgaXMgZXhwZWN0ZWQgdG8gYmUgYE5vbmVgLgA0IyMgQ29tcGxleGl0eQBdAUxpbmVhciB3LnIudCB0aGUgbnVtYmVyIG9mIGluZGV4ZWQgdHJhbnNhY3Rpb25zIGluIHRoZSBwcm92ZWQgYmxvY2sgZm9yIHJhbmRvbSBwcm9iaW5nLpxUaGVyZSdzIGEgREIgcmVhZCBmb3IgZWFjaCB0cmFuc2FjdGlvbi5EYXV0aG9yaXplX2FjY291bnQMAQx3aG8EATBUOjpBY2NvdW50SWQAATB0cmFuc2FjdGlvbnM4AQx1MzIAARRieXRlcygBDHU2NAADPF0BQXV0aG9yaXplIGFuIGFjY291bnQgdG8gc3RvcmUgdXAgdG8gYSBnaXZlbiBhbW91bnQgb2YgYXJiaXRyYXJ5IGRhdGEuIFRoZSBhdXRob3JpemF0aW9uwHdpbGwgZXhwaXJlIGFmdGVyIGEgY29uZmlndXJlZCBudW1iZXIgb2YgYmxvY2tzLgBRAUlmIHRoZSBhY2NvdW50IGlzIGFscmVhZHkgYXV0aG9yaXplZCB0byBzdG9yZSBkYXRhLCB0aGlzIHdpbGwgaW5jcmVhc2UgdGhlIGFtb3VudCBvZl0BZGF0YSB0aGUgYWNjb3VudCBpcyBhdXRob3JpemVkIHRvIHN0b3JlIChhbmQgdGhlIG51bWJlciBvZiB0cmFuc2FjdGlvbnMgdGhlIGFjY291bnQgbWF5/HN1Ym1pdCB0byBzdXBwbHkgdGhlIGRhdGEpLCBhbmQgcHVzaCBiYWNrIHRoZSBleHBpcmF0aW9uIGJsb2NrLgAsUGFyYW1ldGVyczoAIQEtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZCB3aXRoIGFuIGF1dGhvcml6YXRpb24gdG8gc3RvcmUgZGF0YS5dAS0gYHRyYW5zYWN0aW9uc2A6IFRoZSBudW1iZXIgb2YgdHJhbnNhY3Rpb25zIHRoYXQgYHdob2AgbWF5IHN1Ym1pdCB0byBzdXBwbHkgdGhhdCBkYXRhLtQtIGBieXRlc2A6IFRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBgd2hvYCBtYXkgc3VibWl0LgAFAVRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBwYWxsZXQncyBgQXV0aG9yaXplcmAuIEVtaXRzAQFbYEFjY291bnRBdXRob3JpemVkYF0oRXZlbnQ6OkFjY291bnRBdXRob3JpemVkKSB3aGVuIHN1Y2Nlc3NmdWwuSGF1dGhvcml6ZV9wcmVpbWFnZQgBMGNvbnRlbnRfaGFzaAgBLENvbnRlbnRIYXNoAAEgbWF4X3NpemUoAQx1NjQABEBZAUF1dGhvcml6ZSBhbnlvbmUgdG8gc3RvcmUgYSBwcmVpbWFnZSBvZiB0aGUgZ2l2ZW4gY29udGVudCBoYXNoLiBUaGUgYXV0aG9yaXphdGlvbiB3aWxsrGV4cGlyZSBhZnRlciBhIGNvbmZpZ3VyZWQgbnVtYmVyIG9mIGJsb2Nrcy4ASQFJZiBhdXRob3JpemF0aW9uIGFscmVhZHkgZXhpc3RzIGZvciBhIHByZWltYWdlIG9mIHRoZSBnaXZlbiBoYXNoIHRvIGJlIHN0b3JlZCwgdGhlWQFtYXhpbXVtIHNpemUgb2YgdGhlIHByZWltYWdlIHdpbGwgYmUgaW5jcmVhc2VkIHRvIGBtYXhfc2l6ZWAsIGFuZCB0aGUgZXhwaXJhdGlvbiBibG9ja1B3aWxsIGJlIHB1c2hlZCBiYWNrLgAsUGFyYW1ldGVyczoAXQEtIGBjb250ZW50X2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgZGF0YSB0byBiZSBzdWJtaXR0ZWQuIEZvciBbYHN0b3JlYF0oU2VsZjo6c3RvcmUpIHRoaXNVASAgaXMgdGhlIEJMQUtFMmItMjU2IGhhc2g7IGZvciBbYHN0b3JlX3dpdGhfY2lkX2NvbmZpZ2BdKFNlbGY6OnN0b3JlX3dpdGhfY2lkX2NvbmZpZykJASAgdGhpcyBpcyB0aGUgaGFzaCBwcm9kdWNlZCBieSB0aGUgQ0lEIGNvbmZpZydzIGhhc2hpbmcgYWxnb3JpdGhtLugtIGBtYXhfc2l6ZWA6IFRoZSBtYXhpbXVtIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgcHJlaW1hZ2UuAAUBVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIHBhbGxldCdzIGBBdXRob3JpemVyYC4gRW1pdHMJAVtgUHJlaW1hZ2VBdXRob3JpemVkYF0oRXZlbnQ6OlByZWltYWdlQXV0aG9yaXplZCkgd2hlbiBzdWNjZXNzZnVsLpByZW1vdmVfZXhwaXJlZF9hY2NvdW50X2F1dGhvcml6YXRpb24EAQx3aG8EATBUOjpBY2NvdW50SWQABSAtAVJlbW92ZSBhbiBleHBpcmVkIGFjY291bnQgYXV0aG9yaXphdGlvbiBmcm9tIHN0b3JhZ2UuIEFueW9uZSBjYW4gY2FsbCB0aGlzLgAsUGFyYW1ldGVyczoA9C0gYHdob2A6IFRoZSBhY2NvdW50IHdpdGggYW4gZXhwaXJlZCBhdXRob3JpemF0aW9uIHRvIHJlbW92ZS4AXQFFbWl0cyBbYEV4cGlyZWRBY2NvdW50QXV0aG9yaXphdGlvblJlbW92ZWRgXShFdmVudDo6RXhwaXJlZEFjY291bnRBdXRob3JpemF0aW9uUmVtb3ZlZClAd2hlbiBzdWNjZXNzZnVsLpRyZW1vdmVfZXhwaXJlZF9wcmVpbWFnZV9hdXRob3JpemF0aW9uBAEwY29udGVudF9oYXNoCAEsQ29udGVudEhhc2gABiQxAVJlbW92ZSBhbiBleHBpcmVkIHByZWltYWdlIGF1dGhvcml6YXRpb24gZnJvbSBzdG9yYWdlLiBBbnlvbmUgY2FuIGNhbGwgdGhpcy4ALFBhcmFtZXRlcnM6ANwtIGBjb250ZW50X2hhc2hgOiBUaGUgQkxBS0UyYiBoYXNoIHRoYXQgd2FzIGF1dGhvcml6ZWQuABRFbWl0c00BW2BFeHBpcmVkUHJlaW1hZ2VBdXRob3JpemF0aW9uUmVtb3ZlZGBdKEV2ZW50OjpFeHBpcmVkUHJlaW1hZ2VBdXRob3JpemF0aW9uUmVtb3ZlZClAd2hlbiBzdWNjZXNzZnVsLnRyZWZyZXNoX2FjY291bnRfYXV0aG9yaXphdGlvbgQBDHdobwQBMFQ6OkFjY291bnRJZAAHKA0BUmVmcmVzaCB0aGUgZXhwaXJhdGlvbiBvZiBhbiBleGlzdGluZyBhdXRob3JpemF0aW9uIGZvciBhbiBhY2NvdW50LgAJAUlmIHRoZSBhY2NvdW50IGRvZXMgbm90IGhhdmUgYW4gYXV0aG9yaXphdGlvbiwgdGhlIGNhbGwgd2lsbCBmYWlsLgAsUGFyYW1ldGVyczoAIQEtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZCB3aXRoIGFuIGF1dGhvcml6YXRpb24gdG8gc3RvcmUgZGF0YS4ABQFUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgcGFsbGV0J3MgYEF1dGhvcml6ZXJgLiBFbWl0c2EBW2BBY2NvdW50QXV0aG9yaXphdGlvblJlZnJlc2hlZGBdKEV2ZW50OjpBY2NvdW50QXV0aG9yaXphdGlvblJlZnJlc2hlZCkgd2hlbiBzdWNjZXNzZnVsLnhyZWZyZXNoX3ByZWltYWdlX2F1dGhvcml6YXRpb24EATBjb250ZW50X2hhc2gIASxDb250ZW50SGFzaAAILFUBUmVmcmVzaCB0aGUgZXhwaXJhdGlvbiBvZiBhbiBleGlzdGluZyBhdXRob3JpemF0aW9uIGZvciBhIHByZWltYWdlIG9mIGEgQkxBS0UyYiBoYXNoLgANAUlmIHRoZSBwcmVpbWFnZSBkb2VzIG5vdCBoYXZlIGFuIGF1dGhvcml6YXRpb24sIHRoZSBjYWxsIHdpbGwgZmFpbC4ALFBhcmFtZXRlcnM6APwtIGBjb250ZW50X2hhc2hgOiBUaGUgQkxBS0UyYiBoYXNoIG9mIHRoZSBkYXRhIHRvIGJlIHN1Ym1pdHRlZC4ABQFUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgcGFsbGV0J3MgYEF1dGhvcml6ZXJgLiBFbWl0czkBW2BQcmVpbWFnZUF1dGhvcml6YXRpb25SZWZyZXNoZWRgXShFdmVudDo6UHJlaW1hZ2VBdXRob3JpemF0aW9uUmVmcmVzaGVkKSB3aGVuLHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkEBDHh0cmFuc2FjdGlvbl9zdG9yYWdlX3ByaW1pdGl2ZXMQY2lkcyRDaWRDb25maWcAAAgBFGNvZGVjKAEgQ2lkQ29kZWMAARxoYXNoaW5nRQEBQEhhc2hpbmdBbGdvcml0aG0AAEUBDHh0cmFuc2FjdGlvbl9zdG9yYWdlX3ByaW1pdGl2ZXMQY2lkc0BIYXNoaW5nQWxnb3JpdGhtAAEMKEJsYWtlMmIyNTYAAAAgU2hhMl8yNTYAAQAkS2VjY2FrMjU2AAIAAEkBCHBzcF90cmFuc2FjdGlvbl9zdG9yYWdlX3Byb29mXFRyYW5zYWN0aW9uU3RvcmFnZVByb29mAAAIARRjaHVuaxgBHFZlYzx1OD4AARRwcm9vZjQBMFZlYzxWZWM8dTg+PgAATQEMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0EENhbGwEBFQAASREc2V0X2ludnVsbmVyYWJsZXMEAQxuZXc1AQFEVmVjPFQ6OkFjY291bnRJZD4AADQxAVNldCB0aGUgbGlzdCBvZiBpbnZ1bG5lcmFibGUgKGZpeGVkKSBjb2xsYXRvcnMuIFRoZXNlIGNvbGxhdG9ycyBtdXN0IGRvIHNvbWXQcHJlcGFyYXRpb24sIG5hbWVseSB0byBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLgBZAVRoZSBjYWxsIHdpbGwgcmVtb3ZlIGFueSBhY2NvdW50cyB0aGF0IGhhdmUgbm90IHJlZ2lzdGVyZWQga2V5cyBmcm9tIHRoZSBzZXQuIFRoYXQgaXMsXQFpdCBpcyBub24tYXRvbWljOyB0aGUgY2FsbGVyIGFjY2VwdHMgYWxsIGBBY2NvdW50SWRgcyBwYXNzZWQgaW4gYG5ld2AgX2luZGl2aWR1YWxseV8gYXMxAWFjY2VwdGFibGUgSW52dWxuZXJhYmxlcywgYW5kIGlzIG5vdCBwcm9wb3NpbmcgYSBfc2V0XyBvZiBuZXcgSW52dWxuZXJhYmxlcy4AWQFUaGlzIGNhbGwgZG9lcyBub3QgbWFpbnRhaW4gbXV0dWFsIGV4Y2x1c2l2aXR5IG9mIGBJbnZ1bG5lcmFibGVzYCBhbmQgYENhbmRpZGF0ZXNgLiBJdGEBaXMgcmVjb21tZW5kZWQgdG8gdXNlIGEgYmF0Y2ggb2YgYGFkZF9pbnZ1bG5lcmFibGVgIGFuZCBgcmVtb3ZlX2ludnVsbmVyYWJsZWAgaW5zdGVhZC4gQVEBYGJhdGNoX2FsbGAgY2FuIGFsc28gYmUgdXNlZCB0byBlbmZvcmNlIGF0b21pY2l0eS4gSWYgYW55IGNhbmRpZGF0ZXMgYXJlIGluY2x1ZGVkIGluTQFgbmV3YCwgdGhleSBzaG91bGQgYmUgcmVtb3ZlZCB3aXRoIGByZW1vdmVfaW52dWxuZXJhYmxlX2NhbmRpZGF0ZWAgYWZ0ZXIgZXhlY3V0aW9uLgCUTXVzdCBiZSBjYWxsZWQgYnkgdGhlIGBVcGRhdGVPcmlnaW5gLlhzZXRfZGVzaXJlZF9jYW5kaWRhdGVzBAEMbWF4OAEMdTMyAAEUVQFTZXQgdGhlIGlkZWFsIG51bWJlciBvZiBub24taW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gSWYgbG93ZXJpbmcgdGhpcyBudW1iZXIsIHRoZW4gdGhlYQFudW1iZXIgb2YgcnVubmluZyBjb2xsYXRvcnMgY291bGQgYmUgaGlnaGVyIHRoYW4gdGhpcyBmaWd1cmUuIEFzaWRlIGZyb20gdGhhdCBlZGdlIGNhc2UsNQF0aGVyZSBzaG91bGQgYmUgbm8gb3RoZXIgd2F5IHRvIGhhdmUgbW9yZSBjYW5kaWRhdGVzIHRoYW4gdGhlIGRlc2lyZWQgbnVtYmVyLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkhzZXRfY2FuZGlkYWN5X2JvbmQEARBib25k/AEwQmFsYW5jZU9mPFQ+AAIceFNldCB0aGUgY2FuZGlkYWN5IGJvbmQgYW1vdW50LgBRAUlmIHRoZSBjYW5kaWRhY3kgYm9uZCBpcyBpbmNyZWFzZWQgYnkgdGhpcyBjYWxsLCBhbGwgY3VycmVudCBjYW5kaWRhdGVzIHdoaWNoIGhhdmUgYU0BZGVwb3NpdCBsb3dlciB0aGFuIHRoZSBuZXcgYm9uZCB3aWxsIGJlIGtpY2tlZCBmcm9tIHRoZSBsaXN0IGFuZCBnZXQgdGhlaXIgZGVwb3NpdHMUYmFjay4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC5UcmVnaXN0ZXJfYXNfY2FuZGlkYXRlAAMQQQFSZWdpc3RlciB0aGlzIGFjY291bnQgYXMgYSBjb2xsYXRvciBjYW5kaWRhdGUuIFRoZSBhY2NvdW50IG11c3QgKGEpIGFscmVhZHkgaGF2ZR0BcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMgYW5kIChiKSBiZSBhYmxlIHRvIHJlc2VydmUgdGhlIGBDYW5kaWRhY3lCb25kYC4A3FRoaXMgY2FsbCBpcyBub3QgYXZhaWxhYmxlIHRvIGBJbnZ1bG5lcmFibGVgIGNvbGxhdG9ycy4wbGVhdmVfaW50ZW50AAQUVQFEZXJlZ2lzdGVyIGBvcmlnaW5gIGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBOb3RlIHRoYXQgdGhlIGNvbGxhdG9yIGNhbiBvbmx5IGxlYXZlIG9uDQFzZXNzaW9uIGNoYW5nZS4gVGhlIGBDYW5kaWRhY3lCb25kYCB3aWxsIGJlIHVucmVzZXJ2ZWQgaW1tZWRpYXRlbHkuABkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgdG90YWwgbnVtYmVyIG9mIGNhbmRpZGF0ZXMgd291bGQgZHJvcCBiZWxvd1xgTWluRWxpZ2libGVDb2xsYXRvcnNgLkBhZGRfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAUQRQFBZGQgYSBuZXcgYWNjb3VudCBgd2hvYCB0byB0aGUgbGlzdCBvZiBgSW52dWxuZXJhYmxlc2AgY29sbGF0b3JzLiBgd2hvYCBtdXN0IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLiBJZiBgd2hvYCBpcyBhIGNhbmRpZGF0ZSwgdGhleSB3aWxsIGJlIHJlbW92ZWQuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuTHJlbW92ZV9pbnZ1bG5lcmFibGUEAQx3aG8EATBUOjpBY2NvdW50SWQABhBhAVJlbW92ZSBhbiBhY2NvdW50IGB3aG9gIGZyb20gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYEludnVsbmVyYWJsZXNgIG11c3QoYmUgc29ydGVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLix1cGRhdGVfYm9uZAQBLG5ld19kZXBvc2l0/AEwQmFsYW5jZU9mPFQ+AAccXQFVcGRhdGUgdGhlIGNhbmRpZGFjeSBib25kIG9mIGNvbGxhdG9yIGNhbmRpZGF0ZSBgb3JpZ2luYCB0byBhIG5ldyBhbW91bnQgYG5ld19kZXBvc2l0YC4AQQFTZXR0aW5nIGEgYG5ld19kZXBvc2l0YCB0aGF0IGlzIGxvd2VyIHRoYW4gdGhlIGN1cnJlbnQgZGVwb3NpdCB3aGlsZSBgb3JpZ2luYCBpc+BvY2N1cHlpbmcgYSB0b3AtYERlc2lyZWRDYW5kaWRhdGVzYCBzbG90IGlzIG5vdCBhbGxvd2VkLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgYG9yaWdpbmAgaXMgbm90IGEgY29sbGF0b3IgY2FuZGlkYXRlLCB0aGUgdXBkYXRlZCBib25kIGlzIGxvd2VyGQF0aGFuIHRoZSBtaW5pbXVtIGNhbmRpZGFjeSBib25kLCBhbmQvb3IgdGhlIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuTHRha2VfY2FuZGlkYXRlX3Nsb3QIARxkZXBvc2l0/AEwQmFsYW5jZU9mPFQ+AAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAgcTQFUaGUgY2FsbGVyIGBvcmlnaW5gIHJlcGxhY2VzIGEgY2FuZGlkYXRlIGB0YXJnZXRgIGluIHRoZSBjb2xsYXRvciBjYW5kaWRhdGUgbGlzdCBieVUBcmVzZXJ2aW5nIGBkZXBvc2l0YC4gVGhlIGFtb3VudCBgZGVwb3NpdGAgcmVzZXJ2ZWQgYnkgdGhlIGNhbGxlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbuB0aGUgZXhpc3RpbmcgYm9uZCBvZiB0aGUgdGFyZ2V0IGl0IGlzIHRyeWluZyB0byByZXBsYWNlLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IGEgY29sbGF0b3IgY2FuZGlkYXRlIG9yIGludnVsbmVyYWJsZSwgdGhlVQFjYWxsZXIgZG9lcyBub3QgaGF2ZSByZWdpc3RlcmVkIHNlc3Npb24ga2V5cywgdGhlIHRhcmdldCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsvGFuZC9vciB0aGUgYGRlcG9zaXRgIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlEBDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQQQ2FsbAQEVAABCCBzZXRfa2V5cwgBEGtleXNVAQEcVDo6S2V5cwABFHByb29mGAEcVmVjPHU4PgAALORTZXRzIHRoZSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyIHRvIGBrZXlzYC4AHQFBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4AAQEtIGBvcmlnaW5gOiBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzaWduZWQuVQEtIGBrZXlzYDogVGhlIG5ldyBzZXNzaW9uIGtleXMgdG8gc2V0LiBUaGVzZSBhcmUgdGhlIHB1YmxpYyBrZXlzIG9mIGFsbCBzZXNzaW9ucyBrZXlzXCAgc2V0dXAgaW4gdGhlIHJ1bnRpbWUuQQEtIGBwcm9vZmA6IFRoZSBwcm9vZiB0aGF0IGBvcmlnaW5gIGhhcyBhY2Nlc3MgdG8gdGhlIHByaXZhdGUga2V5cyBvZiBga2V5c2AuIFNlZU0BICBbYGltcGxfb3BhcXVlX2tleXNgXShzcF9ydW50aW1lOjppbXBsX29wYXF1ZV9rZXlzKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGU8ICBwcm9vZiBmb3JtYXQuKHB1cmdlX2tleXMAASDIUmVtb3ZlcyBhbnkgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlci4AwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIGFjY291bnQgbXVzdCBiZSBlaXRoZXIgYmVdAWNvbnZlcnRpYmxlIHRvIGEgdmFsaWRhdG9yIElEIHVzaW5nIHRoZSBjaGFpbidzIHR5cGljYWwgYWRkcmVzc2luZyBzeXN0ZW0gKHRoaXMgdXN1YWxseVEBbWVhbnMgYmVpbmcgYSBjb250cm9sbGVyIGFjY291bnQpIG9yIGRpcmVjdGx5IGNvbnZlcnRpYmxlIGludG8gYSB2YWxpZGF0b3IgSUQgKHdoaWNolHVzdWFsbHkgbWVhbnMgYmVpbmcgYSBzdGFzaCBhY2NvdW50KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuVQEIYGJ1bGxldGluX3dlc3RlbmRfcnVudGltZSxTZXNzaW9uS2V5cwAABAEQYXVyYVkBAcQ8QXVyYSBhcyAkY3JhdGU6OkJvdW5kVG9SdW50aW1lQXBwUHVibGljPjo6UHVibGljAABZARBEc3BfY29uc2Vuc3VzX2F1cmEcc3IyNTUxOSxhcHBfc3IyNTUxORhQdWJsaWMAAAQACAE8c3IyNTUxOTo6UHVibGljAABdAQxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQQQ2FsbAQEVAABFFRzdXNwZW5kX3hjbV9leGVjdXRpb24AAQxJAVN1c3BlbmRzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUsIHJlZ2FyZGxlc3Mgb2YgdGhlIHNlbmRlcidzIG9yaWdpbi4ApC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgQ29udHJvbGxlck9yaWdpbmAuUHJlc3VtZV94Y21fZXhlY3V0aW9uAAIUuFJlc3VtZXMgYWxsIFhDTSBleGVjdXRpb25zIGZvciB0aGUgWENNUCBxdWV1ZS4APQFOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGNoYW5nZSB0aGUgc3RhdHVzIG9mIHRoZSBpbi9vdXQgYm91bmQgY2hhbm5lbHMuAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLmB1cGRhdGVfc3VzcGVuZF90aHJlc2hvbGQEAQxuZXc4AQx1MzIAAxRJAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBmb3IgdGhlIG90aGVyIHNpZGUgdG8gYmV4dG9sZCB0byBzdXNwZW5kIHRoZWlyIHNlbmRpbmcuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLugtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLnN1c3BlbmRfdmFsdWVgVHVwZGF0ZV9kcm9wX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAEFEUBT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIG11c3QgYmUgaW4gdGhlIHF1ZXVlIGFmdGVyIHdoaWNoIHdlIGRyb3AgYW55iGZ1cnRoZXIgbWVzc2FnZXMgZnJvbSB0aGUgY2hhbm5lbC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu7C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEuZHJvcF90aHJlc2hvbGRgXHVwZGF0ZV9yZXN1bWVfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAUUTQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggdGhlIHF1ZXVlIG11c3QgYmUgcmVkdWNlZCB0byBiZWZvcmUgaXQgc2lnbmFscwEBdGhhdCBtZXNzYWdlIHNlbmRpbmcgbWF5IHJlY29tbWVuY2UgYWZ0ZXIgaXQgaGFzIGJlZW4gc3VzcGVuZGVkLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC70LSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5yZXN1bWVfdGhyZXNob2xkYAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5hAQwocGFsbGV0X3hjbRhwYWxsZXQQQ2FsbAQEVAABRBBzZW5kCAEQZGVzdGUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcbWVzc2FnZbEBAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4AAAA8dGVsZXBvcnRfYXNzZXRzEAEQZGVzdGUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnllAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c/ECAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAFIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgAdASoqVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOiBVc2UgYGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGVoICBmZWUgb24gdGhlIGBkZXN0YCBjaGFpbi5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5ccmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMQARBkZXN0ZQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeWUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRz8QIBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAAnhdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLHhkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZS4APQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIGFuZCBtYXkgbm90IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuTQEgLSBgYXNzZXRzYCBoYXZlIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuVQEgLSBgYXNzZXRzYCBoYXZlIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5hASAtIGBhc3NldHNgIGhhdmUgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmVhASAgIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGD0ICAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLgA9ASoqVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOiBVc2UgYGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHNgIGluc3RlYWQuKioAUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAuIFRoZSB3ZWlnaHQgbGltaXQgZm9yIGZlZXMgaXMgbm90IHByb3ZpZGVkIGFuZCB0aHVzIGlzIHVubGltaXRlZCy0d2l0aCBhbGwgZmVlcyB0YWtlbiBhcyBuZWVkZWQgZnJvbSB0aGUgYXNzZXQuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLhxleGVjdXRlCAEcbWVzc2FnZfUCAbRCb3g8VmVyc2lvbmVkWGNtPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPj4AAShtYXhfd2VpZ2h0KQEBGFdlaWdodAADINBFeGVjdXRlIGFuIFhDTSBtZXNzYWdlIGZyb20gYSBsb2NhbCwgc2lnbmVkLCBvcmlnaW4uAE0BQW4gZXZlbnQgaXMgZGVwb3NpdGVkIGluZGljYXRpbmcgd2hldGhlciBgbXNnYCBjb3VsZCBiZSBleGVjdXRlZCBjb21wbGV0ZWx5IG9yIG9ubHkocGFydGlhbGx5LgBdAU5vIG1vcmUgdGhhbiBgbWF4X3dlaWdodGAgd2lsbCBiZSB1c2VkIGluIGl0cyBhdHRlbXB0ZWQgZXhlY3V0aW9uLiBJZiB0aGlzIGlzIGxlc3MgdGhhbkEBdGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCB0aGF0IHRoZSBtZXNzYWdlIGNvdWxkIHRha2UgdG8gYmUgZXhlY3V0ZWQsIHRoZW4gbm98ZXhlY3V0aW9uIGF0dGVtcHQgd2lsbCBiZSBtYWRlLkRmb3JjZV94Y21fdmVyc2lvbggBIGxvY2F0aW9u4AE0Qm94PExvY2F0aW9uPgABHHZlcnNpb244AShYY21WZXJzaW9uAAQYSQFFeHRvbGwgdGhhdCBhIHBhcnRpY3VsYXIgZGVzdGluYXRpb24gY2FuIGJlIGNvbW11bmljYXRlZCB3aXRoIHRocm91Z2ggYSBwYXJ0aWN1bGFyPHZlcnNpb24gb2YgWENNLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLtgtIGBsb2NhdGlvbmA6IFRoZSBkZXN0aW5hdGlvbiB0aGF0IGlzIGJlaW5nIGRlc2NyaWJlZC4RAS0gYHhjbV92ZXJzaW9uYDogVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFhDTSB0aGF0IGBsb2NhdGlvbmAgc3VwcG9ydHMuZGZvcmNlX2RlZmF1bHRfeGNtX3ZlcnNpb24EAURtYXliZV94Y21fdmVyc2lvbiEDAUhPcHRpb248WGNtVmVyc2lvbj4ABRRZAVNldCBhIHNhZmUgWENNIHZlcnNpb24gKHRoZSB2ZXJzaW9uIHRoYXQgWENNIHNob3VsZCBiZSBlbmNvZGVkIHdpdGggaWYgdGhlIG1vc3QgcmVjZW50tHZlcnNpb24gYSBkZXN0aW5hdGlvbiBjYW4gYWNjZXB0IGlzIHVua25vd24pLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLjkBLSBgbWF5YmVfeGNtX3ZlcnNpb25gOiBUaGUgZGVmYXVsdCBYQ00gZW5jb2RpbmcgdmVyc2lvbiwgb3IgYE5vbmVgIHRvIGRpc2FibGUueGZvcmNlX3N1YnNjcmliZV92ZXJzaW9uX25vdGlmeQQBIGxvY2F0aW9uZQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ABhA5AUFzayBhIGxvY2F0aW9uIHRvIG5vdGlmeSB1cyByZWdhcmRpbmcgdGhlaXIgWENNIHZlcnNpb24gYW5kIGFueSBjaGFuZ2VzIHRvIGl0LgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLlkBLSBgbG9jYXRpb25gOiBUaGUgbG9jYXRpb24gdG8gd2hpY2ggd2Ugc2hvdWxkIHN1YnNjcmliZSBmb3IgWENNIHZlcnNpb24gbm90aWZpY2F0aW9ucy6AZm9yY2VfdW5zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbmUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAcYSQFSZXF1aXJlIHRoYXQgYSBwYXJ0aWN1bGFyIGRlc3RpbmF0aW9uIHNob3VsZCBubyBsb25nZXIgbm90aWZ5IHVzIHJlZ2FyZGluZyBhbnkgWENNQHZlcnNpb24gY2hhbmdlcy4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi49AS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIGFyZSBjdXJyZW50bHkgc3Vic2NyaWJlZCBmb3IgWENNIHZlcnNpb26oICBub3RpZmljYXRpb25zIHdoaWNoIHdlIG5vIGxvbmdlciBkZXNpcmUufGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMUARBkZXN0ZQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeWUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRz8QIBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXQlAgEsV2VpZ2h0TGltaXQACHhdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLHhkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZS4APQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIGFuZCBtYXkgbm90IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuTQEgLSBgYXNzZXRzYCBoYXZlIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuVQEgLSBgYXNzZXRzYCBoYXZlIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5hASAtIGBhc3NldHNgIGhhdmUgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmVhASAgIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGD0ICAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5cbGltaXRlZF90ZWxlcG9ydF9hc3NldHMUARBkZXN0ZQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeWUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRz8QIBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXQlAgEsV2VpZ2h0TGltaXQACUgRAVRlbGVwb3J0IHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHNvbWUgZGVzdGluYXRpb24gY2hhaW4uAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0WQFpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGVoICBmZWUgb24gdGhlIGBkZXN0YCBjaGFpbi5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLkBmb3JjZV9zdXNwZW5zaW9uBAEkc3VzcGVuZGVkMQEBEGJvb2wAChD0U2V0IG9yIHVuc2V0IHRoZSBnbG9iYWwgc3VzcGVuc2lvbiBzdGF0ZSBvZiB0aGUgWENNIGV4ZWN1dG9yLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLtAtIGBzdXNwZW5kZWRgOiBgdHJ1ZWAgdG8gc3VzcGVuZCwgYGZhbHNlYCB0byByZXN1bWUuPHRyYW5zZmVyX2Fzc2V0cxQBEGRlc3RlAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5ZQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHPxAgFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABMHdlaWdodF9saW1pdCUCASxXZWlnaHRMaW1pdAALhF0BVHJhbnNmZXIgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHRocm91Z2ggdGhlaXIgbG9jYWws0GRlc3RpbmF0aW9uIG9yIHJlbW90ZSByZXNlcnZlLCBvciB0aHJvdWdoIHRlbGVwb3J0cy4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2Y1AWluZGV4IGBmZWVfYXNzZXRfaXRlbWAgKGhlbmNlIHJlZmVycmVkIHRvIGFzIGBmZWVzYCksIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yQQFgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0IGlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZdxvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAGEBYGFzc2V0c2AgKGV4Y2x1ZGluZyBgZmVlc2ApIG11c3QgaGF2ZSBzYW1lIHJlc2VydmUgbG9jYXRpb24gb3Igb3RoZXJ3aXNlIGJlIHRlbGVwb3J0YWJsZbB0byBgZGVzdGAsIG5vIGxpbWl0YXRpb25zIGltcG9zZWQgb24gYGZlZXNgLk0BIC0gZm9yIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbiBjaGFpbiBhbmRNASAgIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvRCAgIGBiZW5lZmljaWFyeWAuYQEgLSBmb3IgZGVzdGluYXRpb24gcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gdG8gYGRlc3RgIGNoYWluWQEgICB0byB3aXRoZHJhdyB0aGUgcmVzZXJ2ZSBhc3NldHMgZnJvbSB0aGlzIGNoYWluJ3Mgc292ZXJlaWduIGFjY291bnQgYW5kIGRlcG9zaXQgdGhlbVAgICB0byBgYmVuZWZpY2lhcnlgLl0BIC0gZm9yIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlIHJlc2VydmVzXQEgICBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3RgIHRvIG1pbnTUICAgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5RASAtIGZvciB0ZWxlcG9ydHM6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG8gbWludC90ZWxlcG9ydLAgICBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uLQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFgyKFBhcmVudCxVASAgUGFyYWNoYWluKC4uKSlgIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgWDEoUGFyYWNoYWluKC4uKSlgIHRvIHNlbmRoICBmcm9tIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS4wY2xhaW1fYXNzZXRzCAEYYXNzZXRz8QIBUEJveDxWZXJzaW9uZWRBc3NldHM+AAEsYmVuZWZpY2lhcnllAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAMGFUBQ2xhaW1zIGFzc2V0cyB0cmFwcGVkIG9uIHRoaXMgcGFsbGV0IGJlY2F1c2Ugb2YgbGVmdG92ZXIgYXNzZXRzIGR1cmluZyBYQ00gZXhlY3V0aW9uLgCsLSBgb3JpZ2luYDogQW55b25lIGNhbiBjYWxsIHRoaXMgZXh0cmluc2ljLl0BLSBgYXNzZXRzYDogVGhlIGV4YWN0IGFzc2V0cyB0aGF0IHdlcmUgdHJhcHBlZC4gVXNlIHRoZSB2ZXJzaW9uIHRvIHNwZWNpZnkgd2hhdCB2ZXJzaW9umHdhcyB0aGUgbGF0ZXN0IHdoZW4gdGhleSB3ZXJlIHRyYXBwZWQuRQEtIGBiZW5lZmljaWFyeWA6IFRoZSBsb2NhdGlvbi9hY2NvdW50IHdoZXJlIHRoZSBjbGFpbWVkIGFzc2V0cyB3aWxsIGJlIGRlcG9zaXRlZC6MdHJhbnNmZXJfYXNzZXRzX3VzaW5nX3R5cGVfYW5kX3RoZW4cARBkZXN0ZQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHPxAgFQQm94PFZlcnNpb25lZEFzc2V0cz4AAVBhc3NldHNfdHJhbnNmZXJfdHlwZSUDAURCb3g8VHJhbnNmZXJUeXBlPgABOHJlbW90ZV9mZWVzX2lkKQMBVEJveDxWZXJzaW9uZWRBc3NldElkPgABSGZlZXNfdHJhbnNmZXJfdHlwZSUDAURCb3g8VHJhbnNmZXJUeXBlPgABSGN1c3RvbV94Y21fb25fZGVzdLEBAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4AATB3ZWlnaHRfbGltaXQlAgEsV2VpZ2h0TGltaXQADcBVAVRyYW5zZmVyIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdXNpbmcgZXhwbGljaXQgdHJhbnNmZXJodHlwZXMgZm9yIGFzc2V0cyBhbmQgZmVlcy4AWQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG1heSBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLiBDYWxsZXIgbXVzdOxwcm92aWRlIHRoZSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgIHRvIGJlIHVzZWQgZm9yIGBhc3NldHNgOlEBIC0gYFRyYW5zZmVyVHlwZTo6TG9jYWxSZXNlcnZlYDogdHJhbnNmZXIgYXNzZXRzIHRvIHNvdmVyZWlnbiBhY2NvdW50IG9mIGRlc3RpbmF0aW9uTQEgICBjaGFpbiBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZGwgICBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5ZASAtIGBUcmFuc2ZlclR5cGU6OkRlc3RpbmF0aW9uUmVzZXJ2ZWA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5ZASAtIGBUcmFuc2ZlclR5cGU6OlJlbW90ZVJlc2VydmUocmVzZXJ2ZSlgOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gYHJlc2VydmVgYQEgICBjaGFpbiB0byBtb3ZlIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyVQEgICBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4gVHlwaWNhbGx5lCAgIHRoZSByZW1vdGUgYHJlc2VydmVgIGlzIEFzc2V0IEh1Yi5FASAtIGBUcmFuc2ZlclR5cGU6OlRlbGVwb3J0YDogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgWENNIHRvIGBkZXN0YCBjaGFpbiB0b+ggICBtaW50L3RlbGVwb3J0IGFzc2V0cyBhbmQgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuAFUBT24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLCBhcyB3ZWxsIGFzIGFueSBpbnRlcm1lZGlhcnkgaG9wcywgYEJ1eUV4ZWN1dGlvbmAgaXMgdXNlZCB0byEBYnV5IGV4ZWN1dGlvbiB1c2luZyB0cmFuc2ZlcnJlZCBgYXNzZXRzYCBpZGVudGlmaWVkIGJ5IGByZW1vdGVfZmVlc19pZGAuWQFNYWtlIHN1cmUgZW5vdWdoIG9mIHRoZSBzcGVjaWZpZWQgYHJlbW90ZV9mZWVzX2lkYCBhc3NldCBpcyBpbmNsdWRlZCBpbiB0aGUgZ2l2ZW4gbGlzdGEBb2YgYGFzc2V0c2AuIGByZW1vdGVfZmVlc19pZGAgc2hvdWxkIGJlIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgLiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4ARQFgcmVtb3RlX2ZlZXNfaWRgIG1heSB1c2UgZGlmZmVyZW50IHRyYW5zZmVyIHR5cGUgdGhhbiByZXN0IG9mIGBhc3NldHNgIGFuZCBjYW4gYmWcc3BlY2lmaWVkIHRocm91Z2ggYGZlZXNfdHJhbnNmZXJfdHlwZWAuAGEBVGhlIGNhbGxlciBuZWVkcyB0byBzcGVjaWZ5IHdoYXQgc2hvdWxkIGhhcHBlbiB0byB0aGUgdHJhbnNmZXJyZWQgYXNzZXRzIG9uY2UgdGhleSByZWFjaEEBdGhlIGBkZXN0YCBjaGFpbi4gVGhpcyBpcyBkb25lIHRocm91Z2ggdGhlIGBjdXN0b21feGNtX29uX2Rlc3RgIHBhcmFtZXRlciwgd2hpY2j8Y29udGFpbnMgdGhlIGluc3RydWN0aW9ucyB0byBleGVjdXRlIG9uIGBkZXN0YCBhcyBhIGZpbmFsIHN0ZXAufCAgVGhpcyBpcyB1c3VhbGx5IGFzIHNpbXBsZSBhczpRASAgYFhjbSh2ZWMhW0RlcG9zaXRBc3NldCB7IGFzc2V0czogV2lsZChBbGxDb3VudGVkKGFzc2V0cy5sZW4oKSkpLCBiZW5lZmljaWFyeSB9XSlgLDEBICBidXQgY291bGQgYmUgc29tZXRoaW5nIG1vcmUgZXhvdGljIGxpa2Ugc2VuZGluZyB0aGUgYGFzc2V0c2AgZXZlbiBmdXJ0aGVyLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tPQEgIHJlbGF5IHRvIHBhcmFjaGFpbiwgb3IgYChwYXJlbnRzOiAyLCAoR2xvYmFsQ29uc2Vuc3VzKC4uKSwgLi4pKWAgdG8gc2VuZCBmcm9t9CAgcGFyYWNoYWluIGFjcm9zcyBhIGJyaWRnZSB0byBhbm90aGVyIGVjb3N5c3RlbSBkZXN0aW5hdGlvbi5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuPQEtIGBhc3NldHNfdHJhbnNmZXJfdHlwZWA6IFRoZSBYQ00gYFRyYW5zZmVyVHlwZWAgdXNlZCB0byB0cmFuc2ZlciB0aGUgYGFzc2V0c2AuIQEtIGByZW1vdGVfZmVlc19pZGA6IE9uZSBvZiB0aGUgaW5jbHVkZWQgYGFzc2V0c2AgdG8gYmUgdXNlZCB0byBwYXkgZmVlcy5JAS0gYGZlZXNfdHJhbnNmZXJfdHlwZWA6IFRoZSBYQ00gYFRyYW5zZmVyVHlwZWAgdXNlZCB0byB0cmFuc2ZlciB0aGUgYGZlZXNgIGFzc2V0cy5ZAS0gYGN1c3RvbV94Y21fb25fZGVzdGA6IFRoZSBYQ00gdG8gYmUgZXhlY3V0ZWQgb24gYGRlc3RgIGNoYWluIGFzIHRoZSBsYXN0IHN0ZXAgb2YgdGhlWQEgIHRyYW5zZmVyLCB3aGljaCBhbHNvIGRldGVybWluZXMgd2hhdCBoYXBwZW5zIHRvIHRoZSBhc3NldHMgb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuUGFkZF9hdXRob3JpemVkX2FsaWFzCAEcYWxpYXNlcmUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcZXhwaXJlcy0DASxPcHRpb248dTY0PgAOLF0BQXV0aG9yaXplIGFub3RoZXIgYGFsaWFzZXJgIGxvY2F0aW9uIHRvIGFsaWFzIGludG8gdGhlIGxvY2FsIGBvcmlnaW5gIG1ha2luZyB0aGlzIGNhbGwuKQFUaGUgYGFsaWFzZXJgIGlzIG9ubHkgYXV0aG9yaXplZCB1bnRpbCB0aGUgcHJvdmlkZWQgYGV4cGlyeWAgYmxvY2sgbnVtYmVyLkkBVGhlIGNhbGwgY2FuIGFsc28gYmUgdXNlZCBmb3IgYSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYWxpYXMgaW4gb3JkZXIgdG8gdXBkYXRlIGl0c1hgZXhwaXJ5YCBibG9jayBudW1iZXIuAFEBVXN1YWxseSB1c2VmdWwgdG8gYWxsb3cgeW91ciBsb2NhbCBhY2NvdW50IHRvIGJlIGFsaWFzZWQgaW50byBmcm9tIGEgcmVtb3RlIGxvY2F0aW9u9GFsc28gdW5kZXIgeW91ciBjb250cm9sIChsaWtlIHlvdXIgYWNjb3VudCBvbiBhbm90aGVyIGNoYWluKS4AUQFXQVJOSU5HOiBtYWtlIHN1cmUgdGhlIGNhbGxlciBgb3JpZ2luYCAoeW91KSB0cnVzdHMgdGhlIGBhbGlhc2VyYCBsb2NhdGlvbiB0byBhY3QgaW5ZAXRoZWlyL3lvdXIgbmFtZS4gT25jZSBhdXRob3JpemVkIHVzaW5nIHRoaXMgY2FsbCwgdGhlIGBhbGlhc2VyYCBjYW4gZnJlZWx5IGltcGVyc29uYXRl1GBvcmlnaW5gIGluIFhDTSBwcm9ncmFtcyBleGVjdXRlZCBvbiB0aGUgbG9jYWwgY2hhaW4uXHJlbW92ZV9hdXRob3JpemVkX2FsaWFzBAEcYWxpYXNlcmUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AA8IXQFSZW1vdmUgYSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYGFsaWFzZXJgIGZyb20gdGhlIGxpc3Qgb2YgbG9jYXRpb25zIHRoYXQgY2FuIGFsaWFzIGludG+QdGhlIGxvY2FsIGBvcmlnaW5gIG1ha2luZyB0aGlzIGNhbGwudHJlbW92ZV9hbGxfYXV0aG9yaXplZF9hbGlhc2VzABAISQFSZW1vdmUgYWxsIHByZXZpb3VzbHkgYXV0aG9yaXplZCBgYWxpYXNlcmBzIHRoYXQgY2FuIGFsaWFzIGludG8gdGhlIGxvY2FsIGBvcmlnaW5gRG1ha2luZyB0aGlzIGNhbGwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLmUBCAx4Y21EVmVyc2lvbmVkTG9jYXRpb24AAQwIVjMEAGkBAUR2Mzo6TXVsdGlMb2NhdGlvbgADAAhWNAQAfQEBMHY0OjpMb2NhdGlvbgAEAAhWNQQA4AEwdjU6OkxvY2F0aW9uAAUAAGkBECxzdGFnaW5nX3hjbQh2MzRtdWx0aWxvY2F0aW9uNE11bHRpTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9ybQEBJEp1bmN0aW9ucwAAbQEQDHhjbQh2MyRqdW5jdGlvbnMkSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEAHEBASBKdW5jdGlvbgABAAhYMggAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24AAgAIWDMMAHEBASBKdW5jdGlvbgAAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24AAwAIWDQQAHEBASBKdW5jdGlvbgAAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24AAHEBASBKdW5jdGlvbgAEAAhYNRQAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24AAHEBASBKdW5jdGlvbgAAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24ABQAIWDYYAHEBASBKdW5jdGlvbgAAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24AAHEBASBKdW5jdGlvbgAAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24ABgAIWDccAHEBASBKdW5jdGlvbgAAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24AAHEBASBKdW5jdGlvbgAAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24AAHEBASBKdW5jdGlvbgAHAAhYOCAAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24AAHEBASBKdW5jdGlvbgAAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24AAHEBASBKdW5jdGlvbgAAcQEBIEp1bmN0aW9uAABxAQEgSnVuY3Rpb24ACAAAcQEQDHhjbQh2MyBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmt1AQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya3UBAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmt1AQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BAD4ARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWQBAQEYQm9keUlkAAEQcGFydAUBASBCb2R5UGFydAAIADxHbG9iYWxDb25zZW5zdXMEAHkBASROZXR3b3JrSWQACQAAdQEEGE9wdGlvbgQEVAF5AQEIEE5vbmUAAAAQU29tZQQAeQEAAAEAAHkBEAx4Y20IdjMganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAH0BECxzdGFnaW5nX3hjbQh2NCBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3KBAQEkSnVuY3Rpb25zAACBARAsc3RhZ2luZ194Y20IdjQkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBACFAQFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBACVAQFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBACZAQFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BACdAQFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BAChAQFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BAClAQFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BACpAQFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BACtAQFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAAIUBAAADAQAAAIkBAIkBECxzdGFnaW5nX3hjbQh2NCBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmuNAQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya40BAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmuNAQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BAD4ARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWQBAQEYQm9keUlkAAEQcGFydAUBASBCb2R5UGFydAAIADxHbG9iYWxDb25zZW5zdXMEAJEBASROZXR3b3JrSWQACQAAjQEEGE9wdGlvbgQEVAGRAQEIEE5vbmUAAAAQU29tZQQAkQEAAAEAAJEBECxzdGFnaW5nX3hjbQh2NCBqdW5jdGlvbiROZXR3b3JrSWQAASwkQnlHZW5lc2lzBAAIASBbdTg7IDMyXQAAABhCeUZvcmsIATBibG9ja19udW1iZXIoAQx1NjQAAShibG9ja19oYXNoCAEgW3U4OyAzMl0AAQAgUG9sa2Fkb3QAAgAYS3VzYW1hAAMAHFdlc3RlbmQABAAYUm9jb2NvAAUAGFdvY29jbwAGACBFdGhlcmV1bQQBIGNoYWluX2lktAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAAlQEAAAMCAAAAiQEAmQEAAAMDAAAAiQEAnQEAAAMEAAAAiQEAoQEAAAMFAAAAiQEApQEAAAMGAAAAiQEAqQEAAAMHAAAAiQEArQEAAAMIAAAAiQEAsQEIDHhjbTBWZXJzaW9uZWRYY20ELFJ1bnRpbWVDYWxsAAEMCFYzBAC1AQFQdjM6OlhjbTxSdW50aW1lQ2FsbD4AAwAIVjQEACkCAVB2NDo6WGNtPFJ1bnRpbWVDYWxsPgAEAAhWNQQAdQIBUHY1OjpYY208UnVudGltZUNhbGw+AAUAALUBDAx4Y20IdjMMWGNtBBBDYWxsAAAEALkBAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAC5AQAAAr0BAL0BDAx4Y20IdjMsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAwQEBLE11bHRpQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAwQEBLE11bHRpQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAMEBASxNdWx0aUFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2XhAQEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0KQEBGFdlaWdodAABHHF1ZXJpZXIJAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHPBAQEsTXVsdGlBc3NldHMAASxiZW5lZmljaWFyeWkBATRNdWx0aUxvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzwQEBLE11bHRpQXNzZXRzAAEQZGVzdGkBATRNdWx0aUxvY2F0aW9uAAEMeGNttQEBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZA0CAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdCkBARhXZWlnaHQAARBjYWxsEQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAbQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAFQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0cxkCAUBNdWx0aUFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnlpAQE0TXVsdGlMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzGQIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN0aQEBNE11bHRpTG9jYXRpb24AAQx4Y221AQEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZRkCAUBNdWx0aUFzc2V0RmlsdGVyAAEQd2FudMEBASxNdWx0aUFzc2V0cwABHG1heGltYWwxAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0cxkCAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVzZXJ2ZWkBATRNdWx0aUxvY2F0aW9uAAEMeGNttQEBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0cxkCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdGkBATRNdWx0aUxvY2F0aW9uAAEMeGNttQEBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm8VAgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHMZAgFATXVsdGlBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzyQEBKE11bHRpQXNzZXQAATB3ZWlnaHRfbGltaXQlAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEALUBASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEALUBASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzwQEBLE11bHRpQXNzZXRzAAEYdGlja2V0aQEBNE11bHRpTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0KQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BADBAQEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEAMEBASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAAkCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAOUBAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAAQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mbxUCAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEABUCAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAcQEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JreQEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9ubQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbbUBARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0yQEBKE11bHRpQXNzZXQAASB1bmxvY2tlcmkBATRNdWx0aUxvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXTJAQEoTXVsdGlBc3NldAABGHRhcmdldGkBATRNdWx0aUxvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXTJAQEoTXVsdGlBc3NldAABFG93bmVyaQEBNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0yQEBKE11bHRpQXNzZXQAARhsb2NrZXJpAQE0TXVsdGlMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhdzEBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBABpAQE0TXVsdGlMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXQlAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW4JAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AC8AAMEBEAx4Y20IdjMobXVsdGlhc3NldCxNdWx0aUFzc2V0cwAABADFAQE8VmVjPE11bHRpQXNzZXQ+AADFAQAAAskBAMkBEAx4Y20IdjMobXVsdGlhc3NldChNdWx0aUFzc2V0AAAIAQhpZM0BARxBc3NldElkAAEMZnVu0QEBLEZ1bmdpYmlsaXR5AADNARAMeGNtCHYzKG11bHRpYXNzZXQcQXNzZXRJZAABCCBDb25jcmV0ZQQAaQEBNE11bHRpTG9jYXRpb24AAAAgQWJzdHJhY3QEAAgBIFt1ODsgMzJdAAEAANEBEAx4Y20IdjMobXVsdGlhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQA+AEQdTEyOAAAACxOb25GdW5naWJsZQQA1QEBNEFzc2V0SW5zdGFuY2UAAQAA1QEQDHhjbQh2MyhtdWx0aWFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BAD4ARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEANkBARxbdTg7IDhdAAMAHEFycmF5MTYEAN0BASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAADZAQAAAwgAAAAMAN0BAAADEAAAAAwA4QEMDHhjbQh2MyBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAwQEBLE11bHRpQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQA5QEBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBADxAQGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAAECAThNYXliZUVycm9yQ29kZQAFAADlAQQYT3B0aW9uBARUAekBAQgQTm9uZQAAABBTb21lBADpAQAAAQAA6QEAAAQIOO0BAO0BEAx4Y20IdjMYdHJhaXRzFEVycm9yAAGgIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAEACgBDHU2NAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiAExVbmhhbmRsZWRYY21WZXJzaW9uACMASFdlaWdodExpbWl0UmVhY2hlZAQAKQEBGFdlaWdodAAkABxCYXJyaWVyACUATFdlaWdodE5vdENvbXB1dGFibGUAJgBERXhjZWVkc1N0YWNrTGltaXQAJwAA8QEMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAH1AQRTAAAEAP0BARhWZWM8VD4AAPUBDAx4Y20IdjMoUGFsbGV0SW5mbwAAGAEUaW5kZXhgAQx1MzIAARBuYW1l+QEBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWX5AQGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcmABDHUzMgABFG1pbm9yYAEMdTMyAAEUcGF0Y2hgAQx1MzIAAPkBDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAA/QEAAAL1AQABAgwMeGNtCHYzOE1heWJlRXJyb3JDb2RlAAEMHFN1Y2Nlc3MAAAAURXJyb3IEAAUCAYxCb3VuZGVkVmVjPHU4LCBNYXhEaXNwYXRjaEVycm9yTGVuPgABADhUcnVuY2F0ZWRFcnJvcgQABQIBjEJvdW5kZWRWZWM8dTgsIE1heERpc3BhdGNoRXJyb3JMZW4+AAIAAAUCDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAACQIEGE9wdGlvbgQEVAFpAQEIEE5vbmUAAAAQU29tZQQAaQEAAAEAAA0CDAx4Y20IdjMoT3JpZ2luS2luZAABEBhOYXRpdmUAAABAU292ZXJlaWduQWNjb3VudAABACRTdXBlcnVzZXIAAgAMWGNtAAMAABECDAx4Y204ZG91YmxlX2VuY29kZWQ0RG91YmxlRW5jb2RlZAQEVAAABAEcZW5jb2RlZBgBHFZlYzx1OD4AABUCDAx4Y20IdjNEUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9uaQEBNE11bHRpTG9jYXRpb24AASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0KQEBGFdlaWdodAAAGQIQDHhjbQh2MyhtdWx0aWFzc2V0QE11bHRpQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAMEBASxNdWx0aUFzc2V0cwAAABBXaWxkBAAdAgE4V2lsZE11bHRpQXNzZXQAAQAAHQIQDHhjbQh2MyhtdWx0aWFzc2V0OFdpbGRNdWx0aUFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkzQEBHEFzc2V0SWQAAQxmdW4hAgE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZM0BARxBc3NldElkAAEMZnVuIQIBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAACECEAx4Y20IdjMobXVsdGlhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAJQIMDHhjbQh2MyxXZWlnaHRMaW1pdAABCCRVbmxpbWl0ZWQAAAAcTGltaXRlZAQAKQEBGFdlaWdodAABAAApAgwsc3RhZ2luZ194Y20IdjQMWGNtBBBDYWxsAAAEAC0CAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAAtAgAAAjECADECDCxzdGFnaW5nX3hjbQh2NCxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BAA1AgEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQANQIBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAA1AgEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZU0CASBSZXNwb25zZQABKG1heF93ZWlnaHQpAQEYV2VpZ2h0AAEccXVlcmllcmECAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHM1AgEYQXNzZXRzAAEsYmVuZWZpY2lhcnl9AQEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHM1AgEYQXNzZXRzAAEQZGVzdH0BASBMb2NhdGlvbgABDHhjbSkCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmQNAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QpAQEYV2VpZ2h0AAEQY2FsbBECAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAIEBAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBABlAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzaQIBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnl9AQEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c2kCASxBc3NldEZpbHRlcgABEGRlc3R9AQEgTG9jYXRpb24AAQx4Y20pAgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZWkCASxBc3NldEZpbHRlcgABEHdhbnQ1AgEYQXNzZXRzAAEcbWF4aW1hbDEBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzaQIBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZX0BASBMb2NhdGlvbgABDHhjbSkCARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHNpAgEsQXNzZXRGaWx0ZXIAARBkZXN0fQEBIExvY2F0aW9uAAEMeGNtKQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm9lAgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHNpAgEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlcz0CARRBc3NldAABMHdlaWdodF9saW1pdCUCASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAKQIBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAKQIBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHM1AgEYQXNzZXRzAAEYdGlja2V0fQEBIExvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodCkBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQANQIBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQANQIBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAGECAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBADlAQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAAECAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm9lAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBABlAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAIkBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya5EBASROZXR3b3JrSWQAASxkZXN0aW5hdGlvboEBAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtKQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXQ9AgEUQXNzZXQAASB1bmxvY2tlcn0BASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0PQIBFEFzc2V0AAEYdGFyZ2V0fQEBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXQ9AgEUQXNzZXQAARRvd25lcn0BASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXQ9AgEUQXNzZXQAARhsb2NrZXJ9AQEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXcxAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAfQEBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdCUCASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbmECAUBPcHRpb248TG9jYXRpb24+AC8AADUCECxzdGFnaW5nX3hjbQh2NBRhc3NldBhBc3NldHMAAAQAOQIBKFZlYzxBc3NldD4AADkCAAACPQIAPQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0FEFzc2V0AAAIAQhpZEECARxBc3NldElkAAEMZnVuRQIBLEZ1bmdpYmlsaXR5AABBAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQcQXNzZXRJZAAABAB9AQEgTG9jYXRpb24AAEUCECxzdGFnaW5nX3hjbQh2NBRhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQA+AEQdTEyOAAAACxOb25GdW5naWJsZQQASQIBNEFzc2V0SW5zdGFuY2UAAQAASQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BAD4ARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEANkBARxbdTg7IDhdAAMAHEFycmF5MTYEAN0BASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAABNAgwsc3RhZ2luZ194Y20IdjQgUmVzcG9uc2UAARgQTnVsbAAAABhBc3NldHMEADUCARhBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BADlAQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAOAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EAFECAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQAAQIBOE1heWJlRXJyb3JDb2RlAAUAAFECDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBVQIEUwAABABdAgEYVmVjPFQ+AABVAgwsc3RhZ2luZ194Y20IdjQoUGFsbGV0SW5mbwAAGAEUaW5kZXhgAQx1MzIAARBuYW1lWQIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWVZAgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcmABDHUzMgABFG1pbm9yYAEMdTMyAAEUcGF0Y2hgAQx1MzIAAFkCDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAXQIAAAJVAgBhAgQYT3B0aW9uBARUAX0BAQgQTm9uZQAAABBTb21lBAB9AQAAAQAAZQIMLHN0YWdpbmdfeGNtCHY0RFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbn0BASBMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHQpAQEYV2VpZ2h0AABpAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQsQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEADUCARhBc3NldHMAAAAQV2lsZAQAbQIBJFdpbGRBc3NldAABAABtAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQkV2lsZEFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkQQIBHEFzc2V0SWQAAQxmdW5xAgE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZEECARxBc3NldElkAAEMZnVucQIBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAAHECECxzdGFnaW5nX3hjbQh2NBRhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAdQIMLHN0YWdpbmdfeGNtCHY1DFhjbQQQQ2FsbAAABAB5AgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAeQIAAAJ9AgB9Agwsc3RhZ2luZ194Y20IdjUsSW5zdHJ1Y3Rpb24EEENhbGwAAdA0V2l0aGRyYXdBc3NldAQAgQIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAIECARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAgQIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2WZAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0KQEBGFdlaWdodAABHHF1ZXJpZXK5AgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzgQIBGEFzc2V0cwABLGJlbmVmaWNpYXJ54AEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHOBAgEYQXNzZXRzAAEQZGVzdOABIExvY2F0aW9uAAEMeGNtdQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZA0CAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodL0CAThPcHRpb248V2VpZ2h0PgABEGNhbGwRAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADkAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBADBAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzxQIBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnngASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzxQIBLEFzc2V0RmlsdGVyAAEQZGVzdOABIExvY2F0aW9uAAEMeGNtdQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmXFAgEsQXNzZXRGaWx0ZXIAARB3YW50gQIBGEFzc2V0cwABHG1heGltYWwxAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c8UCASxBc3NldEZpbHRlcgABHHJlc2VydmXgASBMb2NhdGlvbgABDHhjbXUCARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHPFAgEsQXNzZXRGaWx0ZXIAARBkZXN04AEgTG9jYXRpb24AAQx4Y211AgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb8ECAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c8UCASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVziQIBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0JQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAB1AgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAB1AgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c4ECARhBc3NldHMAARh0aWNrZXTgASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQpAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAIECARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAIECARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAC5AgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAnQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBAABAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvwQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAwQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBADsASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya/QBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9u5AFASW50ZXJpb3JMb2NhdGlvbgABDHhjbXUCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0iQIBFEFzc2V0AAEgdW5sb2NrZXLgASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0iQIBFEFzc2V0AAEYdGFyZ2V04AEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldIkCARRBc3NldAABFG93bmVy4AEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0iQIBFEFzc2V0AAEYbG9ja2Vy4AEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXcxAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQA4AEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0JQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luuQIBQE9wdGlvbjxMb2NhdGlvbj4ALwAcUGF5RmVlcwQBFGFzc2V0iQIBFEFzc2V0ADAAQEluaXRpYXRlVHJhbnNmZXIUASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEscmVtb3RlX2ZlZXPRAgFsT3B0aW9uPEFzc2V0VHJhbnNmZXJGaWx0ZXI+AAE8cHJlc2VydmVfb3JpZ2luMQEBEGJvb2wAARhhc3NldHPZAgHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNtdQIBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbuECAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y211AgEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHPlAgGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAAIECECxzdGFnaW5nX3hjbQh2NRRhc3NldBhBc3NldHMAAAQAhQIBKFZlYzxBc3NldD4AAIUCAAACiQIAiQIQLHN0YWdpbmdfeGNtCHY1FGFzc2V0FEFzc2V0AAAIAQhpZI0CARxBc3NldElkAAEMZnVukQIBLEZ1bmdpYmlsaXR5AACNAhAsc3RhZ2luZ194Y20IdjUUYXNzZXQcQXNzZXRJZAAABADgASBMb2NhdGlvbgAAkQIQLHN0YWdpbmdfeGNtCHY1FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBAD4ARB1MTI4AAAALE5vbkZ1bmdpYmxlBACVAgE0QXNzZXRJbnN0YW5jZQABAACVAhAsc3RhZ2luZ194Y20IdjUUYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAPgBEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQA2QEBHFt1ODsgOF0AAwAcQXJyYXkxNgQA3QEBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAAJkCDCxzdGFnaW5nX3hjbQh2NSBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAgQIBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAJ0CAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQAqQIBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BAABAgE4TWF5YmVFcnJvckNvZGUABQAAnQIEGE9wdGlvbgQEVAGhAgEIEE5vbmUAAAAQU29tZQQAoQIAAAEAAKECAAAECDilAgClAhAMeGNtCHY1GHRyYWl0cxRFcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAoAQx1NjQAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgA0VG9vTWFueUFzc2V0cwAjAExVbmhhbmRsZWRYY21WZXJzaW9uACQASFdlaWdodExpbWl0UmVhY2hlZAQAKQEBGFdlaWdodAAlABxCYXJyaWVyACYATFdlaWdodE5vdENvbXB1dGFibGUAJwBERXhjZWVkc1N0YWNrTGltaXQAKAAAqQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGtAgRTAAAEALUCARhWZWM8VD4AAK0CDCxzdGFnaW5nX3hjbQh2NShQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWWxAgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZbECAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAAsQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAC1AgAAAq0CALkCBBhPcHRpb24EBFQB4AEIEE5vbmUAAAAQU29tZQQA4AAAAQAAvQIEGE9wdGlvbgQEVAEpAQEIEE5vbmUAAAAQU29tZQQAKQEAAAEAAMECDCxzdGFnaW5nX3hjbQh2NURRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHQpAQEYV2VpZ2h0AADFAhAsc3RhZ2luZ194Y20IdjUUYXNzZXQsQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAIECARhBc3NldHMAAAAQV2lsZAQAyQIBJFdpbGRBc3NldAABAADJAhAsc3RhZ2luZ194Y20IdjUUYXNzZXQkV2lsZEFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkjQIBHEFzc2V0SWQAAQxmdW7NAgE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZI0CARxBc3NldElkAAEMZnVuzQIBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAAM0CECxzdGFnaW5nX3hjbQh2NRRhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAA0QIEGE9wdGlvbgQEVAHVAgEIEE5vbmUAAAAQU29tZQQA1QIAAAEAANUCECxzdGFnaW5nX3hjbQh2NRRhc3NldExBc3NldFRyYW5zZmVyRmlsdGVyAAEMIFRlbGVwb3J0BADFAgEsQXNzZXRGaWx0ZXIAAAA4UmVzZXJ2ZURlcG9zaXQEAMUCASxBc3NldEZpbHRlcgABADxSZXNlcnZlV2l0aGRyYXcEAMUCASxBc3NldEZpbHRlcgACAADZAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAdUCBFMAAAQA3QIBGFZlYzxUPgAA3QIAAALVAgDhAgQYT3B0aW9uBARUAeQBCBBOb25lAAAAEFNvbWUEAOQAAAEAAOUCDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB6QIEUwAABADtAgEYVmVjPFQ+AADpAgwsc3RhZ2luZ194Y20IdjUQSGludAABBDBBc3NldENsYWltZXIEASBsb2NhdGlvbuABIExvY2F0aW9uAAAAAO0CAAAC6QIA8QIIDHhjbTxWZXJzaW9uZWRBc3NldHMAAQwIVjMEAMEBATx2Mzo6TXVsdGlBc3NldHMAAwAIVjQEADUCASh2NDo6QXNzZXRzAAQACFY1BACBAgEodjU6OkFzc2V0cwAFAAD1AggMeGNtMFZlcnNpb25lZFhjbQQsUnVudGltZUNhbGwAAQwIVjMEAPkCAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQACQMBUHY0OjpYY208UnVudGltZUNhbGw+AAQACFY1BAAVAwFQdjU6OlhjbTxSdW50aW1lQ2FsbD4ABQAA+QIMDHhjbQh2MwxYY20EEENhbGwAAAQA/QIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAP0CAAACAQMAAQMMDHhjbQh2MyxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BADBAQEsTXVsdGlBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBADBAQEsTXVsdGlBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAwQEBLE11bHRpQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZeEBASBSZXNwb25zZQABKG1heF93ZWlnaHQpAQEYV2VpZ2h0AAEccXVlcmllcgkCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c8EBASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ5aQEBNE11bHRpTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHPBAQEsTXVsdGlBc3NldHMAARBkZXN0aQEBNE11bHRpTG9jYXRpb24AAQx4Y221AQEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kDQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0KQEBGFdlaWdodAABEGNhbGwFAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBABtAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAAVAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzGQIBQE11bHRpQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeWkBATRNdWx0aUxvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHMZAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3RpAQE0TXVsdGlMb2NhdGlvbgABDHhjbbUBARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlGQIBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50wQEBLE11bHRpQXNzZXRzAAEcbWF4aW1hbDEBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzGQIBQE11bHRpQXNzZXRGaWx0ZXIAARxyZXNlcnZlaQEBNE11bHRpTG9jYXRpb24AAQx4Y221AQEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzGQIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN0aQEBNE11bHRpTG9jYXRpb24AAQx4Y221AQEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mbxUCAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0cxkCAUBNdWx0aUFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXPJAQEoTXVsdGlBc3NldAABMHdlaWdodF9saW1pdCUCASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQA+QIBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQA+QIBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHPBAQEsTXVsdGlBc3NldHMAARh0aWNrZXRpAQE0TXVsdGlMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQpAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAMEBASxNdWx0aUFzc2V0cwAcACxFeHBlY3RBc3NldAQAwQEBLE11bHRpQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQACQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQA5QEBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBAABAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvFQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAFQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBABxAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmt5AQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb25tAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAEMeGNttQEBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXTJAQEoTXVsdGlBc3NldAABIHVubG9ja2VyaQEBNE11bHRpTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldMkBAShNdWx0aUFzc2V0AAEYdGFyZ2V0aQEBNE11bHRpTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldMkBAShNdWx0aUFzc2V0AAEUb3duZXJpAQE0TXVsdGlMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXTJAQEoTXVsdGlBc3NldAABGGxvY2tlcmkBATRNdWx0aUxvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3MQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAGkBATRNdWx0aUxvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdCUCASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbgkCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4ALwAABQMMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAACQMMLHN0YWdpbmdfeGNtCHY0DFhjbQQQQ2FsbAAABAANAwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAADQMAAAIRAwARAwwsc3RhZ2luZ194Y20IdjQsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQANQIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEADUCARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQANQIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2VNAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0KQEBGFdlaWdodAABHHF1ZXJpZXJhAgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzNQIBGEFzc2V0cwABLGJlbmVmaWNpYXJ5fQEBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzNQIBGEFzc2V0cwABEGRlc3R9AQEgTG9jYXRpb24AAQx4Y20pAgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kDQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0KQEBGFdlaWdodAABEGNhbGwFAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBACBAQFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAZQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c2kCASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5fQEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHNpAgEsQXNzZXRGaWx0ZXIAARBkZXN0fQEBIExvY2F0aW9uAAEMeGNtKQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVpAgEsQXNzZXRGaWx0ZXIAARB3YW50NQIBGEFzc2V0cwABHG1heGltYWwxAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c2kCASxBc3NldEZpbHRlcgABHHJlc2VydmV9AQEgTG9jYXRpb24AAQx4Y20pAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzaQIBLEFzc2V0RmlsdGVyAAEQZGVzdH0BASBMb2NhdGlvbgABDHhjbSkCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvZQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzaQIBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXM9AgEUQXNzZXQAATB3ZWlnaHRfbGltaXQlAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAAkDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAAkDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzNQIBGEFzc2V0cwABGHRpY2tldH0BASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQpAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEADUCARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEADUCARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABhAgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQA5QEBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBAABAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvZQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAZQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBACJAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmuRAQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb26BAQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbSkCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0PQIBFEFzc2V0AAEgdW5sb2NrZXJ9AQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldD0CARRBc3NldAABGHRhcmdldH0BASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0PQIBFEFzc2V0AAEUb3duZXJ9AQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0PQIBFEFzc2V0AAEYbG9ja2VyfQEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3MQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAH0BASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXQlAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW5hAgFAT3B0aW9uPExvY2F0aW9uPgAvAAAVAwwsc3RhZ2luZ194Y20IdjUMWGNtBBBDYWxsAAAEABkDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAAZAwAAAh0DAB0DDCxzdGFnaW5nX3hjbQh2NSxJbnN0cnVjdGlvbgQQQ2FsbAAB0DRXaXRoZHJhd0Fzc2V0BACBAgEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAgQIBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BACBAgEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZZkCASBSZXNwb25zZQABKG1heF93ZWlnaHQpAQEYV2VpZ2h0AAEccXVlcmllcrkCAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHOBAgEYQXNzZXRzAAEsYmVuZWZpY2lhcnngASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c4ECARhBc3NldHMAARBkZXN04AEgTG9jYXRpb24AAQx4Y211AgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kDQIBKE9yaWdpbktpbmQAAUxmYWxsYmFja19tYXhfd2VpZ2h0vQIBOE9wdGlvbjxXZWlnaHQ+AAEQY2FsbAUDAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAOQBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAMECAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHPFAgEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeeABIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHPFAgEsQXNzZXRGaWx0ZXIAARBkZXN04AEgTG9jYXRpb24AAQx4Y211AgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZcUCASxBc3NldEZpbHRlcgABEHdhbnSBAgEYQXNzZXRzAAEcbWF4aW1hbDEBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzxQIBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZeABIExvY2F0aW9uAAEMeGNtdQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c8UCASxBc3NldEZpbHRlcgABEGRlc3TgASBMb2NhdGlvbgABDHhjbXUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvwQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzxQIBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXOJAgEUQXNzZXQAATB3ZWlnaHRfbGltaXQlAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEABUDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEABUDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzgQIBGEFzc2V0cwABGHRpY2tldOABIExvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodCkBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAgQIBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQAgQIBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EALkCAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBACdAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAAECAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm/BAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBADBAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAOwBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr9AEkTmV0d29ya0lkAAEsZGVzdGluYXRpb27kAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtdQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXSJAgEUQXNzZXQAASB1bmxvY2tlcuABIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXSJAgEUQXNzZXQAARh0YXJnZXTgASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0iQIBFEFzc2V0AAEUb3duZXLgASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXSJAgEUQXNzZXQAARhsb2NrZXLgASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhdzEBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBADgASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXQlAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW65AgFAT3B0aW9uPExvY2F0aW9uPgAvABxQYXlGZWVzBAEUYXNzZXSJAgEUQXNzZXQAMABASW5pdGlhdGVUcmFuc2ZlchQBLGRlc3RpbmF0aW9u4AEgTG9jYXRpb24AASxyZW1vdGVfZmVlc9ECAWxPcHRpb248QXNzZXRUcmFuc2ZlckZpbHRlcj4AATxwcmVzZXJ2ZV9vcmlnaW4xAQEQYm9vbAABGGFzc2V0c9kCAeBCb3VuZGVkVmVjPEFzc2V0VHJhbnNmZXJGaWx0ZXIsIE1heEFzc2V0VHJhbnNmZXJGaWx0ZXJzPgABKHJlbW90ZV94Y211AgEcWGNtPCgpPgAxAERFeGVjdXRlV2l0aE9yaWdpbggBRGRlc2NlbmRhbnRfb3JpZ2lu4QIBYE9wdGlvbjxJbnRlcmlvckxvY2F0aW9uPgABDHhjbRUDASRYY208Q2FsbD4AMgAgU2V0SGludHMEARRoaW50c+UCAYRCb3VuZGVkVmVjPEhpbnQsIEhpbnROdW1WYXJpYW50cz4AMwAAIQMEGE9wdGlvbgQEVAE4AQgQTm9uZQAAABBTb21lBAA4AAABAAAlAxBQc3RhZ2luZ194Y21fZXhlY3V0b3IYdHJhaXRzOGFzc2V0X3RyYW5zZmVyMFRyYW5zZmVyVHlwZQABECBUZWxlcG9ydAAAADBMb2NhbFJlc2VydmUAAQBIRGVzdGluYXRpb25SZXNlcnZlAAIANFJlbW90ZVJlc2VydmUEAGUBAURWZXJzaW9uZWRMb2NhdGlvbgADAAApAwgMeGNtQFZlcnNpb25lZEFzc2V0SWQAAQwIVjMEAM0BASx2Mzo6QXNzZXRJZAADAAhWNAQAQQIBLHY0OjpBc3NldElkAAQACFY1BACNAgEsdjU6OkFzc2V0SWQABQAALQMEGE9wdGlvbgQEVAEoAQgQTm9uZQAAABBTb21lBAAoAAABAAAxAwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBBDYWxsBARUAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjUDDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQQQ2FsbAQEVAABCCRyZWFwX3BhZ2UIAThtZXNzYWdlX29yaWdpbjkDAUhNZXNzYWdlT3JpZ2luT2Y8VD4AAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AAAEPQFSZW1vdmUgYSBwYWdlIHdoaWNoIGhhcyBubyBtb3JlIG1lc3NhZ2VzIHJlbWFpbmluZyB0byBiZSBwcm9jZXNzZWQgb3IgaXMgc3RhbGUuSGV4ZWN1dGVfb3ZlcndlaWdodBABOG1lc3NhZ2Vfb3JpZ2luOQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgABEHBhZ2U4ASRQYWdlSW5kZXgAARRpbmRleDgBHFQ6OlNpemUAATB3ZWlnaHRfbGltaXQpAQEYV2VpZ2h0AAE0eEV4ZWN1dGUgYW4gb3ZlcndlaWdodCBtZXNzYWdlLgBNAVRlbXBvcmFyeSBwcm9jZXNzaW5nIGVycm9ycyB3aWxsIGJlIHByb3BhZ2F0ZWQgd2hlcmVhcyBwZXJtYW5lbnQgZXJyb3JzIGFyZSB0cmVhdGVkVGFzIHN1Y2Nlc3MgY29uZGl0aW9uLgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC41AS0gYG1lc3NhZ2Vfb3JpZ2luYDogVGhlIG9yaWdpbiBmcm9tIHdoaWNoIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkIGFycml2ZWQuPQEtIGBwYWdlYDogVGhlIHBhZ2UgaW4gdGhlIHF1ZXVlIGluIHdoaWNoIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkIGlzIHNpdHRpbmcuCQEtIGBpbmRleGA6IFRoZSBpbmRleCBpbnRvIHRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZC5ZAS0gYHdlaWdodF9saW1pdGA6IFRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgYWxsb3dlZCB0byBiZSBjb25zdW1lZCBpbiB0aGUgZXhlY3V0aW9uRCAgb2YgdGhlIG1lc3NhZ2UuAPRCZW5jaG1hcmsgY29tcGxleGl0eSBjb25zaWRlcmF0aW9uczogTyhpbmRleCArIHdlaWdodF9saW1pdCkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjkDCFxjdW11bHVzX3ByaW1pdGl2ZXNfY29yZVhBZ2dyZWdhdGVNZXNzYWdlT3JpZ2luAAEMEEhlcmUAAAAYUGFyZW50AAEAHFNpYmxpbmcEAJwBGFBhcmFJZAACAAA9AwwscGFsbGV0X3N1ZG8YcGFsbGV0EENhbGwEBFQAARQQc3VkbwQBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAENQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgUm9vdGAgb3JpZ2luLlRzdWRvX3VuY2hlY2tlZF93ZWlnaHQIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodCkBARhXZWlnaHQAARQ1AUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBSb290YCBvcmlnaW4uLQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGWwU3VkbyB1c2VyIHRvIHNwZWNpZnkgdGhlIHdlaWdodCBvZiB0aGUgY2FsbC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLhxzZXRfa2V5BAEMbmV3AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAghdAUF1dGhlbnRpY2F0ZXMgdGhlIGN1cnJlbnQgc3VkbyBrZXkgYW5kIHNldHMgdGhlIGdpdmVuIEFjY291bnRJZCAoYG5ld2ApIGFzIHRoZSBuZXcgc3VkbxBrZXkuHHN1ZG9fYXMIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAMQTQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgU2lnbmVkYCBvcmlnaW4gZnJvbUBhIGdpdmVuIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ocmVtb3ZlX2tleQAEDIRQZXJtYW5lbnRseSByZW1vdmVzIHRoZSBzdWRvIGtleS4AbCoqVGhpcyBjYW5ub3QgYmUgdW4tZG9uZS4qKgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5BAwgoc3BfcnVudGltZThNdWx0aVNpZ25hdHVyZQABEBxFZDI1NTE5BABFAwFIZWQyNTUxOTo6U2lnbmF0dXJlAAAAHFNyMjU1MTkEAEUDAUhzcjI1NTE5OjpTaWduYXR1cmUAAQAURWNkc2EEAEkDAUBlY2RzYTo6U2lnbmF0dXJlAAIADEV0aAQASQMBWGVjZHNhOjpLZWNjYWtTaWduYXR1cmUAAwAARQMAAANAAAAADABJAwAAA0EAAAAMAE0DEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczhhdXRob3JpemVfY2FsbDRBdXRob3JpemVDYWxsBARUAAAAAFEDEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc1RjaGVja19ub25femVyb19zZW5kZXJIQ2hlY2tOb25aZXJvU2VuZGVyBARUAAAAAFUDEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc0hjaGVja19zcGVjX3ZlcnNpb25AQ2hlY2tTcGVjVmVyc2lvbgQEVAAAAABZAxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNAY2hlY2tfdHhfdmVyc2lvbjhDaGVja1R4VmVyc2lvbgQEVAAAAABdAxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM0Y2hlY2tfZ2VuZXNpczBDaGVja0dlbmVzaXMEBFQAAAAAYQMQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zPGNoZWNrX21vcnRhbGl0eThDaGVja01vcnRhbGl0eQQEVAAABABlAwEMRXJhAABlAxAoc3BfcnVudGltZRxnZW5lcmljDGVyYQxFcmEAAQEEIEltbW9ydGFsAAAAHE1vcnRhbDEEAAwAAAEAHE1vcnRhbDIEAAwAAAIAHE1vcnRhbDMEAAwAAAMAHE1vcnRhbDQEAAwAAAQAHE1vcnRhbDUEAAwAAAUAHE1vcnRhbDYEAAwAAAYAHE1vcnRhbDcEAAwAAAcAHE1vcnRhbDgEAAwAAAgAHE1vcnRhbDkEAAwAAAkAIE1vcnRhbDEwBAAMAAAKACBNb3J0YWwxMQQADAAACwAgTW9ydGFsMTIEAAwAAAwAIE1vcnRhbDEzBAAMAAANACBNb3J0YWwxNAQADAAADgAgTW9ydGFsMTUEAAwAAA8AIE1vcnRhbDE2BAAMAAAQACBNb3J0YWwxNwQADAAAEQAgTW9ydGFsMTgEAAwAABIAIE1vcnRhbDE5BAAMAAATACBNb3J0YWwyMAQADAAAFAAgTW9ydGFsMjEEAAwAABUAIE1vcnRhbDIyBAAMAAAWACBNb3J0YWwyMwQADAAAFwAgTW9ydGFsMjQEAAwAABgAIE1vcnRhbDI1BAAMAAAZACBNb3J0YWwyNgQADAAAGgAgTW9ydGFsMjcEAAwAABsAIE1vcnRhbDI4BAAMAAAcACBNb3J0YWwyOQQADAAAHQAgTW9ydGFsMzAEAAwAAB4AIE1vcnRhbDMxBAAMAAAfACBNb3J0YWwzMgQADAAAIAAgTW9ydGFsMzMEAAwAACEAIE1vcnRhbDM0BAAMAAAiACBNb3J0YWwzNQQADAAAIwAgTW9ydGFsMzYEAAwAACQAIE1vcnRhbDM3BAAMAAAlACBNb3J0YWwzOAQADAAAJgAgTW9ydGFsMzkEAAwAACcAIE1vcnRhbDQwBAAMAAAoACBNb3J0YWw0MQQADAAAKQAgTW9ydGFsNDIEAAwAACoAIE1vcnRhbDQzBAAMAAArACBNb3J0YWw0NAQADAAALAAgTW9ydGFsNDUEAAwAAC0AIE1vcnRhbDQ2BAAMAAAuACBNb3J0YWw0NwQADAAALwAgTW9ydGFsNDgEAAwAADAAIE1vcnRhbDQ5BAAMAAAxACBNb3J0YWw1MAQADAAAMgAgTW9ydGFsNTEEAAwAADMAIE1vcnRhbDUyBAAMAAA0ACBNb3J0YWw1MwQADAAANQAgTW9ydGFsNTQEAAwAADYAIE1vcnRhbDU1BAAMAAA3ACBNb3J0YWw1NgQADAAAOAAgTW9ydGFsNTcEAAwAADkAIE1vcnRhbDU4BAAMAAA6ACBNb3J0YWw1OQQADAAAOwAgTW9ydGFsNjAEAAwAADwAIE1vcnRhbDYxBAAMAAA9ACBNb3J0YWw2MgQADAAAPgAgTW9ydGFsNjMEAAwAAD8AIE1vcnRhbDY0BAAMAABAACBNb3J0YWw2NQQADAAAQQAgTW9ydGFsNjYEAAwAAEIAIE1vcnRhbDY3BAAMAABDACBNb3J0YWw2OAQADAAARAAgTW9ydGFsNjkEAAwAAEUAIE1vcnRhbDcwBAAMAABGACBNb3J0YWw3MQQADAAARwAgTW9ydGFsNzIEAAwAAEgAIE1vcnRhbDczBAAMAABJACBNb3J0YWw3NAQADAAASgAgTW9ydGFsNzUEAAwAAEsAIE1vcnRhbDc2BAAMAABMACBNb3J0YWw3NwQADAAATQAgTW9ydGFsNzgEAAwAAE4AIE1vcnRhbDc5BAAMAABPACBNb3J0YWw4MAQADAAAUAAgTW9ydGFsODEEAAwAAFEAIE1vcnRhbDgyBAAMAABSACBNb3J0YWw4MwQADAAAUwAgTW9ydGFsODQEAAwAAFQAIE1vcnRhbDg1BAAMAABVACBNb3J0YWw4NgQADAAAVgAgTW9ydGFsODcEAAwAAFcAIE1vcnRhbDg4BAAMAABYACBNb3J0YWw4OQQADAAAWQAgTW9ydGFsOTAEAAwAAFoAIE1vcnRhbDkxBAAMAABbACBNb3J0YWw5MgQADAAAXAAgTW9ydGFsOTMEAAwAAF0AIE1vcnRhbDk0BAAMAABeACBNb3J0YWw5NQQADAAAXwAgTW9ydGFsOTYEAAwAAGAAIE1vcnRhbDk3BAAMAABhACBNb3J0YWw5OAQADAAAYgAgTW9ydGFsOTkEAAwAAGMAJE1vcnRhbDEwMAQADAAAZAAkTW9ydGFsMTAxBAAMAABlACRNb3J0YWwxMDIEAAwAAGYAJE1vcnRhbDEwMwQADAAAZwAkTW9ydGFsMTA0BAAMAABoACRNb3J0YWwxMDUEAAwAAGkAJE1vcnRhbDEwNgQADAAAagAkTW9ydGFsMTA3BAAMAABrACRNb3J0YWwxMDgEAAwAAGwAJE1vcnRhbDEwOQQADAAAbQAkTW9ydGFsMTEwBAAMAABuACRNb3J0YWwxMTEEAAwAAG8AJE1vcnRhbDExMgQADAAAcAAkTW9ydGFsMTEzBAAMAABxACRNb3J0YWwxMTQEAAwAAHIAJE1vcnRhbDExNQQADAAAcwAkTW9ydGFsMTE2BAAMAAB0ACRNb3J0YWwxMTcEAAwAAHUAJE1vcnRhbDExOAQADAAAdgAkTW9ydGFsMTE5BAAMAAB3ACRNb3J0YWwxMjAEAAwAAHgAJE1vcnRhbDEyMQQADAAAeQAkTW9ydGFsMTIyBAAMAAB6ACRNb3J0YWwxMjMEAAwAAHsAJE1vcnRhbDEyNAQADAAAfAAkTW9ydGFsMTI1BAAMAAB9ACRNb3J0YWwxMjYEAAwAAH4AJE1vcnRhbDEyNwQADAAAfwAkTW9ydGFsMTI4BAAMAACAACRNb3J0YWwxMjkEAAwAAIEAJE1vcnRhbDEzMAQADAAAggAkTW9ydGFsMTMxBAAMAACDACRNb3J0YWwxMzIEAAwAAIQAJE1vcnRhbDEzMwQADAAAhQAkTW9ydGFsMTM0BAAMAACGACRNb3J0YWwxMzUEAAwAAIcAJE1vcnRhbDEzNgQADAAAiAAkTW9ydGFsMTM3BAAMAACJACRNb3J0YWwxMzgEAAwAAIoAJE1vcnRhbDEzOQQADAAAiwAkTW9ydGFsMTQwBAAMAACMACRNb3J0YWwxNDEEAAwAAI0AJE1vcnRhbDE0MgQADAAAjgAkTW9ydGFsMTQzBAAMAACPACRNb3J0YWwxNDQEAAwAAJAAJE1vcnRhbDE0NQQADAAAkQAkTW9ydGFsMTQ2BAAMAACSACRNb3J0YWwxNDcEAAwAAJMAJE1vcnRhbDE0OAQADAAAlAAkTW9ydGFsMTQ5BAAMAACVACRNb3J0YWwxNTAEAAwAAJYAJE1vcnRhbDE1MQQADAAAlwAkTW9ydGFsMTUyBAAMAACYACRNb3J0YWwxNTMEAAwAAJkAJE1vcnRhbDE1NAQADAAAmgAkTW9ydGFsMTU1BAAMAACbACRNb3J0YWwxNTYEAAwAAJwAJE1vcnRhbDE1NwQADAAAnQAkTW9ydGFsMTU4BAAMAACeACRNb3J0YWwxNTkEAAwAAJ8AJE1vcnRhbDE2MAQADAAAoAAkTW9ydGFsMTYxBAAMAAChACRNb3J0YWwxNjIEAAwAAKIAJE1vcnRhbDE2MwQADAAAowAkTW9ydGFsMTY0BAAMAACkACRNb3J0YWwxNjUEAAwAAKUAJE1vcnRhbDE2NgQADAAApgAkTW9ydGFsMTY3BAAMAACnACRNb3J0YWwxNjgEAAwAAKgAJE1vcnRhbDE2OQQADAAAqQAkTW9ydGFsMTcwBAAMAACqACRNb3J0YWwxNzEEAAwAAKsAJE1vcnRhbDE3MgQADAAArAAkTW9ydGFsMTczBAAMAACtACRNb3J0YWwxNzQEAAwAAK4AJE1vcnRhbDE3NQQADAAArwAkTW9ydGFsMTc2BAAMAACwACRNb3J0YWwxNzcEAAwAALEAJE1vcnRhbDE3OAQADAAAsgAkTW9ydGFsMTc5BAAMAACzACRNb3J0YWwxODAEAAwAALQAJE1vcnRhbDE4MQQADAAAtQAkTW9ydGFsMTgyBAAMAAC2ACRNb3J0YWwxODMEAAwAALcAJE1vcnRhbDE4NAQADAAAuAAkTW9ydGFsMTg1BAAMAAC5ACRNb3J0YWwxODYEAAwAALoAJE1vcnRhbDE4NwQADAAAuwAkTW9ydGFsMTg4BAAMAAC8ACRNb3J0YWwxODkEAAwAAL0AJE1vcnRhbDE5MAQADAAAvgAkTW9ydGFsMTkxBAAMAAC/ACRNb3J0YWwxOTIEAAwAAMAAJE1vcnRhbDE5MwQADAAAwQAkTW9ydGFsMTk0BAAMAADCACRNb3J0YWwxOTUEAAwAAMMAJE1vcnRhbDE5NgQADAAAxAAkTW9ydGFsMTk3BAAMAADFACRNb3J0YWwxOTgEAAwAAMYAJE1vcnRhbDE5OQQADAAAxwAkTW9ydGFsMjAwBAAMAADIACRNb3J0YWwyMDEEAAwAAMkAJE1vcnRhbDIwMgQADAAAygAkTW9ydGFsMjAzBAAMAADLACRNb3J0YWwyMDQEAAwAAMwAJE1vcnRhbDIwNQQADAAAzQAkTW9ydGFsMjA2BAAMAADOACRNb3J0YWwyMDcEAAwAAM8AJE1vcnRhbDIwOAQADAAA0AAkTW9ydGFsMjA5BAAMAADRACRNb3J0YWwyMTAEAAwAANIAJE1vcnRhbDIxMQQADAAA0wAkTW9ydGFsMjEyBAAMAADUACRNb3J0YWwyMTMEAAwAANUAJE1vcnRhbDIxNAQADAAA1gAkTW9ydGFsMjE1BAAMAADXACRNb3J0YWwyMTYEAAwAANgAJE1vcnRhbDIxNwQADAAA2QAkTW9ydGFsMjE4BAAMAADaACRNb3J0YWwyMTkEAAwAANsAJE1vcnRhbDIyMAQADAAA3AAkTW9ydGFsMjIxBAAMAADdACRNb3J0YWwyMjIEAAwAAN4AJE1vcnRhbDIyMwQADAAA3wAkTW9ydGFsMjI0BAAMAADgACRNb3J0YWwyMjUEAAwAAOEAJE1vcnRhbDIyNgQADAAA4gAkTW9ydGFsMjI3BAAMAADjACRNb3J0YWwyMjgEAAwAAOQAJE1vcnRhbDIyOQQADAAA5QAkTW9ydGFsMjMwBAAMAADmACRNb3J0YWwyMzEEAAwAAOcAJE1vcnRhbDIzMgQADAAA6AAkTW9ydGFsMjMzBAAMAADpACRNb3J0YWwyMzQEAAwAAOoAJE1vcnRhbDIzNQQADAAA6wAkTW9ydGFsMjM2BAAMAADsACRNb3J0YWwyMzcEAAwAAO0AJE1vcnRhbDIzOAQADAAA7gAkTW9ydGFsMjM5BAAMAADvACRNb3J0YWwyNDAEAAwAAPAAJE1vcnRhbDI0MQQADAAA8QAkTW9ydGFsMjQyBAAMAADyACRNb3J0YWwyNDMEAAwAAPMAJE1vcnRhbDI0NAQADAAA9AAkTW9ydGFsMjQ1BAAMAAD1ACRNb3J0YWwyNDYEAAwAAPYAJE1vcnRhbDI0NwQADAAA9wAkTW9ydGFsMjQ4BAAMAAD4ACRNb3J0YWwyNDkEAAwAAPkAJE1vcnRhbDI1MAQADAAA+gAkTW9ydGFsMjUxBAAMAAD7ACRNb3J0YWwyNTIEAAwAAPwAJE1vcnRhbDI1MwQADAAA/QAkTW9ydGFsMjU0BAAMAAD+ACRNb3J0YWwyNTUEAAwAAP8AAGkDEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9ucyxjaGVja19ub25jZShDaGVja05vbmNlBARUAAAEAGABIFQ6Ok5vbmNlAABtAxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMwY2hlY2tfd2VpZ2h0LENoZWNrV2VpZ2h0BARUAAAAAHEDCGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudGBDaGFyZ2VUcmFuc2FjdGlvblBheW1lbnQEBFQAAAQA+AEwQmFsYW5jZU9mPFQ+AAB1AwxocGFsbGV0X3RyYW5zYWN0aW9uX3N0b3JhZ2UkZXh0ZW5zaW9uUFZhbGlkYXRlU3RvcmFnZUNhbGxzCARUAARJAAAAAHkDCHRmcmFtZV9tZXRhZGF0YV9oYXNoX2V4dGVuc2lvbkRDaGVja01ldGFkYXRhSGFzaAQEVAAABAEQbW9kZX0DARBNb2RlAAB9Awh0ZnJhbWVfbWV0YWRhdGFfaGFzaF9leHRlbnNpb24QTW9kZQABCCBEaXNhYmxlZAAAABxFbmFibGVkAAEAAIEDBBhPcHRpb24EBFQBCAEIEE5vbmUAAAAQU29tZQQACAAAAQAAhQMIMGZyYW1lX3N5c3RlbSxBY2NvdW50SW5mbwgUTm9uY2UBOCxBY2NvdW50RGF0YQGJAwAUARRub25jZTgBFE5vbmNlAAEkY29uc3VtZXJzOAEgUmVmQ291bnQAASRwcm92aWRlcnM4ASBSZWZDb3VudAABLHN1ZmZpY2llbnRzOAEgUmVmQ291bnQAARBkYXRhiQMBLEFjY291bnREYXRhAACJAww8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLEFjY291bnREYXRhBBxCYWxhbmNlAfwAEAEQZnJlZfwBHEJhbGFuY2UAASByZXNlcnZlZPwBHEJhbGFuY2UAARhmcm96ZW78ARxCYWxhbmNlAAEUZmxhZ3ONAwEoRXh0cmFGbGFncwAAjQMMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyhFeHRyYUZsYWdzAAAEAPwBEHUxMjgAAJEDDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBKQEADAEYbm9ybWFsKQEBBFQAASxvcGVyYXRpb25hbCkBAQRUAAEkbWFuZGF0b3J5KQEBBFQAAJUDAAACmQMAmQMIMGZyYW1lX3N5c3RlbSxFdmVudFJlY29yZAgERQGdAwRUATwADAEUcGhhc2UxBAEUUGhhc2UAARRldmVudJ0DAQRFAAEYdG9waWNzNQQBGFZlYzxUPgAAnQMIYGJ1bGxldGluX3dlc3RlbmRfcnVudGltZTBSdW50aW1lRXZlbnQAATgYU3lzdGVtBAChAwFwZnJhbWVfc3lzdGVtOjpFdmVudDxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAMkDAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFdmVudDxSdW50aW1lPgABABxVdGlsaXR5BADNAwFUcGFsbGV0X3V0aWxpdHk6OkV2ZW50AAYAIEJhbGFuY2VzBADVAwF8cGFsbGV0X2JhbGFuY2VzOjpFdmVudDxSdW50aW1lPgAKAEhUcmFuc2FjdGlvblBheW1lbnQEAPEDAahwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudDo6RXZlbnQ8UnVudGltZT4ACwBIU2tpcEZlZWxlc3NQYXltZW50BAD1AwGscGFsbGV0X3NraXBfZmVlbGVzc19wYXltZW50OjpFdmVudDxSdW50aW1lPgAMAEhUcmFuc2FjdGlvblN0b3JhZ2UEAPkDAahwYWxsZXRfdHJhbnNhY3Rpb25fc3RvcmFnZTo6RXZlbnQ8UnVudGltZT4AKABEQ29sbGF0b3JTZWxlY3Rpb24EAAEEAaRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uOjpFdmVudDxSdW50aW1lPgAVABxTZXNzaW9uBAAFBAF4cGFsbGV0X3Nlc3Npb246OkV2ZW50PFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQACQQBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkV2ZW50PFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBAANBAFocGFsbGV0X3hjbTo6RXZlbnQ8UnVudGltZT4AHwAoQ3VtdWx1c1hjbQQAHQQBiGN1bXVsdXNfcGFsbGV0X3hjbTo6RXZlbnQ8UnVudGltZT4AIAAwTWVzc2FnZVF1ZXVlBAAhBAGQcGFsbGV0X21lc3NhZ2VfcXVldWU6OkV2ZW50PFJ1bnRpbWU+ACIAEFN1ZG8EACkEAWxwYWxsZXRfc3Vkbzo6RXZlbnQ8UnVudGltZT4AZAAAoQMMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXZlbnQEBFQAASBARXh0cmluc2ljU3VjY2VzcwQBNGRpc3BhdGNoX2luZm+lAwFERGlzcGF0Y2hFdmVudEluZm8AAASQQW4gZXh0cmluc2ljIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuPEV4dHJpbnNpY0ZhaWxlZAgBOGRpc3BhdGNoX2Vycm9ysQMBNERpc3BhdGNoRXJyb3IAATRkaXNwYXRjaF9pbmZvpQMBRERpc3BhdGNoRXZlbnRJbmZvAAEEUEFuIGV4dHJpbnNpYyBmYWlsZWQuLENvZGVVcGRhdGVkAAIEUGA6Y29kZWAgd2FzIHVwZGF0ZWQuKE5ld0FjY291bnQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAMEaEEgbmV3IGFjY291bnQgd2FzIGNyZWF0ZWQuNEtpbGxlZEFjY291bnQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAQEWEFuIGFjY291bnQgd2FzIHJlYXBlZC4gUmVtYXJrZWQIARhzZW5kZXIEATBUOjpBY2NvdW50SWQAARBoYXNoPAEcVDo6SGFzaAAFBHBPbiBvbi1jaGFpbiByZW1hcmsgaGFwcGVuZWQuRFVwZ3JhZGVBdXRob3JpemVkCAEkY29kZV9oYXNoPAEcVDo6SGFzaAABNGNoZWNrX3ZlcnNpb24xAQEQYm9vbAAGBGhBbiB1cGdyYWRlIHdhcyBhdXRob3JpemVkLoBSZWplY3RlZEludmFsaWRBdXRob3JpemVkVXBncmFkZQgBJGNvZGVfaGFzaDwBHFQ6Okhhc2gAARRlcnJvcrEDATREaXNwYXRjaEVycm9yAAcEEQFBbiBpbnZhbGlkIGF1dGhvcml6ZWQgdXBncmFkZSB3YXMgcmVqZWN0ZWQgd2hpbGUgdHJ5aW5nIHRvIGFwcGx5IGl0LgRwRXZlbnQgZm9yIHRoZSBTeXN0ZW0gcGFsbGV0LqUDCDBmcmFtZV9zeXN0ZW1ERGlzcGF0Y2hFdmVudEluZm8AAAwBGHdlaWdodCkBARhXZWlnaHQAARRjbGFzc6kDATREaXNwYXRjaENsYXNzAAEgcGF5c19mZWWtAwEQUGF5cwAAqQMMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2g0RGlzcGF0Y2hDbGFzcwABDBhOb3JtYWwAAAAsT3BlcmF0aW9uYWwAAQAkTWFuZGF0b3J5AAIAAK0DDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoEFBheXMAAQgMWWVzAAAACE5vAAEAALEDCChzcF9ydW50aW1lNERpc3BhdGNoRXJyb3IAATwUT3RoZXIAAAAwQ2Fubm90TG9va3VwAAEAJEJhZE9yaWdpbgACABhNb2R1bGUEALUDASxNb2R1bGVFcnJvcgADAERDb25zdW1lclJlbWFpbmluZwAEACxOb1Byb3ZpZGVycwAFAEBUb29NYW55Q29uc3VtZXJzAAYAFFRva2VuBAC5AwEoVG9rZW5FcnJvcgAHAChBcml0aG1ldGljBAC9AwE8QXJpdGhtZXRpY0Vycm9yAAgANFRyYW5zYWN0aW9uYWwEAMEDAUhUcmFuc2FjdGlvbmFsRXJyb3IACQAkRXhoYXVzdGVkAAoAKENvcnJ1cHRpb24ACwAsVW5hdmFpbGFibGUADAA4Um9vdE5vdEFsbG93ZWQADQAQVHJpZQQAxQMBJFRyaWVFcnJvcgAOAAC1Awgoc3BfcnVudGltZSxNb2R1bGVFcnJvcgAACAEUaW5kZXgMAQh1OAABFGVycm9ycAGMW3U4OyBNQVhfTU9EVUxFX0VSUk9SX0VOQ09ERURfU0laRV0AALkDCChzcF9ydW50aW1lKFRva2VuRXJyb3IAAShARnVuZHNVbmF2YWlsYWJsZQAAADBPbmx5UHJvdmlkZXIAAQAwQmVsb3dNaW5pbXVtAAIAMENhbm5vdENyZWF0ZQADADBVbmtub3duQXNzZXQABAAYRnJvemVuAAUALFVuc3VwcG9ydGVkAAYAQENhbm5vdENyZWF0ZUhvbGQABwA0Tm90RXhwZW5kYWJsZQAIABxCbG9ja2VkAAkAAL0DCDRzcF9hcml0aG1ldGljPEFyaXRobWV0aWNFcnJvcgABDCRVbmRlcmZsb3cAAAAgT3ZlcmZsb3cAAQA4RGl2aXNpb25CeVplcm8AAgAAwQMIKHNwX3J1bnRpbWVIVHJhbnNhY3Rpb25hbEVycm9yAAEIMExpbWl0UmVhY2hlZAAAABxOb0xheWVyAAEAAMUDDChzcF9ydW50aW1lMHByb3ZpbmdfdHJpZSRUcmllRXJyb3IAAThASW52YWxpZFN0YXRlUm9vdAAAAEhJbmNvbXBsZXRlRGF0YWJhc2UAAQBQVmFsdWVBdEluY29tcGxldGVLZXkAAgAwRGVjb2RlckVycm9yAAMALEludmFsaWRIYXNoAAQAMER1cGxpY2F0ZUtleQAFADhFeHRyYW5lb3VzTm9kZQAGADxFeHRyYW5lb3VzVmFsdWUABwBcRXh0cmFuZW91c0hhc2hSZWZlcmVuY2UACABUSW52YWxpZENoaWxkUmVmZXJlbmNlAAkANFZhbHVlTWlzbWF0Y2gACgA8SW5jb21wbGV0ZVByb29mAAsAMFJvb3RNaXNtYXRjaAAMACxEZWNvZGVFcnJvcgANAADJAwx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQURXZlbnQEBFQAARhgVmFsaWRhdGlvbkZ1bmN0aW9uU3RvcmVkAAAE0FRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIGhhcyBiZWVuIHNjaGVkdWxlZCB0byBhcHBseS5kVmFsaWRhdGlvbkZ1bmN0aW9uQXBwbGllZAQBVHJlbGF5X2NoYWluX2Jsb2NrX251bTgBVFJlbGF5Q2hhaW5CbG9ja051bWJlcgABBEUBVGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gd2FzIGFwcGxpZWQgYXMgb2YgdGhlIGNvbnRhaW5lZCByZWxheSBjaGFpbiBibG9jayBudW1iZXIubFZhbGlkYXRpb25GdW5jdGlvbkRpc2NhcmRlZAACBLBUaGUgcmVsYXktY2hhaW4gYWJvcnRlZCB0aGUgdXBncmFkZSBwcm9jZXNzLmBEb3dud2FyZE1lc3NhZ2VzUmVjZWl2ZWQEARRjb3VudDgBDHUzMgADBAEBU29tZSBkb3dud2FyZCBtZXNzYWdlcyBoYXZlIGJlZW4gcmVjZWl2ZWQgYW5kIHdpbGwgYmUgcHJvY2Vzc2VkLmREb3dud2FyZE1lc3NhZ2VzUHJvY2Vzc2VkCAEsd2VpZ2h0X3VzZWQpAQEYV2VpZ2h0AAEgZG1xX2hlYWQ8AURyZWxheV9jaGFpbjo6SGFzaAAEBOBEb3dud2FyZCBtZXNzYWdlcyB3ZXJlIHByb2Nlc3NlZCB1c2luZyB0aGUgZ2l2ZW4gd2VpZ2h0LkRVcHdhcmRNZXNzYWdlU2VudAQBMG1lc3NhZ2VfaGFzaIEDATxPcHRpb248WGNtSGFzaD4ABQS4QW4gdXB3YXJkIG1lc3NhZ2Ugd2FzIHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldM0DDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQURXZlbnQAASBAQmF0Y2hJbnRlcnJ1cHRlZAgBFGluZGV4OAEMdTMyAAEUZXJyb3KxAwE0RGlzcGF0Y2hFcnJvcgAACFUBQmF0Y2ggb2YgZGlzcGF0Y2hlcyBkaWQgbm90IGNvbXBsZXRlIGZ1bGx5LiBJbmRleCBvZiBmaXJzdCBmYWlsaW5nIGRpc3BhdGNoIGdpdmVuLCBhc0h3ZWxsIGFzIHRoZSBlcnJvci44QmF0Y2hDb21wbGV0ZWQAAQTIQmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgZnVsbHkgd2l0aCBubyBlcnJvci5gQmF0Y2hDb21wbGV0ZWRXaXRoRXJyb3JzAAIEtEJhdGNoIG9mIGRpc3BhdGNoZXMgY29tcGxldGVkIGJ1dCBoYXMgZXJyb3JzLjRJdGVtQ29tcGxldGVkAAMEHQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIG5vIGVycm9yLihJdGVtRmFpbGVkBAEUZXJyb3KxAwE0RGlzcGF0Y2hFcnJvcgAEBBEBQSBzaW5nbGUgaXRlbSB3aXRoaW4gYSBCYXRjaCBvZiBkaXNwYXRjaGVzIGhhcyBjb21wbGV0ZWQgd2l0aCBlcnJvci4wRGlzcGF0Y2hlZEFzBAEYcmVzdWx00QMBOERpc3BhdGNoUmVzdWx0AAUEWEEgY2FsbCB3YXMgZGlzcGF0Y2hlZC5ESWZFbHNlTWFpblN1Y2Nlc3MABgRkTWFpbiBjYWxsIHdhcyBkaXNwYXRjaGVkLlBJZkVsc2VGYWxsYmFja0NhbGxlZAQBKG1haW5fZXJyb3KxAwE0RGlzcGF0Y2hFcnJvcgAHBIRUaGUgZmFsbGJhY2sgY2FsbCB3YXMgZGlzcGF0Y2hlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTRAwQYUmVzdWx0CARUARAERQGxAwEICE9rBAAQAAAAAAxFcnIEALEDAAABAADVAww8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBRFdmVudAgEVAAESQABeBxFbmRvd2VkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABMGZyZWVfYmFsYW5jZfwBKFQ6OkJhbGFuY2UAAAS4QW4gYWNjb3VudCB3YXMgY3JlYXRlZCB3aXRoIHNvbWUgZnJlZSBiYWxhbmNlLiBEdXN0TG9zdAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlAAEIPQFBbiBhY2NvdW50IHdhcyByZW1vdmVkIHdob3NlIGJhbGFuY2Ugd2FzIG5vbi16ZXJvIGJ1dCBiZWxvdyBFeGlzdGVudGlhbERlcG9zaXQseHJlc3VsdGluZyBpbiBhbiBvdXRyaWdodCBsb3NzLiBUcmFuc2ZlcgwBEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UAAgRMVHJhbnNmZXIgc3VjY2VlZGVkLihCYWxhbmNlU2V0CAEMd2hvBAEwVDo6QWNjb3VudElkAAEQZnJlZfwBKFQ6OkJhbGFuY2UAAwRoQSBiYWxhbmNlIHdhcyBzZXQgYnkgcm9vdC4gUmVzZXJ2ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlAAQE4FNvbWUgYmFsYW5jZSB3YXMgcmVzZXJ2ZWQgKG1vdmVkIGZyb20gZnJlZSB0byByZXNlcnZlZCkuKFVucmVzZXJ2ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlAAUE6FNvbWUgYmFsYW5jZSB3YXMgdW5yZXNlcnZlZCAobW92ZWQgZnJvbSByZXNlcnZlZCB0byBmcmVlKS5IUmVzZXJ2ZVJlcGF0cmlhdGVkEAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQABSGRlc3RpbmF0aW9uX3N0YXR1c9kDARhTdGF0dXMABghNAVNvbWUgYmFsYW5jZSB3YXMgbW92ZWQgZnJvbSB0aGUgcmVzZXJ2ZSBvZiB0aGUgZmlyc3QgYWNjb3VudCB0byB0aGUgc2Vjb25kIGFjY291bnQu2EZpbmFsIGFyZ3VtZW50IGluZGljYXRlcyB0aGUgZGVzdGluYXRpb24gYmFsYW5jZSB0eXBlLhxEZXBvc2l0CAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAHBNhTb21lIGFtb3VudCB3YXMgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4gV2l0aGRyYXcIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlAAgEHQFTb21lIGFtb3VudCB3YXMgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLhxTbGFzaGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAJBAEBU29tZSBhbW91bnQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgbWlzYmVoYXZpb3IpLhhNaW50ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlAAoEnFNvbWUgYW1vdW50IHdhcyBtaW50ZWQgaW50byBhbiBhY2NvdW50LjBNaW50ZWRDcmVkaXQEARhhbW91bnT8AShUOjpCYWxhbmNlAAsE4FNvbWUgY3JlZGl0IHdhcyBiYWxhbmNlZCBhbmQgYWRkZWQgdG8gdGhlIFRvdGFsSXNzdWFuY2UuGEJ1cm5lZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UADAScU29tZSBhbW91bnQgd2FzIGJ1cm5lZCBmcm9tIGFuIGFjY291bnQuKEJ1cm5lZERlYnQEARhhbW91bnT8AShUOjpCYWxhbmNlAA0EzFNvbWUgZGVidCBoYXMgYmVlbiBkcm9wcGVkIGZyb20gdGhlIFRvdGFsIElzc3VhbmNlLiRTdXNwZW5kZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlAA4EFQFTb21lIGFtb3VudCB3YXMgc3VzcGVuZGVkIGZyb20gYW4gYWNjb3VudCAoaXQgY2FuIGJlIHJlc3RvcmVkIGxhdGVyKS4gUmVzdG9yZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlAA8EpFNvbWUgYW1vdW50IHdhcyByZXN0b3JlZCBpbnRvIGFuIGFjY291bnQuIFVwZ3JhZGVkBAEMd2hvBAEwVDo6QWNjb3VudElkABAEYEFuIGFjY291bnQgd2FzIHVwZ3JhZGVkLhhJc3N1ZWQEARhhbW91bnT8AShUOjpCYWxhbmNlABEELQFUb3RhbCBpc3N1YW5jZSB3YXMgaW5jcmVhc2VkIGJ5IGBhbW91bnRgLCBjcmVhdGluZyBhIGNyZWRpdCB0byBiZSBiYWxhbmNlZC4kUmVzY2luZGVkBAEYYW1vdW50/AEoVDo6QmFsYW5jZQASBCUBVG90YWwgaXNzdWFuY2Ugd2FzIGRlY3JlYXNlZCBieSBgYW1vdW50YCwgY3JlYXRpbmcgYSBkZWJ0IHRvIGJlIGJhbGFuY2VkLhhMb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlABMEYFNvbWUgYmFsYW5jZSB3YXMgbG9ja2VkLiBVbmxvY2tlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UAFARoU29tZSBiYWxhbmNlIHdhcyB1bmxvY2tlZC4YRnJvemVuCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAVBGBTb21lIGJhbGFuY2Ugd2FzIGZyb3plbi4YVGhhd2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAWBGBTb21lIGJhbGFuY2Ugd2FzIHRoYXdlZC5MVG90YWxJc3N1YW5jZUZvcmNlZAgBDG9sZPwBKFQ6OkJhbGFuY2UAAQxuZXf8AShUOjpCYWxhbmNlABcErFRoZSBgVG90YWxJc3N1YW5jZWAgd2FzIGZvcmNlZnVsbHkgY2hhbmdlZC4QSGVsZAwBGHJlYXNvbt0DAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UAGASAU29tZSBiYWxhbmNlIHdhcyBwbGFjZWQgb24gaG9sZC4oQnVybmVkSGVsZAwBGHJlYXNvbt0DAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UAGQSgSGVsZCBiYWxhbmNlIHdhcyBidXJuZWQgZnJvbSBhbiBhY2NvdW50LjhUcmFuc2Zlck9uSG9sZBABGHJlYXNvbt0DAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABEGRlc3QEATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlABoEFQFBIHRyYW5zZmVyIG9mIGBhbW91bnRgIG9uIGhvbGQgZnJvbSBgc291cmNlYCB0byBgZGVzdGAgd2FzIGluaXRpYXRlZC48VHJhbnNmZXJBbmRIb2xkEAEYcmVhc29u3QMBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEQZGVzdAQBMFQ6OkFjY291bnRJZAABLHRyYW5zZmVycmVk/AEoVDo6QmFsYW5jZQAbBAkBVGhlIGB0cmFuc2ZlcnJlZGAgYmFsYW5jZSBpcyBwbGFjZWQgb24gaG9sZCBhdCB0aGUgYGRlc3RgIGFjY291bnQuIFJlbGVhc2VkDAEYcmVhc29u3QMBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAcBJBTb21lIGJhbGFuY2Ugd2FzIHJlbGVhc2VkIGZyb20gaG9sZC4oVW5leHBlY3RlZAQA7QMBOFVuZXhwZWN0ZWRLaW5kAB0EsEFuIHVuZXhwZWN0ZWQvZGVmZW5zaXZlIGV2ZW50IHdhcyB0cmlnZ2VyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV02QMUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjNEJhbGFuY2VTdGF0dXMAAQgQRnJlZQAAACBSZXNlcnZlZAABAADdAwhgYnVsbGV0aW5fd2VzdGVuZF9ydW50aW1lRFJ1bnRpbWVIb2xkUmVhc29uAAEMSFRyYW5zYWN0aW9uU3RvcmFnZQQA4QMBmHBhbGxldF90cmFuc2FjdGlvbl9zdG9yYWdlOjpIb2xkUmVhc29uACgAHFNlc3Npb24EAOUDAWhwYWxsZXRfc2Vzc2lvbjo6SG9sZFJlYXNvbgAWACxQb2xrYWRvdFhjbQQA6QMBWHBhbGxldF94Y206OkhvbGRSZWFzb24AHwAA4QMMaHBhbGxldF90cmFuc2FjdGlvbl9zdG9yYWdlGHBhbGxldChIb2xkUmVhc29uAAEEOFN0b3JhZ2VGZWVIb2xkAAAAAOUDDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQoSG9sZFJlYXNvbgABBBBLZXlzAAAAAOkDDChwYWxsZXRfeGNtGHBhbGxldChIb2xkUmVhc29uAAEEOEF1dGhvcml6ZUFsaWFzAAAAAO0DDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0OFVuZXhwZWN0ZWRLaW5kAAEIOEJhbGFuY2VVcGRhdGVkAAAAVEZhaWxlZFRvTXV0YXRlQWNjb3VudAABAADxAwxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQYcGFsbGV0FEV2ZW50BARUAAEESFRyYW5zYWN0aW9uRmVlUGFpZAwBDHdobwQBMFQ6OkFjY291bnRJZAABKGFjdHVhbF9mZWX8ATBCYWxhbmNlT2Y8VD4AAQx0aXD8ATBCYWxhbmNlT2Y8VD4AAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsXGhhcyBiZWVuIHBhaWQgYnkgYHdob2AuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV09QMMbHBhbGxldF9za2lwX2ZlZWxlc3NfcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQQoRmVlU2tpcHBlZAQBGG9yaWdpbsgBwDxUOjpSdW50aW1lT3JpZ2luIGFzIE9yaWdpblRyYWl0Pjo6UGFsbGV0c09yaWdpbgAABHhBIHRyYW5zYWN0aW9uIGZlZSB3YXMgc2tpcHBlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXT5AwxocGFsbGV0X3RyYW5zYWN0aW9uX3N0b3JhZ2UYcGFsbGV0FEV2ZW50BARUAAEkGFN0b3JlZAwBFGluZGV4OAEMdTMyAAEwY29udGVudF9oYXNoCAEsQ29udGVudEhhc2gAAQxjaWT9AwEsT3B0aW9uPENpZD4AAASIU3RvcmVkIGRhdGEgdW5kZXIgc3BlY2lmaWVkIGluZGV4LhxSZW5ld2VkCAEUaW5kZXg4AQx1MzIAATBjb250ZW50X2hhc2gIASxDb250ZW50SGFzaAABBIxSZW5ld2VkIGRhdGEgdW5kZXIgc3BlY2lmaWVkIGluZGV4LjBQcm9vZkNoZWNrZWQAAgScU3RvcmFnZSBwcm9vZiB3YXMgc3VjY2Vzc2Z1bGx5IGNoZWNrZWQuREFjY291bnRBdXRob3JpemVkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEwdHJhbnNhY3Rpb25zOAEMdTMyAAEUYnl0ZXMoAQx1NjQAAwRZAUFuIGFjY291bnQgYHdob2Agd2FzIGF1dGhvcml6ZWQgdG8gc3RvcmUgYGJ5dGVzYCBieXRlcyBpbiBgdHJhbnNhY3Rpb25zYCB0cmFuc2FjdGlvbnMudEFjY291bnRBdXRob3JpemF0aW9uUmVmcmVzaGVkBAEMd2hvBAEwVDo6QWNjb3VudElkAAQExEFuIGF1dGhvcml6YXRpb24gZm9yIGFjY291bnQgYHdob2Agd2FzIHJlZnJlc2hlZC5IUHJlaW1hZ2VBdXRob3JpemVkCAEwY29udGVudF9oYXNoCAEsQ29udGVudEhhc2gAASBtYXhfc2l6ZSgBDHU2NAAFCFkBQXV0aG9yaXphdGlvbiB3YXMgZ2l2ZW4gZm9yIGEgcHJlaW1hZ2Ugb2YgYGNvbnRlbnRfaGFzaGAgKG5vdCBleGNlZWRpbmcgYG1heF9zaXplYCkgdG9QYmUgc3RvcmVkIGJ5IGFueW9uZS54UHJlaW1hZ2VBdXRob3JpemF0aW9uUmVmcmVzaGVkBAEwY29udGVudF9oYXNoCAEsQ29udGVudEhhc2gABgQBAUFuIGF1dGhvcml6YXRpb24gZm9yIGEgcHJlaW1hZ2Ugb2YgYGNvbnRlbnRfaGFzaGAgd2FzIHJlZnJlc2hlZC6IRXhwaXJlZEFjY291bnRBdXRob3JpemF0aW9uUmVtb3ZlZAQBDHdobwQBMFQ6OkFjY291bnRJZAAHBLRBbiBleHBpcmVkIGFjY291bnQgYXV0aG9yaXphdGlvbiB3YXMgcmVtb3ZlZC6MRXhwaXJlZFByZWltYWdlQXV0aG9yaXphdGlvblJlbW92ZWQEATBjb250ZW50X2hhc2gIASxDb250ZW50SGFzaAAIBLhBbiBleHBpcmVkIHByZWltYWdlIGF1dGhvcml6YXRpb24gd2FzIHJlbW92ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0/QMEGE9wdGlvbgQEVAEYAQgQTm9uZQAAABBTb21lBAAYAAABAAABBAxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQURXZlbnQEBFQAAShATmV3SW52dWxuZXJhYmxlcwQBNGludnVsbmVyYWJsZXM1AQFEVmVjPFQ6OkFjY291bnRJZD4AAARsTmV3IEludnVsbmVyYWJsZXMgd2VyZSBzZXQuREludnVsbmVyYWJsZUFkZGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABBHRBIG5ldyBJbnZ1bG5lcmFibGUgd2FzIGFkZGVkLkxJbnZ1bG5lcmFibGVSZW1vdmVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAACBHBBbiBJbnZ1bG5lcmFibGUgd2FzIHJlbW92ZWQuUE5ld0Rlc2lyZWRDYW5kaWRhdGVzBAFIZGVzaXJlZF9jYW5kaWRhdGVzOAEMdTMyAAMEpFRoZSBudW1iZXIgb2YgZGVzaXJlZCBjYW5kaWRhdGVzIHdhcyBzZXQuQE5ld0NhbmRpZGFjeUJvbmQEASxib25kX2Ftb3VudPwBMEJhbGFuY2VPZjxUPgAEBGxUaGUgY2FuZGlkYWN5IGJvbmQgd2FzIHNldC44Q2FuZGlkYXRlQWRkZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdPwBMEJhbGFuY2VPZjxUPgAFBFxBIG5ldyBjYW5kaWRhdGUgam9pbmVkLlBDYW5kaWRhdGVCb25kVXBkYXRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0/AEwQmFsYW5jZU9mPFQ+AAYEcEJvbmQgb2YgYSBjYW5kaWRhdGUgdXBkYXRlZC5AQ2FuZGlkYXRlUmVtb3ZlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQABwRgQSBjYW5kaWRhdGUgd2FzIHJlbW92ZWQuRENhbmRpZGF0ZVJlcGxhY2VkDAEMb2xkBAEwVDo6QWNjb3VudElkAAEMbmV3BAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdPwBMEJhbGFuY2VPZjxUPgAIBPRBbiBhY2NvdW50IHdhcyByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgYnkgYW5vdGhlciBvbmUuaEludmFsaWRJbnZ1bG5lcmFibGVTa2lwcGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAJCFUBQW4gYWNjb3VudCB3YXMgdW5hYmxlIHRvIGJlIGFkZGVkIHRvIHRoZSBJbnZ1bG5lcmFibGVzIGJlY2F1c2UgdGhleSBkaWQgbm90IGhhdmUga2V5c8hyZWdpc3RlcmVkLiBPdGhlciBJbnZ1bG5lcmFibGVzIG1heSBoYXZlIGJlZW4gc2V0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldAUEDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXZlbnQEBFQAARAoTmV3U2Vzc2lvbgQBNHNlc3Npb25faW5kZXg4ATBTZXNzaW9uSW5kZXgAAAg5AU5ldyBzZXNzaW9uIGhhcyBoYXBwZW5lZC4gTm90ZSB0aGF0IHRoZSBhcmd1bWVudCBpcyB0aGUgc2Vzc2lvbiBpbmRleCwgbm90IHRoZZxibG9jayBudW1iZXIgYXMgdGhlIHR5cGUgbWlnaHQgc3VnZ2VzdC4kTmV3UXVldWVkAAEISQFUaGUgYE5ld1Nlc3Npb25gIGV2ZW50IGluIHRoZSBjdXJyZW50IGJsb2NrIGFsc28gaW1wbGllcyBhIG5ldyB2YWxpZGF0b3Igc2V0IHRvIGJlHHF1ZXVlZC5EVmFsaWRhdG9yRGlzYWJsZWQEASR2YWxpZGF0b3IEAThUOjpWYWxpZGF0b3JJZAACBHBWYWxpZGF0b3IgaGFzIGJlZW4gZGlzYWJsZWQuSFZhbGlkYXRvclJlZW5hYmxlZAQBJHZhbGlkYXRvcgQBOFQ6OlZhbGlkYXRvcklkAAMEeFZhbGlkYXRvciBoYXMgYmVlbiByZS1lbmFibGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldAkEDGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlGHBhbGxldBRFdmVudAQEVAABBDxYY21wTWVzc2FnZVNlbnQEATBtZXNzYWdlX2hhc2gIARxYY21IYXNoAAAEwEFuIEhSTVAgbWVzc2FnZSB3YXMgc2VudCB0byBhIHNpYmxpbmcgcGFyYWNoYWluLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldA0EDChwYWxsZXRfeGNtGHBhbGxldBRFdmVudAQEVAABdCRBdHRlbXB0ZWQEARxvdXRjb21lEQQBUHhjbTo6bGF0ZXN0OjpPdXRjb21lAAAEqEV4ZWN1dGlvbiBvZiBhbiBYQ00gbWVzc2FnZSB3YXMgYXR0ZW1wdGVkLhBTZW50EAEYb3JpZ2lu4AEgTG9jYXRpb24AASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEcbWVzc2FnZXUCARxYY208KCk+AAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAQRgQW4gWENNIG1lc3NhZ2Ugd2FzIHNlbnQuKFNlbmRGYWlsZWQQARhvcmlnaW7gASBMb2NhdGlvbgABLGRlc3RpbmF0aW9u4AEgTG9jYXRpb24AARRlcnJvchkEASRTZW5kRXJyb3IAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAACBHhBbiBYQ00gbWVzc2FnZSBmYWlsZWQgdG8gc2VuZC48UHJvY2Vzc1hjbUVycm9yDAEYb3JpZ2lu4AEgTG9jYXRpb24AARRlcnJvcqUCASBYY21FcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAMEhEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBwcm9jZXNzLkhVbmV4cGVjdGVkUmVzcG9uc2UIARhvcmlnaW7gASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAAEDFkBUXVlcnkgcmVzcG9uc2UgcmVjZWl2ZWQgd2hpY2ggZG9lcyBub3QgbWF0Y2ggYSByZWdpc3RlcmVkIHF1ZXJ5LiBUaGlzIG1heSBiZSBiZWNhdXNlIGFVAW1hdGNoaW5nIHF1ZXJ5IHdhcyBuZXZlciByZWdpc3RlcmVkLCBpdCBtYXkgYmUgYmVjYXVzZSBpdCBpcyBhIGR1cGxpY2F0ZSByZXNwb25zZSwgb3JwYmVjYXVzZSB0aGUgcXVlcnkgdGltZWQgb3V0LjRSZXNwb25zZVJlYWR5CAEgcXVlcnlfaWQoARxRdWVyeUlkAAEgcmVzcG9uc2WZAgEgUmVzcG9uc2UABQhdAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBpcyByZWFkeSBmb3IgdGFraW5nIHdpdGggYHRha2VfcmVzcG9uc2VgLiBUaGVyZSBpc4BubyByZWdpc3RlcmVkIG5vdGlmaWNhdGlvbiBjYWxsLiBOb3RpZmllZAwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAYIWQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uIGhhc6hiZWVuIGRpc3BhdGNoZWQgYW5kIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseS5ATm90aWZ5T3ZlcndlaWdodBQBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAE0YWN0dWFsX3dlaWdodCkBARhXZWlnaHQAAUxtYXhfYnVkZ2V0ZWRfd2VpZ2h0KQEBGFdlaWdodAAHDEkBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSByZWdpc3RlcmVkIG5vdGlmaWNhdGlvblkBY291bGQgbm90IGJlIGRpc3BhdGNoZWQgYmVjYXVzZSB0aGUgZGlzcGF0Y2ggd2VpZ2h0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11bSB3ZWlnaHTkb3JpZ2luYWxseSBidWRnZXRlZCBieSB0aGlzIHJ1bnRpbWUgZm9yIHRoZSBxdWVyeSByZXN1bHQuTE5vdGlmeURpc3BhdGNoRXJyb3IMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAICFUBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZXJlIHdhcyBhIGdlbmVyYWwgZXJyb3Igd2l0aIhkaXNwYXRjaGluZyB0aGUgbm90aWZpY2F0aW9uIGNhbGwuSE5vdGlmeURlY29kZUZhaWxlZAwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAkMUQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIGRpc3BhdGNoIHdhcyB1bmFibGUgdG8gYmVZAWRlY29kZWQgaW50byBhIGBDYWxsYDsgdGhpcyBtaWdodCBiZSBkdWUgdG8gZGlzcGF0Y2ggZnVuY3Rpb24gaGF2aW5nIGEgc2lnbmF0dXJlIHdoaWNolGlzIG5vdCBgKG9yaWdpbiwgUXVlcnlJZCwgUmVzcG9uc2UpYC5ASW52YWxpZFJlc3BvbmRlcgwBGG9yaWdpbuABIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAFEZXhwZWN0ZWRfbG9jYXRpb265AgFAT3B0aW9uPExvY2F0aW9uPgAKDFkBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBvcmlnaW4gbG9jYXRpb24gb2YgdGhlIHJlc3BvbnNlIGRvZXNVAW5vdCBtYXRjaCB0aGF0IGV4cGVjdGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkIGZvciBhIGxhdGVyLCB2YWxpZCwgcmVzcG9uc2UgdG9sYmUgcmVjZWl2ZWQgYW5kIGFjdGVkIHVwb24uXEludmFsaWRSZXNwb25kZXJWZXJzaW9uCAEYb3JpZ2lu4AEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQACxxRAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgb3JpZ2luIGxvY2F0aW9uIHBsYWNlZCBpbk0Bc3RvcmFnZSBieSB0aGlzIHJ1bnRpbWUgcHJldmlvdXNseSBjYW5ub3QgYmUgZGVjb2RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZC4AQQFUaGlzIGlzIHVuZXhwZWN0ZWQgKHNpbmNlIGEgbG9jYXRpb24gcGxhY2VkIGluIHN0b3JhZ2UgaW4gYSBwcmV2aW91c2x5IGV4ZWN1dGluZ00BcnVudGltZSBzaG91bGQgYmUgcmVhZGFibGUgcHJpb3IgdG8gcXVlcnkgdGltZW91dCkgYW5kIGRhbmdlcm91cyBzaW5jZSB0aGUgcG9zc2libHlZAXZhbGlkIHJlc3BvbnNlIHdpbGwgYmUgZHJvcHBlZC4gTWFudWFsIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uIGlzIHByb2JhYmx5IGdvaW5nIHRvIGJlHG5lZWRlZC40UmVzcG9uc2VUYWtlbgQBIHF1ZXJ5X2lkKAEcUXVlcnlJZAAMBMhSZWNlaXZlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWFkIGFuZCByZW1vdmVkLjRBc3NldHNUcmFwcGVkDAEQaGFzaDwBEEgyNTYAARhvcmlnaW7gASBMb2NhdGlvbgABGGFzc2V0c/ECATxWZXJzaW9uZWRBc3NldHMADQS4U29tZSBhc3NldHMgaGF2ZSBiZWVuIHBsYWNlZCBpbiBhbiBhc3NldCB0cmFwLlRWZXJzaW9uQ2hhbmdlTm90aWZpZWQQASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEYcmVzdWx0OAEoWGNtVmVyc2lvbgABEGNvc3SBAgEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gADgwlAUFuIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb24gbWVzc2FnZSBoYXMgYmVlbiBhdHRlbXB0ZWQgdG8gYmUgc2VudC4A4FRoZSBjb3N0IG9mIHNlbmRpbmcgaXQgKGJvcm5lIGJ5IHRoZSBjaGFpbikgaXMgaW5jbHVkZWQuXFN1cHBvcnRlZFZlcnNpb25DaGFuZ2VkCAEgbG9jYXRpb27gASBMb2NhdGlvbgABHHZlcnNpb244AShYY21WZXJzaW9uAA8IOQFUaGUgc3VwcG9ydGVkIHZlcnNpb24gb2YgYSBsb2NhdGlvbiBoYXMgYmVlbiBjaGFuZ2VkLiBUaGlzIG1pZ2h0IGJlIHRocm91Z2ggYW7AYXV0b21hdGljIG5vdGlmaWNhdGlvbiBvciBhIG1hbnVhbCBpbnRlcnZlbnRpb24uUE5vdGlmeVRhcmdldFNlbmRGYWlsDAEgbG9jYXRpb27gASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAABFGVycm9ypQIBIFhjbUVycm9yABAIWQFBIGdpdmVuIGxvY2F0aW9uIHdoaWNoIGhhZCBhIHZlcnNpb24gY2hhbmdlIHN1YnNjcmlwdGlvbiB3YXMgZHJvcHBlZCBvd2luZyB0byBhbiBlcnJvcnxzZW5kaW5nIHRoZSBub3RpZmljYXRpb24gdG8gaXQuZE5vdGlmeVRhcmdldE1pZ3JhdGlvbkZhaWwIASBsb2NhdGlvbmUBAURWZXJzaW9uZWRMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAARCFkBQSBnaXZlbiBsb2NhdGlvbiB3aGljaCBoYWQgYSB2ZXJzaW9uIGNoYW5nZSBzdWJzY3JpcHRpb24gd2FzIGRyb3BwZWQgb3dpbmcgdG8gYW4gZXJyb3K0bWlncmF0aW5nIHRoZSBsb2NhdGlvbiB0byBvdXIgbmV3IFhDTSBmb3JtYXQuVEludmFsaWRRdWVyaWVyVmVyc2lvbggBGG9yaWdpbuABIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkABIcVQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIGV4cGVjdGVkIHF1ZXJpZXIgbG9jYXRpb24gcGxhY2VkIGluTQFzdG9yYWdlIGJ5IHRoaXMgcnVudGltZSBwcmV2aW91c2x5IGNhbm5vdCBiZSBkZWNvZGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkLgBBAVRoaXMgaXMgdW5leHBlY3RlZCAoc2luY2UgYSBsb2NhdGlvbiBwbGFjZWQgaW4gc3RvcmFnZSBpbiBhIHByZXZpb3VzbHkgZXhlY3V0aW5nTQFydW50aW1lIHNob3VsZCBiZSByZWFkYWJsZSBwcmlvciB0byBxdWVyeSB0aW1lb3V0KSBhbmQgZGFuZ2Vyb3VzIHNpbmNlIHRoZSBwb3NzaWJseVkBdmFsaWQgcmVzcG9uc2Ugd2lsbCBiZSBkcm9wcGVkLiBNYW51YWwgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUcbmVlZGVkLjhJbnZhbGlkUXVlcmllchABGG9yaWdpbuABIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAFAZXhwZWN0ZWRfcXVlcmllcuABIExvY2F0aW9uAAFQbWF5YmVfYWN0dWFsX3F1ZXJpZXK5AgFAT3B0aW9uPExvY2F0aW9uPgATDF0BRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBxdWVyaWVyIGxvY2F0aW9uIG9mIHRoZSByZXNwb25zZSBkb2VzUQFub3QgbWF0Y2ggdGhlIGV4cGVjdGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkIGZvciBhIGxhdGVyLCB2YWxpZCwgcmVzcG9uc2UgdG9sYmUgcmVjZWl2ZWQgYW5kIGFjdGVkIHVwb24uUFZlcnNpb25Ob3RpZnlTdGFydGVkDAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABEGNvc3SBAgEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFAhZAUEgcmVtb3RlIGhhcyByZXF1ZXN0ZWQgWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBmcm9tIHVzIGFuZCB3ZSBoYXZlIGhvbm9yZWQgaXQuHQFBIHZlcnNpb24gaW5mb3JtYXRpb24gbWVzc2FnZSBpcyBzZW50IHRvIHRoZW0gYW5kIGl0cyBjb3N0IGlzIGluY2x1ZGVkLlhWZXJzaW9uTm90aWZ5UmVxdWVzdGVkDAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABEGNvc3SBAgEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFQQ9AVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc2VuZCB1cyBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9ucy5gVmVyc2lvbk5vdGlmeVVucmVxdWVzdGVkDAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABEGNvc3SBAgEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFgglAVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc3RvcHMgc2VuZGluZyB1cyBYQ00gdmVyc2lvbiBjaGFuZ2U4bm90aWZpY2F0aW9ucy4gRmVlc1BhaWQIARhwYXlpbmfgASBMb2NhdGlvbgABEGZlZXOBAgEYQXNzZXRzABcEMQFGZWVzIHdlcmUgcGFpZCBmcm9tIGEgbG9jYXRpb24gZm9yIGFuIG9wZXJhdGlvbiAob2Z0ZW4gZm9yIHVzaW5nIGBTZW5kWGNtYCkuNEFzc2V0c0NsYWltZWQMARBoYXNoPAEQSDI1NgABGG9yaWdpbuABIExvY2F0aW9uAAEYYXNzZXRz8QIBPFZlcnNpb25lZEFzc2V0cwAYBMBTb21lIGFzc2V0cyBoYXZlIGJlZW4gY2xhaW1lZCBmcm9tIGFuIGFzc2V0IHRyYXBgVmVyc2lvbk1pZ3JhdGlvbkZpbmlzaGVkBAEcdmVyc2lvbjgBKFhjbVZlcnNpb24AGQSEQSBYQ00gdmVyc2lvbiBtaWdyYXRpb24gZmluaXNoZWQuPEFsaWFzQXV0aG9yaXplZAwBHGFsaWFzZXLgASBMb2NhdGlvbgABGHRhcmdldOABIExvY2F0aW9uAAEYZXhwaXJ5LQMBLE9wdGlvbjx1NjQ+ABoIXQFBbiBgYWxpYXNlcmAgbG9jYXRpb24gd2FzIGF1dGhvcml6ZWQgYnkgYHRhcmdldGAgdG8gYWxpYXMgaXQsIGF1dGhvcml6YXRpb24gdmFsaWQgdW50aWxYYGV4cGlyeWAgYmxvY2sgbnVtYmVyLmRBbGlhc0F1dGhvcml6YXRpb25SZW1vdmVkCAEcYWxpYXNlcuABIExvY2F0aW9uAAEYdGFyZ2V04AEgTG9jYXRpb24AGwTMYHRhcmdldGAgcmVtb3ZlZCBhbGlhcyBhdXRob3JpemF0aW9uIGZvciBgYWxpYXNlcmAucEFsaWFzZXNBdXRob3JpemF0aW9uc1JlbW92ZWQEARh0YXJnZXTgASBMb2NhdGlvbgAcBKhgdGFyZ2V0YCByZW1vdmVkIGFsbCBhbGlhcyBhdXRob3JpemF0aW9ucy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQRBBAsc3RhZ2luZ194Y20IdjUYdHJhaXRzHE91dGNvbWUAAQwgQ29tcGxldGUEARB1c2VkKQEBGFdlaWdodAAAAChJbmNvbXBsZXRlCAEQdXNlZCkBARhXZWlnaHQAARRlcnJvchUEAUBJbnN0cnVjdGlvbkVycm9yAAEAFEVycm9yBAAVBAFASW5zdHJ1Y3Rpb25FcnJvcgACAAAVBBAsc3RhZ2luZ194Y20IdjUYdHJhaXRzQEluc3RydWN0aW9uRXJyb3IAAAgBFGluZGV4DAFASW5zdHJ1Y3Rpb25JbmRleAABFGVycm9ypQIBFEVycm9yAAAZBBAMeGNtCHYzGHRyYWl0cyRTZW5kRXJyb3IAARw0Tm90QXBwbGljYWJsZQAAACRUcmFuc3BvcnQAAQAoVW5yb3V0YWJsZQACAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAAMAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAEADxNaXNzaW5nQXJndW1lbnQABQAQRmVlcwAGAAAdBAxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBRFdmVudAQEVAABDDRJbnZhbGlkRm9ybWF0BAAIASBbdTg7IDMyXQAACIBEb3dud2FyZCBtZXNzYWdlIGlzIGludmFsaWQgWENNLiBcWyBpZCBcXUhVbnN1cHBvcnRlZFZlcnNpb24EAAgBIFt1ODsgMzJdAAEIvERvd253YXJkIG1lc3NhZ2UgaXMgdW5zdXBwb3J0ZWQgdmVyc2lvbiBvZiBYQ00uIFxbIGlkIFxdQEV4ZWN1dGVkRG93bndhcmQIAAgBIFt1ODsgMzJdAAARBAEcT3V0Y29tZQACCMREb3dud2FyZCBtZXNzYWdlIGV4ZWN1dGVkIHdpdGggdGhlIGdpdmVuIG91dGNvbWUuRFxbIGlkLCBvdXRjb21lIFxdBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0IQQMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFdmVudAQEVAABEEBQcm9jZXNzaW5nRmFpbGVkDAEIaWQ8ARBIMjU2BJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW45AwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuARRlcnJvciUEAUxQcm9jZXNzTWVzc2FnZUVycm9yEGBUaGUgZXJyb3IgdGhhdCBvY2N1cnJlZC4ASQFUaGlzIGVycm9yIGlzIHByZXR0eSBvcGFxdWUuIE1vcmUgZmluZS1ncmFpbmVkIGVycm9ycyBuZWVkIHRvIGJlIGVtaXR0ZWQgYXMgZXZlbnRzaGJ5IHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAuAARVAU1lc3NhZ2UgZGlzY2FyZGVkIGR1ZSB0byBhbiBlcnJvciBpbiB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgICh1c3VhbGx5IGEgZm9ybWF0IGVycm9yKS4kUHJvY2Vzc2VkEAEIaWQ8ARBIMjU2BJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW45AwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuASx3ZWlnaHRfdXNlZCkBARhXZWlnaHQEwEhvdyBtdWNoIHdlaWdodCB3YXMgdXNlZCB0byBwcm9jZXNzIHRoZSBtZXNzYWdlLgEcc3VjY2VzczEBARBib29sGIhXaGV0aGVyIHRoZSBtZXNzYWdlIHdhcyBwcm9jZXNzZWQuAEkBTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSB1bmRlcmx5aW5nIGBNZXNzYWdlUHJvY2Vzc29yYCB3YXMgaW50ZXJuYWxseTUBc3VjY2Vzc2Z1bC4gSXQgKnNvbGVseSogbWVhbnMgdGhhdCB0aGUgTVEgcGFsbGV0IHdpbGwgdHJlYXQgdGhpcyBhcyBhIHN1Y2Nlc3NNAWNvbmRpdGlvbiBhbmQgZGlzY2FyZCB0aGUgbWVzc2FnZS4gQW55IGludGVybmFsIGVycm9yIG5lZWRzIHRvIGJlIGVtaXR0ZWQgYXMgZXZlbnRzaGJ5IHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAuAQRUTWVzc2FnZSBpcyBwcm9jZXNzZWQuSE92ZXJ3ZWlnaHRFbnF1ZXVlZBABCGlkCAEgW3U4OyAzMl0ElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbjkDAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgEYFRoZSBwYWdlIG9mIHRoZSBtZXNzYWdlLgE0bWVzc2FnZV9pbmRleDgBHFQ6OlNpemUEpFRoZSBpbmRleCBvZiB0aGUgbWVzc2FnZSB3aXRoaW4gdGhlIHBhZ2UuAgSMTWVzc2FnZSBwbGFjZWQgaW4gb3ZlcndlaWdodCBxdWV1ZS4oUGFnZVJlYXBlZAgBGG9yaWdpbjkDAUhNZXNzYWdlT3JpZ2luT2Y8VD4EWFRoZSBxdWV1ZSBvZiB0aGUgcGFnZS4BFGluZGV4OAEkUGFnZUluZGV4BFhUaGUgaW5kZXggb2YgdGhlIHBhZ2UuAwRUVGhpcyBwYWdlIHdhcyByZWFwZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0JQQQNGZyYW1lX3N1cHBvcnQYdHJhaXRzIG1lc3NhZ2VzTFByb2Nlc3NNZXNzYWdlRXJyb3IAARgkQmFkRm9ybWF0AAAAHENvcnJ1cHQAAQAsVW5zdXBwb3J0ZWQAAgAoT3ZlcndlaWdodAQAKQEBGFdlaWdodAADABRZaWVsZAAEAERTdGFja0xpbWl0UmVhY2hlZAAFAAApBAwscGFsbGV0X3N1ZG8YcGFsbGV0FEV2ZW50BARUAAEQFFN1ZGlkBAEsc3Vkb19yZXN1bHTRAwE4RGlzcGF0Y2hSZXN1bHQEtFRoZSByZXN1bHQgb2YgdGhlIGNhbGwgbWFkZSBieSB0aGUgc3VkbyB1c2VyLgAEcEEgc3VkbyBjYWxsIGp1c3QgdG9vayBwbGFjZS4oS2V5Q2hhbmdlZAgBDG9sZC0EAVBPcHRpb248VDo6QWNjb3VudElkPgS0VGhlIG9sZCBzdWRvIGtleSAoaWYgb25lIHdhcyBwcmV2aW91c2x5IHNldCkuAQxuZXcEATBUOjpBY2NvdW50SWQEiFRoZSBuZXcgc3VkbyBrZXkgKGlmIG9uZSB3YXMgc2V0KS4BBHhUaGUgc3VkbyBrZXkgaGFzIGJlZW4gdXBkYXRlZC4oS2V5UmVtb3ZlZAACBIBUaGUga2V5IHdhcyBwZXJtYW5lbnRseSByZW1vdmVkLihTdWRvQXNEb25lBAEsc3Vkb19yZXN1bHTRAwE4RGlzcGF0Y2hSZXN1bHQEtFRoZSByZXN1bHQgb2YgdGhlIGNhbGwgbWFkZSBieSB0aGUgc3VkbyB1c2VyLgMEyEEgW3N1ZG9fYXNdKFBhbGxldDo6c3Vkb19hcykgY2FsbCBqdXN0IHRvb2sgcGxhY2UuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0LQQEGE9wdGlvbgQEVAEEAQgQTm9uZQAAABBTb21lBAAEAAABAAAxBAgwZnJhbWVfc3lzdGVtFFBoYXNlAAEMOEFwcGx5RXh0cmluc2ljBAA4AQx1MzIAAAAwRmluYWxpemF0aW9uAAEAOEluaXRpYWxpemF0aW9uAAIAADUEAAACPAA5BAAAAj0EAD0EAAAECDg4AEEECDBmcmFtZV9zeXN0ZW1YTGFzdFJ1bnRpbWVVcGdyYWRlSW5mbwAACAEwc3BlY192ZXJzaW9uYAFMY29kZWM6OkNvbXBhY3Q8dTMyPgABJHNwZWNfbmFtZUUEAURDb3c8J3N0YXRpYywgc3RyPgAARQQEDENvdwQEVAFJBAAEAEkEAAAASQQAAAUCAE0ECDBmcmFtZV9zeXN0ZW1gQ29kZVVwZ3JhZGVBdXRob3JpemF0aW9uBARUAAAIASRjb2RlX2hhc2g8ARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvbjEBARBib29sAABRBAwwZnJhbWVfc3lzdGVtGGxpbWl0czBCbG9ja1dlaWdodHMAAAwBKGJhc2VfYmxvY2spAQEYV2VpZ2h0AAEkbWF4X2Jsb2NrKQEBGFdlaWdodAABJHBlcl9jbGFzc1UEAYRQZXJEaXNwYXRjaENsYXNzPFdlaWdodHNQZXJDbGFzcz4AAFUEDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBWQQADAEYbm9ybWFsWQQBBFQAASxvcGVyYXRpb25hbFkEAQRUAAEkbWFuZGF0b3J5WQQBBFQAAFkEDDBmcmFtZV9zeXN0ZW0YbGltaXRzPFdlaWdodHNQZXJDbGFzcwAAEAE4YmFzZV9leHRyaW5zaWMpAQEYV2VpZ2h0AAE0bWF4X2V4dHJpbnNpY70CAThPcHRpb248V2VpZ2h0PgABJG1heF90b3RhbL0CAThPcHRpb248V2VpZ2h0PgABIHJlc2VydmVkvQIBOE9wdGlvbjxXZWlnaHQ+AABdBAwwZnJhbWVfc3lzdGVtGGxpbWl0cyxCbG9ja0xlbmd0aAAACAEMbWF4YQQBVFBlckRpc3BhdGNoQ2xhc3M8dTMyPgABPG1heF9oZWFkZXJfc2l6ZSEDASxPcHRpb248dTMyPgAAYQQMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAE4AAwBGG5vcm1hbDgBBFQAASxvcGVyYXRpb25hbDgBBFQAASRtYW5kYXRvcnk4AQRUAABlBAgoc3Bfd2VpZ2h0czxSdW50aW1lRGJXZWlnaHQAAAgBEHJlYWQoAQx1NjQAARR3cml0ZSgBDHU2NAAAaQQIKHNwX3ZlcnNpb244UnVudGltZVZlcnNpb24AACABJHNwZWNfbmFtZUUEAURDb3c8J3N0YXRpYywgc3RyPgABJGltcGxfbmFtZUUEAURDb3c8J3N0YXRpYywgc3RyPgABRGF1dGhvcmluZ192ZXJzaW9uOAEMdTMyAAEwc3BlY192ZXJzaW9uOAEMdTMyAAEwaW1wbF92ZXJzaW9uOAEMdTMyAAEQYXBpc20EARxBcGlzVmVjAAFMdHJhbnNhY3Rpb25fdmVyc2lvbjgBDHUzMgABOHN5c3RlbV92ZXJzaW9uDAEIdTgAAG0EBAxDb3cEBFQBcQQABABxBAAAAHEEAAACdQQAdQQAAAQI2QE4AHkEDDBmcmFtZV9zeXN0ZW0YcGFsbGV0FEVycm9yBARUAAEkPEludmFsaWRTcGVjTmFtZQAACBEBVGhlIG5hbWUgb2Ygc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBtYXRjaCBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS5oU3BlY1ZlcnNpb25OZWVkc1RvSW5jcmVhc2UAAQhBAVRoZSBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaXMgbm90IGFsbG93ZWQgdG8gZGVjcmVhc2UgYmV0d2VlbiB0aGUgY3VycmVudCBydW50aW1lUGFuZCB0aGUgbmV3IHJ1bnRpbWUudEZhaWxlZFRvRXh0cmFjdFJ1bnRpbWVWZXJzaW9uAAIM7EZhaWxlZCB0byBleHRyYWN0IHRoZSBydW50aW1lIHZlcnNpb24gZnJvbSB0aGUgbmV3IHJ1bnRpbWUuAAkBRWl0aGVyIGNhbGxpbmcgYENvcmVfdmVyc2lvbmAgb3IgZGVjb2RpbmcgYFJ1bnRpbWVWZXJzaW9uYCBmYWlsZWQuTE5vbkRlZmF1bHRDb21wb3NpdGUAAwT8U3VpY2lkZSBjYWxsZWQgd2hlbiB0aGUgYWNjb3VudCBoYXMgbm9uLWRlZmF1bHQgY29tcG9zaXRlIGRhdGEuPE5vblplcm9SZWZDb3VudAAEBDUBVGhlcmUgaXMgYSBub24temVybyByZWZlcmVuY2UgY291bnQgcHJldmVudGluZyB0aGUgYWNjb3VudCBmcm9tIGJlaW5nIHB1cmdlZC4wQ2FsbEZpbHRlcmVkAAUE0FRoZSBvcmlnaW4gZmlsdGVyIHByZXZlbnQgdGhlIGNhbGwgdG8gYmUgZGlzcGF0Y2hlZC5sTXVsdGlCbG9ja01pZ3JhdGlvbnNPbmdvaW5nAAYEVQFBIG11bHRpLWJsb2NrIG1pZ3JhdGlvbiBpcyBvbmdvaW5nIGFuZCBwcmV2ZW50cyB0aGUgY3VycmVudCBjb2RlIGZyb20gYmVpbmcgcmVwbGFjZWQuRE5vdGhpbmdBdXRob3JpemVkAAcEWE5vIHVwZ3JhZGUgYXV0aG9yaXplZC4wVW5hdXRob3JpemVkAAgElFRoZSBzdWJtaXR0ZWQgY29kZSBpcyBub3QgYXV0aG9yaXplZC4EbEVycm9yIGZvciB0aGUgU3lzdGVtIHBhbGxldH0EDChzcF9ydW50aW1lGHRyYWl0cyxCbGFrZVR3bzI1NgAAAACBBBAoc3BfcnVudGltZRxnZW5lcmljFGJsb2NrFEJsb2NrCBhIZWFkZXIBXCRFeHRyaW5zaWMBhQQACAEYaGVhZGVyXAEYSGVhZGVyAAEoZXh0cmluc2ljc5EEAThWZWM8RXh0cmluc2ljPgAAhQQQKHNwX3J1bnRpbWUcZ2VuZXJpY0x1bmNoZWNrZWRfZXh0cmluc2ljSFVuY2hlY2tlZEV4dHJpbnNpYxAcQWRkcmVzcwEAEENhbGwBICRTaWduYXR1cmUBQQMURXh0cmEBiQQABAAYAAAAiQQIdGN1bXVsdXNfcGFsbGV0X3dlaWdodF9yZWNsYWltUFN0b3JhZ2VXZWlnaHRSZWNsYWltCARUAARTAY0EAAQAjQQBBFMAAI0EAAAELE0DUQNVA1kDXQNhA2kDbQNxA3UDeQMAkQQAAAKFBACVBAAAApkEAJkEDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudCBBbmNlc3RvcgQESAE8AAwBOHVzZWRfYmFuZHdpZHRonQQBNFVzZWRCYW5kd2lkdGgAAThwYXJhX2hlYWRfaGFzaLEEASRPcHRpb248SD4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWy1BAGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AAJ0EDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudDRVc2VkQmFuZHdpZHRoAAAMATR1bXBfbXNnX2NvdW50OAEMdTMyAAE8dW1wX3RvdGFsX2J5dGVzOAEMdTMyAAE0aHJtcF9vdXRnb2luZ6EEAYxCVHJlZU1hcDxQYXJhSWQsIEhybXBDaGFubmVsVXBkYXRlPgAAoQQEIEJUcmVlTWFwCARLAZwEVgGlBAAEAKkEAAAApQQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50REhybXBDaGFubmVsVXBkYXRlAAAIASRtc2dfY291bnQ4AQx1MzIAASx0b3RhbF9ieXRlczgBDHUzMgAAqQQAAAKtBACtBAAABAicpQQAsQQEGE9wdGlvbgQEVAE8AQgQTm9uZQAAABBTb21lBAA8AAABAAC1BAQYT3B0aW9uBARUAbkEAQgQTm9uZQAAABBTb21lBAC5BAAAAQAAuQQMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk4VXBncmFkZUdvQWhlYWQAAQgUQWJvcnQAAAAcR29BaGVhZAABAAC9BAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQ4U2VnbWVudFRyYWNrZXIEBEgBPAAMATh1c2VkX2JhbmR3aWR0aJ0EATRVc2VkQmFuZHdpZHRoAAE4aHJtcF93YXRlcm1hcmshAwGAT3B0aW9uPHJlbGF5X2NoYWluOjpCbG9ja051bWJlcj4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWy1BAGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AAMEEBBhPcHRpb24EBFQBxQQBCBBOb25lAAAAEFNvbWUEAMUEAAABAADFBAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUhVcGdyYWRlUmVzdHJpY3Rpb24AAQQcUHJlc2VudAAAAADJBAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdFhNZXNzYWdpbmdTdGF0ZVNuYXBzaG90AAAQATBkbXFfbXFjX2hlYWQ8AURyZWxheV9jaGFpbjo6SGFzaAABnHJlbGF5X2Rpc3BhdGNoX3F1ZXVlX3JlbWFpbmluZ19jYXBhY2l0ec0EAYxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQABQGluZ3Jlc3NfY2hhbm5lbHPRBAGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgABPGVncmVzc19jaGFubmVsc9EEAYhWZWM8KFBhcmFJZCwgQWJyaWRnZWRIcm1wQ2hhbm5lbCk+AADNBAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdIxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQAACAE8cmVtYWluaW5nX2NvdW50OAEMdTMyAAE4cmVtYWluaW5nX3NpemU4AQx1MzIAANEEAAAC1QQA1QQAAAQInNkEANkEDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5TEFicmlkZ2VkSHJtcENoYW5uZWwAABgBMG1heF9jYXBhY2l0eTgBDHUzMgABOG1heF90b3RhbF9zaXplOAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZTgBDHUzMgABJG1zZ19jb3VudDgBDHUzMgABKHRvdGFsX3NpemU4AQx1MzIAASBtcWNfaGVhZLEEATBPcHRpb248SGFzaD4AAN0EDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5ZEFicmlkZ2VkSG9zdENvbmZpZ3VyYXRpb24AACgBNG1heF9jb2RlX3NpemU4AQx1MzIAAUhtYXhfaGVhZF9kYXRhX3NpemU4AQx1MzIAAVhtYXhfdXB3YXJkX3F1ZXVlX2NvdW50OAEMdTMyAAFUbWF4X3Vwd2FyZF9xdWV1ZV9zaXplOAEMdTMyAAFcbWF4X3Vwd2FyZF9tZXNzYWdlX3NpemU4AQx1MzIAAZBtYXhfdXB3YXJkX21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGU4AQx1MzIAAYhocm1wX21heF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAFsdmFsaWRhdGlvbl91cGdyYWRlX2Nvb2xkb3duOAEsQmxvY2tOdW1iZXIAAWB2YWxpZGF0aW9uX3VwZ3JhZGVfZGVsYXk4ASxCbG9ja051bWJlcgABUGFzeW5jX2JhY2tpbmdfcGFyYW1z4QQBSEFzeW5jQmFja2luZ1BhcmFtcwAA4QQQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk0YXN5bmNfYmFja2luZ0hBc3luY0JhY2tpbmdQYXJhbXMAAAgBTG1heF9jYW5kaWRhdGVfZGVwdGg4AQx1MzIAAVBhbGxvd2VkX2FuY2VzdHJ5X2xlbjgBDHUzMgAA5QQIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnRETWVzc2FnZVF1ZXVlQ2hhaW4AAAQAPAEkUmVsYXlIYXNoAADpBAQgQlRyZWVNYXAIBEsBnARWAeUEAAQA7QQAAADtBAAAAvEEAPEEAAAECJzlBAD1BAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRASW5ib3VuZE1lc3NhZ2VJZAAACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEscmV2ZXJzZV9pZHg4AQx1MzIAAPkEAAAC/QQA/QQIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0xPdXRib3VuZEhybXBNZXNzYWdlBAhJZAGcAAgBJHJlY2lwaWVudJwBCElkAAEQZGF0YRgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AAAEFDDRzcF9hcml0aG1ldGljLGZpeGVkX3BvaW50JEZpeGVkVTEyOAAABAD8ARB1MTI4AAAFBQx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAARhMT3ZlcmxhcHBpbmdVcGdyYWRlcwAABBkBQXR0ZW1wdCB0byB1cGdyYWRlIHZhbGlkYXRpb24gZnVuY3Rpb24gd2hpbGUgZXhpc3RpbmcgdXBncmFkZSBwZW5kaW5nLlBQcm9oaWJpdGVkQnlQb2xrYWRvdAABBE0BUG9sa2Fkb3QgY3VycmVudGx5IHByb2hpYml0cyB0aGlzIHBhcmFjaGFpbiBmcm9tIHVwZ3JhZGluZyBpdHMgdmFsaWRhdGlvbiBmdW5jdGlvbi4YVG9vQmlnAAIIRQFUaGUgc3VwcGxpZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiBoYXMgY29tcGlsZWQgaW50byBhIGJsb2IgbGFyZ2VyIHRoYW4gUG9sa2Fkb3QgaXM8d2lsbGluZyB0byBydW4uaFZhbGlkYXRpb25EYXRhTm90QXZhaWxhYmxlAAMEHQFUaGUgaW5oZXJlbnQgd2hpY2ggc3VwcGxpZXMgdGhlIHZhbGlkYXRpb24gZGF0YSBkaWQgbm90IHJ1biB0aGlzIGJsb2NrLnRIb3N0Q29uZmlndXJhdGlvbk5vdEF2YWlsYWJsZQAEBCkBVGhlIGluaGVyZW50IHdoaWNoIHN1cHBsaWVzIHRoZSBob3N0IGNvbmZpZ3VyYXRpb24gZGlkIG5vdCBydW4gdGhpcyBibG9jay4wTm90U2NoZWR1bGVkAAUE2E5vIHZhbGlkYXRpb24gZnVuY3Rpb24gdXBncmFkZSBpcyBjdXJyZW50bHkgc2NoZWR1bGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4JBQw4cGFsbGV0X3V0aWxpdHkYcGFsbGV0FEVycm9yBARUAAEEMFRvb01hbnlDYWxscwAABFxUb28gbWFueSBjYWxscyBiYXRjaGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4NBQxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAREFBFMAAAQAGQUBGFZlYzxUPgAAEQUMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxCYWxhbmNlTG9jawQcQmFsYW5jZQH8AAwBCGlk2QEBOExvY2tJZGVudGlmaWVyAAEYYW1vdW50/AEcQmFsYW5jZQABHHJlYXNvbnMVBQEcUmVhc29ucwAAFQUMPHBhbGxldF9iYWxhbmNlcxR0eXBlcxxSZWFzb25zAAEMDEZlZQAAABBNaXNjAAEADEFsbAACAAAZBQAAAhEFAB0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBIQUEUwAABAAlBQEYVmVjPFQ+AAAhBQw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLFJlc2VydmVEYXRhCERSZXNlcnZlSWRlbnRpZmllcgHZARxCYWxhbmNlAfwACAEIaWTZAQFEUmVzZXJ2ZUlkZW50aWZpZXIAARhhbW91bnT8ARxCYWxhbmNlAAAlBQAAAiEFACkFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBLQUEUwAABAAxBQEYVmVjPFQ+AAAtBRQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2MgSWRBbW91bnQICElkAd0DHEJhbGFuY2UB/AAIAQhpZN0DAQhJZAABGGFtb3VudPwBHEJhbGFuY2UAADEFAAACLQUANQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE5BQRTAAAEAD0FARhWZWM8VD4AADkFFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYyBJZEFtb3VudAgISWQBEBxCYWxhbmNlAfwACAEIaWQQAQhJZAABGGFtb3VudPwBHEJhbGFuY2UAAD0FAAACOQUAQQUMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXJyb3IIBFQABEkAATA4VmVzdGluZ0JhbGFuY2UAAAScVmVzdGluZyBiYWxhbmNlIHRvbyBoaWdoIHRvIHNlbmQgdmFsdWUuVExpcXVpZGl0eVJlc3RyaWN0aW9ucwABBMhBY2NvdW50IGxpcXVpZGl0eSByZXN0cmljdGlvbnMgcHJldmVudCB3aXRoZHJhd2FsLkxJbnN1ZmZpY2llbnRCYWxhbmNlAAIEeEJhbGFuY2UgdG9vIGxvdyB0byBzZW5kIHZhbHVlLkhFeGlzdGVudGlhbERlcG9zaXQAAwTsVmFsdWUgdG9vIGxvdyB0byBjcmVhdGUgYWNjb3VudCBkdWUgdG8gZXhpc3RlbnRpYWwgZGVwb3NpdC40RXhwZW5kYWJpbGl0eQAEBJBUcmFuc2Zlci9wYXltZW50IHdvdWxkIGtpbGwgYWNjb3VudC5cRXhpc3RpbmdWZXN0aW5nU2NoZWR1bGUABQTMQSB2ZXN0aW5nIHNjaGVkdWxlIGFscmVhZHkgZXhpc3RzIGZvciB0aGlzIGFjY291bnQuLERlYWRBY2NvdW50AAYEjEJlbmVmaWNpYXJ5IGFjY291bnQgbXVzdCBwcmUtZXhpc3QuPFRvb01hbnlSZXNlcnZlcwAHBLhOdW1iZXIgb2YgbmFtZWQgcmVzZXJ2ZXMgZXhjZWVkIGBNYXhSZXNlcnZlc2AuMFRvb01hbnlIb2xkcwAIBPhOdW1iZXIgb2YgaG9sZHMgZXhjZWVkIGBWYXJpYW50Q291bnRPZjxUOjpSdW50aW1lSG9sZFJlYXNvbj5gLjhUb29NYW55RnJlZXplcwAJBJhOdW1iZXIgb2YgZnJlZXplcyBleGNlZWQgYE1heEZyZWV6ZXNgLkxJc3N1YW5jZURlYWN0aXZhdGVkAAoEAQFUaGUgaXNzdWFuY2UgY2Fubm90IGJlIG1vZGlmaWVkIHNpbmNlIGl0IGlzIGFscmVhZHkgZGVhY3RpdmF0ZWQuJERlbHRhWmVybwALBGRUaGUgZGVsdGEgY2Fubm90IGJlIHplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LkUFCGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudCBSZWxlYXNlcwABCCRWMUFuY2llbnQAAAAIVjIAAQAASQUQNGZyYW1lX3N1cHBvcnQYdHJhaXRzHHN0b3JhZ2UYTm9Ecm9wBARUAU0FAAQATQUBBFQAAE0FGDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGUkaW1iYWxhbmNlJEltYmFsYW5jZQwEQgH8GE9uRHJvcAA4T3Bwb3NpdGVPbkRyb3AAAAQBGGFtb3VudPwBBEIAAFEFCGhwYWxsZXRfdHJhbnNhY3Rpb25fc3RvcmFnZTRBdXRob3JpemF0aW9uBCxCbG9ja051bWJlcgE4AAgBGGV4dGVudFUFAUxBdXRob3JpemF0aW9uRXh0ZW50AAEoZXhwaXJhdGlvbjgBLEJsb2NrTnVtYmVyAABVBQhocGFsbGV0X3RyYW5zYWN0aW9uX3N0b3JhZ2VMQXV0aG9yaXphdGlvbkV4dGVudAAACAEwdHJhbnNhY3Rpb25zOAEMdTMyAAEUYnl0ZXMoAQx1NjQAAFkFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBXQUEUwAABABhBQEYVmVjPFQ+AABdBQhocGFsbGV0X3RyYW5zYWN0aW9uX3N0b3JhZ2U8VHJhbnNhY3Rpb25JbmZvAAAYAShjaHVua19yb290PAF0PEJsYWtlVHdvMjU2IGFzIEhhc2g+OjpPdXRwdXQAATBjb250ZW50X2hhc2gIASxDb250ZW50SGFzaAABHGhhc2hpbmdFAQFASGFzaGluZ0FsZ29yaXRobQABJGNpZF9jb2RlYygBIENpZENvZGVjAAEQc2l6ZTgBDHUzMgABMGJsb2NrX2NodW5rczgBKENodW5rSW5kZXgAAGEFAAACXQUAZQUMaHBhbGxldF90cmFuc2FjdGlvbl9zdG9yYWdlGHBhbGxldBRFcnJvcgQEVAABOChCYWRDb250ZXh0AAAE9EF0dGVtcHRlZCB0byBjYWxsIGBzdG9yZWAvYHJlbmV3YCBvdXRzaWRlIG9mIGJsb2NrIGV4ZWN1dGlvbi4sQmFkRGF0YVNpemUAAQSYRGF0YSBzaXplIGlzIG5vdCBpbiB0aGUgYWxsb3dlZCByYW5nZS5MVG9vTWFueVRyYW5zYWN0aW9ucwACBIxUb28gbWFueSB0cmFuc2FjdGlvbnMgaW4gdGhlIGJsb2NrLjROb3RDb25maWd1cmVkAAMEWEludmFsaWQgY29uZmlndXJhdGlvbi48UmVuZXdlZE5vdEZvdW5kAAQEfFJlbmV3ZWQgZXh0cmluc2ljIGlzIG5vdCBmb3VuZC48VW5leHBlY3RlZFByb29mAAUElFByb29mIHdhcyBub3QgZXhwZWN0ZWQgaW4gdGhpcyBibG9jay4wSW52YWxpZFByb29mAAYEaFByb29mIGZhaWxlZCB2ZXJpZmljYXRpb24uME1pc3NpbmdQcm9vZgAHBFhNaXNzaW5nIHN0b3JhZ2UgcHJvb2YuQE1pc3NpbmdTdGF0ZURhdGEACATUVW5hYmxlIHRvIHZlcmlmeSBwcm9vZiBiZWNhdXNlIHN0YXRlIGRhdGEgaXMgbWlzc2luZy4sRG91YmxlQ2hlY2sACQSARG91YmxlIHByb29mIGNoZWNrIGluIHRoZSBibG9jay48UHJvb2ZOb3RDaGVja2VkAAoErFN0b3JhZ2UgcHJvb2Ygd2FzIG5vdCBjaGVja2VkIGluIHRoZSBibG9jay5UQXV0aG9yaXphdGlvbk5vdEZvdW5kAAsEcEF1dGhvcml6YXRpb24gd2FzIG5vdCBmb3VuZC5cQXV0aG9yaXphdGlvbk5vdEV4cGlyZWQADAR4QXV0aG9yaXphdGlvbiBoYXMgbm90IGV4cGlyZWQuSEludmFsaWRDb250ZW50SGFzaAANBIBDb250ZW50IGhhc2ggd2FzIG5vdCBjYWxjdWxhdGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5pBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABAA1AQEYVmVjPFQ+AABtBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAXEFBFMAAAQAdQUBGFZlYzxUPgAAcQUMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0NENhbmRpZGF0ZUluZm8IJEFjY291bnRJZAEEHEJhbGFuY2UB/AAIAQx3aG8EASRBY2NvdW50SWQAARxkZXBvc2l0/AEcQmFsYW5jZQAAdQUAAAJxBQB5BQg0ZnJhbWVfc3VwcG9ydCBQYWxsZXRJZAAABADZAQEcW3U4OyA4XQAAfQUMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEVycm9yBARUAAFERFRvb01hbnlDYW5kaWRhdGVzAAAEjFRoZSBwYWxsZXQgaGFzIHRvbyBtYW55IGNhbmRpZGF0ZXMuXFRvb0Zld0VsaWdpYmxlQ29sbGF0b3JzAAEErExlYXZpbmcgd291bGQgcmVzdWx0IGluIHRvbyBmZXcgY2FuZGlkYXRlcy5AQWxyZWFkeUNhbmRpZGF0ZQACBHxBY2NvdW50IGlzIGFscmVhZHkgYSBjYW5kaWRhdGUuME5vdENhbmRpZGF0ZQADBGxBY2NvdW50IGlzIG5vdCBhIGNhbmRpZGF0ZS5QVG9vTWFueUludnVsbmVyYWJsZXMABASEVGhlcmUgYXJlIHRvbyBtYW55IEludnVsbmVyYWJsZXMuTEFscmVhZHlJbnZ1bG5lcmFibGUABQSMQWNjb3VudCBpcyBhbHJlYWR5IGFuIEludnVsbmVyYWJsZS48Tm90SW52dWxuZXJhYmxlAAYEfEFjY291bnQgaXMgbm90IGFuIEludnVsbmVyYWJsZS5cTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQABwScQWNjb3VudCBoYXMgbm8gYXNzb2NpYXRlZCB2YWxpZGF0b3IgSUQuWFZhbGlkYXRvck5vdFJlZ2lzdGVyZWQACASMVmFsaWRhdG9yIElEIGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZC5sSW5zZXJ0VG9DYW5kaWRhdGVMaXN0RmFpbGVkAAkEnENvdWxkIG5vdCBpbnNlcnQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LnRSZW1vdmVGcm9tQ2FuZGlkYXRlTGlzdEZhaWxlZAAKBKRDb3VsZCBub3QgcmVtb3ZlIGZyb20gdGhlIGNhbmRpZGF0ZSBsaXN0LjREZXBvc2l0VG9vTG93AAsE9E5ldyBkZXBvc2l0IGFtb3VudCB3b3VsZCBiZSBiZWxvdyB0aGUgbWluaW11bSBjYW5kaWRhY3kgYm9uZC5kVXBkYXRlQ2FuZGlkYXRlTGlzdEZhaWxlZAAMBJBDb3VsZCBub3QgdXBkYXRlIHRoZSBjYW5kaWRhdGUgbGlzdC5ASW5zdWZmaWNpZW50Qm9uZAANBCkBRGVwb3NpdCBhbW91bnQgaXMgdG9vIGxvdyB0byB0YWtlIHRoZSB0YXJnZXQncyBzbG90IGluIHRoZSBjYW5kaWRhdGUgbGlzdC5QVGFyZ2V0SXNOb3RDYW5kaWRhdGUADgQtAVRoZSB0YXJnZXQgYWNjb3VudCB0byBiZSByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgaXMgbm90IGEgY2FuZGlkYXRlLkBJZGVudGljYWxEZXBvc2l0AA8EDQFUaGUgdXBkYXRlZCBkZXBvc2l0IGFtb3VudCBpcyBlcXVhbCB0byB0aGUgYW1vdW50IGFscmVhZHkgcmVzZXJ2ZWQuQEludmFsaWRVbnJlc2VydmUAEAQ9AUNhbm5vdCBsb3dlciBjYW5kaWRhY3kgYm9uZCB3aGlsZSBvY2N1cHlpbmcgYSBmdXR1cmUgY29sbGF0b3Igc2xvdCBpbiB0aGUgbGlzdC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQugQUAAAKFBQCFBQAABAgEVQEAiQUAAAKNBQCNBQAABAg4kQUAkQUMKHNwX3N0YWtpbmccb2ZmZW5jZTxPZmZlbmNlU2V2ZXJpdHkAAAQAlQUBHFBlcmJpbGwAAJUFDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVyYmlsbAAABAA4AQx1MzIAAJkFAAAECJ0FGACdBQwcc3BfY29yZRhjcnlwdG8kS2V5VHlwZUlkAAAEAHABHFt1ODsgNF0AAKEFDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXJyb3IEBFQAARQwSW52YWxpZFByb29mAAAEYEludmFsaWQgb3duZXJzaGlwIHByb29mLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAABBJxObyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRCBmb3IgYWNjb3VudC40RHVwbGljYXRlZEtleQACBGRSZWdpc3RlcmVkIGR1cGxpY2F0ZSBrZXkuGE5vS2V5cwADBKRObyBrZXlzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBhY2NvdW50LiROb0FjY291bnQABAQZAUtleSBzZXR0aW5nIGFjY291bnQgaXMgbm90IGxpdmUsIHNvIGl0J3MgaW1wb3NzaWJsZSB0byBhc3NvY2lhdGUga2V5cy4EdEVycm9yIGZvciB0aGUgc2Vzc2lvbiBwYWxsZXQupQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFZAQRTAAAEAKkFARhWZWM8VD4AAKkFAAACWQEArQUISHNwX2NvbnNlbnN1c19zbG90cxBTbG90AAAEACgBDHU2NAAAsQUAAAQIrQU4ALUFDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAGcBFMAAAQAuQUBLEJUcmVlU2V0PFQ+AAC5BQQgQlRyZWVTZXQEBFQBnAAEAL0FAAAAvQUAAAKcAMEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBxQUEUwAABADNBQEYVmVjPFQ+AADFBQhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZVhPdXRib3VuZENoYW5uZWxEZXRhaWxzAAAUASRyZWNpcGllbnScARhQYXJhSWQAARRzdGF0ZckFATRPdXRib3VuZFN0YXRlAAE0c2lnbmFsc19leGlzdDEBARBib29sAAEsZmlyc3RfaW5kZXjEAQx1MTYAAShsYXN0X2luZGV4xAEMdTE2AADJBQhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTRPdXRib3VuZFN0YXRlAAEICE9rAAAAJFN1c3BlbmRlZAABAADNBQAAAsUFANEFAAAECJzEANUFDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAA2QUIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU8UXVldWVDb25maWdEYXRhAAAMAURzdXNwZW5kX3RocmVzaG9sZDgBDHUzMgABOGRyb3BfdGhyZXNob2xkOAEMdTMyAAFAcmVzdW1lX3RocmVzaG9sZDgBDHUzMgAA3QUMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEVycm9yBARUAAEUOEJhZFF1ZXVlQ29uZmlnAAAEEQFTZXR0aW5nIHRoZSBxdWV1ZSBjb25maWcgZmFpbGVkIHNpbmNlIG9uZSBvZiBpdHMgdmFsdWVzIHdhcyBpbnZhbGlkLkBBbHJlYWR5U3VzcGVuZGVkAAEEjFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSBzdXNwZW5kZWQuOEFscmVhZHlSZXN1bWVkAAIEhFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSByZXN1bWVkLnRUb29NYW55QWN0aXZlT3V0Ym91bmRDaGFubmVscwADBLBUaGVyZSBhcmUgdG9vIG1hbnkgYWN0aXZlIG91dGJvdW5kIGNoYW5uZWxzLhhUb29CaWcABARcVGhlIG1lc3NhZ2UgaXMgdG9vIGJpZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu4QUMKHBhbGxldF94Y20YcGFsbGV0LFF1ZXJ5U3RhdHVzBCxCbG9ja051bWJlcgE4AQwcUGVuZGluZxABJHJlc3BvbmRlcmUBAURWZXJzaW9uZWRMb2NhdGlvbgABTG1heWJlX21hdGNoX3F1ZXJpZXLlBQFkT3B0aW9uPFZlcnNpb25lZExvY2F0aW9uPgABMG1heWJlX25vdGlmeekFAUBPcHRpb248KHU4LCB1OCk+AAEcdGltZW91dDgBLEJsb2NrTnVtYmVyAAAAPFZlcnNpb25Ob3RpZmllcggBGG9yaWdpbmUBAURWZXJzaW9uZWRMb2NhdGlvbgABJGlzX2FjdGl2ZTEBARBib29sAAEAFFJlYWR5CAEgcmVzcG9uc2XxBQFEVmVyc2lvbmVkUmVzcG9uc2UAAQhhdDgBLEJsb2NrTnVtYmVyAAIAAOUFBBhPcHRpb24EBFQBZQEBCBBOb25lAAAAEFNvbWUEAGUBAAABAADpBQQYT3B0aW9uBARUAe0FAQgQTm9uZQAAABBTb21lBADtBQAAAQAA7QUAAAQIDAwA8QUIDHhjbURWZXJzaW9uZWRSZXNwb25zZQABDAhWMwQA4QEBMHYzOjpSZXNwb25zZQADAAhWNAQATQIBMHY0OjpSZXNwb25zZQAEAAhWNQQAmQIBMHY1OjpSZXNwb25zZQAFAAD1BQAABAg4ZQEA+QUAAAQMKCkBOAD9BQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQEGBFMAAAQABQYBGFZlYzxUPgAAAQYAAAQIZQE4AAUGAAACAQYACQYMKHBhbGxldF94Y20YcGFsbGV0VFZlcnNpb25NaWdyYXRpb25TdGFnZQABEFxNaWdyYXRlU3VwcG9ydGVkVmVyc2lvbgAAAFxNaWdyYXRlVmVyc2lvbk5vdGlmaWVycwABAFBOb3RpZnlDdXJyZW50VGFyZ2V0cwQA/QMBPE9wdGlvbjxWZWM8dTg+PgACAGhNaWdyYXRlQW5kTm90aWZ5T2xkVGFyZ2V0cwADAAANBgAABAw4BCkDABEGDChwYWxsZXRfeGNtGHBhbGxldGhSZW1vdGVMb2NrZWRGdW5naWJsZVJlY29yZAhIQ29uc3VtZXJJZGVudGlmaWVyARAwTWF4Q29uc3VtZXJzAAAQARhhbW91bnT8ARB1MTI4AAEUb3duZXJlAQFEVmVyc2lvbmVkTG9jYXRpb24AARhsb2NrZXJlAQFEVmVyc2lvbmVkTG9jYXRpb24AASRjb25zdW1lcnMVBgHQQm91bmRlZFZlYzwoQ29uc3VtZXJJZGVudGlmaWVyLCB1MTI4KSwgTWF4Q29uc3VtZXJzPgAAFQYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEZBgRTAAAEAB0GARhWZWM8VD4AABkGAAAECBD8AB0GAAACGQYAIQYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAElBgRTAAAEACkGARhWZWM8VD4AACUGAAAECPxlAQApBgAAAiUGAC0GCChwYWxsZXRfeGNtWEF1dGhvcml6ZWRBbGlhc2VzRW50cnkIGFRpY2tldAExBgxNQVgBNQYACAEgYWxpYXNlcnM5BgF4Qm91bmRlZFZlYzxPcmlnaW5BbGlhc2VyLCBNQVg+AAEYdGlja2V0MQYBGFRpY2tldAAAMQYUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQA/AEoRjo6QmFsYW5jZQAANQYMKHBhbGxldF94Y20YcGFsbGV0UE1heEF1dGhvcml6ZWRBbGlhc2VzAAAAADkGDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBPQYEUwAABABBBgEYVmVjPFQ+AAA9BgxAeGNtX3J1bnRpbWVfYXBpc0hhdXRob3JpemVkX2FsaWFzZXM0T3JpZ2luQWxpYXNlcgAACAEgbG9jYXRpb25lAQFEVmVyc2lvbmVkTG9jYXRpb24AARhleHBpcnktAwEsT3B0aW9uPHU2ND4AAEEGAAACPQYARQYMKHBhbGxldF94Y20YcGFsbGV0FEVycm9yBARUAAFwLFVucmVhY2hhYmxlAAAIXQFUaGUgZGVzaXJlZCBkZXN0aW5hdGlvbiB3YXMgdW5yZWFjaGFibGUsIGdlbmVyYWxseSBiZWNhdXNlIHRoZXJlIGlzIGEgbm8gd2F5IG9mIHJvdXRpbmcYdG8gaXQuLFNlbmRGYWlsdXJlAAEIQQFUaGVyZSB3YXMgc29tZSBvdGhlciBpc3N1ZSAoaS5lLiBub3QgdG8gZG8gd2l0aCByb3V0aW5nKSBpbiBzZW5kaW5nIHRoZSBtZXNzYWdlLshQZXJoYXBzIGEgbGFjayBvZiBzcGFjZSBmb3IgYnVmZmVyaW5nIHRoZSBtZXNzYWdlLiBGaWx0ZXJlZAACBJxUaGUgbWVzc2FnZSBleGVjdXRpb24gZmFpbHMgdGhlIGZpbHRlci5IVW53ZWlnaGFibGVNZXNzYWdlAAMEtFRoZSBtZXNzYWdlJ3Mgd2VpZ2h0IGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkLmBEZXN0aW5hdGlvbk5vdEludmVydGlibGUABATcVGhlIGRlc3RpbmF0aW9uIGBMb2NhdGlvbmAgcHJvdmlkZWQgY2Fubm90IGJlIGludmVydGVkLhRFbXB0eQAFBIBUaGUgYXNzZXRzIHRvIGJlIHNlbnQgYXJlIGVtcHR5LjhDYW5ub3RSZWFuY2hvcgAGBDUBQ291bGQgbm90IHJlLWFuY2hvciB0aGUgYXNzZXRzIHRvIGRlY2xhcmUgdGhlIGZlZXMgZm9yIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi40VG9vTWFueUFzc2V0cwAHBMRUb28gbWFueSBhc3NldHMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuNEludmFsaWRPcmlnaW4ACAR4T3JpZ2luIGlzIGludmFsaWQgZm9yIHNlbmRpbmcuKEJhZFZlcnNpb24ACQQhAVRoZSB2ZXJzaW9uIG9mIHRoZSBgVmVyc2lvbmVkYCB2YWx1ZSB1c2VkIGlzIG5vdCBhYmxlIHRvIGJlIGludGVycHJldGVkLixCYWRMb2NhdGlvbgAKCEEBVGhlIGdpdmVuIGxvY2F0aW9uIGNvdWxkIG5vdCBiZSB1c2VkIChlLmcuIGJlY2F1c2UgaXQgY2Fubm90IGJlIGV4cHJlc3NlZCBpbiB0aGVgZGVzaXJlZCB2ZXJzaW9uIG9mIFhDTSkuOE5vU3Vic2NyaXB0aW9uAAsEvFRoZSByZWZlcmVuY2VkIHN1YnNjcmlwdGlvbiBjb3VsZCBub3QgYmUgZm91bmQuREFscmVhZHlTdWJzY3JpYmVkAAwEEQFUaGUgbG9jYXRpb24gaXMgaW52YWxpZCBzaW5jZSBpdCBhbHJlYWR5IGhhcyBhIHN1YnNjcmlwdGlvbiBmcm9tIHVzLlhDYW5ub3RDaGVja091dFRlbGVwb3J0AA0EKQFDb3VsZCBub3QgY2hlY2stb3V0IHRoZSBhc3NldHMgZm9yIHRlbGVwb3J0YXRpb24gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluLihMb3dCYWxhbmNlAA4EQQFUaGUgb3duZXIgZG9lcyBub3Qgb3duIChhbGwpIG9mIHRoZSBhc3NldCB0aGF0IHRoZXkgd2lzaCB0byBkbyB0aGUgb3BlcmF0aW9uIG9uLjBUb29NYW55TG9ja3MADwTAVGhlIGFzc2V0IG93bmVyIGhhcyB0b28gbWFueSBsb2NrcyBvbiB0aGUgYXNzZXQuTEFjY291bnROb3RTb3ZlcmVpZ24AEAQxAVRoZSBnaXZlbiBhY2NvdW50IGlzIG5vdCBhbiBpZGVudGlmaWFibGUgc292ZXJlaWduIGFjY291bnQgZm9yIGFueSBsb2NhdGlvbi4oRmVlc05vdE1ldAARBCkBVGhlIG9wZXJhdGlvbiByZXF1aXJlZCBmZWVzIHRvIGJlIHBhaWQgd2hpY2ggdGhlIGluaXRpYXRvciBjb3VsZCBub3QgbWVldC4wTG9ja05vdEZvdW5kABIE9EEgcmVtb3RlIGxvY2sgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBkYXRhIGNvdWxkIG5vdCBiZSBmb3VuZC4USW5Vc2UAEwRJAVRoZSB1bmxvY2sgb3BlcmF0aW9uIGNhbm5vdCBzdWNjZWVkIGJlY2F1c2UgdGhlcmUgYXJlIHN0aWxsIGNvbnN1bWVycyBvZiB0aGUgbG9jay5oSW52YWxpZEFzc2V0VW5rbm93blJlc2VydmUAFQTwSW52YWxpZCBhc3NldCwgcmVzZXJ2ZSBjaGFpbiBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBmb3IgaXQueEludmFsaWRBc3NldFVuc3VwcG9ydGVkUmVzZXJ2ZQAWBEUBSW52YWxpZCBhc3NldCwgZG8gbm90IHN1cHBvcnQgcmVtb3RlIGFzc2V0IHJlc2VydmVzIHdpdGggZGlmZmVyZW50IGZlZXMgcmVzZXJ2ZXMuPFRvb01hbnlSZXNlcnZlcwAXBEkBVG9vIG1hbnkgYXNzZXRzIHdpdGggZGlmZmVyZW50IHJlc2VydmUgbG9jYXRpb25zIGhhdmUgYmVlbiBhdHRlbXB0ZWQgZm9yIHRyYW5zZmVyLmBMb2NhbEV4ZWN1dGlvbkluY29tcGxldGUAGAR8TG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlLmBUb29NYW55QXV0aG9yaXplZEFsaWFzZXMAGQS4VG9vIG1hbnkgbG9jYXRpb25zIGF1dGhvcml6ZWQgdG8gYWxpYXMgb3JpZ2luLjRFeHBpcmVzSW5QYXN0ABoEjEV4cGlyeSBibG9jayBudW1iZXIgaXMgaW4gdGhlIHBhc3QuNEFsaWFzTm90Rm91bmQAGwTQVGhlIGFsaWFzIHRvIHJlbW92ZSBhdXRob3JpemF0aW9uIGZvciB3YXMgbm90IGZvdW5kLoRMb2NhbEV4ZWN1dGlvbkluY29tcGxldGVXaXRoRXJyb3IIARRpbmRleAwBQEluc3RydWN0aW9uSW5kZXgAARRlcnJvckkGAThFeGVjdXRpb25FcnJvcgAcCDUBTG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlIHdpdGggdGhlIGFjdHVhbCBYQ00gZXJyb3IgYW5kIHRoZSBpbmRleCBvZiB0aGWIaW5zdHJ1Y3Rpb24gdGhhdCBjYXVzZWQgdGhlIGVycm9yLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5JBgwocGFsbGV0X3hjbRhlcnJvcnM4RXhlY3V0aW9uRXJyb3IAAaQgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiADRUb29NYW55QXNzZXRzACMATFVuaGFuZGxlZFhjbVZlcnNpb24AJABIV2VpZ2h0TGltaXRSZWFjaGVkACUAHEJhcnJpZXIAJgBMV2VpZ2h0Tm90Q29tcHV0YWJsZQAnAERFeGNlZWRzU3RhY2tMaW1pdAAoAABNBghQcGFsbGV0X21lc3NhZ2VfcXVldWUkQm9va1N0YXRlBDRNZXNzYWdlT3JpZ2luATkDABgBFGJlZ2luOAEkUGFnZUluZGV4AAEMZW5kOAEkUGFnZUluZGV4AAEUY291bnQ4ASRQYWdlSW5kZXgAAUByZWFkeV9uZWlnaGJvdXJzUQYBhE9wdGlvbjxOZWlnaGJvdXJzPE1lc3NhZ2VPcmlnaW4+PgABNG1lc3NhZ2VfY291bnQoAQx1NjQAARBzaXplKAEMdTY0AABRBgQYT3B0aW9uBARUAVUGAQgQTm9uZQAAABBTb21lBABVBgAAAQAAVQYIUHBhbGxldF9tZXNzYWdlX3F1ZXVlKE5laWdoYm91cnMENE1lc3NhZ2VPcmlnaW4BOQMACAEQcHJldjkDATRNZXNzYWdlT3JpZ2luAAEQbmV4dDkDATRNZXNzYWdlT3JpZ2luAABZBgAABAg5AzgAXQYIUHBhbGxldF9tZXNzYWdlX3F1ZXVlEFBhZ2UIEFNpemUBOCBIZWFwU2l6ZQAAGAEkcmVtYWluaW5nOAEQU2l6ZQABOHJlbWFpbmluZ19zaXplOAEQU2l6ZQABLGZpcnN0X2luZGV4OAEQU2l6ZQABFGZpcnN0OAEQU2l6ZQABEGxhc3Q4ARBTaXplAAEQaGVhcGEGAZxCb3VuZGVkVmVjPHU4LCBJbnRvVTMyPEhlYXBTaXplLCBTaXplPj4AAGEGDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAZQYMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFcnJvcgQEVAABJCxOb3RSZWFwYWJsZQAACEkBUGFnZSBpcyBub3QgcmVhcGFibGUgYmVjYXVzZSBpdCBoYXMgaXRlbXMgcmVtYWluaW5nIHRvIGJlIHByb2Nlc3NlZCBhbmQgaXMgbm90IG9sZBxlbm91Z2guGE5vUGFnZQABBIRQYWdlIHRvIGJlIHJlYXBlZCBkb2VzIG5vdCBleGlzdC4kTm9NZXNzYWdlAAIEqFRoZSByZWZlcmVuY2VkIG1lc3NhZ2UgY291bGQgbm90IGJlIGZvdW5kLkBBbHJlYWR5UHJvY2Vzc2VkAAMEAQFUaGUgbWVzc2FnZSB3YXMgYWxyZWFkeSBwcm9jZXNzZWQgYW5kIGNhbm5vdCBiZSBwcm9jZXNzZWQgYWdhaW4uGFF1ZXVlZAAEBKxUaGUgbWVzc2FnZSBpcyBxdWV1ZWQgZm9yIGZ1dHVyZSBleGVjdXRpb24uSEluc3VmZmljaWVudFdlaWdodAAFBBkBVGhlcmUgaXMgdGVtcG9yYXJpbHkgbm90IGVub3VnaCB3ZWlnaHQgdG8gY29udGludWUgc2VydmljaW5nIG1lc3NhZ2VzLmBUZW1wb3JhcmlseVVucHJvY2Vzc2FibGUABhCoVGhpcyBtZXNzYWdlIGlzIHRlbXBvcmFyaWx5IHVucHJvY2Vzc2FibGUuAFkBU3VjaCBlcnJvcnMgYXJlIGV4cGVjdGVkLCBidXQgbm90IGd1YXJhbnRlZWQsIHRvIHJlc29sdmUgdGhlbXNlbHZlcyBldmVudHVhbGx5IHRocm91Z2gkcmV0cnlpbmcuLFF1ZXVlUGF1c2VkAAcM7FRoZSBxdWV1ZSBpcyBwYXVzZWQgYW5kIG5vIG1lc3NhZ2UgY2FuIGJlIGV4ZWN1dGVkIGZyb20gaXQuAB0BVGhpcyBjYW4gY2hhbmdlIGF0IGFueSB0aW1lIGFuZCBtYXkgcmVzb2x2ZSBpbiB0aGUgZnV0dXJlIGJ5IHJlLXRyeWluZy5MUmVjdXJzaXZlRGlzYWxsb3dlZAAIBDEBQW5vdGhlciBjYWxsIGlzIGluIHByb2dyZXNzIGFuZCBuZWVkcyB0byBmaW5pc2ggYmVmb3JlIHRoaXMgY2FsbCBjYW4gaGFwcGVuLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5pBgwscGFsbGV0X3N1ZG8YcGFsbGV0FEVycm9yBARUAAEELFJlcXVpcmVTdWRvAAAEgFNlbmRlciBtdXN0IGJlIHRoZSBTdWRvIGFjY291bnQuBGhFcnJvciBmb3IgdGhlIFN1ZG8gcGFsbGV0Lm0GCEhzcF9jb25zZW5zdXNfc2xvdHMwU2xvdER1cmF0aW9uAAAEACgBDHU2NAAAcQYQKHNwX3J1bnRpbWUcZ2VuZXJpYxRibG9jayRMYXp5QmxvY2sIGEhlYWRlcgFcJEV4dHJpbnNpYwGFBAAIARhoZWFkZXJcARhIZWFkZXIAAShleHRyaW5zaWNzdQYBUFZlYzxPcGFxdWVFeHRyaW5zaWM+AAB1BgAAAnkGAHkGCChzcF9ydW50aW1lPE9wYXF1ZUV4dHJpbnNpYwAABAAYARxWZWM8dTg+AAB9Bggoc3BfcnVudGltZVhFeHRyaW5zaWNJbmNsdXNpb25Nb2RlAAEINEFsbEV4dHJpbnNpY3MAAAA0T25seUluaGVyZW50cwABAACBBggcc3BfY29yZThPcGFxdWVNZXRhZGF0YQAABAAYARxWZWM8dTg+AACFBgQYT3B0aW9uBARUAYEGAQgQTm9uZQAAABBTb21lBACBBgAAAQAAiQYAAAI4AI0GBBhSZXN1bHQIBFQB0QMERQGRBgEICE9rBADRAwAAAAAMRXJyBACRBgAAAQAAkQYMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlgVHJhbnNhY3Rpb25WYWxpZGl0eUVycm9yAAEIHEludmFsaWQEAJUGAUhJbnZhbGlkVHJhbnNhY3Rpb24AAAAcVW5rbm93bgQAmQYBSFVua25vd25UcmFuc2FjdGlvbgABAACVBgwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhJbnZhbGlkVHJhbnNhY3Rpb24AATQQQ2FsbAAAABxQYXltZW50AAEAGEZ1dHVyZQACABRTdGFsZQADACBCYWRQcm9vZgAEAERBbmNpZW50QmlydGhCbG9jawAFAERFeGhhdXN0c1Jlc291cmNlcwAGABhDdXN0b20EAAwBCHU4AAcAMEJhZE1hbmRhdG9yeQAIAExNYW5kYXRvcnlWYWxpZGF0aW9uAAkAJEJhZFNpZ25lcgAKAFRJbmRldGVybWluYXRlSW1wbGljaXQACwA0VW5rbm93bk9yaWdpbgAMAACZBgwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhVbmtub3duVHJhbnNhY3Rpb24AAQwwQ2Fubm90TG9va3VwAAAATE5vVW5zaWduZWRWYWxpZGF0b3IAAQAYQ3VzdG9tBAAMAQh1OAACAACdBggwc3BfaW5oZXJlbnRzMEluaGVyZW50RGF0YQAABAEQZGF0YaEGAZRCVHJlZU1hcDxJbmhlcmVudElkZW50aWZpZXIsIFZlYzx1OD4+AAChBgQgQlRyZWVNYXAIBEsB2QEEVgEYAAQApQYAAAClBgAAAqkGAKkGAAAECNkBGACtBggwc3BfaW5oZXJlbnRzUENoZWNrSW5oZXJlbnRzUmVzdWx0AAAMARBva2F5MQEBEGJvb2wAASxmYXRhbF9lcnJvcjEBARBib29sAAEYZXJyb3JznQYBMEluaGVyZW50RGF0YQAAsQYMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlEVHJhbnNhY3Rpb25Tb3VyY2UAAQwcSW5CbG9jawAAABRMb2NhbAABACBFeHRlcm5hbAACAAC1BgQYUmVzdWx0CARUAbkGBEUBkQYBCAhPawQAuQYAAAAADEVycgQAkQYAAAEAALkGDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5QFZhbGlkVHJhbnNhY3Rpb24AABQBIHByaW9yaXR5KAFMVHJhbnNhY3Rpb25Qcmlvcml0eQABIHJlcXVpcmVzNAFMVmVjPFRyYW5zYWN0aW9uVGFnPgABIHByb3ZpZGVzNAFMVmVjPFRyYW5zYWN0aW9uVGFnPgABJGxvbmdldml0eSgBUFRyYW5zYWN0aW9uTG9uZ2V2aXR5AAEkcHJvcGFnYXRlMQEBEGJvb2wAAL0GDChzcF9zZXNzaW9uLHJ1bnRpbWVfYXBpaE9wYXF1ZUdlbmVyYXRlZFNlc3Npb25LZXlzAAAIARBrZXlzGAEcVmVjPHU4PgABFHByb29mGAEcVmVjPHU4PgAAwQYEGE9wdGlvbgQEVAHFBgEIEE5vbmUAAAAQU29tZQQAxQYAAAEAAMUGAAACyQYAyQYAAAQIGJ0FAM0GDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlc0xSdW50aW1lRGlzcGF0Y2hJbmZvCBxCYWxhbmNlAfwYV2VpZ2h0ASkBAAwBGHdlaWdodCkBARhXZWlnaHQAARRjbGFzc6kDATREaXNwYXRjaENsYXNzAAEscGFydGlhbF9mZWX8ARxCYWxhbmNlAADRBgxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXMoRmVlRGV0YWlscwQcQmFsYW5jZQH8AAgBNGluY2x1c2lvbl9mZWXVBgF0T3B0aW9uPEluY2x1c2lvbkZlZTxCYWxhbmNlPj4AAQx0aXD8ARxCYWxhbmNlAADVBgQYT3B0aW9uBARUAdkGAQgQTm9uZQAAABBTb21lBADZBgAAAQAA2QYMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzMEluY2x1c2lvbkZlZQQcQmFsYW5jZQH8AAwBIGJhc2VfZmVl/AEcQmFsYW5jZQABHGxlbl9mZWX8ARxCYWxhbmNlAAFMYWRqdXN0ZWRfd2VpZ2h0X2ZlZfwBHEJhbGFuY2UAAN0GBBhSZXN1bHQIBFQB4QYERQHlBgEICE9rBADhBgAAAAAMRXJyBADlBgAAAQAA4QYAAAIpAwDlBgxAeGNtX3J1bnRpbWVfYXBpcxBmZWVzFEVycm9yAAEYNFVuaW1wbGVtZW50ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAExXZWlnaHROb3RDb21wdXRhYmxlAAIATFVuaGFuZGxlZFhjbVZlcnNpb24AAwA0QXNzZXROb3RGb3VuZAAEAChVbnJvdXRhYmxlAAUAAOkGBBhSZXN1bHQIBFQBKQEERQHlBgEICE9rBAApAQAAAAAMRXJyBADlBgAAAQAA7QYEGFJlc3VsdAgEVAH8BEUB5QYBCAhPawQA/AAAAAAMRXJyBADlBgAAAQAA8QYEGFJlc3VsdAgEVAHxAgRFAeUGAQgIT2sEAPECAAAAAAxFcnIEAOUGAAABAAD1BgQYUmVzdWx0CARUAfkGBEUBHQcBCAhPawQA+QYAAAAADEVycgQAHQcAAAEAAPkGDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5EQ2FsbERyeVJ1bkVmZmVjdHMEFEV2ZW50AZ0DABABQGV4ZWN1dGlvbl9yZXN1bHT9BgFoRGlzcGF0Y2hSZXN1bHRXaXRoUG9zdEluZm8AAThlbWl0dGVkX2V2ZW50cwkHAShWZWM8RXZlbnQ+AAEkbG9jYWxfeGNtDQcBYE9wdGlvbjxWZXJzaW9uZWRYY208KCk+PgABOGZvcndhcmRlZF94Y21zEQcBvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AAD9BgQYUmVzdWx0CARUAQEHBEUBBQcBCAhPawQAAQcAAAAADEVycgQABQcAAAEAAAEHDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBvc3REaXNwYXRjaEluZm8AAAgBNGFjdHVhbF93ZWlnaHS9AgE4T3B0aW9uPFdlaWdodD4AASBwYXlzX2ZlZa0DARBQYXlzAAAFBwgoc3BfcnVudGltZWREaXNwYXRjaEVycm9yV2l0aFBvc3RJbmZvBBBJbmZvAQEHAAgBJHBvc3RfaW5mbwEHARBJbmZvAAEUZXJyb3KxAwE0RGlzcGF0Y2hFcnJvcgAACQcAAAKdAwANBwQYT3B0aW9uBARUAbEBAQgQTm9uZQAAABBTb21lBACxAQAAAQAAEQcAAAIVBwAVBwAABAhlARkHABkHAAACsQEAHQcMQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bhRFcnJvcgABCDRVbmltcGxlbWVudGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQAAIQcEGFJlc3VsdAgEVAElBwRFAR0HAQgIT2sEACUHAAAAAAxFcnIEAB0HAAABAAAlBwxAeGNtX3J1bnRpbWVfYXBpcxxkcnlfcnVuQFhjbURyeVJ1bkVmZmVjdHMEFEV2ZW50AZ0DAAwBQGV4ZWN1dGlvbl9yZXN1bHQRBAEcT3V0Y29tZQABOGVtaXR0ZWRfZXZlbnRzCQcBKFZlYzxFdmVudD4AAThmb3J3YXJkZWRfeGNtcxEHAbxWZWM8KFZlcnNpb25lZExvY2F0aW9uLCBWZWM8VmVyc2lvbmVkWGNtPCgpPj4pPgAAKQcEGFJlc3VsdAgEVAEEBEUBLQcBCAhPawQABAAAAAAMRXJyBAAtBwAAAQAALQcMQHhjbV9ydW50aW1lX2FwaXMsY29udmVyc2lvbnMURXJyb3IAAQgsVW5zdXBwb3J0ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAAAxBwgMeGNtOFZlcnNpb25lZEFzc2V0AAEMCFYzBADJAQE4djM6Ok11bHRpQXNzZXQAAwAIVjQEAD0CASR2NDo6QXNzZXQABAAIVjUEAIkCASR2NTo6QXNzZXQABQAANQcEGFJlc3VsdAgEVAExAQRFATkHAQgIT2sEADEBAAAAAAxFcnIEADkHAAABAAA5BwxAeGNtX3J1bnRpbWVfYXBpczR0cnVzdGVkX3F1ZXJ5FEVycm9yAAEIeFZlcnNpb25lZEFzc2V0Q29udmVyc2lvbkZhaWxlZAAAAIRWZXJzaW9uZWRMb2NhdGlvbkNvbnZlcnNpb25GYWlsZWQAAQAAPQcEGFJlc3VsdAgEVAFBBgRFAUEHAQgIT2sEAEEGAAAAAAxFcnIEAEEHAAABAABBBwxAeGNtX3J1bnRpbWVfYXBpc0hhdXRob3JpemVkX2FsaWFzZXMURXJyb3IAAQR8TG9jYXRpb25WZXJzaW9uQ29udmVyc2lvbkZhaWxlZAAAAABFBwQYUmVzdWx0CARUATEBBEUBQQcBCAhPawQAMQEAAAAADEVycgQAQQcAAAEAAEkHCFxjdW11bHVzX3ByaW1pdGl2ZXNfY29yZTRDb2xsYXRpb25JbmZvAAAYATx1cHdhcmRfbWVzc2FnZXM0AUhWZWM8VXB3YXJkTWVzc2FnZT4AAUxob3Jpem9udGFsX21lc3NhZ2Vz+QQBYFZlYzxPdXRib3VuZEhybXBNZXNzYWdlPgABTG5ld192YWxpZGF0aW9uX2NvZGVNBwGMT3B0aW9uPHJlbGF5X2NoYWluOjpWYWxpZGF0aW9uQ29kZT4AAWxwcm9jZXNzZWRfZG93bndhcmRfbWVzc2FnZXM4AQx1MzIAAThocm1wX3dhdGVybWFyazgBYHJlbGF5X2NoYWluOjpCbG9ja051bWJlcgABJGhlYWRfZGF0YUwBIEhlYWREYXRhAABNBwQYT3B0aW9uBARUAVEHAQgQTm9uZQAAABBTb21lBABRBwAAAQAAUQcMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXM4VmFsaWRhdGlvbkNvZGUAAAQAGAEcVmVjPHU4PgAAVQcEGFJlc3VsdAgEVAEQBEUBSQQBCAhPawQAEAAAAAAMRXJyBABJBAAAAQAAWQcEGE9wdGlvbgQEVAFJBAEIEE5vbmUAAAAQU29tZQQASQQAAAEAAF0HAAACSQQAYQcIYGJ1bGxldGluX3dlc3RlbmRfcnVudGltZTBSdW50aW1lRXJyb3IAASwYU3lzdGVtBAB5BAFwZnJhbWVfc3lzdGVtOjpFcnJvcjxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAAUFAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFcnJvcjxSdW50aW1lPgABABxVdGlsaXR5BAAJBQF4cGFsbGV0X3V0aWxpdHk6OkVycm9yPFJ1bnRpbWU+AAYAIEJhbGFuY2VzBABBBQF8cGFsbGV0X2JhbGFuY2VzOjpFcnJvcjxSdW50aW1lPgAKAEhUcmFuc2FjdGlvblN0b3JhZ2UEAGUFAahwYWxsZXRfdHJhbnNhY3Rpb25fc3RvcmFnZTo6RXJyb3I8UnVudGltZT4AKABEQ29sbGF0b3JTZWxlY3Rpb24EAH0FAaRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uOjpFcnJvcjxSdW50aW1lPgAVABxTZXNzaW9uBAChBQF4cGFsbGV0X3Nlc3Npb246OkVycm9yPFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQA3QUBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkVycm9yPFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBABFBgFocGFsbGV0X3hjbTo6RXJyb3I8UnVudGltZT4AHwAwTWVzc2FnZVF1ZXVlBABlBgGQcGFsbGV0X21lc3NhZ2VfcXVldWU6OkVycm9yPFJ1bnRpbWU+ACIAEFN1ZG8EAGkGAWxwYWxsZXRfc3Vkbzo6RXJyb3I8UnVudGltZT4AZAAAUBhTeXN0ZW0BGFN5c3RlbUwcQWNjb3VudAEBBAIEhQNBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACABOggVGhlIGZ1bGwgYWNjb3VudCBpbmZvcm1hdGlvbiBmb3IgYSBwYXJ0aWN1bGFyIGFjY291bnQgSUQuADhFeHRyaW5zaWNDb3VudAAAOAQABLggVG90YWwgZXh0cmluc2ljcyBjb3VudCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suAEBJbmhlcmVudHNBcHBsaWVkAQAxAQQABKQgV2hldGhlciBhbGwgaW5oZXJlbnRzIGhhdmUgYmVlbiBhcHBsaWVkLgAsQmxvY2tXZWlnaHQBAJEDGAAAAAAAAASIIFRoZSBjdXJyZW50IHdlaWdodCBmb3IgdGhlIGJsb2NrLgAkQmxvY2tTaXplAAA4BAAMsCBUb3RhbCBzaXplIChpbiBieXRlcykgb2YgdGhlIGN1cnJlbnQgYmxvY2suAMggVHJhY2tzIHRoZSBzaXplIG9mIHRoZSBoZWFkZXIgYW5kIGFsbCBleHRyaW5zaWNzLgAkQmxvY2tIYXNoAQEEBTg8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJggTWFwIG9mIGJsb2NrIG51bWJlcnMgdG8gYmxvY2sgaGFzaGVzLgA0RXh0cmluc2ljRGF0YQEBBAU4GAQABD0BIEV4dHJpbnNpY3MgZGF0YSBmb3IgdGhlIGN1cnJlbnQgYmxvY2sgKG1hcHMgYW4gZXh0cmluc2ljJ3MgaW5kZXggdG8gaXRzIGRhdGEpLgAYTnVtYmVyAQA4EAAAAAAECQEgVGhlIGN1cnJlbnQgYmxvY2sgbnVtYmVyIGJlaW5nIHByb2Nlc3NlZC4gU2V0IGJ5IGBleGVjdXRlX2Jsb2NrYC4AKFBhcmVudEhhc2gBADyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEcCBIYXNoIG9mIHRoZSBwcmV2aW91cyBibG9jay4AGERpZ2VzdAEAZAQABPAgRGlnZXN0IG9mIHRoZSBjdXJyZW50IGJsb2NrLCBhbHNvIHBhcnQgb2YgdGhlIGJsb2NrIGhlYWRlci4AGEV2ZW50cwEAlQMEABygIEV2ZW50cyBkZXBvc2l0ZWQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgAdASBOT1RFOiBUaGUgaXRlbSBpcyB1bmJvdW5kIGFuZCBzaG91bGQgdGhlcmVmb3JlIG5ldmVyIGJlIHJlYWQgb24gY2hhaW4u0CBJdCBjb3VsZCBvdGhlcndpc2UgaW5mbGF0ZSB0aGUgUG9WIHNpemUgb2YgYSBibG9jay4ALQEgRXZlbnRzIGhhdmUgYSBsYXJnZSBpbi1tZW1vcnkgc2l6ZS4gQm94IHRoZSBldmVudHMgdG8gbm90IGdvIG91dC1vZi1tZW1vcnn8IGp1c3QgaW4gY2FzZSBzb21lb25lIHN0aWxsIHJlYWRzIHRoZW0gZnJvbSB3aXRoaW4gdGhlIHJ1bnRpbWUuAChFdmVudENvdW50AQA4EAAAAAAEuCBUaGUgbnVtYmVyIG9mIGV2ZW50cyBpbiB0aGUgYEV2ZW50czxUPmAgbGlzdC4ALEV2ZW50VG9waWNzAQEEAjw5BAQAKCUBIE1hcHBpbmcgYmV0d2VlbiBhIHRvcGljIChyZXByZXNlbnRlZCBieSBUOjpIYXNoKSBhbmQgYSB2ZWN0b3Igb2YgaW5kZXhlc5Qgb2YgZXZlbnRzIGluIHRoZSBgPEV2ZW50czxUPj5gIGxpc3QuAFEBIEFsbCB0b3BpYyB2ZWN0b3JzIGhhdmUgZGV0ZXJtaW5pc3RpYyBzdG9yYWdlIGxvY2F0aW9ucyBkZXBlbmRpbmcgb24gdGhlIHRvcGljLiBUaGlzRQEgYWxsb3dzIGxpZ2h0LWNsaWVudHMgdG8gbGV2ZXJhZ2UgdGhlIGNoYW5nZXMgdHJpZSBzdG9yYWdlIHRyYWNraW5nIG1lY2hhbmlzbSBhbmTkIGluIGNhc2Ugb2YgY2hhbmdlcyBmZXRjaCB0aGUgbGlzdCBvZiBldmVudHMgb2YgaW50ZXJlc3QuAFkBIFRoZSB2YWx1ZSBoYXMgdGhlIHR5cGUgYChCbG9ja051bWJlckZvcjxUPiwgRXZlbnRJbmRleClgIGJlY2F1c2UgaWYgd2UgdXNlZCBvbmx5IGp1c3RNASB0aGUgYEV2ZW50SW5kZXhgIHRoZW4gaW4gY2FzZSBpZiB0aGUgdG9waWMgaGFzIHRoZSBzYW1lIGNvbnRlbnRzIG9uIHRoZSBuZXh0IGJsb2NrAQEgbm8gbm90aWZpY2F0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkIHRodXMgdGhlIGV2ZW50IG1pZ2h0IGJlIGxvc3QuAEhMYXN0UnVudGltZVVwZ3JhZGUAAEEEBAAEVQEgU3RvcmVzIHRoZSBgc3BlY192ZXJzaW9uYCBhbmQgYHNwZWNfbmFtZWAgb2Ygd2hlbiB0aGUgbGFzdCBydW50aW1lIHVwZ3JhZGUgaGFwcGVuZWQuAFRVcGdyYWRlZFRvVTMyUmVmQ291bnQBADEBBAAETQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgYHR5cGUgUmVmQ291bnRgIGlzIGB1MzJgLiBGYWxzZSAoZGVmYXVsdCkgaWYgbm90LgBgVXBncmFkZWRUb1RyaXBsZVJlZkNvdW50AQAxAQQACF0BIFRydWUgaWYgd2UgaGF2ZSB1cGdyYWRlZCBzbyB0aGF0IEFjY291bnRJbmZvIGNvbnRhaW5zIHRocmVlIHR5cGVzIG9mIGBSZWZDb3VudGAuIEZhbHNlSCAoZGVmYXVsdCkgaWYgbm90LgA4RXhlY3V0aW9uUGhhc2UAADEEBAAEiCBUaGUgZXhlY3V0aW9uIHBoYXNlIG9mIHRoZSBibG9jay4AREF1dGhvcml6ZWRVcGdyYWRlAABNBAQABLggYFNvbWVgIGlmIGEgY29kZSB1cGdyYWRlIGhhcyBiZWVuIGF1dGhvcml6ZWQuAGBFeHRyaW5zaWNXZWlnaHRSZWNsYWltZWQBACkBCAAAHKAgVGhlIHdlaWdodCByZWNsYWltZWQgZm9yIHRoZSBleHRyaW5zaWMuACEBIFRoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIHVudGlsIHRoZSBlbmQgb2YgdGhlIGV4dHJpbnNpYyBleGVjdXRpb24uIQEgTW9yZSBwcmVjaXNlbHkgdGhpcyBpbmZvcm1hdGlvbiBpcyByZW1vdmVkIGluIGBub3RlX2FwcGxpZWRfZXh0cmluc2ljYC4AcQEgTG9naWMgZG9pbmcgc29tZSBwb3N0IGRpc3BhdGNoIHdlaWdodCByZWR1Y3Rpb24gbXVzdCB1cGRhdGUgdGhpcyBzdG9yYWdlIHRvIGF2b2lkIGR1cGxpY2F0ZSwgcmVkdWN0aW9uLgABJAABoQMAGDBCbG9ja1dlaWdodHNRBIkBBwDyBSoBAAsAIEqp0QECAIACAmXNHQABC8AOcsiLAQIAIAIBCwBQXBijAQIAQAIBAAACZc0dAAELwN5fWboBAgBgAgELACBKqdEBAgCAAgEHANDtkC4CAEAAAmXNHQAAAAAE0CBCbG9jayAmIGV4dHJpbnNpY3Mgd2VpZ2h0czogYmFzZSB2YWx1ZXMgYW5kIGxpbWl0cy4ALEJsb2NrTGVuZ3RoXQQ0AACQAAAAoAAAAKAAAASoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIGJsb2NrIChpbiBieXRlcykuADhCbG9ja0hhc2hDb3VudDgQABAAAARVASBNYXhpbXVtIG51bWJlciBvZiBibG9jayBudW1iZXIgdG8gYmxvY2sgaGFzaCBtYXBwaW5ncyB0byBrZWVwIChvbGRlc3QgcHJ1bmVkIGZpcnN0KS4AIERiV2VpZ2h0ZQRAQHh9AQAAAAAA4fUFAAAAAAQJASBUaGUgd2VpZ2h0IG9mIHJ1bnRpbWUgZGF0YWJhc2Ugb3BlcmF0aW9ucyB0aGUgcnVudGltZSBjYW4gaW52b2tlLgAcVmVyc2lvbmkEwQRAYnVsbGV0aW4td2VzdGVuZEBidWxsZXRpbi13ZXN0ZW5kAQAAAEpCDwABAAAAVN1xjVzFMmLUAQAAAATnBSGg09L4AQAAANe92KJyyg1lAgAAAN9qy2iZB2CbBQAAADfjl/x8kfXkAgAAAED+OtQB+JWaBgAAANK8mJfu0I8VAwAAAPeLJ4vlP0VMAgAAAKs8BXIpH+uLAgAAALydiZBPW5I/AQAAADfIuxNQqaKoBAAAAPP/FNWrUnBZAwAAAG/1LuhY5sW9AgAAAJGxyLFjKOuSAgAAAJ/7UFqnONacAQAAACYJvoOsRGjcAQAAABLI49TX4G3gAQAAAOqT4/FvPWliAwAAADsc/EQN0j9JAQAAAPvFd7nXR+/WAQAAAKLdtqWEd79jAQAAAAEAAAABBIQgR2V0IHRoZSBjaGFpbidzIGluLWNvZGUgdmVyc2lvbi4AKFNTNThQcmVmaXjECCoAFKggVGhlIGRlc2lnbmF0ZWQgU1M1OCBwcmVmaXggb2YgdGhpcyBjaGFpbi4AOQEgVGhpcyByZXBsYWNlcyB0aGUgInNzNThGb3JtYXQiIHByb3BlcnR5IGRlY2xhcmVkIGluIHRoZSBjaGFpbiBzcGVjLiBSZWFzb24gaXMxASB0aGF0IHRoZSBydW50aW1lIHNob3VsZCBrbm93IGFib3V0IHRoZSBwcmVmaXggaW4gb3JkZXIgdG8gbWFrZSB1c2Ugb2YgaXQgYXNwIGFuIGlkZW50aWZpZXIgb2YgdGhlIGNoYWluLgABeQQAHCxSdW50aW1lQ2FsbCAEjCBUaGUgYWdncmVnYXRlZCBgUnVudGltZUNhbGxgIHR5cGUuFE5vbmNlOARJASBUaGlzIHN0b3JlcyB0aGUgbnVtYmVyIG9mIHByZXZpb3VzIHRyYW5zYWN0aW9ucyBhc3NvY2lhdGVkIHdpdGggYSBzZW5kZXIgYWNjb3VudC4QSGFzaDwEmCBUaGUgb3V0cHV0IG9mIHRoZSBgSGFzaGluZ2AgZnVuY3Rpb24uHEhhc2hpbmd9BAQhASBUaGUgaGFzaGluZyBzeXN0ZW0gKGFsZ29yaXRobSkgYmVpbmcgdXNlZCBpbiB0aGUgcnVudGltZSAoZS5nLiBCbGFrZTIpLiRBY2NvdW50SWQEBMggVGhlIHVzZXIgYWNjb3VudCBpZGVudGlmaWVyIHR5cGUgZm9yIHRoZSBydW50aW1lLhRCbG9ja4EECGEBIFRoZSBCbG9jayB0eXBlIHVzZWQgYnkgdGhlIHJ1bnRpbWUuIFRoaXMgaXMgdXNlZCBieSBgY29uc3RydWN0X3J1bnRpbWVgIHRvIHJldHJpZXZlIHRoZcwgZXh0cmluc2ljcyBvciBvdGhlciBibG9jayBzcGVjaWZpYyBkYXRhIGFzIG5lZWRlZC4sQWNjb3VudERhdGGJAwhhASBEYXRhIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCBhbiBhY2NvdW50IChvdGhlciB0aGFuIG5vbmNlL3RyYW5zYWN0aW9uIGNvdW50ZXIsIHdoaWNoIHRoaXNkIHBhbGxldCBkb2VzIHJlZ2FyZGxlc3MpLgAAAAA8UGFyYWNoYWluU3lzdGVtATxQYXJhY2hhaW5TeXN0ZW1sRFVuaW5jbHVkZWRTZWdtZW50AQCVBAQAGEkBIExhdGVzdCBpbmNsdWRlZCBibG9jayBkZXNjZW5kYW50cyB0aGUgcnVudGltZSBhY2NlcHRlZC4gSW4gb3RoZXIgd29yZHMsIHRoZXNlIGFyZWEBIGFuY2VzdG9ycyBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBibG9jayB3aGljaCBoYXZlIG5vdCBiZWVuIGluY2x1ZGVkIGluIHRoZSBvYnNlcnZlZEwgcmVsYXktY2hhaW4gc3RhdGUuAHUBIFRoZSBzZWdtZW50IGxlbmd0aCBpcyBsaW1pdGVkIGJ5IHRoZSBjYXBhY2l0eSByZXR1cm5lZCBmcm9tIHRoZSBbYENvbnNlbnN1c0hvb2tgXSBjb25maWd1cmVkPCBpbiB0aGUgcGFsbGV0LgBsQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50AAC9BAQADGkBIFN0b3JhZ2UgZmllbGQgdGhhdCBrZWVwcyB0cmFjayBvZiBiYW5kd2lkdGggdXNlZCBieSB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGFsb25nIHdpdGggdGhlLQEgbGF0ZXN0IEhSTVAgd2F0ZXJtYXJrLiBVc2VkIGZvciBsaW1pdGluZyB0aGUgYWNjZXB0YW5jZSBvZiBuZXcgYmxvY2tzIHdpdGiQIHJlc3BlY3QgdG8gcmVsYXkgY2hhaW4gY29uc3RyYWludHMuAFRQZW5kaW5nVmFsaWRhdGlvbkNvZGUBABgEABhZASBJbiBjYXNlIG9mIGEgc2NoZWR1bGVkIHVwZ3JhZGUsIHRoaXMgc3RvcmFnZSBmaWVsZCBjb250YWlucyB0aGUgdmFsaWRhdGlvbiBjb2RlIHRvIGJlJCBhcHBsaWVkLgA9ASBBcyBzb29uIGFzIHRoZSByZWxheSBjaGFpbiBnaXZlcyB1cyB0aGUgZ28tYWhlYWQgc2lnbmFsLCB3ZSB3aWxsIG92ZXJ3cml0ZSB0aGVxASBbYDpjb2RlYF1bc3BfY29yZTo6c3RvcmFnZTo6d2VsbF9rbm93bl9rZXlzOjpDT0RFXSB3aGljaCB3aWxsIHJlc3VsdCB0aGUgbmV4dCBibG9jayBwcm9jZXNzCQEgd2l0aCB0aGUgbmV3IHZhbGlkYXRpb24gY29kZS4gVGhpcyBjb25jbHVkZXMgdGhlIHVwZ3JhZGUgcHJvY2Vzcy4ARE5ld1ZhbGlkYXRpb25Db2RlAAAYBAAUXQEgVmFsaWRhdGlvbiBjb2RlIHRoYXQgaXMgc2V0IGJ5IHRoZSBwYXJhY2hhaW4gYW5kIGlzIHRvIGJlIGNvbW11bmljYXRlZCB0byBjb2xsYXRvciBhbmR4IGNvbnNlcXVlbnRseSB0aGUgcmVsYXktY2hhaW4uAGUBIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jayBpZiBubyBvdGhlciBwYWxsZXQgYWxyZWFkeSBzZXQsIHRoZSB2YWx1ZS4AOFZhbGlkYXRpb25EYXRhAABIBAAM0CBUaGUgW2BQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YWBdIHNldCBmb3IgdGhpcyBibG9jay4AcQEgVGhpcyB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBzZXQgb25seSBvbmNlIGJ5IHRoZSBbYFBhbGxldDo6c2V0X3ZhbGlkYXRpb25fZGF0YWBdIGluaGVyZW50LgBQRGlkU2V0VmFsaWRhdGlvbkNvZGUBADEBBAAE4CBXZXJlIHRoZSB2YWxpZGF0aW9uIGRhdGEgc2V0IHRvIG5vdGlmeSB0aGUgcmVsYXkgY2hhaW4/AGRMYXN0UmVsYXlDaGFpbkJsb2NrTnVtYmVyAQA4EAAAAAAMHQEgVGhlIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhlIGxhc3QgcGFyYWNoYWluIGJsb2NrLgCIIFRoaXMgaXMgdXBkYXRlZCBpbiBgb25fZmluYWxpemVgLgBgVXBncmFkZVJlc3RyaWN0aW9uU2lnbmFsAQDBBAQAHHUBIEFuIG9wdGlvbiB3aGljaCBpbmRpY2F0ZXMgaWYgdGhlIHJlbGF5LWNoYWluIHJlc3RyaWN0cyBzaWduYWxsaW5nIGEgdmFsaWRhdGlvbiBjb2RlIHVwZ3JhZGUuYQEgSW4gb3RoZXIgd29yZHMsIGlmIHRoaXMgaXMgYFNvbWVgIGFuZCBbYE5ld1ZhbGlkYXRpb25Db2RlYF0gaXMgYFNvbWVgIHRoZW4gdGhlIHByb2R1Y2VkbCBjYW5kaWRhdGUgd2lsbCBiZSBpbnZhbGlkLgBxASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBhIG1pcnJvciBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGZyb20gdGhlbQEgcmVsYXktY2hhaW4uIFRoaXMgdmFsdWUgaXMgZXBoZW1lcmFsIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgaGl0IHRoZSBzdG9yYWdlLiBUaGlzIHZhbHVlIGlzYCBzZXQgYWZ0ZXIgdGhlIGluaGVyZW50LgA4VXBncmFkZUdvQWhlYWQBALUEBAAU3CBPcHRpb25hbCB1cGdyYWRlIGdvLWFoZWFkIHNpZ25hbCBmcm9tIHRoZSByZWxheS1jaGFpbi4AcQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgYSBtaXJyb3Igb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZm9yIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBmcm9tIHRoZW0BIHJlbGF5LWNoYWluLiBUaGlzIHZhbHVlIGlzIGVwaGVtZXJhbCB3aGljaCBtZWFucyBpdCBkb2Vzbid0IGhpdCB0aGUgc3RvcmFnZS4gVGhpcyB2YWx1ZSBpc2Agc2V0IGFmdGVyIHRoZSBpbmhlcmVudC4APFJlbGF5U3RhdGVQcm9vZgAAUAQAGMQgVGhlIHN0YXRlIHByb29mIGZvciB0aGUgbGFzdCByZWxheSBwYXJlbnQgYmxvY2suAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AWFJlbGV2YW50TWVzc2FnaW5nU3RhdGUAAMkEBAAcZQEgVGhlIHNuYXBzaG90IG9mIHNvbWUgc3RhdGUgcmVsYXRlZCB0byBtZXNzYWdpbmcgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgcGFyYWNoYWluIGFzIHBlckggdGhlIHJlbGF5IHBhcmVudC4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgBESG9zdENvbmZpZ3VyYXRpb24AAN0EBAAYKQEgVGhlIHBhcmFjaGFpbiBob3N0IGNvbmZpZ3VyYXRpb24gdGhhdCB3YXMgb2J0YWluZWQgZnJvbSB0aGUgcmVsYXkgcGFyZW50LgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuADhMYXN0RG1xTXFjSGVhZAEA5QSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ9CBUaGUgbGFzdCBkb3dud2FyZCBtZXNzYWdlIHF1ZXVlIGNoYWluIGhlYWQgd2UgaGF2ZSBvYnNlcnZlZC4AZQEgVGhpcyB2YWx1ZSBpcyBsb2FkZWQgYmVmb3JlIGFuZCBzYXZlZCBhZnRlciBwcm9jZXNzaW5nIGluYm91bmQgZG93bndhcmQgbWVzc2FnZXMgY2FycmllZGAgYnkgdGhlIHN5c3RlbSBpbmhlcmVudC4AQExhc3RIcm1wTXFjSGVhZHMBAOkEBAAQSQEgVGhlIG1lc3NhZ2UgcXVldWUgY2hhaW4gaGVhZHMgd2UgaGF2ZSBvYnNlcnZlZCBwZXIgZWFjaCBjaGFubmVsIGluY29taW5nIGNoYW5uZWwuAGUBIFRoaXMgdmFsdWUgaXMgbG9hZGVkIGJlZm9yZSBhbmQgc2F2ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBpbmJvdW5kIGRvd253YXJkIG1lc3NhZ2VzIGNhcnJpZWRgIGJ5IHRoZSBzeXN0ZW0gaW5oZXJlbnQuAGRQcm9jZXNzZWREb3dud2FyZE1lc3NhZ2VzAQA4EAAAAAAMyCBOdW1iZXIgb2YgZG93bndhcmQgbWVzc2FnZXMgcHJvY2Vzc2VkIGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgBwTGFzdFByb2Nlc3NlZERvd253YXJkTWVzc2FnZQAA9QQEAAyUIFRoZSBsYXN0IHByb2Nlc3NlZCBkb3dud2FyZCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgA0SHJtcFdhdGVybWFyawEAOBAAAAAABKAgSFJNUCB3YXRlcm1hcmsgdGhhdCB3YXMgc2V0IGluIGEgYmxvY2suAGBMYXN0UHJvY2Vzc2VkSHJtcE1lc3NhZ2UAAPUEBAAMhCBUaGUgbGFzdCBwcm9jZXNzZWQgSFJNUCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgBQSHJtcE91dGJvdW5kTWVzc2FnZXMBAPkEBAAMpCBIUk1QIG1lc3NhZ2VzIHRoYXQgd2VyZSBzZW50IGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgA4VXB3YXJkTWVzc2FnZXMBADQEAAysIFVwd2FyZCBtZXNzYWdlcyB0aGF0IHdlcmUgc2VudCBpbiBhIGJsb2NrLgDwIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBmb3IgZWFjaCBuZXcgYmxvY2suAFRQZW5kaW5nVXB3YXJkTWVzc2FnZXMBADQEAAQxASBVcHdhcmQgbWVzc2FnZXMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4AUFBlbmRpbmdVcHdhcmRTaWduYWxzAQA0BAAMLQEgVXB3YXJkIHNpZ25hbHMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4A2CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25fZmluYWxpemVgIGZvciBlYWNoIGJsb2NrLgBcVXB3YXJkRGVsaXZlcnlGZWVGYWN0b3IBAAEFQAAAZKeztuANAAAAAAAAAAAE5CBUaGUgZmFjdG9yIHRvIG11bHRpcGx5IHRoZSBiYXNlIGRlbGl2ZXJ5IGZlZSBieSBmb3IgVU1QLgCEQW5ub3VuY2VkSHJtcE1lc3NhZ2VzUGVyQ2FuZGlkYXRlAQA4EAAAAAAIZQEgVGhlIG51bWJlciBvZiBIUk1QIG1lc3NhZ2VzIHdlIG9ic2VydmVkIGluIGBvbl9pbml0aWFsaXplYCBhbmQgdGh1cyB1c2VkIHRoYXQgbnVtYmVyIGZvcvAgYW5ub3VuY2luZyB0aGUgd2VpZ2h0IG9mIGBvbl9pbml0aWFsaXplYCBhbmQgYG9uX2ZpbmFsaXplYC4AaFJlc2VydmVkWGNtcFdlaWdodE92ZXJyaWRlAAApAQQACF0BIFRoZSB3ZWlnaHQgd2UgcmVzZXJ2ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBibG9jayBmb3IgcHJvY2Vzc2luZyBYQ01QIG1lc3NhZ2VzLiBUaGlzuCBvdmVycmlkZXMgdGhlIGFtb3VudCBzZXQgaW4gdGhlIENvbmZpZyB0cmFpdC4AZFJlc2VydmVkRG1wV2VpZ2h0T3ZlcnJpZGUAACkBBAAIWQEgVGhlIHdlaWdodCB3ZSByZXNlcnZlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrIGZvciBwcm9jZXNzaW5nIERNUCBtZXNzYWdlcy4gVGhpc7ggb3ZlcnJpZGVzIHRoZSBhbW91bnQgc2V0IGluIHRoZSBDb25maWcgdHJhaXQuAGBDdXN0b21WYWxpZGF0aW9uSGVhZERhdGEAABgEAAwpASBBIGN1c3RvbSBoZWFkIGRhdGEgdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQgYXMgcmVzdWx0IG9mIGB2YWxpZGF0ZV9ibG9ja2AuABEBIFNlZSBgUGFsbGV0OjpzZXRfY3VzdG9tX3ZhbGlkYXRpb25faGVhZF9kYXRhYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4AAUAAAckDAAQoU2VsZlBhcmFJZJwQ/hMAAAS4IFJldHVybnMgdGhlIHBhcmFjaGFpbiBJRCB3ZSBhcmUgcnVubmluZyB3aXRoLgABBQUAAAABAAAkVGltZXN0YW1wASRUaW1lc3RhbXAIDE5vdwEAKCAAAAAAAAAAAASgIFRoZSBjdXJyZW50IHRpbWUgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgAkRGlkVXBkYXRlAQAxAQQAENggV2hldGhlciB0aGUgdGltZXN0YW1wIGhhcyBiZWVuIHVwZGF0ZWQgaW4gdGhpcyBibG9jay4AVQEgVGhpcyB2YWx1ZSBpcyB1cGRhdGVkIHRvIGB0cnVlYCB1cG9uIHN1Y2Nlc3NmdWwgc3VibWlzc2lvbiBvZiBhIHRpbWVzdGFtcCBieSBhIG5vZGUuRQEgSXQgaXMgdGhlbiBjaGVja2VkIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jayBleGVjdXRpb24gaW4gdGhlIGBvbl9maW5hbGl6ZWAgaG9vay4AAbAAAAQ0TWluaW11bVBlcmlvZCggAAAAAAAAAAAYjCBUaGUgbWluaW11bSBwZXJpb2QgYmV0d2VlbiBibG9ja3MuAE0BIEJlIGF3YXJlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgdG8gdGhlICpleHBlY3RlZCogcGVyaW9kIHRoYXQgdGhlIGJsb2NrIHByb2R1Y3Rpb25JASBhcHBhcmF0dXMgcHJvdmlkZXMuIFlvdXIgY2hvc2VuIGNvbnNlbnN1cyBzeXN0ZW0gd2lsbCBnZW5lcmFsbHkgd29yayB3aXRoIHRoaXMgdG9hASBkZXRlcm1pbmUgYSBzZW5zaWJsZSBibG9jayB0aW1lLiBGb3IgZXhhbXBsZSwgaW4gdGhlIEF1cmEgcGFsbGV0IGl0IHdpbGwgYmUgZG91YmxlIHRoaXNwIHBlcmlvZCBvbiBkZWZhdWx0IHNldHRpbmdzLgAABBhNb21lbnQoBJggVHlwZSB1c2VkIGZvciBleHByZXNzaW5nIGEgdGltZXN0YW1wLgADAAA0UGFyYWNoYWluSW5mbwE0UGFyYWNoYWluSW5mbwQsUGFyYWNoYWluSWQBAJwQZAAAAAAAAbgAAAAAAAAEAAA0V2VpZ2h0UmVjbGFpbQAAAAAAAAAFCIEBIFBhbGxldCB0byB1c2UgYWxvbmdzaWRlIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gW2BTdG9yYWdlV2VpZ2h0UmVjbGFpbWBdLCB0aGUgcGFsbGV0IHByb3ZpZGVzjCB3ZWlnaHQgaW5mb3JtYXRpb24gYW5kIGJlbmNobWFya3MuABxVdGlsaXR5AAG8AAHNAwAETGJhdGNoZWRfY2FsbHNfbGltaXQ4EKoqAAAEqCBUaGUgbGltaXQgb24gdGhlIG51bWJlciBvZiBiYXRjaGVkIGNhbGxzLgABCQUACCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLjRQYWxsZXRzT3JpZ2luyATwIFRoZSBjYWxsZXIgb3JpZ2luLCBvdmVyYXJjaGluZyB0eXBlIG9mIGFsbCBwYWxsZXRzIG9yaWdpbnMuAAYAACBCYWxhbmNlcwEgQmFsYW5jZXMcNFRvdGFsSXNzdWFuY2UBAPxAAAAAAAAAAAAAAAAAAAAAAASYIFRoZSB0b3RhbCB1bml0cyBpc3N1ZWQgaW4gdGhlIHN5c3RlbS4AQEluYWN0aXZlSXNzdWFuY2UBAPxAAAAAAAAAAAAAAAAAAAAAAAQJASBUaGUgdG90YWwgdW5pdHMgb2Ygb3V0c3RhbmRpbmcgZGVhY3RpdmF0ZWQgYmFsYW5jZSBpbiB0aGUgc3lzdGVtLgAcQWNjb3VudAEBBAIEiQMBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBgCQEgVGhlIEJhbGFuY2VzIHBhbGxldCBleGFtcGxlIG9mIHN0b3JpbmcgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC4AKCAjIEV4YW1wbGUANCBgYGBub2NvbXBpbGWwICBpbXBsIHBhbGxldF9iYWxhbmNlczo6Q29uZmlnIGZvciBSdW50aW1lIHsZAiAgICB0eXBlIEFjY291bnRTdG9yZSA9IFN0b3JhZ2VNYXBTaGltPFNlbGY6OkFjY291bnQ8UnVudGltZT4sIGZyYW1lX3N5c3RlbTo6UHJvdmlkZXI8UnVudGltZT4sIEFjY291bnRJZCwgU2VsZjo6QWNjb3VudERhdGE8QmFsYW5jZT4+DCAgfRAgYGBgABUBIFlvdSBjYW4gYWxzbyBzdG9yZSB0aGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50IGluIHRoZSBgU3lzdGVtYCBwYWxsZXQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7dCAgIHR5cGUgQWNjb3VudFN0b3JlID0gU3lzdGVtDCAgfRAgYGBgAFEBIEJ1dCB0aGlzIGNvbWVzIHdpdGggdHJhZGVvZmZzLCBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlIHN5c3RlbSBwYWxsZXQgc3RvcmVzbQEgYGZyYW1lX3N5c3RlbWAgZGF0YSBhbG9uZ3NpZGUgdGhlIGFjY291bnQgZGF0YSBjb250cmFyeSB0byBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlKQEgYEJhbGFuY2VzYCBwYWxsZXQsIHdoaWNoIHVzZXMgYSBgU3RvcmFnZU1hcGAgdG8gc3RvcmUgYmFsYW5jZXMgZGF0YSBvbmx5LkEBIE5PVEU6IFRoaXMgaXMgb25seSB1c2VkIGluIHRoZSBjYXNlIHRoYXQgdGhpcyBwYWxsZXQgaXMgdXNlZCB0byBzdG9yZSBiYWxhbmNlcy4AFExvY2tzAQEEAgQNBQQAELggQW55IGxpcXVpZGl0eSBsb2NrcyBvbiBzb21lIGFjY291bnQgYmFsYW5jZXMuJQEgTk9URTogU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgd2hlbiBzZXR0aW5nLCBjaGFuZ2luZyBhbmQgZnJlZWluZyBhIGxvY2suAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAIFJlc2VydmVzAQEEAgQdBQQADKQgTmFtZWQgcmVzZXJ2ZXMgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAUSG9sZHMBAQQCBCkFBAAEbCBIb2xkcyBvbiBhY2NvdW50IGJhbGFuY2VzLgAcRnJlZXplcwEBBAIENQUEAASIIEZyZWV6ZSBsb2NrcyBvbiBhY2NvdW50IGJhbGFuY2VzLgABLQEAAdUDABBIRXhpc3RlbnRpYWxEZXBvc2l0/EAAypo7AAAAAAAAAAAAAAAAIEEBIFRoZSBtaW5pbXVtIGFtb3VudCByZXF1aXJlZCB0byBrZWVwIGFuIGFjY291bnQgb3Blbi4gTVVTVCBCRSBHUkVBVEVSIFRIQU4gWkVSTyEAWQEgSWYgeW91ICpyZWFsbHkqIG5lZWQgaXQgdG8gYmUgemVybywgeW91IGNhbiBlbmFibGUgdGhlIGZlYXR1cmUgYGluc2VjdXJlX3plcm9fZWRgIGZvcmEBIHRoaXMgcGFsbGV0LiBIb3dldmVyLCB5b3UgZG8gc28gYXQgeW91ciBvd24gcmlzazogdGhpcyB3aWxsIG9wZW4gdXAgYSBtYWpvciBEb1MgdmVjdG9yLlkBIEluIGNhc2UgeW91IGhhdmUgbXVsdGlwbGUgc291cmNlcyBvZiBwcm92aWRlciByZWZlcmVuY2VzLCB5b3UgbWF5IGFsc28gZ2V0IHVuZXhwZWN0ZWSMIGJlaGF2aW91ciBpZiB5b3Ugc2V0IHRoaXMgdG8gemVyby4A8CBCb3R0b20gbGluZTogRG8geW91cnNlbGYgYSBmYXZvdXIgYW5kIG1ha2UgaXQgYXQgbGVhc3Qgb25lIQAgTWF4TG9ja3M4EDIAAAAQ9CBUaGUgbWF4aW11bSBudW1iZXIgb2YgbG9ja3MgdGhhdCBzaG91bGQgZXhpc3Qgb24gYW4gYWNjb3VudC7cIE5vdCBzdHJpY3RseSBlbmZvcmNlZCwgYnV0IHVzZWQgZm9yIHdlaWdodCBlc3RpbWF0aW9uLgCtASBVc2Ugb2YgbG9ja3MgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgZnJlZXplcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gACxNYXhSZXNlcnZlczgQMgAAAAwNASBUaGUgbWF4aW11bSBudW1iZXIgb2YgbmFtZWQgcmVzZXJ2ZXMgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudC4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAKE1heEZyZWV6ZXM4EAAAAAAEYQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGluZGl2aWR1YWwgZnJlZXplIGxvY2tzIHRoYXQgY2FuIGV4aXN0IG9uIGFuIGFjY291bnQgYXQgYW55IHRpbWUuAAFBBQAQRFJ1bnRpbWVIb2xkUmVhc29u3QMEdCBUaGUgb3ZlcmFyY2hpbmcgaG9sZCByZWFzb24uHEJhbGFuY2X8BGwgVGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC5EUmVzZXJ2ZUlkZW50aWZpZXLZAQxoIFRoZSBJRCB0eXBlIGZvciByZXNlcnZlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2BARnJlZXplSWRlbnRpZmllchAEZCBUaGUgSUQgdHlwZSBmb3IgZnJlZXplcy4ACgAASFRyYW5zYWN0aW9uUGF5bWVudAFIVHJhbnNhY3Rpb25QYXltZW50DEROZXh0RmVlTXVsdGlwbGllcgEAAQVAAABkp7O24A0AAAAAAAAAAAAAOFN0b3JhZ2VWZXJzaW9uAQBFBQQAAAA8VHhQYXltZW50Q3JlZGl0AABJBQQADPAgVGhlIGBPbkNoYXJnZVRyYW5zYWN0aW9uYCBzdG9yZXMgdGhlIHdpdGhkcmF3biB0eCBmZWUgaGVyZS4ANQEgVXNlIGB3aXRoZHJhd190eGZlZWAgYW5kIGByZW1haW5pbmdfdHhmZWVgIHRvIGFjY2VzcyBmcm9tIG91dHNpZGUgdGhlIGNyYXRlLgAAAfEDAARgT3BlcmF0aW9uYWxGZWVNdWx0aXBsaWVyDAQFVFkBIEEgZmVlIG11bHRpcGxpZXIgZm9yIGBPcGVyYXRpb25hbGAgZXh0cmluc2ljcyB0byBjb21wdXRlICJ2aXJ0dWFsIHRpcCIgdG8gYm9vc3QgdGhlaXIsIGBwcmlvcml0eWAAUQEgVGhpcyB2YWx1ZSBpcyBtdWx0aXBsaWVkIGJ5IHRoZSBgZmluYWxfZmVlYCB0byBvYnRhaW4gYSAidmlydHVhbCB0aXAiIHRoYXQgaXMgbGF0ZXL0IGFkZGVkIHRvIGEgdGlwIGNvbXBvbmVudCBpbiByZWd1bGFyIGBwcmlvcml0eWAgY2FsY3VsYXRpb25zLk0BIEl0IG1lYW5zIHRoYXQgYSBgTm9ybWFsYCB0cmFuc2FjdGlvbiBjYW4gZnJvbnQtcnVuIGEgc2ltaWxhcmx5LXNpemVkIGBPcGVyYXRpb25hbGBBASBleHRyaW5zaWMgKHdpdGggbm8gdGlwKSwgYnkgaW5jbHVkaW5nIGEgdGlwIHZhbHVlIGdyZWF0ZXIgdGhhbiB0aGUgdmlydHVhbCB0aXAuADwgYGBgcnVzdCxpZ25vcmVAIC8vIEZvciBgTm9ybWFsYIwgbGV0IHByaW9yaXR5ID0gcHJpb3JpdHlfY2FsYyh0aXApOwBUIC8vIEZvciBgT3BlcmF0aW9uYWxgEQEgbGV0IHZpcnR1YWxfdGlwID0gKGluY2x1c2lvbl9mZWUgKyB0aXApICogT3BlcmF0aW9uYWxGZWVNdWx0aXBsaWVyO8QgbGV0IHByaW9yaXR5ID0gcHJpb3JpdHlfY2FsYyh0aXAgKyB2aXJ0dWFsX3RpcCk7ECBgYGAAUQEgTm90ZSB0aGF0IHNpbmNlIHdlIHVzZSBgZmluYWxfZmVlYCB0aGUgbXVsdGlwbGllciBhcHBsaWVzIGFsc28gdG8gdGhlIHJlZ3VsYXIgYHRpcGBdASBzZW50IHdpdGggdGhlIHRyYW5zYWN0aW9uLiBTbywgbm90IG9ubHkgZG9lcyB0aGUgdHJhbnNhY3Rpb24gZ2V0IGEgcHJpb3JpdHkgYnVtcCBiYXNlZGEBIG9uIHRoZSBgaW5jbHVzaW9uX2ZlZWAsIGJ1dCB3ZSBhbHNvIGFtcGxpZnkgdGhlIGltcGFjdCBvZiB0aXBzIGFwcGxpZWQgdG8gYE9wZXJhdGlvbmFsYDggdHJhbnNhY3Rpb25zLgAAAAALAABIU2tpcEZlZWxlc3NQYXltZW50AAAB9QMAAAAAAAwAAEhUcmFuc2FjdGlvblN0b3JhZ2UBSFRyYW5zYWN0aW9uU3RvcmFnZRw4QXV0aG9yaXphdGlvbnMAAQQC2FEFBAAEgCBBdXRob3JpemF0aW9ucywga2V5ZWQgYnkgc2NvcGUuADBUcmFuc2FjdGlvbnMAAQQCOFkFBAAE0CBDb2xsZWN0aW9uIG9mIHRyYW5zYWN0aW9uIG1ldGFkYXRhIGJ5IGJsb2NrIG51bWJlci4AHEJ5dGVGZWUAAPwEAARYIFN0b3JhZ2UgZmVlIHBlciBieXRlLgAgRW50cnlGZWUAAPwEAAR0IFN0b3JhZ2UgZmVlIHBlciB0cmFuc2FjdGlvbi4APFJldGVudGlvblBlcmlvZAEAOBAAAAAAFOQgTnVtYmVyIG9mIGJsb2NrcyBmb3Igd2hpY2ggc3RvcmVkIGRhdGEgbXVzdCBiZSByZXRhaW5lZC4ALQEgRGF0YSBvbGRlciB0aGFuIGBSZXRlbnRpb25QZXJpb2RgIGJsb2NrcyBpcyBlbGlnaWJsZSBmb3IgcmVtb3ZhbCB1bmxlc3MgaXQxASBoYXMgYmVlbiBleHBsaWNpdGx5IHJlbmV3ZWQuIFZhbGlkYXRvcnMgYXJlIHJlcXVpcmVkIHRvIHByb3ZlIHBvc3Nlc3Npb24gb2YxASBkYXRhIGNvcnJlc3BvbmRpbmcgdG8gYmxvY2sgYE4gLSBSZXRlbnRpb25QZXJpb2RgIHdoZW4gcHJvZHVjaW5nIGJsb2NrIGBOYC4AREJsb2NrVHJhbnNhY3Rpb25zAQBZBQQAAAAwUHJvb2ZDaGVja2VkAQAxAQQABJQgV2FzIHRoZSBwcm9vZiBjaGVja2VkIGluIHRoaXMgYmxvY2s/AAE9AQAB+QMAHFBNYXhCbG9ja1RyYW5zYWN0aW9uczgQAAIAAATUIE1heGltdW0gbnVtYmVyIG9mIGluZGV4ZWQgdHJhbnNhY3Rpb25zIGluIHRoZSBibG9jay4ASE1heFRyYW5zYWN0aW9uU2l6ZTgQAAAgAATMIE1heGltdW0gZGF0YSBzZXQgaW4gYSBzaW5nbGUgdHJhbnNhY3Rpb24gaW4gYnl0ZXMuAExBdXRob3JpemF0aW9uUGVyaW9kOBCAxhMABLggQXV0aG9yaXphdGlvbnMgZXhwaXJlIGFmdGVyIHRoaXMgbWFueSBibG9ja3MuAEhTdG9yZVJlbmV3UHJpb3JpdHkoIPz/////////BJggUHJpb3JpdHkgb2Ygc3RvcmUvcmVuZXcgdHJhbnNhY3Rpb25zLgBMU3RvcmVSZW5ld0xvbmdldml0eSggQDgAAAAAAAAEnCBMb25nZXZpdHkgb2Ygc3RvcmUvcmVuZXcgdHJhbnNhY3Rpb25zLgCIUmVtb3ZlRXhwaXJlZEF1dGhvcml6YXRpb25Qcmlvcml0eSgg/f////////8EEQEgUHJpb3JpdHkgb2YgdW5zaWduZWQgdHJhbnNhY3Rpb25zIHRvIHJlbW92ZSBleHBpcmVkIGF1dGhvcml6YXRpb25zLgCMUmVtb3ZlRXhwaXJlZEF1dGhvcml6YXRpb25Mb25nZXZpdHkoIEA4AAAAAAAABBUBIExvbmdldml0eSBvZiB1bnNpZ25lZCB0cmFuc2FjdGlvbnMgdG8gcmVtb3ZlIGV4cGlyZWQgYXV0aG9yaXphdGlvbnMuAAFlBQAELFJ1bnRpbWVDYWxsIARUIEEgZGlzcGF0Y2hhYmxlIGNhbGwuACgAAChBdXRob3JzaGlwAShBdXRob3JzaGlwBBhBdXRob3IAAAQEAARkIEF1dGhvciBvZiBjdXJyZW50IGJsb2NrLgAAAAAAAAAUAABEQ29sbGF0b3JTZWxlY3Rpb24BRENvbGxhdG9yU2VsZWN0aW9uFDRJbnZ1bG5lcmFibGVzAQBpBQQABBEBIFRoZSBpbnZ1bG5lcmFibGUsIHBlcm1pc3Npb25lZCBjb2xsYXRvcnMuIFRoaXMgbGlzdCBtdXN0IGJlIHNvcnRlZC4ANENhbmRpZGF0ZUxpc3QBAG0FBAAUaQEgVGhlIChjb21tdW5pdHksIGxpbWl0ZWQpIGNvbGxhdGlvbiBjYW5kaWRhdGVzLiBgQ2FuZGlkYXRlc2AgYW5kIGBJbnZ1bG5lcmFibGVzYCBzaG91bGQgYmVQIG11dHVhbGx5IGV4Y2x1c2l2ZS4AdQEgVGhpcyBsaXN0IGlzIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgZGVwb3NpdCBhbmQgd2hlbiB0aGUgZGVwb3NpdHMgYXJlIGVxdWFsLCB0aGUgbGVhc3SgIHJlY2VudGx5IHVwZGF0ZWQgaXMgY29uc2lkZXJlZCBncmVhdGVyLgBETGFzdEF1dGhvcmVkQmxvY2sBAQQFBDgQAAAAAASEIExhc3QgYmxvY2sgYXV0aG9yZWQgYnkgY29sbGF0b3IuAEREZXNpcmVkQ2FuZGlkYXRlcwEAOBAAAAAADHggRGVzaXJlZCBudW1iZXIgb2YgY2FuZGlkYXRlcy4AdQEgVGhpcyBzaG91bGQgaWRlYWxseSBhbHdheXMgYmUgbGVzcyB0aGFuIFtgQ29uZmlnOjpNYXhDYW5kaWRhdGVzYF0gZm9yIHdlaWdodHMgdG8gYmUgY29ycmVjdC4ANENhbmRpZGFjeUJvbmQBAPxAAAAAAAAAAAAAAAAAAAAAAAy4IEZpeGVkIGFtb3VudCB0byBkZXBvc2l0IHRvIGJlY29tZSBhIGNvbGxhdG9yLgBBASBXaGVuIGEgY29sbGF0b3IgY2FsbHMgYGxlYXZlX2ludGVudGAgdGhleSBpbW1lZGlhdGVseSByZWNlaXZlIHRoZSBkZXBvc2l0IGJhY2suAAFNAQABAQQAGBRQb3RJZHkFIFBvdFN0YWtlBPQgQWNjb3VudCBJZGVudGlmaWVyIGZyb20gd2hpY2ggdGhlIGludGVybmFsIFBvdCBpcyBnZW5lcmF0ZWQuADRNYXhDYW5kaWRhdGVzOBBkAAAADMggTWF4aW11bSBudW1iZXIgb2YgY2FuZGlkYXRlcyB0aGF0IHdlIHNob3VsZCBoYXZlLgDMIFRoaXMgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIGludnVsbmVyYWJsZXMuAFBNaW5FbGlnaWJsZUNvbGxhdG9yczgQBAAAAAxVASBNaW5pbXVtIG51bWJlciBlbGlnaWJsZSBjb2xsYXRvcnMuIFNob3VsZCBhbHdheXMgYmUgZ3JlYXRlciB0aGFuIHplcm8uIFRoaXMgaW5jbHVkZXNRASBJbnZ1bG5lcmFibGUgY29sbGF0b3JzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGVyZSB3aWxsIGFsd2F5cyBiZSBvbmUgY29sbGF0b3Igd2hvIGNhbkQgcHJvZHVjZSBhIGJsb2NrLgBATWF4SW52dWxuZXJhYmxlczgQFAAAAASEIE1heGltdW0gbnVtYmVyIG9mIGludnVsbmVyYWJsZXMuADRLaWNrVGhyZXNob2xkOBAQDgAAAAAscG90X2FjY291bnQEgG1vZGxQb3RTdGFrZQAAAAAAAAAAAAAAAAAAAAAAAAAABKAgR2V0cyB0aGlzIHBhbGxldCdzIGRlcml2ZWQgcG90IGFjY291bnQuAAF9BQAELFZhbGlkYXRvcklkBAR0IEEgc3RhYmxlIElEIGZvciBhIHZhbGlkYXRvci4AFQAAHFNlc3Npb24BHFNlc3Npb24gKFZhbGlkYXRvcnMBADUBBAAEfCBUaGUgY3VycmVudCBzZXQgb2YgdmFsaWRhdG9ycy4AMEN1cnJlbnRJbmRleAEAOBAAAAAABHggQ3VycmVudCBpbmRleCBvZiB0aGUgc2Vzc2lvbi4ANFF1ZXVlZENoYW5nZWQBADEBBAAIOQEgVHJ1ZSBpZiB0aGUgdW5kZXJseWluZyBlY29ub21pYyBpZGVudGl0aWVzIG9yIHdlaWdodGluZyBiZWhpbmQgdGhlIHZhbGlkYXRvcnOkIGhhcyBjaGFuZ2VkIGluIHRoZSBxdWV1ZWQgdmFsaWRhdG9yIHNldC4AKFF1ZXVlZEtleXMBAIEFBAAIPQEgVGhlIHF1ZXVlZCBrZXlzIGZvciB0aGUgbmV4dCBzZXNzaW9uLiBXaGVuIHRoZSBuZXh0IHNlc3Npb24gYmVnaW5zLCB0aGVzZSBrZXlz4CB3aWxsIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB2YWxpZGF0b3IncyBzZXNzaW9uIGtleXMuAEhEaXNhYmxlZFZhbGlkYXRvcnMBAIkFBAAUgCBJbmRpY2VzIG9mIGRpc2FibGVkIHZhbGlkYXRvcnMuAD0BIFRoZSB2ZWMgaXMgYWx3YXlzIGtlcHQgc29ydGVkIHNvIHRoYXQgd2UgY2FuIGZpbmQgd2hldGhlciBhIGdpdmVuIHZhbGlkYXRvciBpcz0BIGRpc2FibGVkIHVzaW5nIGJpbmFyeSBzZWFyY2guIEl0IGdldHMgY2xlYXJlZCB3aGVuIGBvbl9zZXNzaW9uX2VuZGluZ2AgcmV0dXJuc2QgYSBuZXcgc2V0IG9mIGlkZW50aXRpZXMuACBOZXh0S2V5cwABBAUEVQEEAAScIFRoZSBuZXh0IHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IuACBLZXlPd25lcgABBAWZBQQEAAQJASBUaGUgb3duZXIgb2YgYSBrZXkuIFRoZSBrZXkgaXMgdGhlIGBLZXlUeXBlSWRgICsgdGhlIGVuY29kZWQga2V5LgBERXh0ZXJuYWxseVNldEtleXMAAQQFBBAEABAxASBBY2NvdW50cyB3aG9zZSBrZXlzIHdlcmUgc2V0IHZpYSBgU2Vzc2lvbkludGVyZmFjZWAgKGV4dGVybmFsIHBhdGgpIHdpdGhvdXQ5ASBpbmNyZW1lbnRpbmcgdGhlIGNvbnN1bWVyIHJlZmVyZW5jZSBvciBwbGFjaW5nIGEga2V5IGRlcG9zaXQuIGBkb19wdXJnZV9rZXlzYDkBIG9ubHkgZGVjcmVtZW50cyBjb25zdW1lcnMgZm9yIGFjY291bnRzIHRoYXQgd2VyZSByZWdpc3RlcmVkIHRocm91Z2ggdGhlIGxvY2FsQCBzZXNzaW9uIHBhbGxldC4AAVEBAAEFBAAEKEtleURlcG9zaXT8QAAAAAAAAAAAAAAAAAAAAAAEpCBUaGUgYW1vdW50IHRvIGJlIGhlbGQgd2hlbiBzZXR0aW5nIGtleXMuAAGhBQAILFZhbGlkYXRvcklkBAR0IEEgc3RhYmxlIElEIGZvciBhIHZhbGlkYXRvci4QS2V5c1UBBCggVGhlIGtleXMuABYAABBBdXJhARBBdXJhCCxBdXRob3JpdGllcwEApQUEAARsIFRoZSBjdXJyZW50IGF1dGhvcml0eSBzZXQuACxDdXJyZW50U2xvdAEArQUgAAAAAAAAAAAMgCBUaGUgY3VycmVudCBzbG90IG9mIHRoaXMgYmxvY2suAJQgVGhpcyB3aWxsIGJlIHNldCBpbiBgb25faW5pdGlhbGl6ZWAuAAAABDBTbG90RHVyYXRpb24oIHAXAAAAAAAAFA0BIFRoZSBzbG90IGR1cmF0aW9uIEF1cmEgc2hvdWxkIHJ1biB3aXRoLCBleHByZXNzZWQgaW4gbWlsbGlzZWNvbmRzLgAhASBUaGUgZWZmZWN0aXZlIHZhbHVlIG9mIHRoaXMgdHlwZSBjYW4gYmUgY2hhbmdlZCB3aXRoIGEgcnVudGltZSB1cGdyYWRlLgA1ASBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgZWl0aGVyIHVzZSBbYE1pbmltdW1QZXJpb2RUaW1lc1R3b2BdIG9yIGEgY29uc3QuAAAELEF1dGhvcml0eUlkWQEEmCBUaGUgaWRlbnRpZmllciB0eXBlIGZvciBhbiBhdXRob3JpdHkuABcAABxBdXJhRXh0ARxBdXJhRXh0CCxBdXRob3JpdGllcwEApQUEABSUIFNlcnZlcyBhcyBjYWNoZSBmb3IgdGhlIGF1dGhvcml0aWVzLgBxASBUaGUgYXV0aG9yaXRpZXMgaW4gQXVSYSBhcmUgb3ZlcndyaXR0ZW4gaW4gYG9uX2luaXRpYWxpemVgIHdoZW4gd2Ugc3dpdGNoIHRvIGEgbmV3IHNlc3Npb24sXQEgYnV0IHdlIHJlcXVpcmUgdGhlIG9sZCBhdXRob3JpdGllcyB0byB2ZXJpZnkgdGhlIHNlYWwgd2hlbiB2YWxpZGF0aW5nIGEgUG9WLiBUaGlzIHdpbGwNASBhbHdheXMgYmUgdXBkYXRlZCB0byB0aGUgbGF0ZXN0IEF1UmEgYXV0aG9yaXRpZXMgaW4gYG9uX2ZpbmFsaXplYC4ANFJlbGF5U2xvdEluZm8AALEFBAAQCQEgQ3VycmVudCByZWxheSBjaGFpbiBzbG90IHBhaXJlZCB3aXRoIGEgbnVtYmVyIG9mIGF1dGhvcmVkIGJsb2Nrcy4AZQEgVGhpcyBpcyB1cGRhdGVkIGluIFtgRml4ZWRWZWxvY2l0eUNvbnNlbnN1c0hvb2s6Om9uX3N0YXRlX3Byb29mYF0gd2l0aCB0aGUgY3VycmVudCByZWxhedwgY2hhaW4gc2xvdCBhcyBwcm92aWRlZCBieSB0aGUgcmVsYXkgY2hhaW4gc3RhdGUgcHJvb2YuAAAAAAAAABgAACRYY21wUXVldWUBJFhjbXBRdWV1ZRxQSW5ib3VuZFhjbXBTdXNwZW5kZWQBALUFBAAgDQEgVGhlIHN1c3BlbmRlZCBpbmJvdW5kIFhDTVAgY2hhbm5lbHMuIEFsbCBvdGhlcnMgYXJlIG5vdCBzdXNwZW5kZWQuAHEBIFRoaXMgaXMgYSBgU3RvcmFnZVZhbHVlYCBpbnN0ZWFkIG9mIGEgYFN0b3JhZ2VNYXBgIHNpbmNlIHdlIGV4cGVjdCBtdWx0aXBsZSByZWFkcyBwZXIgYmxvY2tpASB0byBkaWZmZXJlbnQga2V5cyB3aXRoIGEgb25lIGJ5dGUgcGF5bG9hZC4gVGhlIGFjY2VzcyB0byBgQm91bmRlZEJUcmVlU2V0YCB3aWxsIGJlIGNhY2hlZBUBIHdpdGhpbiB0aGUgYmxvY2sgYW5kIHRoZXJlZm9yZSBvbmx5IGluY2x1ZGVkIG9uY2UgaW4gdGhlIHByb29mIHNpemUuAGUBIE5PVEU6IFRoZSBQb1YgYmVuY2htYXJraW5nIGNhbm5vdCBrbm93IHRoaXMgYW5kIHdpbGwgb3Zlci1lc3RpbWF0ZSwgYnV0IHRoZSBhY3R1YWwgcHJvb2ZEIHdpbGwgYmUgc21hbGxlci4ASE91dGJvdW5kWGNtcFN0YXR1cwEAwQUEABhdASBUaGUgbm9uLWVtcHR5IFhDTVAgY2hhbm5lbHMgaW4gb3JkZXIgb2YgYmVjb21pbmcgbm9uLWVtcHR5LCBhbmQgdGhlIGluZGV4IG9mIHRoZSBmaXJzdFEBIGFuZCBsYXN0IG91dGJvdW5kIG1lc3NhZ2UuIElmIHRoZSB0d28gaW5kaWNlcyBhcmUgZXF1YWwsIHRoZW4gaXQgaW5kaWNhdGVzIGFuIGVtcHR5WQEgcXVldWUgYW5kIHRoZXJlIG11c3QgYmUgYSBub24tYE9rYCBgT3V0Ym91bmRTdGF0dXNgLiBXZSBhc3N1bWUgcXVldWVzIGdyb3cgbm8gZ3JlYXRlclkBIHRoYW4gNjU1MzUgaXRlbXMuIFF1ZXVlIGluZGljZXMgZm9yIG5vcm1hbCBtZXNzYWdlcyBiZWdpbiBhdCBvbmU7IHplcm8gaXMgcmVzZXJ2ZWQgaW4RASBjYXNlIG9mIHRoZSBuZWVkIHRvIHNlbmQgYSBoaWdoLXByaW9yaXR5IHNpZ25hbCBtZXNzYWdlIHRoaXMgYmxvY2suCQEgVGhlIGJvb2wgaXMgdHJ1ZSBpZiB0aGVyZSBpcyBhIHNpZ25hbCBtZXNzYWdlIHdhaXRpbmcgdG8gYmUgc2VudC4AUE91dGJvdW5kWGNtcE1lc3NhZ2VzAQEIAgXRBdUFBAAEvCBUaGUgbWVzc2FnZXMgb3V0Ym91bmQgaW4gYSBnaXZlbiBYQ01QIGNoYW5uZWwuADhTaWduYWxNZXNzYWdlcwEBBAKc1QUEAASgIEFueSBzaWduYWwgbWVzc2FnZXMgd2FpdGluZyB0byBiZSBzZW50LgAsUXVldWVDb25maWcBANkFMCAAAAAwAAAACAAAAAQVASBUaGUgY29uZmlndXJhdGlvbiB3aGljaCBjb250cm9scyB0aGUgZHluYW1pY3Mgb2YgdGhlIG91dGJvdW5kIHF1ZXVlLgA4UXVldWVTdXNwZW5kZWQBADEBBAAEQQEgV2hldGhlciBvciBub3QgdGhlIFhDTVAgcXVldWUgaXMgc3VzcGVuZGVkIGZyb20gZXhlY3V0aW5nIGluY29taW5nIFhDTXMgb3Igbm90LgBERGVsaXZlcnlGZWVGYWN0b3IBAQQFnAEFQAAAZKeztuANAAAAAAAAAAAExCBUaGUgZmFjdG9yIHRvIG11bHRpcGx5IHRoZSBiYXNlIGRlbGl2ZXJ5IGZlZSBieS4AAV0BAAEJBAAMTE1heEluYm91bmRTdXNwZW5kZWQ4EOgDAAAUSQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGluYm91bmQgWENNUCBjaGFubmVscyB0aGF0IGNhbiBiZSBzdXNwZW5kZWQgc2ltdWx0YW5lb3VzbHkuAF0BIEFueSBmdXJ0aGVyIGNoYW5uZWwgc3VzcGVuc2lvbnMgd2lsbCBmYWlsIGFuZCBtZXNzYWdlcyBtYXkgZ2V0IGRyb3BwZWQgd2l0aG91dCBmdXJ0aGVyRQEgbm90aWNlLiBDaG9vc2luZyBhIGhpZ2ggdmFsdWUgKDEwMDApIGlzIG9rYXk7IHRoZSB0cmFkZS1vZmYgdGhhdCBpcyBkZXNjcmliZWQgaW7YIFtgSW5ib3VuZFhjbXBTdXNwZW5kZWRgXSBzdGlsbCBhcHBsaWVzIGF0IHRoYXQgc2NhbGUuAGRNYXhBY3RpdmVPdXRib3VuZENoYW5uZWxzOBCAAAAAIGUBIE1heGltYWwgbnVtYmVyIG9mIG91dGJvdW5kIFhDTVAgY2hhbm5lbHMgdGhhdCBjYW4gaGF2ZSBtZXNzYWdlcyBxdWV1ZWQgYXQgdGhlIHNhbWUgdGltZS4AVQEgSWYgdGhpcyBpcyByZWFjaGVkLCB0aGVuIG5vIGZ1cnRoZXIgbWVzc2FnZXMgY2FuIGJlIHNlbnQgdG8gY2hhbm5lbHMgdGhhdCBkbyBub3QgeWV0XQEgaGF2ZSBhIG1lc3NhZ2UgcXVldWVkLiBUaGlzIHNob3VsZCBiZSBzZXQgdG8gdGhlIGV4cGVjdGVkIG1heGltdW0gb2Ygb3V0Ym91bmQgY2hhbm5lbHNhASB3aGljaCBpcyBkZXRlcm1pbmVkIGJ5IFtgU2VsZjo6Q2hhbm5lbEluZm9gXS4gSXQgaXMgaW1wb3J0YW50IHRvIHNldCB0aGlzIGxhcmdlIGVub3VnaCxdASBzaW5jZSBvdGhlcndpc2UgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBwcm90b2NvbCB3aWxsIG5vdCB3b3JrIGFzIGludGVuZGVkIGFuZCBtZXNzYWdlc1EBIG1heSBiZSBkcm9wcGVkLiBUaGlzIHZhbHVlIGluY3JlYXNlcyB0aGUgUG9WIGFuZCBzaG91bGQgdGhlcmVmb3JlIG5vdCBiZSBwaWNrZWQgdG9vTQEgaGlnaC4gR292ZXJuYW5jZSBuZWVkcyB0byBwYXkgYXR0ZW50aW9uIHRvIG5vdCBvcGVuIG1vcmUgY2hhbm5lbHMgdGhhbiB0aGlzIHZhbHVlLgAsTWF4UGFnZVNpemU4EACcAQAUuCBUaGUgbWF4aW1hbCBwYWdlIHNpemUgZm9yIEhSTVAgbWVzc2FnZSBwYWdlcy4AYQEgQSBsb3dlciBsaW1pdCBjYW4gYmUgc2V0IGR5bmFtaWNhbGx5LCBidXQgdGhpcyBpcyB0aGUgaGFyZC1saW1pdCBmb3IgdGhlIFBvViB3b3JzdCBjYXNlVQEgYmVuY2htYXJraW5nLiBUaGUgbGltaXQgZm9yIHRoZSBzaXplIG9mIGEgbWVzc2FnZSBpcyBzbGlnaHRseSBiZWxvdyB0aGlzLCBzaW5jZSBzb21luCBvdmVyaGVhZCBpcyBpbmN1cnJlZCBmb3IgZW5jb2RpbmcgdGhlIGZvcm1hdC4AAd0FAAAAHgAALFBvbGthZG90WGNtASxQb2xrYWRvdFhjbTwwUXVlcnlDb3VudGVyAQAoIAAAAAAAAAAABIggVGhlIGxhdGVzdCBhdmFpbGFibGUgcXVlcnkgaW5kZXguABxRdWVyaWVzAAEEAijhBQQABFQgVGhlIG9uZ29pbmcgcXVlcmllcy4AKEFzc2V0VHJhcHMBAQQGPDgQAAAAABBoIFRoZSBleGlzdGluZyBhc3NldCB0cmFwcy4AYQEgS2V5IGlzIHRoZSBibGFrZTIgMjU2IGhhc2ggb2YgKG9yaWdpbiwgdmVyc2lvbmVkIGBBc3NldHNgKSBwYWlyLiBWYWx1ZSBpcyB0aGUgbnVtYmVyIG9mHQEgdGltZXMgdGhpcyBwYWlyIGhhcyBiZWVuIHRyYXBwZWQgKHVzdWFsbHkganVzdCAxIGlmIGl0IGV4aXN0cyBhdCBhbGwpLgA4U2FmZVhjbVZlcnNpb24AADgEAAhhASBEZWZhdWx0IHZlcnNpb24gdG8gZW5jb2RlIFhDTSB3aGVuIGxhdGVzdCB2ZXJzaW9uIG9mIGRlc3RpbmF0aW9uIGlzIHVua25vd24uIElmIGBOb25lYCw9ASB0aGVuIHRoZSBkZXN0aW5hdGlvbnMgd2hvc2UgWENNIHZlcnNpb24gaXMgdW5rbm93biBhcmUgY29uc2lkZXJlZCB1bnJlYWNoYWJsZS4AQFN1cHBvcnRlZFZlcnNpb24AAQgFAvUFOAQABPAgVGhlIExhdGVzdCB2ZXJzaW9ucyB0aGF0IHdlIGtub3cgdmFyaW91cyBsb2NhdGlvbnMgc3VwcG9ydC4AQFZlcnNpb25Ob3RpZmllcnMAAQgFAvUFKAQABAUBIEFsbCBsb2NhdGlvbnMgdGhhdCB3ZSBoYXZlIHJlcXVlc3RlZCB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMgZnJvbS4AUFZlcnNpb25Ob3RpZnlUYXJnZXRzAAEIBQL1BfkFBAAIcQEgVGhlIHRhcmdldCBsb2NhdGlvbnMgdGhhdCBhcmUgc3Vic2NyaWJlZCB0byBvdXIgdmVyc2lvbiBjaGFuZ2VzLCBhcyB3ZWxsIGFzIHRoZSBtb3N0IHJlY2VudJQgb2Ygb3VyIHZlcnNpb25zIHdlIGluZm9ybWVkIHRoZW0gb2YuAFRWZXJzaW9uRGlzY292ZXJ5UXVldWUBAP0FBAAMZQEgRGVzdGluYXRpb25zIHdob3NlIGxhdGVzdCBYQ00gdmVyc2lvbiB3ZSB3b3VsZCBsaWtlIHRvIGtub3cuIER1cGxpY2F0ZXMgbm90IGFsbG93ZWQsIGFuZHEBIHRoZSBgdTMyYCBjb3VudGVyIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBhIHNlbmQgdG8gdGhlIGRlc3RpbmF0aW9uIGhhcyBiZWVuIGF0dGVtcHRlZCyMIHdoaWNoIGlzIHVzZWQgYXMgYSBwcmlvcml0aXphdGlvbi4AQEN1cnJlbnRNaWdyYXRpb24AAAkGBAAEnCBUaGUgY3VycmVudCBtaWdyYXRpb24ncyBzdGFnZSwgaWYgYW55LgBUUmVtb3RlTG9ja2VkRnVuZ2libGVzAAEMBQICDQYRBgQABPAgRnVuZ2libGUgYXNzZXRzIHdoaWNoIHdlIGtub3cgYXJlIGxvY2tlZCBvbiBhIHJlbW90ZSBjaGFpbi4APExvY2tlZEZ1bmdpYmxlcwABBAIEIQYEAATgIEZ1bmdpYmxlIGFzc2V0cyB3aGljaCB3ZSBrbm93IGFyZSBsb2NrZWQgb24gdGhpcyBjaGFpbi4AVFhjbUV4ZWN1dGlvblN1c3BlbmRlZAEAMQEEAAS0IEdsb2JhbCBzdXNwZW5zaW9uIHN0YXRlIG9mIHRoZSBYQ00gZXhlY3V0b3IuADxTaG91bGRSZWNvcmRYY20BADEBBAAcWQEgV2hldGhlciBvciBub3QgaW5jb21pbmcgWENNcyAoYm90aCBleGVjdXRlZCBsb2NhbGx5IGFuZCByZWNlaXZlZCkgc2hvdWxkIGJlIHJlY29yZGVkLsQgT25seSBvbmUgWENNIHByb2dyYW0gd2lsbCBiZSByZWNvcmRlZCBhdCBhIHRpbWUuKQEgVGhpcyBpcyBtZWFudCB0byBiZSB1c2VkIGluIHJ1bnRpbWUgQVBJcywgYW5kIGl0J3MgYWR2aXNlZCBpdCBzdGF5cyBmYWxzZQ0BIGZvciBhbGwgb3RoZXIgdXNlIGNhc2VzLCBzbyBhcyB0byBub3QgZGVncmFkZSByZWd1bGFyIHBlcmZvcm1hbmNlLgBZASBPbmx5IHJlbGV2YW50IGlmIHRoaXMgcGFsbGV0IGlzIGJlaW5nIHVzZWQgYXMgdGhlIFtgeGNtX2V4ZWN1dG9yOjp0cmFpdHM6OlJlY29yZFhjbWBdyCBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgWENNIGV4ZWN1dG9yIGNvbmZpZ3VyYXRpb24uACxSZWNvcmRlZFhjbQAAdQIEABhJASBJZiBbYFNob3VsZFJlY29yZFhjbWBdIGlzIHNldCB0byB0cnVlLCB0aGVuIHRoZSBsYXN0IFhDTSBwcm9ncmFtIGV4ZWN1dGVkIGxvY2FsbHlUIHdpbGwgYmUgc3RvcmVkIGhlcmUuKQEgUnVudGltZSBBUElzIGNhbiBmZXRjaCB0aGUgWENNIHRoYXQgd2FzIGV4ZWN1dGVkIGJ5IGFjY2Vzc2luZyB0aGlzIHZhbHVlLgBZASBPbmx5IHJlbGV2YW50IGlmIHRoaXMgcGFsbGV0IGlzIGJlaW5nIHVzZWQgYXMgdGhlIFtgeGNtX2V4ZWN1dG9yOjp0cmFpdHM6OlJlY29yZFhjbWBdyCBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgWENNIGV4ZWN1dG9yIGNvbmZpZ3VyYXRpb24uAERBdXRob3JpemVkQWxpYXNlcwABBAJlAS0GBAAMZQEgTWFwIG9mIGF1dGhvcml6ZWQgYWxpYXNlcnMgb2YgbG9jYWwgb3JpZ2lucy4gRWFjaCBsb2NhbCBsb2NhdGlvbiBjYW4gYXV0aG9yaXplIGEgbGlzdCBvZlkBIG90aGVyIGxvY2F0aW9ucyB0byBhbGlhcyBpbnRvIGl0LiBFYWNoIGFsaWFzZXIgaXMgb25seSB2YWxpZCB1bnRpbCBpdHMgaW5uZXIgYGV4cGlyeWA4IGJsb2NrIG51bWJlci4AAWEBCAECuQFUaGlzIGV4dHJpbnNpYyB1c2VzIGBXZWlnaHRMaW1pdDo6VW5saW1pdGVkYCwgcGxlYXNlIG1pZ3JhdGUgdG8gYGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzYCBvciBgdHJhbnNmZXJfYXNzZXRzYAACAtkBVGhpcyBleHRyaW5zaWMgdXNlcyBgV2VpZ2h0TGltaXQ6OlVubGltaXRlZGAsIHBsZWFzZSBtaWdyYXRlIHRvIGBsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzYCBvciBgdHJhbnNmZXJfYXNzZXRzYAABDQQAEERVbml2ZXJzYWxMb2NhdGlvbuSYAgkA4UPyOAOsUOj2+OYmldHOnk4daKo2wc0s/RU0AhPzQj4A+U8EhCBUaGlzIGNoYWluJ3MgVW5pdmVyc2FsIExvY2F0aW9uLgBQQWR2ZXJ0aXNlZFhjbVZlcnNpb244EAUAAAAIJQEgVGhlIGxhdGVzdCBzdXBwb3J0ZWQgdmVyc2lvbiB0aGF0IHdlIGFkdmVydGlzZS4gR2VuZXJhbGx5IGp1c3Qgc2V0IGl0IHRvhCBgcGFsbGV0X3hjbTo6Q3VycmVudFhjbVZlcnNpb25gLgAoTWF4TG9ja2VyczgQCAAAAAQZASBUaGUgbWF4aW11bSBudW1iZXIgb2YgbG9jYWwgWENNIGxvY2tzIHRoYXQgYSBzaW5nbGUgYWNjb3VudCBtYXkgaGF2ZS4AWE1heFJlbW90ZUxvY2tDb25zdW1lcnM4EAAAAAAE/CBUaGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGEgc2luZ2xlIHJlbW90ZSBsb2NrIG1heSBoYXZlLgABRQYEGAK8VXNlIGBMb2NhbEV4ZWN1dGlvbkluY29tcGxldGVXaXRoRXJyb3JgIGluc3RlYWQBGDIwLjAuMAgsUnVudGltZUNhbGwgBGQgVGhlIHJ1bnRpbWUgYENhbGxgIHR5cGUucFJlbW90ZUxvY2tDb25zdW1lcklkZW50aWZpZXIQBMQgVGhlIElEIHR5cGUgZm9yIGxvY2FsIGNvbnN1bWVycyBvZiByZW1vdGUgbG9ja3MuAB8AAChDdW11bHVzWGNtAAExAwABHQQAAAAAACAAADBNZXNzYWdlUXVldWUBME1lc3NhZ2VRdWV1ZQwwQm9va1N0YXRlRm9yAQEEBTkDTQZ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEzCBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IGFuZCBsYXN0IChub24tZW1wdHkpIHBhZ2VzLgAsU2VydmljZUhlYWQAADkDBAAEvCBUaGUgb3JpZ2luIGF0IHdoaWNoIHdlIHNob3VsZCBiZWdpbiBzZXJ2aWNpbmcuABRQYWdlcwABCAUFWQZdBgQABIggVGhlIG1hcCBvZiBwYWdlIGluZGljZXMgdG8gcGFnZXMuAAE1AwABIQQAECBIZWFwU2l6ZTgQAJwBABQ9ASBUaGUgc2l6ZSBvZiB0aGUgcGFnZTsgdGhpcyBpbXBsaWVzIHRoZSBtYXhpbXVtIG1lc3NhZ2Ugc2l6ZSB3aGljaCBjYW4gYmUgc2VudC4AWQEgQSBnb29kIHZhbHVlIGRlcGVuZHMgb24gdGhlIGV4cGVjdGVkIG1lc3NhZ2Ugc2l6ZXMsIHRoZWlyIHdlaWdodHMsIHRoZSB3ZWlnaHQgdGhhdCBpc10BIGF2YWlsYWJsZSBmb3IgcHJvY2Vzc2luZyB0aGVtIGFuZCB0aGUgbWF4aW1hbCBuZWVkZWQgbWVzc2FnZSBzaXplLiBUaGUgbWF4aW1hbCBtZXNzYWdlEQEgc2l6ZSBpcyBzbGlnaHRseSBsb3dlciB0aGFuIHRoaXMgYXMgZGVmaW5lZCBieSBbYE1heE1lc3NhZ2VMZW5PZmBdLgAgTWF4U3RhbGU4EAgAAAAMXQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWxlIHBhZ2VzIChpLmUuIG9mIG92ZXJ3ZWlnaHQgbWVzc2FnZXMpIGFsbG93ZWQgYmVmb3JlIGN1bGxpbmdRASBjYW4gaGFwcGVuLiBPbmNlIHRoZXJlIGFyZSBtb3JlIHN0YWxlIHBhZ2VzIHRoYW4gdGhpcywgdGhlbiBoaXN0b3JpY2FsIHBhZ2VzIG1heSBiZfwgZHJvcHBlZCwgZXZlbiBpZiB0aGV5IGNvbnRhaW4gdW5wcm9jZXNzZWQgb3ZlcndlaWdodCBtZXNzYWdlcy4ANFNlcnZpY2VXZWlnaHS9AiwBBwBYQPuiAgDgABhBASBUaGUgYW1vdW50IG9mIHdlaWdodCAoaWYgYW55KSB3aGljaCBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdGhlIG1lc3NhZ2UgcXVldWUgZm9yqCBzZXJ2aWNpbmcgZW5xdWV1ZWQgaXRlbXMgYG9uX2luaXRpYWxpemVgLgD8IFRoaXMgbWF5IGJlIGxlZ2l0aW1hdGVseSBgTm9uZWAgaW4gdGhlIGNhc2UgdGhhdCB5b3Ugd2lsbCBjYWxsXQEgYFNlcnZpY2VRdWV1ZXM6OnNlcnZpY2VfcXVldWVzYCBtYW51YWxseSBvciBzZXQgW2BTZWxmOjpJZGxlTWF4U2VydmljZVdlaWdodGBdIHRvIGhhdmVUIGl0IHJ1biBpbiBgb25faWRsZWAuAFBJZGxlTWF4U2VydmljZVdlaWdodL0CLAEHAFhA+6ICAOAAFF0BIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgKGlmIGFueSkgdG8gYmUgdXNlZCBmcm9tIHJlbWFpbmluZyB3ZWlnaHQgYG9uX2lkbGVgIHdoaWNoQQEgc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIGZvciBzZXJ2aWNpbmcgZW5xdWV1ZWQgaXRlbXMgYG9uX2lkbGVgLj0BIFVzZWZ1bCBmb3IgcGFyYWNoYWlucyB0byBwcm9jZXNzIG1lc3NhZ2VzIGF0IHRoZSBzYW1lIGJsb2NrIHRoZXkgYXJlIHJlY2VpdmVkLgApASBJZiBgTm9uZWAsIGl0IHdpbGwgbm90IGNhbGwgYFNlcnZpY2VRdWV1ZXM6OnNlcnZpY2VfcXVldWVzYCBpbiBgb25faWRsZWAuAAFlBgAEEFNpemU4BFQgUGFnZS9oZWFwIHNpemUgdHlwZS4AIgAAEFN1ZG8BEFN1ZG8EDEtleQAABAQABIQgVGhlIGBBY2NvdW50SWRgIG9mIHRoZSBzdWRvIGtleS4AAT0DAAEpBAAAAWkGAAQsUnVudGltZUNhbGwgBEggQSBzdWRvLWFibGUgY2FsbC4AZAAACAQFACBBAwQAMAAECAwQFBgcICQoLDA0QXV0aG9yaXplQ2FsbE0DEEhDaGVja05vblplcm9TZW5kZXJRAxBAQ2hlY2tTcGVjVmVyc2lvblUDODhDaGVja1R4VmVyc2lvblkDODBDaGVja0dlbmVzaXNdAzw4Q2hlY2tNb3J0YWxpdHlhAzwoQ2hlY2tOb25jZWkDECxDaGVja1dlaWdodG0DEGBDaGFyZ2VUcmFuc2FjdGlvblBheW1lbnRxAxBQVmFsaWRhdGVTdG9yYWdlQ2FsbHN1AxBEQ2hlY2tNZXRhZGF0YUhhc2h5A4EDUFN0b3JhZ2VXZWlnaHRSZWNsYWltEBBUHEF1cmFBcGkINHNsb3RfZHVyYXRpb24AbQYMkCBSZXR1cm5zIHRoZSBzbG90IGR1cmF0aW9uIGZvciBBdXJhLgAlASBDdXJyZW50bHksIG9ubHkgdGhlIHZhbHVlIHByb3ZpZGVkIGJ5IHRoaXMgdHlwZSBhdCBnZW5lc2lzIHdpbGwgYmUgdXNlZC4ALGF1dGhvcml0aWVzAKkFBJwgUmV0dXJuIHRoZSBjdXJyZW50IHNldCBvZiBhdXRob3JpdGllcy4ABLggQVBJIG5lY2Vzc2FyeSBmb3IgYmxvY2sgYXV0aG9yc2hpcCB3aXRoIGF1cmEuBABQUmVsYXlQYXJlbnRPZmZzZXRBcGkETHJlbGF5X3BhcmVudF9vZmZzZXQAOAT0IEZldGNoIHRoZSBzbG90IG9mZnNldCB0aGF0IGlzIGV4cGVjdGVkIGZyb20gdGhlIHJlbGF5IGNoYWluLgAQBQEgQVBJIHRvIHRlbGwgdGhlIG5vZGUgc2lkZSBob3cgdGhlIHJlbGF5IHBhcmVudCBzaG91bGQgYmUgY2hvc2VuLgBpASBBIGxhcmdlciBvZmZzZXQgaW5kaWNhdGVzIHRoYXQgdGhlIHJlbGF5IHBhcmVudCBzaG91bGQgbm90IGJlIHRoZSB0aXAgb2YgdGhlIHJlbGF5IGNoYWluLDEBIGJ1dCBgTmAgYmxvY2tzIGJlaGluZCB0aGUgdGlwLiBUaGlzIG9mZnNldCBpcyB0aGVuIGVuZm9yY2VkIGJ5IHRoZSBydW50aW1lLgQAYEF1cmFVbmluY2x1ZGVkU2VnbWVudEFwaQQ4Y2FuX2J1aWxkX3Vwb24INGluY2x1ZGVkX2hhc2g8EHNsb3StBTEBKDkBIFdoZXRoZXIgaXQgaXMgbGVnYWwgdG8gZXh0ZW5kIHRoZSBjaGFpbiwgYXNzdW1pbmcgdGhlIGdpdmVuIGJsb2NrIGlzIHRoZSBtb3N0NQEgcmVjZW50bHkgaW5jbHVkZWQgb25lIGFzLW9mIHRoZSByZWxheSBwYXJlbnQgdGhhdCB3aWxsIGJlIGJ1aWx0IGFnYWluc3QsIGFuZHAgdGhlIGdpdmVuIHJlbGF5IGNoYWluIHNsb3QuAFEBIFRoaXMgc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9naWMgdGhlIHJ1bnRpbWUgdXNlcyB3aGVuIHZhbGlkYXRpbmcgYmxvY2tzIHRvOCBhdm9pZCBpc3N1ZXMuAGEBIFdoZW4gdGhlIHVuaW5jbHVkZWQgc2VnbWVudCBpcyBlbXB0eSwgaS5lLiBgaW5jbHVkZWRfaGFzaCA9PSBhdGAsIHdoZXJlIGF0IGlzIHRoZSBibG9ja2EBIHdob3NlIHN0YXRlIHdlIGFyZSBxdWVyeWluZyBhZ2FpbnN0LCB0aGlzIG11c3QgYWx3YXlzIHJldHVybiBgdHJ1ZWAgYXMgbG9uZyBhcyB0aGUgc2xvdLwgaXMgbW9yZSByZWNlbnQgdGhhbiB0aGUgaW5jbHVkZWQgYmxvY2sgaXRzZWxmLgA0NQEgVGhpcyBydW50aW1lIEFQSSBpcyB1c2VkIHRvIGluZm9ybSBwb3RlbnRpYWwgYmxvY2sgYXV0aG9ycyB3aGV0aGVyIHRoZXkgd2lsbCUBIGhhdmUgdGhlIHJpZ2h0IHRvIGF1dGhvciBhdCBhIHNsb3QsIGFzc3VtaW5nIHRoZXkgaGF2ZSBjbGFpbWVkIHRoZSBzbG90LgB1ASBJbiBwYXJ0aWN1bGFyLCB0aGlzIEFQSSBhbGxvd3MgQXVyYS1iYXNlZCBwYXJhY2hhaW5zIHRvIHJlZ3VsYXRlIHRoZWlyICJ1bmluY2x1ZGVkIHNlZ21lbnQiLG0BIHdoaWNoIGlzIHRoZSBzZWN0aW9uIG9mIHRoZSBoZWFkIG9mIHRoZSBjaGFpbiB3aGljaCBoYXMgbm90IHlldCBiZWVuIG1hZGUgYXZhaWxhYmxlIGluIHRoZTQgcmVsYXkgY2hhaW4uAGEBIFdoZW4gdGhlIHVuaW5jbHVkZWQgc2VnbWVudCBpcyBzaG9ydCwgQXVyYSBjaGFpbnMgd2lsbCBhbGxvdyBhdXRob3JzIHRvIGNyZWF0ZSBtdWx0aXBsZV0BIGJsb2NrcyBwZXIgc2xvdCBpbiBvcmRlciB0byBidWlsZCBhIGJhY2tsb2cuIFdoZW4gaXQgaXMgc2F0dXJhdGVkLCB0aGlzIEFQSSB3aWxsIGxpbWl0qCB0aGUgYW1vdW50IG9mIGJsb2NrcyB0aGF0IGNhbiBiZSBjcmVhdGVkLgAkIENoYW5nZXM6kQEgLSBWZXJzaW9uIDI6IFVwZGF0ZSB0byBgY2FuX2J1aWxkX3Vwb25gIHRvIHRha2UgYSByZWxheSBjaGFpbiBgU2xvdGAgaW5zdGVhZCBvZiBhIHBhcmFjaGFpbiBgU2xvdGAuCAAQQ29yZQwcdmVyc2lvbgBpBASQIFJldHVybnMgdGhlIHZlcnNpb24gb2YgdGhlIHJ1bnRpbWUuADRleGVjdXRlX2Jsb2NrBBRibG9ja3EGEARkIEV4ZWN1dGUgdGhlIGdpdmVuIGJsb2NrLgBAaW5pdGlhbGl6ZV9ibG9jawQYaGVhZGVyXH0GBEEBIEluaXRpYWxpemUgYSBibG9jayB3aXRoIHRoZSBnaXZlbiBoZWFkZXIgYW5kIHJldHVybiB0aGUgcnVudGltZSBleGVjdXRpdmUgbW9kZS4ABCEBIFRoZSBgQ29yZWAgcnVudGltZSBhcGkgdGhhdCBldmVyeSBTdWJzdHJhdGUgcnVudGltZSBuZWVkcyB0byBpbXBsZW1lbnQuFAAgTWV0YWRhdGEMIG1ldGFkYXRhAIEGBIwgUmV0dXJucyB0aGUgbWV0YWRhdGEgb2YgYSBydW50aW1lLgBMbWV0YWRhdGFfYXRfdmVyc2lvbgQcdmVyc2lvbjiFBhCkIFJldHVybnMgdGhlIG1ldGFkYXRhIGF0IGEgZ2l2ZW4gdmVyc2lvbi4ABQEgSWYgdGhlIGdpdmVuIGB2ZXJzaW9uYCBpc24ndCBzdXBwb3J0ZWQsIHRoaXMgd2lsbCByZXR1cm4gYE5vbmVgLnUBIFVzZSBbYFNlbGY6Om1ldGFkYXRhX3ZlcnNpb25zYF0gdG8gZmluZCBvdXQgYWJvdXQgc3VwcG9ydGVkIG1ldGFkYXRhIHZlcnNpb24gb2YgdGhlIHJ1bnRpbWUuAERtZXRhZGF0YV92ZXJzaW9ucwCJBgykIFJldHVybnMgdGhlIHN1cHBvcnRlZCBtZXRhZGF0YSB2ZXJzaW9ucy4AwCBUaGlzIGNhbiBiZSB1c2VkIHRvIGNhbGwgYG1ldGFkYXRhX2F0X3ZlcnNpb25gLgAEAQEgVGhlIGBNZXRhZGF0YWAgYXBpIHRyYWl0IHRoYXQgcmV0dXJucyBtZXRhZGF0YSBmb3IgdGhlIHJ1bnRpbWUuCAAwQmxvY2tCdWlsZGVyEDxhcHBseV9leHRyaW5zaWMEJGV4dHJpbnNpY4UEjQYQbCBBcHBseSB0aGUgZ2l2ZW4gZXh0cmluc2ljLgA5ASBSZXR1cm5zIGFuIGluY2x1c2lvbiBvdXRjb21lIHdoaWNoIHNwZWNpZmllcyBpZiB0aGlzIGV4dHJpbnNpYyBpcyBpbmNsdWRlZCBpbkwgdGhpcyBibG9jayBvciBub3QuADhmaW5hbGl6ZV9ibG9jawBcBGggRmluaXNoIHRoZSBjdXJyZW50IGJsb2NrLgBMaW5oZXJlbnRfZXh0cmluc2ljcwQgaW5oZXJlbnSdBpEEBD0BIEdlbmVyYXRlIGluaGVyZW50IGV4dHJpbnNpY3MuIFRoZSBpbmhlcmVudCBkYXRhIHdpbGwgdmFyeSBmcm9tIGNoYWluIHRvIGNoYWluLgA8Y2hlY2tfaW5oZXJlbnRzCBRibG9ja3EGEGRhdGGdBq0GBFUBIENoZWNrIHRoYXQgdGhlIGluaGVyZW50cyBhcmUgdmFsaWQuIFRoZSBpbmhlcmVudCBkYXRhIHdpbGwgdmFyeSBmcm9tIGNoYWluIHRvIGNoYWluLgAEcQEgVGhlIGBCbG9ja0J1aWxkZXJgIGFwaSB0cmFpdCB0aGF0IHByb3ZpZGVzIHRoZSByZXF1aXJlZCBmdW5jdGlvbmFsaXR5IGZvciBidWlsZGluZyBhIGJsb2NrLhgAWFRhZ2dlZFRyYW5zYWN0aW9uUXVldWUEUHZhbGlkYXRlX3RyYW5zYWN0aW9uDBhzb3VyY2WxBgh0eIUEKGJsb2NrX2hhc2g8tQYkaCBWYWxpZGF0ZSB0aGUgdHJhbnNhY3Rpb24uAGUBIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYnkgdGhlIHRyYW5zYWN0aW9uIHBvb2wgdG8gbGVhcm4gZGV0YWlscyBhYm91dCBnaXZlbiB0cmFuc2FjdGlvbi5FASBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIG1ha2Ugc3VyZSB0byB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSB0cmFuc2FjdGlvbk0BIGFnYWluc3QgY3VycmVudCBzdGF0ZS4gVGhlIGdpdmVuIGBibG9ja19oYXNoYCBjb3JyZXNwb25kcyB0byB0aGUgaGFzaCBvZiB0aGUgYmxvY2t8IHRoYXQgaXMgdXNlZCBhcyBjdXJyZW50IHN0YXRlLgBFASBOb3RlIHRoYXQgdGhpcyBjYWxsIG1heSBiZSBwZXJmb3JtZWQgYnkgdGhlIHBvb2wgbXVsdGlwbGUgdGltZXMgYW5kIHRyYW5zYWN0aW9uc6QgbWlnaHQgYmUgdmVyaWZpZWQgaW4gYW55IHBvc3NpYmxlIG9yZGVyLgAETQEgVGhlIGBUYWdnZWRUcmFuc2FjdGlvblF1ZXVlYCBhcGkgdHJhaXQgZm9yIGludGVyZmVyaW5nIHdpdGggdGhlIHRyYW5zYWN0aW9uIHF1ZXVlLgwARE9mZmNoYWluV29ya2VyQXBpBDxvZmZjaGFpbl93b3JrZXIEGGhlYWRlclwQBMggU3RhcnRzIHRoZSBvZmYtY2hhaW4gdGFzayBmb3IgZ2l2ZW4gYmxvY2sgaGVhZGVyLgAEZCBUaGUgb2ZmY2hhaW4gd29ya2VyIGFwaS4IACxTZXNzaW9uS2V5cwhUZ2VuZXJhdGVfc2Vzc2lvbl9rZXlzCBRvd25lchgQc2VlZP0DvQYcFQEgR2VuZXJhdGUgYSBzZXQgb2Ygc2Vzc2lvbiBrZXlzIHdpdGggb3B0aW9uYWxseSB1c2luZyB0aGUgZ2l2ZW4gc2VlZC4JASBUaGUga2V5cyBzaG91bGQgYmUgc3RvcmVkIHdpdGhpbiB0aGUga2V5c3RvcmUgZXhwb3NlZCB2aWEgcnVudGltZTwgZXh0ZXJuYWxpdGllcy4AsCBUaGUgc2VlZCBuZWVkcyB0byBiZSBhIHZhbGlkIGB1dGY4YCBzdHJpbmcuANAgUmV0dXJucyB0aGUgY29uY2F0ZW5hdGVkIFNDQUxFIGVuY29kZWQgcHVibGljIGtleXMuAExkZWNvZGVfc2Vzc2lvbl9rZXlzBBxlbmNvZGVkGMEGDJggRGVjb2RlIHRoZSBnaXZlbiBwdWJsaWMgc2Vzc2lvbiBrZXlzLgDcIFJldHVybnMgdGhlIGxpc3Qgb2YgcHVibGljIHJhdyBwdWJsaWMga2V5cyArIGtleSB0eXBlLgAEaCBTZXNzaW9uIGtleXMgcnVudGltZSBhcGkuCAA8QWNjb3VudE5vbmNlQXBpBDRhY2NvdW50X25vbmNlBBxhY2NvdW50BDgEwCBHZXQgY3VycmVudCBhY2NvdW50IG5vbmNlIG9mIGdpdmVuIGBBY2NvdW50SWRgLgAEgCBUaGUgQVBJIHRvIHF1ZXJ5IGFjY291bnQgbm9uY2UuBABUVHJhbnNhY3Rpb25QYXltZW50QXBpEChxdWVyeV9pbmZvCAx1eHSFBAxsZW44zQYAAERxdWVyeV9mZWVfZGV0YWlscwgMdXh0hQQMbGVuONEGAABMcXVlcnlfd2VpZ2h0X3RvX2ZlZQQYd2VpZ2h0KQH8AABMcXVlcnlfbGVuZ3RoX3RvX2ZlZQQYbGVuZ3RoOPwAAAAQAGRUcmFuc2FjdGlvblBheW1lbnRDYWxsQXBpEDxxdWVyeV9jYWxsX2luZm8IEGNhbGwgDGxlbjjNBgRJASBRdWVyeSBpbmZvcm1hdGlvbiBvZiBhIGRpc3BhdGNoIGNsYXNzLCB3ZWlnaHQsIGFuZCBmZWUgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4AWHF1ZXJ5X2NhbGxfZmVlX2RldGFpbHMIEGNhbGwgDGxlbjjRBgS0IFF1ZXJ5IGZlZSBkZXRhaWxzIG9mIGEgZ2l2ZW4gZW5jb2RlZCBgQ2FsbGAuAExxdWVyeV93ZWlnaHRfdG9fZmVlBBh3ZWlnaHQpAfwEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgV2VpZ2h0VG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4/AQBASBRdWVyeSB0aGUgb3V0cHV0IG9mIHRoZSBjdXJyZW50IGBMZW5ndGhUb0ZlZWAgZ2l2ZW4gc29tZSBpbnB1dC4AAAwANFhjbVBheW1lbnRBcGkQfHF1ZXJ5X2FjY2VwdGFibGVfcGF5bWVudF9hc3NldHMELHhjbV92ZXJzaW9uON0GFLQgUmV0dXJucyBhIGxpc3Qgb2YgYWNjZXB0YWJsZSBwYXltZW50IGFzc2V0cy4AMCAjIEFyZ3VtZW50cwBoICogYHhjbV92ZXJzaW9uYDogVmVyc2lvbi4AQHF1ZXJ5X3hjbV93ZWlnaHQEHG1lc3NhZ2WxAekGFKggUmV0dXJucyBhIHdlaWdodCBuZWVkZWQgdG8gZXhlY3V0ZSBhIFhDTS4AMCAjIEFyZ3VtZW50cwB0ICogYG1lc3NhZ2VgOiBgVmVyc2lvbmVkWGNtYC4AZHF1ZXJ5X3dlaWdodF90b19hc3NldF9mZWUIGHdlaWdodCkBFGFzc2V0KQPtBhjoIENvbnZlcnRzIGEgd2VpZ2h0IGludG8gYSBmZWUgZm9yIHRoZSBzcGVjaWZpZWQgYEFzc2V0SWRgLgAwICMgQXJndW1lbnRzAIggKiBgd2VpZ2h0YDogY29udmVydGlibGUgYFdlaWdodGAufCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldElkYC4ATHF1ZXJ5X2RlbGl2ZXJ5X2ZlZXMMLGRlc3RpbmF0aW9uZQEcbWVzc2FnZbEBIGFzc2V0X2lkKQPxBihgIFF1ZXJ5IGRlbGl2ZXJ5IGZlZXMgVjIuAB0BIEdldCBkZWxpdmVyeSBmZWVzIGZvciBzZW5kaW5nIGEgc3BlY2lmaWMgYG1lc3NhZ2VgIHRvIGEgYGRlc3RpbmF0aW9uYC70IFRoZXNlIGFsd2F5cyBjb21lIGluIGEgc3BlY2lmaWMgYXNzZXQsIGRlZmluZWQgYnkgdGhlIGNoYWluLgAwICMgQXJndW1lbnRzgQEgKiBgbWVzc2FnZWA6IFRoZSBtZXNzYWdlIHRoYXQnbGwgYmUgc2VudCwgbmVjZXNzYXJ5IGJlY2F1c2UgbW9zdCBkZWxpdmVyeSBmZWVzIGFyZSBiYXNlZCBvbiB0aGVcICAgc2l6ZSBvZiB0aGUgbWVzc2FnZS5hASAqIGBkZXN0aW5hdGlvbmA6IFRoZSBkZXN0aW5hdGlvbiB0byBzZW5kIHRoZSBtZXNzYWdlIHRvLiBEaWZmZXJlbnQgZGVzdGluYXRpb25zIG1heSB1c2XAICAgZGlmZmVyZW50IHNlbmRlcnMgdGhhdCBjaGFyZ2UgZGlmZmVyZW50IGZlZXMuACxwIEEgdHJhaXQgb2YgWENNIHBheW1lbnQgQVBJLgCoIEFQSSBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvciBvYnRhaW5pbmc6AMQgKiB0aGUgd2VpZ2h0IHJlcXVpcmVkIHRvIGV4ZWN1dGUgYW4gWENNIG1lc3NhZ2UsBQEgKiBhIGxpc3Qgb2YgYWNjZXB0YWJsZSBgQXNzZXRJZGBzIGZvciBtZXNzYWdlIGV4ZWN1dGlvbiBwYXltZW50LAEBICogdGhlIGNvc3Qgb2YgdGhlIHdlaWdodCBpbiB0aGUgc3BlY2lmaWVkIGFjY2VwdGFibGUgYEFzc2V0SWRgLqAgKiB0aGUgZmVlcyBmb3IgYW4gWENNIG1lc3NhZ2UgZGVsaXZlcnkuAPAgVG8gZGV0ZXJtaW5lIHRoZSBleGVjdXRpb24gd2VpZ2h0IG9mIHRoZSBjYWxscyByZXF1aXJlZCBmb3J1ASBbYHhjbTo6bGF0ZXN0OjpJbnN0cnVjdGlvbjo6VHJhbnNhY3RgXSBpbnN0cnVjdGlvbiwgYFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGlgIGNhbiBiZSB1c2VkLggAJERyeVJ1bkFwaQgwZHJ5X3J1bl9jYWxsDBhvcmlnaW7IEGNhbGwgTHJlc3VsdF94Y21zX3ZlcnNpb2449QYERCBEcnkgcnVuIGNhbGwgVjIuACxkcnlfcnVuX3hjbQg8b3JpZ2luX2xvY2F0aW9uZQEMeGNt9QIhBwRQIERyeSBydW4gWENNIHByb2dyYW0AJLEBIEFQSSBmb3IgZHJ5LXJ1bm5pbmcgZXh0cmluc2ljcyBhbmQgWENNIHByb2dyYW1zIHRvIGdldCB0aGUgcHJvZ3JhbXMgdGhhdCBuZWVkIHRvIGJlIHBhc3NlZCB0byB0aGUgZmVlcyBBUEkuAIEBIEFsbCBjYWxscyByZXR1cm4gYSB2ZWN0b3Igb2YgdHVwbGVzIChsb2NhdGlvbiwgeGNtKSB3aGVyZSBlYWNoICJ4Y20iIGlzIGV4ZWN1dGVkIGluICJsb2NhdGlvbiIu5CBJZiB0aGVyZSdzIGxvY2FsIGV4ZWN1dGlvbiwgdGhlIGxvY2F0aW9uIHdpbGwgYmUgIkhlcmUiLh0BIFRoaXMgdmVjdG9yIGNhbiBiZSB1c2VkIHRvIGNhbGN1bGF0ZSBib3RoIGV4ZWN1dGlvbiBhbmQgZGVsaXZlcnkgZmVlcy4AmQEgQ2FsbHMgb3IgWENNcyBtaWdodCBmYWlsIHdoZW4gZXhlY3V0ZWQsIHRoaXMgZG9lc24ndCBtZWFuIHRoZSByZXN1bHQgb2YgdGhlc2UgY2FsbHMgd2lsbCBiZSBhbiBgRXJyYC5lASBJbiB0aG9zZSBjYXNlcywgdGhlcmUgbWlnaHQgc3RpbGwgYmUgYSB2YWxpZCByZXN1bHQsIHdpdGggdGhlIGV4ZWN1dGlvbiBlcnJvciBpbnNpZGUgaXQuZQEgVGhlIG9ubHkgcmVhc29ucyB3aHkgdGhlc2UgY2FsbHMgbWlnaHQgcmV0dXJuIGFuIGVycm9yIGFyZSBsaXN0ZWQgaW4gdGhlIFtgRXJyb3JgXSBlbnVtLggAUExvY2F0aW9uVG9BY2NvdW50QXBpBEBjb252ZXJ0X2xvY2F0aW9uBCBsb2NhdGlvbmUBKQcEkCBDb252ZXJ0cyBgTG9jYXRpb25gIHRvIGBBY2NvdW50SWRgLgAEDQEgQVBJIGZvciB1c2VmdWwgY29udmVyc2lvbnMgYmV0d2VlbiBYQ00gYExvY2F0aW9uYCBhbmQgYEFjY291bnRJZGAuBAA8VHJ1c3RlZFF1ZXJ5QXBpCEhpc190cnVzdGVkX3Jlc2VydmUIFGFzc2V0MQcgbG9jYXRpb25lATUHFPAgUmV0dXJucyBpZiB0aGUgbG9jYXRpb24gaXMgYSB0cnVzdGVkIHJlc2VydmUgZm9yIHRoZSBhc3NldC4AMCAjIEFyZ3VtZW50c3QgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRgLowgKiBgbG9jYXRpb25gOiBgVmVyc2lvbmVkTG9jYXRpb25gLgBUaXNfdHJ1c3RlZF90ZWxlcG9ydGVyCBRhc3NldDEHIGxvY2F0aW9uZQE1BxTgIFJldHVybnMgaWYgdGhlIGFzc2V0IGNhbiBiZSB0ZWxlcG9ydGVkIHRvIHRoZSBsb2NhdGlvbi4AMCAjIEFyZ3VtZW50c3QgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRgLowgKiBgbG9jYXRpb25gOiBgVmVyc2lvbmVkTG9jYXRpb25gLgAE7CBBUEkgZm9yIHF1ZXJ5aW5nIHRydXN0ZWQgcmVzZXJ2ZXMgYW5kIHRydXN0ZWQgdGVsZXBvcnRlcnMuBABUQXV0aG9yaXplZEFsaWFzZXJzQXBpCExhdXRob3JpemVkX2FsaWFzZXJzBBh0YXJnZXRlAT0HBPQgUmV0dXJucyBsb2NhdGlvbnMgYWxsb3dlZCB0byBhbGlhcyBpbnRvIGFuZCBhY3QgYXMgYHRhcmdldGAuAExpc19hdXRob3JpemVkX2FsaWFzCBhvcmlnaW5lARh0YXJnZXRlAUUHBB0BIFJldHVybnMgd2hldGhlciBgb3JpZ2luYCBpcyBhbGxvd2VkIHRvIGFsaWFzIGludG8gYW5kIGFjdCBhcyBgdGFyZ2V0YC4ABKAgQVBJIGZvciBxdWVyeWluZyBYQ00gYXV0aG9yaXplZCBhbGlhc2VzBABQQ29sbGVjdENvbGxhdGlvbkluZm8EWGNvbGxlY3RfY29sbGF0aW9uX2luZm8EGGhlYWRlclxJBxCcIENvbGxlY3QgaW5mb3JtYXRpb24gYWJvdXQgYSBjb2xsYXRpb24uAPQgVGhlIGdpdmVuIGBoZWFkZXJgIGlzIHRoZSBoZWFkZXIgb2YgdGhlIGJ1aWx0IGJsb2NrIGZvciB0aGF0qCB3ZSBhcmUgY29sbGVjdGluZyB0aGUgY29sbGF0aW9uIGluZm8gZm9yLgAU2CBSdW50aW1lIGFwaSB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLgBEIFZlcnNpb24gaGlzdG9yeToBASAtIFZlcnNpb24gMjogQ2hhbmdlZCBbYFNlbGY6OmNvbGxlY3RfY29sbGF0aW9uX2luZm9gXSBzaWduYXR1cmU1ASAtIFZlcnNpb24gMzogU2lnbmFscyB0byB0aGUgbm9kZSB0byB1c2UgdmVyc2lvbiAxIG9mIFtgUGFyYWNoYWluQmxvY2tEYXRhYF0uDABUVHJhbnNhY3Rpb25TdG9yYWdlQXBpBEByZXRlbnRpb25fcGVyaW9kADgE2CBHZXQgdGhlIGFjdHVhbCB2YWx1ZSBvZiBhIHJldGVudGlvbiBwZXJpb2QgaW4gYmxvY2tzLgAEzCBSdW50aW1lIEFQSSB0cmFpdCBmb3IgdHJhbnNhY3Rpb24gc3RvcmFnZSBzdXBwb3J0LgQAOEdlbmVzaXNCdWlsZGVyDCxidWlsZF9zdGF0ZQQQanNvbhhVByhlASBCdWlsZCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gYSBKU09OIGJsb2Igbm90IHVzaW5nIGFueSBkZWZhdWx0cyBhbmQgc3RvcmUgaXQgaW4gdGhlJCBzdG9yYWdlLgApASBJbiB0aGUgY2FzZSBvZiBhIEZSQU1FLWJhc2VkIHJ1bnRpbWUsIHRoaXMgZnVuY3Rpb24gZGVzZXJpYWxpemVzIHRoZSBmdWxsVQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmcm9tIHRoZSBnaXZlbiBKU09OIGJsb2IgYW5kIHB1dHMgaXQgaW50byB0aGUgc3RvcmFnZS4gSWYgdGhlVQEgcHJvdmlkZWQgSlNPTiBibG9iIGlzIGluY29ycmVjdCBvciBpbmNvbXBsZXRlIG9yIHRoZSBkZXNlcmlhbGl6YXRpb24gZmFpbHMsIGFuIGVycm9yNCBpcyByZXR1cm5lZC4AXQEgUGxlYXNlIG5vdGUgdGhhdCBwcm92aWRlZCBKU09OIGJsb2IgbXVzdCBjb250YWluIGFsbCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZpZWxkcywgbm9cIGRlZmF1bHRzIHdpbGwgYmUgdXNlZC4AKGdldF9wcmVzZXQECGlkWQf9AzhhASBSZXR1cm5zIGEgSlNPTiBibG9iIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBidWlsdC1pbiBgUnVudGltZUdlbmVzaXNDb25maWdgIGlkZW50aWZpZWQgYnkYIGBpZGAuAFUBIElmIGBpZGAgaXMgYE5vbmVgIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIEpTT04gYmxvYiByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGVmYXVsdEkBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2Agc3RydWN0IG9mIHRoZSBydW50aW1lLiBJbXBsZW1lbnRhdGlvbiBtdXN0IHByb3ZpZGUgZGVmYXVsdGAgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYC4AIQEgT3RoZXJ3aXNlIGZ1bmN0aW9uIHJldHVybnMgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBidWlsdC1pbiwgbmFtZWRRASBgUnVudGltZUdlbmVzaXNDb25maWdgIHByZXNldCBpZGVudGlmaWVkIGJ5IGBpZGAsIG9yIGBOb25lYCBpZiBzdWNoIHByZXNldCBkb2VzIG5vdGEBIGV4aXN0LiBSZXR1cm5lZCBgVmVjPHU4PmAgY29udGFpbnMgYnl0ZXMgb2YgSlNPTiBibG9iIChwYXRjaCkgd2hpY2ggY29tcHJpc2VzIGEgbGlzdCBvZk0BIChwb3RlbnRpYWxseSBuZXN0ZWQpIGtleS12YWx1ZSBwYWlycyB0aGF0IGFyZSBpbnRlbmRlZCBmb3IgY3VzdG9taXppbmcgdGhlIGRlZmF1bHRlASBydW50aW1lIGdlbmVzaXMgY29uZmlnLiBUaGUgcGF0Y2ggc2hhbGwgYmUgbWVyZ2VkIChyZmM3Mzg2KSB3aXRoIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uYQEgb2YgdGhlIGRlZmF1bHQgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCB0byBjcmVhdGUgYSBjb21wcmVoZW5zaXZlIGdlbmVzaXMgY29uZmlnIHRoYXQgY2FuhCBiZSB1c2VkIGluIGBidWlsZF9zdGF0ZWAgbWV0aG9kLgAwcHJlc2V0X25hbWVzAF0HEFEBIFJldHVybnMgYSBsaXN0IG9mIGlkZW50aWZpZXJzIGZvciBhdmFpbGFibGUgYnVpbHRpbiBgUnVudGltZUdlbmVzaXNDb25maWdgIHByZXNldHMuAGEBIFRoZSBwcmVzZXRzIGZyb20gdGhlIGxpc3QgY2FuIGJlIHF1ZXJpZWQgd2l0aCBbYEdlbmVzaXNCdWlsZGVyOjpnZXRfcHJlc2V0YF0gbWV0aG9kLiBJZgEBIG5vIG5hbWVkIHByZXNldHMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBydW50aW1lIHRoZSBsaXN0IGlzIGVtcHR5LgAE8CBBUEkgdG8gaW50ZXJhY3Qgd2l0aCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZvciB0aGUgcnVudGltZQQAQEdldFBhcmFjaGFpbkluZm8EMHBhcmFjaGFpbl9pZACcBLAgUmV0cmlldmUgdGhlIHBhcmFjaGFpbiBpZCB1c2VkIGZvciBydW50aW1lLgAEDQEgUnVudGltZSBhcGkgdXNlZCB0byBhY2Nlc3MgZ2VuZXJhbCBpbmZvIGFib3V0IGEgcGFyYWNoYWluIHJ1bnRpbWUuBAAgnQNhBwA="; + binMeta2 = "bWV0YRARCAAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCFhidWxsZXRpbl9wYXNlb19ydW50aW1lLFJ1bnRpbWVDYWxsAAFEGFN5c3RlbQQAJAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTeXN0ZW0sIFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAQAHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhY2hhaW5TeXN0ZW0sIFJ1bnRpbWU+AAEAJFRpbWVzdGFtcAQAsAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUaW1lc3RhbXAsIFJ1bnRpbWU+AAMANFBhcmFjaGFpbkluZm8EALgByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluSW5mbywgUnVudGltZT4ABAAcVXRpbGl0eQQAvAGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxVdGlsaXR5LCBSdW50aW1lPgAGAFBNdWx0aUJsb2NrTWlncmF0aW9ucwQALQEB5QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlCbG9ja01pZ3JhdGlvbnMsIFJ1bnRpbWU+AAcAIEJhbGFuY2VzBABZAQG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxCYWxhbmNlcywgUnVudGltZT4ACgBIVHJhbnNhY3Rpb25TdG9yYWdlBABpAQHdAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUcmFuc2FjdGlvblN0b3JhZ2UsIFJ1bnRpbWU+ACgAMEhvcFByb21vdGlvbgQAiQEBxQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8SG9wUHJvbW90aW9uLCBSdW50aW1lPgApACxEYXRhUmVuZXdhbAQAoQEBwQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8RGF0YVJlbmV3YWwsIFJ1bnRpbWU+ACoARENvbGxhdG9yU2VsZWN0aW9uBACpAQHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDb2xsYXRvclNlbGVjdGlvbiwgUnVudGltZT4AFQAcU2Vzc2lvbgQArQEBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2Vzc2lvbiwgUnVudGltZT4AFgAkWGNtcFF1ZXVlBAC5AQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxYY21wUXVldWUsIFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBAC9AQHBAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQb2xrYWRvdFhjbSwgUnVudGltZT4AHwAoQ3VtdWx1c1hjbQQAiQMBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q3VtdWx1c1hjbSwgUnVudGltZT4AIAAwTWVzc2FnZVF1ZXVlBACNAwHFAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZXNzYWdlUXVldWUsIFJ1bnRpbWU+ACIAEFN1ZG8EAJUDAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN1ZG8sIFJ1bnRpbWU+AGQAACQMMGZyYW1lX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABLBhyZW1hcmsEARhyZW1hcmsYARxWZWM8dTg+AAAMaE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsuAIhDYW4gYmUgZXhlY3V0ZWQgYnkgZXZlcnkgYG9yaWdpbmAuOHNldF9oZWFwX3BhZ2VzBAEUcGFnZXMoAQx1NjQAAQT4U2V0IHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIFdlYkFzc2VtYmx5IGVudmlyb25tZW50J3MgaGVhcC4gc2V0X2NvZGUEARBjb2RlGAEcVmVjPHU4PgACBGRTZXQgdGhlIG5ldyBydW50aW1lIGNvZGUuXHNldF9jb2RlX3dpdGhvdXRfY2hlY2tzBAEQY29kZRgBHFZlYzx1OD4AAxAZAVNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZSB3aXRob3V0IGRvaW5nIGFueSBjaGVja3Mgb2YgdGhlIGdpdmVuIGBjb2RlYC4AUQFOb3RlIHRoYXQgcnVudGltZSB1cGdyYWRlcyB3aWxsIG5vdCBydW4gaWYgdGhpcyBpcyBjYWxsZWQgd2l0aCBhIG5vdC1pbmNyZWFzaW5nIHNwZWMgdmVyc2lvbiEsc2V0X3N0b3JhZ2UEARRpdGVtcywBNFZlYzxLZXlWYWx1ZT4ABARoU2V0IHNvbWUgaXRlbXMgb2Ygc3RvcmFnZS4wa2lsbF9zdG9yYWdlBAEQa2V5czQBIFZlYzxLZXk+AAUEdEtpbGwgc29tZSBpdGVtcyBmcm9tIHN0b3JhZ2UuLGtpbGxfcHJlZml4CAEYcHJlZml4GAEMS2V5AAEcc3Via2V5czgBDHUzMgAGEBEBS2lsbCBhbGwgc3RvcmFnZSBpdGVtcyB3aXRoIGEga2V5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeC4AOQEqKk5PVEU6KiogV2UgcmVseSBvbiB0aGUgUm9vdCBvcmlnaW4gdG8gcHJvdmlkZSB1cyB0aGUgbnVtYmVyIG9mIHN1YmtleXMgdW5kZXI9AXRoZSBwcmVmaXggd2UgYXJlIHJlbW92aW5nIHRvIGFjY3VyYXRlbHkgY2FsY3VsYXRlIHRoZSB3ZWlnaHQgb2YgdGhpcyBmdW5jdGlvbi5EcmVtYXJrX3dpdGhfZXZlbnQEARhyZW1hcmsYARxWZWM8dTg+AAcEpE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsgYW5kIGVtaXQgZXZlbnQuRGF1dGhvcml6ZV91cGdyYWRlBAEkY29kZV9oYXNoPAEcVDo6SGFzaAAJEGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi6AYXV0aG9yaXplX3VwZ3JhZGVfd2l0aG91dF9jaGVja3MEASRjb2RlX2hhc2g8ARxUOjpIYXNoAAogYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgBdAVdBUk5JTkc6IFRoaXMgYXV0aG9yaXplcyBhbiB1cGdyYWRlIHRoYXQgd2lsbCB0YWtlIHBsYWNlIHdpdGhvdXQgYW55IHNhZmV0eSBjaGVja3MsIGZvclkBZXhhbXBsZSB0aGF0IHRoZSBzcGVjIG5hbWUgcmVtYWlucyB0aGUgc2FtZSBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaW5jcmVhc2VzLiBOb3TwcmVjb21tZW5kZWQgZm9yIG5vcm1hbCB1c2UuIFVzZSBgYXV0aG9yaXplX3VwZ3JhZGVgIGluc3RlYWQuAHxUaGlzIGNhbGwgcmVxdWlyZXMgUm9vdCBvcmlnaW4uYGFwcGx5X2F1dGhvcml6ZWRfdXBncmFkZQQBEGNvZGUYARxWZWM8dTg+AAskVQFQcm92aWRlIHRoZSBwcmVpbWFnZSAocnVudGltZSBiaW5hcnkpIGBjb2RlYCBmb3IgYW4gdXBncmFkZSB0aGF0IGhhcyBiZWVuIGF1dGhvcml6ZWQuAEkBSWYgdGhlIGF1dGhvcml6YXRpb24gcmVxdWlyZWQgYSB2ZXJzaW9uIGNoZWNrLCB0aGlzIGNhbGwgd2lsbCBlbnN1cmUgdGhlIHNwZWMgbmFtZehyZW1haW5zIHVuY2hhbmdlZCBhbmQgdGhhdCB0aGUgc3BlYyB2ZXJzaW9uIGhhcyBpbmNyZWFzZWQuAFkBRGVwZW5kaW5nIG9uIHRoZSBydW50aW1lJ3MgYE9uU2V0Q29kZWAgY29uZmlndXJhdGlvbiwgdGhpcyBmdW5jdGlvbiBtYXkgZGlyZWN0bHkgYXBwbHkRAXRoZSBuZXcgYGNvZGVgIGluIHRoZSBzYW1lIGJsb2NrIG9yIGF0dGVtcHQgdG8gc2NoZWR1bGUgdGhlIHVwZ3JhZGUuAGBBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKAAABQYALAAAAjAAMAAABAgYGAA0AAACGAA4AAAFBQA8CDxwcmltaXRpdmVfdHlwZXMQSDI1NgAABAAIASBbdTg7IDMyXQAAQAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABCExzZXRfdmFsaWRhdGlvbl9kYXRhCAEQZGF0YUQBaEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAFUaW5ib3VuZF9tZXNzYWdlc19kYXRhfAFMSW5ib3VuZE1lc3NhZ2VzRGF0YQAAJIBTZXQgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBkYXRhLgBBAVRoaXMgc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIHBlciBibG9jay4gSXQgd2lsbCBwYW5pYyBhdCB0aGUgZmluYWxpemF0aW9uiHBoYXNlIGlmIHRoZSBjYWxsIHdhcyBub3QgaW52b2tlZC4A0FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBJbmhlcmVudGAAIQFBcyBhIHNpZGUgZWZmZWN0LCB0aGlzIGZ1bmN0aW9uIHVwZ3JhZGVzIHRoZSBjdXJyZW50IHZhbGlkYXRpb24gZnVuY3Rpb26EaWYgdGhlIGFwcHJvcHJpYXRlIHRpbWUgaGFzIGNvbWUuYHN1ZG9fc2VuZF91cHdhcmRfbWVzc2FnZQQBHG1lc3NhZ2UYATRVcHdhcmRNZXNzYWdlAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50aEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAAQATx2YWxpZGF0aW9uX2RhdGFIAVxQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YQABRHJlbGF5X2NoYWluX3N0YXRlUAFUc3BfdHJpZTo6U3RvcmFnZVByb29mAAFgcmVsYXlfcGFyZW50X2Rlc2NlbmRhbnRzWAFAVmVjPFJlbGF5SGVhZGVyPgABQGNvbGxhdG9yX3BlZXJfaWR0AVhPcHRpb248QXBwcm92ZWRQZWVySWQ+AABIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5XFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhCARIATwETgE4ABABLHBhcmVudF9oZWFkTAEgSGVhZERhdGEAAUxyZWxheV9wYXJlbnRfbnVtYmVyOAEETgABZHJlbGF5X3BhcmVudF9zdG9yYWdlX3Jvb3Q8AQRIAAEwbWF4X3Bvdl9zaXplOAEMdTMyAABMDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzIEhlYWREYXRhAAAEABgBHFZlYzx1OD4AAFAMHHNwX3RyaWU0c3RvcmFnZV9wcm9vZjBTdG9yYWdlUHJvb2YAAAQBKHRyaWVfbm9kZXNUAURCVHJlZVNldDxWZWM8dTg+PgAAVAQgQlRyZWVTZXQEBFQBGAAEADQAAABYAAACXABcEChzcF9ydW50aW1lHGdlbmVyaWMYaGVhZGVyGEhlYWRlcggYTnVtYmVyATgQSGFzaAAAFAEscGFyZW50X2hhc2g8ATBIYXNoOjpPdXRwdXQAARhudW1iZXJgARhOdW1iZXIAAShzdGF0ZV9yb290PAEwSGFzaDo6T3V0cHV0AAE8ZXh0cmluc2ljc19yb290PAEwSGFzaDo6T3V0cHV0AAEYZGlnZXN0ZAEYRGlnZXN0AABgAAAGOABkEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0GERpZ2VzdAAABAEQbG9nc2gBPFZlYzxEaWdlc3RJdGVtPgAAaAAAAmwAbBAoc3BfcnVudGltZRxnZW5lcmljGGRpZ2VzdChEaWdlc3RJdGVtAAEUKFByZVJ1bnRpbWUIAHABRENvbnNlbnN1c0VuZ2luZUlkAAAYARxWZWM8dTg+AAYAJENvbnNlbnN1cwgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABAAQU2VhbAgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABQAUT3RoZXIEABgBHFZlYzx1OD4AAABkUnVudGltZUVudmlyb25tZW50VXBkYXRlZAAIAABwAAADBAAAAAwAdAQYT3B0aW9uBARUAXgBCBBOb25lAAAAEFNvbWUEAHgAAAEAAHgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAB8DHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudExJbmJvdW5kTWVzc2FnZXNEYXRhAAAIAURkb3dud2FyZF9tZXNzYWdlc4ABfEFicmlkZ2VkSW5ib3VuZERvd253YXJkTWVzc2FnZXMAAUxob3Jpem9udGFsX21lc3NhZ2VzlAFsQWJyaWRnZWRJbmJvdW5kSHJtcE1lc3NhZ2VzAACADHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudIRBYnJpZGdlZEluYm91bmRNZXNzYWdlc0NvbGxlY3Rpb24EHE1lc3NhZ2UBhAAIATRmdWxsX21lc3NhZ2VziAEwVmVjPE1lc3NhZ2U+AAE8aGFzaGVkX21lc3NhZ2VzjAF8VmVjPE1lc3NhZ2U6OkNvbXByZXNzZWRNZXNzYWdlPgAAhAhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzWEluYm91bmREb3dud2FyZE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEMbXNnGAE8RG93bndhcmRNZXNzYWdlAACIAAAChACMAAACkACQCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50NEhhc2hlZE1lc3NhZ2UAAAgBHHNlbnRfYXQ4AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAASBtc2dfaGFzaDwBNHNwX2NvcmU6OkgyNTYAAJQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGYAAgBNGZ1bGxfbWVzc2FnZXOkATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOoAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACYAAAECJygAJwMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMISWQAAAQAOAEMdTMyAACgCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNISW5ib3VuZEhybXBNZXNzYWdlBCxCbG9ja051bWJlcgE4AAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AACkAAACmACoAAACrACsAAAECJyQALAMQHBhbGxldF90aW1lc3RhbXAYcGFsbGV0EENhbGwEBFQAAQQMc2V0BAEMbm93tAEkVDo6TW9tZW50AABMVFNldCB0aGUgY3VycmVudCB0aW1lLgBVAVRoaXMgY2FsbCBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb27UcGhhc2UsIGlmIHRoaXMgY2FsbCBoYXNuJ3QgYmVlbiBpbnZva2VkIGJ5IHRoYXQgdGltZS4AQQFUaGUgdGltZXN0YW1wIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gdGhlIHByZXZpb3VzIG9uZSBieSB0aGUgYW1vdW50IHNwZWNpZmllZCBieWhbYENvbmZpZzo6TWluaW11bVBlcmlvZGBdLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBRAVRoaXMgZGlzcGF0Y2ggY2xhc3MgaXMgX01hbmRhdG9yeV8gdG8gZW5zdXJlIGl0IGdldHMgZXhlY3V0ZWQgaW4gdGhlIGJsb2NrLiBCZSBhd2FyZVEBdGhhdCBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBvZiB0aGlzIGNhbGwgY291bGQgcmVzdWx0IGV4aGF1c3RpbmcgdGhlIHJlc291cmNlcyBpbiBhhGJsb2NrIHRvIGV4ZWN1dGUgYW55IG90aGVyIGNhbGxzLgA0IyMgQ29tcGxleGl0eTEBLSBgTygxKWAgKE5vdGUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgb2YgYE9uVGltZXN0YW1wU2V0YCBtdXN0IGFsc28gYmUgYE8oMSlgKVUBLSAxIHN0b3JhZ2UgcmVhZCBhbmQgMSBzdG9yYWdlIG11dGF0aW9uIChjb2RlYyBgTygxKWAgYmVjYXVzZSBvZiBgRGlkVXBkYXRlOjp0YWtlYCBpbkAgIGBvbl9maW5hbGl6ZWAp1C0gMSBldmVudCBoYW5kbGVyIGBvbl90aW1lc3RhbXBfc2V0YC4gTXVzdCBiZSBgTygxKWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrQAAAYoALgMWHN0YWdpbmdfcGFyYWNoYWluX2luZm8YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvAw4cGFsbGV0X3V0aWxpdHkYcGFsbGV0EENhbGwEBFQAASAUYmF0Y2gEARRjYWxsc8ABfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAEh8U2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzLgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBVAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaGVkIHdpdGhvdXQgY2hlY2tpbmcgb3JpZ2luIGZpbHRlci4gKFRoaXPsaW5jbHVkZXMgYnlwYXNzaW5nIGBmcmFtZV9zeXN0ZW06OkNvbmZpZzo6QmFzZUNhbGxGaWx0ZXJgKS4ANCMjIENvbXBsZXhpdHnQLSBPKEMpIHdoZXJlIEMgaXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBiZSBiYXRjaGVkLgBVAVRoaXMgd2lsbCByZXR1cm4gYE9rYCBpbiBhbGwgY2lyY3Vtc3RhbmNlcy4gVG8gZGV0ZXJtaW5lIHRoZSBzdWNjZXNzIG9mIHRoZSBiYXRjaCwgYW4xAWV2ZW50IGlzIGRlcG9zaXRlZC4gSWYgYSBjYWxsIGZhaWxlZCBhbmQgdGhlIGJhdGNoIHdhcyBpbnRlcnJ1cHRlZCwgdGhlbiB0aGVVAWBCYXRjaEludGVycnVwdGVkYCBldmVudCBpcyBkZXBvc2l0ZWQsIGFsb25nIHdpdGggdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIGNhbGxzIG1hZGVNAWFuZCB0aGUgZXJyb3Igb2YgdGhlIGZhaWxlZCBjYWxsLiBJZiBhbGwgd2VyZSBzdWNjZXNzZnVsLCB0aGVuIHRoZSBgQmF0Y2hDb21wbGV0ZWRgTGV2ZW50IGlzIGRlcG9zaXRlZC40YXNfZGVyaXZhdGl2ZQgBFGluZGV4xAEMdTE2AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AATTcU2VuZCBhIGNhbGwgdGhyb3VnaCBhbiBpbmRleGVkIHBzZXVkb255bSBvZiB0aGUgc2VuZGVyLgBVAUZpbHRlciBmcm9tIG9yaWdpbiBhcmUgcGFzc2VkIGFsb25nLiBUaGUgY2FsbCB3aWxsIGJlIGRpc3BhdGNoZWQgd2l0aCBhbiBvcmlnaW4gd2hpY2i8dXNlIHRoZSBzYW1lIGZpbHRlciBhcyB0aGUgb3JpZ2luIG9mIHRoaXMgY2FsbC4ARQFOT1RFOiBJZiB5b3UgbmVlZCB0byBlbnN1cmUgdGhhdCBhbnkgYWNjb3VudC1iYXNlZCBmaWx0ZXJpbmcgaXMgbm90IGhvbm9yZWQgKGkuZS5hAWJlY2F1c2UgeW91IGV4cGVjdCBgcHJveHlgIHRvIGhhdmUgYmVlbiB1c2VkIHByaW9yIGluIHRoZSBjYWxsIHN0YWNrIGFuZCB5b3UgZG8gbm90IHdhbnRRAXRoZSBjYWxsIHJlc3RyaWN0aW9ucyB0byBhcHBseSB0byBhbnkgc3ViLWFjY291bnRzKSwgdGhlbiB1c2UgYGFzX211bHRpX3RocmVzaG9sZF8xYHxpbiB0aGUgTXVsdGlzaWcgcGFsbGV0IGluc3RlYWQuAPROT1RFOiBQcmlvciB0byB2ZXJzaW9uICoxMiwgdGhpcyB3YXMgY2FsbGVkIGBhc19saW1pdGVkX3N1YmAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4kYmF0Y2hfYWxsBAEUY2FsbHPAAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAI07FNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscyBhbmQgYXRvbWljYWxseSBleGVjdXRlIHRoZW0uIQFUaGUgd2hvbGUgdHJhbnNhY3Rpb24gd2lsbCByb2xsYmFjayBhbmQgZmFpbCBpZiBhbnkgb2YgdGhlIGNhbGxzIGZhaWxlZC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sZGlzcGF0Y2hfYXMIASRhc19vcmlnaW7IAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgADGMhEaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgcHJvdmlkZWQgb3JpZ2luLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuLGZvcmNlX2JhdGNoBAEUY2FsbHPAAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAQ0fFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy7UVW5saWtlIGBiYXRjaGAsIGl0IGFsbG93cyBlcnJvcnMgYW5kIHdvbid0IGludGVycnVwdC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4ATQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2ggd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuLHdpdGhfd2VpZ2h0CAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AARh3ZWlnaHQpAQEYV2VpZ2h0AAUYxERpc3BhdGNoIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgc3BlY2lmaWVkIHdlaWdodC4ALQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGW4Um9vdCBvcmlnaW4gdG8gc3BlY2lmeSB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLhxpZl9lbHNlCAEQbWFpbiABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AASBmYWxsYmFjayABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABlwVAURpc3BhdGNoIGEgZmFsbGJhY2sgY2FsbCBpbiB0aGUgZXZlbnQgdGhlIG1haW4gY2FsbCBmYWlscyB0byBleGVjdXRlLrBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgDkVGhpcyBmdW5jdGlvbiBmaXJzdCBhdHRlbXB0cyB0byBkaXNwYXRjaCB0aGUgYG1haW5gIGNhbGwu1ElmIHRoZSBgbWFpbmAgY2FsbCBmYWlscywgdGhlIGBmYWxsYmFja2AgaXMgYXR0ZW10ZWQuFQFpZiB0aGUgZmFsbGJhY2sgaXMgc3VjY2Vzc2Z1bGx5IGRpc3BhdGNoZWQsIHRoZSB3ZWlnaHRzIG9mIGJvdGggY2FsbHMlAWFyZSBhY2N1bXVsYXRlZCBhbmQgYW4gZXZlbnQgY29udGFpbmluZyB0aGUgbWFpbiBjYWxsIGVycm9yIGlzIGRlcG9zaXRlZC4A3EluIHRoZSBldmVudCBvZiBhIGZhbGxiYWNrIGZhaWx1cmUgdGhlIHdob2xlIGNhbGwgZmFpbHNod2l0aCB0aGUgd2VpZ2h0cyByZXR1cm5lZC4AQQEtIGBtYWluYDogVGhlIG1haW4gY2FsbCB0byBiZSBkaXNwYXRjaGVkLiBUaGlzIGlzIHRoZSBwcmltYXJ5IGFjdGlvbiB0byBleGVjdXRlLj0BLSBgZmFsbGJhY2tgOiBUaGUgZmFsbGJhY2sgY2FsbCB0byBiZSBkaXNwYXRjaGVkIGluIGNhc2UgdGhlIGBtYWluYCBjYWxsIGZhaWxzLgBEIyMgRGlzcGF0Y2ggTG9naWNBAS0gSWYgdGhlIG9yaWdpbiBpcyBgcm9vdGAsIGJvdGggdGhlIG1haW4gYW5kIGZhbGxiYWNrIGNhbGxzIGFyZSBleGVjdXRlZCB3aXRob3V0eCAgYXBwbHlpbmcgYW55IG9yaWdpbiBmaWx0ZXJzLkkBLSBJZiB0aGUgb3JpZ2luIGlzIG5vdCBgcm9vdGAsIHRoZSBvcmlnaW4gZmlsdGVyIGlzIGFwcGxpZWQgdG8gYm90aCB0aGUgYG1haW5gIGFuZEwgIGBmYWxsYmFja2AgY2FsbHMuACwjIyBVc2UgQ2FzZVkBLSBTb21lIHVzZSBjYXNlcyBtaWdodCBpbnZvbHZlIHN1Ym1pdHRpbmcgYSBgYmF0Y2hgIHR5cGUgY2FsbCBpbiBlaXRoZXIgbWFpbiwgZmFsbGJhY2soICBvciBib3RoLlBkaXNwYXRjaF9hc19mYWxsaWJsZQgBJGFzX29yaWdpbsgBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAcUyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAFEBQWxtb3N0IHRoZSBzYW1lIGFzIFtgUGFsbGV0OjpkaXNwYXRjaF9hc2BdIGJ1dCBmb3J3YXJkcyBhbnkgZXJyb3Igb2YgdGhlIGlubmVyIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsAAAAIgAMQAAAUEAMgIWGJ1bGxldGluX3Bhc2VvX3J1bnRpbWUwT3JpZ2luQ2FsbGVyAAEQGHN5c3RlbQQAzAF0ZnJhbWVfc3lzdGVtOjpPcmlnaW48UnVudGltZT4AAABIVHJhbnNhY3Rpb25TdG9yYWdlBADQAdBwYWxsZXRfYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZTo6T3JpZ2luPFJ1bnRpbWU+ACgALFBvbGthZG90WGNtBADcAUhwYWxsZXRfeGNtOjpPcmlnaW4AHwAoQ3VtdWx1c1hjbQQAJQEBaGN1bXVsdXNfcGFsbGV0X3hjbTo6T3JpZ2luACAAAMwMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gkUmF3T3JpZ2luBCRBY2NvdW50SWQBBAEQEFJvb3QAAAAYU2lnbmVkBAAEASRBY2NvdW50SWQAAQAQTm9uZQACAChBdXRob3JpemVkAAMAANAMjHBhbGxldF9idWxsZXRpbl90cmFuc2FjdGlvbl9zdG9yYWdlGHBhbGxldBhPcmlnaW4EBFQB1AEEKEF1dGhvcml6ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARRzY29wZdgBYEF1dGhvcml6YXRpb25TY29wZUZvcjxUPgAAAADUCFhidWxsZXRpbl9wYXNlb19ydW50aW1lHFJ1bnRpbWUAAAAA2AyMcGFsbGV0X2J1bGxldGluX3RyYW5zYWN0aW9uX3N0b3JhZ2UUdHlwZXNIQXV0aG9yaXphdGlvblNjb3BlBCRBY2NvdW50SWQBBAEIHEFjY291bnQEAAQBJEFjY291bnRJZAAAACBQcmVpbWFnZQQACAEsQ29udGVudEhhc2gAAQAA3AwocGFsbGV0X3hjbRhwYWxsZXQYT3JpZ2luAAEIDFhjbQQA4AEgTG9jYXRpb24AAAAgUmVzcG9uc2UEAOABIExvY2F0aW9uAAEAAOAQLHN0YWdpbmdfeGNtCHY1IGxvY2F0aW9uIExvY2F0aW9uAAAIARxwYXJlbnRzDAEIdTgAASBpbnRlcmlvcuQBJEp1bmN0aW9ucwAA5BAsc3RhZ2luZ194Y20IdjUkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBADoAUhBcmM8W0p1bmN0aW9uOyAxXT4AAQAIWDIEAAkBAUhBcmM8W0p1bmN0aW9uOyAyXT4AAgAIWDMEAA0BAUhBcmM8W0p1bmN0aW9uOyAzXT4AAwAIWDQEABEBAUhBcmM8W0p1bmN0aW9uOyA0XT4ABAAIWDUEABUBAUhBcmM8W0p1bmN0aW9uOyA1XT4ABQAIWDYEABkBAUhBcmM8W0p1bmN0aW9uOyA2XT4ABgAIWDcEAB0BAUhBcmM8W0p1bmN0aW9uOyA3XT4ABwAIWDgEACEBAUhBcmM8W0p1bmN0aW9uOyA4XT4ACAAA6AAAAwEAAADsAOwQLHN0YWdpbmdfeGNtCHY1IGp1bmN0aW9uIEp1bmN0aW9uAAEoJFBhcmFjaGFpbgQAYAEMdTMyAAAALEFjY291bnRJZDMyCAEcbmV0d29ya/ABRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmvwAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmvwAURPcHRpb248TmV0d29ya0lkPgABDGtleRwBIFt1ODsgMjBdAAMAOFBhbGxldEluc3RhbmNlBAAMAQh1OAAEADBHZW5lcmFsSW5kZXgEAPgBEHUxMjgABQAoR2VuZXJhbEtleQgBGGxlbmd0aAwBCHU4AAEQZGF0YQgBIFt1ODsgMzJdAAYAJE9ubHlDaGlsZAAHACRQbHVyYWxpdHkIAQhpZAEBARhCb2R5SWQAARBwYXJ0BQEBIEJvZHlQYXJ0AAgAPEdsb2JhbENvbnNlbnN1cwQA9AEkTmV0d29ya0lkAAkAAPAEGE9wdGlvbgQEVAH0AQgQTm9uZQAAABBTb21lBAD0AAABAAD0ECxzdGFnaW5nX3hjbQh2NSBqdW5jdGlvbiROZXR3b3JrSWQAASAkQnlHZW5lc2lzBAAIASBbdTg7IDMyXQAAABhCeUZvcmsIATBibG9ja19udW1iZXIoAQx1NjQAAShibG9ja19oYXNoCAEgW3U4OyAzMl0AAQAgUG9sa2Fkb3QAAgAYS3VzYW1hAAMAIEV0aGVyZXVtBAEgY2hhaW5faWS0AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAAD4AAAG/AD8AAAFBwABARAMeGNtCHYzIGp1bmN0aW9uGEJvZHlJZAABKBBVbml0AAAAHE1vbmlrZXIEAHABHFt1ODsgNF0AAQAUSW5kZXgEAGABDHUzMgACACRFeGVjdXRpdmUAAwAkVGVjaG5pY2FsAAQALExlZ2lzbGF0aXZlAAUAIEp1ZGljaWFsAAYAHERlZmVuc2UABwA4QWRtaW5pc3RyYXRpb24ACAAgVHJlYXN1cnkACQAABQEQDHhjbQh2MyBqdW5jdGlvbiBCb2R5UGFydAABFBRWb2ljZQAAABxNZW1iZXJzBAEUY291bnRgAQx1MzIAAQAgRnJhY3Rpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgACAERBdExlYXN0UHJvcG9ydGlvbggBDG5vbWABDHUzMgABFGRlbm9tYAEMdTMyAAMASE1vcmVUaGFuUHJvcG9ydGlvbggBDG5vbWABDHUzMgABFGRlbm9tYAEMdTMyAAQAAAkBAAADAgAAAOwADQEAAAMDAAAA7AARAQAAAwQAAADsABUBAAADBQAAAOwAGQEAAAMGAAAA7AAdAQAAAwcAAADsACEBAAADCAAAAOwAJQEMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQYT3JpZ2luAAEIFFJlbGF5AAAAQFNpYmxpbmdQYXJhY2hhaW4EAJwBGFBhcmFJZAABAAApAQwoc3Bfd2VpZ2h0cyR3ZWlnaHRfdjIYV2VpZ2h0AAAIASByZWZfdGltZbQBDHU2NAABKHByb29mX3NpemW0AQx1NjQAAC0BDERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQQQ2FsbAQEVAABEEBmb3JjZV9zZXRfY3Vyc29yBAEYY3Vyc29yMQEBTE9wdGlvbjxDdXJzb3JPZjxUPj4AABRdAUFsbG93cyByb290IHRvIHNldCBhIGN1cnNvciB0byBmb3JjZWZ1bGx5IHN0YXJ0LCBzdG9wIG9yIGZvcndhcmQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgBJAVNob3VsZCBub3JtYWxseSBub3QgYmUgbmVlZGVkIGFuZCBpcyBvbmx5IGluIHBsYWNlIGFzIGVtZXJnZW5jeSBtZWFzdXJlLiBOb3RlIHRoYXQFAXJlc3RhcnRpbmcgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzIGluIHRoaXMgbWFubmVyIHdpbGwgbm90IGNhbGwgdGhlLQFbYE1pZ3JhdGlvblN0YXR1c0hhbmRsZXI6OnN0YXJ0ZWRgXSBob29rIG9yIGVtaXQgYW4gYFVwZ3JhZGVTdGFydGVkYCBldmVudC5cZm9yY2Vfc2V0X2FjdGl2ZV9jdXJzb3IMARRpbmRleDgBDHUzMgABMGlubmVyX2N1cnNvckEBAVhPcHRpb248UmF3Q3Vyc29yT2Y8VD4+AAEoc3RhcnRlZF9hdEUBAWRPcHRpb248QmxvY2tOdW1iZXJGb3I8VD4+AAEYWQFBbGxvd3Mgcm9vdCB0byBzZXQgYW4gYWN0aXZlIGN1cnNvciB0byBmb3JjZWZ1bGx5IHN0YXJ0L2ZvcndhcmQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgBFAVRoaXMgaXMgYW4gZWRnZS1jYXNlIHZlcnNpb24gb2YgW2BTZWxmOjpmb3JjZV9zZXRfY3Vyc29yYF0gdGhhdCBhbGxvd3MgdG8gc2V0IHRoZWEBYHN0YXJ0ZWRfYXRgIHZhbHVlIHRvIHRoZSBuZXh0IGJsb2NrIG51bWJlci4gT3RoZXJ3aXNlIHRoaXMgd291bGQgbm90IGJlIHBvc3NpYmxlLCBzaW5jZUUBYGZvcmNlX3NldF9jdXJzb3JgIHRha2VzIGFuIGFic29sdXRlIGJsb2NrIG51bWJlci4gU2V0dGluZyBgc3RhcnRlZF9hdGAgdG8gYE5vbmVgAQFpbmRpY2F0ZXMgdGhhdCB0aGUgY3VycmVudCBibG9jayBudW1iZXIgcGx1cyBvbmUgc2hvdWxkIGJlIHVzZWQuSGZvcmNlX29uYm9hcmRfbWJtcwACEKBGb3JjZXMgdGhlIG9uYm9hcmRpbmcgb2YgdGhlIG1pZ3JhdGlvbnMuAF0BVGhpcyBwcm9jZXNzIGhhcHBlbnMgYXV0b21hdGljYWxseSBvbiBhIHJ1bnRpbWUgdXBncmFkZS4gSXQgaXMgaW4gcGxhY2UgYXMgYW4gZW1lcmdlbmN5/G1lYXN1cmVtZW50LiBUaGUgY3Vyc29yIG5lZWRzIHRvIGJlIGBOb25lYCBmb3IgdGhpcyB0byBzdWNjZWVkLjhjbGVhcl9oaXN0b3JpYwQBIHNlbGVjdG9ySQEBoEhpc3RvcmljQ2xlYW51cFNlbGVjdG9yPElkZW50aWZpZXJPZjxUPj4AAxRoQ2xlYXJzIHRoZSBgSGlzdG9yaWNgIHNldC4ADQFgbWFwX2N1cnNvcmAgbXVzdCBiZSBzZXQgdG8gdGhlIGxhc3QgdmFsdWUgdGhhdCB3YXMgcmV0dXJuZWQgYnkgdGhlXQFgSGlzdG9yaWNDbGVhcmVkYCBldmVudC4gVGhlIGZpcnN0IHRpbWUgYE5vbmVgIGNhbiBiZSB1c2VkLiBgbGltaXRgIG11c3QgYmUgY2hvc2VuIGluIGGod2F5IHRoYXQgd2lsbCByZXN1bHQgaW4gYSBzZW5zaWJsZSB3ZWlnaHQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjEBBBhPcHRpb24EBFQBNQEBCBBOb25lAAAAEFNvbWUEADUBAAABAAA1AQhEcGFsbGV0X21pZ3JhdGlvbnM8TWlncmF0aW9uQ3Vyc29yCBhDdXJzb3IBOQEsQmxvY2tOdW1iZXIBOAEIGEFjdGl2ZQQAPQEBhEFjdGl2ZUN1cnNvcjxDdXJzb3IsIEJsb2NrTnVtYmVyPgAAABRTdHVjawABAAA5AQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAD0BCERwYWxsZXRfbWlncmF0aW9uczBBY3RpdmVDdXJzb3IIGEN1cnNvcgE5ASxCbG9ja051bWJlcgE4AAwBFGluZGV4OAEMdTMyAAEwaW5uZXJfY3Vyc29yQQEBOE9wdGlvbjxDdXJzb3I+AAEoc3RhcnRlZF9hdDgBLEJsb2NrTnVtYmVyAABBAQQYT3B0aW9uBARUATkBAQgQTm9uZQAAABBTb21lBAA5AQAAAQAARQEEGE9wdGlvbgQEVAE4AQgQTm9uZQAAABBTb21lBAA4AAABAABJAQhEcGFsbGV0X21pZ3JhdGlvbnNcSGlzdG9yaWNDbGVhbnVwU2VsZWN0b3IECElkAU0BAQggU3BlY2lmaWMEAFEBARxWZWM8SWQ+AAAAIFdpbGRjYXJkCAEUbGltaXRFAQEsT3B0aW9uPHUzMj4AATxwcmV2aW91c19jdXJzb3JVAQE8T3B0aW9uPFZlYzx1OD4+AAEAAE0BDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAUQEAAAJNAQBVAQQYT3B0aW9uBARUARgBCBBOb25lAAAAEFNvbWUEABgAAAEAAFkBDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0EENhbGwIBFQABEkAASRQdHJhbnNmZXJfYWxsb3dfZGVhdGgIARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZfgBKFQ6OkJhbGFuY2UAABzUVHJhbnNmZXIgc29tZSBsaXF1aWQgZnJlZSBiYWxhbmNlIHRvIGFub3RoZXIgYWNjb3VudC4ANQFgdHJhbnNmZXJfYWxsb3dfZGVhdGhgIHdpbGwgc2V0IHRoZSBgRnJlZUJhbGFuY2VgIG9mIHRoZSBzZW5kZXIgYW5kIHJlY2VpdmVyLhEBSWYgdGhlIHNlbmRlcidzIGFjY291bnQgaXMgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYXMgYSByZXN1bHSwb2YgdGhlIHRyYW5zZmVyLCB0aGUgYWNjb3VudCB3aWxsIGJlIHJlYXBlZC4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgdHJhbnNhY3Rvci44Zm9yY2VfdHJhbnNmZXIMARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVl+AEoVDo6QmFsYW5jZQACCGEBRXhhY3RseSBhcyBgdHJhbnNmZXJfYWxsb3dfZGVhdGhgLCBleGNlcHQgdGhlIG9yaWdpbiBtdXN0IGJlIHJvb3QgYW5kIHRoZSBzb3VyY2UgYWNjb3VudERtYXkgYmUgc3BlY2lmaWVkLkx0cmFuc2Zlcl9rZWVwX2FsaXZlCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWX4AShUOjpCYWxhbmNlAAMYWQFTYW1lIGFzIHRoZSBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF0gY2FsbCwgYnV0IHdpdGggYSBjaGVjayB0aGF0IHRoZSB0cmFuc2ZlciB3aWxsIG5vdGBraWxsIHRoZSBvcmlnaW4gYWNjb3VudC4A6Dk5JSBvZiB0aGUgdGltZSB5b3Ugd2FudCBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF0gaW5zdGVhZC4A8FtgdHJhbnNmZXJfYWxsb3dfZGVhdGhgXTogc3RydWN0LlBhbGxldC5odG1sI21ldGhvZC50cmFuc2ZlcjB0cmFuc2Zlcl9hbGwIARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShrZWVwX2FsaXZlXQEBEGJvb2wABDwFAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXRhAWFueSBsb2NrZWQsIHJlc2VydmVkLCBvciBleGlzdGVudGlhbCBkZXBvc2l0cyAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgCgLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFjY291bnQgdG8gYmUga2lsbGVkIChmYWxzZSksIG9yWQEgIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0LCB3aGljaCB3aWxsIGd1YXJhbnRlZSB0b5wgIGtlZXAgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlICh0cnVlKS48Zm9yY2VfdW5yZXNlcnZlCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnT8AShUOjpCYWxhbmNlAAUMsFVucmVzZXJ2ZSBzb21lIGJhbGFuY2UgZnJvbSBhIHVzZXIgYnkgZm9yY2UuAGxDYW4gb25seSBiZSBjYWxsZWQgYnkgUk9PVC5AdXBncmFkZV9hY2NvdW50cwQBDHdob2EBAURWZWM8VDo6QWNjb3VudElkPgAGIHBVcGdyYWRlIGEgc3BlY2lmaWVkIGFjY291bnQuAHQtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1cGdyYWRlZC4AVQFUaGlzIHdpbGwgd2FpdmUgdGhlIHRyYW5zYWN0aW9uIGZlZSBpZiBhdCBsZWFzdCBhbGwgYnV0IDEwJSBvZiB0aGUgYWNjb3VudHMgbmVlZGVkIHRvQQFiZSB1cGdyYWRlZC4gKFdlIGxldCBzb21lIG5vdCBoYXZlIHRvIGJlIHVwZ3JhZGVkIGp1c3QgaW4gb3JkZXIgdG8gYWxsb3cgZm9yIHRoZVhwb3NzaWJpbGl0eSBvZiBjaHVybikuRGZvcmNlX3NldF9iYWxhbmNlCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBuZXdfZnJlZfgBKFQ6OkJhbGFuY2UACAysU2V0IHRoZSByZWd1bGFyIGJhbGFuY2Ugb2YgYSBnaXZlbiBhY2NvdW50LgCwVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIGlzIGByb290YC5sZm9yY2VfYWRqdXN0X3RvdGFsX2lzc3VhbmNlCAEkZGlyZWN0aW9uZQEBTEFkanVzdG1lbnREaXJlY3Rpb24AARRkZWx0YfgBKFQ6OkJhbGFuY2UACRS4QWRqdXN0IHRoZSB0b3RhbCBpc3N1YW5jZSBpbiBhIHNhdHVyYXRpbmcgd2F5LgD8Q2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHJvb3QgYW5kIGFsd2F5cyBuZWVkcyBhIHBvc2l0aXZlIGBkZWx0YWAuACQjIEV4YW1wbGUQYnVybggBFHZhbHVl+AEoVDo6QmFsYW5jZQABKGtlZXBfYWxpdmVdAQEQYm9vbAAKHPxCdXJuIHRoZSBzcGVjaWZpZWQgbGlxdWlkIGZyZWUgYmFsYW5jZSBmcm9tIHRoZSBvcmlnaW4gYWNjb3VudC4AJQFJZiB0aGUgb3JpZ2luJ3MgYWNjb3VudCBlbmRzIHVwIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFzIGEgcmVzdWx0CQFvZiB0aGUgYnVybiBhbmQgYGtlZXBfYWxpdmVgIGlzIGZhbHNlLCB0aGUgYWNjb3VudCB3aWxsIGJlIHJlYXBlZC4AUQFVbmxpa2Ugc2VuZGluZyBmdW5kcyB0byBhIF9idXJuXyBhZGRyZXNzLCB3aGljaCBtZXJlbHkgbWFrZXMgdGhlIGZ1bmRzIGluYWNjZXNzaWJsZSwhAXRoaXMgYGJ1cm5gIG9wZXJhdGlvbiB3aWxsIHJlZHVjZSB0b3RhbCBpc3N1YW5jZSBieSB0aGUgYW1vdW50IF9idXJuZWRfLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5dAQAABQAAYQEAAAIEAGUBDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXNMQWRqdXN0bWVudERpcmVjdGlvbgABCCBJbmNyZWFzZQAAACBEZWNyZWFzZQABAABpAQyMcGFsbGV0X2J1bGxldGluX3RyYW5zYWN0aW9uX3N0b3JhZ2UYcGFsbGV0EENhbGwEBFQAATAUc3RvcmUEARBkYXRhGAEcVmVjPHU4PgAAOB0BSW5kZXggYW5kIHN0b3JlIGRhdGEgb2ZmIGNoYWluLiBNaW5pbXVtIGRhdGEgc2l6ZSBpcyAxIGJ5dGUsIG1heGltdW0gaXNFAWBNYXhUcmFuc2FjdGlvblNpemVgLiBEYXRhIHdpbGwgYmUgcmVtb3ZlZCBhZnRlciBgUmV0ZW50aW9uUGVyaW9kYCBibG9ja3MsIHVubGVzc0hgcmVuZXdgIGlzIGNhbGxlZC4ATQFBdXRob3JpemF0aW9uIGlzIHJlcXVpcmVkIHRvIHN0b3JlIGRhdGEgdXNpbmcgcmVndWxhciBzaWduZWQvdW5zaWduZWQgdHJhbnNhY3Rpb25zLvhSZWd1bGFyIHNpZ25lZCB0cmFuc2FjdGlvbnMgcmVxdWlyZSBhY2NvdW50IGF1dGhvcml6YXRpb24gKHNlZVkBW2BhdXRob3JpemVfYWNjb3VudGBdKFNlbGY6OmF1dGhvcml6ZV9hY2NvdW50KSksIHJlZ3VsYXIgdW5zaWduZWQgdHJhbnNhY3Rpb25zIHJlcXVpcmU5AXByZWltYWdlIGF1dGhvcml6YXRpb24gKHNlZSBbYGF1dGhvcml6ZV9wcmVpbWFnZWBdKFNlbGY6OmF1dGhvcml6ZV9wcmVpbWFnZSkpLgDARW1pdHMgW2BTdG9yZWRgXShFdmVudDo6U3RvcmVkKSB3aGVuIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5ABUBTyhuKmxvZyhuKSkgb2YgZGF0YSBzaXplLCBhcyBhbGwgZGF0YSBpcyBwdXNoZWQgdG8gYW4gaW4tbWVtb3J5IHRyaWUuVHN0b3JlX3dpdGhfY2lkX2NvbmZpZwgBDGNpZG0BASRDaWRDb25maWcAARBkYXRhGAEcVmVjPHU4PgAJGAkBSW5kZXggYW5kIHN0b3JlIGRhdGEgb2ZmIGNoYWluIHdpdGggYW4gZXhwbGljaXQgQ0lEIGNvbmZpZ3VyYXRpb24uACEBQmVoYXZlcyBpZGVudGljYWxseSB0byBbYHN0b3JlYF0oU2VsZjo6c3RvcmUpLCBidXQgdGhlIENJRCBjb25maWd1cmF0aW9uAQEoY29kZWMgYW5kIGhhc2hpbmcgYWxnb3JpdGhtKSBpcyBwYXNzZWQgZGlyZWN0bHkgYXMgYSBwYXJhbWV0ZXIuAMBFbWl0cyBbYFN0b3JlZGBdKEV2ZW50OjpTdG9yZWQpIHdoZW4gc3VjY2Vzc2Z1bC5EYXV0aG9yaXplX2FjY291bnQMAQx3aG8EATBUOjpBY2NvdW50SWQAATB0cmFuc2FjdGlvbnM4AQx1MzIAARRieXRlcygBDHU2NAADTD0BQXV0aG9yaXplIGFuIGFjY291bnQgdG8gc3RvcmUgdXAgdG8gYGJ5dGVzYCBvZiBhcmJpdHJhcnkgZGF0YSBpbiBgdHJhbnNhY3Rpb25zYEEBYm9vc3QtdGllciB0cmFuc2FjdGlvbnMuIFRoZSBhdXRob3JpemF0aW9uIHdpbGwgZXhwaXJlIGFmdGVyIGEgY29uZmlndXJlZCBudW1iZXIob2YgYmxvY2tzLgBFAUlmIHRoZSBhY2NvdW50IGFscmVhZHkgaGFzIGFuIHVuZXhwaXJlZCBhdXRob3JpemF0aW9uLCB0aGlzIGNhbGwgKiphZGRzKiogYGJ5dGVzYEUBYW5kIGB0cmFuc2FjdGlvbnNgIHRvIHRoZSBleGlzdGluZyBgYnl0ZXNfYWxsb3dhbmNlYCBhbmQgYHRyYW5zYWN0aW9uc19hbGxvd2FuY2VgMQFjYXBzIChib3RoIHNhdHVyYXRpbmcpOyB0aGUgZXhwaXJhdGlvbiBibG9jayBpcyAqKm5vdCoqIHB1c2hlZCBiYWNrLCBhbmQgdGhlSQFjb25zdW1lZCBjb3VudGVycyBhcmUgcHJlc2VydmVkLiBPbmNlIHRoZSBhdXRob3JpemF0aW9uIGhhcyBleHBpcmVkLCB0aGUgbmV4dCBjYWxsRQFyZXBsYWNlcyBpdCB3aXRoIGEgZnJlc2ggZW50cnkgKGNvbnN1bWVkIGNvdW50ZXJzIHJlc2V0IHRvIGAwYCwgYWxsb3dhbmNlcyBzZXQgdG/YdGhlIG5ldyB2YWx1ZXMsIGV4cGlyeSA9IGBub3cgKyBBdXRob3JpemF0aW9uUGVyaW9kYCkuACxQYXJhbWV0ZXJzOgAhAS0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggYW4gYXV0aG9yaXphdGlvbiB0byBzdG9yZSBkYXRhLjkBLSBgdHJhbnNhY3Rpb25zYDogVGhlIG51bWJlciBvZiBib29zdC10aWVyIHRyYW5zYWN0aW9ucyB0aGF0IGB3aG9gIG1heSBzdWJtaXQu1C0gYGJ5dGVzYDogVGhlIG51bWJlciBvZiBieXRlcyB0aGF0IGB3aG9gIG1heSBzdWJtaXQuAAUBVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIHBhbGxldCdzIGBBdXRob3JpemVyYC4gRW1pdHMBAVtgQWNjb3VudEF1dGhvcml6ZWRgXShFdmVudDo6QWNjb3VudEF1dGhvcml6ZWQpIHdoZW4gc3VjY2Vzc2Z1bC5IYXV0aG9yaXplX3ByZWltYWdlCAEwY29udGVudF9oYXNoCAEsQ29udGVudEhhc2gAASBtYXhfc2l6ZSgBDHU2NAAESFkBQXV0aG9yaXplIGFueW9uZSB0byBzdG9yZSBhIHByZWltYWdlIG9mIHRoZSBnaXZlbiBjb250ZW50IGhhc2guIFRoZSBhdXRob3JpemF0aW9uIHdpbGysZXhwaXJlIGFmdGVyIGEgY29uZmlndXJlZCBudW1iZXIgb2YgYmxvY2tzLgBJAUlmIGF1dGhvcml6YXRpb24gYWxyZWFkeSBleGlzdHMgZm9yIGEgcHJlaW1hZ2Ugb2YgdGhlIGdpdmVuIGhhc2ggdG8gYmUgc3RvcmVkLCB0aGVJAW1heGltdW0gc2l6ZSBvZiB0aGUgcHJlaW1hZ2Ugd2lsbCBiZSBpbmNyZWFzZWQgdG8gYG1heF9zaXplYC4gVGhlIGV4cGlyYXRpb24gYmxvY2tsaXMgKipub3QqKiBwdXNoZWQgYmFjazsgdXNlSQFbYHJlZnJlc2hfcHJlaW1hZ2VfYXV0aG9yaXphdGlvbmBdKFNlbGY6OnJlZnJlc2hfcHJlaW1hZ2VfYXV0aG9yaXphdGlvbikgdG8gZXh0ZW5kHGV4cGlyeS4ALFBhcmFtZXRlcnM6AF0BLSBgY29udGVudF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGRhdGEgdG8gYmUgc3VibWl0dGVkLiBGb3IgW2BzdG9yZWBdKFNlbGY6OnN0b3JlKSB0aGlzVQEgIGlzIHRoZSBCTEFLRTJiLTI1NiBoYXNoOyBmb3IgW2BzdG9yZV93aXRoX2NpZF9jb25maWdgXShTZWxmOjpzdG9yZV93aXRoX2NpZF9jb25maWcpCQEgIHRoaXMgaXMgdGhlIGhhc2ggcHJvZHVjZWQgYnkgdGhlIENJRCBjb25maWcncyBoYXNoaW5nIGFsZ29yaXRobS7oLSBgbWF4X3NpemVgOiBUaGUgbWF4aW11bSBzaXplLCBpbiBieXRlcywgb2YgdGhlIHByZWltYWdlLgAFAVRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBwYWxsZXQncyBgQXV0aG9yaXplcmAuIEVtaXRzCQFbYFByZWltYWdlQXV0aG9yaXplZGBdKEV2ZW50OjpQcmVpbWFnZUF1dGhvcml6ZWQpIHdoZW4gc3VjY2Vzc2Z1bC6QcmVtb3ZlX2V4cGlyZWRfYWNjb3VudF9hdXRob3JpemF0aW9uBAEMd2hvBAEwVDo6QWNjb3VudElkAAUgLQFSZW1vdmUgYW4gZXhwaXJlZCBhY2NvdW50IGF1dGhvcml6YXRpb24gZnJvbSBzdG9yYWdlLiBBbnlvbmUgY2FuIGNhbGwgdGhpcy4ALFBhcmFtZXRlcnM6APQtIGB3aG9gOiBUaGUgYWNjb3VudCB3aXRoIGFuIGV4cGlyZWQgYXV0aG9yaXphdGlvbiB0byByZW1vdmUuAF0BRW1pdHMgW2BFeHBpcmVkQWNjb3VudEF1dGhvcml6YXRpb25SZW1vdmVkYF0oRXZlbnQ6OkV4cGlyZWRBY2NvdW50QXV0aG9yaXphdGlvblJlbW92ZWQpQHdoZW4gc3VjY2Vzc2Z1bC6UcmVtb3ZlX2V4cGlyZWRfcHJlaW1hZ2VfYXV0aG9yaXphdGlvbgQBMGNvbnRlbnRfaGFzaAgBLENvbnRlbnRIYXNoAAYkMQFSZW1vdmUgYW4gZXhwaXJlZCBwcmVpbWFnZSBhdXRob3JpemF0aW9uIGZyb20gc3RvcmFnZS4gQW55b25lIGNhbiBjYWxsIHRoaXMuACxQYXJhbWV0ZXJzOgDcLSBgY29udGVudF9oYXNoYDogVGhlIEJMQUtFMmIgaGFzaCB0aGF0IHdhcyBhdXRob3JpemVkLgAURW1pdHNNAVtgRXhwaXJlZFByZWltYWdlQXV0aG9yaXphdGlvblJlbW92ZWRgXShFdmVudDo6RXhwaXJlZFByZWltYWdlQXV0aG9yaXphdGlvblJlbW92ZWQpQHdoZW4gc3VjY2Vzc2Z1bC50cmVmcmVzaF9hY2NvdW50X2F1dGhvcml6YXRpb24EAQx3aG8EATBUOjpBY2NvdW50SWQABzwNAVJlZnJlc2ggdGhlIGV4cGlyYXRpb24gb2YgYW4gZXhpc3RpbmcgYXV0aG9yaXphdGlvbiBmb3IgYW4gYWNjb3VudC4AEQFPbmx5IHRoZSBleHBpcmF0aW9uIGJsb2NrIGlzIHVwZGF0ZWQg4oCUIGNvbnN1bWVkIGNvdW50ZXJzIChgYnl0ZXNgLOBgdHJhbnNhY3Rpb25zYCkgYW5kIHRoZSBncmFudGVkIGNhcHMgKGBieXRlc19hbGxvd2FuY2VgLBkBYHRyYW5zYWN0aW9uc19hbGxvd2FuY2VgKSBhcmUgbGVmdCB1bnRvdWNoZWQuIFRvIGV4dGVuZCB0aGUgY2FwcywgY2FsbPRgYXV0aG9yaXplX2FjY291bnRgIGluc3RlYWQgKGFkZGl0aXZlIG9uIHRoZSB1bmV4cGlyZWQgcGF0aCkuAAkBSWYgdGhlIGFjY291bnQgZG9lcyBub3QgaGF2ZSBhbiBhdXRob3JpemF0aW9uLCB0aGUgY2FsbCB3aWxsIGZhaWwuACxQYXJhbWV0ZXJzOgAhAS0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggYW4gYXV0aG9yaXphdGlvbiB0byBzdG9yZSBkYXRhLgAFAVRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBwYWxsZXQncyBgQXV0aG9yaXplcmAuIEVtaXRzYQFbYEFjY291bnRBdXRob3JpemF0aW9uUmVmcmVzaGVkYF0oRXZlbnQ6OkFjY291bnRBdXRob3JpemF0aW9uUmVmcmVzaGVkKSB3aGVuIHN1Y2Nlc3NmdWwueHJlZnJlc2hfcHJlaW1hZ2VfYXV0aG9yaXphdGlvbgQBMGNvbnRlbnRfaGFzaAgBLENvbnRlbnRIYXNoAAhAVQFSZWZyZXNoIHRoZSBleHBpcmF0aW9uIG9mIGFuIGV4aXN0aW5nIGF1dGhvcml6YXRpb24gZm9yIGEgcHJlaW1hZ2Ugb2YgYSBCTEFLRTJiIGhhc2guABEBT25seSB0aGUgZXhwaXJhdGlvbiBibG9jayBpcyB1cGRhdGVkIOKAlCBjb25zdW1lZCBjb3VudGVycyAoYGJ5dGVzYCzgYHRyYW5zYWN0aW9uc2ApIGFuZCB0aGUgZ3JhbnRlZCBjYXBzIChgYnl0ZXNfYWxsb3dhbmNlYCwRAWB0cmFuc2FjdGlvbnNfYWxsb3dhbmNlYCkgYXJlIGxlZnQgdW50b3VjaGVkLiBUbyByYWlzZSB0aGUgY2FwLCBjYWxsdGBhdXRob3JpemVfcHJlaW1hZ2VgIGluc3RlYWQuAA0BSWYgdGhlIHByZWltYWdlIGRvZXMgbm90IGhhdmUgYW4gYXV0aG9yaXphdGlvbiwgdGhlIGNhbGwgd2lsbCBmYWlsLgAsUGFyYW1ldGVyczoA/C0gYGNvbnRlbnRfaGFzaGA6IFRoZSBCTEFLRTJiIGhhc2ggb2YgdGhlIGRhdGEgdG8gYmUgc3VibWl0dGVkLgAFAVRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBwYWxsZXQncyBgQXV0aG9yaXplcmAuIEVtaXRzOQFbYFByZWltYWdlQXV0aG9yaXphdGlvblJlZnJlc2hlZGBdKEV2ZW50OjpQcmVpbWFnZUF1dGhvcml6YXRpb25SZWZyZXNoZWQpIHdoZW4sc3VjY2Vzc2Z1bC5UYXBwbHlfYmxvY2tfaW5oZXJlbnRzBAEUcHJvb2Z1AQF8T3B0aW9uPFRyYW5zYWN0aW9uU3RvcmFnZVByb29mPgAOFAUBQmxvY2stbGV2ZWwgbWFuZGF0b3J5IGluaGVyZW50IGZvciB0aGUgdHJhbnNhY3Rpb24tc3RvcmFnZSBwcm9vZi4ANQFgcHJvb2ZgIGlzIGBTb21lYCB3aGVuIHRoZSBpbmhlcmVudCBkYXRhIHByb3ZpZGVyIHN1cHBsaWVkIG9uZTsgb3RoZXJ3aXNlIHRoZTUBcHJvb2Ygc3RlcCBpcyBza2lwcGVkIChlYXJseSBvciBlbXB0eSBibG9ja3MpLiBUaGUgY29tcGFuaW9uIGRyYWluIG9mIHBlbmRpbmcVAWF1dG8tcmVuZXdhbHMgbGl2ZXMgaW4gYHBhbGxldC1idWxsZXRpbi1kYXRhLXJlbmV3YWxgJ3Mgb3duIGluaGVyZW50LjhhZGRfYXV0aG9yaXplcggBDHdobwQBMFQ6OkFjY291bnRJZAABGGJ1ZGdldH0BAYxBdXRob3JpemVyQnVkZ2V0PEJsb2NrTnVtYmVyRm9yPFQ+PgAPQDkBQWRkIGFuIGFjY291bnQgdG8gdGhlIHNldCBvZiBhbGxvd2VkIGF1dGhvcml6ZXJzLiBBbGxvd2VkIGF1dGhvcml6ZXJzIGNhbiBjYWxsyFtgYXV0aG9yaXplX2FjY291bnRgXShTZWxmOjphdXRob3JpemVfYWNjb3VudCkgYW5kJQFbYGF1dGhvcml6ZV9wcmVpbWFnZWBdKFNlbGY6OmF1dGhvcml6ZV9wcmVpbWFnZSkgdG8gZ3JhbnQgc3RvcmFnZSBhY2Nlc3MuAEEBSWYgdGhlIGFjY291bnQgaXMgYWxyZWFkeSBhbiBhbGxvd2VkIGF1dGhvcml6ZXIsIGl0cyBgYnVkZ2V0YCBpcyAqKm92ZXJ3cml0dGVuKipQd2l0aCB0aGUgbmV3IHZhbHVlcy4AVGBidWRnZXRgIGNvbnN0cmFpbnRzOgBRAS0gYHZhbGlkX3VudGlsYDogd2hlbiBgU29tZSh0KWAsIG11c3Qgc2F0aXNmeSBgdCA+IG5vd2AuIFRoZSBlbnRyeSBzdG9wcyBhdXRob3JpemluZxUBICBvbmNlIGBub3cgPj0gdGAgYW5kIGJlY29tZXMgZWxpZ2libGUgZm9yIHBlcm1pc3Npb25sZXNzIGNsZWFudXAgdmlhUQEgIFtgcmVtb3ZlX2V4aGF1c3RlZF9hdXRob3JpemVyYF0oU2VsZjo6cmVtb3ZlX2V4aGF1c3RlZF9hdXRob3JpemVyKS4gQXV0aG9yaXphdGlvbnP0ICBncmFudGVkIGJ5IHRoaXMgZW50cnkgaGF2ZSB0aGVpciBleHBpcmF0aW9uIGNsYW1wZWQgdG8gYHRgLgAhAVRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IHNhdGlzZnkgYEF1dGhvcml6ZXJSZWdpc3RyYXJPcmlnaW5gLiBFbWl0c/BbYEF1dGhvcml6ZXJBZGRlZGBdKEV2ZW50OjpBdXRob3JpemVyQWRkZWQpIHdoZW4gc3VjY2Vzc2Z1bC5EcmVtb3ZlX2F1dGhvcml6ZXIEAQx3aG8EATBUOjpBY2NvdW50SWQAEDBJAVJlbW92ZSBhbiBhY2NvdW50IGZyb20gdGhlIHNldCBvZiBhbGxvd2VkIGF1dGhvcml6ZXJzLiBUaGUgcmVtb3ZlZCBhY2NvdW50IHdpbGwgbm8hAWxvbmdlciBiZSBhYmxlIHRvIGNhbGwgW2BhdXRob3JpemVfYWNjb3VudGBdKFNlbGY6OmF1dGhvcml6ZV9hY2NvdW50KSBvcsRbYGF1dGhvcml6ZV9wcmVpbWFnZWBdKFNlbGY6OmF1dGhvcml6ZV9wcmVpbWFnZSkuAB0BSWYgdGhlIGFjY291bnQgaXMgbm90IGN1cnJlbnRseSBhbiBhbGxvd2VkIGF1dGhvcml6ZXIsIHRoaXMgaXMgYSBuby1vcC4ALFBhcmFtZXRlcnM6APAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZW1vdmUgZnJvbSB0aGUgYWxsb3dlZCBhdXRob3JpemVycy4AIQFUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBzYXRpc2Z5IGBBdXRob3JpemVyUmVnaXN0cmFyT3JpZ2luYC4gRW1pdHMBAVtgQXV0aG9yaXplclJlbW92ZWRgXShFdmVudDo6QXV0aG9yaXplclJlbW92ZWQpIHdoZW4gc3VjY2Vzc2Z1bC5scmVtb3ZlX2V4aGF1c3RlZF9hdXRob3JpemVyBAEMd2hvBAEwVDo6QWNjb3VudElkABEkOQFSZW1vdmUgYW4gYXV0aG9yaXplciB0aGF0IGlzIGV4aGF1c3RlZCAoYnVkZ2V0IHplcm8gb24gZWl0aGVyIGF4aXMpIG9yIGV4cGlyZWRJAShgbm93ID49IHZhbGlkX3VudGlsYCBmb3IgYW4gZW50cnkgdGhhdCBzZXQgYHZhbGlkX3BlcmlvZGApLiBBbnlvbmUgY2FuIGNhbGwgdGhpcy4ALFBhcmFtZXRlcnM6AIgtIGB3aG9gOiBUaGUgYXV0aG9yaXplciB0byByZW1vdmUuAB0BRW1pdHMgW2BFeGhhdXN0ZWRBdXRob3JpemVyUmVtb3ZlZGBdKEV2ZW50OjpFeGhhdXN0ZWRBdXRob3JpemVyUmVtb3ZlZClAd2hlbiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5tAQycYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZV9wcmltaXRpdmVzEGNpZHMkQ2lkQ29uZmlnAAAIARRjb2RlYygBIENpZENvZGVjAAEcaGFzaGluZ3EBAUBIYXNoaW5nQWxnb3JpdGhtAABxAQycYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZV9wcmltaXRpdmVzEGNpZHNASGFzaGluZ0FsZ29yaXRobQABDChCbGFrZTJiMjU2AAAAIFNoYTJfMjU2AAEAJEtlY2NhazI1NgACAAB1AQQYT3B0aW9uBARUAXkBAQgQTm9uZQAAABBTb21lBAB5AQAAAQAAeQEIcHNwX3RyYW5zYWN0aW9uX3N0b3JhZ2VfcHJvb2ZcVHJhbnNhY3Rpb25TdG9yYWdlUHJvb2YAAAgBFGNodW5rGAEcVmVjPHU4PgABFHByb29mNAEwVmVjPFZlYzx1OD4+AAB9AQyMcGFsbGV0X2J1bGxldGluX3RyYW5zYWN0aW9uX3N0b3JhZ2UUdHlwZXNAQXV0aG9yaXplckJ1ZGdldAQsQmxvY2tOdW1iZXIBOAAMARRxdW90YYEBATRPcHRpb248UXVvdGE+AAEsdmFsaWRfdW50aWxFAQFMT3B0aW9uPEJsb2NrTnVtYmVyPgABHGZlZWxlc3NdAQEQYm9vbAAAgQEEGE9wdGlvbgQEVAGFAQEIEE5vbmUAAAAQU29tZQQAhQEAAAEAAIUBDIxwYWxsZXRfYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZRR0eXBlcxRRdW90YQAACAEwdHJhbnNhY3Rpb25zOAEMdTMyAAEUYnl0ZXMoAQx1NjQAAIkBDHRwYWxsZXRfYnVsbGV0aW5faG9wX3Byb21vdGlvbhhwYWxsZXQQQ2FsbAQEVAABCBxwcm9tb3RlEAEYc2lnbmVyjQEBLE11bHRpU2lnbmVyAAEkc2lnbmF0dXJllQEBOE11bHRpU2lnbmF0dXJlAAFAc3VibWl0X3RpbWVzdGFtcCgBDHU2NAABEGRhdGEYARxWZWM8dTg+AAAAKHByb21vdGVfdjIUARhzaWduZXKNAQEsTXVsdGlTaWduZXIAASRzaWduYXR1cmWVAQE4TXVsdGlTaWduYXR1cmUAAUBzdWJtaXRfdGltZXN0YW1wKAEMdTY0AAE8cmVjaXBpZW50c19oYXNoPAEQSDI1NgABEGRhdGEYARxWZWM8dTg+AAEMHQFWMiB2YXJpYW50IG9mIFtgU2VsZjo6cHJvbW90ZWBdOiBpZGVudGljYWwgYm9keSwgYnV0IHRoZSBhdXRob3JpemUgaG9vaxUBcmVxdWlyZXMgdGhlIHVzZXIncyBzaWduYXR1cmUgdG8gYWRkaXRpb25hbGx5IGNvdmVyIHRoZSBjaGFpbiBnZW5lc2lzEQFoYXNoIGFuZCBhIGhhc2ggb2YgdGhlIHJlY2lwaWVudHMgbGlzdCAoc2VlIFtgc2lnbmluZ19wYXlsb2FkX3YyYF0pLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6NAQgoc3BfcnVudGltZSxNdWx0aVNpZ25lcgABEBxFZDI1NTE5BAAIATxlZDI1NTE5OjpQdWJsaWMAAAAcU3IyNTUxOQQACAE8c3IyNTUxOTo6UHVibGljAAEAFEVjZHNhBACRAQE0ZWNkc2E6OlB1YmxpYwACAAxFdGgEAJEBAUxlY2RzYTo6S2VjY2FrUHVibGljAAMAAJEBAAADIQAAAAwAlQEIKHNwX3J1bnRpbWU4TXVsdGlTaWduYXR1cmUAARAcRWQyNTUxOQQAmQEBSGVkMjU1MTk6OlNpZ25hdHVyZQAAABxTcjI1NTE5BACZAQFIc3IyNTUxOTo6U2lnbmF0dXJlAAEAFEVjZHNhBACdAQFAZWNkc2E6OlNpZ25hdHVyZQACAAxFdGgEAJ0BAVhlY2RzYTo6S2VjY2FrU2lnbmF0dXJlAAMAAJkBAAADQAAAAAwAnQEAAANBAAAADAChAQxwcGFsbGV0X2J1bGxldGluX2RhdGFfcmVuZXdhbBhwYWxsZXQQQ2FsbAQEVAABFBRyZW5ldwQBFGVudHJ5pQEBhFRyYW5zYWN0aW9uUmVmPEJsb2NrTnVtYmVyRm9yPFQ+PgAAFMxTY2hlZHVsZSBhIG9uZS1zaG90IGF1dG8tcmVuZXdhbC4gRmlyZXMgb25jZSBhdCB0aGX0YFJldGVudGlvblBlcmlvZGAgYm91bmRhcnksIHRoZW4gdGhlIHJlZ2lzdHJhdGlvbiBpcyByZW1vdmVkLg0BUHJlcGFpZCBhdCByZWdpc3RyYXRpb247IHNlZSBbYGZvcmNlX3JlbmV3YF0oU2VsZjo6Zm9yY2VfcmVuZXcpIGZvchUBc3luY2hyb25vdXMgcmVuZXdhbCBvciBbYGVuYWJsZV9hdXRvX3JlbmV3YF0oU2VsZjo6ZW5hYmxlX2F1dG9fcmVuZXcpOGZvciByZWN1cnJpbmcuLGZvcmNlX3JlbmV3BAEUZW50cnmlAQGEVHJhbnNhY3Rpb25SZWY8QmxvY2tOdW1iZXJGb3I8VD4+AAEIHQFSZW5ldyBwcmV2aW91c2x5IHN0b3JlZCBkYXRhIHN5bmNocm9ub3VzbHkuIENoYXJnZXMgYGluZm8uc2l6ZWAgYWdhaW5zdCUBdGhlIGNhbGxlcidzIGBieXRlc19wZXJtYW5lbnRgIGFuZCB0aGUgY2hhaW4td2lkZSBgUGVybWFuZW50U3RvcmFnZVVzZWRgLkRlbmFibGVfYXV0b19yZW5ldwQBMGNvbnRlbnRfaGFzaAgBLENvbnRlbnRIYXNoAAIUCQFSZWdpc3RlciByZWN1cnJpbmcgYXV0by1yZW5ld2FsIGZvciBgY29udGVudF9oYXNoYC4gRmlyc3QgY3ljbGUgaXMFAXByZXBhaWQgYXQgcmVnaXN0cmF0aW9uIChgcGFpZCA9IHRydWVgKTsgc3Vic2VxdWVudCBjeWNsZXMgY2hhcmdl+HRoZSBvd25lcidzIGF1dGhvcml6YXRpb24gaW4gYGRvX3Byb2Nlc3NfcGVuZGluZ19yZW5ld2Fsc2AgYW5kuGRyb3AgdGhlIHJlZ2lzdHJhdGlvbiBvbiBxdW90YSBleGhhdXN0aW9uIHdpdGhkW2BFdmVudDo6UmVuZXdhbEZhaWxlZGBdLkhkaXNhYmxlX2F1dG9fcmVuZXcEATBjb250ZW50X2hhc2gIASxDb250ZW50SGFzaAADEAkBRGlzYWJsZSBhdXRvLXJlbmV3YWwuIFNpZ25lZCBjYWxsZXJzIG11c3Qgb3duIHRoZSByZWdpc3RyYXRpb24gQU5E0HdhaXQgZm9yIHRoZSBwcmVwYWlkIGZpcnN0IGN5Y2xlIHRvIGhhdmUgZmlyZWQgKGVsc2X8W2BFcnJvcjo6Q2Fubm90RGlzYWJsZVByZXBhaWRBdXRvUmVuZXdhbGBdKS4gUm9vdCBieXBhc3NlcyBib3RoHGNoZWNrcy5gcHJvY2Vzc19wZW5kaW5nX3JlbmV3YWxzAAQI9E1hbmRhdG9yeSBpbmhlcmVudDogZHJhaW4gW2BQZW5kaW5nUmVuZXdhbHNgXSBmb3IgdGhlIGN1cnJlbnQRAWJsb2NrLiBSZWZ1bmRzIHRvIHRoZSBhY3R1YWxseS1kcmFpbmVkIGNvdW50IHZpYSBgUG9zdERpc3BhdGNoSW5mb2AuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLqUBCJxidWxsZXRpbl90cmFuc2FjdGlvbl9zdG9yYWdlX3ByaW1pdGl2ZXM4VHJhbnNhY3Rpb25SZWYELEJsb2NrTnVtYmVyATgBCCBQb3NpdGlvbggBFGJsb2NrOAEsQmxvY2tOdW1iZXIAARRpbmRleDgBDHUzMgAAACxDb250ZW50SGFzaAQACAEsQ29udGVudEhhc2gAAQAAqQEMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0EENhbGwEBFQAASREc2V0X2ludnVsbmVyYWJsZXMEAQxuZXdhAQFEVmVjPFQ6OkFjY291bnRJZD4AADQxAVNldCB0aGUgbGlzdCBvZiBpbnZ1bG5lcmFibGUgKGZpeGVkKSBjb2xsYXRvcnMuIFRoZXNlIGNvbGxhdG9ycyBtdXN0IGRvIHNvbWXQcHJlcGFyYXRpb24sIG5hbWVseSB0byBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLgBZAVRoZSBjYWxsIHdpbGwgcmVtb3ZlIGFueSBhY2NvdW50cyB0aGF0IGhhdmUgbm90IHJlZ2lzdGVyZWQga2V5cyBmcm9tIHRoZSBzZXQuIFRoYXQgaXMsXQFpdCBpcyBub24tYXRvbWljOyB0aGUgY2FsbGVyIGFjY2VwdHMgYWxsIGBBY2NvdW50SWRgcyBwYXNzZWQgaW4gYG5ld2AgX2luZGl2aWR1YWxseV8gYXMxAWFjY2VwdGFibGUgSW52dWxuZXJhYmxlcywgYW5kIGlzIG5vdCBwcm9wb3NpbmcgYSBfc2V0XyBvZiBuZXcgSW52dWxuZXJhYmxlcy4AWQFUaGlzIGNhbGwgZG9lcyBub3QgbWFpbnRhaW4gbXV0dWFsIGV4Y2x1c2l2aXR5IG9mIGBJbnZ1bG5lcmFibGVzYCBhbmQgYENhbmRpZGF0ZXNgLiBJdGEBaXMgcmVjb21tZW5kZWQgdG8gdXNlIGEgYmF0Y2ggb2YgYGFkZF9pbnZ1bG5lcmFibGVgIGFuZCBgcmVtb3ZlX2ludnVsbmVyYWJsZWAgaW5zdGVhZC4gQVEBYGJhdGNoX2FsbGAgY2FuIGFsc28gYmUgdXNlZCB0byBlbmZvcmNlIGF0b21pY2l0eS4gSWYgYW55IGNhbmRpZGF0ZXMgYXJlIGluY2x1ZGVkIGluTQFgbmV3YCwgdGhleSBzaG91bGQgYmUgcmVtb3ZlZCB3aXRoIGByZW1vdmVfaW52dWxuZXJhYmxlX2NhbmRpZGF0ZWAgYWZ0ZXIgZXhlY3V0aW9uLgCUTXVzdCBiZSBjYWxsZWQgYnkgdGhlIGBVcGRhdGVPcmlnaW5gLlhzZXRfZGVzaXJlZF9jYW5kaWRhdGVzBAEMbWF4OAEMdTMyAAEUVQFTZXQgdGhlIGlkZWFsIG51bWJlciBvZiBub24taW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gSWYgbG93ZXJpbmcgdGhpcyBudW1iZXIsIHRoZW4gdGhlYQFudW1iZXIgb2YgcnVubmluZyBjb2xsYXRvcnMgY291bGQgYmUgaGlnaGVyIHRoYW4gdGhpcyBmaWd1cmUuIEFzaWRlIGZyb20gdGhhdCBlZGdlIGNhc2UsNQF0aGVyZSBzaG91bGQgYmUgbm8gb3RoZXIgd2F5IHRvIGhhdmUgbW9yZSBjYW5kaWRhdGVzIHRoYW4gdGhlIGRlc2lyZWQgbnVtYmVyLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkhzZXRfY2FuZGlkYWN5X2JvbmQEARBib25k/AEwQmFsYW5jZU9mPFQ+AAIceFNldCB0aGUgY2FuZGlkYWN5IGJvbmQgYW1vdW50LgBRAUlmIHRoZSBjYW5kaWRhY3kgYm9uZCBpcyBpbmNyZWFzZWQgYnkgdGhpcyBjYWxsLCBhbGwgY3VycmVudCBjYW5kaWRhdGVzIHdoaWNoIGhhdmUgYU0BZGVwb3NpdCBsb3dlciB0aGFuIHRoZSBuZXcgYm9uZCB3aWxsIGJlIGtpY2tlZCBmcm9tIHRoZSBsaXN0IGFuZCBnZXQgdGhlaXIgZGVwb3NpdHMUYmFjay4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC5UcmVnaXN0ZXJfYXNfY2FuZGlkYXRlAAMQQQFSZWdpc3RlciB0aGlzIGFjY291bnQgYXMgYSBjb2xsYXRvciBjYW5kaWRhdGUuIFRoZSBhY2NvdW50IG11c3QgKGEpIGFscmVhZHkgaGF2ZR0BcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMgYW5kIChiKSBiZSBhYmxlIHRvIHJlc2VydmUgdGhlIGBDYW5kaWRhY3lCb25kYC4A3FRoaXMgY2FsbCBpcyBub3QgYXZhaWxhYmxlIHRvIGBJbnZ1bG5lcmFibGVgIGNvbGxhdG9ycy4wbGVhdmVfaW50ZW50AAQUVQFEZXJlZ2lzdGVyIGBvcmlnaW5gIGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBOb3RlIHRoYXQgdGhlIGNvbGxhdG9yIGNhbiBvbmx5IGxlYXZlIG9uDQFzZXNzaW9uIGNoYW5nZS4gVGhlIGBDYW5kaWRhY3lCb25kYCB3aWxsIGJlIHVucmVzZXJ2ZWQgaW1tZWRpYXRlbHkuABkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgdG90YWwgbnVtYmVyIG9mIGNhbmRpZGF0ZXMgd291bGQgZHJvcCBiZWxvd1xgTWluRWxpZ2libGVDb2xsYXRvcnNgLkBhZGRfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAUQRQFBZGQgYSBuZXcgYWNjb3VudCBgd2hvYCB0byB0aGUgbGlzdCBvZiBgSW52dWxuZXJhYmxlc2AgY29sbGF0b3JzLiBgd2hvYCBtdXN0IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLiBJZiBgd2hvYCBpcyBhIGNhbmRpZGF0ZSwgdGhleSB3aWxsIGJlIHJlbW92ZWQuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuTHJlbW92ZV9pbnZ1bG5lcmFibGUEAQx3aG8EATBUOjpBY2NvdW50SWQABhBhAVJlbW92ZSBhbiBhY2NvdW50IGB3aG9gIGZyb20gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYEludnVsbmVyYWJsZXNgIG11c3QoYmUgc29ydGVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLix1cGRhdGVfYm9uZAQBLG5ld19kZXBvc2l0/AEwQmFsYW5jZU9mPFQ+AAccXQFVcGRhdGUgdGhlIGNhbmRpZGFjeSBib25kIG9mIGNvbGxhdG9yIGNhbmRpZGF0ZSBgb3JpZ2luYCB0byBhIG5ldyBhbW91bnQgYG5ld19kZXBvc2l0YC4AQQFTZXR0aW5nIGEgYG5ld19kZXBvc2l0YCB0aGF0IGlzIGxvd2VyIHRoYW4gdGhlIGN1cnJlbnQgZGVwb3NpdCB3aGlsZSBgb3JpZ2luYCBpc+BvY2N1cHlpbmcgYSB0b3AtYERlc2lyZWRDYW5kaWRhdGVzYCBzbG90IGlzIG5vdCBhbGxvd2VkLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgYG9yaWdpbmAgaXMgbm90IGEgY29sbGF0b3IgY2FuZGlkYXRlLCB0aGUgdXBkYXRlZCBib25kIGlzIGxvd2VyGQF0aGFuIHRoZSBtaW5pbXVtIGNhbmRpZGFjeSBib25kLCBhbmQvb3IgdGhlIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuTHRha2VfY2FuZGlkYXRlX3Nsb3QIARxkZXBvc2l0/AEwQmFsYW5jZU9mPFQ+AAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAgcTQFUaGUgY2FsbGVyIGBvcmlnaW5gIHJlcGxhY2VzIGEgY2FuZGlkYXRlIGB0YXJnZXRgIGluIHRoZSBjb2xsYXRvciBjYW5kaWRhdGUgbGlzdCBieVUBcmVzZXJ2aW5nIGBkZXBvc2l0YC4gVGhlIGFtb3VudCBgZGVwb3NpdGAgcmVzZXJ2ZWQgYnkgdGhlIGNhbGxlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbuB0aGUgZXhpc3RpbmcgYm9uZCBvZiB0aGUgdGFyZ2V0IGl0IGlzIHRyeWluZyB0byByZXBsYWNlLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IGEgY29sbGF0b3IgY2FuZGlkYXRlIG9yIGludnVsbmVyYWJsZSwgdGhlVQFjYWxsZXIgZG9lcyBub3QgaGF2ZSByZWdpc3RlcmVkIHNlc3Npb24ga2V5cywgdGhlIHRhcmdldCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsvGFuZC9vciB0aGUgYGRlcG9zaXRgIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLq0BDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQQQ2FsbAQEVAABCCBzZXRfa2V5cwgBEGtleXOxAQEcVDo6S2V5cwABFHByb29mGAEcVmVjPHU4PgAALORTZXRzIHRoZSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyIHRvIGBrZXlzYC4AHQFBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4AAQEtIGBvcmlnaW5gOiBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzaWduZWQuVQEtIGBrZXlzYDogVGhlIG5ldyBzZXNzaW9uIGtleXMgdG8gc2V0LiBUaGVzZSBhcmUgdGhlIHB1YmxpYyBrZXlzIG9mIGFsbCBzZXNzaW9ucyBrZXlzXCAgc2V0dXAgaW4gdGhlIHJ1bnRpbWUuQQEtIGBwcm9vZmA6IFRoZSBwcm9vZiB0aGF0IGBvcmlnaW5gIGhhcyBhY2Nlc3MgdG8gdGhlIHByaXZhdGUga2V5cyBvZiBga2V5c2AuIFNlZU0BICBbYGltcGxfb3BhcXVlX2tleXNgXShzcF9ydW50aW1lOjppbXBsX29wYXF1ZV9rZXlzKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGU8ICBwcm9vZiBmb3JtYXQuKHB1cmdlX2tleXMAASDIUmVtb3ZlcyBhbnkgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlci4AwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIGFjY291bnQgbXVzdCBiZSBlaXRoZXIgYmVdAWNvbnZlcnRpYmxlIHRvIGEgdmFsaWRhdG9yIElEIHVzaW5nIHRoZSBjaGFpbidzIHR5cGljYWwgYWRkcmVzc2luZyBzeXN0ZW0gKHRoaXMgdXN1YWxseVEBbWVhbnMgYmVpbmcgYSBjb250cm9sbGVyIGFjY291bnQpIG9yIGRpcmVjdGx5IGNvbnZlcnRpYmxlIGludG8gYSB2YWxpZGF0b3IgSUQgKHdoaWNolHVzdWFsbHkgbWVhbnMgYmVpbmcgYSBzdGFzaCBhY2NvdW50KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMusQEIWGJ1bGxldGluX3Bhc2VvX3J1bnRpbWUsU2Vzc2lvbktleXMAAAQBEGF1cmG1AQHEPEF1cmEgYXMgJGNyYXRlOjpCb3VuZFRvUnVudGltZUFwcFB1YmxpYz46OlB1YmxpYwAAtQEQRHNwX2NvbnNlbnN1c19hdXJhHHNyMjU1MTksYXBwX3NyMjU1MTkYUHVibGljAAAEAAgBPHNyMjU1MTk6OlB1YmxpYwAAuQEMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0EENhbGwEBFQAARRUc3VzcGVuZF94Y21fZXhlY3V0aW9uAAEMSQFTdXNwZW5kcyBhbGwgWENNIGV4ZWN1dGlvbnMgZm9yIHRoZSBYQ01QIHF1ZXVlLCByZWdhcmRsZXNzIG9mIHRoZSBzZW5kZXIncyBvcmlnaW4uAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLlByZXN1bWVfeGNtX2V4ZWN1dGlvbgACFLhSZXN1bWVzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUuAD0BTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXR1cyBvZiB0aGUgaW4vb3V0IGJvdW5kIGNoYW5uZWxzLgCkLSBgb3JpZ2luYDogTXVzdCBwYXNzIGBDb250cm9sbGVyT3JpZ2luYC5gdXBkYXRlX3N1c3BlbmRfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAMUSQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcXVldWUgZm9yIHRoZSBvdGhlciBzaWRlIHRvIGJleHRvbGQgdG8gc3VzcGVuZCB0aGVpciBzZW5kaW5nLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC7oLSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5zdXNwZW5kX3ZhbHVlYFR1cGRhdGVfZHJvcF90aHJlc2hvbGQEAQxuZXc4AQx1MzIABBRFAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBhZnRlciB3aGljaCB3ZSBkcm9wIGFueYhmdXJ0aGVyIG1lc3NhZ2VzIGZyb20gdGhlIGNoYW5uZWwuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLuwtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLmRyb3BfdGhyZXNob2xkYFx1cGRhdGVfcmVzdW1lX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAFFE0BT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIHRoZSBxdWV1ZSBtdXN0IGJlIHJlZHVjZWQgdG8gYmVmb3JlIGl0IHNpZ25hbHMBAXRoYXQgbWVzc2FnZSBzZW5kaW5nIG1heSByZWNvbW1lbmNlIGFmdGVyIGl0IGhhcyBiZWVuIHN1c3BlbmRlZC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu9C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEucmVzdW1lX3RocmVzaG9sZGAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvQEMKHBhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAAUQQc2VuZAgBEGRlc3TBAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHG1lc3NhZ2UNAgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAAAPHRlbGVwb3J0X2Fzc2V0cxABEGRlc3TBAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5wQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHNNAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABSBEBVGVsZXBvcnQgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gc29tZSBkZXN0aW5hdGlvbiBjaGFpbi4AHQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2AgaW5zdGVhZC4qKgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYC4gVGhlIHdlaWdodCBsaW1pdCBmb3IgZmVlcyBpcyBub3QgcHJvdmlkZWQgYW5kIHRodXMgaXMgdW5saW1pdGVkLLR3aXRoIGFsbCBmZWVzIHRha2VuIGFzIG5lZWRlZCBmcm9tIHRoZSBhc3NldC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuXHJlc2VydmVfdHJhbnNmZXJfYXNzZXRzEAEQZGVzdMEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnBAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c00DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAJ4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4APQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy4cZXhlY3V0ZQgBHG1lc3NhZ2VRAwG0Qm94PFZlcnNpb25lZFhjbTw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4+AAEobWF4X3dlaWdodCkBARhXZWlnaHQAAyDQRXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSBmcm9tIGEgbG9jYWwsIHNpZ25lZCwgb3JpZ2luLgBNAUFuIGV2ZW50IGlzIGRlcG9zaXRlZCBpbmRpY2F0aW5nIHdoZXRoZXIgYG1zZ2AgY291bGQgYmUgZXhlY3V0ZWQgY29tcGxldGVseSBvciBvbmx5KHBhcnRpYWxseS4AXQFObyBtb3JlIHRoYW4gYG1heF93ZWlnaHRgIHdpbGwgYmUgdXNlZCBpbiBpdHMgYXR0ZW1wdGVkIGV4ZWN1dGlvbi4gSWYgdGhpcyBpcyBsZXNzIHRoYW5BAXRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgdGhhdCB0aGUgbWVzc2FnZSBjb3VsZCB0YWtlIHRvIGJlIGV4ZWN1dGVkLCB0aGVuIG5vfGV4ZWN1dGlvbiBhdHRlbXB0IHdpbGwgYmUgbWFkZS5EZm9yY2VfeGNtX3ZlcnNpb24IASBsb2NhdGlvbuABNEJveDxMb2NhdGlvbj4AARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAEGEkBRXh0b2xsIHRoYXQgYSBwYXJ0aWN1bGFyIGRlc3RpbmF0aW9uIGNhbiBiZSBjb21tdW5pY2F0ZWQgd2l0aCB0aHJvdWdoIGEgcGFydGljdWxhcjx2ZXJzaW9uIG9mIFhDTS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7YLSBgbG9jYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdGhhdCBpcyBiZWluZyBkZXNjcmliZWQuEQEtIGB4Y21fdmVyc2lvbmA6IFRoZSBsYXRlc3QgdmVyc2lvbiBvZiBYQ00gdGhhdCBgbG9jYXRpb25gIHN1cHBvcnRzLmRmb3JjZV9kZWZhdWx0X3hjbV92ZXJzaW9uBAFEbWF5YmVfeGNtX3ZlcnNpb25FAQFIT3B0aW9uPFhjbVZlcnNpb24+AAUUWQFTZXQgYSBzYWZlIFhDTSB2ZXJzaW9uICh0aGUgdmVyc2lvbiB0aGF0IFhDTSBzaG91bGQgYmUgZW5jb2RlZCB3aXRoIGlmIHRoZSBtb3N0IHJlY2VudLR2ZXJzaW9uIGEgZGVzdGluYXRpb24gY2FuIGFjY2VwdCBpcyB1bmtub3duKS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi45AS0gYG1heWJlX3hjbV92ZXJzaW9uYDogVGhlIGRlZmF1bHQgWENNIGVuY29kaW5nIHZlcnNpb24sIG9yIGBOb25lYCB0byBkaXNhYmxlLnhmb3JjZV9zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbsEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAYQOQFBc2sgYSBsb2NhdGlvbiB0byBub3RpZnkgdXMgcmVnYXJkaW5nIHRoZWlyIFhDTSB2ZXJzaW9uIGFuZCBhbnkgY2hhbmdlcyB0byBpdC4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi5ZAS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIHNob3VsZCBzdWJzY3JpYmUgZm9yIFhDTSB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMugGZvcmNlX3Vuc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5BAEgbG9jYXRpb27BAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAHGEkBUmVxdWlyZSB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBzaG91bGQgbm8gbG9uZ2VyIG5vdGlmeSB1cyByZWdhcmRpbmcgYW55IFhDTUB2ZXJzaW9uIGNoYW5nZXMuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uPQEtIGBsb2NhdGlvbmA6IFRoZSBsb2NhdGlvbiB0byB3aGljaCB3ZSBhcmUgY3VycmVudGx5IHN1YnNjcmliZWQgZm9yIFhDTSB2ZXJzaW9uqCAgbm90aWZpY2F0aW9ucyB3aGljaCB3ZSBubyBsb25nZXIgZGVzaXJlLnxsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzFAEQZGVzdMEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnBAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c00DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0gQIBLFdlaWdodExpbWl0AAh4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAsIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuXGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzFAEQZGVzdMEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnBAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c00DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0gQIBLFdlaWdodExpbWl0AAlIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5AZm9yY2Vfc3VzcGVuc2lvbgQBJHN1c3BlbmRlZF0BARBib29sAAoQ9FNldCBvciB1bnNldCB0aGUgZ2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7QLSBgc3VzcGVuZGVkYDogYHRydWVgIHRvIHN1c3BlbmQsIGBmYWxzZWAgdG8gcmVzdW1lLjx0cmFuc2Zlcl9hc3NldHMUARBkZXN0wQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyecEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzTQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXSBAgEsV2VpZ2h0TGltaXQAC4RdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLNBkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZSwgb3IgdGhyb3VnaCB0ZWxlcG9ydHMuAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mNQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gIChoZW5jZSByZWZlcnJlZCB0byBhcyBgZmVlc2ApLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvckEBYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodCBpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGXcb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgBhAWBhc3NldHNgIChleGNsdWRpbmcgYGZlZXNgKSBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG90aGVyd2lzZSBiZSB0ZWxlcG9ydGFibGWwdG8gYGRlc3RgLCBubyBsaW1pdGF0aW9ucyBpbXBvc2VkIG9uIGBmZWVzYC5NASAtIGZvciBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb24gY2hhaW4gYW5kTQEgICBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0b0QgICBgYmVuZWZpY2lhcnlgLmEBIC0gZm9yIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvIGBkZXN0YCBjaGFpblkBICAgdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZCBkZXBvc2l0IHRoZW1QICAgdG8gYGJlbmVmaWNpYXJ5YC5dASAtIGZvciByZW1vdGUgcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIHJlc2VydmUgY2hhaW4gdG8gbW92ZSByZXNlcnZlc10BICAgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXIgWENNIHRvIGBkZXN0YCB0byBtaW501CAgIGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuUQEgLSBmb3IgdGVsZXBvcnRzOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBYQ00gdG8gYGRlc3RgIGNoYWluIHRvIG1pbnQvdGVsZXBvcnSwICAgYXNzZXRzIGFuZCBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLi0BLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBYMihQYXJlbnQsVQEgIFBhcmFjaGFpbiguLikpYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFgxKFBhcmFjaGFpbiguLikpYCB0byBzZW5kaCAgZnJvbSByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuMGNsYWltX2Fzc2V0cwgBGGFzc2V0c00DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABLGJlbmVmaWNpYXJ5wQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ADCBVAUNsYWltcyBhc3NldHMgdHJhcHBlZCBvbiB0aGlzIHBhbGxldCBiZWNhdXNlIG9mIGxlZnRvdmVyIGFzc2V0cyBkdXJpbmcgWENNIGV4ZWN1dGlvbi4ArC0gYG9yaWdpbmA6IEFueW9uZSBjYW4gY2FsbCB0aGlzIGV4dHJpbnNpYy5dAS0gYGFzc2V0c2A6IFRoZSBleGFjdCBhc3NldHMgdGhhdCB3ZXJlIHRyYXBwZWQuIFVzZSB0aGUgdmVyc2lvbiB0byBzcGVjaWZ5IHdoYXQgdmVyc2lvbph3YXMgdGhlIGxhdGVzdCB3aGVuIHRoZXkgd2VyZSB0cmFwcGVkLkUBLSBgYmVuZWZpY2lhcnlgOiBUaGUgbG9jYXRpb24vYWNjb3VudCB3aGVyZSB0aGUgY2xhaW1lZCBhc3NldHMgd2lsbCBiZSBkZXBvc2l0ZWQuAAkBVGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgbGluZWFyIGluIHRoZSBudW1iZXIgb2YgYXNzZXRzIGNsYWltZWQujHRyYW5zZmVyX2Fzc2V0c191c2luZ190eXBlX2FuZF90aGVuHAEQZGVzdMEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzTQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAFQYXNzZXRzX3RyYW5zZmVyX3R5cGV9AwFEQm94PFRyYW5zZmVyVHlwZT4AAThyZW1vdGVfZmVlc19pZIEDAVRCb3g8VmVyc2lvbmVkQXNzZXRJZD4AAUhmZWVzX3RyYW5zZmVyX3R5cGV9AwFEQm94PFRyYW5zZmVyVHlwZT4AAUhjdXN0b21feGNtX29uX2Rlc3QNAgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAEwd2VpZ2h0X2xpbWl0gQIBLFdlaWdodExpbWl0AA3AVQFUcmFuc2ZlciBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHVzaW5nIGV4cGxpY2l0IHRyYW5zZmVyaHR5cGVzIGZvciBhc3NldHMgYW5kIGZlZXMuAFkBYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBvciBtYXkgYmUgdGVsZXBvcnRhYmxlIHRvIGBkZXN0YC4gQ2FsbGVyIG11c3TscHJvdmlkZSB0aGUgYGFzc2V0c190cmFuc2Zlcl90eXBlYCB0byBiZSB1c2VkIGZvciBgYXNzZXRzYDpRASAtIGBUcmFuc2ZlclR5cGU6OkxvY2FsUmVzZXJ2ZWA6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpEZXN0aW5hdGlvblJlc2VydmVgOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpSZW1vdGVSZXNlcnZlKHJlc2VydmUpYDogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIGByZXNlcnZlYGEBICAgY2hhaW4gdG8gbW92ZSByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlclUBICAgWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuIFR5cGljYWxseZQgICB0aGUgcmVtb3RlIGByZXNlcnZlYCBpcyBBc3NldCBIdWIuRQEgLSBgVHJhbnNmZXJUeXBlOjpUZWxlcG9ydGA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG/oICAgbWludC90ZWxlcG9ydCBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgBVAU9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiwgYXMgd2VsbCBhcyBhbnkgaW50ZXJtZWRpYXJ5IGhvcHMsIGBCdXlFeGVjdXRpb25gIGlzIHVzZWQgdG8hAWJ1eSBleGVjdXRpb24gdXNpbmcgdHJhbnNmZXJyZWQgYGFzc2V0c2AgaWRlbnRpZmllZCBieSBgcmVtb3RlX2ZlZXNfaWRgLlkBTWFrZSBzdXJlIGVub3VnaCBvZiB0aGUgc3BlY2lmaWVkIGByZW1vdGVfZmVlc19pZGAgYXNzZXQgaXMgaW5jbHVkZWQgaW4gdGhlIGdpdmVuIGxpc3RhAW9mIGBhc3NldHNgLiBgcmVtb3RlX2ZlZXNfaWRgIHNob3VsZCBiZSBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAEUBYHJlbW90ZV9mZWVzX2lkYCBtYXkgdXNlIGRpZmZlcmVudCB0cmFuc2ZlciB0eXBlIHRoYW4gcmVzdCBvZiBgYXNzZXRzYCBhbmQgY2FuIGJlnHNwZWNpZmllZCB0aHJvdWdoIGBmZWVzX3RyYW5zZmVyX3R5cGVgLgBhAVRoZSBjYWxsZXIgbmVlZHMgdG8gc3BlY2lmeSB3aGF0IHNob3VsZCBoYXBwZW4gdG8gdGhlIHRyYW5zZmVycmVkIGFzc2V0cyBvbmNlIHRoZXkgcmVhY2hBAXRoZSBgZGVzdGAgY2hhaW4uIFRoaXMgaXMgZG9uZSB0aHJvdWdoIHRoZSBgY3VzdG9tX3hjbV9vbl9kZXN0YCBwYXJhbWV0ZXIsIHdoaWNo/GNvbnRhaW5zIHRoZSBpbnN0cnVjdGlvbnMgdG8gZXhlY3V0ZSBvbiBgZGVzdGAgYXMgYSBmaW5hbCBzdGVwLnwgIFRoaXMgaXMgdXN1YWxseSBhcyBzaW1wbGUgYXM6UQEgIGBYY20odmVjIVtEZXBvc2l0QXNzZXQgeyBhc3NldHM6IFdpbGQoQWxsQ291bnRlZChhc3NldHMubGVuKCkpKSwgYmVuZWZpY2lhcnkgfV0pYCwxASAgYnV0IGNvdWxkIGJlIHNvbWV0aGluZyBtb3JlIGV4b3RpYyBsaWtlIHNlbmRpbmcgdGhlIGBhc3NldHNgIGV2ZW4gZnVydGhlci4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbT0BICByZWxheSB0byBwYXJhY2hhaW4sIG9yIGAocGFyZW50czogMiwgKEdsb2JhbENvbnNlbnN1cyguLiksIC4uKSlgIHRvIHNlbmQgZnJvbfQgIHBhcmFjaGFpbiBhY3Jvc3MgYSBicmlkZ2UgdG8gYW5vdGhlciBlY29zeXN0ZW0gZGVzdGluYXRpb24uWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLj0BLSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBhc3NldHNgLiEBLSBgcmVtb3RlX2ZlZXNfaWRgOiBPbmUgb2YgdGhlIGluY2x1ZGVkIGBhc3NldHNgIHRvIGJlIHVzZWQgdG8gcGF5IGZlZXMuSQEtIGBmZWVzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBmZWVzYCBhc3NldHMuWQEtIGBjdXN0b21feGNtX29uX2Rlc3RgOiBUaGUgWENNIHRvIGJlIGV4ZWN1dGVkIG9uIGBkZXN0YCBjaGFpbiBhcyB0aGUgbGFzdCBzdGVwIG9mIHRoZVkBICB0cmFuc2Zlciwgd2hpY2ggYWxzbyBkZXRlcm1pbmVzIHdoYXQgaGFwcGVucyB0byB0aGUgYXNzZXRzIG9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLlBhZGRfYXV0aG9yaXplZF9hbGlhcwgBHGFsaWFzZXLBAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHGV4cGlyZXOFAwEsT3B0aW9uPHU2ND4ADixdAUF1dGhvcml6ZSBhbm90aGVyIGBhbGlhc2VyYCBsb2NhdGlvbiB0byBhbGlhcyBpbnRvIHRoZSBsb2NhbCBgb3JpZ2luYCBtYWtpbmcgdGhpcyBjYWxsLikBVGhlIGBhbGlhc2VyYCBpcyBvbmx5IGF1dGhvcml6ZWQgdW50aWwgdGhlIHByb3ZpZGVkIGBleHBpcnlgIGJsb2NrIG51bWJlci5JAVRoZSBjYWxsIGNhbiBhbHNvIGJlIHVzZWQgZm9yIGEgcHJldmlvdXNseSBhdXRob3JpemVkIGFsaWFzIGluIG9yZGVyIHRvIHVwZGF0ZSBpdHNYYGV4cGlyeWAgYmxvY2sgbnVtYmVyLgBRAVVzdWFsbHkgdXNlZnVsIHRvIGFsbG93IHlvdXIgbG9jYWwgYWNjb3VudCB0byBiZSBhbGlhc2VkIGludG8gZnJvbSBhIHJlbW90ZSBsb2NhdGlvbvRhbHNvIHVuZGVyIHlvdXIgY29udHJvbCAobGlrZSB5b3VyIGFjY291bnQgb24gYW5vdGhlciBjaGFpbikuAFEBV0FSTklORzogbWFrZSBzdXJlIHRoZSBjYWxsZXIgYG9yaWdpbmAgKHlvdSkgdHJ1c3RzIHRoZSBgYWxpYXNlcmAgbG9jYXRpb24gdG8gYWN0IGluWQF0aGVpci95b3VyIG5hbWUuIE9uY2UgYXV0aG9yaXplZCB1c2luZyB0aGlzIGNhbGwsIHRoZSBgYWxpYXNlcmAgY2FuIGZyZWVseSBpbXBlcnNvbmF0ZdRgb3JpZ2luYCBpbiBYQ00gcHJvZ3JhbXMgZXhlY3V0ZWQgb24gdGhlIGxvY2FsIGNoYWluLlxyZW1vdmVfYXV0aG9yaXplZF9hbGlhcwQBHGFsaWFzZXLBAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAPCF0BUmVtb3ZlIGEgcHJldmlvdXNseSBhdXRob3JpemVkIGBhbGlhc2VyYCBmcm9tIHRoZSBsaXN0IG9mIGxvY2F0aW9ucyB0aGF0IGNhbiBhbGlhcyBpbnRvkHRoZSBsb2NhbCBgb3JpZ2luYCBtYWtpbmcgdGhpcyBjYWxsLnRyZW1vdmVfYWxsX2F1dGhvcml6ZWRfYWxpYXNlcwAQCEkBUmVtb3ZlIGFsbCBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYGFsaWFzZXJgcyB0aGF0IGNhbiBhbGlhcyBpbnRvIHRoZSBsb2NhbCBgb3JpZ2luYERtYWtpbmcgdGhpcyBjYWxsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7BAQgMeGNtRFZlcnNpb25lZExvY2F0aW9uAAEMCFYzBADFAQFEdjM6Ok11bHRpTG9jYXRpb24AAwAIVjQEANkBATB2NDo6TG9jYXRpb24ABAAIVjUEAOABMHY1OjpMb2NhdGlvbgAFAADFARAsc3RhZ2luZ194Y20IdjM0bXVsdGlsb2NhdGlvbjRNdWx0aUxvY2F0aW9uAAAIARxwYXJlbnRzDAEIdTgAASBpbnRlcmlvcskBASRKdW5jdGlvbnMAAMkBEAx4Y20IdjMkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBADNAQEgSnVuY3Rpb24AAQAIWDIIAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAAIACFgzDADNAQEgSnVuY3Rpb24AAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAAMACFg0EADNAQEgSnVuY3Rpb24AAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAADNAQEgSnVuY3Rpb24ABAAIWDUUAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAADNAQEgSnVuY3Rpb24AAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAAUACFg2GADNAQEgSnVuY3Rpb24AAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAADNAQEgSnVuY3Rpb24AAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAAYACFg3HADNAQEgSnVuY3Rpb24AAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAADNAQEgSnVuY3Rpb24AAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAADNAQEgSnVuY3Rpb24ABwAIWDggAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAADNAQEgSnVuY3Rpb24AAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAADNAQEgSnVuY3Rpb24AAM0BASBKdW5jdGlvbgAAzQEBIEp1bmN0aW9uAAgAAM0BEAx4Y20IdjMganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3Jr0QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmvRAQFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3Jr0QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQA+AEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkAQEBGEJvZHlJZAABEHBhcnQFAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBADVAQEkTmV0d29ya0lkAAkAANEBBBhPcHRpb24EBFQB1QEBCBBOb25lAAAAEFNvbWUEANUBAAABAADVARAMeGNtCHYzIGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWS0AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAADZARAsc3RhZ2luZ194Y20IdjQgbG9jYXRpb24gTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9y3QEBJEp1bmN0aW9ucwAA3QEQLHN0YWdpbmdfeGNtCHY0JGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQA4QEBSEFyYzxbSnVuY3Rpb247IDFdPgABAAhYMgQA8QEBSEFyYzxbSnVuY3Rpb247IDJdPgACAAhYMwQA9QEBSEFyYzxbSnVuY3Rpb247IDNdPgADAAhYNAQA+QEBSEFyYzxbSnVuY3Rpb247IDRdPgAEAAhYNQQA/QEBSEFyYzxbSnVuY3Rpb247IDVdPgAFAAhYNgQAAQIBSEFyYzxbSnVuY3Rpb247IDZdPgAGAAhYNwQABQIBSEFyYzxbSnVuY3Rpb247IDddPgAHAAhYOAQACQIBSEFyYzxbSnVuY3Rpb247IDhdPgAIAADhAQAAAwEAAADlAQDlARAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3Jr6QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmvpAQFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3Jr6QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQA+AEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkAQEBGEJvZHlJZAABEHBhcnQFAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBADtAQEkTmV0d29ya0lkAAkAAOkBBBhPcHRpb24EBFQB7QEBCBBOb25lAAAAEFNvbWUEAO0BAAABAADtARAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAPEBAAADAgAAAOUBAPUBAAADAwAAAOUBAPkBAAADBAAAAOUBAP0BAAADBQAAAOUBAAECAAADBgAAAOUBAAUCAAADBwAAAOUBAAkCAAADCAAAAOUBAA0CCAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMwQAEQIBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BACFAgFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAIVjUEANECAVB2NTo6WGNtPFJ1bnRpbWVDYWxsPgAFAAARAgwMeGNtCHYzDFhjbQQQQ2FsbAAABAAVAgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAFQIAAAIZAgAZAgwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAB0CASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAB0CASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAAdAgEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlPQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodCkBARhXZWlnaHQAARxxdWVyaWVyZQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzHQIBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnnFAQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cx0CASxNdWx0aUFzc2V0cwABEGRlc3TFAQE0TXVsdGlMb2NhdGlvbgABDHhjbRECARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmRpAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QpAQEYV2VpZ2h0AAEQY2FsbG0CAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAMkBAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAHECAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHN1AgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5xQEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c3UCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdMUBATRNdWx0aUxvY2F0aW9uAAEMeGNtEQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmV1AgFATXVsdGlBc3NldEZpbHRlcgABEHdhbnQdAgEsTXVsdGlBc3NldHMAARxtYXhpbWFsXQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHN1AgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmXFAQE0TXVsdGlMb2NhdGlvbgABDHhjbRECARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHN1AgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TFAQE0TXVsdGlMb2NhdGlvbgABDHhjbRECARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvcQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzdQIBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlcyUCAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl0gQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAARAgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAARAgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0cx0CASxNdWx0aUFzc2V0cwABGHRpY2tldMUBATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodCkBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAHQIBLE11bHRpQXNzZXRzABwALEV4cGVjdEFzc2V0BAAdAgEsTXVsdGlBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABlAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBABBAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAF0CAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm9xAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBABxAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAM0BASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya9UBASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbskBAVRJbnRlcmlvck11bHRpTG9jYXRpb24AAQx4Y20RAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldCUCAShNdWx0aUFzc2V0AAEgdW5sb2NrZXLFAQE0TXVsdGlMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0JQIBKE11bHRpQXNzZXQAARh0YXJnZXTFAQE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0JQIBKE11bHRpQXNzZXQAARRvd25lcsUBATRNdWx0aUxvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldCUCAShNdWx0aUFzc2V0AAEYbG9ja2VyxQEBNE11bHRpTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXddAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAxQEBNE11bHRpTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0gQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luZQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAvAAAdAhAMeGNtCHYzKG11bHRpYXNzZXQsTXVsdGlBc3NldHMAAAQAIQIBPFZlYzxNdWx0aUFzc2V0PgAAIQIAAAIlAgAlAhAMeGNtCHYzKG11bHRpYXNzZXQoTXVsdGlBc3NldAAACAEIaWQpAgEcQXNzZXRJZAABDGZ1bi0CASxGdW5naWJpbGl0eQAAKQIQDHhjbQh2MyhtdWx0aWFzc2V0HEFzc2V0SWQAAQggQ29uY3JldGUEAMUBATRNdWx0aUxvY2F0aW9uAAAAIEFic3RyYWN0BAAIASBbdTg7IDMyXQABAAAtAhAMeGNtCHYzKG11bHRpYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAPgBEHUxMjgAAAAsTm9uRnVuZ2libGUEADECATRBc3NldEluc3RhbmNlAAEAADECEAx4Y20IdjMobXVsdGlhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQA+AEQdTEyOAABABhBcnJheTQEAHABHFt1ODsgNF0AAgAYQXJyYXk4BAA1AgEcW3U4OyA4XQADABxBcnJheTE2BAA5AgEgW3U4OyAxNl0ABAAcQXJyYXkzMgQACAEgW3U4OyAzMl0ABQAANQIAAAMIAAAADAA5AgAAAxAAAAAMAD0CDAx4Y20IdjMgUmVzcG9uc2UAARgQTnVsbAAAABhBc3NldHMEAB0CASxNdWx0aUFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAEECAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQATQIBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BABdAgE4TWF5YmVFcnJvckNvZGUABQAAQQIEGE9wdGlvbgQEVAFFAgEIEE5vbmUAAAAQU29tZQQARQIAAAEAAEUCAAAECDhJAgBJAhAMeGNtCHYzGHRyYWl0cxRFcnJvcgABoCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAoAQx1NjQAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgBMVW5oYW5kbGVkWGNtVmVyc2lvbgAjAEhXZWlnaHRMaW1pdFJlYWNoZWQEACkBARhXZWlnaHQAJAAcQmFycmllcgAlAExXZWlnaHROb3RDb21wdXRhYmxlACYAREV4Y2VlZHNTdGFja0xpbWl0ACcAAE0CDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBUQIEUwAABABZAgEYVmVjPFQ+AABRAgwMeGNtCHYzKFBhbGxldEluZm8AABgBFGluZGV4YAEMdTMyAAEQbmFtZVUCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1lVQIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JgAQx1MzIAARRtaW5vcmABDHUzMgABFHBhdGNoYAEMdTMyAABVAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAFkCAAACUQIAXQIMDHhjbQh2MzhNYXliZUVycm9yQ29kZQABDBxTdWNjZXNzAAAAFEVycm9yBABhAgGMQm91bmRlZFZlYzx1OCwgTWF4RGlzcGF0Y2hFcnJvckxlbj4AAQA4VHJ1bmNhdGVkRXJyb3IEAGECAYxCb3VuZGVkVmVjPHU4LCBNYXhEaXNwYXRjaEVycm9yTGVuPgACAABhAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAGUCBBhPcHRpb24EBFQBxQEBCBBOb25lAAAAEFNvbWUEAMUBAAABAABpAgwMeGNtCHYzKE9yaWdpbktpbmQAARAYTmF0aXZlAAAAQFNvdmVyZWlnbkFjY291bnQAAQAkU3VwZXJ1c2VyAAIADFhjbQADAABtAgwMeGNtOGRvdWJsZV9lbmNvZGVkNERvdWJsZUVuY29kZWQEBFQAAAQBHGVuY29kZWQYARxWZWM8dTg+AABxAgwMeGNtCHYzRFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbsUBATRNdWx0aUxvY2F0aW9uAAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEobWF4X3dlaWdodCkBARhXZWlnaHQAAHUCEAx4Y20IdjMobXVsdGlhc3NldEBNdWx0aUFzc2V0RmlsdGVyAAEIIERlZmluaXRlBAAdAgEsTXVsdGlBc3NldHMAAAAQV2lsZAQAeQIBOFdpbGRNdWx0aUFzc2V0AAEAAHkCEAx4Y20IdjMobXVsdGlhc3NldDhXaWxkTXVsdGlBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZCkCARxBc3NldElkAAEMZnVufQIBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABgAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWQpAgEcQXNzZXRJZAABDGZ1bn0CATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGABDHUzMgADAAB9AhAMeGNtCHYzKG11bHRpYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAAIECDAx4Y20IdjMsV2VpZ2h0TGltaXQAAQgkVW5saW1pdGVkAAAAHExpbWl0ZWQEACkBARhXZWlnaHQAAQAAhQIMLHN0YWdpbmdfeGNtCHY0DFhjbQQQQ2FsbAAABACJAgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAiQIAAAKNAgCNAgwsc3RhZ2luZ194Y20IdjQsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAkQIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAJECARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAkQIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2WpAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0KQEBGFdlaWdodAABHHF1ZXJpZXK9AgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzkQIBGEFzc2V0cwABLGJlbmVmaWNpYXJ52QEBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzkQIBGEFzc2V0cwABEGRlc3TZAQEgTG9jYXRpb24AAQx4Y22FAgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kaQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0KQEBGFdlaWdodAABEGNhbGxtAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADdAQFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAwQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c8UCASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ52QEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHPFAgEsQXNzZXRGaWx0ZXIAARBkZXN02QEBIExvY2F0aW9uAAEMeGNthQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmXFAgEsQXNzZXRGaWx0ZXIAARB3YW50kQIBGEFzc2V0cwABHG1heGltYWxdAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c8UCASxBc3NldEZpbHRlcgABHHJlc2VydmXZAQEgTG9jYXRpb24AAQx4Y22FAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzxQIBLEFzc2V0RmlsdGVyAAEQZGVzdNkBASBMb2NhdGlvbgABDHhjbYUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvwQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzxQIBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXOZAgEUQXNzZXQAATB3ZWlnaHRfbGltaXSBAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAIUCASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAIUCASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzkQIBGEFzc2V0cwABGHRpY2tldNkBASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQpAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAJECARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAJECARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAC9AgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAQQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBABdAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvwQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAwQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBADlAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmvtAQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb27dAQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbYUCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0mQIBFEFzc2V0AAEgdW5sb2NrZXLZAQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldJkCARRBc3NldAABGHRhcmdldNkBASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0mQIBFEFzc2V0AAEUb3duZXLZAQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0mQIBFEFzc2V0AAEYbG9ja2Vy2QEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3XQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EANkBASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXSBAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW69AgFAT3B0aW9uPExvY2F0aW9uPgAvAACRAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQYQXNzZXRzAAAEAJUCAShWZWM8QXNzZXQ+AACVAgAAApkCAJkCECxzdGFnaW5nX3hjbQh2NBRhc3NldBRBc3NldAAACAEIaWSdAgEcQXNzZXRJZAABDGZ1bqECASxGdW5naWJpbGl0eQAAnQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0HEFzc2V0SWQAAAQA2QEBIExvY2F0aW9uAAChAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAPgBEHUxMjgAAAAsTm9uRnVuZ2libGUEAKUCATRBc3NldEluc3RhbmNlAAEAAKUCECxzdGFnaW5nX3hjbQh2NBRhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQA+AEQdTEyOAABABhBcnJheTQEAHABHFt1ODsgNF0AAgAYQXJyYXk4BAA1AgEcW3U4OyA4XQADABxBcnJheTE2BAA5AgEgW3U4OyAxNl0ABAAcQXJyYXkzMgQACAEgW3U4OyAzMl0ABQAAqQIMLHN0YWdpbmdfeGNtCHY0IFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBACRAgEYQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAQQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBACtAgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAF0CAThNYXliZUVycm9yQ29kZQAFAACtAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAbECBFMAAAQAuQIBGFZlYzxUPgAAsQIMLHN0YWdpbmdfeGNtCHY0KFBhbGxldEluZm8AABgBFGluZGV4YAEMdTMyAAEQbmFtZbUCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1ltQIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JgAQx1MzIAARRtaW5vcmABDHUzMgABFHBhdGNoYAEMdTMyAAC1AgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AALkCAAACsQIAvQIEGE9wdGlvbgQEVAHZAQEIEE5vbmUAAAAQU29tZQQA2QEAAAEAAMECDCxzdGFnaW5nX3hjbQh2NERRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb27ZAQEgTG9jYXRpb24AASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0KQEBGFdlaWdodAAAxQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEFzc2V0RmlsdGVyAAEIIERlZmluaXRlBACRAgEYQXNzZXRzAAAAEFdpbGQEAMkCASRXaWxkQXNzZXQAAQAAyQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0JFdpbGRBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZJ0CARxBc3NldElkAAEMZnVuzQIBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABgAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWSdAgEcQXNzZXRJZAABDGZ1bs0CATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGABDHUzMgADAADNAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAANECDCxzdGFnaW5nX3hjbQh2NQxYY20EEENhbGwAAAQA1QIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AANUCAAAC2QIA2QIMLHN0YWdpbmdfeGNtCHY1LEluc3RydWN0aW9uBBBDYWxsAAHQNFdpdGhkcmF3QXNzZXQEAN0CARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBADdAgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAN0CARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNl9QIBIFJlc3BvbnNlAAEobWF4X3dlaWdodCkBARhXZWlnaHQAARxxdWVyaWVyFQMBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c90CARhBc3NldHMAASxiZW5lZmljaWFyeeABIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRz3QIBGEFzc2V0cwABEGRlc3TgASBMb2NhdGlvbgABDHhjbdECARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmRpAgEoT3JpZ2luS2luZAABTGZhbGxiYWNrX21heF93ZWlnaHQZAwE4T3B0aW9uPFdlaWdodD4AARBjYWxsbQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQA5AFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAHQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0cyEDASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ54AEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0cyEDASxBc3NldEZpbHRlcgABEGRlc3TgASBMb2NhdGlvbgABDHhjbdECARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlIQMBLEFzc2V0RmlsdGVyAAEQd2FudN0CARhBc3NldHMAARxtYXhpbWFsXQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHMhAwEsQXNzZXRGaWx0ZXIAARxyZXNlcnZl4AEgTG9jYXRpb24AAQx4Y23RAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzIQMBLEFzc2V0RmlsdGVyAAEQZGVzdOABIExvY2F0aW9uAAEMeGNt0QIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm8dAwFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHMhAwEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc+UCARRBc3NldAABMHdlaWdodF9saW1pdIECASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQA0QIBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQA0QIBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHPdAgEYQXNzZXRzAAEYdGlja2V04AEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0KQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BADdAgEYQXNzZXRzABwALEV4cGVjdEFzc2V0BADdAgEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAFQMBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAPkCAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAXQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mbx0DAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAB0DAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQA7AEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmv0ASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbuQBQEludGVyaW9yTG9jYXRpb24AAQx4Y23RAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldOUCARRBc3NldAABIHVubG9ja2Vy4AEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldOUCARRBc3NldAABGHRhcmdldOABIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXTlAgEUQXNzZXQAARRvd25lcuABIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldOUCARRBc3NldAABGGxvY2tlcuABIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3XQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAOABIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdIECASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbhUDAUBPcHRpb248TG9jYXRpb24+AC8AHFBheUZlZXMEARRhc3NldOUCARRBc3NldAAwAEBJbml0aWF0ZVRyYW5zZmVyFAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABLHJlbW90ZV9mZWVzLQMBbE9wdGlvbjxBc3NldFRyYW5zZmVyRmlsdGVyPgABPHByZXNlcnZlX29yaWdpbl0BARBib29sAAEYYXNzZXRzNQMB4EJvdW5kZWRWZWM8QXNzZXRUcmFuc2ZlckZpbHRlciwgTWF4QXNzZXRUcmFuc2ZlckZpbHRlcnM+AAEocmVtb3RlX3hjbdECARxYY208KCk+ADEAREV4ZWN1dGVXaXRoT3JpZ2luCAFEZGVzY2VuZGFudF9vcmlnaW49AwFgT3B0aW9uPEludGVyaW9yTG9jYXRpb24+AAEMeGNt0QIBJFhjbTxDYWxsPgAyACBTZXRIaW50cwQBFGhpbnRzQQMBhEJvdW5kZWRWZWM8SGludCwgSGludE51bVZhcmlhbnRzPgAzAADdAhAsc3RhZ2luZ194Y20IdjUUYXNzZXQYQXNzZXRzAAAEAOECAShWZWM8QXNzZXQ+AADhAgAAAuUCAOUCECxzdGFnaW5nX3hjbQh2NRRhc3NldBRBc3NldAAACAEIaWTpAgEcQXNzZXRJZAABDGZ1bu0CASxGdW5naWJpbGl0eQAA6QIQLHN0YWdpbmdfeGNtCHY1FGFzc2V0HEFzc2V0SWQAAAQA4AEgTG9jYXRpb24AAO0CECxzdGFnaW5nX3hjbQh2NRRhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQA+AEQdTEyOAAAACxOb25GdW5naWJsZQQA8QIBNEFzc2V0SW5zdGFuY2UAAQAA8QIQLHN0YWdpbmdfeGNtCHY1FGFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BAD4ARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEADUCARxbdTg7IDhdAAMAHEFycmF5MTYEADkCASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAAD1Agwsc3RhZ2luZ194Y20IdjUgUmVzcG9uc2UAARgQTnVsbAAAABhBc3NldHMEAN0CARhBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BAD5AgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAOAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EAAUDAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQAXQIBOE1heWJlRXJyb3JDb2RlAAUAAPkCBBhPcHRpb24EBFQB/QIBCBBOb25lAAAAEFNvbWUEAP0CAAABAAD9AgAABAg4AQMAAQMQDHhjbQh2NRh0cmFpdHMURXJyb3IAAaQgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAQAKAEMdTY0ABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIANFRvb01hbnlBc3NldHMAIwBMVW5oYW5kbGVkWGNtVmVyc2lvbgAkAEhXZWlnaHRMaW1pdFJlYWNoZWQEACkBARhXZWlnaHQAJQAcQmFycmllcgAmAExXZWlnaHROb3RDb21wdXRhYmxlACcAREV4Y2VlZHNTdGFja0xpbWl0ACgAAAUDDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCQMEUwAABAARAwEYVmVjPFQ+AAAJAwwsc3RhZ2luZ194Y20IdjUoUGFsbGV0SW5mbwAAGAEUaW5kZXhgAQx1MzIAARBuYW1lDQMBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWUNAwGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcmABDHUzMgABFG1pbm9yYAEMdTMyAAEUcGF0Y2hgAQx1MzIAAA0DDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAEQMAAAIJAwAVAwQYT3B0aW9uBARUAeABCBBOb25lAAAAEFNvbWUEAOAAAAEAABkDBBhPcHRpb24EBFQBKQEBCBBOb25lAAAAEFNvbWUEACkBAAABAAAdAwwsc3RhZ2luZ194Y20IdjVEUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9u4AEgTG9jYXRpb24AASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0KQEBGFdlaWdodAAAIQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0LEFzc2V0RmlsdGVyAAEIIERlZmluaXRlBADdAgEYQXNzZXRzAAAAEFdpbGQEACUDASRXaWxkQXNzZXQAAQAAJQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0JFdpbGRBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZOkCARxBc3NldElkAAEMZnVuKQMBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABgAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWTpAgEcQXNzZXRJZAABDGZ1bikDATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGABDHUzMgADAAApAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAAC0DBBhPcHRpb24EBFQBMQMBCBBOb25lAAAAEFNvbWUEADEDAAABAAAxAxAsc3RhZ2luZ194Y20IdjUUYXNzZXRMQXNzZXRUcmFuc2ZlckZpbHRlcgABDCBUZWxlcG9ydAQAIQMBLEFzc2V0RmlsdGVyAAAAOFJlc2VydmVEZXBvc2l0BAAhAwEsQXNzZXRGaWx0ZXIAAQA8UmVzZXJ2ZVdpdGhkcmF3BAAhAwEsQXNzZXRGaWx0ZXIAAgAANQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAExAwRTAAAEADkDARhWZWM8VD4AADkDAAACMQMAPQMEGE9wdGlvbgQEVAHkAQgQTm9uZQAAABBTb21lBADkAAABAABBAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAUUDBFMAAAQASQMBGFZlYzxUPgAARQMMLHN0YWdpbmdfeGNtCHY1EEhpbnQAAQQwQXNzZXRDbGFpbWVyBAEgbG9jYXRpb27gASBMb2NhdGlvbgAAAABJAwAAAkUDAE0DCAx4Y208VmVyc2lvbmVkQXNzZXRzAAEMCFYzBAAdAgE8djM6Ok11bHRpQXNzZXRzAAMACFY0BACRAgEodjQ6OkFzc2V0cwAEAAhWNQQA3QIBKHY1OjpBc3NldHMABQAAUQMIDHhjbTBWZXJzaW9uZWRYY20ELFJ1bnRpbWVDYWxsAAEMCFYzBABVAwFQdjM6OlhjbTxSdW50aW1lQ2FsbD4AAwAIVjQEAGUDAVB2NDo6WGNtPFJ1bnRpbWVDYWxsPgAEAAhWNQQAcQMBUHY1OjpYY208UnVudGltZUNhbGw+AAUAAFUDDAx4Y20IdjMMWGNtBBBDYWxsAAAEAFkDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AABZAwAAAl0DAF0DDAx4Y20IdjMsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAHQIBLE11bHRpQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAHQIBLE11bHRpQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAB0CASxNdWx0aUFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2U9AgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0KQEBGFdlaWdodAABHHF1ZXJpZXJlAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHMdAgEsTXVsdGlBc3NldHMAASxiZW5lZmljaWFyecUBATRNdWx0aUxvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzHQIBLE11bHRpQXNzZXRzAAEQZGVzdMUBATRNdWx0aUxvY2F0aW9uAAEMeGNtEQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZGkCAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdCkBARhXZWlnaHQAARBjYWxsYQMBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAyQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAcQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c3UCAUBNdWx0aUFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnnFAQE0TXVsdGlMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzdQIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN0xQEBNE11bHRpTG9jYXRpb24AAQx4Y20RAgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZXUCAUBNdWx0aUFzc2V0RmlsdGVyAAEQd2FudB0CASxNdWx0aUFzc2V0cwABHG1heGltYWxdAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c3UCAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVzZXJ2ZcUBATRNdWx0aUxvY2F0aW9uAAEMeGNtEQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c3UCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdMUBATRNdWx0aUxvY2F0aW9uAAEMeGNtEQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm9xAgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHN1AgFATXVsdGlBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzJQIBKE11bHRpQXNzZXQAATB3ZWlnaHRfbGltaXSBAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAFUDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAFUDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzHQIBLE11bHRpQXNzZXRzAAEYdGlja2V0xQEBNE11bHRpTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0KQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAAdAgEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEAB0CASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAGUCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAEECAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAXQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb3ECAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAHECAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAzQEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr1QEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uyQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbRECARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0JQIBKE11bHRpQXNzZXQAASB1bmxvY2tlcsUBATRNdWx0aUxvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXQlAgEoTXVsdGlBc3NldAABGHRhcmdldMUBATRNdWx0aUxvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXQlAgEoTXVsdGlBc3NldAABFG93bmVyxQEBNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0JQIBKE11bHRpQXNzZXQAARhsb2NrZXLFAQE0TXVsdGlMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd10BARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBADFAQE0TXVsdGlMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXSBAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW5lAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AC8AAGEDDAx4Y204ZG91YmxlX2VuY29kZWQ0RG91YmxlRW5jb2RlZAQEVAAABAEcZW5jb2RlZBgBHFZlYzx1OD4AAGUDDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQAaQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAGkDAAACbQMAbQMMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAJECARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBACRAgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAJECARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlqQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodCkBARhXZWlnaHQAARxxdWVyaWVyvQIBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c5ECARhBc3NldHMAASxiZW5lZmljaWFyedkBASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c5ECARhBc3NldHMAARBkZXN02QEBIExvY2F0aW9uAAEMeGNthQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZGkCAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdCkBARhXZWlnaHQAARBjYWxsYQMBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQA3QEBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAMECAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHPFAgEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyedkBASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzxQIBLEFzc2V0RmlsdGVyAAEQZGVzdNkBASBMb2NhdGlvbgABDHhjbYUCARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlxQIBLEFzc2V0RmlsdGVyAAEQd2FudJECARhBc3NldHMAARxtYXhpbWFsXQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHPFAgEsQXNzZXRGaWx0ZXIAARxyZXNlcnZl2QEBIExvY2F0aW9uAAEMeGNthQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c8UCASxBc3NldEZpbHRlcgABEGRlc3TZAQEgTG9jYXRpb24AAQx4Y22FAgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb8ECAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c8UCASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzmQIBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0gQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBABlAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BABlAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c5ECARhBc3NldHMAARh0aWNrZXTZAQEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0KQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BACRAgEYQXNzZXRzABwALEV4cGVjdEFzc2V0BACRAgEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAvQIBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAEECAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAXQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb8ECAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAMECAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQA5QEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr7QEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9u3QEBQEludGVyaW9yTG9jYXRpb24AAQx4Y22FAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldJkCARRBc3NldAABIHVubG9ja2Vy2QEBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXSZAgEUQXNzZXQAARh0YXJnZXTZAQEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldJkCARRBc3NldAABFG93bmVy2QEBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldJkCARRBc3NldAABGGxvY2tlctkBASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd10BARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBADZAQEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0gQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luvQIBQE9wdGlvbjxMb2NhdGlvbj4ALwAAcQMMLHN0YWdpbmdfeGNtCHY1DFhjbQQQQ2FsbAAABAB1AwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAdQMAAAJ5AwB5Awwsc3RhZ2luZ194Y20IdjUsSW5zdHJ1Y3Rpb24EEENhbGwAAdA0V2l0aGRyYXdBc3NldAQA3QIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAN0CARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQA3QIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2X1AgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0KQEBGFdlaWdodAABHHF1ZXJpZXIVAwFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRz3QIBGEFzc2V0cwABLGJlbmVmaWNpYXJ54AEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHPdAgEYQXNzZXRzAAEQZGVzdOABIExvY2F0aW9uAAEMeGNt0QIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZGkCAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodBkDAThPcHRpb248V2VpZ2h0PgABEGNhbGxhAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADkAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAAdAwFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzIQMBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnngASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzIQMBLEFzc2V0RmlsdGVyAAEQZGVzdOABIExvY2F0aW9uAAEMeGNt0QIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmUhAwEsQXNzZXRGaWx0ZXIAARB3YW503QIBGEFzc2V0cwABHG1heGltYWxdAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0cyEDASxBc3NldEZpbHRlcgABHHJlc2VydmXgASBMb2NhdGlvbgABDHhjbdECARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHMhAwEsQXNzZXRGaWx0ZXIAARBkZXN04AEgTG9jYXRpb24AAQx4Y23RAgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mbx0DAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0cyEDASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVz5QIBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0gQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBABxAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BABxAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c90CARhBc3NldHMAARh0aWNrZXTgASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQpAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAN0CARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAN0CARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAAVAwFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQA+QIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBABdAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvHQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAHQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBADsASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya/QBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9u5AFASW50ZXJpb3JMb2NhdGlvbgABDHhjbdECARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V05QIBFEFzc2V0AAEgdW5sb2NrZXLgASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V05QIBFEFzc2V0AAEYdGFyZ2V04AEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldOUCARRBc3NldAABFG93bmVy4AEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V05QIBFEFzc2V0AAEYbG9ja2Vy4AEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXddAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQA4AEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0gQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luFQMBQE9wdGlvbjxMb2NhdGlvbj4ALwAcUGF5RmVlcwQBFGFzc2V05QIBFEFzc2V0ADAAQEluaXRpYXRlVHJhbnNmZXIUASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEscmVtb3RlX2ZlZXMtAwFsT3B0aW9uPEFzc2V0VHJhbnNmZXJGaWx0ZXI+AAE8cHJlc2VydmVfb3JpZ2luXQEBEGJvb2wAARhhc3NldHM1AwHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNt0QIBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbj0DAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y21xAwEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHNBAwGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAAH0DEFBzdGFnaW5nX3hjbV9leGVjdXRvchh0cmFpdHM4YXNzZXRfdHJhbnNmZXIwVHJhbnNmZXJUeXBlAAEQIFRlbGVwb3J0AAAAMExvY2FsUmVzZXJ2ZQABAEhEZXN0aW5hdGlvblJlc2VydmUAAgA0UmVtb3RlUmVzZXJ2ZQQAwQEBRFZlcnNpb25lZExvY2F0aW9uAAMAAIEDCAx4Y21AVmVyc2lvbmVkQXNzZXRJZAABDAhWMwQAKQIBLHYzOjpBc3NldElkAAMACFY0BACdAgEsdjQ6OkFzc2V0SWQABAAIVjUEAOkCASx2NTo6QXNzZXRJZAAFAACFAwQYT3B0aW9uBARUASgBCBBOb25lAAAAEFNvbWUEACgAAAEAAIkDDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMujQMMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBBDYWxsBARUAAEIJHJlYXBfcGFnZQgBOG1lc3NhZ2Vfb3JpZ2lukQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgABKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgAAAQ9AVJlbW92ZSBhIHBhZ2Ugd2hpY2ggaGFzIG5vIG1vcmUgbWVzc2FnZXMgcmVtYWluaW5nIHRvIGJlIHByb2Nlc3NlZCBvciBpcyBzdGFsZS5IZXhlY3V0ZV9vdmVyd2VpZ2h0EAE4bWVzc2FnZV9vcmlnaW6RAwFITWVzc2FnZU9yaWdpbk9mPFQ+AAEQcGFnZTgBJFBhZ2VJbmRleAABFGluZGV4OAEcVDo6U2l6ZQABMHdlaWdodF9saW1pdCkBARhXZWlnaHQAATR4RXhlY3V0ZSBhbiBvdmVyd2VpZ2h0IG1lc3NhZ2UuAE0BVGVtcG9yYXJ5IHByb2Nlc3NpbmcgZXJyb3JzIHdpbGwgYmUgcHJvcGFnYXRlZCB3aGVyZWFzIHBlcm1hbmVudCBlcnJvcnMgYXJlIHRyZWF0ZWRUYXMgc3VjY2VzcyBjb25kaXRpb24uAHQtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgLjUBLSBgbWVzc2FnZV9vcmlnaW5gOiBUaGUgb3JpZ2luIGZyb20gd2hpY2ggdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQgYXJyaXZlZC49AS0gYHBhZ2VgOiBUaGUgcGFnZSBpbiB0aGUgcXVldWUgaW4gd2hpY2ggdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQgaXMgc2l0dGluZy4JAS0gYGluZGV4YDogVGhlIGluZGV4IGludG8gdGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkLlkBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCBhbGxvd2VkIHRvIGJlIGNvbnN1bWVkIGluIHRoZSBleGVjdXRpb25EICBvZiB0aGUgbWVzc2FnZS4A9EJlbmNobWFyayBjb21wbGV4aXR5IGNvbnNpZGVyYXRpb25zOiBPKGluZGV4ICsgd2VpZ2h0X2xpbWl0KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMukQMIXGN1bXVsdXNfcHJpbWl0aXZlc19jb3JlWEFnZ3JlZ2F0ZU1lc3NhZ2VPcmlnaW4AAQwQSGVyZQAAABhQYXJlbnQAAQAcU2libGluZwQAnAEYUGFyYUlkAAIAAJUDDCxwYWxsZXRfc3VkbxhwYWxsZXQQQ2FsbAQEVAABFBBzdWRvBAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAAQ1AUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBSb290YCBvcmlnaW4uVHN1ZG9fdW5jaGVja2VkX3dlaWdodAgBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEYd2VpZ2h0KQEBGFdlaWdodAABFDUBQXV0aGVudGljYXRlcyB0aGUgc3VkbyBrZXkgYW5kIGRpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYFJvb3RgIG9yaWdpbi4tAVRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIHdlaWdodCBvZiB0aGUgY2FsbCwgYW5kIGluc3RlYWQgYWxsb3dzIHRoZbBTdWRvIHVzZXIgdG8gc3BlY2lmeSB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uHHNldF9rZXkEAQxuZXcAAVBBY2NvdW50SWRMb29rdXBPZjxUPgACCF0BQXV0aGVudGljYXRlcyB0aGUgY3VycmVudCBzdWRvIGtleSBhbmQgc2V0cyB0aGUgZ2l2ZW4gQWNjb3VudElkIChgbmV3YCkgYXMgdGhlIG5ldyBzdWRvEGtleS4cc3Vkb19hcwgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAxBNAUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBTaWduZWRgIG9yaWdpbiBmcm9tQGEgZ2l2ZW4gYWNjb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLihyZW1vdmVfa2V5AAQMhFBlcm1hbmVudGx5IHJlbW92ZXMgdGhlIHN1ZG8ga2V5LgBsKipUaGlzIGNhbm5vdCBiZSB1bi1kb25lLioqBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLpkDEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczhhdXRob3JpemVfY2FsbDRBdXRob3JpemVDYWxsBARUAAAAAJ0DEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc1RjaGVja19ub25femVyb19zZW5kZXJIQ2hlY2tOb25aZXJvU2VuZGVyBARUAAAAAKEDEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc0hjaGVja19zcGVjX3ZlcnNpb25AQ2hlY2tTcGVjVmVyc2lvbgQEVAAAAAClAxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNAY2hlY2tfdHhfdmVyc2lvbjhDaGVja1R4VmVyc2lvbgQEVAAAAACpAxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM0Y2hlY2tfZ2VuZXNpczBDaGVja0dlbmVzaXMEBFQAAAAArQMQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zPGNoZWNrX21vcnRhbGl0eThDaGVja01vcnRhbGl0eQQEVAAABACxAwEMRXJhAACxAxAoc3BfcnVudGltZRxnZW5lcmljDGVyYQxFcmEAAQEEIEltbW9ydGFsAAAAHE1vcnRhbDEEAAwAAAEAHE1vcnRhbDIEAAwAAAIAHE1vcnRhbDMEAAwAAAMAHE1vcnRhbDQEAAwAAAQAHE1vcnRhbDUEAAwAAAUAHE1vcnRhbDYEAAwAAAYAHE1vcnRhbDcEAAwAAAcAHE1vcnRhbDgEAAwAAAgAHE1vcnRhbDkEAAwAAAkAIE1vcnRhbDEwBAAMAAAKACBNb3J0YWwxMQQADAAACwAgTW9ydGFsMTIEAAwAAAwAIE1vcnRhbDEzBAAMAAANACBNb3J0YWwxNAQADAAADgAgTW9ydGFsMTUEAAwAAA8AIE1vcnRhbDE2BAAMAAAQACBNb3J0YWwxNwQADAAAEQAgTW9ydGFsMTgEAAwAABIAIE1vcnRhbDE5BAAMAAATACBNb3J0YWwyMAQADAAAFAAgTW9ydGFsMjEEAAwAABUAIE1vcnRhbDIyBAAMAAAWACBNb3J0YWwyMwQADAAAFwAgTW9ydGFsMjQEAAwAABgAIE1vcnRhbDI1BAAMAAAZACBNb3J0YWwyNgQADAAAGgAgTW9ydGFsMjcEAAwAABsAIE1vcnRhbDI4BAAMAAAcACBNb3J0YWwyOQQADAAAHQAgTW9ydGFsMzAEAAwAAB4AIE1vcnRhbDMxBAAMAAAfACBNb3J0YWwzMgQADAAAIAAgTW9ydGFsMzMEAAwAACEAIE1vcnRhbDM0BAAMAAAiACBNb3J0YWwzNQQADAAAIwAgTW9ydGFsMzYEAAwAACQAIE1vcnRhbDM3BAAMAAAlACBNb3J0YWwzOAQADAAAJgAgTW9ydGFsMzkEAAwAACcAIE1vcnRhbDQwBAAMAAAoACBNb3J0YWw0MQQADAAAKQAgTW9ydGFsNDIEAAwAACoAIE1vcnRhbDQzBAAMAAArACBNb3J0YWw0NAQADAAALAAgTW9ydGFsNDUEAAwAAC0AIE1vcnRhbDQ2BAAMAAAuACBNb3J0YWw0NwQADAAALwAgTW9ydGFsNDgEAAwAADAAIE1vcnRhbDQ5BAAMAAAxACBNb3J0YWw1MAQADAAAMgAgTW9ydGFsNTEEAAwAADMAIE1vcnRhbDUyBAAMAAA0ACBNb3J0YWw1MwQADAAANQAgTW9ydGFsNTQEAAwAADYAIE1vcnRhbDU1BAAMAAA3ACBNb3J0YWw1NgQADAAAOAAgTW9ydGFsNTcEAAwAADkAIE1vcnRhbDU4BAAMAAA6ACBNb3J0YWw1OQQADAAAOwAgTW9ydGFsNjAEAAwAADwAIE1vcnRhbDYxBAAMAAA9ACBNb3J0YWw2MgQADAAAPgAgTW9ydGFsNjMEAAwAAD8AIE1vcnRhbDY0BAAMAABAACBNb3J0YWw2NQQADAAAQQAgTW9ydGFsNjYEAAwAAEIAIE1vcnRhbDY3BAAMAABDACBNb3J0YWw2OAQADAAARAAgTW9ydGFsNjkEAAwAAEUAIE1vcnRhbDcwBAAMAABGACBNb3J0YWw3MQQADAAARwAgTW9ydGFsNzIEAAwAAEgAIE1vcnRhbDczBAAMAABJACBNb3J0YWw3NAQADAAASgAgTW9ydGFsNzUEAAwAAEsAIE1vcnRhbDc2BAAMAABMACBNb3J0YWw3NwQADAAATQAgTW9ydGFsNzgEAAwAAE4AIE1vcnRhbDc5BAAMAABPACBNb3J0YWw4MAQADAAAUAAgTW9ydGFsODEEAAwAAFEAIE1vcnRhbDgyBAAMAABSACBNb3J0YWw4MwQADAAAUwAgTW9ydGFsODQEAAwAAFQAIE1vcnRhbDg1BAAMAABVACBNb3J0YWw4NgQADAAAVgAgTW9ydGFsODcEAAwAAFcAIE1vcnRhbDg4BAAMAABYACBNb3J0YWw4OQQADAAAWQAgTW9ydGFsOTAEAAwAAFoAIE1vcnRhbDkxBAAMAABbACBNb3J0YWw5MgQADAAAXAAgTW9ydGFsOTMEAAwAAF0AIE1vcnRhbDk0BAAMAABeACBNb3J0YWw5NQQADAAAXwAgTW9ydGFsOTYEAAwAAGAAIE1vcnRhbDk3BAAMAABhACBNb3J0YWw5OAQADAAAYgAgTW9ydGFsOTkEAAwAAGMAJE1vcnRhbDEwMAQADAAAZAAkTW9ydGFsMTAxBAAMAABlACRNb3J0YWwxMDIEAAwAAGYAJE1vcnRhbDEwMwQADAAAZwAkTW9ydGFsMTA0BAAMAABoACRNb3J0YWwxMDUEAAwAAGkAJE1vcnRhbDEwNgQADAAAagAkTW9ydGFsMTA3BAAMAABrACRNb3J0YWwxMDgEAAwAAGwAJE1vcnRhbDEwOQQADAAAbQAkTW9ydGFsMTEwBAAMAABuACRNb3J0YWwxMTEEAAwAAG8AJE1vcnRhbDExMgQADAAAcAAkTW9ydGFsMTEzBAAMAABxACRNb3J0YWwxMTQEAAwAAHIAJE1vcnRhbDExNQQADAAAcwAkTW9ydGFsMTE2BAAMAAB0ACRNb3J0YWwxMTcEAAwAAHUAJE1vcnRhbDExOAQADAAAdgAkTW9ydGFsMTE5BAAMAAB3ACRNb3J0YWwxMjAEAAwAAHgAJE1vcnRhbDEyMQQADAAAeQAkTW9ydGFsMTIyBAAMAAB6ACRNb3J0YWwxMjMEAAwAAHsAJE1vcnRhbDEyNAQADAAAfAAkTW9ydGFsMTI1BAAMAAB9ACRNb3J0YWwxMjYEAAwAAH4AJE1vcnRhbDEyNwQADAAAfwAkTW9ydGFsMTI4BAAMAACAACRNb3J0YWwxMjkEAAwAAIEAJE1vcnRhbDEzMAQADAAAggAkTW9ydGFsMTMxBAAMAACDACRNb3J0YWwxMzIEAAwAAIQAJE1vcnRhbDEzMwQADAAAhQAkTW9ydGFsMTM0BAAMAACGACRNb3J0YWwxMzUEAAwAAIcAJE1vcnRhbDEzNgQADAAAiAAkTW9ydGFsMTM3BAAMAACJACRNb3J0YWwxMzgEAAwAAIoAJE1vcnRhbDEzOQQADAAAiwAkTW9ydGFsMTQwBAAMAACMACRNb3J0YWwxNDEEAAwAAI0AJE1vcnRhbDE0MgQADAAAjgAkTW9ydGFsMTQzBAAMAACPACRNb3J0YWwxNDQEAAwAAJAAJE1vcnRhbDE0NQQADAAAkQAkTW9ydGFsMTQ2BAAMAACSACRNb3J0YWwxNDcEAAwAAJMAJE1vcnRhbDE0OAQADAAAlAAkTW9ydGFsMTQ5BAAMAACVACRNb3J0YWwxNTAEAAwAAJYAJE1vcnRhbDE1MQQADAAAlwAkTW9ydGFsMTUyBAAMAACYACRNb3J0YWwxNTMEAAwAAJkAJE1vcnRhbDE1NAQADAAAmgAkTW9ydGFsMTU1BAAMAACbACRNb3J0YWwxNTYEAAwAAJwAJE1vcnRhbDE1NwQADAAAnQAkTW9ydGFsMTU4BAAMAACeACRNb3J0YWwxNTkEAAwAAJ8AJE1vcnRhbDE2MAQADAAAoAAkTW9ydGFsMTYxBAAMAAChACRNb3J0YWwxNjIEAAwAAKIAJE1vcnRhbDE2MwQADAAAowAkTW9ydGFsMTY0BAAMAACkACRNb3J0YWwxNjUEAAwAAKUAJE1vcnRhbDE2NgQADAAApgAkTW9ydGFsMTY3BAAMAACnACRNb3J0YWwxNjgEAAwAAKgAJE1vcnRhbDE2OQQADAAAqQAkTW9ydGFsMTcwBAAMAACqACRNb3J0YWwxNzEEAAwAAKsAJE1vcnRhbDE3MgQADAAArAAkTW9ydGFsMTczBAAMAACtACRNb3J0YWwxNzQEAAwAAK4AJE1vcnRhbDE3NQQADAAArwAkTW9ydGFsMTc2BAAMAACwACRNb3J0YWwxNzcEAAwAALEAJE1vcnRhbDE3OAQADAAAsgAkTW9ydGFsMTc5BAAMAACzACRNb3J0YWwxODAEAAwAALQAJE1vcnRhbDE4MQQADAAAtQAkTW9ydGFsMTgyBAAMAAC2ACRNb3J0YWwxODMEAAwAALcAJE1vcnRhbDE4NAQADAAAuAAkTW9ydGFsMTg1BAAMAAC5ACRNb3J0YWwxODYEAAwAALoAJE1vcnRhbDE4NwQADAAAuwAkTW9ydGFsMTg4BAAMAAC8ACRNb3J0YWwxODkEAAwAAL0AJE1vcnRhbDE5MAQADAAAvgAkTW9ydGFsMTkxBAAMAAC/ACRNb3J0YWwxOTIEAAwAAMAAJE1vcnRhbDE5MwQADAAAwQAkTW9ydGFsMTk0BAAMAADCACRNb3J0YWwxOTUEAAwAAMMAJE1vcnRhbDE5NgQADAAAxAAkTW9ydGFsMTk3BAAMAADFACRNb3J0YWwxOTgEAAwAAMYAJE1vcnRhbDE5OQQADAAAxwAkTW9ydGFsMjAwBAAMAADIACRNb3J0YWwyMDEEAAwAAMkAJE1vcnRhbDIwMgQADAAAygAkTW9ydGFsMjAzBAAMAADLACRNb3J0YWwyMDQEAAwAAMwAJE1vcnRhbDIwNQQADAAAzQAkTW9ydGFsMjA2BAAMAADOACRNb3J0YWwyMDcEAAwAAM8AJE1vcnRhbDIwOAQADAAA0AAkTW9ydGFsMjA5BAAMAADRACRNb3J0YWwyMTAEAAwAANIAJE1vcnRhbDIxMQQADAAA0wAkTW9ydGFsMjEyBAAMAADUACRNb3J0YWwyMTMEAAwAANUAJE1vcnRhbDIxNAQADAAA1gAkTW9ydGFsMjE1BAAMAADXACRNb3J0YWwyMTYEAAwAANgAJE1vcnRhbDIxNwQADAAA2QAkTW9ydGFsMjE4BAAMAADaACRNb3J0YWwyMTkEAAwAANsAJE1vcnRhbDIyMAQADAAA3AAkTW9ydGFsMjIxBAAMAADdACRNb3J0YWwyMjIEAAwAAN4AJE1vcnRhbDIyMwQADAAA3wAkTW9ydGFsMjI0BAAMAADgACRNb3J0YWwyMjUEAAwAAOEAJE1vcnRhbDIyNgQADAAA4gAkTW9ydGFsMjI3BAAMAADjACRNb3J0YWwyMjgEAAwAAOQAJE1vcnRhbDIyOQQADAAA5QAkTW9ydGFsMjMwBAAMAADmACRNb3J0YWwyMzEEAAwAAOcAJE1vcnRhbDIzMgQADAAA6AAkTW9ydGFsMjMzBAAMAADpACRNb3J0YWwyMzQEAAwAAOoAJE1vcnRhbDIzNQQADAAA6wAkTW9ydGFsMjM2BAAMAADsACRNb3J0YWwyMzcEAAwAAO0AJE1vcnRhbDIzOAQADAAA7gAkTW9ydGFsMjM5BAAMAADvACRNb3J0YWwyNDAEAAwAAPAAJE1vcnRhbDI0MQQADAAA8QAkTW9ydGFsMjQyBAAMAADyACRNb3J0YWwyNDMEAAwAAPMAJE1vcnRhbDI0NAQADAAA9AAkTW9ydGFsMjQ1BAAMAAD1ACRNb3J0YWwyNDYEAAwAAPYAJE1vcnRhbDI0NwQADAAA9wAkTW9ydGFsMjQ4BAAMAAD4ACRNb3J0YWwyNDkEAAwAAPkAJE1vcnRhbDI1MAQADAAA+gAkTW9ydGFsMjUxBAAMAAD7ACRNb3J0YWwyNTIEAAwAAPwAJE1vcnRhbDI1MwQADAAA/QAkTW9ydGFsMjU0BAAMAAD+ACRNb3J0YWwyNTUEAAwAAP8AALUDEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9ucyxjaGVja19ub25jZShDaGVja05vbmNlBARUAAAEAGABIFQ6Ok5vbmNlAAC5AxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMwY2hlY2tfd2VpZ2h0LENoZWNrV2VpZ2h0BARUAAAAAL0DCGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudGBDaGFyZ2VUcmFuc2FjdGlvblBheW1lbnQEBFQAAAQA+AEwQmFsYW5jZU9mPFQ+AADBAwyMcGFsbGV0X2J1bGxldGluX3RyYW5zYWN0aW9uX3N0b3JhZ2UkZXh0ZW5zaW9uXFZhbGlkYXRlQXV0aG9yaXplZENhbGxzDARUAARJAARMAAAAAMUDDIxwYWxsZXRfYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZSRleHRlbnNpb25YQWxsb3dhbmNlQmFzZWRQcmlvcml0eQgEVAAEQgAAAADJAwh0ZnJhbWVfbWV0YWRhdGFfaGFzaF9leHRlbnNpb25EQ2hlY2tNZXRhZGF0YUhhc2gEBFQAAAQBEG1vZGXNAwEQTW9kZQAAzQMIdGZyYW1lX21ldGFkYXRhX2hhc2hfZXh0ZW5zaW9uEE1vZGUAAQggRGlzYWJsZWQAAAAcRW5hYmxlZAABAADRAwQYT3B0aW9uBARUAQgBCBBOb25lAAAAEFNvbWUEAAgAAAEAANUDCDBmcmFtZV9zeXN0ZW0sQWNjb3VudEluZm8IFE5vbmNlATgsQWNjb3VudERhdGEB2QMAFAEUbm9uY2U4ARROb25jZQABJGNvbnN1bWVyczgBIFJlZkNvdW50AAEkcHJvdmlkZXJzOAEgUmVmQ291bnQAASxzdWZmaWNpZW50czgBIFJlZkNvdW50AAEQZGF0YdkDASxBY2NvdW50RGF0YQAA2QMMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxBY2NvdW50RGF0YQQcQmFsYW5jZQH8ABABEGZyZWX8ARxCYWxhbmNlAAEgcmVzZXJ2ZWT8ARxCYWxhbmNlAAEYZnJvemVu/AEcQmFsYW5jZQABFGZsYWdz3QMBKEV4dHJhRmxhZ3MAAN0DDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMoRXh0cmFGbGFncwAABAD8ARB1MTI4AADhAww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUASkBAAwBGG5vcm1hbCkBAQRUAAEsb3BlcmF0aW9uYWwpAQEEVAABJG1hbmRhdG9yeSkBAQRUAADlAwAAAukDAOkDCDBmcmFtZV9zeXN0ZW0sRXZlbnRSZWNvcmQIBEUB7QMEVAE8AAwBFHBoYXNlhQQBFFBoYXNlAAEUZXZlbnTtAwEERQABGHRvcGljc4kEARhWZWM8VD4AAO0DCFhidWxsZXRpbl9wYXNlb19ydW50aW1lMFJ1bnRpbWVFdmVudAABQBhTeXN0ZW0EAPEDAXBmcmFtZV9zeXN0ZW06OkV2ZW50PFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAGQQBvGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW06OkV2ZW50PFJ1bnRpbWU+AAEAHFV0aWxpdHkEAB0EAVRwYWxsZXRfdXRpbGl0eTo6RXZlbnQABgBQTXVsdGlCbG9ja01pZ3JhdGlvbnMEACUEAYRwYWxsZXRfbWlncmF0aW9uczo6RXZlbnQ8UnVudGltZT4ABwAgQmFsYW5jZXMEACkEAXxwYWxsZXRfYmFsYW5jZXM6OkV2ZW50PFJ1bnRpbWU+AAoASFRyYW5zYWN0aW9uUGF5bWVudAQARQQBqHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50OjpFdmVudDxSdW50aW1lPgALAEhTa2lwRmVlbGVzc1BheW1lbnQEAEkEAaxwYWxsZXRfc2tpcF9mZWVsZXNzX3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+AAwASFRyYW5zYWN0aW9uU3RvcmFnZQQATQQBzHBhbGxldF9idWxsZXRpbl90cmFuc2FjdGlvbl9zdG9yYWdlOjpFdmVudDxSdW50aW1lPgAoACxEYXRhUmVuZXdhbAQAUQQBsHBhbGxldF9idWxsZXRpbl9kYXRhX3JlbmV3YWw6OkV2ZW50PFJ1bnRpbWU+ACoARENvbGxhdG9yU2VsZWN0aW9uBABVBAGkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbjo6RXZlbnQ8UnVudGltZT4AFQAcU2Vzc2lvbgQAWQQBeHBhbGxldF9zZXNzaW9uOjpFdmVudDxSdW50aW1lPgAWACRYY21wUXVldWUEAF0EAaRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlOjpFdmVudDxSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQAYQQBaHBhbGxldF94Y206OkV2ZW50PFJ1bnRpbWU+AB8AKEN1bXVsdXNYY20EAHEEAYhjdW11bHVzX3BhbGxldF94Y206OkV2ZW50PFJ1bnRpbWU+ACAAME1lc3NhZ2VRdWV1ZQQAdQQBkHBhbGxldF9tZXNzYWdlX3F1ZXVlOjpFdmVudDxSdW50aW1lPgAiABBTdWRvBAB9BAFscGFsbGV0X3N1ZG86OkV2ZW50PFJ1bnRpbWU+AGQAAPEDDDBmcmFtZV9zeXN0ZW0YcGFsbGV0FEV2ZW50BARUAAEgQEV4dHJpbnNpY1N1Y2Nlc3MEATRkaXNwYXRjaF9pbmZv9QMBRERpc3BhdGNoRXZlbnRJbmZvAAAEkEFuIGV4dHJpbnNpYyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LjxFeHRyaW5zaWNGYWlsZWQIAThkaXNwYXRjaF9lcnJvcgEEATREaXNwYXRjaEVycm9yAAE0ZGlzcGF0Y2hfaW5mb/UDAUREaXNwYXRjaEV2ZW50SW5mbwABBFBBbiBleHRyaW5zaWMgZmFpbGVkLixDb2RlVXBkYXRlZAQBEGhhc2g8ARxUOjpIYXNoAAIE0GA6Y29kZWAgd2FzIHVwZGF0ZWQgdG8gdGhlIGNvZGUgd2l0aCB0aGUgZ2l2ZW4gaGFzaC4oTmV3QWNjb3VudAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwRoQSBuZXcgYWNjb3VudCB3YXMgY3JlYXRlZC40S2lsbGVkQWNjb3VudAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABARYQW4gYWNjb3VudCB3YXMgcmVhcGVkLiBSZW1hcmtlZAgBGHNlbmRlcgQBMFQ6OkFjY291bnRJZAABEGhhc2g8ARxUOjpIYXNoAAUEcE9uIG9uLWNoYWluIHJlbWFyayBoYXBwZW5lZC5EVXBncmFkZUF1dGhvcml6ZWQIASRjb2RlX2hhc2g8ARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvbl0BARBib29sAAYEaEFuIHVwZ3JhZGUgd2FzIGF1dGhvcml6ZWQugFJlamVjdGVkSW52YWxpZEF1dGhvcml6ZWRVcGdyYWRlCAEkY29kZV9oYXNoPAEcVDo6SGFzaAABFGVycm9yAQQBNERpc3BhdGNoRXJyb3IABwQRAUFuIGludmFsaWQgYXV0aG9yaXplZCB1cGdyYWRlIHdhcyByZWplY3RlZCB3aGlsZSB0cnlpbmcgdG8gYXBwbHkgaXQuBHBFdmVudCBmb3IgdGhlIFN5c3RlbSBwYWxsZXQu9QMIMGZyYW1lX3N5c3RlbUREaXNwYXRjaEV2ZW50SW5mbwAADAEYd2VpZ2h0KQEBGFdlaWdodAABFGNsYXNz+QMBNERpc3BhdGNoQ2xhc3MAASBwYXlzX2ZlZf0DARBQYXlzAAD5Aww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaDREaXNwYXRjaENsYXNzAAEMGE5vcm1hbAAAACxPcGVyYXRpb25hbAABACRNYW5kYXRvcnkAAgAA/QMMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gQUGF5cwABCAxZZXMAAAAITm8AAQAAAQQIKHNwX3J1bnRpbWU0RGlzcGF0Y2hFcnJvcgABPBRPdGhlcgAAADBDYW5ub3RMb29rdXAAAQAkQmFkT3JpZ2luAAIAGE1vZHVsZQQABQQBLE1vZHVsZUVycm9yAAMARENvbnN1bWVyUmVtYWluaW5nAAQALE5vUHJvdmlkZXJzAAUAQFRvb01hbnlDb25zdW1lcnMABgAUVG9rZW4EAAkEAShUb2tlbkVycm9yAAcAKEFyaXRobWV0aWMEAA0EATxBcml0aG1ldGljRXJyb3IACAA0VHJhbnNhY3Rpb25hbAQAEQQBSFRyYW5zYWN0aW9uYWxFcnJvcgAJACRFeGhhdXN0ZWQACgAoQ29ycnVwdGlvbgALACxVbmF2YWlsYWJsZQAMADhSb290Tm90QWxsb3dlZAANABBUcmllBAAVBAEkVHJpZUVycm9yAA4AAAUECChzcF9ydW50aW1lLE1vZHVsZUVycm9yAAAIARRpbmRleAwBCHU4AAEUZXJyb3JwAYxbdTg7IE1BWF9NT0RVTEVfRVJST1JfRU5DT0RFRF9TSVpFXQAACQQIKHNwX3J1bnRpbWUoVG9rZW5FcnJvcgABKEBGdW5kc1VuYXZhaWxhYmxlAAAAME9ubHlQcm92aWRlcgABADBCZWxvd01pbmltdW0AAgAwQ2Fubm90Q3JlYXRlAAMAMFVua25vd25Bc3NldAAEABhGcm96ZW4ABQAsVW5zdXBwb3J0ZWQABgBAQ2Fubm90Q3JlYXRlSG9sZAAHADROb3RFeHBlbmRhYmxlAAgAHEJsb2NrZWQACQAADQQINHNwX2FyaXRobWV0aWM8QXJpdGhtZXRpY0Vycm9yAAEMJFVuZGVyZmxvdwAAACBPdmVyZmxvdwABADhEaXZpc2lvbkJ5WmVybwACAAARBAgoc3BfcnVudGltZUhUcmFuc2FjdGlvbmFsRXJyb3IAAQgwTGltaXRSZWFjaGVkAAAAHE5vTGF5ZXIAAQAAFQQMKHNwX3J1bnRpbWUwcHJvdmluZ190cmllJFRyaWVFcnJvcgABOEBJbnZhbGlkU3RhdGVSb290AAAASEluY29tcGxldGVEYXRhYmFzZQABAFBWYWx1ZUF0SW5jb21wbGV0ZUtleQACADBEZWNvZGVyRXJyb3IAAwAsSW52YWxpZEhhc2gABAAwRHVwbGljYXRlS2V5AAUAOEV4dHJhbmVvdXNOb2RlAAYAPEV4dHJhbmVvdXNWYWx1ZQAHAFxFeHRyYW5lb3VzSGFzaFJlZmVyZW5jZQAIAFRJbnZhbGlkQ2hpbGRSZWZlcmVuY2UACQA0VmFsdWVNaXNtYXRjaAAKADxJbmNvbXBsZXRlUHJvb2YACwAwUm9vdE1pc21hdGNoAAwALERlY29kZUVycm9yAA0AABkEDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFdmVudAQEVAABGGBWYWxpZGF0aW9uRnVuY3Rpb25TdG9yZWQAAATQVGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gaGFzIGJlZW4gc2NoZWR1bGVkIHRvIGFwcGx5LmRWYWxpZGF0aW9uRnVuY3Rpb25BcHBsaWVkBAFUcmVsYXlfY2hhaW5fYmxvY2tfbnVtOAFUUmVsYXlDaGFpbkJsb2NrTnVtYmVyAAEERQFUaGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3YXMgYXBwbGllZCBhcyBvZiB0aGUgY29udGFpbmVkIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlci5sVmFsaWRhdGlvbkZ1bmN0aW9uRGlzY2FyZGVkAAIEsFRoZSByZWxheS1jaGFpbiBhYm9ydGVkIHRoZSB1cGdyYWRlIHByb2Nlc3MuYERvd253YXJkTWVzc2FnZXNSZWNlaXZlZAQBFGNvdW50OAEMdTMyAAMEAQFTb21lIGRvd253YXJkIG1lc3NhZ2VzIGhhdmUgYmVlbiByZWNlaXZlZCBhbmQgd2lsbCBiZSBwcm9jZXNzZWQuZERvd253YXJkTWVzc2FnZXNQcm9jZXNzZWQIASx3ZWlnaHRfdXNlZCkBARhXZWlnaHQAASBkbXFfaGVhZDwBRHJlbGF5X2NoYWluOjpIYXNoAAQE4ERvd253YXJkIG1lc3NhZ2VzIHdlcmUgcHJvY2Vzc2VkIHVzaW5nIHRoZSBnaXZlbiB3ZWlnaHQuRFVwd2FyZE1lc3NhZ2VTZW50BAEwbWVzc2FnZV9oYXNo0QMBPE9wdGlvbjxYY21IYXNoPgAFBLhBbiB1cHdhcmQgbWVzc2FnZSB3YXMgc2VudCB0byB0aGUgcmVsYXkgY2hhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0HQQMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFdmVudAABIEBCYXRjaEludGVycnVwdGVkCAEUaW5kZXg4AQx1MzIAARRlcnJvcgEEATREaXNwYXRjaEVycm9yAAAIVQFCYXRjaCBvZiBkaXNwYXRjaGVzIGRpZCBub3QgY29tcGxldGUgZnVsbHkuIEluZGV4IG9mIGZpcnN0IGZhaWxpbmcgZGlzcGF0Y2ggZ2l2ZW4sIGFzSHdlbGwgYXMgdGhlIGVycm9yLjhCYXRjaENvbXBsZXRlZAABBMhCYXRjaCBvZiBkaXNwYXRjaGVzIGNvbXBsZXRlZCBmdWxseSB3aXRoIG5vIGVycm9yLmBCYXRjaENvbXBsZXRlZFdpdGhFcnJvcnMAAgS0QmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgYnV0IGhhcyBlcnJvcnMuNEl0ZW1Db21wbGV0ZWQAAwQdAUEgc2luZ2xlIGl0ZW0gd2l0aGluIGEgQmF0Y2ggb2YgZGlzcGF0Y2hlcyBoYXMgY29tcGxldGVkIHdpdGggbm8gZXJyb3IuKEl0ZW1GYWlsZWQEARRlcnJvcgEEATREaXNwYXRjaEVycm9yAAQEEQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIGVycm9yLjBEaXNwYXRjaGVkQXMEARhyZXN1bHQhBAE4RGlzcGF0Y2hSZXN1bHQABQRYQSBjYWxsIHdhcyBkaXNwYXRjaGVkLkRJZkVsc2VNYWluU3VjY2VzcwAGBGRNYWluIGNhbGwgd2FzIGRpc3BhdGNoZWQuUElmRWxzZUZhbGxiYWNrQ2FsbGVkBAEobWFpbl9lcnJvcgEEATREaXNwYXRjaEVycm9yAAcEhFRoZSBmYWxsYmFjayBjYWxsIHdhcyBkaXNwYXRjaGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldCEEBBhSZXN1bHQIBFQBEARFAQEEAQgIT2sEABAAAAAADEVycgQAAQQAAAEAACUEDERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQURXZlbnQEBFQAASA4VXBncmFkZVN0YXJ0ZWQEAShtaWdyYXRpb25zOAEMdTMyENBUaGUgbnVtYmVyIG9mIG1pZ3JhdGlvbnMgdGhhdCB0aGlzIHVwZ3JhZGUgY29udGFpbnMuAEEBVGhpcyBjYW4gYmUgdXNlZCB0byBkZXNpZ24gYSBwcm9ncmVzcyBpbmRpY2F0b3IgaW4gY29tYmluYXRpb24gd2l0aCBjb3VudGluZyB0aGXMYE1pZ3JhdGlvbkNvbXBsZXRlZGAgYW5kIGBNaWdyYXRpb25Ta2lwcGVkYCBldmVudHMuAAxoQSBSdW50aW1lIHVwZ3JhZGUgc3RhcnRlZC4A+El0cyBlbmQgaXMgaW5kaWNhdGVkIGJ5IGBVcGdyYWRlQ29tcGxldGVkYCBvciBgVXBncmFkZUZhaWxlZGAuQFVwZ3JhZGVDb21wbGV0ZWQAAQyYVGhlIGN1cnJlbnQgcnVudGltZSB1cGdyYWRlIGNvbXBsZXRlZC4AHQFUaGlzIGltcGxpZXMgdGhhdCBhbGwgb2YgaXRzIG1pZ3JhdGlvbnMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBhcyB3ZWxsLjRVcGdyYWRlRmFpbGVkAAIMXFJ1bnRpbWUgdXBncmFkZSBmYWlsZWQuAOhUaGlzIGlzIHZlcnkgYmFkIGFuZCB3aWxsIHJlcXVpcmUgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24uQE1pZ3JhdGlvblNraXBwZWQEARRpbmRleDgBDHUzMgQpAVRoZSBpbmRleCBvZiB0aGUgc2tpcHBlZCBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuAwQJAUEgbWlncmF0aW9uIHdhcyBza2lwcGVkIHNpbmNlIGl0IHdhcyBhbHJlYWR5IGV4ZWN1dGVkIGluIHRoZSBwYXN0LkRNaWdyYXRpb25BZHZhbmNlZAgBFGluZGV4OAEMdTMyBAkBVGhlIGluZGV4IG9mIHRoZSBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuARB0b29rOAFEQmxvY2tOdW1iZXJGb3I8VD4E1FRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgdGhpcyBtaWdyYXRpb24gdG9vayBzbyBmYXIuBARcQSBtaWdyYXRpb24gcHJvZ3Jlc3NlZC5ITWlncmF0aW9uQ29tcGxldGVkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4FBFhBIE1pZ3JhdGlvbiBjb21wbGV0ZWQuPE1pZ3JhdGlvbkZhaWxlZAgBFGluZGV4OAEMdTMyBAkBVGhlIGluZGV4IG9mIHRoZSBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuARB0b29rOAFEQmxvY2tOdW1iZXJGb3I8VD4E1FRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgdGhpcyBtaWdyYXRpb24gdG9vayBzbyBmYXIuBgxMQSBNaWdyYXRpb24gZmFpbGVkLgBNAVRoaXMgaW1wbGllcyB0aGF0IHRoZSB3aG9sZSB1cGdyYWRlIGZhaWxlZCBhbmQgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcmVxdWlyZWQuPEhpc3RvcmljQ2xlYXJlZAQBLG5leHRfY3Vyc29yVQEBPE9wdGlvbjxWZWM8dTg+PgToU2hvdWxkIGJlIHBhc3NlZCB0byBgY2xlYXJfaGlzdG9yaWNgIGluIGEgc3VjY2Vzc2l2ZSBjYWxsLgcEyFRoZSBzZXQgb2YgaGlzdG9yaWNhbCBtaWdyYXRpb25zIGhhcyBiZWVuIGNsZWFyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0KQQMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXZlbnQIBFQABEkAAXgcRW5kb3dlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAATBmcmVlX2JhbGFuY2X8AShUOjpCYWxhbmNlAAAEuEFuIGFjY291bnQgd2FzIGNyZWF0ZWQgd2l0aCBzb21lIGZyZWUgYmFsYW5jZS4gRHVzdExvc3QIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQABCD0BQW4gYWNjb3VudCB3YXMgcmVtb3ZlZCB3aG9zZSBiYWxhbmNlIHdhcyBub24temVybyBidXQgYmVsb3cgRXhpc3RlbnRpYWxEZXBvc2l0LHhyZXN1bHRpbmcgaW4gYW4gb3V0cmlnaHQgbG9zcy4gVHJhbnNmZXIMARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlAAIETFRyYW5zZmVyIHN1Y2NlZWRlZC4oQmFsYW5jZVNldAgBDHdobwQBMFQ6OkFjY291bnRJZAABEGZyZWX8AShUOjpCYWxhbmNlAAMEaEEgYmFsYW5jZSB3YXMgc2V0IGJ5IHJvb3QuIFJlc2VydmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAEBOBTb21lIGJhbGFuY2Ugd2FzIHJlc2VydmVkIChtb3ZlZCBmcm9tIGZyZWUgdG8gcmVzZXJ2ZWQpLihVbnJlc2VydmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAFBOhTb21lIGJhbGFuY2Ugd2FzIHVucmVzZXJ2ZWQgKG1vdmVkIGZyb20gcmVzZXJ2ZWQgdG8gZnJlZSkuSFJlc2VydmVSZXBhdHJpYXRlZBABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UAAUhkZXN0aW5hdGlvbl9zdGF0dXMtBAEYU3RhdHVzAAYITQFTb21lIGJhbGFuY2Ugd2FzIG1vdmVkIGZyb20gdGhlIHJlc2VydmUgb2YgdGhlIGZpcnN0IGFjY291bnQgdG8gdGhlIHNlY29uZCBhY2NvdW50LthGaW5hbCBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIGRlc3RpbmF0aW9uIGJhbGFuY2UgdHlwZS4cRGVwb3NpdAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UABwTYU29tZSBhbW91bnQgd2FzIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuIFdpdGhkcmF3CAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAIBB0BU29tZSBhbW91bnQgd2FzIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4cU2xhc2hlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UACQQBAVNvbWUgYW1vdW50IHdhcyByZW1vdmVkIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIG1pc2JlaGF2aW9yKS4YTWludGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAKBJxTb21lIGFtb3VudCB3YXMgbWludGVkIGludG8gYW4gYWNjb3VudC4wTWludGVkQ3JlZGl0BAEYYW1vdW50/AEoVDo6QmFsYW5jZQALBOBTb21lIGNyZWRpdCB3YXMgYmFsYW5jZWQgYW5kIGFkZGVkIHRvIHRoZSBUb3RhbElzc3VhbmNlLhhCdXJuZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlAAwEnFNvbWUgYW1vdW50IHdhcyBidXJuZWQgZnJvbSBhbiBhY2NvdW50LihCdXJuZWREZWJ0BAEYYW1vdW50/AEoVDo6QmFsYW5jZQANBMxTb21lIGRlYnQgaGFzIGJlZW4gZHJvcHBlZCBmcm9tIHRoZSBUb3RhbCBJc3N1YW5jZS4kU3VzcGVuZGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAOBBUBU29tZSBhbW91bnQgd2FzIHN1c3BlbmRlZCBmcm9tIGFuIGFjY291bnQgKGl0IGNhbiBiZSByZXN0b3JlZCBsYXRlcikuIFJlc3RvcmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAPBKRTb21lIGFtb3VudCB3YXMgcmVzdG9yZWQgaW50byBhbiBhY2NvdW50LiBVcGdyYWRlZAQBDHdobwQBMFQ6OkFjY291bnRJZAAQBGBBbiBhY2NvdW50IHdhcyB1cGdyYWRlZC4YSXNzdWVkBAEYYW1vdW50/AEoVDo6QmFsYW5jZQARBC0BVG90YWwgaXNzdWFuY2Ugd2FzIGluY3JlYXNlZCBieSBgYW1vdW50YCwgY3JlYXRpbmcgYSBjcmVkaXQgdG8gYmUgYmFsYW5jZWQuJFJlc2NpbmRlZAQBGGFtb3VudPwBKFQ6OkJhbGFuY2UAEgQlAVRvdGFsIGlzc3VhbmNlIHdhcyBkZWNyZWFzZWQgYnkgYGFtb3VudGAsIGNyZWF0aW5nIGEgZGVidCB0byBiZSBiYWxhbmNlZC4YTG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQATBGBTb21lIGJhbGFuY2Ugd2FzIGxvY2tlZC4gVW5sb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlABQEaFNvbWUgYmFsYW5jZSB3YXMgdW5sb2NrZWQuGEZyb3plbggBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UAFQRgU29tZSBiYWxhbmNlIHdhcyBmcm96ZW4uGFRoYXdlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UAFgRgU29tZSBiYWxhbmNlIHdhcyB0aGF3ZWQuTFRvdGFsSXNzdWFuY2VGb3JjZWQIAQxvbGT8AShUOjpCYWxhbmNlAAEMbmV3/AEoVDo6QmFsYW5jZQAXBKxUaGUgYFRvdGFsSXNzdWFuY2VgIHdhcyBmb3JjZWZ1bGx5IGNoYW5nZWQuEEhlbGQMARhyZWFzb24xBAFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlABgEgFNvbWUgYmFsYW5jZSB3YXMgcGxhY2VkIG9uIGhvbGQuKEJ1cm5lZEhlbGQMARhyZWFzb24xBAFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnT8AShUOjpCYWxhbmNlABkEoEhlbGQgYmFsYW5jZSB3YXMgYnVybmVkIGZyb20gYW4gYWNjb3VudC44VHJhbnNmZXJPbkhvbGQQARhyZWFzb24xBAFQVDo6UnVudGltZUhvbGRSZWFzb24AARhzb3VyY2UEATBUOjpBY2NvdW50SWQAARBkZXN0BAEwVDo6QWNjb3VudElkAAEYYW1vdW50/AEoVDo6QmFsYW5jZQAaBBUBQSB0cmFuc2ZlciBvZiBgYW1vdW50YCBvbiBob2xkIGZyb20gYHNvdXJjZWAgdG8gYGRlc3RgIHdhcyBpbml0aWF0ZWQuPFRyYW5zZmVyQW5kSG9sZBABGHJlYXNvbjEEAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABEGRlc3QEATBUOjpBY2NvdW50SWQAASx0cmFuc2ZlcnJlZPwBKFQ6OkJhbGFuY2UAGwQJAVRoZSBgdHJhbnNmZXJyZWRgIGJhbGFuY2UgaXMgcGxhY2VkIG9uIGhvbGQgYXQgdGhlIGBkZXN0YCBhY2NvdW50LiBSZWxlYXNlZAwBGHJlYXNvbjEEAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPwBKFQ6OkJhbGFuY2UAHASQU29tZSBiYWxhbmNlIHdhcyByZWxlYXNlZCBmcm9tIGhvbGQuKFVuZXhwZWN0ZWQEAEEEAThVbmV4cGVjdGVkS2luZAAdBLBBbiB1bmV4cGVjdGVkL2RlZmVuc2l2ZSBldmVudCB3YXMgdHJpZ2dlcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldC0EFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYzRCYWxhbmNlU3RhdHVzAAEIEEZyZWUAAAAgUmVzZXJ2ZWQAAQAAMQQIWGJ1bGxldGluX3Bhc2VvX3J1bnRpbWVEUnVudGltZUhvbGRSZWFzb24AAQxIVHJhbnNhY3Rpb25TdG9yYWdlBAA1BAG8cGFsbGV0X2J1bGxldGluX3RyYW5zYWN0aW9uX3N0b3JhZ2U6OkhvbGRSZWFzb24AKAAcU2Vzc2lvbgQAOQQBaHBhbGxldF9zZXNzaW9uOjpIb2xkUmVhc29uABYALFBvbGthZG90WGNtBAA9BAFYcGFsbGV0X3hjbTo6SG9sZFJlYXNvbgAfAAA1BAyMcGFsbGV0X2J1bGxldGluX3RyYW5zYWN0aW9uX3N0b3JhZ2UYcGFsbGV0KEhvbGRSZWFzb24AAQQ4U3RvcmFnZUZlZUhvbGQAAAAAOQQMOHBhbGxldF9zZXNzaW9uGHBhbGxldChIb2xkUmVhc29uAAEEEEtleXMAAAAAPQQMKHBhbGxldF94Y20YcGFsbGV0KEhvbGRSZWFzb24AAQQ4QXV0aG9yaXplQWxpYXMAAAAAQQQMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQ4VW5leHBlY3RlZEtpbmQAAQg4QmFsYW5jZVVwZGF0ZWQAAABURmFpbGVkVG9NdXRhdGVBY2NvdW50AAEAAEUEDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQRIVHJhbnNhY3Rpb25GZWVQYWlkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEoYWN0dWFsX2ZlZfwBMEJhbGFuY2VPZjxUPgABDHRpcPwBMEJhbGFuY2VPZjxUPgAACFkBQSB0cmFuc2FjdGlvbiBmZWUgYGFjdHVhbF9mZWVgLCBvZiB3aGljaCBgdGlwYCB3YXMgYWRkZWQgdG8gdGhlIG1pbmltdW0gaW5jbHVzaW9uIGZlZSxcaGFzIGJlZW4gcGFpZCBieSBgd2hvYC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRJBAxscGFsbGV0X3NraXBfZmVlbGVzc19wYXltZW50GHBhbGxldBRFdmVudAQEVAABBChGZWVTa2lwcGVkBAEYb3JpZ2luyAHAPFQ6OlJ1bnRpbWVPcmlnaW4gYXMgT3JpZ2luVHJhaXQ+OjpQYWxsZXRzT3JpZ2luAAAEeEEgdHJhbnNhY3Rpb24gZmVlIHdhcyBza2lwcGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldE0EDIxwYWxsZXRfYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZRhwYWxsZXQURXZlbnQEBFQAASwYU3RvcmVkDAEUaW5kZXg4AQx1MzIAATBjb250ZW50X2hhc2gIASxDb250ZW50SGFzaAABDGNpZFUBASxPcHRpb248Q2lkPgAABIhTdG9yZWQgZGF0YSB1bmRlciBzcGVjaWZpZWQgaW5kZXguMFByb29mQ2hlY2tlZAABBJxTdG9yYWdlIHByb29mIHdhcyBzdWNjZXNzZnVsbHkgY2hlY2tlZC5EQWNjb3VudEF1dGhvcml6ZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAATB0cmFuc2FjdGlvbnM4AQx1MzIAARRieXRlcygBDHU2NAACCE0BQW4gYWNjb3VudCBgd2hvYCB3YXMgYXV0aG9yaXplZCB0byBzdG9yZSBgYnl0ZXNgIGJ5dGVzIGluIGB0cmFuc2FjdGlvbnNgIGJvb3N0LXRpZXI0dHJhbnNhY3Rpb25zLnRBY2NvdW50QXV0aG9yaXphdGlvblJlZnJlc2hlZAQBDHdobwQBMFQ6OkFjY291bnRJZAADBMRBbiBhdXRob3JpemF0aW9uIGZvciBhY2NvdW50IGB3aG9gIHdhcyByZWZyZXNoZWQuSFByZWltYWdlQXV0aG9yaXplZAgBMGNvbnRlbnRfaGFzaAgBLENvbnRlbnRIYXNoAAEgbWF4X3NpemUoAQx1NjQABAhZAUF1dGhvcml6YXRpb24gd2FzIGdpdmVuIGZvciBhIHByZWltYWdlIG9mIGBjb250ZW50X2hhc2hgIChub3QgZXhjZWVkaW5nIGBtYXhfc2l6ZWApIHRvUGJlIHN0b3JlZCBieSBhbnlvbmUueFByZWltYWdlQXV0aG9yaXphdGlvblJlZnJlc2hlZAQBMGNvbnRlbnRfaGFzaAgBLENvbnRlbnRIYXNoAAUEAQFBbiBhdXRob3JpemF0aW9uIGZvciBhIHByZWltYWdlIG9mIGBjb250ZW50X2hhc2hgIHdhcyByZWZyZXNoZWQuiEV4cGlyZWRBY2NvdW50QXV0aG9yaXphdGlvblJlbW92ZWQEAQx3aG8EATBUOjpBY2NvdW50SWQABgS0QW4gZXhwaXJlZCBhY2NvdW50IGF1dGhvcml6YXRpb24gd2FzIHJlbW92ZWQujEV4cGlyZWRQcmVpbWFnZUF1dGhvcml6YXRpb25SZW1vdmVkBAEwY29udGVudF9oYXNoCAEsQ29udGVudEhhc2gABwS4QW4gZXhwaXJlZCBwcmVpbWFnZSBhdXRob3JpemF0aW9uIHdhcyByZW1vdmVkLjxBdXRob3JpemVyQWRkZWQEAQx3aG8EATBUOjpBY2NvdW50SWQACASwQW4gYXV0aG9yaXplciB3YXMgYWRkZWQgdG8gdGhlIGFsbG93ZWQgbGlzdC5EQXV0aG9yaXplclJlbW92ZWQEAQx3aG8EATBUOjpBY2NvdW50SWQACQT8QW4gYXV0aG9yaXplciB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBhbGxvd2VkIGxpc3QgYnkgdGhlIG1hbmFnZXIuaEV4aGF1c3RlZEF1dGhvcml6ZXJSZW1vdmVkBAEMd2hvBAEwVDo6QWNjb3VudElkAAoEJQFBbiBhdXRob3JpemVyIHdhcyByZW1vdmVkIGZyb20gdGhlIGFsbG93ZWQgbGlzdCBkdWUgdG8gYnVkZ2V0IGV4aGF1c3Rpb24uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0UQQMcHBhbGxldF9idWxsZXRpbl9kYXRhX3JlbmV3YWwYcGFsbGV0FEV2ZW50BARUAAEcHFJlbmV3ZWQIARRpbmRleDgBDHUzMgABMGNvbnRlbnRfaGFzaAgBLENvbnRlbnRIYXNoAAAEjFJlbmV3ZWQgZGF0YSB1bmRlciBzcGVjaWZpZWQgaW5kZXguOFJlbmV3YWxFbmFibGVkDAEwY29udGVudF9oYXNoCAEsQ29udGVudEhhc2gAAQx3aG8EATBUOjpBY2NvdW50SWQAASRyZWN1cnJpbmddAQEQYm9vbAABBMhBIHJlbmV3YWwgd2FzIGVuYWJsZWQgZm9yIGBjb250ZW50X2hhc2hgIGJ5IGB3aG9gLkxBdXRvUmVuZXdhbERpc2FibGVkCAEwY29udGVudF9oYXNoCAEsQ29udGVudEhhc2gAAQx3aG8EATBUOjpBY2NvdW50SWQAAggtAUF1dG8tcmVuZXdhbCBkaXNhYmxlZCBmb3IgYGNvbnRlbnRfaGFzaGAuIGB3aG9gIGlzIHRoZSByZWdpc3RyYXRpb24ncyBvd25lcrgobm90IHRoZSBjYWxsZXIgd2hlbiBSb290IGlzc3VlZCB0aGUgZGlzYWJsZSkuLERhdGFSZW5ld2VkDAEUaW5kZXg4AQx1MzIAATBjb250ZW50X2hhc2gIASxDb250ZW50SGFzaAABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwTsQSByZWdpc3RlcmVkIHJlbmV3YWwgZmlyZWQsIHJlLXN0b3JpbmcgdGhlIGRhdGEgYXQgYGluZGV4YC40UmVuZXdhbEZhaWxlZAgBMGNvbnRlbnRfaGFzaAgBLENvbnRlbnRIYXNoAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAECDUBQSByZWdpc3RlcmVkIHJlbmV3YWwgZmFpbGVkIG9uIGBhY2NvdW50YCdzIGF1dGhvcml6YXRpb247IHRoZSByZWdpc3RyYXRpb24gaXN0ZHJvcHBlZCBhbmQgdGhlIGRhdGEgZXhwaXJlcy5sUGVybWFuZW50U3RvcmFnZVVzZWRVcGRhdGVkBAEQdXNlZCgBDHU2NAAFDCkBYFBlcm1hbmVudFN0b3JhZ2VVc2VkYCBjaGFuZ2VkIChhIGByZW5ld2AgYnVtcGVkIGl0LCBvciB0aGUgb2Jzb2xldGUgc3dlZXBFAWRlY3JlbWVudGVkIGl0KS4gT2ZmLWNoYWluIGNhcGFjaXR5LXBsYW5uaW5nIGNvbnN1bWVycyBjYW4gZHJpdmUgdGhlaXIgZGFzaGJvYXJkcyxmcm9tIHRoZXNlLlxQZXJtYW5lbnRTdG9yYWdlTmVhckNhcAgBEHVzZWQoAQx1NjQAAQxjYXAoAQx1NjQABgw5AWBQZXJtYW5lbnRTdG9yYWdlVXNlZGAganVzdCBjcm9zc2VkIHRoZSBbYFBFUk1BTkVOVF9TVE9SQUdFX05FQVJfQ0FQX1BFUkNFTlRgXS0BdGhyZXNob2xkIG9mIGBNYXhQZXJtYW5lbnRTdG9yYWdlU2l6ZWAgb24gdGhlIHJpc2luZyBlZGdlLiBFbWl0dGVkIG9uY2UgcGVy8GNyb3NzaW5nIOKAlCBubyByZS1lbWlzc2lvbiB3aGlsZSBzdGlsbCBhYm92ZSB0aGUgdGhyZXNob2xkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldFUEDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldBRFdmVudAQEVAABKEBOZXdJbnZ1bG5lcmFibGVzBAE0aW52dWxuZXJhYmxlc2EBAURWZWM8VDo6QWNjb3VudElkPgAABGxOZXcgSW52dWxuZXJhYmxlcyB3ZXJlIHNldC5ESW52dWxuZXJhYmxlQWRkZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEEdEEgbmV3IEludnVsbmVyYWJsZSB3YXMgYWRkZWQuTEludnVsbmVyYWJsZVJlbW92ZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAIEcEFuIEludnVsbmVyYWJsZSB3YXMgcmVtb3ZlZC5QTmV3RGVzaXJlZENhbmRpZGF0ZXMEAUhkZXNpcmVkX2NhbmRpZGF0ZXM4AQx1MzIAAwSkVGhlIG51bWJlciBvZiBkZXNpcmVkIGNhbmRpZGF0ZXMgd2FzIHNldC5ATmV3Q2FuZGlkYWN5Qm9uZAQBLGJvbmRfYW1vdW50/AEwQmFsYW5jZU9mPFQ+AAQEbFRoZSBjYW5kaWRhY3kgYm9uZCB3YXMgc2V0LjhDYW5kaWRhdGVBZGRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0/AEwQmFsYW5jZU9mPFQ+AAUEXEEgbmV3IGNhbmRpZGF0ZSBqb2luZWQuUENhbmRpZGF0ZUJvbmRVcGRhdGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXT8ATBCYWxhbmNlT2Y8VD4ABgRwQm9uZCBvZiBhIGNhbmRpZGF0ZSB1cGRhdGVkLkBDYW5kaWRhdGVSZW1vdmVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAHBGBBIGNhbmRpZGF0ZSB3YXMgcmVtb3ZlZC5EQ2FuZGlkYXRlUmVwbGFjZWQMAQxvbGQEATBUOjpBY2NvdW50SWQAAQxuZXcEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0/AEwQmFsYW5jZU9mPFQ+AAgE9EFuIGFjY291bnQgd2FzIHJlcGxhY2VkIGluIHRoZSBjYW5kaWRhdGUgbGlzdCBieSBhbm90aGVyIG9uZS5oSW52YWxpZEludnVsbmVyYWJsZVNraXBwZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAkIVQFBbiBhY2NvdW50IHdhcyB1bmFibGUgdG8gYmUgYWRkZWQgdG8gdGhlIEludnVsbmVyYWJsZXMgYmVjYXVzZSB0aGV5IGRpZCBub3QgaGF2ZSBrZXlzyHJlZ2lzdGVyZWQuIE90aGVyIEludnVsbmVyYWJsZXMgbWF5IGhhdmUgYmVlbiBzZXQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0WQQMOHBhbGxldF9zZXNzaW9uGHBhbGxldBRFdmVudAQEVAABEChOZXdTZXNzaW9uBAE0c2Vzc2lvbl9pbmRleDgBMFNlc3Npb25JbmRleAAACDkBTmV3IHNlc3Npb24gaGFzIGhhcHBlbmVkLiBOb3RlIHRoYXQgdGhlIGFyZ3VtZW50IGlzIHRoZSBzZXNzaW9uIGluZGV4LCBub3QgdGhlnGJsb2NrIG51bWJlciBhcyB0aGUgdHlwZSBtaWdodCBzdWdnZXN0LiROZXdRdWV1ZWQAAQhJAVRoZSBgTmV3U2Vzc2lvbmAgZXZlbnQgaW4gdGhlIGN1cnJlbnQgYmxvY2sgYWxzbyBpbXBsaWVzIGEgbmV3IHZhbGlkYXRvciBzZXQgdG8gYmUccXVldWVkLkRWYWxpZGF0b3JEaXNhYmxlZAQBJHZhbGlkYXRvcgQBOFQ6OlZhbGlkYXRvcklkAAIEcFZhbGlkYXRvciBoYXMgYmVlbiBkaXNhYmxlZC5IVmFsaWRhdG9yUmVlbmFibGVkBAEkdmFsaWRhdG9yBAE4VDo6VmFsaWRhdG9ySWQAAwR4VmFsaWRhdG9yIGhhcyBiZWVuIHJlLWVuYWJsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0XQQMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEV2ZW50BARUAAEEPFhjbXBNZXNzYWdlU2VudAQBMG1lc3NhZ2VfaGFzaAgBHFhjbUhhc2gAAATAQW4gSFJNUCBtZXNzYWdlIHdhcyBzZW50IHRvIGEgc2libGluZyBwYXJhY2hhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0YQQMKHBhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAF0JEF0dGVtcHRlZAQBHG91dGNvbWVlBAFQeGNtOjpsYXRlc3Q6Ok91dGNvbWUAAASoRXhlY3V0aW9uIG9mIGFuIFhDTSBtZXNzYWdlIHdhcyBhdHRlbXB0ZWQuEFNlbnQQARhvcmlnaW7gASBMb2NhdGlvbgABLGRlc3RpbmF0aW9u4AEgTG9jYXRpb24AARxtZXNzYWdl0QIBHFhjbTwoKT4AAShtZXNzYWdlX2lkCAEcWGNtSGFzaAABBGBBbiBYQ00gbWVzc2FnZSB3YXMgc2VudC4oU2VuZEZhaWxlZBABGG9yaWdpbuABIExvY2F0aW9uAAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABFGVycm9ybQQBJFNlbmRFcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAIEeEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBzZW5kLjxQcm9jZXNzWGNtRXJyb3IMARhvcmlnaW7gASBMb2NhdGlvbgABFGVycm9yAQMBIFhjbUVycm9yAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAwSEQW4gWENNIG1lc3NhZ2UgZmFpbGVkIHRvIHByb2Nlc3MuSFVuZXhwZWN0ZWRSZXNwb25zZQgBGG9yaWdpbuABIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAQMWQFRdWVyeSByZXNwb25zZSByZWNlaXZlZCB3aGljaCBkb2VzIG5vdCBtYXRjaCBhIHJlZ2lzdGVyZWQgcXVlcnkuIFRoaXMgbWF5IGJlIGJlY2F1c2UgYVUBbWF0Y2hpbmcgcXVlcnkgd2FzIG5ldmVyIHJlZ2lzdGVyZWQsIGl0IG1heSBiZSBiZWNhdXNlIGl0IGlzIGEgZHVwbGljYXRlIHJlc3BvbnNlLCBvcnBiZWNhdXNlIHRoZSBxdWVyeSB0aW1lZCBvdXQuNFJlc3BvbnNlUmVhZHkIASBxdWVyeV9pZCgBHFF1ZXJ5SWQAASByZXNwb25zZfUCASBSZXNwb25zZQAFCF0BUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIGlzIHJlYWR5IGZvciB0YWtpbmcgd2l0aCBgdGFrZV9yZXNwb25zZWAuIFRoZXJlIGlzgG5vIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uIGNhbGwuIE5vdGlmaWVkDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgABghZAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgcmVnaXN0ZXJlZCBub3RpZmljYXRpb24gaGFzqGJlZW4gZGlzcGF0Y2hlZCBhbmQgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5LkBOb3RpZnlPdmVyd2VpZ2h0FAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgAATRhY3R1YWxfd2VpZ2h0KQEBGFdlaWdodAABTG1heF9idWRnZXRlZF93ZWlnaHQpAQEYV2VpZ2h0AAcMSQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uWQFjb3VsZCBub3QgYmUgZGlzcGF0Y2hlZCBiZWNhdXNlIHRoZSBkaXNwYXRjaCB3ZWlnaHQgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHdlaWdodORvcmlnaW5hbGx5IGJ1ZGdldGVkIGJ5IHRoaXMgcnVudGltZSBmb3IgdGhlIHF1ZXJ5IHJlc3VsdC5MTm90aWZ5RGlzcGF0Y2hFcnJvcgwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAgIVQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlcmUgd2FzIGEgZ2VuZXJhbCBlcnJvciB3aXRoiGRpc3BhdGNoaW5nIHRoZSBub3RpZmljYXRpb24gY2FsbC5ITm90aWZ5RGVjb2RlRmFpbGVkDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgACQxRAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgZGlzcGF0Y2ggd2FzIHVuYWJsZSB0byBiZVkBZGVjb2RlZCBpbnRvIGEgYENhbGxgOyB0aGlzIG1pZ2h0IGJlIGR1ZSB0byBkaXNwYXRjaCBmdW5jdGlvbiBoYXZpbmcgYSBzaWduYXR1cmUgd2hpY2iUaXMgbm90IGAob3JpZ2luLCBRdWVyeUlkLCBSZXNwb25zZSlgLkBJbnZhbGlkUmVzcG9uZGVyDAEYb3JpZ2lu4AEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAAURleHBlY3RlZF9sb2NhdGlvbhUDAUBPcHRpb248TG9jYXRpb24+AAoMWQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIG9yaWdpbiBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UgZG9lc1UBbm90IG1hdGNoIHRoYXQgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5cSW52YWxpZFJlc3BvbmRlclZlcnNpb24IARhvcmlnaW7gASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAALHFEBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBleHBlY3RlZCBvcmlnaW4gbG9jYXRpb24gcGxhY2VkIGluTQFzdG9yYWdlIGJ5IHRoaXMgcnVudGltZSBwcmV2aW91c2x5IGNhbm5vdCBiZSBkZWNvZGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkLgBBAVRoaXMgaXMgdW5leHBlY3RlZCAoc2luY2UgYSBsb2NhdGlvbiBwbGFjZWQgaW4gc3RvcmFnZSBpbiBhIHByZXZpb3VzbHkgZXhlY3V0aW5nTQFydW50aW1lIHNob3VsZCBiZSByZWFkYWJsZSBwcmlvciB0byBxdWVyeSB0aW1lb3V0KSBhbmQgZGFuZ2Vyb3VzIHNpbmNlIHRoZSBwb3NzaWJseVkBdmFsaWQgcmVzcG9uc2Ugd2lsbCBiZSBkcm9wcGVkLiBNYW51YWwgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUcbmVlZGVkLjRSZXNwb25zZVRha2VuBAEgcXVlcnlfaWQoARxRdWVyeUlkAAwEyFJlY2VpdmVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlYWQgYW5kIHJlbW92ZWQuNEFzc2V0c1RyYXBwZWQMARBoYXNoPAEQSDI1NgABGG9yaWdpbuABIExvY2F0aW9uAAEYYXNzZXRzTQMBPFZlcnNpb25lZEFzc2V0cwANBLhTb21lIGFzc2V0cyBoYXZlIGJlZW4gcGxhY2VkIGluIGFuIGFzc2V0IHRyYXAuVFZlcnNpb25DaGFuZ2VOb3RpZmllZBABLGRlc3RpbmF0aW9u4AEgTG9jYXRpb24AARhyZXN1bHQ4AShYY21WZXJzaW9uAAEQY29zdN0CARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAODCUBQW4gWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBtZXNzYWdlIGhhcyBiZWVuIGF0dGVtcHRlZCB0byBiZSBzZW50LgDgVGhlIGNvc3Qgb2Ygc2VuZGluZyBpdCAoYm9ybmUgYnkgdGhlIGNoYWluKSBpcyBpbmNsdWRlZC5cU3VwcG9ydGVkVmVyc2lvbkNoYW5nZWQIASBsb2NhdGlvbuABIExvY2F0aW9uAAEcdmVyc2lvbjgBKFhjbVZlcnNpb24ADwg5AVRoZSBzdXBwb3J0ZWQgdmVyc2lvbiBvZiBhIGxvY2F0aW9uIGhhcyBiZWVuIGNoYW5nZWQuIFRoaXMgbWlnaHQgYmUgdGhyb3VnaCBhbsBhdXRvbWF0aWMgbm90aWZpY2F0aW9uIG9yIGEgbWFudWFsIGludGVydmVudGlvbi5QTm90aWZ5VGFyZ2V0U2VuZEZhaWwMASBsb2NhdGlvbuABIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAEUZXJyb3IBAwEgWGNtRXJyb3IAEAhZAUEgZ2l2ZW4gbG9jYXRpb24gd2hpY2ggaGFkIGEgdmVyc2lvbiBjaGFuZ2Ugc3Vic2NyaXB0aW9uIHdhcyBkcm9wcGVkIG93aW5nIHRvIGFuIGVycm9yfHNlbmRpbmcgdGhlIG5vdGlmaWNhdGlvbiB0byBpdC5kTm90aWZ5VGFyZ2V0TWlncmF0aW9uRmFpbAgBIGxvY2F0aW9uwQEBRFZlcnNpb25lZExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkABEIWQFBIGdpdmVuIGxvY2F0aW9uIHdoaWNoIGhhZCBhIHZlcnNpb24gY2hhbmdlIHN1YnNjcmlwdGlvbiB3YXMgZHJvcHBlZCBvd2luZyB0byBhbiBlcnJvcrRtaWdyYXRpbmcgdGhlIGxvY2F0aW9uIHRvIG91ciBuZXcgWENNIGZvcm1hdC5USW52YWxpZFF1ZXJpZXJWZXJzaW9uCAEYb3JpZ2lu4AEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAEhxVAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgcXVlcmllciBsb2NhdGlvbiBwbGFjZWQgaW5NAXN0b3JhZ2UgYnkgdGhpcyBydW50aW1lIHByZXZpb3VzbHkgY2Fubm90IGJlIGRlY29kZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQuAEEBVGhpcyBpcyB1bmV4cGVjdGVkIChzaW5jZSBhIGxvY2F0aW9uIHBsYWNlZCBpbiBzdG9yYWdlIGluIGEgcHJldmlvdXNseSBleGVjdXRpbmdNAXJ1bnRpbWUgc2hvdWxkIGJlIHJlYWRhYmxlIHByaW9yIHRvIHF1ZXJ5IHRpbWVvdXQpIGFuZCBkYW5nZXJvdXMgc2luY2UgdGhlIHBvc3NpYmx5WQF2YWxpZCByZXNwb25zZSB3aWxsIGJlIGRyb3BwZWQuIE1hbnVhbCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyBwcm9iYWJseSBnb2luZyB0byBiZRxuZWVkZWQuOEludmFsaWRRdWVyaWVyEAEYb3JpZ2lu4AEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAAUBleHBlY3RlZF9xdWVyaWVy4AEgTG9jYXRpb24AAVBtYXliZV9hY3R1YWxfcXVlcmllchUDAUBPcHRpb248TG9jYXRpb24+ABMMXQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIHF1ZXJpZXIgbG9jYXRpb24gb2YgdGhlIHJlc3BvbnNlIGRvZXNRAW5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5QVmVyc2lvbk5vdGlmeVN0YXJ0ZWQMASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEQY29zdN0CARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAUCFkBQSByZW1vdGUgaGFzIHJlcXVlc3RlZCBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9uIGZyb20gdXMgYW5kIHdlIGhhdmUgaG9ub3JlZCBpdC4dAUEgdmVyc2lvbiBpbmZvcm1hdGlvbiBtZXNzYWdlIGlzIHNlbnQgdG8gdGhlbSBhbmQgaXRzIGNvc3QgaXMgaW5jbHVkZWQuWFZlcnNpb25Ob3RpZnlSZXF1ZXN0ZWQMASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEQY29zdN0CARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAVBD0BV2UgaGF2ZSByZXF1ZXN0ZWQgdGhhdCBhIHJlbW90ZSBjaGFpbiBzZW5kIHVzIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb25zLmBWZXJzaW9uTm90aWZ5VW5yZXF1ZXN0ZWQMASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEQY29zdN0CARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAWCCUBV2UgaGF2ZSByZXF1ZXN0ZWQgdGhhdCBhIHJlbW90ZSBjaGFpbiBzdG9wcyBzZW5kaW5nIHVzIFhDTSB2ZXJzaW9uIGNoYW5nZThub3RpZmljYXRpb25zLiBGZWVzUGFpZAgBGHBheWluZ+ABIExvY2F0aW9uAAEQZmVlc90CARhBc3NldHMAFwQxAUZlZXMgd2VyZSBwYWlkIGZyb20gYSBsb2NhdGlvbiBmb3IgYW4gb3BlcmF0aW9uIChvZnRlbiBmb3IgdXNpbmcgYFNlbmRYY21gKS40QXNzZXRzQ2xhaW1lZAwBEGhhc2g8ARBIMjU2AAEYb3JpZ2lu4AEgTG9jYXRpb24AARhhc3NldHNNAwE8VmVyc2lvbmVkQXNzZXRzABgEwFNvbWUgYXNzZXRzIGhhdmUgYmVlbiBjbGFpbWVkIGZyb20gYW4gYXNzZXQgdHJhcGBWZXJzaW9uTWlncmF0aW9uRmluaXNoZWQEARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAZBIRBIFhDTSB2ZXJzaW9uIG1pZ3JhdGlvbiBmaW5pc2hlZC48QWxpYXNBdXRob3JpemVkDAEcYWxpYXNlcuABIExvY2F0aW9uAAEYdGFyZ2V04AEgTG9jYXRpb24AARhleHBpcnmFAwEsT3B0aW9uPHU2ND4AGghdAUFuIGBhbGlhc2VyYCBsb2NhdGlvbiB3YXMgYXV0aG9yaXplZCBieSBgdGFyZ2V0YCB0byBhbGlhcyBpdCwgYXV0aG9yaXphdGlvbiB2YWxpZCB1bnRpbFhgZXhwaXJ5YCBibG9jayBudW1iZXIuZEFsaWFzQXV0aG9yaXphdGlvblJlbW92ZWQIARxhbGlhc2Vy4AEgTG9jYXRpb24AARh0YXJnZXTgASBMb2NhdGlvbgAbBMxgdGFyZ2V0YCByZW1vdmVkIGFsaWFzIGF1dGhvcml6YXRpb24gZm9yIGBhbGlhc2VyYC5wQWxpYXNlc0F1dGhvcml6YXRpb25zUmVtb3ZlZAQBGHRhcmdldOABIExvY2F0aW9uABwEqGB0YXJnZXRgIHJlbW92ZWQgYWxsIGFsaWFzIGF1dGhvcml6YXRpb25zLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldGUEECxzdGFnaW5nX3hjbQh2NRh0cmFpdHMcT3V0Y29tZQABDCBDb21wbGV0ZQQBEHVzZWQpAQEYV2VpZ2h0AAAAKEluY29tcGxldGUIARB1c2VkKQEBGFdlaWdodAABFGVycm9yaQQBQEluc3RydWN0aW9uRXJyb3IAAQAURXJyb3IEAGkEAUBJbnN0cnVjdGlvbkVycm9yAAIAAGkEECxzdGFnaW5nX3hjbQh2NRh0cmFpdHNASW5zdHJ1Y3Rpb25FcnJvcgAACAEUaW5kZXgMAUBJbnN0cnVjdGlvbkluZGV4AAEUZXJyb3IBAwEURXJyb3IAAG0EEAx4Y20IdjMYdHJhaXRzJFNlbmRFcnJvcgABHDROb3RBcHBsaWNhYmxlAAAAJFRyYW5zcG9ydAABAChVbnJvdXRhYmxlAAIAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQAAwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAQAPE1pc3NpbmdBcmd1bWVudAAFABBGZWVzAAYAAHEEDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAEMNEludmFsaWRGb3JtYXQEAAgBIFt1ODsgMzJdAAAIgERvd253YXJkIG1lc3NhZ2UgaXMgaW52YWxpZCBYQ00uIFxbIGlkIFxdSFVuc3VwcG9ydGVkVmVyc2lvbgQACAEgW3U4OyAzMl0AAQi8RG93bndhcmQgbWVzc2FnZSBpcyB1bnN1cHBvcnRlZCB2ZXJzaW9uIG9mIFhDTS4gXFsgaWQgXF1ARXhlY3V0ZWREb3dud2FyZAgACAEgW3U4OyAzMl0AAGUEARxPdXRjb21lAAIIxERvd253YXJkIG1lc3NhZ2UgZXhlY3V0ZWQgd2l0aCB0aGUgZ2l2ZW4gb3V0Y29tZS5EXFsgaWQsIG91dGNvbWUgXF0EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXR1BAxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0FEV2ZW50BARUAAEQQFByb2Nlc3NpbmdGYWlsZWQMAQhpZDwBEEgyNTYElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbpEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BFGVycm9yeQQBTFByb2Nlc3NNZXNzYWdlRXJyb3IQYFRoZSBlcnJvciB0aGF0IG9jY3VycmVkLgBJAVRoaXMgZXJyb3IgaXMgcHJldHR5IG9wYXF1ZS4gTW9yZSBmaW5lLWdyYWluZWQgZXJyb3JzIG5lZWQgdG8gYmUgZW1pdHRlZCBhcyBldmVudHNoYnkgdGhlIGBNZXNzYWdlUHJvY2Vzc29yYC4ABFUBTWVzc2FnZSBkaXNjYXJkZWQgZHVlIHRvIGFuIGVycm9yIGluIHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAgKHVzdWFsbHkgYSBmb3JtYXQgZXJyb3IpLiRQcm9jZXNzZWQQAQhpZDwBEEgyNTYElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbpEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BLHdlaWdodF91c2VkKQEBGFdlaWdodATASG93IG11Y2ggd2VpZ2h0IHdhcyB1c2VkIHRvIHByb2Nlc3MgdGhlIG1lc3NhZ2UuARxzdWNjZXNzXQEBEGJvb2wYiFdoZXRoZXIgdGhlIG1lc3NhZ2Ugd2FzIHByb2Nlc3NlZC4ASQFOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBtZWFuIHRoYXQgdGhlIHVuZGVybHlpbmcgYE1lc3NhZ2VQcm9jZXNzb3JgIHdhcyBpbnRlcm5hbGx5NQFzdWNjZXNzZnVsLiBJdCAqc29sZWx5KiBtZWFucyB0aGF0IHRoZSBNUSBwYWxsZXQgd2lsbCB0cmVhdCB0aGlzIGFzIGEgc3VjY2Vzc00BY29uZGl0aW9uIGFuZCBkaXNjYXJkIHRoZSBtZXNzYWdlLiBBbnkgaW50ZXJuYWwgZXJyb3IgbmVlZHMgdG8gYmUgZW1pdHRlZCBhcyBldmVudHNoYnkgdGhlIGBNZXNzYWdlUHJvY2Vzc29yYC4BBFRNZXNzYWdlIGlzIHByb2Nlc3NlZC5IT3ZlcndlaWdodEVucXVldWVkEAEIaWQIASBbdTg7IDMyXQSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2lukQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEocGFnZV9pbmRleDgBJFBhZ2VJbmRleARgVGhlIHBhZ2Ugb2YgdGhlIG1lc3NhZ2UuATRtZXNzYWdlX2luZGV4OAEcVDo6U2l6ZQSkVGhlIGluZGV4IG9mIHRoZSBtZXNzYWdlIHdpdGhpbiB0aGUgcGFnZS4CBIxNZXNzYWdlIHBsYWNlZCBpbiBvdmVyd2VpZ2h0IHF1ZXVlLihQYWdlUmVhcGVkCAEYb3JpZ2lukQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRYVGhlIHF1ZXVlIG9mIHRoZSBwYWdlLgEUaW5kZXg4ASRQYWdlSW5kZXgEWFRoZSBpbmRleCBvZiB0aGUgcGFnZS4DBFRUaGlzIHBhZ2Ugd2FzIHJlYXBlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXR5BBA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMgbWVzc2FnZXNMUHJvY2Vzc01lc3NhZ2VFcnJvcgABGCRCYWRGb3JtYXQAAAAcQ29ycnVwdAABACxVbnN1cHBvcnRlZAACAChPdmVyd2VpZ2h0BAApAQEYV2VpZ2h0AAMAFFlpZWxkAAQARFN0YWNrTGltaXRSZWFjaGVkAAUAAH0EDCxwYWxsZXRfc3VkbxhwYWxsZXQURXZlbnQEBFQAARAUU3VkaWQEASxzdWRvX3Jlc3VsdCEEAThEaXNwYXRjaFJlc3VsdAS0VGhlIHJlc3VsdCBvZiB0aGUgY2FsbCBtYWRlIGJ5IHRoZSBzdWRvIHVzZXIuAARwQSBzdWRvIGNhbGwganVzdCB0b29rIHBsYWNlLihLZXlDaGFuZ2VkCAEMb2xkgQQBUE9wdGlvbjxUOjpBY2NvdW50SWQ+BLRUaGUgb2xkIHN1ZG8ga2V5IChpZiBvbmUgd2FzIHByZXZpb3VzbHkgc2V0KS4BDG5ldwQBMFQ6OkFjY291bnRJZASIVGhlIG5ldyBzdWRvIGtleSAoaWYgb25lIHdhcyBzZXQpLgEEeFRoZSBzdWRvIGtleSBoYXMgYmVlbiB1cGRhdGVkLihLZXlSZW1vdmVkAAIEgFRoZSBrZXkgd2FzIHBlcm1hbmVudGx5IHJlbW92ZWQuKFN1ZG9Bc0RvbmUEASxzdWRvX3Jlc3VsdCEEAThEaXNwYXRjaFJlc3VsdAS0VGhlIHJlc3VsdCBvZiB0aGUgY2FsbCBtYWRlIGJ5IHRoZSBzdWRvIHVzZXIuAwTIQSBbc3Vkb19hc10oUGFsbGV0OjpzdWRvX2FzKSBjYWxsIGp1c3QgdG9vayBwbGFjZS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSBBAQYT3B0aW9uBARUAQQBCBBOb25lAAAAEFNvbWUEAAQAAAEAAIUECDBmcmFtZV9zeXN0ZW0UUGhhc2UAAQw4QXBwbHlFeHRyaW5zaWMEADgBDHUzMgAAADBGaW5hbGl6YXRpb24AAQA4SW5pdGlhbGl6YXRpb24AAgAAiQQAAAI8AI0EAAACkQQAkQQAAAQIODgAlQQIMGZyYW1lX3N5c3RlbVhMYXN0UnVudGltZVVwZ3JhZGVJbmZvAAAIATBzcGVjX3ZlcnNpb25gAUxjb2RlYzo6Q29tcGFjdDx1MzI+AAEkc3BlY19uYW1lmQQBRENvdzwnc3RhdGljLCBzdHI+AACZBAQMQ293BARUAZ0EAAQAnQQAAACdBAAABQIAoQQIMGZyYW1lX3N5c3RlbWBDb2RlVXBncmFkZUF1dGhvcml6YXRpb24EBFQAAAgBJGNvZGVfaGFzaDwBHFQ6Okhhc2gAATRjaGVja192ZXJzaW9uXQEBEGJvb2wAAKUEDDBmcmFtZV9zeXN0ZW0YbGltaXRzMEJsb2NrV2VpZ2h0cwAADAEoYmFzZV9ibG9jaykBARhXZWlnaHQAASRtYXhfYmxvY2spAQEYV2VpZ2h0AAEkcGVyX2NsYXNzqQQBhFBlckRpc3BhdGNoQ2xhc3M8V2VpZ2h0c1BlckNsYXNzPgAAqQQMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAGtBAAMARhub3JtYWytBAEEVAABLG9wZXJhdGlvbmFsrQQBBFQAASRtYW5kYXRvcnmtBAEEVAAArQQMMGZyYW1lX3N5c3RlbRhsaW1pdHM8V2VpZ2h0c1BlckNsYXNzAAAQAThiYXNlX2V4dHJpbnNpYykBARhXZWlnaHQAATRtYXhfZXh0cmluc2ljGQMBOE9wdGlvbjxXZWlnaHQ+AAEkbWF4X3RvdGFsGQMBOE9wdGlvbjxXZWlnaHQ+AAEgcmVzZXJ2ZWQZAwE4T3B0aW9uPFdlaWdodD4AALEEDDBmcmFtZV9zeXN0ZW0YbGltaXRzLEJsb2NrTGVuZ3RoAAAIAQxtYXi1BAFUUGVyRGlzcGF0Y2hDbGFzczx1MzI+AAE8bWF4X2hlYWRlcl9zaXplRQEBLE9wdGlvbjx1MzI+AAC1BAw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUATgADAEYbm9ybWFsOAEEVAABLG9wZXJhdGlvbmFsOAEEVAABJG1hbmRhdG9yeTgBBFQAALkECChzcF93ZWlnaHRzPFJ1bnRpbWVEYldlaWdodAAACAEQcmVhZCgBDHU2NAABFHdyaXRlKAEMdTY0AAC9BAgoc3BfdmVyc2lvbjhSdW50aW1lVmVyc2lvbgAAIAEkc3BlY19uYW1lmQQBRENvdzwnc3RhdGljLCBzdHI+AAEkaW1wbF9uYW1lmQQBRENvdzwnc3RhdGljLCBzdHI+AAFEYXV0aG9yaW5nX3ZlcnNpb244AQx1MzIAATBzcGVjX3ZlcnNpb244AQx1MzIAATBpbXBsX3ZlcnNpb244AQx1MzIAARBhcGlzwQQBHEFwaXNWZWMAAUx0cmFuc2FjdGlvbl92ZXJzaW9uOAEMdTMyAAE4c3lzdGVtX3ZlcnNpb24MAQh1OAAAwQQEDENvdwQEVAHFBAAEAMUEAAAAxQQAAALJBADJBAAABAg1AjgAzQQMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAASQ8SW52YWxpZFNwZWNOYW1lAAAIEQFUaGUgbmFtZSBvZiBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IG1hdGNoIGJldHdlZW4gdGhlIGN1cnJlbnQgcnVudGltZVBhbmQgdGhlIG5ldyBydW50aW1lLmhTcGVjVmVyc2lvbk5lZWRzVG9JbmNyZWFzZQABCEEBVGhlIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpcyBub3QgYWxsb3dlZCB0byBkZWNyZWFzZSBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS50RmFpbGVkVG9FeHRyYWN0UnVudGltZVZlcnNpb24AAgzsRmFpbGVkIHRvIGV4dHJhY3QgdGhlIHJ1bnRpbWUgdmVyc2lvbiBmcm9tIHRoZSBuZXcgcnVudGltZS4ACQFFaXRoZXIgY2FsbGluZyBgQ29yZV92ZXJzaW9uYCBvciBkZWNvZGluZyBgUnVudGltZVZlcnNpb25gIGZhaWxlZC5MTm9uRGVmYXVsdENvbXBvc2l0ZQADBPxTdWljaWRlIGNhbGxlZCB3aGVuIHRoZSBhY2NvdW50IGhhcyBub24tZGVmYXVsdCBjb21wb3NpdGUgZGF0YS48Tm9uWmVyb1JlZkNvdW50AAQENQFUaGVyZSBpcyBhIG5vbi16ZXJvIHJlZmVyZW5jZSBjb3VudCBwcmV2ZW50aW5nIHRoZSBhY2NvdW50IGZyb20gYmVpbmcgcHVyZ2VkLjBDYWxsRmlsdGVyZWQABQTQVGhlIG9yaWdpbiBmaWx0ZXIgcHJldmVudCB0aGUgY2FsbCB0byBiZSBkaXNwYXRjaGVkLmxNdWx0aUJsb2NrTWlncmF0aW9uc09uZ29pbmcABgRVAUEgbXVsdGktYmxvY2sgbWlncmF0aW9uIGlzIG9uZ29pbmcgYW5kIHByZXZlbnRzIHRoZSBjdXJyZW50IGNvZGUgZnJvbSBiZWluZyByZXBsYWNlZC5ETm90aGluZ0F1dGhvcml6ZWQABwRYTm8gdXBncmFkZSBhdXRob3JpemVkLjBVbmF1dGhvcml6ZWQACASUVGhlIHN1Ym1pdHRlZCBjb2RlIGlzIG5vdCBhdXRob3JpemVkLgRsRXJyb3IgZm9yIHRoZSBTeXN0ZW0gcGFsbGV00QQMKHNwX3J1bnRpbWUYdHJhaXRzLEJsYWtlVHdvMjU2AAAAANUEEChzcF9ydW50aW1lHGdlbmVyaWMUYmxvY2sUQmxvY2sIGEhlYWRlcgFcJEV4dHJpbnNpYwHZBAAIARhoZWFkZXJcARhIZWFkZXIAAShleHRyaW5zaWNz5QQBOFZlYzxFeHRyaW5zaWM+AADZBBAoc3BfcnVudGltZRxnZW5lcmljTHVuY2hlY2tlZF9leHRyaW5zaWNIVW5jaGVja2VkRXh0cmluc2ljEBxBZGRyZXNzAQAQQ2FsbAEgJFNpZ25hdHVyZQGVARRFeHRyYQHdBAAEABgAAADdBAh0Y3VtdWx1c19wYWxsZXRfd2VpZ2h0X3JlY2xhaW1QU3RvcmFnZVdlaWdodFJlY2xhaW0IBFQABFMB4QQABADhBAEEUwAA4QQAAAQwmQOdA6EDpQOpA60DtQO5A70DwQPFA8kDAOUEAAAC2QQA6QQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0wYmxvY2tfd2VpZ2h0PEJsb2NrV2VpZ2h0TW9kZQQEVAABDCBGdWxsQ29yZQQBHGNvbnRleHQ4AURCbG9ja051bWJlckZvcjxUPgAAAERQb3RlbnRpYWxGdWxsQ29yZQwBHGNvbnRleHQ4AURCbG9ja051bWJlckZvcjxUPgABXGZpcnN0X3RyYW5zYWN0aW9uX2luZGV4RQEBLE9wdGlvbjx1MzI+AAE0dGFyZ2V0X3dlaWdodCkBARhXZWlnaHQAAQA4RnJhY3Rpb25PZkNvcmUIARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAVxmaXJzdF90cmFuc2FjdGlvbl9pbmRleEUBASxPcHRpb248dTMyPgACAADtBAAABsQA8QQAAAL1BAD1BAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQgQW5jZXN0b3IEBEgBPAAMATh1c2VkX2JhbmR3aWR0aPkEATRVc2VkQmFuZHdpZHRoAAE4cGFyYV9oZWFkX2hhc2gNBQEkT3B0aW9uPEg+AAFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFsEQUBjE9wdGlvbjxyZWxheV9jaGFpbjo6VXBncmFkZUdvQWhlYWQ+AAD5BAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQ0VXNlZEJhbmR3aWR0aAAADAE0dW1wX21zZ19jb3VudDgBDHUzMgABPHVtcF90b3RhbF9ieXRlczgBDHUzMgABNGhybXBfb3V0Z29pbmf9BAGMQlRyZWVNYXA8UGFyYUlkLCBIcm1wQ2hhbm5lbFVwZGF0ZT4AAP0EBCBCVHJlZU1hcAgESwGcBFYBAQUABAAFBQAAAAEFDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudERIcm1wQ2hhbm5lbFVwZGF0ZQAACAEkbXNnX2NvdW50OAEMdTMyAAEsdG90YWxfYnl0ZXM4AQx1MzIAAAUFAAACCQUACQUAAAQInAEFAA0FBBhPcHRpb24EBFQBPAEIEE5vbmUAAAAQU29tZQQAPAAAAQAAEQUEGE9wdGlvbgQEVAEVBQEIEE5vbmUAAAAQU29tZQQAFQUAAAEAABUFDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5OFVwZ3JhZGVHb0FoZWFkAAEIFEFib3J0AAAAHEdvQWhlYWQAAQAAGQUMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50OFNlZ21lbnRUcmFja2VyBARIATwADAE4dXNlZF9iYW5kd2lkdGj5BAE0VXNlZEJhbmR3aWR0aAABOGhybXBfd2F0ZXJtYXJrRQEBgE9wdGlvbjxyZWxheV9jaGFpbjo6QmxvY2tOdW1iZXI+AAFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFsEQUBjE9wdGlvbjxyZWxheV9jaGFpbjo6VXBncmFkZUdvQWhlYWQ+AAAdBQQYT3B0aW9uBARUASEFAQgQTm9uZQAAABBTb21lBAAhBQAAAQAAIQUMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlIVXBncmFkZVJlc3RyaWN0aW9uAAEEHFByZXNlbnQAAAAAJQUMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1QcmVsYXlfc3RhdGVfc25hcHNob3RYTWVzc2FnaW5nU3RhdGVTbmFwc2hvdAAAEAEwZG1xX21xY19oZWFkPAFEcmVsYXlfY2hhaW46Okhhc2gAAZxyZWxheV9kaXNwYXRjaF9xdWV1ZV9yZW1haW5pbmdfY2FwYWNpdHkpBQGMUmVsYXlEaXNwYXRjaFF1ZXVlUmVtYWluaW5nQ2FwYWNpdHkAAUBpbmdyZXNzX2NoYW5uZWxzLQUBiFZlYzwoUGFyYUlkLCBBYnJpZGdlZEhybXBDaGFubmVsKT4AATxlZ3Jlc3NfY2hhbm5lbHMtBQGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgAAKQUMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1QcmVsYXlfc3RhdGVfc25hcHNob3SMUmVsYXlEaXNwYXRjaFF1ZXVlUmVtYWluaW5nQ2FwYWNpdHkAAAgBPHJlbWFpbmluZ19jb3VudDgBDHUzMgABOHJlbWFpbmluZ19zaXplOAEMdTMyAAAtBQAAAjEFADEFAAAECJw1BQA1BQxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUxBYnJpZGdlZEhybXBDaGFubmVsAAAYATBtYXhfY2FwYWNpdHk4AQx1MzIAAThtYXhfdG90YWxfc2l6ZTgBDHUzMgABQG1heF9tZXNzYWdlX3NpemU4AQx1MzIAASRtc2dfY291bnQ4AQx1MzIAASh0b3RhbF9zaXplOAEMdTMyAAEgbXFjX2hlYWQNBQEwT3B0aW9uPEhhc2g+AAA5BQxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OWRBYnJpZGdlZEhvc3RDb25maWd1cmF0aW9uAAAoATRtYXhfY29kZV9zaXplOAEMdTMyAAFIbWF4X2hlYWRfZGF0YV9zaXplOAEMdTMyAAFYbWF4X3Vwd2FyZF9xdWV1ZV9jb3VudDgBDHUzMgABVG1heF91cHdhcmRfcXVldWVfc2l6ZTgBDHUzMgABXG1heF91cHdhcmRfbWVzc2FnZV9zaXplOAEMdTMyAAGQbWF4X3Vwd2FyZF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAGIaHJtcF9tYXhfbWVzc2FnZV9udW1fcGVyX2NhbmRpZGF0ZTgBDHUzMgABbHZhbGlkYXRpb25fdXBncmFkZV9jb29sZG93bjgBLEJsb2NrTnVtYmVyAAFgdmFsaWRhdGlvbl91cGdyYWRlX2RlbGF5OAEsQmxvY2tOdW1iZXIAAVBhc3luY19iYWNraW5nX3BhcmFtcz0FAUhBc3luY0JhY2tpbmdQYXJhbXMAAD0FEExwb2xrYWRvdF9wcmltaXRpdmVzCHY5NGFzeW5jX2JhY2tpbmdIQXN5bmNCYWNraW5nUGFyYW1zAAAIAUxtYXhfY2FuZGlkYXRlX2RlcHRoOAEMdTMyAAFQYWxsb3dlZF9hbmNlc3RyeV9sZW44AQx1MzIAAEEFCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50RE1lc3NhZ2VRdWV1ZUNoYWluAAAEADwBJFJlbGF5SGFzaAAARQUEIEJUcmVlTWFwCARLAZwEVgFBBQAEAEkFAAAASQUAAAJNBQBNBQAABAicQQUAUQUMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50QEluYm91bmRNZXNzYWdlSWQAAAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABLHJldmVyc2VfaWR4OAEMdTMyAABVBQAAAlkFAFkFCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNMT3V0Ym91bmRIcm1wTWVzc2FnZQQISWQBnAAIASRyZWNpcGllbnScAQhJZAABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AABdBQw0c3BfYXJpdGhtZXRpYyxmaXhlZF9wb2ludCRGaXhlZFUxMjgAAAQA/AEQdTEyOAAAYQUIfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0sUG9WTWVzc2FnZXMAABgBaHJlbGF5X3N0b3JhZ2Vfcm9vdF9vcl9oYXNoPAFEcmVsYXlfY2hhaW46Okhhc2gAATRjb3JlX3NlbGVjdG9yDAEIdTgAATBidW5kbGVfaW5kZXgMAQh1OAABNHVtcF9tc2dfY291bnQ4AQx1MzIAAUxocm1wX291dGJvdW5kX2NvdW50OAEMdTMyAAFgaHJtcF9vdXRib3VuZF9yZWNpcGllbnRzZQUBLFZlYzxQYXJhSWQ+AABlBQAAApwAaQUMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0YcGFsbGV0FEVycm9yBARUAAEYTE92ZXJsYXBwaW5nVXBncmFkZXMAAAQZAUF0dGVtcHQgdG8gdXBncmFkZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIHdoaWxlIGV4aXN0aW5nIHVwZ3JhZGUgcGVuZGluZy5QUHJvaGliaXRlZEJ5UG9sa2Fkb3QAAQRNAVBvbGthZG90IGN1cnJlbnRseSBwcm9oaWJpdHMgdGhpcyBwYXJhY2hhaW4gZnJvbSB1cGdyYWRpbmcgaXRzIHZhbGlkYXRpb24gZnVuY3Rpb24uGFRvb0JpZwACCEUBVGhlIHN1cHBsaWVkIHZhbGlkYXRpb24gZnVuY3Rpb24gaGFzIGNvbXBpbGVkIGludG8gYSBibG9iIGxhcmdlciB0aGFuIFBvbGthZG90IGlzPHdpbGxpbmcgdG8gcnVuLmhWYWxpZGF0aW9uRGF0YU5vdEF2YWlsYWJsZQADBB0BVGhlIGluaGVyZW50IHdoaWNoIHN1cHBsaWVzIHRoZSB2YWxpZGF0aW9uIGRhdGEgZGlkIG5vdCBydW4gdGhpcyBibG9jay50SG9zdENvbmZpZ3VyYXRpb25Ob3RBdmFpbGFibGUABAQpAVRoZSBpbmhlcmVudCB3aGljaCBzdXBwbGllcyB0aGUgaG9zdCBjb25maWd1cmF0aW9uIGRpZCBub3QgcnVuIHRoaXMgYmxvY2suME5vdFNjaGVkdWxlZAAFBNhObyB2YWxpZGF0aW9uIGZ1bmN0aW9uIHVwZ3JhZGUgaXMgY3VycmVudGx5IHNjaGVkdWxlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQubQUMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFcnJvcgQEVAABBDBUb29NYW55Q2FsbHMAAARcVG9vIG1hbnkgY2FsbHMgYmF0Y2hlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQucQUMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFcnJvcgQEVAABBBxPbmdvaW5nAAAE6FRoZSBvcGVyYXRpb24gY2Fubm90IGNvbXBsZXRlIHNpbmNlIHNvbWUgTUJNcyBhcmUgb25nb2luZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQudQUIRHBhbGxldF9taWdyYXRpb25zME1ibUlzT25nb2luZwABDAxZZXMAAAAITm8AAQAUU3R1Y2sAAgAAeQUEGE9wdGlvbgQEVAF9BQEIEE5vbmUAAAAQU29tZQQAfQUAAAEAAH0FCERwYWxsZXRfbWlncmF0aW9ucyxNYm1Qcm9ncmVzcwAAEAFEY3VycmVudF9taWdyYXRpb244AQx1MzIAAUB0b3RhbF9taWdyYXRpb25zOAEMdTMyAAFcY3VycmVudF9taWdyYXRpb25fc3RlcHM4AQx1MzIAAWxjdXJyZW50X21pZ3JhdGlvbl9tYXhfc3RlcHNFAQEsT3B0aW9uPHUzMj4AAIEFCERwYWxsZXRfbWlncmF0aW9ucyRNYm1TdGF0dXMAAAwBHG9uZ29pbmd1BQEwTWJtSXNPbmdvaW5nAAEgcHJvZ3Jlc3N5BQFMT3B0aW9uPE1ibVByb2dyZXNzPgABIHByZWZpeGVzNAEwVmVjPFZlYzx1OD4+AACFBQxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAYkFBFMAAAQAkQUBGFZlYzxUPgAAiQUMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxCYWxhbmNlTG9jawQcQmFsYW5jZQH8AAwBCGlkNQIBOExvY2tJZGVudGlmaWVyAAEYYW1vdW50/AEcQmFsYW5jZQABHHJlYXNvbnONBQEcUmVhc29ucwAAjQUMPHBhbGxldF9iYWxhbmNlcxR0eXBlcxxSZWFzb25zAAEMDEZlZQAAABBNaXNjAAEADEFsbAACAACRBQAAAokFAJUFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBmQUEUwAABACdBQEYVmVjPFQ+AACZBQw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLFJlc2VydmVEYXRhCERSZXNlcnZlSWRlbnRpZmllcgE1AhxCYWxhbmNlAfwACAEIaWQ1AgFEUmVzZXJ2ZUlkZW50aWZpZXIAARhhbW91bnT8ARxCYWxhbmNlAACdBQAAApkFAKEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBpQUEUwAABACpBQEYVmVjPFQ+AAClBRQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2MgSWRBbW91bnQICElkATEEHEJhbGFuY2UB/AAIAQhpZDEEAQhJZAABGGFtb3VudPwBHEJhbGFuY2UAAKkFAAACpQUArQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGxBQRTAAAEALUFARhWZWM8VD4AALEFFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYyBJZEFtb3VudAgISWQBEBxCYWxhbmNlAfwACAEIaWQQAQhJZAABGGFtb3VudPwBHEJhbGFuY2UAALUFAAACsQUAuQUMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXJyb3IIBFQABEkAATA4VmVzdGluZ0JhbGFuY2UAAAScVmVzdGluZyBiYWxhbmNlIHRvbyBoaWdoIHRvIHNlbmQgdmFsdWUuVExpcXVpZGl0eVJlc3RyaWN0aW9ucwABBMhBY2NvdW50IGxpcXVpZGl0eSByZXN0cmljdGlvbnMgcHJldmVudCB3aXRoZHJhd2FsLkxJbnN1ZmZpY2llbnRCYWxhbmNlAAIEeEJhbGFuY2UgdG9vIGxvdyB0byBzZW5kIHZhbHVlLkhFeGlzdGVudGlhbERlcG9zaXQAAwTsVmFsdWUgdG9vIGxvdyB0byBjcmVhdGUgYWNjb3VudCBkdWUgdG8gZXhpc3RlbnRpYWwgZGVwb3NpdC40RXhwZW5kYWJpbGl0eQAEBJBUcmFuc2Zlci9wYXltZW50IHdvdWxkIGtpbGwgYWNjb3VudC5cRXhpc3RpbmdWZXN0aW5nU2NoZWR1bGUABQTMQSB2ZXN0aW5nIHNjaGVkdWxlIGFscmVhZHkgZXhpc3RzIGZvciB0aGlzIGFjY291bnQuLERlYWRBY2NvdW50AAYEjEJlbmVmaWNpYXJ5IGFjY291bnQgbXVzdCBwcmUtZXhpc3QuPFRvb01hbnlSZXNlcnZlcwAHBLhOdW1iZXIgb2YgbmFtZWQgcmVzZXJ2ZXMgZXhjZWVkIGBNYXhSZXNlcnZlc2AuMFRvb01hbnlIb2xkcwAIBPhOdW1iZXIgb2YgaG9sZHMgZXhjZWVkIGBWYXJpYW50Q291bnRPZjxUOjpSdW50aW1lSG9sZFJlYXNvbj5gLjhUb29NYW55RnJlZXplcwAJBJhOdW1iZXIgb2YgZnJlZXplcyBleGNlZWQgYE1heEZyZWV6ZXNgLkxJc3N1YW5jZURlYWN0aXZhdGVkAAoEAQFUaGUgaXNzdWFuY2UgY2Fubm90IGJlIG1vZGlmaWVkIHNpbmNlIGl0IGlzIGFscmVhZHkgZGVhY3RpdmF0ZWQuJERlbHRhWmVybwALBGRUaGUgZGVsdGEgY2Fubm90IGJlIHplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lr0FCGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudCBSZWxlYXNlcwABCCRWMUFuY2llbnQAAAAIVjIAAQAAwQUQNGZyYW1lX3N1cHBvcnQYdHJhaXRzHHN0b3JhZ2UYTm9Ecm9wBARUAcUFAAQAxQUBBFQAAMUFGDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGUkaW1iYWxhbmNlJEltYmFsYW5jZQwEQgH8GE9uRHJvcAA4T3Bwb3NpdGVPbkRyb3AAAAQBGGFtb3VudPwBBEIAAMkFDIxwYWxsZXRfYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZRR0eXBlczRBdXRob3JpemF0aW9uCCxCbG9ja051bWJlcgE4FEV4dHJhAc0FAAgBGGV4dGVudNEFAWhBdXRob3JpemF0aW9uRXh0ZW50PEV4dHJhPgABKGV4cGlyYXRpb244ASxCbG9ja051bWJlcgAAzQUMcHBhbGxldF9idWxsZXRpbl9kYXRhX3JlbmV3YWwUdHlwZXM8UGVybWFuZW50RXh0ZW50AAAEATxieXRlc19wZXJtYW5lbnQoAQx1NjQAANEFDIxwYWxsZXRfYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZRR0eXBlc0xBdXRob3JpemF0aW9uRXh0ZW50BBRFeHRyYQHNBQAUATB0cmFuc2FjdGlvbnM4AQx1MzIAAVh0cmFuc2FjdGlvbnNfYWxsb3dhbmNlOAEMdTMyAAEUYnl0ZXMoAQx1NjQAARRleHRyYc0FARRFeHRyYQABPGJ5dGVzX2FsbG93YW5jZSgBDHU2NAAA1QUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHZBQRTAAAEAOEFARhWZWM8VD4AANkFDIxwYWxsZXRfYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZRR0eXBlczxUcmFuc2FjdGlvbkluZm8EEE1ldGEB3QUAIAEoY2h1bmtfcm9vdDwBdDxCbGFrZVR3bzI1NiBhcyBIYXNoPjo6T3V0cHV0AAEwY29udGVudF9oYXNoCAEsQ29udGVudEhhc2gAARxoYXNoaW5ncQEBQEhhc2hpbmdBbGdvcml0aG0AASRjaWRfY29kZWMoASBDaWRDb2RlYwABEHNpemU4AQx1MzIAATxleHRyaW5zaWNfaW5kZXg4AQx1MzIAATBibG9ja19jaHVua3M4AShDaHVua0luZGV4AAEQbWV0Yd0FARBNZXRhAADdBQicYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZV9wcmltaXRpdmVzJEVudHJ5S2luZAABCBRTdG9yZQAAABRSZW5ldwABAADhBQAAAtkFAOUFCJxidWxsZXRpbl90cmFuc2FjdGlvbl9zdG9yYWdlX3ByaW1pdGl2ZXNYVmFsaWRUcmFuc2FjdGlvblBhcmFtcwAADAEodGFnX3ByZWZpeJ0EATAmJ3N0YXRpYyBzdHIAASBwcmlvcml0eSgBTFRyYW5zYWN0aW9uUHJpb3JpdHkAASRsb25nZXZpdHkoAVBUcmFuc2FjdGlvbkxvbmdldml0eQAA6QUMjHBhbGxldF9idWxsZXRpbl90cmFuc2FjdGlvbl9zdG9yYWdlGHBhbGxldBRFcnJvcgQEVAABSChCYWRDb250ZXh0AAAE9EF0dGVtcHRlZCB0byBjYWxsIGBzdG9yZWAvYHJlbmV3YCBvdXRzaWRlIG9mIGJsb2NrIGV4ZWN1dGlvbi4sQmFkRGF0YVNpemUAAQSYRGF0YSBzaXplIGlzIG5vdCBpbiB0aGUgYWxsb3dlZCByYW5nZS5MVG9vTWFueVRyYW5zYWN0aW9ucwACBIxUb28gbWFueSB0cmFuc2FjdGlvbnMgaW4gdGhlIGJsb2NrLjROb3RDb25maWd1cmVkAAMEWEludmFsaWQgY29uZmlndXJhdGlvbi48UmVuZXdlZE5vdEZvdW5kAAQEfFJlbmV3ZWQgZXh0cmluc2ljIGlzIG5vdCBmb3VuZC48VW5leHBlY3RlZFByb29mAAUElFByb29mIHdhcyBub3QgZXhwZWN0ZWQgaW4gdGhpcyBibG9jay4wSW52YWxpZFByb29mAAYEaFByb29mIGZhaWxlZCB2ZXJpZmljYXRpb24uME1pc3NpbmdQcm9vZgAHBFhNaXNzaW5nIHN0b3JhZ2UgcHJvb2YuQE1pc3NpbmdTdGF0ZURhdGEACATUVW5hYmxlIHRvIHZlcmlmeSBwcm9vZiBiZWNhdXNlIHN0YXRlIGRhdGEgaXMgbWlzc2luZy4sRG91YmxlQ2hlY2sACQSARG91YmxlIHByb29mIGNoZWNrIGluIHRoZSBibG9jay48UHJvb2ZOb3RDaGVja2VkAAoErFN0b3JhZ2UgcHJvb2Ygd2FzIG5vdCBjaGVja2VkIGluIHRoZSBibG9jay5UQXV0aG9yaXphdGlvbk5vdEZvdW5kAAsEcEF1dGhvcml6YXRpb24gd2FzIG5vdCBmb3VuZC5cQXV0aG9yaXphdGlvbk5vdEV4cGlyZWQADAR4QXV0aG9yaXphdGlvbiBoYXMgbm90IGV4cGlyZWQuSEludmFsaWRDb250ZW50SGFzaAANBIBDb250ZW50IGhhc2ggd2FzIG5vdCBjYWxjdWxhdGVkLkhBdXRob3JpemVyTm90Rm91bmQADgSEQXV0aG9yaXplciBhY2NvdW50IHdhcyBub3QgZm91bmQucEF1dGhvcml6ZXJCdWRnZXROb3RFeGhhdXN0ZWQADwhVAUF1dGhvcml6ZXIgaXMgbm90IGVsaWdpYmxlIGZvciBwZXJtaXNzaW9ubGVzcyByZW1vdmFsIOKAlCBpdCBzdGlsbCBoYXMgYnVkZ2V0IG9uIGJvdGjcYXhlcyBBTkQgKGlmIGB2YWxpZF91bnRpbGAgaXMgc2V0KSBoYXMgbm90IHlldCBleHBpcmVkLkRJbnZhbGlkVmFsaWRVbnRpbAAQCCkBYHZhbGlkX3VudGlsYCBzdXBwbGllZCB0byBgYWRkX2F1dGhvcml6ZXJgIGlzIGluIHRoZSBwYXN0IChgPD0gbm93YCwgd291bGTMZXhwaXJlIGltbWVkaWF0ZWx5KS4gUGFzcyBgTm9uZWAgZm9yIG5vIGV4cGlyYXRpb24ucEluc3VmZmljaWVudEF1dGhvcml6ZXJCdWRnZXQAEQwNAWBhdXRob3JpemVfYWNjb3VudGAgLyBgYXV0aG9yaXplX3ByZWltYWdlYCBjYWxsZWQgYnkgYSBzaWduZXIgd2hvc2XYYEFsbG93ZWRBdXRob3JpemVyc2AgYnVkZ2V0IGNhbm5vdCBjb3ZlciB0aGUgcmVxdWVzdGVkpGB0cmFuc2FjdGlvbnNgIC8gYGJ5dGVzYCAob3IgYG1heF9zaXplYCkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lu0FDHBwYWxsZXRfYnVsbGV0aW5fZGF0YV9yZW5ld2FsFHR5cGVzLFJlbmV3YWxEYXRhBCRBY2NvdW50SWQBBAAMARxhY2NvdW50BAEkQWNjb3VudElkAAEkcmVjdXJyaW5nXQEBEGJvb2wAARBwYWlkXQEBEGJvb2wAAPEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB9QUEUwAABAD5BQEYVmVjPFQ+AAD1BQAABAwI2QXtBQD5BQAAAvUFAP0FDHBwYWxsZXRfYnVsbGV0aW5fZGF0YV9yZW5ld2FsGHBhbGxldBRFcnJvcgQEVAABIChCYWRDb250ZXh0AAAE7EF0dGVtcHRlZCB0byBjYWxsIGBmb3JjZV9yZW5ld2Agb3V0c2lkZSBvZiBibG9jayBleGVjdXRpb24uPFJlbmV3ZWROb3RGb3VuZAABBHxSZW5ld2VkIGV4dHJpbnNpYyBpcyBub3QgZm91bmQuTFRvb01hbnlUcmFuc2FjdGlvbnMAAgToQmxvY2sgYWxyZWFkeSBjb250YWlucyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdHJhbnNhY3Rpb25zLlRSZW5ld2FsQWxyZWFkeUVuYWJsZWQAAwTYQSByZW5ld2FsIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBmb3IgdGhpcyBjb250ZW50IGhhc2guVEF1dG9SZW5ld2FsTm90RW5hYmxlZAAEBMhBdXRvLXJlbmV3YWwgaXMgbm90IGVuYWJsZWQgZm9yIHRoaXMgY29udGVudCBoYXNoLkxOb3RBdXRvUmVuZXdhbE93bmVyAAUE5ENhbGxlciBpcyBub3QgdGhlIG93bmVyIG9mIHRoZSBhdXRvLXJlbmV3YWwgcmVnaXN0cmF0aW9uLnxDYW5ub3REaXNhYmxlUHJlcGFpZEF1dG9SZW5ld2FsAAYMNQFgZGlzYWJsZV9hdXRvX3JlbmV3YCByZWplY3RlZDogdGhlIHJlZ2lzdHJhdGlvbiBoYXMgYmVlbiBwcmVwYWlkIGZvciBpdHMgbmV4dDEBY3ljbGUgYW5kIGNhbm5vdCBiZSBkaXNhYmxlZCBieSB0aGUgb3duZXIgdW50aWwgdGhlIGN5Y2xlIGZpcmVzIGFuZCBjb25zdW1lc/h0aGUgcHJlcGF5bWVudC4gUm9vdCBjYW4gc3RpbGwgZGlzYWJsZSBmb3IgZ292ZXJuYW5jZSBjbGVhbnVwLixCYWREYXRhU2l6ZQAHCDkBRGF0YSBzaXplIG9mIHRoZSByZW5ld2VkIGVudHJ5IGlzIG5vdCBpbiB0aGUgYWxsb3dlZCByYW5nZS4gQXBwZW5kZWQgbGFzdDogdGhlhGVhcmxpZXIgaW5kaWNlcyBhcmUgd2lyZS12aXNpYmxlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4BBgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABhAQEYVmVjPFQ+AAAFBgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQkGBFMAAAQADQYBGFZlYzxUPgAACQYMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0NENhbmRpZGF0ZUluZm8IJEFjY291bnRJZAEEHEJhbGFuY2UB/AAIAQx3aG8EASRBY2NvdW50SWQAARxkZXBvc2l0/AEcQmFsYW5jZQAADQYAAAIJBgARBgg0ZnJhbWVfc3VwcG9ydCBQYWxsZXRJZAAABAA1AgEcW3U4OyA4XQAAFQYMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEVycm9yBARUAAFERFRvb01hbnlDYW5kaWRhdGVzAAAEjFRoZSBwYWxsZXQgaGFzIHRvbyBtYW55IGNhbmRpZGF0ZXMuXFRvb0Zld0VsaWdpYmxlQ29sbGF0b3JzAAEErExlYXZpbmcgd291bGQgcmVzdWx0IGluIHRvbyBmZXcgY2FuZGlkYXRlcy5AQWxyZWFkeUNhbmRpZGF0ZQACBHxBY2NvdW50IGlzIGFscmVhZHkgYSBjYW5kaWRhdGUuME5vdENhbmRpZGF0ZQADBGxBY2NvdW50IGlzIG5vdCBhIGNhbmRpZGF0ZS5QVG9vTWFueUludnVsbmVyYWJsZXMABASEVGhlcmUgYXJlIHRvbyBtYW55IEludnVsbmVyYWJsZXMuTEFscmVhZHlJbnZ1bG5lcmFibGUABQSMQWNjb3VudCBpcyBhbHJlYWR5IGFuIEludnVsbmVyYWJsZS48Tm90SW52dWxuZXJhYmxlAAYEfEFjY291bnQgaXMgbm90IGFuIEludnVsbmVyYWJsZS5cTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQABwScQWNjb3VudCBoYXMgbm8gYXNzb2NpYXRlZCB2YWxpZGF0b3IgSUQuWFZhbGlkYXRvck5vdFJlZ2lzdGVyZWQACASMVmFsaWRhdG9yIElEIGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZC5sSW5zZXJ0VG9DYW5kaWRhdGVMaXN0RmFpbGVkAAkEnENvdWxkIG5vdCBpbnNlcnQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LnRSZW1vdmVGcm9tQ2FuZGlkYXRlTGlzdEZhaWxlZAAKBKRDb3VsZCBub3QgcmVtb3ZlIGZyb20gdGhlIGNhbmRpZGF0ZSBsaXN0LjREZXBvc2l0VG9vTG93AAsE9E5ldyBkZXBvc2l0IGFtb3VudCB3b3VsZCBiZSBiZWxvdyB0aGUgbWluaW11bSBjYW5kaWRhY3kgYm9uZC5kVXBkYXRlQ2FuZGlkYXRlTGlzdEZhaWxlZAAMBJBDb3VsZCBub3QgdXBkYXRlIHRoZSBjYW5kaWRhdGUgbGlzdC5ASW5zdWZmaWNpZW50Qm9uZAANBCkBRGVwb3NpdCBhbW91bnQgaXMgdG9vIGxvdyB0byB0YWtlIHRoZSB0YXJnZXQncyBzbG90IGluIHRoZSBjYW5kaWRhdGUgbGlzdC5QVGFyZ2V0SXNOb3RDYW5kaWRhdGUADgQtAVRoZSB0YXJnZXQgYWNjb3VudCB0byBiZSByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgaXMgbm90IGEgY2FuZGlkYXRlLkBJZGVudGljYWxEZXBvc2l0AA8EDQFUaGUgdXBkYXRlZCBkZXBvc2l0IGFtb3VudCBpcyBlcXVhbCB0byB0aGUgYW1vdW50IGFscmVhZHkgcmVzZXJ2ZWQuQEludmFsaWRVbnJlc2VydmUAEAQ9AUNhbm5vdCBsb3dlciBjYW5kaWRhY3kgYm9uZCB3aGlsZSBvY2N1cHlpbmcgYSBmdXR1cmUgY29sbGF0b3Igc2xvdCBpbiB0aGUgbGlzdC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuGQYAAAIdBgAdBgAABAgEsQEAIQYAAAIlBgAlBgAABAg4KQYAKQYMKHNwX3N0YWtpbmccb2ZmZW5jZTxPZmZlbmNlU2V2ZXJpdHkAAAQALQYBHFBlcmJpbGwAAC0GDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVyYmlsbAAABAA4AQx1MzIAADEGAAAECDUGGAA1Bgwcc3BfY29yZRhjcnlwdG8kS2V5VHlwZUlkAAAEAHABHFt1ODsgNF0AADkGDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXJyb3IEBFQAARQwSW52YWxpZFByb29mAAAEYEludmFsaWQgb3duZXJzaGlwIHByb29mLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAABBJxObyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRCBmb3IgYWNjb3VudC40RHVwbGljYXRlZEtleQACBGRSZWdpc3RlcmVkIGR1cGxpY2F0ZSBrZXkuGE5vS2V5cwADBKRObyBrZXlzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBhY2NvdW50LiROb0FjY291bnQABAQZAUtleSBzZXR0aW5nIGFjY291bnQgaXMgbm90IGxpdmUsIHNvIGl0J3MgaW1wb3NzaWJsZSB0byBhc3NvY2lhdGUga2V5cy4EdEVycm9yIGZvciB0aGUgc2Vzc2lvbiBwYWxsZXQuPQYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAG1AQRTAAAEAEEGARhWZWM8VD4AAEEGAAACtQEARQYISHNwX2NvbnNlbnN1c19zbG90cxBTbG90AAAEACgBDHU2NAAASQYAAAQIRQY4AE0GDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAGcBFMAAAQAUQYBLEJUcmVlU2V0PFQ+AABRBgQgQlRyZWVTZXQEBFQBnAAEAGUFAAAAVQYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFZBgRTAAAEAGUGARhWZWM8VD4AAFkGCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlWE91dGJvdW5kQ2hhbm5lbERldGFpbHMAABwBJHJlY2lwaWVudJwBGFBhcmFJZAABFHN0YXRlXQYBNE91dGJvdW5kU3RhdGUAATRzaWduYWxzX2V4aXN0XQEBEGJvb2wAASxmaXJzdF9pbmRleMQBDHUxNgABKGxhc3RfaW5kZXjEAQx1MTYAARRmbGFnc2EGAVBPdXRib3VuZENoYW5uZWxGbGFncwABMHF1ZXVlZF9ieXRlczgBDHUzMgAAXQYIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU0T3V0Ym91bmRTdGF0ZQABCAhPawAAACRTdXNwZW5kZWQAAQAAYQYIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWVQT3V0Ym91bmRDaGFubmVsRmxhZ3MAAAQBEGJpdHM4AQx1MzIAAGUGAAACWQYAaQYAAAQInMQAbQYMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABxBghkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTxRdWV1ZUNvbmZpZ0RhdGEAAAwBRHN1c3BlbmRfdGhyZXNob2xkOAEMdTMyAAE4ZHJvcF90aHJlc2hvbGQ4AQx1MzIAAUByZXN1bWVfdGhyZXNob2xkOAEMdTMyAAB1BgxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQURXJyb3IEBFQAARQ4QmFkUXVldWVDb25maWcAAAQRAVNldHRpbmcgdGhlIHF1ZXVlIGNvbmZpZyBmYWlsZWQgc2luY2Ugb25lIG9mIGl0cyB2YWx1ZXMgd2FzIGludmFsaWQuQEFscmVhZHlTdXNwZW5kZWQAAQSMVGhlIGV4ZWN1dGlvbiBpcyBhbHJlYWR5IHN1c3BlbmRlZC44QWxyZWFkeVJlc3VtZWQAAgSEVGhlIGV4ZWN1dGlvbiBpcyBhbHJlYWR5IHJlc3VtZWQudFRvb01hbnlBY3RpdmVPdXRib3VuZENoYW5uZWxzAAMEsFRoZXJlIGFyZSB0b28gbWFueSBhY3RpdmUgb3V0Ym91bmQgY2hhbm5lbHMuGFRvb0JpZwAEBFxUaGUgbWVzc2FnZSBpcyB0b28gYmlnLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC55BgwocGFsbGV0X3hjbRhwYWxsZXQsUXVlcnlTdGF0dXMELEJsb2NrTnVtYmVyATgBDBxQZW5kaW5nEAEkcmVzcG9uZGVywQEBRFZlcnNpb25lZExvY2F0aW9uAAFMbWF5YmVfbWF0Y2hfcXVlcmllcn0GAWRPcHRpb248VmVyc2lvbmVkTG9jYXRpb24+AAEwbWF5YmVfbm90aWZ5gQYBQE9wdGlvbjwodTgsIHU4KT4AARx0aW1lb3V0OAEsQmxvY2tOdW1iZXIAAAA8VmVyc2lvbk5vdGlmaWVyCAEYb3JpZ2luwQEBRFZlcnNpb25lZExvY2F0aW9uAAEkaXNfYWN0aXZlXQEBEGJvb2wAAQAUUmVhZHkIASByZXNwb25zZYkGAURWZXJzaW9uZWRSZXNwb25zZQABCGF0OAEsQmxvY2tOdW1iZXIAAgAAfQYEGE9wdGlvbgQEVAHBAQEIEE5vbmUAAAAQU29tZQQAwQEAAAEAAIEGBBhPcHRpb24EBFQBhQYBCBBOb25lAAAAEFNvbWUEAIUGAAABAACFBgAABAgMDACJBggMeGNtRFZlcnNpb25lZFJlc3BvbnNlAAEMCFYzBAA9AgEwdjM6OlJlc3BvbnNlAAMACFY0BACpAgEwdjQ6OlJlc3BvbnNlAAQACFY1BAD1AgEwdjU6OlJlc3BvbnNlAAUAAI0GAAAECDjBAQCRBgAABAwoKQE4AJUGDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBmQYEUwAABACdBgEYVmVjPFQ+AACZBgAABAjBATgAnQYAAAKZBgChBgwocGFsbGV0X3hjbRhwYWxsZXRUVmVyc2lvbk1pZ3JhdGlvblN0YWdlAAEQXE1pZ3JhdGVTdXBwb3J0ZWRWZXJzaW9uAAAAXE1pZ3JhdGVWZXJzaW9uTm90aWZpZXJzAAEAUE5vdGlmeUN1cnJlbnRUYXJnZXRzBABVAQE8T3B0aW9uPFZlYzx1OD4+AAIAaE1pZ3JhdGVBbmROb3RpZnlPbGRUYXJnZXRzAAMAAKUGAAAEDDgEgQMAqQYMKHBhbGxldF94Y20YcGFsbGV0aFJlbW90ZUxvY2tlZEZ1bmdpYmxlUmVjb3JkCEhDb25zdW1lcklkZW50aWZpZXIBEDBNYXhDb25zdW1lcnMAABABGGFtb3VudPwBEHUxMjgAARRvd25lcsEBAURWZXJzaW9uZWRMb2NhdGlvbgABGGxvY2tlcsEBAURWZXJzaW9uZWRMb2NhdGlvbgABJGNvbnN1bWVyc60GAdBCb3VuZGVkVmVjPChDb25zdW1lcklkZW50aWZpZXIsIHUxMjgpLCBNYXhDb25zdW1lcnM+AACtBgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAbEGBFMAAAQAtQYBGFZlYzxUPgAAsQYAAAQIEPwAtQYAAAKxBgC5BgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAb0GBFMAAAQAwQYBGFZlYzxUPgAAvQYAAAQI/MEBAMEGAAACvQYAxQYIKHBhbGxldF94Y21YQXV0aG9yaXplZEFsaWFzZXNFbnRyeQgYVGlja2V0AckGDE1BWAHNBgAIASBhbGlhc2Vyc9EGAXhCb3VuZGVkVmVjPE9yaWdpbkFsaWFzZXIsIE1BWD4AARh0aWNrZXTJBgEYVGlja2V0AADJBhQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlREhvbGRDb25zaWRlcmF0aW9uFARBAARGAARSAAREAAhGcAAABAD8AShGOjpCYWxhbmNlAADNBgwocGFsbGV0X3hjbRhwYWxsZXRQTWF4QXV0aG9yaXplZEFsaWFzZXMAAAAA0QYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHVBgRTAAAEANkGARhWZWM8VD4AANUGDEB4Y21fcnVudGltZV9hcGlzSGF1dGhvcml6ZWRfYWxpYXNlczRPcmlnaW5BbGlhc2VyAAAIASBsb2NhdGlvbsEBAURWZXJzaW9uZWRMb2NhdGlvbgABGGV4cGlyeYUDASxPcHRpb248dTY0PgAA2QYAAALVBgDdBgwocGFsbGV0X3hjbRhwYWxsZXQURXJyb3IEBFQAAXAsVW5yZWFjaGFibGUAAAhdAVRoZSBkZXNpcmVkIGRlc3RpbmF0aW9uIHdhcyB1bnJlYWNoYWJsZSwgZ2VuZXJhbGx5IGJlY2F1c2UgdGhlcmUgaXMgYSBubyB3YXkgb2Ygcm91dGluZxh0byBpdC4sU2VuZEZhaWx1cmUAAQhBAVRoZXJlIHdhcyBzb21lIG90aGVyIGlzc3VlIChpLmUuIG5vdCB0byBkbyB3aXRoIHJvdXRpbmcpIGluIHNlbmRpbmcgdGhlIG1lc3NhZ2UuyFBlcmhhcHMgYSBsYWNrIG9mIHNwYWNlIGZvciBidWZmZXJpbmcgdGhlIG1lc3NhZ2UuIEZpbHRlcmVkAAIEnFRoZSBtZXNzYWdlIGV4ZWN1dGlvbiBmYWlscyB0aGUgZmlsdGVyLkhVbndlaWdoYWJsZU1lc3NhZ2UAAwS0VGhlIG1lc3NhZ2UncyB3ZWlnaHQgY291bGQgbm90IGJlIGRldGVybWluZWQuYERlc3RpbmF0aW9uTm90SW52ZXJ0aWJsZQAEBNxUaGUgZGVzdGluYXRpb24gYExvY2F0aW9uYCBwcm92aWRlZCBjYW5ub3QgYmUgaW52ZXJ0ZWQuFEVtcHR5AAUEgFRoZSBhc3NldHMgdG8gYmUgc2VudCBhcmUgZW1wdHkuOENhbm5vdFJlYW5jaG9yAAYENQFDb3VsZCBub3QgcmUtYW5jaG9yIHRoZSBhc3NldHMgdG8gZGVjbGFyZSB0aGUgZmVlcyBmb3IgdGhlIGRlc3RpbmF0aW9uIGNoYWluLjRUb29NYW55QXNzZXRzAAcExFRvbyBtYW55IGFzc2V0cyBoYXZlIGJlZW4gYXR0ZW1wdGVkIGZvciB0cmFuc2Zlci40SW52YWxpZE9yaWdpbgAIBHhPcmlnaW4gaXMgaW52YWxpZCBmb3Igc2VuZGluZy4oQmFkVmVyc2lvbgAJBCEBVGhlIHZlcnNpb24gb2YgdGhlIGBWZXJzaW9uZWRgIHZhbHVlIHVzZWQgaXMgbm90IGFibGUgdG8gYmUgaW50ZXJwcmV0ZWQuLEJhZExvY2F0aW9uAAoIQQFUaGUgZ2l2ZW4gbG9jYXRpb24gY291bGQgbm90IGJlIHVzZWQgKGUuZy4gYmVjYXVzZSBpdCBjYW5ub3QgYmUgZXhwcmVzc2VkIGluIHRoZWBkZXNpcmVkIHZlcnNpb24gb2YgWENNKS44Tm9TdWJzY3JpcHRpb24ACwS8VGhlIHJlZmVyZW5jZWQgc3Vic2NyaXB0aW9uIGNvdWxkIG5vdCBiZSBmb3VuZC5EQWxyZWFkeVN1YnNjcmliZWQADAQRAVRoZSBsb2NhdGlvbiBpcyBpbnZhbGlkIHNpbmNlIGl0IGFscmVhZHkgaGFzIGEgc3Vic2NyaXB0aW9uIGZyb20gdXMuWENhbm5vdENoZWNrT3V0VGVsZXBvcnQADQQpAUNvdWxkIG5vdCBjaGVjay1vdXQgdGhlIGFzc2V0cyBmb3IgdGVsZXBvcnRhdGlvbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4uKExvd0JhbGFuY2UADgRBAVRoZSBvd25lciBkb2VzIG5vdCBvd24gKGFsbCkgb2YgdGhlIGFzc2V0IHRoYXQgdGhleSB3aXNoIHRvIGRvIHRoZSBvcGVyYXRpb24gb24uMFRvb01hbnlMb2NrcwAPBMBUaGUgYXNzZXQgb3duZXIgaGFzIHRvbyBtYW55IGxvY2tzIG9uIHRoZSBhc3NldC5MQWNjb3VudE5vdFNvdmVyZWlnbgAQBDEBVGhlIGdpdmVuIGFjY291bnQgaXMgbm90IGFuIGlkZW50aWZpYWJsZSBzb3ZlcmVpZ24gYWNjb3VudCBmb3IgYW55IGxvY2F0aW9uLihGZWVzTm90TWV0ABEEKQFUaGUgb3BlcmF0aW9uIHJlcXVpcmVkIGZlZXMgdG8gYmUgcGFpZCB3aGljaCB0aGUgaW5pdGlhdG9yIGNvdWxkIG5vdCBtZWV0LjBMb2NrTm90Rm91bmQAEgT0QSByZW1vdGUgbG9jayB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGRhdGEgY291bGQgbm90IGJlIGZvdW5kLhRJblVzZQATBEkBVGhlIHVubG9jayBvcGVyYXRpb24gY2Fubm90IHN1Y2NlZWQgYmVjYXVzZSB0aGVyZSBhcmUgc3RpbGwgY29uc3VtZXJzIG9mIHRoZSBsb2NrLmhJbnZhbGlkQXNzZXRVbmtub3duUmVzZXJ2ZQAVBPBJbnZhbGlkIGFzc2V0LCByZXNlcnZlIGNoYWluIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIGZvciBpdC54SW52YWxpZEFzc2V0VW5zdXBwb3J0ZWRSZXNlcnZlABYERQFJbnZhbGlkIGFzc2V0LCBkbyBub3Qgc3VwcG9ydCByZW1vdGUgYXNzZXQgcmVzZXJ2ZXMgd2l0aCBkaWZmZXJlbnQgZmVlcyByZXNlcnZlcy48VG9vTWFueVJlc2VydmVzABcESQFUb28gbWFueSBhc3NldHMgd2l0aCBkaWZmZXJlbnQgcmVzZXJ2ZSBsb2NhdGlvbnMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZQAYBHxMb2NhbCBYQ00gZXhlY3V0aW9uIGluY29tcGxldGUuYFRvb01hbnlBdXRob3JpemVkQWxpYXNlcwAZBLhUb28gbWFueSBsb2NhdGlvbnMgYXV0aG9yaXplZCB0byBhbGlhcyBvcmlnaW4uNEV4cGlyZXNJblBhc3QAGgSMRXhwaXJ5IGJsb2NrIG51bWJlciBpcyBpbiB0aGUgcGFzdC40QWxpYXNOb3RGb3VuZAAbBNBUaGUgYWxpYXMgdG8gcmVtb3ZlIGF1dGhvcml6YXRpb24gZm9yIHdhcyBub3QgZm91bmQuhExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcggBFGluZGV4DAFASW5zdHJ1Y3Rpb25JbmRleAABFGVycm9y4QYBOEV4ZWN1dGlvbkVycm9yABwINQFMb2NhbCBYQ00gZXhlY3V0aW9uIGluY29tcGxldGUgd2l0aCB0aGUgYWN0dWFsIFhDTSBlcnJvciBhbmQgdGhlIGluZGV4IG9mIHRoZYhpbnN0cnVjdGlvbiB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LuEGDChwYWxsZXRfeGNtGGVycm9yczhFeGVjdXRpb25FcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIANFRvb01hbnlBc3NldHMAIwBMVW5oYW5kbGVkWGNtVmVyc2lvbgAkAEhXZWlnaHRMaW1pdFJlYWNoZWQAJQAcQmFycmllcgAmAExXZWlnaHROb3RDb21wdXRhYmxlACcAREV4Y2VlZHNTdGFja0xpbWl0ACgAAOUGCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZSRCb29rU3RhdGUENE1lc3NhZ2VPcmlnaW4BkQMAGAEUYmVnaW44ASRQYWdlSW5kZXgAAQxlbmQ4ASRQYWdlSW5kZXgAARRjb3VudDgBJFBhZ2VJbmRleAABQHJlYWR5X25laWdoYm91cnPpBgGET3B0aW9uPE5laWdoYm91cnM8TWVzc2FnZU9yaWdpbj4+AAE0bWVzc2FnZV9jb3VudCgBDHU2NAABEHNpemUoAQx1NjQAAOkGBBhPcHRpb24EBFQB7QYBCBBOb25lAAAAEFNvbWUEAO0GAAABAADtBghQcGFsbGV0X21lc3NhZ2VfcXVldWUoTmVpZ2hib3VycwQ0TWVzc2FnZU9yaWdpbgGRAwAIARBwcmV2kQMBNE1lc3NhZ2VPcmlnaW4AARBuZXh0kQMBNE1lc3NhZ2VPcmlnaW4AAPEGAAAECJEDOAD1BghQcGFsbGV0X21lc3NhZ2VfcXVldWUQUGFnZQgQU2l6ZQE4IEhlYXBTaXplAAAYASRyZW1haW5pbmc4ARBTaXplAAE4cmVtYWluaW5nX3NpemU4ARBTaXplAAEsZmlyc3RfaW5kZXg4ARBTaXplAAEUZmlyc3Q4ARBTaXplAAEQbGFzdDgBEFNpemUAARBoZWFw+QYBnEJvdW5kZWRWZWM8dTgsIEludG9VMzI8SGVhcFNpemUsIFNpemU+PgAA+QYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAD9BgxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0FEVycm9yBARUAAEkLE5vdFJlYXBhYmxlAAAISQFQYWdlIGlzIG5vdCByZWFwYWJsZSBiZWNhdXNlIGl0IGhhcyBpdGVtcyByZW1haW5pbmcgdG8gYmUgcHJvY2Vzc2VkIGFuZCBpcyBub3Qgb2xkHGVub3VnaC4YTm9QYWdlAAEEhFBhZ2UgdG8gYmUgcmVhcGVkIGRvZXMgbm90IGV4aXN0LiROb01lc3NhZ2UAAgSoVGhlIHJlZmVyZW5jZWQgbWVzc2FnZSBjb3VsZCBub3QgYmUgZm91bmQuQEFscmVhZHlQcm9jZXNzZWQAAwQBAVRoZSBtZXNzYWdlIHdhcyBhbHJlYWR5IHByb2Nlc3NlZCBhbmQgY2Fubm90IGJlIHByb2Nlc3NlZCBhZ2Fpbi4YUXVldWVkAAQErFRoZSBtZXNzYWdlIGlzIHF1ZXVlZCBmb3IgZnV0dXJlIGV4ZWN1dGlvbi5ISW5zdWZmaWNpZW50V2VpZ2h0AAUEGQFUaGVyZSBpcyB0ZW1wb3JhcmlseSBub3QgZW5vdWdoIHdlaWdodCB0byBjb250aW51ZSBzZXJ2aWNpbmcgbWVzc2FnZXMuYFRlbXBvcmFyaWx5VW5wcm9jZXNzYWJsZQAGEKhUaGlzIG1lc3NhZ2UgaXMgdGVtcG9yYXJpbHkgdW5wcm9jZXNzYWJsZS4AWQFTdWNoIGVycm9ycyBhcmUgZXhwZWN0ZWQsIGJ1dCBub3QgZ3VhcmFudGVlZCwgdG8gcmVzb2x2ZSB0aGVtc2VsdmVzIGV2ZW50dWFsbHkgdGhyb3VnaCRyZXRyeWluZy4sUXVldWVQYXVzZWQABwzsVGhlIHF1ZXVlIGlzIHBhdXNlZCBhbmQgbm8gbWVzc2FnZSBjYW4gYmUgZXhlY3V0ZWQgZnJvbSBpdC4AHQFUaGlzIGNhbiBjaGFuZ2UgYXQgYW55IHRpbWUgYW5kIG1heSByZXNvbHZlIGluIHRoZSBmdXR1cmUgYnkgcmUtdHJ5aW5nLkxSZWN1cnNpdmVEaXNhbGxvd2VkAAgEMQFBbm90aGVyIGNhbGwgaXMgaW4gcHJvZ3Jlc3MgYW5kIG5lZWRzIHRvIGZpbmlzaCBiZWZvcmUgdGhpcyBjYWxsIGNhbiBoYXBwZW4uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LgEHDCxwYWxsZXRfc3VkbxhwYWxsZXQURXJyb3IEBFQAAQQsUmVxdWlyZVN1ZG8AAASAU2VuZGVyIG11c3QgYmUgdGhlIFN1ZG8gYWNjb3VudC4EaEVycm9yIGZvciB0aGUgU3VkbyBwYWxsZXQuBQcISHNwX2NvbnNlbnN1c19zbG90czBTbG90RHVyYXRpb24AAAQAKAEMdTY0AAAJBxAoc3BfcnVudGltZRxnZW5lcmljFGJsb2NrJExhenlCbG9jawgYSGVhZGVyAVwkRXh0cmluc2ljAdkEAAgBGGhlYWRlclwBGEhlYWRlcgABKGV4dHJpbnNpY3MNBwFQVmVjPE9wYXF1ZUV4dHJpbnNpYz4AAA0HAAACEQcAEQcIKHNwX3J1bnRpbWU8T3BhcXVlRXh0cmluc2ljAAAEABgBHFZlYzx1OD4AABUHCChzcF9ydW50aW1lWEV4dHJpbnNpY0luY2x1c2lvbk1vZGUAAQg0QWxsRXh0cmluc2ljcwAAADRPbmx5SW5oZXJlbnRzAAEAABkHCBxzcF9jb3JlOE9wYXF1ZU1ldGFkYXRhAAAEABgBHFZlYzx1OD4AAB0HBBhPcHRpb24EBFQBGQcBCBBOb25lAAAAEFNvbWUEABkHAAABAAAhBwAAAjgAJQcEGFJlc3VsdAgEVAEhBARFASkHAQgIT2sEACEEAAAAAAxFcnIEACkHAAABAAApBwwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eWBUcmFuc2FjdGlvblZhbGlkaXR5RXJyb3IAAQgcSW52YWxpZAQALQcBSEludmFsaWRUcmFuc2FjdGlvbgAAABxVbmtub3duBAAxBwFIVW5rbm93blRyYW5zYWN0aW9uAAEAAC0HDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5SEludmFsaWRUcmFuc2FjdGlvbgABNBBDYWxsAAAAHFBheW1lbnQAAQAYRnV0dXJlAAIAFFN0YWxlAAMAIEJhZFByb29mAAQAREFuY2llbnRCaXJ0aEJsb2NrAAUAREV4aGF1c3RzUmVzb3VyY2VzAAYAGEN1c3RvbQQADAEIdTgABwAwQmFkTWFuZGF0b3J5AAgATE1hbmRhdG9yeVZhbGlkYXRpb24ACQAkQmFkU2lnbmVyAAoAVEluZGV0ZXJtaW5hdGVJbXBsaWNpdAALADRVbmtub3duT3JpZ2luAAwAADEHDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5SFVua25vd25UcmFuc2FjdGlvbgABDDBDYW5ub3RMb29rdXAAAABMTm9VbnNpZ25lZFZhbGlkYXRvcgABABhDdXN0b20EAAwBCHU4AAIAADUHCDBzcF9pbmhlcmVudHMwSW5oZXJlbnREYXRhAAAEARBkYXRhOQcBlEJUcmVlTWFwPEluaGVyZW50SWRlbnRpZmllciwgVmVjPHU4Pj4AADkHBCBCVHJlZU1hcAgESwE1AgRWARgABAA9BwAAAD0HAAACQQcAQQcAAAQINQIYAEUHCDBzcF9pbmhlcmVudHNQQ2hlY2tJbmhlcmVudHNSZXN1bHQAAAwBEG9rYXldAQEQYm9vbAABLGZhdGFsX2Vycm9yXQEBEGJvb2wAARhlcnJvcnM1BwEwSW5oZXJlbnREYXRhAABJBwwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eURUcmFuc2FjdGlvblNvdXJjZQABDBxJbkJsb2NrAAAAFExvY2FsAAEAIEV4dGVybmFsAAIAAE0HBBhSZXN1bHQIBFQBUQcERQEpBwEICE9rBABRBwAAAAAMRXJyBAApBwAAAQAAUQcMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlAVmFsaWRUcmFuc2FjdGlvbgAAFAEgcHJpb3JpdHkoAUxUcmFuc2FjdGlvblByaW9yaXR5AAEgcmVxdWlyZXM0AUxWZWM8VHJhbnNhY3Rpb25UYWc+AAEgcHJvdmlkZXM0AUxWZWM8VHJhbnNhY3Rpb25UYWc+AAEkbG9uZ2V2aXR5KAFQVHJhbnNhY3Rpb25Mb25nZXZpdHkAASRwcm9wYWdhdGVdAQEQYm9vbAAAVQcMKHNwX3Nlc3Npb24scnVudGltZV9hcGloT3BhcXVlR2VuZXJhdGVkU2Vzc2lvbktleXMAAAgBEGtleXMYARxWZWM8dTg+AAEUcHJvb2YYARxWZWM8dTg+AABZBwQYT3B0aW9uBARUAV0HAQgQTm9uZQAAABBTb21lBABdBwAAAQAAXQcAAAJhBwBhBwAABAgYNQYAZQcMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzTFJ1bnRpbWVEaXNwYXRjaEluZm8IHEJhbGFuY2UB/BhXZWlnaHQBKQEADAEYd2VpZ2h0KQEBGFdlaWdodAABFGNsYXNz+QMBNERpc3BhdGNoQ2xhc3MAASxwYXJ0aWFsX2ZlZfwBHEJhbGFuY2UAAGkHDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlcyhGZWVEZXRhaWxzBBxCYWxhbmNlAfwACAE0aW5jbHVzaW9uX2ZlZW0HAXRPcHRpb248SW5jbHVzaW9uRmVlPEJhbGFuY2U+PgABDHRpcPwBHEJhbGFuY2UAAG0HBBhPcHRpb24EBFQBcQcBCBBOb25lAAAAEFNvbWUEAHEHAAABAABxBwxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXMwSW5jbHVzaW9uRmVlBBxCYWxhbmNlAfwADAEgYmFzZV9mZWX8ARxCYWxhbmNlAAEcbGVuX2ZlZfwBHEJhbGFuY2UAAUxhZGp1c3RlZF93ZWlnaHRfZmVl/AEcQmFsYW5jZQAAdQcEGFJlc3VsdAgEVAF5BwRFAX0HAQgIT2sEAHkHAAAAAAxFcnIEAH0HAAABAAB5BwAAAoEDAH0HDEB4Y21fcnVudGltZV9hcGlzEGZlZXMURXJyb3IAARg0VW5pbXBsZW1lbnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEATFdlaWdodE5vdENvbXB1dGFibGUAAgBMVW5oYW5kbGVkWGNtVmVyc2lvbgADADRBc3NldE5vdEZvdW5kAAQAKFVucm91dGFibGUABQAAgQcEGFJlc3VsdAgEVAEpAQRFAX0HAQgIT2sEACkBAAAAAAxFcnIEAH0HAAABAACFBwQYUmVzdWx0CARUAfwERQF9BwEICE9rBAD8AAAAAAxFcnIEAH0HAAABAACJBwQYUmVzdWx0CARUAU0DBEUBfQcBCAhPawQATQMAAAAADEVycgQAfQcAAAEAAI0HBBhSZXN1bHQIBFQBkQcERQG1BwEICE9rBACRBwAAAAAMRXJyBAC1BwAAAQAAkQcMQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkRDYWxsRHJ5UnVuRWZmZWN0cwQURXZlbnQB7QMAEAFAZXhlY3V0aW9uX3Jlc3VsdJUHAWhEaXNwYXRjaFJlc3VsdFdpdGhQb3N0SW5mbwABOGVtaXR0ZWRfZXZlbnRzoQcBKFZlYzxFdmVudD4AASRsb2NhbF94Y22lBwFgT3B0aW9uPFZlcnNpb25lZFhjbTwoKT4+AAE4Zm9yd2FyZGVkX3hjbXOpBwG8VmVjPChWZXJzaW9uZWRMb2NhdGlvbiwgVmVjPFZlcnNpb25lZFhjbTwoKT4+KT4AAJUHBBhSZXN1bHQIBFQBmQcERQGdBwEICE9rBACZBwAAAAAMRXJyBACdBwAAAQAAmQcMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUG9zdERpc3BhdGNoSW5mbwAACAE0YWN0dWFsX3dlaWdodBkDAThPcHRpb248V2VpZ2h0PgABIHBheXNfZmVl/QMBEFBheXMAAJ0HCChzcF9ydW50aW1lZERpc3BhdGNoRXJyb3JXaXRoUG9zdEluZm8EEEluZm8BmQcACAEkcG9zdF9pbmZvmQcBEEluZm8AARRlcnJvcgEEATREaXNwYXRjaEVycm9yAAChBwAAAu0DAKUHBBhPcHRpb24EBFQBDQIBCBBOb25lAAAAEFNvbWUEAA0CAAABAACpBwAAAq0HAK0HAAAECMEBsQcAsQcAAAINAgC1BwxAeGNtX3J1bnRpbWVfYXBpcxxkcnlfcnVuFEVycm9yAAEINFVuaW1wbGVtZW50ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAAC5BwQYUmVzdWx0CARUAb0HBEUBtQcBCAhPawQAvQcAAAAADEVycgQAtQcAAAEAAL0HDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5AWGNtRHJ5UnVuRWZmZWN0cwQURXZlbnQB7QMADAFAZXhlY3V0aW9uX3Jlc3VsdGUEARxPdXRjb21lAAE4ZW1pdHRlZF9ldmVudHOhBwEoVmVjPEV2ZW50PgABOGZvcndhcmRlZF94Y21zqQcBvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AADBBwQYUmVzdWx0CARUAQQERQHFBwEICE9rBAAEAAAAAAxFcnIEAMUHAAABAADFBwxAeGNtX3J1bnRpbWVfYXBpcyxjb252ZXJzaW9ucxRFcnJvcgABCCxVbnN1cHBvcnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAAMkHCAx4Y204VmVyc2lvbmVkQXNzZXQAAQwIVjMEACUCATh2Mzo6TXVsdGlBc3NldAADAAhWNAQAmQIBJHY0OjpBc3NldAAEAAhWNQQA5QIBJHY1OjpBc3NldAAFAADNBwQYUmVzdWx0CARUAV0BBEUB0QcBCAhPawQAXQEAAAAADEVycgQA0QcAAAEAANEHDEB4Y21fcnVudGltZV9hcGlzNHRydXN0ZWRfcXVlcnkURXJyb3IAAQh4VmVyc2lvbmVkQXNzZXRDb252ZXJzaW9uRmFpbGVkAAAAhFZlcnNpb25lZExvY2F0aW9uQ29udmVyc2lvbkZhaWxlZAABAADVBwQYUmVzdWx0CARUAdkGBEUB2QcBCAhPawQA2QYAAAAADEVycgQA2QcAAAEAANkHDEB4Y21fcnVudGltZV9hcGlzSGF1dGhvcml6ZWRfYWxpYXNlcxRFcnJvcgABBHxMb2NhdGlvblZlcnNpb25Db252ZXJzaW9uRmFpbGVkAAAAAN0HBBhSZXN1bHQIBFQBXQEERQHZBwEICE9rBABdAQAAAAAMRXJyBADZBwAAAQAA4QcIXGN1bXVsdXNfcHJpbWl0aXZlc19jb3JlNENvbGxhdGlvbkluZm8AABgBPHVwd2FyZF9tZXNzYWdlczQBSFZlYzxVcHdhcmRNZXNzYWdlPgABTGhvcml6b250YWxfbWVzc2FnZXNVBQFgVmVjPE91dGJvdW5kSHJtcE1lc3NhZ2U+AAFMbmV3X3ZhbGlkYXRpb25fY29kZeUHAYxPcHRpb248cmVsYXlfY2hhaW46OlZhbGlkYXRpb25Db2RlPgABbHByb2Nlc3NlZF9kb3dud2FyZF9tZXNzYWdlczgBDHUzMgABOGhybXBfd2F0ZXJtYXJrOAFgcmVsYXlfY2hhaW46OkJsb2NrTnVtYmVyAAEkaGVhZF9kYXRhTAEgSGVhZERhdGEAAOUHBBhPcHRpb24EBFQB6QcBCBBOb25lAAAAEFNvbWUEAOkHAAABAADpBwx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlczhWYWxpZGF0aW9uQ29kZQAABAAYARxWZWM8dTg+AADtBwAAAvEHAPEHCHBzcF90cmFuc2FjdGlvbl9zdG9yYWdlX3Byb29mWEluZGV4ZWRUcmFuc2FjdGlvbkluZm8AABQBMGNvbnRlbnRfaGFzaAgBLENvbnRlbnRIYXNoAAEQc2l6ZTgBDHUzMgABHGhhc2hpbmf1BwFASGFzaGluZ0FsZ29yaXRobQABJGNpZF9jb2RlYygBIENpZENvZGVjAAE8ZXh0cmluc2ljX2luZGV4OAEMdTMyAAD1Bwhwc3BfdHJhbnNhY3Rpb25fc3RvcmFnZV9wcm9vZkBIYXNoaW5nQWxnb3JpdGhtAAEMKEJsYWtlMmIyNTYAAAAgU2hhMl8yNTYAAQAkS2VjY2FrMjU2AAIAAPkHBBhPcHRpb24EBFQB/QcBCBBOb25lAAAAEFNvbWUEAP0HAAABAAD9Bwi8cGFsbGV0X2J1bGxldGluX3RyYW5zYWN0aW9uX3N0b3JhZ2VfcnVudGltZV9hcGlQQWNjb3VudEF1dGhvcml6YXRpb24ELEJsb2NrTnVtYmVyATgAGAEoZXhwaXJlc19hdDgBLEJsb2NrTnVtYmVyAAE8Ynl0ZXNfYWxsb3dhbmNlKAEMdTY0AAEoYnl0ZXNfdXNlZCgBDHU2NAABUGJ5dGVzX3Blcm1hbmVudF91c2VkKAEMdTY0AAFYdHJhbnNhY3Rpb25zX2FsbG93YW5jZTgBDHUzMgABRHRyYW5zYWN0aW9uc191c2VkOAEMdTMyAAABCAQYUmVzdWx0CARUARAERQGdBAEICE9rBAAQAAAAAAxFcnIEAJ0EAAABAAAFCAQYT3B0aW9uBARUAZ0EAQgQTm9uZQAAABBTb21lBACdBAAAAQAACQgAAAKdBAANCAhYYnVsbGV0aW5fcGFzZW9fcnVudGltZTBSdW50aW1lRXJyb3IAATQYU3lzdGVtBADNBAFwZnJhbWVfc3lzdGVtOjpFcnJvcjxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAGkFAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFcnJvcjxSdW50aW1lPgABABxVdGlsaXR5BABtBQF4cGFsbGV0X3V0aWxpdHk6OkVycm9yPFJ1bnRpbWU+AAYAUE11bHRpQmxvY2tNaWdyYXRpb25zBABxBQGEcGFsbGV0X21pZ3JhdGlvbnM6OkVycm9yPFJ1bnRpbWU+AAcAIEJhbGFuY2VzBAC5BQF8cGFsbGV0X2JhbGFuY2VzOjpFcnJvcjxSdW50aW1lPgAKAEhUcmFuc2FjdGlvblN0b3JhZ2UEAOkFAcxwYWxsZXRfYnVsbGV0aW5fdHJhbnNhY3Rpb25fc3RvcmFnZTo6RXJyb3I8UnVudGltZT4AKAAsRGF0YVJlbmV3YWwEAP0FAbBwYWxsZXRfYnVsbGV0aW5fZGF0YV9yZW5ld2FsOjpFcnJvcjxSdW50aW1lPgAqAERDb2xsYXRvclNlbGVjdGlvbgQAFQYBpHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb246OkVycm9yPFJ1bnRpbWU+ABUAHFNlc3Npb24EADkGAXhwYWxsZXRfc2Vzc2lvbjo6RXJyb3I8UnVudGltZT4AFgAkWGNtcFF1ZXVlBAB1BgGkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTo6RXJyb3I8UnVudGltZT4AHgAsUG9sa2Fkb3RYY20EAN0GAWhwYWxsZXRfeGNtOjpFcnJvcjxSdW50aW1lPgAfADBNZXNzYWdlUXVldWUEAP0GAZBwYWxsZXRfbWVzc2FnZV9xdWV1ZTo6RXJyb3I8UnVudGltZT4AIgAQU3VkbwQAAQcBbHBhbGxldF9zdWRvOjpFcnJvcjxSdW50aW1lPgBkAABcGFN5c3RlbQEYU3lzdGVtUBxBY2NvdW50AQEEAgTVA0EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAE6CBUaGUgZnVsbCBhY2NvdW50IGluZm9ybWF0aW9uIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudCBJRC4AOEV4dHJpbnNpY0NvdW50AAA4BAAEuCBUb3RhbCBleHRyaW5zaWNzIGNvdW50IGZvciB0aGUgY3VycmVudCBibG9jay4AQEluaGVyZW50c0FwcGxpZWQBAF0BBAAEpCBXaGV0aGVyIGFsbCBpbmhlcmVudHMgaGF2ZSBiZWVuIGFwcGxpZWQuACxCbG9ja1dlaWdodAEA4QMYAAAAAAAABIggVGhlIGN1cnJlbnQgd2VpZ2h0IGZvciB0aGUgYmxvY2suACRCbG9ja1NpemUAADgEAAywIFRvdGFsIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgY3VycmVudCBibG9jay4AyCBUcmFja3MgdGhlIHNpemUgb2YgdGhlIGhlYWRlciBhbmQgYWxsIGV4dHJpbnNpY3MuACRCbG9ja0hhc2gBAQQFODyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEmCBNYXAgb2YgYmxvY2sgbnVtYmVycyB0byBibG9jayBoYXNoZXMuADRFeHRyaW5zaWNEYXRhAQEEBTgYBAAEPQEgRXh0cmluc2ljcyBkYXRhIGZvciB0aGUgY3VycmVudCBibG9jayAobWFwcyBhbiBleHRyaW5zaWMncyBpbmRleCB0byBpdHMgZGF0YSkuABhOdW1iZXIBADgQAAAAAAQJASBUaGUgY3VycmVudCBibG9jayBudW1iZXIgYmVpbmcgcHJvY2Vzc2VkLiBTZXQgYnkgYGV4ZWN1dGVfYmxvY2tgLgAoUGFyZW50SGFzaAEAPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARwIEhhc2ggb2YgdGhlIHByZXZpb3VzIGJsb2NrLgAYRGlnZXN0AQBkBAAE8CBEaWdlc3Qgb2YgdGhlIGN1cnJlbnQgYmxvY2ssIGFsc28gcGFydCBvZiB0aGUgYmxvY2sgaGVhZGVyLgAYRXZlbnRzAQDlAwQAHKAgRXZlbnRzIGRlcG9zaXRlZCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suAB0BIE5PVEU6IFRoZSBpdGVtIGlzIHVuYm91bmQgYW5kIHNob3VsZCB0aGVyZWZvcmUgbmV2ZXIgYmUgcmVhZCBvbiBjaGFpbi7QIEl0IGNvdWxkIG90aGVyd2lzZSBpbmZsYXRlIHRoZSBQb1Ygc2l6ZSBvZiBhIGJsb2NrLgAtASBFdmVudHMgaGF2ZSBhIGxhcmdlIGluLW1lbW9yeSBzaXplLiBCb3ggdGhlIGV2ZW50cyB0byBub3QgZ28gb3V0LW9mLW1lbW9yefwganVzdCBpbiBjYXNlIHNvbWVvbmUgc3RpbGwgcmVhZHMgdGhlbSBmcm9tIHdpdGhpbiB0aGUgcnVudGltZS4AKEV2ZW50Q291bnQBADgQAAAAAAS4IFRoZSBudW1iZXIgb2YgZXZlbnRzIGluIHRoZSBgRXZlbnRzPFQ+YCBsaXN0LgAsRXZlbnRUb3BpY3MBAQQCPI0EBAAoJQEgTWFwcGluZyBiZXR3ZWVuIGEgdG9waWMgKHJlcHJlc2VudGVkIGJ5IFQ6Okhhc2gpIGFuZCBhIHZlY3RvciBvZiBpbmRleGVzlCBvZiBldmVudHMgaW4gdGhlIGA8RXZlbnRzPFQ+PmAgbGlzdC4AUQEgQWxsIHRvcGljIHZlY3RvcnMgaGF2ZSBkZXRlcm1pbmlzdGljIHN0b3JhZ2UgbG9jYXRpb25zIGRlcGVuZGluZyBvbiB0aGUgdG9waWMuIFRoaXNFASBhbGxvd3MgbGlnaHQtY2xpZW50cyB0byBsZXZlcmFnZSB0aGUgY2hhbmdlcyB0cmllIHN0b3JhZ2UgdHJhY2tpbmcgbWVjaGFuaXNtIGFuZOQgaW4gY2FzZSBvZiBjaGFuZ2VzIGZldGNoIHRoZSBsaXN0IG9mIGV2ZW50cyBvZiBpbnRlcmVzdC4AWQEgVGhlIHZhbHVlIGhhcyB0aGUgdHlwZSBgKEJsb2NrTnVtYmVyRm9yPFQ+LCBFdmVudEluZGV4KWAgYmVjYXVzZSBpZiB3ZSB1c2VkIG9ubHkganVzdE0BIHRoZSBgRXZlbnRJbmRleGAgdGhlbiBpbiBjYXNlIGlmIHRoZSB0b3BpYyBoYXMgdGhlIHNhbWUgY29udGVudHMgb24gdGhlIG5leHQgYmxvY2sBASBubyBub3RpZmljYXRpb24gd2lsbCBiZSB0cmlnZ2VyZWQgdGh1cyB0aGUgZXZlbnQgbWlnaHQgYmUgbG9zdC4ASExhc3RSdW50aW1lVXBncmFkZQAAlQQEAARVASBTdG9yZXMgdGhlIGBzcGVjX3ZlcnNpb25gIGFuZCBgc3BlY19uYW1lYCBvZiB3aGVuIHRoZSBsYXN0IHJ1bnRpbWUgdXBncmFkZSBoYXBwZW5lZC4AREJsb2Nrc1RpbGxVcGdyYWRlAAAMBAAE7CBOdW1iZXIgb2YgYmxvY2tzIHRpbGwgdGhlIHBlbmRpbmcgY29kZSB1cGdyYWRlIGlzIGFwcGxpZWQuAFRVcGdyYWRlZFRvVTMyUmVmQ291bnQBAF0BBAAETQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgYHR5cGUgUmVmQ291bnRgIGlzIGB1MzJgLiBGYWxzZSAoZGVmYXVsdCkgaWYgbm90LgBgVXBncmFkZWRUb1RyaXBsZVJlZkNvdW50AQBdAQQACF0BIFRydWUgaWYgd2UgaGF2ZSB1cGdyYWRlZCBzbyB0aGF0IEFjY291bnRJbmZvIGNvbnRhaW5zIHRocmVlIHR5cGVzIG9mIGBSZWZDb3VudGAuIEZhbHNlSCAoZGVmYXVsdCkgaWYgbm90LgA4RXhlY3V0aW9uUGhhc2UAAIUEBAAEiCBUaGUgZXhlY3V0aW9uIHBoYXNlIG9mIHRoZSBibG9jay4AREF1dGhvcml6ZWRVcGdyYWRlAAChBAQABLggYFNvbWVgIGlmIGEgY29kZSB1cGdyYWRlIGhhcyBiZWVuIGF1dGhvcml6ZWQuAGBFeHRyaW5zaWNXZWlnaHRSZWNsYWltZWQBACkBCAAAHKAgVGhlIHdlaWdodCByZWNsYWltZWQgZm9yIHRoZSBleHRyaW5zaWMuACEBIFRoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIHVudGlsIHRoZSBlbmQgb2YgdGhlIGV4dHJpbnNpYyBleGVjdXRpb24uIQEgTW9yZSBwcmVjaXNlbHkgdGhpcyBpbmZvcm1hdGlvbiBpcyByZW1vdmVkIGluIGBub3RlX2FwcGxpZWRfZXh0cmluc2ljYC4AcQEgTG9naWMgZG9pbmcgc29tZSBwb3N0IGRpc3BhdGNoIHdlaWdodCByZWR1Y3Rpb24gbXVzdCB1cGRhdGUgdGhpcyBzdG9yYWdlIHRvIGF2b2lkIGR1cGxpY2F0ZSwgcmVkdWN0aW9uLgABJAAB8QMAGDBCbG9ja1dlaWdodHOlBIkBBwDyBSoBAAsAIEqp0QECAIACAmXNHQABC8AOcsiLAQIAIAIBCwBQXBijAQIAQAIBAAACZc0dAAELwN5fWboBAgBgAgELACBKqdEBAgCAAgEHANDtkC4CAEAAAmXNHQAAAAAE0CBCbG9jayAmIGV4dHJpbnNpY3Mgd2VpZ2h0czogYmFzZSB2YWx1ZXMgYW5kIGxpbWl0cy4ALEJsb2NrTGVuZ3RosQQ0AACQAAAAoAAAAKAAAASoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIGJsb2NrIChpbiBieXRlcykuADhCbG9ja0hhc2hDb3VudDgQABAAAARVASBNYXhpbXVtIG51bWJlciBvZiBibG9jayBudW1iZXIgdG8gYmxvY2sgaGFzaCBtYXBwaW5ncyB0byBrZWVwIChvbGRlc3QgcHJ1bmVkIGZpcnN0KS4AIERiV2VpZ2h0uQRAQHh9AQAAAAAA4fUFAAAAAAQJASBUaGUgd2VpZ2h0IG9mIHJ1bnRpbWUgZGF0YWJhc2Ugb3BlcmF0aW9ucyB0aGUgcnVudGltZSBjYW4gaW52b2tlLgAcVmVyc2lvbr0EEQU4YnVsbGV0aW4tcGFzZW84YnVsbGV0aW4tcGFzZW8BAAAAIJQeAAAAAABc3XGNXMUyYtQBAAAABOcFIaDT0vgCAAAA173YonLKDWUCAAAA32rLaJkHYJsFAAAAN+OX/HyR9eQCAAAAQP461AH4lZoGAAAA0ryYl+7QjxUDAAAA94sni+U/RUwCAAAAqzwFcikf64sCAAAAvJ2JkE9bkj8BAAAAN8i7E1CpoqgEAAAA8/8U1atScFkDAAAAb/Uu6Fjmxb0CAAAAkbHIsWMo65ICAAAAn/tQWqc41pwBAAAAJgm+g6xEaNwBAAAAEsjj1NfgbeABAAAA6pPj8W89aWIDAAAAOxz8RA3SP0kCAAAAk+XLiGo4a5UBAAAAyi+/P8t9tWkBAAAA+8V3uddH79YBAAAAot22pYR3v2MBAAAAAQAAAAEEhCBHZXQgdGhlIGNoYWluJ3MgaW4tY29kZSB2ZXJzaW9uLgAoU1M1OFByZWZpeMQIKgAUqCBUaGUgZGVzaWduYXRlZCBTUzU4IHByZWZpeCBvZiB0aGlzIGNoYWluLgA5ASBUaGlzIHJlcGxhY2VzIHRoZSAic3M1OEZvcm1hdCIgcHJvcGVydHkgZGVjbGFyZWQgaW4gdGhlIGNoYWluIHNwZWMuIFJlYXNvbiBpczEBIHRoYXQgdGhlIHJ1bnRpbWUgc2hvdWxkIGtub3cgYWJvdXQgdGhlIHByZWZpeCBpbiBvcmRlciB0byBtYWtlIHVzZSBvZiBpdCBhc3AgYW4gaWRlbnRpZmllciBvZiB0aGUgY2hhaW4uAAHNBAAcLFJ1bnRpbWVDYWxsIASMIFRoZSBhZ2dyZWdhdGVkIGBSdW50aW1lQ2FsbGAgdHlwZS4UTm9uY2U4BEkBIFRoaXMgc3RvcmVzIHRoZSBudW1iZXIgb2YgcHJldmlvdXMgdHJhbnNhY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBhIHNlbmRlciBhY2NvdW50LhBIYXNoPASYIFRoZSBvdXRwdXQgb2YgdGhlIGBIYXNoaW5nYCBmdW5jdGlvbi4cSGFzaGluZ9EEBCEBIFRoZSBoYXNoaW5nIHN5c3RlbSAoYWxnb3JpdGhtKSBiZWluZyB1c2VkIGluIHRoZSBydW50aW1lIChlLmcuIEJsYWtlMikuJEFjY291bnRJZAQEyCBUaGUgdXNlciBhY2NvdW50IGlkZW50aWZpZXIgdHlwZSBmb3IgdGhlIHJ1bnRpbWUuFEJsb2Nr1QQIYQEgVGhlIEJsb2NrIHR5cGUgdXNlZCBieSB0aGUgcnVudGltZS4gVGhpcyBpcyB1c2VkIGJ5IGBjb25zdHJ1Y3RfcnVudGltZWAgdG8gcmV0cmlldmUgdGhlzCBleHRyaW5zaWNzIG9yIG90aGVyIGJsb2NrIHNwZWNpZmljIGRhdGEgYXMgbmVlZGVkLixBY2NvdW50RGF0YdkDCGEBIERhdGEgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGFuIGFjY291bnQgKG90aGVyIHRoYW4gbm9uY2UvdHJhbnNhY3Rpb24gY291bnRlciwgd2hpY2ggdGhpc2QgcGFsbGV0IGRvZXMgcmVnYXJkbGVzcykuAAAAADxQYXJhY2hhaW5TeXN0ZW0BPFBhcmFjaGFpblN5c3RlbXw8QmxvY2tXZWlnaHRNb2RlAADpBAQAGHwgVGhlIGN1cnJlbnQgYmxvY2sgd2VpZ2h0IG1vZGUuAHUBIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBpcyB0aGUgbWF4aW11bSBhbGxvd2VkIGJsb2NrIHdlaWdodCwgZm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlSCBbYGJsb2NrX3dlaWdodGBdLgAlASBLaWxsZWQgaW4gW2BTZWxmOjpvbl9pbml0aWFsaXplYF0gYW5kIHNldCBieSB0aGUgW2BibG9ja193ZWlnaHRgXSBsb2dpYy4ARFByZXZpb3VzQ29yZUNvdW50AADtBAQADAUBIFRoZSBjb3JlIGNvdW50IGF2YWlsYWJsZSB0byB0aGUgcGFyYWNoYWluIGluIHRoZSBwcmV2aW91cyBibG9jay4AdQEgVGhpcyBpcyBtYWlubHkgdXNlZCBmb3Igb2ZmY2hhaW4gZnVuY3Rpb25hbGl0eSB0byBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgdGFyZ2V0IGJsb2NrIHdlaWdodC4ARFVuaW5jbHVkZWRTZWdtZW50AQDxBAQAGEkBIExhdGVzdCBpbmNsdWRlZCBibG9jayBkZXNjZW5kYW50cyB0aGUgcnVudGltZSBhY2NlcHRlZC4gSW4gb3RoZXIgd29yZHMsIHRoZXNlIGFyZWEBIGFuY2VzdG9ycyBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBibG9jayB3aGljaCBoYXZlIG5vdCBiZWVuIGluY2x1ZGVkIGluIHRoZSBvYnNlcnZlZEwgcmVsYXktY2hhaW4gc3RhdGUuAHUBIFRoZSBzZWdtZW50IGxlbmd0aCBpcyBsaW1pdGVkIGJ5IHRoZSBjYXBhY2l0eSByZXR1cm5lZCBmcm9tIHRoZSBbYENvbnNlbnN1c0hvb2tgXSBjb25maWd1cmVkPCBpbiB0aGUgcGFsbGV0LgBsQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50AAAZBQQADGkBIFN0b3JhZ2UgZmllbGQgdGhhdCBrZWVwcyB0cmFjayBvZiBiYW5kd2lkdGggdXNlZCBieSB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGFsb25nIHdpdGggdGhlLQEgbGF0ZXN0IEhSTVAgd2F0ZXJtYXJrLiBVc2VkIGZvciBsaW1pdGluZyB0aGUgYWNjZXB0YW5jZSBvZiBuZXcgYmxvY2tzIHdpdGiQIHJlc3BlY3QgdG8gcmVsYXkgY2hhaW4gY29uc3RyYWludHMuAFRQZW5kaW5nVmFsaWRhdGlvbkNvZGUBABgEABhZASBJbiBjYXNlIG9mIGEgc2NoZWR1bGVkIHVwZ3JhZGUsIHRoaXMgc3RvcmFnZSBmaWVsZCBjb250YWlucyB0aGUgdmFsaWRhdGlvbiBjb2RlIHRvIGJlJCBhcHBsaWVkLgA9ASBBcyBzb29uIGFzIHRoZSByZWxheSBjaGFpbiBnaXZlcyB1cyB0aGUgZ28tYWhlYWQgc2lnbmFsLCB3ZSB3aWxsIG92ZXJ3cml0ZSB0aGVlASBbYDpwZW5kaW5nX2NvZGVgXVtzcF9jb3JlOjpzdG9yYWdlOjp3ZWxsX2tub3duX2tleXM6OlBFTkRJTkdfQ09ERV0gd2hpY2ggd2lsbCByZXN1bHQgdGhldQEgbmV4dCBibG9jayB0byBiZSBwcm9jZXNzZWQgd2l0aCB0aGUgbmV3IHZhbGlkYXRpb24gY29kZS4gVGhpcyBjb25jbHVkZXMgdGhlIHVwZ3JhZGUgcHJvY2Vzcy4ARE5ld1ZhbGlkYXRpb25Db2RlAAAYBAAUXQEgVmFsaWRhdGlvbiBjb2RlIHRoYXQgaXMgc2V0IGJ5IHRoZSBwYXJhY2hhaW4gYW5kIGlzIHRvIGJlIGNvbW11bmljYXRlZCB0byBjb2xsYXRvciBhbmR4IGNvbnNlcXVlbnRseSB0aGUgcmVsYXktY2hhaW4uAGUBIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jayBpZiBubyBvdGhlciBwYWxsZXQgYWxyZWFkeSBzZXQsIHRoZSB2YWx1ZS4AOFZhbGlkYXRpb25EYXRhAABIBAAM0CBUaGUgW2BQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YWBdIHNldCBmb3IgdGhpcyBibG9jay4AcQEgVGhpcyB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBzZXQgb25seSBvbmNlIGJ5IHRoZSBbYFBhbGxldDo6c2V0X3ZhbGlkYXRpb25fZGF0YWBdIGluaGVyZW50LgBQRGlkU2V0VmFsaWRhdGlvbkNvZGUBAF0BBAAE4CBXZXJlIHRoZSB2YWxpZGF0aW9uIGRhdGEgc2V0IHRvIG5vdGlmeSB0aGUgcmVsYXkgY2hhaW4/AGRMYXN0UmVsYXlDaGFpbkJsb2NrTnVtYmVyAQA4EAAAAAAMHQEgVGhlIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhlIGxhc3QgcGFyYWNoYWluIGJsb2NrLgCIIFRoaXMgaXMgdXBkYXRlZCBpbiBgb25fZmluYWxpemVgLgBgVXBncmFkZVJlc3RyaWN0aW9uU2lnbmFsAQAdBQQAHHUBIEFuIG9wdGlvbiB3aGljaCBpbmRpY2F0ZXMgaWYgdGhlIHJlbGF5LWNoYWluIHJlc3RyaWN0cyBzaWduYWxsaW5nIGEgdmFsaWRhdGlvbiBjb2RlIHVwZ3JhZGUuYQEgSW4gb3RoZXIgd29yZHMsIGlmIHRoaXMgaXMgYFNvbWVgIGFuZCBbYE5ld1ZhbGlkYXRpb25Db2RlYF0gaXMgYFNvbWVgIHRoZW4gdGhlIHByb2R1Y2VkbCBjYW5kaWRhdGUgd2lsbCBiZSBpbnZhbGlkLgBxASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBhIG1pcnJvciBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGZyb20gdGhlbQEgcmVsYXktY2hhaW4uIFRoaXMgdmFsdWUgaXMgZXBoZW1lcmFsIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgaGl0IHRoZSBzdG9yYWdlLiBUaGlzIHZhbHVlIGlzYCBzZXQgYWZ0ZXIgdGhlIGluaGVyZW50LgA4VXBncmFkZUdvQWhlYWQBABEFBAAU3CBPcHRpb25hbCB1cGdyYWRlIGdvLWFoZWFkIHNpZ25hbCBmcm9tIHRoZSByZWxheS1jaGFpbi4AcQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgYSBtaXJyb3Igb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZm9yIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBmcm9tIHRoZW0BIHJlbGF5LWNoYWluLiBUaGlzIHZhbHVlIGlzIGVwaGVtZXJhbCB3aGljaCBtZWFucyBpdCBkb2Vzbid0IGhpdCB0aGUgc3RvcmFnZS4gVGhpcyB2YWx1ZSBpc2Agc2V0IGFmdGVyIHRoZSBpbmhlcmVudC4APFJlbGF5U3RhdGVQcm9vZgAAUAQAGMQgVGhlIHN0YXRlIHByb29mIGZvciB0aGUgbGFzdCByZWxheSBwYXJlbnQgYmxvY2suAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AWFJlbGV2YW50TWVzc2FnaW5nU3RhdGUAACUFBAAcZQEgVGhlIHNuYXBzaG90IG9mIHNvbWUgc3RhdGUgcmVsYXRlZCB0byBtZXNzYWdpbmcgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgcGFyYWNoYWluIGFzIHBlckggdGhlIHJlbGF5IHBhcmVudC4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgBESG9zdENvbmZpZ3VyYXRpb24AADkFBAAYKQEgVGhlIHBhcmFjaGFpbiBob3N0IGNvbmZpZ3VyYXRpb24gdGhhdCB3YXMgb2J0YWluZWQgZnJvbSB0aGUgcmVsYXkgcGFyZW50LgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuADhMYXN0RG1xTXFjSGVhZAEAQQWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ9CBUaGUgbGFzdCBkb3dud2FyZCBtZXNzYWdlIHF1ZXVlIGNoYWluIGhlYWQgd2UgaGF2ZSBvYnNlcnZlZC4AZQEgVGhpcyB2YWx1ZSBpcyBsb2FkZWQgYmVmb3JlIGFuZCBzYXZlZCBhZnRlciBwcm9jZXNzaW5nIGluYm91bmQgZG93bndhcmQgbWVzc2FnZXMgY2FycmllZGAgYnkgdGhlIHN5c3RlbSBpbmhlcmVudC4AQExhc3RIcm1wTXFjSGVhZHMBAEUFBAAQSQEgVGhlIG1lc3NhZ2UgcXVldWUgY2hhaW4gaGVhZHMgd2UgaGF2ZSBvYnNlcnZlZCBwZXIgZWFjaCBjaGFubmVsIGluY29taW5nIGNoYW5uZWwuAGUBIFRoaXMgdmFsdWUgaXMgbG9hZGVkIGJlZm9yZSBhbmQgc2F2ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBpbmJvdW5kIGRvd253YXJkIG1lc3NhZ2VzIGNhcnJpZWRgIGJ5IHRoZSBzeXN0ZW0gaW5oZXJlbnQuAGRQcm9jZXNzZWREb3dud2FyZE1lc3NhZ2VzAQA4EAAAAAAMyCBOdW1iZXIgb2YgZG93bndhcmQgbWVzc2FnZXMgcHJvY2Vzc2VkIGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgBwTGFzdFByb2Nlc3NlZERvd253YXJkTWVzc2FnZQAAUQUEAAyUIFRoZSBsYXN0IHByb2Nlc3NlZCBkb3dud2FyZCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgA0SHJtcFdhdGVybWFyawEAOBAAAAAABKAgSFJNUCB3YXRlcm1hcmsgdGhhdCB3YXMgc2V0IGluIGEgYmxvY2suAGBMYXN0UHJvY2Vzc2VkSHJtcE1lc3NhZ2UAAFEFBAAMhCBUaGUgbGFzdCBwcm9jZXNzZWQgSFJNUCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgBQSHJtcE91dGJvdW5kTWVzc2FnZXMBAFUFBAAMpCBIUk1QIG1lc3NhZ2VzIHRoYXQgd2VyZSBzZW50IGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgA4VXB3YXJkTWVzc2FnZXMBADQEAAysIFVwd2FyZCBtZXNzYWdlcyB0aGF0IHdlcmUgc2VudCBpbiBhIGJsb2NrLgDwIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBmb3IgZWFjaCBuZXcgYmxvY2suAFRQZW5kaW5nVXB3YXJkTWVzc2FnZXMBADQEAAQxASBVcHdhcmQgbWVzc2FnZXMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4AUFBlbmRpbmdVcHdhcmRTaWduYWxzAQA0BAAMLQEgVXB3YXJkIHNpZ25hbHMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4A2CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25fZmluYWxpemVgIGZvciBlYWNoIGJsb2NrLgBMUGVuZGluZ0FwcHJvdmVkUGVlcgAAeAQABDkBIFRoZSBhcHByb3ZlZCBwZWVyIGlkIHRvIGJlIHNlbnQgYXMgYSBVTVAgc2lnbmFsIG9uIHRoZSBsYXN0IGJsb2NrIG9mIHRoZSBQb1YuAFxVcHdhcmREZWxpdmVyeUZlZUZhY3RvcgEAXQVAAABkp7O24A0AAAAAAAAAAATkIFRoZSBmYWN0b3IgdG8gbXVsdGlwbHkgdGhlIGJhc2UgZGVsaXZlcnkgZmVlIGJ5IGZvciBVTVAuAIRBbm5vdW5jZWRIcm1wTWVzc2FnZXNQZXJDYW5kaWRhdGUBADgQAAAAAAhlASBUaGUgbnVtYmVyIG9mIEhSTVAgbWVzc2FnZXMgd2Ugb2JzZXJ2ZWQgaW4gYG9uX2luaXRpYWxpemVgIGFuZCB0aHVzIHVzZWQgdGhhdCBudW1iZXIgZm9y8CBhbm5vdW5jaW5nIHRoZSB3ZWlnaHQgb2YgYG9uX2luaXRpYWxpemVgIGFuZCBgb25fZmluYWxpemVgLgBoUmVzZXJ2ZWRYY21wV2VpZ2h0T3ZlcnJpZGUAACkBBAAIXQEgVGhlIHdlaWdodCB3ZSByZXNlcnZlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrIGZvciBwcm9jZXNzaW5nIFhDTVAgbWVzc2FnZXMuIFRoaXO4IG92ZXJyaWRlcyB0aGUgYW1vdW50IHNldCBpbiB0aGUgQ29uZmlnIHRyYWl0LgBkUmVzZXJ2ZWREbXBXZWlnaHRPdmVycmlkZQAAKQEEAAhZASBUaGUgd2VpZ2h0IHdlIHJlc2VydmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYmxvY2sgZm9yIHByb2Nlc3NpbmcgRE1QIG1lc3NhZ2VzLiBUaGlzuCBvdmVycmlkZXMgdGhlIGFtb3VudCBzZXQgaW4gdGhlIENvbmZpZyB0cmFpdC4AYEN1c3RvbVZhbGlkYXRpb25IZWFkRGF0YQAAGAQADCkBIEEgY3VzdG9tIGhlYWQgZGF0YSB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCBhcyByZXN1bHQgb2YgYHZhbGlkYXRlX2Jsb2NrYC4AEQEgU2VlIGBQYWxsZXQ6OnNldF9jdXN0b21fdmFsaWRhdGlvbl9oZWFkX2RhdGFgIGZvciBtb3JlIGluZm9ybWF0aW9uLgBIUG9WTWVzc2FnZXNUcmFja2VyAABhBQQADFUBIFRyYWNrcyBjdW11bGF0aXZlIGBVTVBgIGFuZCBgSFJNUGAgbWVzc2FnZXMgc2VudCBhY3Jvc3MgYmxvY2tzIGluIHRoZSBjdXJyZW50IGBQb1ZgLgB1ASBBY3Jvc3MgZGlmZmVyZW50IGNhbmRpZGF0ZXMvUG9WcyB0aGUgYnVkZ2V0cyBhcmUgdHJhY2tlZCBieSBbYEFnZ3JlZ2F0ZWRVbmluY2x1ZGVkU2VnbWVudGBdLgABQAABGQQABChTZWxmUGFyYUlknBDyAwAABLggUmV0dXJucyB0aGUgcGFyYWNoYWluIElEIHdlIGFyZSBydW5uaW5nIHdpdGguAAFpBQAAAAEAACRUaW1lc3RhbXABJFRpbWVzdGFtcAgMTm93AQAoIAAAAAAAAAAABKAgVGhlIGN1cnJlbnQgdGltZSBmb3IgdGhlIGN1cnJlbnQgYmxvY2suACREaWRVcGRhdGUBAF0BBAAQ2CBXaGV0aGVyIHRoZSB0aW1lc3RhbXAgaGFzIGJlZW4gdXBkYXRlZCBpbiB0aGlzIGJsb2NrLgBVASBUaGlzIHZhbHVlIGlzIHVwZGF0ZWQgdG8gYHRydWVgIHVwb24gc3VjY2Vzc2Z1bCBzdWJtaXNzaW9uIG9mIGEgdGltZXN0YW1wIGJ5IGEgbm9kZS5FASBJdCBpcyB0aGVuIGNoZWNrZWQgYXQgdGhlIGVuZCBvZiBlYWNoIGJsb2NrIGV4ZWN1dGlvbiBpbiB0aGUgYG9uX2ZpbmFsaXplYCBob29rLgABsAAABDRNaW5pbXVtUGVyaW9kKCAAAAAAAAAAABiMIFRoZSBtaW5pbXVtIHBlcmlvZCBiZXR3ZWVuIGJsb2Nrcy4ATQEgQmUgYXdhcmUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCB0byB0aGUgKmV4cGVjdGVkKiBwZXJpb2QgdGhhdCB0aGUgYmxvY2sgcHJvZHVjdGlvbkkBIGFwcGFyYXR1cyBwcm92aWRlcy4gWW91ciBjaG9zZW4gY29uc2Vuc3VzIHN5c3RlbSB3aWxsIGdlbmVyYWxseSB3b3JrIHdpdGggdGhpcyB0b2EBIGRldGVybWluZSBhIHNlbnNpYmxlIGJsb2NrIHRpbWUuIEZvciBleGFtcGxlLCBpbiB0aGUgQXVyYSBwYWxsZXQgaXQgd2lsbCBiZSBkb3VibGUgdGhpc3AgcGVyaW9kIG9uIGRlZmF1bHQgc2V0dGluZ3MuAAAEGE1vbWVudCgEmCBUeXBlIHVzZWQgZm9yIGV4cHJlc3NpbmcgYSB0aW1lc3RhbXAuAAMAADRQYXJhY2hhaW5JbmZvATRQYXJhY2hhaW5JbmZvBCxQYXJhY2hhaW5JZAEAnBBkAAAAAAABuAAAAAAAAAQAADRXZWlnaHRSZWNsYWltAAAAAAAAAAUIgQEgUGFsbGV0IHRvIHVzZSBhbG9uZ3NpZGUgdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBbYFN0b3JhZ2VXZWlnaHRSZWNsYWltYF0sIHRoZSBwYWxsZXQgcHJvdmlkZXOMIHdlaWdodCBpbmZvcm1hdGlvbiBhbmQgYmVuY2htYXJrcy4AHFV0aWxpdHkAAbwAAR0EAARMYmF0Y2hlZF9jYWxsc19saW1pdDgQqioAAASoIFRoZSBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGJhdGNoZWQgY2FsbHMuAAFtBQAILFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuNFBhbGxldHNPcmlnaW7IBPAgVGhlIGNhbGxlciBvcmlnaW4sIG92ZXJhcmNoaW5nIHR5cGUgb2YgYWxsIHBhbGxldHMgb3JpZ2lucy4ABgAAUE11bHRpQmxvY2tNaWdyYXRpb25zAVBNdWx0aUJsb2NrTWlncmF0aW9ucwgYQ3Vyc29yAAA1AQQADNggVGhlIGN1cnJlbnRseSBhY3RpdmUgbWlncmF0aW9uIHRvIHJ1biBhbmQgaXRzIGN1cnNvci4AvCBgTm9uZWAgaW5kaWNhdGVzIHRoYXQgbm8gbWlncmF0aW9uIGlzIHJ1bm5pbmcuACBIaXN0b3JpYwABBAVNARAEABC0IFNldCBvZiBhbGwgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIG1pZ3JhdGlvbnMuAHEBIFRoaXMgaXMgdXNlZCBhcyBibGFja2xpc3QsIHRvIG5vdCByZS1leGVjdXRlIG1pZ3JhdGlvbnMgdGhhdCBoYXZlIG5vdCBiZWVuIHJlbW92ZWQgZnJvbSB0aGUxASBjb2RlYmFzZSB5ZXQuIEdvdmVybmFuY2UgY2FuIHJlZ3VsYXJseSBjbGVhciB0aGlzIG91dCB2aWEgYGNsZWFyX2hpc3RvcmljYC4AAS0BAAElBAAIMEN1cnNvck1heExlbjgQAAABABCkIFRoZSBtYXhpbWFsIGxlbmd0aCBvZiBhbiBlbmNvZGVkIGN1cnNvci4AZQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhIGN1cnNvciB3aXRoIE1FTAkBIGFib3ZlIHRoaXMgbGltaXQuIFRoaXMgaXMgc3RhdGljYWxseSBjaGVja2VkIGluIGBpbnRlZ3JpdHlfdGVzdGAuAEBJZGVudGlmaWVyTWF4TGVuOBAAAQAAELQgVGhlIG1heGltYWwgbGVuZ3RoIG9mIGFuIGVuY29kZWQgaWRlbnRpZmllci4AVQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhbiBpZGVudGlmaWVyLQEgd2l0aCBNRUwgYWJvdmUgdGhpcyBsaW1pdC4gVGhpcyBpcyBzdGF0aWNhbGx5IGNoZWNrZWQgaW4gYGludGVncml0eV90ZXN0YC4AAXEFAAAQCyAZms41ZNCWTixNSpukaZRNvP9qbOGk0LJ8b8wC0kw4b25nb2luZ19zdGF0dXMAdQUEqCBSZXR1cm5zIHRoZSBvbmdvaW5nIHN0YXR1cyBvZiBtaWdyYXRpb25zLgALIBmazjVk0JZOLE1Km6RpXr13bLFdm5EuJ41NLWLFoSBwcm9ncmVzcwB5BRAJASBSZXR1cm5zIHByb2dyZXNzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbiwgaWYgYW55LgBRASBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHByb2dyZXNzLB0BIGluY2x1ZGluZyB0aGUgbnVtYmVyIG9mIHN0ZXBzIGNvbXBsZXRlZCBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBzdGVwcy4ACyAZms41ZNCWTixNSpukaUavS87G81p7u+6dn8EJW+FEYWZmZWN0ZWRfcHJlZml4ZXMANAwBASBSZXR1cm5zIHRoZSBzdG9yYWdlIHByZWZpeGVzIGFmZmVjdGVkIGJ5IHRoZSBjdXJyZW50IG1pZ3JhdGlvbi4AGQEgQ2FuIGJlIGVtcHR5IGlmIHRoZSBtaWdyYXRpb24gZG9lcyBub3Qga25vdyBvciB0aGVyZSBhcmUgbm8gcHJlZml4ZXMuAAsgGZrONWTQlk4sTUqbpGmqTCigbxmIRb0bsp7GIF3dGHN0YXR1cwCBBQTwIFJldHVybnMgdGhlIGNvbXByZWhlbnNpdmUgc3RhdHVzIG9mIG11bHRpLWJsb2NrIG1pZ3JhdGlvbnMuAAcAACBCYWxhbmNlcwEgQmFsYW5jZXMcNFRvdGFsSXNzdWFuY2UBAPxAAAAAAAAAAAAAAAAAAAAAAASYIFRoZSB0b3RhbCB1bml0cyBpc3N1ZWQgaW4gdGhlIHN5c3RlbS4AQEluYWN0aXZlSXNzdWFuY2UBAPxAAAAAAAAAAAAAAAAAAAAAAAQJASBUaGUgdG90YWwgdW5pdHMgb2Ygb3V0c3RhbmRpbmcgZGVhY3RpdmF0ZWQgYmFsYW5jZSBpbiB0aGUgc3lzdGVtLgAcQWNjb3VudAEBBAIE2QMBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBgCQEgVGhlIEJhbGFuY2VzIHBhbGxldCBleGFtcGxlIG9mIHN0b3JpbmcgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC4AKCAjIEV4YW1wbGUANCBgYGBub2NvbXBpbGWwICBpbXBsIHBhbGxldF9iYWxhbmNlczo6Q29uZmlnIGZvciBSdW50aW1lIHsZAiAgICB0eXBlIEFjY291bnRTdG9yZSA9IFN0b3JhZ2VNYXBTaGltPFNlbGY6OkFjY291bnQ8UnVudGltZT4sIGZyYW1lX3N5c3RlbTo6UHJvdmlkZXI8UnVudGltZT4sIEFjY291bnRJZCwgU2VsZjo6QWNjb3VudERhdGE8QmFsYW5jZT4+DCAgfRAgYGBgABUBIFlvdSBjYW4gYWxzbyBzdG9yZSB0aGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50IGluIHRoZSBgU3lzdGVtYCBwYWxsZXQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7dCAgIHR5cGUgQWNjb3VudFN0b3JlID0gU3lzdGVtDCAgfRAgYGBgAFEBIEJ1dCB0aGlzIGNvbWVzIHdpdGggdHJhZGVvZmZzLCBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlIHN5c3RlbSBwYWxsZXQgc3RvcmVzbQEgYGZyYW1lX3N5c3RlbWAgZGF0YSBhbG9uZ3NpZGUgdGhlIGFjY291bnQgZGF0YSBjb250cmFyeSB0byBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlKQEgYEJhbGFuY2VzYCBwYWxsZXQsIHdoaWNoIHVzZXMgYSBgU3RvcmFnZU1hcGAgdG8gc3RvcmUgYmFsYW5jZXMgZGF0YSBvbmx5LkEBIE5PVEU6IFRoaXMgaXMgb25seSB1c2VkIGluIHRoZSBjYXNlIHRoYXQgdGhpcyBwYWxsZXQgaXMgdXNlZCB0byBzdG9yZSBiYWxhbmNlcy4AFExvY2tzAQEEAgSFBQQAELggQW55IGxpcXVpZGl0eSBsb2NrcyBvbiBzb21lIGFjY291bnQgYmFsYW5jZXMuJQEgTk9URTogU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgd2hlbiBzZXR0aW5nLCBjaGFuZ2luZyBhbmQgZnJlZWluZyBhIGxvY2suAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAIFJlc2VydmVzAQEEAgSVBQQADKQgTmFtZWQgcmVzZXJ2ZXMgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAUSG9sZHMBAQQCBKEFBAAEbCBIb2xkcyBvbiBhY2NvdW50IGJhbGFuY2VzLgAcRnJlZXplcwEBBAIErQUEAASIIEZyZWV6ZSBsb2NrcyBvbiBhY2NvdW50IGJhbGFuY2VzLgABWQEAASkEABBIRXhpc3RlbnRpYWxEZXBvc2l0/EAAypo7AAAAAAAAAAAAAAAAIEEBIFRoZSBtaW5pbXVtIGFtb3VudCByZXF1aXJlZCB0byBrZWVwIGFuIGFjY291bnQgb3Blbi4gTVVTVCBCRSBHUkVBVEVSIFRIQU4gWkVSTyEAWQEgSWYgeW91ICpyZWFsbHkqIG5lZWQgaXQgdG8gYmUgemVybywgeW91IGNhbiBlbmFibGUgdGhlIGZlYXR1cmUgYGluc2VjdXJlX3plcm9fZWRgIGZvcmEBIHRoaXMgcGFsbGV0LiBIb3dldmVyLCB5b3UgZG8gc28gYXQgeW91ciBvd24gcmlzazogdGhpcyB3aWxsIG9wZW4gdXAgYSBtYWpvciBEb1MgdmVjdG9yLlkBIEluIGNhc2UgeW91IGhhdmUgbXVsdGlwbGUgc291cmNlcyBvZiBwcm92aWRlciByZWZlcmVuY2VzLCB5b3UgbWF5IGFsc28gZ2V0IHVuZXhwZWN0ZWSMIGJlaGF2aW91ciBpZiB5b3Ugc2V0IHRoaXMgdG8gemVyby4A8CBCb3R0b20gbGluZTogRG8geW91cnNlbGYgYSBmYXZvdXIgYW5kIG1ha2UgaXQgYXQgbGVhc3Qgb25lIQAgTWF4TG9ja3M4EDIAAAAQ9CBUaGUgbWF4aW11bSBudW1iZXIgb2YgbG9ja3MgdGhhdCBzaG91bGQgZXhpc3Qgb24gYW4gYWNjb3VudC7cIE5vdCBzdHJpY3RseSBlbmZvcmNlZCwgYnV0IHVzZWQgZm9yIHdlaWdodCBlc3RpbWF0aW9uLgCtASBVc2Ugb2YgbG9ja3MgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgZnJlZXplcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gACxNYXhSZXNlcnZlczgQMgAAAAwNASBUaGUgbWF4aW11bSBudW1iZXIgb2YgbmFtZWQgcmVzZXJ2ZXMgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudC4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAKE1heEZyZWV6ZXM4EAAAAAAEYQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGluZGl2aWR1YWwgZnJlZXplIGxvY2tzIHRoYXQgY2FuIGV4aXN0IG9uIGFuIGFjY291bnQgYXQgYW55IHRpbWUuAAG5BQAQRFJ1bnRpbWVIb2xkUmVhc29uMQQEdCBUaGUgb3ZlcmFyY2hpbmcgaG9sZCByZWFzb24uHEJhbGFuY2X8BGwgVGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC5EUmVzZXJ2ZUlkZW50aWZpZXI1AgxoIFRoZSBJRCB0eXBlIGZvciByZXNlcnZlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2BARnJlZXplSWRlbnRpZmllchAEZCBUaGUgSUQgdHlwZSBmb3IgZnJlZXplcy4ACgAASFRyYW5zYWN0aW9uUGF5bWVudAFIVHJhbnNhY3Rpb25QYXltZW50DEROZXh0RmVlTXVsdGlwbGllcgEAXQVAAABkp7O24A0AAAAAAAAAAAAAOFN0b3JhZ2VWZXJzaW9uAQC9BQQAAAA8VHhQYXltZW50Q3JlZGl0AADBBQQADPAgVGhlIGBPbkNoYXJnZVRyYW5zYWN0aW9uYCBzdG9yZXMgdGhlIHdpdGhkcmF3biB0eCBmZWUgaGVyZS4ANQEgVXNlIGB3aXRoZHJhd190eGZlZWAgYW5kIGByZW1haW5pbmdfdHhmZWVgIHRvIGFjY2VzcyBmcm9tIG91dHNpZGUgdGhlIGNyYXRlLgAAAUUEAARgT3BlcmF0aW9uYWxGZWVNdWx0aXBsaWVyDAQFVFkBIEEgZmVlIG11bHRpcGxpZXIgZm9yIGBPcGVyYXRpb25hbGAgZXh0cmluc2ljcyB0byBjb21wdXRlICJ2aXJ0dWFsIHRpcCIgdG8gYm9vc3QgdGhlaXIsIGBwcmlvcml0eWAAUQEgVGhpcyB2YWx1ZSBpcyBtdWx0aXBsaWVkIGJ5IHRoZSBgZmluYWxfZmVlYCB0byBvYnRhaW4gYSAidmlydHVhbCB0aXAiIHRoYXQgaXMgbGF0ZXL0IGFkZGVkIHRvIGEgdGlwIGNvbXBvbmVudCBpbiByZWd1bGFyIGBwcmlvcml0eWAgY2FsY3VsYXRpb25zLk0BIEl0IG1lYW5zIHRoYXQgYSBgTm9ybWFsYCB0cmFuc2FjdGlvbiBjYW4gZnJvbnQtcnVuIGEgc2ltaWxhcmx5LXNpemVkIGBPcGVyYXRpb25hbGBBASBleHRyaW5zaWMgKHdpdGggbm8gdGlwKSwgYnkgaW5jbHVkaW5nIGEgdGlwIHZhbHVlIGdyZWF0ZXIgdGhhbiB0aGUgdmlydHVhbCB0aXAuADwgYGBgcnVzdCxpZ25vcmVAIC8vIEZvciBgTm9ybWFsYIwgbGV0IHByaW9yaXR5ID0gcHJpb3JpdHlfY2FsYyh0aXApOwBUIC8vIEZvciBgT3BlcmF0aW9uYWxgEQEgbGV0IHZpcnR1YWxfdGlwID0gKGluY2x1c2lvbl9mZWUgKyB0aXApICogT3BlcmF0aW9uYWxGZWVNdWx0aXBsaWVyO8QgbGV0IHByaW9yaXR5ID0gcHJpb3JpdHlfY2FsYyh0aXAgKyB2aXJ0dWFsX3RpcCk7ECBgYGAAUQEgTm90ZSB0aGF0IHNpbmNlIHdlIHVzZSBgZmluYWxfZmVlYCB0aGUgbXVsdGlwbGllciBhcHBsaWVzIGFsc28gdG8gdGhlIHJlZ3VsYXIgYHRpcGBdASBzZW50IHdpdGggdGhlIHRyYW5zYWN0aW9uLiBTbywgbm90IG9ubHkgZG9lcyB0aGUgdHJhbnNhY3Rpb24gZ2V0IGEgcHJpb3JpdHkgYnVtcCBiYXNlZGEBIG9uIHRoZSBgaW5jbHVzaW9uX2ZlZWAsIGJ1dCB3ZSBhbHNvIGFtcGxpZnkgdGhlIGltcGFjdCBvZiB0aXBzIGFwcGxpZWQgdG8gYE9wZXJhdGlvbmFsYDggdHJhbnNhY3Rpb25zLgAAAAALAABIU2tpcEZlZWxlc3NQYXltZW50AAABSQQAAAAAAAwAAEhUcmFuc2FjdGlvblN0b3JhZ2UBSFRyYW5zYWN0aW9uU3RvcmFnZSQ4QXV0aG9yaXphdGlvbnMAAQQC2MkFBAAMIQEgQXV0aG9yaXphdGlvbnMsIGtleWVkIGJ5IHNjb3BlLiBgcHViYCBmb3IgY3Jvc3MtcGFsbGV0IHJlYWQgYWNjZXNzIGZyb20tASBgcGFsbGV0LWJ1bGxldGluLWRhdGEtcmVuZXdhbGAncyB0ZXN0cyAoY29uc3VtZWQgdmlhIGBjaGVja19hdXRob3JpemF0aW9uYEAgaW4gcHJvZHVjdGlvbikuAEhBbGxvd2VkQXV0aG9yaXplcnMAAQQCBH0BBAAExCBMaXN0IG9mIGFjY291bnRzIGFsbG93ZWQgdG8gZ2l2ZSBhdXRob3JpemF0aW9ucy4AMFRyYW5zYWN0aW9ucwABBAI41QUEAATQIENvbGxlY3Rpb24gb2YgdHJhbnNhY3Rpb24gbWV0YWRhdGEgYnkgYmxvY2sgbnVtYmVyLgAcQnl0ZUZlZQAA/AQABFggU3RvcmFnZSBmZWUgcGVyIGJ5dGUuACBFbnRyeUZlZQAA/AQABHQgU3RvcmFnZSBmZWUgcGVyIHRyYW5zYWN0aW9uLgA8UmV0ZW50aW9uUGVyaW9kAQA4EAAAAAAU5CBOdW1iZXIgb2YgYmxvY2tzIGZvciB3aGljaCBzdG9yZWQgZGF0YSBtdXN0IGJlIHJldGFpbmVkLgAtASBEYXRhIG9sZGVyIHRoYW4gYFJldGVudGlvblBlcmlvZGAgYmxvY2tzIGlzIGVsaWdpYmxlIGZvciByZW1vdmFsIHVubGVzcyBpdDEBIGhhcyBiZWVuIGV4cGxpY2l0bHkgcmVuZXdlZC4gVmFsaWRhdG9ycyBhcmUgcmVxdWlyZWQgdG8gcHJvdmUgcG9zc2Vzc2lvbiBvZjEBIGRhdGEgY29ycmVzcG9uZGluZyB0byBibG9jayBgTiAtIFJldGVudGlvblBlcmlvZGAgd2hlbiBwcm9kdWNpbmcgYmxvY2sgYE5gLgBEQmxvY2tUcmFuc2FjdGlvbnMBANUFBAAAAGBUcmFuc2FjdGlvbkJ5Q29udGVudEhhc2gAAQQCCJEEBAAUIQEgTWFwcyBjb250ZW50IGhhc2ggdG8gaXRzIG1vc3QgcmVjZW50IChibG9ja19udW1iZXIsIHR4X2luZGV4KSBsb2NhdGlvbi4AIQEgYHB1YmAgZm9yIGNyb3NzLXBhbGxldCB3cml0ZXMgZnJvbSBgcGFsbGV0LWJ1bGxldGluLWRhdGEtcmVuZXdhbGAgKGVhY2htASByZW5ld2FsIHVwZGF0ZXMgdGhlIG1hcHBpbmcgdG8gdGhlIG5ldyBgKGJsb2NrLCBpbmRleClgKS4gUmVhZHMgb3V0c2lkZSB0aGlzIHBhbGxldCBzaG91bGS8IGdvIHRocm91Z2ggW2BQYWxsZXQ6Omxvb2t1cF9ieV9jb250ZW50X2hhc2hgXS4AMFByb29mQ2hlY2tlZAEAXQEEAASUIFdhcyB0aGUgcHJvb2YgY2hlY2tlZCBpbiB0aGlzIGJsb2NrPwABaQEAAU0EACBQTWF4QmxvY2tUcmFuc2FjdGlvbnM4EAACAAAE1CBNYXhpbXVtIG51bWJlciBvZiBpbmRleGVkIHRyYW5zYWN0aW9ucyBpbiB0aGUgYmxvY2suAEhNYXhUcmFuc2FjdGlvblNpemU4EAAAIAAEzCBNYXhpbXVtIGRhdGEgc2V0IGluIGEgc2luZ2xlIHRyYW5zYWN0aW9uIGluIGJ5dGVzLgBMQXV0aG9yaXphdGlvblBlcmlvZDgQgBMDAAS4IEF1dGhvcml6YXRpb25zIGV4cGlyZSBhZnRlciB0aGlzIG1hbnkgYmxvY2tzLgA0U3RvcmVUeFBhcmFtc+UFoFxUcmFuc2FjdGlvblN0b3JhZ2VTdG9yZf////////8/QDgAAAAAAAAIRQEgUG9vbCBwYXJhbXMgZm9yIHNpZ25lZCBhbmQgcHJlaW1hZ2UtYXV0aG9yaXplZCBgc3RvcmVgLiBPbmUgcHJlZml4IGlzIHNhZmU6IHRoZXn4IHRhZyBvbiBgKHdobywgY29udGVudF9oYXNoKWAgYW5kIGBjb250ZW50X2hhc2hgIHJlc3BlY3RpdmVseS4AREF1dGhvcml6ZVR4UGFyYW1z5QWwbFRyYW5zYWN0aW9uU3RvcmFnZUF1dGhvcml6Zf////////8/QDgAAAAAAAAEIQEgUG9vbCBwYXJhbXMgZm9yIGBhdXRob3JpemVfKmAgYW5kIGByZWZyZXNoXypgLCB3aGljaCB2YWxpZGF0ZSB1bnRhZ2dlZC4ApFJlbW92ZUV4cGlyZWRBY2NvdW50QXV0aG9yaXphdGlvblR4UGFyYW1z5QURAcxUcmFuc2FjdGlvblN0b3JhZ2VSZW1vdmVFeHBpcmVkQWNjb3VudEF1dGhvcml6YXRpb27//////////0A4AAAAAAAADFEBIFBvb2wgcGFyYW1zIGZvciBgcmVtb3ZlX2V4cGlyZWRfYWNjb3VudF9hdXRob3JpemF0aW9uYC4gVGhlIHRocmVlIGNsZWFudXAgY2FsbHMgZ2V0OQEgdGhlaXIgb3duIGl0ZW1zIGJlY2F1c2UgdHdvIHByb3ZpZGUgYHdob2AgYW5kIGEgYENvbnRlbnRIYXNoYCBlbmNvZGVzIGxpa2UgYW4ZASBgQWNjb3VudElkMzJgLCBzbyB0aGV5IG5lZWQgZGlzdGluY3QgcHJlZml4ZXMgZGVzcGl0ZSBzaGFyZWQgcHJpY2luZy4AqFJlbW92ZUV4cGlyZWRQcmVpbWFnZUF1dGhvcml6YXRpb25UeFBhcmFtc+UFFQHQVHJhbnNhY3Rpb25TdG9yYWdlUmVtb3ZlRXhwaXJlZFByZWltYWdlQXV0aG9yaXphdGlvbv//////////QDgAAAAAAAAE5CBQb29sIHBhcmFtcyBmb3IgYHJlbW92ZV9leHBpcmVkX3ByZWltYWdlX2F1dGhvcml6YXRpb25gLgCEUmVtb3ZlRXhoYXVzdGVkQXV0aG9yaXplclR4UGFyYW1z5QXwrFRyYW5zYWN0aW9uU3RvcmFnZVJlbW92ZUV4aGF1c3RlZEF1dGhvcml6ZXL//////////0A4AAAAAAAABLwgUG9vbCBwYXJhbXMgZm9yIGByZW1vdmVfZXhoYXVzdGVkX2F1dGhvcml6ZXJgLgAB6QUADCxSdW50aW1lQ2FsbCAEVCBBIGRpc3BhdGNoYWJsZSBjYWxsLiRFbnRyeU1ldGHdBRAlASBPcGFxdWUgcGVyLWVudHJ5IHBheWxvYWQgb24gW2BUcmFuc2FjdGlvbkluZm9gXSwgbmV2ZXIgaW50ZXJwcmV0ZWQgaGVyZToJASBgc3RvcmVgIHdyaXRlcyBgRGVmYXVsdDo6ZGVmYXVsdCgpYCwgZXhwaXJ5IGhhbmRzIGl0IGJhY2sgdGhyb3VnaAUBIFtgQ29uZmlnOjpPbk9ic29sZXRlVHJhbnNhY3Rpb25zYF0uIFdpcmUgYCgpYCBvciB0aGUgcHJpbWl0aXZlcycNASBbYEVudHJ5S2luZGBdKGJ1bGxldGluX3RyYW5zYWN0aW9uX3N0b3JhZ2VfcHJpbWl0aXZlczo6RW50cnlLaW5kKS5IQXV0aG9yaXphdGlvbkV4dHJhzQUQHQEgT3BhcXVlIHBlci1hdXRob3JpemF0aW9uIHBheWxvYWQgaW5zaWRlIFtgQXV0aG9yaXphdGlvbkV4dGVudGBdLCBuZXZlchkBIGludGVycHJldGVkIGhlcmU6IHJlc2V0IHdpdGggdGhlIG90aGVyIGNvdW50ZXJzLCBtdXRhdGVkIG9ubHkgdGhyb3VnaBkBIFtgUGFsbGV0Ojp0cnlfbXV0YXRlX2FjdGl2ZV9hdXRob3JpemF0aW9uYF0uIFdpcmUgYCgpYCBvciB0aGUgcmVuZXdhbHAgcGFsbGV0J3MgYFBlcm1hbmVudEV4dGVudGAuACgAADBIb3BQcm9tb3Rpb24AAYkBAAAIYFN1Ym1pdFRpbWVzdGFtcFRvbGVyYW5jZSggALhMCgAAAAAI8CBNYXhpbXVtIGFsbG93YWJsZSBza2V3IChpbiBtaWxsaXNlY29uZHMpIGJldHdlZW4gdGhlIHVzZXIncxEBIHN1Ym1pdCB0aW1lc3RhbXAgYW5kIHRoZSBvbi1jaGFpbiB0aW1lIHdoZW4gdmFsaWRhdGluZyBhIHByb21vdGlvbi4APFByb21vdGVUeFBhcmFtc+UFdDBIb3BQcm9tb3Rpb24AAAAAAAAAAAUAAAAAAAAABE0BIFBvb2wgcGFyYW1zIGZvciBgcHJvbW90ZWAuIGBpbnRlZ3JpdHlfdGVzdGAgZW5mb3JjZXMgaXRzIHByaW9yaXR5IGJlbG93IGBzdG9yZWAncy4AAAAAKQAALERhdGFSZW5ld2FsASxEYXRhUmVuZXdhbAwgUmVuZXdhbHMAAQQCCO0FBAAEnCBSZW5ld2FsIHJlZ2lzdHJhdGlvbnMgYnkgY29udGVudCBoYXNoLgA8UGVuZGluZ1JlbmV3YWxzAQDxBQQAELAgVHJhbnNhY3Rpb25zIHRvIHJlbmV3IGluIHRoZSBjdXJyZW50IGJsb2NrLgBFASBGaWxsZWQgYnkgW2BPbk9ic29sZXRlVHJhbnNhY3Rpb25zOjpoYW5kbGVfb2Jzb2xldGVgXSBhdCB0aGUgcmV0ZW50aW9uIGJvdW5kYXJ5LEEBIGRyYWluZWQgYnkgdGhlIFtgUGFsbGV0Ojpwcm9jZXNzX3BlbmRpbmdfcmVuZXdhbHNgXSBpbmhlcmVudCBpbiB0aGUgc2FtZSBibG9jay4AUFBlcm1hbmVudFN0b3JhZ2VVc2VkAQAoIAAAAAAAAAAAIDkBIENoYWluLXdpZGUgdG90YWwgb2YgY3VycmVudGx5LW9uLWNoYWluIHJlbmV3ZWQgYnl0ZXMuIFNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlAQEgY2hhaW4td2lkZSBoYXJkIGNhcDogYSBgcmVuZXdgIG9mIGBzaXplYCBieXRlcyBpcyByZWplY3RlZCB3aGVu5CBgUGVybWFuZW50U3RvcmFnZVVzZWQgKyBzaXplID4gTWF4UGVybWFuZW50U3RvcmFnZVNpemVgLgDgIEJ1bXBlZCBvbiBlYWNoIHN1Y2Nlc3NmdWwgcmVuZXcgY29uc3VtZS4gRGVjcmVtZW50ZWQgYnn0IFtgT25PYnNvbGV0ZVRyYW5zYWN0aW9uczo6aGFuZGxlX29ic29sZXRlYF0gd2hlbiBhbiBvYnNvbGV0ZTUBIGBUcmFuc2FjdGlvbnNbYmxvY2tdYCBpcyByZW1vdmVkOiBlYWNoIGBtZXRhID09IFJlbmV3YCBlbnRyeSBjb250cmlidXRlcyBpdHNkIGBzaXplYCB0byB0aGUgZGVjcmVtZW50LgABoQEAAVEEAAhcTWF4UGVybWFuZW50U3RvcmFnZVNpemUoIAAAAAAAAQAACCUBIENhcCwgaW4gYnl0ZXMsIG9uIHRvdGFsIHBlcm1hbmVudCBzdG9yYWdlICh2aWEgYHJlbmV3YCkgY29tbWl0dGVkIGFjcm9zc1AgYWxsIGF1dGhvcml6YXRpb25zLgA0UmVuZXdUeFBhcmFtc+UFoFxUcmFuc2FjdGlvblN0b3JhZ2VSZW5ld/////////8/QDgAAAAAAAAQLQEgUG9vbCBwYXJhbXMgZm9yIGV2ZXJ5IHJlbmV3YWwgY2FsbC4gT25lIHByZWZpeCwgc28gYXQgbW9zdCBvbmUgb2YgYHJlbmV3YCxBASBgZm9yY2VfcmVuZXdgIGFuZCBgZW5hYmxlX2F1dG9fcmVuZXdgIHBlciBhY2NvdW50IGFuZCBjb250ZW50IGhhc2ggaXMgcXVldWVkIGF0MQEgYSB0aW1lLiBQcmVpbWFnZSBgZm9yY2VfcmVuZXdgIHRhZ3Mgb24gdGhlIGNvbnRlbnQgaGFzaCBhbG9uZSwgc28gaXQgZGVkdXBzMCBzZXBhcmF0ZWx5LgAB/QUAAAAqAAAoQXV0aG9yc2hpcAEoQXV0aG9yc2hpcAQYQXV0aG9yAAAEBAAEZCBBdXRob3Igb2YgY3VycmVudCBibG9jay4AAAAAAAAAFAAARENvbGxhdG9yU2VsZWN0aW9uAURDb2xsYXRvclNlbGVjdGlvbhQ0SW52dWxuZXJhYmxlcwEAAQYEAAQRASBUaGUgaW52dWxuZXJhYmxlLCBwZXJtaXNzaW9uZWQgY29sbGF0b3JzLiBUaGlzIGxpc3QgbXVzdCBiZSBzb3J0ZWQuADRDYW5kaWRhdGVMaXN0AQAFBgQAFGkBIFRoZSAoY29tbXVuaXR5LCBsaW1pdGVkKSBjb2xsYXRpb24gY2FuZGlkYXRlcy4gYENhbmRpZGF0ZXNgIGFuZCBgSW52dWxuZXJhYmxlc2Agc2hvdWxkIGJlUCBtdXR1YWxseSBleGNsdXNpdmUuAHUBIFRoaXMgbGlzdCBpcyBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IGRlcG9zaXQgYW5kIHdoZW4gdGhlIGRlcG9zaXRzIGFyZSBlcXVhbCwgdGhlIGxlYXN0oCByZWNlbnRseSB1cGRhdGVkIGlzIGNvbnNpZGVyZWQgZ3JlYXRlci4ARExhc3RBdXRob3JlZEJsb2NrAQEEBQQ4EAAAAAAEhCBMYXN0IGJsb2NrIGF1dGhvcmVkIGJ5IGNvbGxhdG9yLgBERGVzaXJlZENhbmRpZGF0ZXMBADgQAAAAAAx4IERlc2lyZWQgbnVtYmVyIG9mIGNhbmRpZGF0ZXMuAHUBIFRoaXMgc2hvdWxkIGlkZWFsbHkgYWx3YXlzIGJlIGxlc3MgdGhhbiBbYENvbmZpZzo6TWF4Q2FuZGlkYXRlc2BdIGZvciB3ZWlnaHRzIHRvIGJlIGNvcnJlY3QuADRDYW5kaWRhY3lCb25kAQD8QAAAAAAAAAAAAAAAAAAAAAAMuCBGaXhlZCBhbW91bnQgdG8gZGVwb3NpdCB0byBiZWNvbWUgYSBjb2xsYXRvci4AQQEgV2hlbiBhIGNvbGxhdG9yIGNhbGxzIGBsZWF2ZV9pbnRlbnRgIHRoZXkgaW1tZWRpYXRlbHkgcmVjZWl2ZSB0aGUgZGVwb3NpdCBiYWNrLgABqQEAAVUEABgUUG90SWQRBiBQb3RTdGFrZQT0IEFjY291bnQgSWRlbnRpZmllciBmcm9tIHdoaWNoIHRoZSBpbnRlcm5hbCBQb3QgaXMgZ2VuZXJhdGVkLgA0TWF4Q2FuZGlkYXRlczgQZAAAAAzIIE1heGltdW0gbnVtYmVyIG9mIGNhbmRpZGF0ZXMgdGhhdCB3ZSBzaG91bGQgaGF2ZS4AzCBUaGlzIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBpbnZ1bG5lcmFibGVzLgBQTWluRWxpZ2libGVDb2xsYXRvcnM4EAQAAAAMVQEgTWluaW11bSBudW1iZXIgZWxpZ2libGUgY29sbGF0b3JzLiBTaG91bGQgYWx3YXlzIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiBUaGlzIGluY2x1ZGVzUQEgSW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlcmUgd2lsbCBhbHdheXMgYmUgb25lIGNvbGxhdG9yIHdobyBjYW5EIHByb2R1Y2UgYSBibG9jay4AQE1heEludnVsbmVyYWJsZXM4EBQAAAAEhCBNYXhpbXVtIG51bWJlciBvZiBpbnZ1bG5lcmFibGVzLgA0S2lja1RocmVzaG9sZDgQEA4AAAAALHBvdF9hY2NvdW50BIBtb2RsUG90U3Rha2UAAAAAAAAAAAAAAAAAAAAAAAAAAASgIEdldHMgdGhpcyBwYWxsZXQncyBkZXJpdmVkIHBvdCBhY2NvdW50LgABFQYABCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuABUAABxTZXNzaW9uARxTZXNzaW9uIChWYWxpZGF0b3JzAQBhAQQABHwgVGhlIGN1cnJlbnQgc2V0IG9mIHZhbGlkYXRvcnMuADBDdXJyZW50SW5kZXgBADgQAAAAAAR4IEN1cnJlbnQgaW5kZXggb2YgdGhlIHNlc3Npb24uADRRdWV1ZWRDaGFuZ2VkAQBdAQQACDkBIFRydWUgaWYgdGhlIHVuZGVybHlpbmcgZWNvbm9taWMgaWRlbnRpdGllcyBvciB3ZWlnaHRpbmcgYmVoaW5kIHRoZSB2YWxpZGF0b3JzpCBoYXMgY2hhbmdlZCBpbiB0aGUgcXVldWVkIHZhbGlkYXRvciBzZXQuAChRdWV1ZWRLZXlzAQAZBgQACD0BIFRoZSBxdWV1ZWQga2V5cyBmb3IgdGhlIG5leHQgc2Vzc2lvbi4gV2hlbiB0aGUgbmV4dCBzZXNzaW9uIGJlZ2lucywgdGhlc2Uga2V5c+Agd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgdmFsaWRhdG9yJ3Mgc2Vzc2lvbiBrZXlzLgBIRGlzYWJsZWRWYWxpZGF0b3JzAQAhBgQAFIAgSW5kaWNlcyBvZiBkaXNhYmxlZCB2YWxpZGF0b3JzLgA9ASBUaGUgdmVjIGlzIGFsd2F5cyBrZXB0IHNvcnRlZCBzbyB0aGF0IHdlIGNhbiBmaW5kIHdoZXRoZXIgYSBnaXZlbiB2YWxpZGF0b3IgaXM9ASBkaXNhYmxlZCB1c2luZyBiaW5hcnkgc2VhcmNoLiBJdCBnZXRzIGNsZWFyZWQgd2hlbiBgb25fc2Vzc2lvbl9lbmRpbmdgIHJldHVybnNkIGEgbmV3IHNldCBvZiBpZGVudGl0aWVzLgAgTmV4dEtleXMAAQQFBLEBBAAEnCBUaGUgbmV4dCBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yLgAgS2V5T3duZXIAAQQFMQYEBAAECQEgVGhlIG93bmVyIG9mIGEga2V5LiBUaGUga2V5IGlzIHRoZSBgS2V5VHlwZUlkYCArIHRoZSBlbmNvZGVkIGtleS4AREV4dGVybmFsbHlTZXRLZXlzAAEEBQQQBAAQMQEgQWNjb3VudHMgd2hvc2Uga2V5cyB3ZXJlIHNldCB2aWEgYFNlc3Npb25JbnRlcmZhY2VgIChleHRlcm5hbCBwYXRoKSB3aXRob3V0OQEgaW5jcmVtZW50aW5nIHRoZSBjb25zdW1lciByZWZlcmVuY2Ugb3IgcGxhY2luZyBhIGtleSBkZXBvc2l0LiBgZG9fcHVyZ2Vfa2V5c2A5ASBvbmx5IGRlY3JlbWVudHMgY29uc3VtZXJzIGZvciBhY2NvdW50cyB0aGF0IHdlcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIHRoZSBsb2NhbEAgc2Vzc2lvbiBwYWxsZXQuAAGtAQABWQQABChLZXlEZXBvc2l0/EAAAAAAAAAAAAAAAAAAAAAABKQgVGhlIGFtb3VudCB0byBiZSBoZWxkIHdoZW4gc2V0dGluZyBrZXlzLgABOQYACCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuEEtleXOxAQQoIFRoZSBrZXlzLgAWAAAQQXVyYQEQQXVyYQgsQXV0aG9yaXRpZXMBAD0GBAAEbCBUaGUgY3VycmVudCBhdXRob3JpdHkgc2V0LgAsQ3VycmVudFNsb3QBAEUGIAAAAAAAAAAADIAgVGhlIGN1cnJlbnQgc2xvdCBvZiB0aGlzIGJsb2NrLgCUIFRoaXMgd2lsbCBiZSBzZXQgaW4gYG9uX2luaXRpYWxpemVgLgAAAAQwU2xvdER1cmF0aW9uKCDAXQAAAAAAABQNASBUaGUgc2xvdCBkdXJhdGlvbiBBdXJhIHNob3VsZCBydW4gd2l0aCwgZXhwcmVzc2VkIGluIG1pbGxpc2Vjb25kcy4AIQEgVGhlIGVmZmVjdGl2ZSB2YWx1ZSBvZiB0aGlzIHR5cGUgY2FuIGJlIGNoYW5nZWQgd2l0aCBhIHJ1bnRpbWUgdXBncmFkZS4ANQEgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGVpdGhlciB1c2UgW2BNaW5pbXVtUGVyaW9kVGltZXNUd29gXSBvciBhIGNvbnN0LgAABCxBdXRob3JpdHlJZLUBBJggVGhlIGlkZW50aWZpZXIgdHlwZSBmb3IgYW4gYXV0aG9yaXR5LgAXAAAcQXVyYUV4dAEcQXVyYUV4dAgsQXV0aG9yaXRpZXMBAD0GBAAUlCBTZXJ2ZXMgYXMgY2FjaGUgZm9yIHRoZSBhdXRob3JpdGllcy4AcQEgVGhlIGF1dGhvcml0aWVzIGluIEF1UmEgYXJlIG92ZXJ3cml0dGVuIGluIGBvbl9pbml0aWFsaXplYCB3aGVuIHdlIHN3aXRjaCB0byBhIG5ldyBzZXNzaW9uLF0BIGJ1dCB3ZSByZXF1aXJlIHRoZSBvbGQgYXV0aG9yaXRpZXMgdG8gdmVyaWZ5IHRoZSBzZWFsIHdoZW4gdmFsaWRhdGluZyBhIFBvVi4gVGhpcyB3aWxsDQEgYWx3YXlzIGJlIHVwZGF0ZWQgdG8gdGhlIGxhdGVzdCBBdVJhIGF1dGhvcml0aWVzIGluIGBvbl9maW5hbGl6ZWAuADRSZWxheVNsb3RJbmZvAABJBgQAEAkBIEN1cnJlbnQgcmVsYXkgY2hhaW4gc2xvdCBwYWlyZWQgd2l0aCBhIG51bWJlciBvZiBhdXRob3JlZCBibG9ja3MuAGUBIFRoaXMgaXMgdXBkYXRlZCBpbiBbYEZpeGVkVmVsb2NpdHlDb25zZW5zdXNIb29rOjpvbl9zdGF0ZV9wcm9vZmBdIHdpdGggdGhlIGN1cnJlbnQgcmVsYXncIGNoYWluIHNsb3QgYXMgcHJvdmlkZWQgYnkgdGhlIHJlbGF5IGNoYWluIHN0YXRlIHByb29mLgAAAAAAAAAYAAAkWGNtcFF1ZXVlASRYY21wUXVldWUcUEluYm91bmRYY21wU3VzcGVuZGVkAQBNBgQAIA0BIFRoZSBzdXNwZW5kZWQgaW5ib3VuZCBYQ01QIGNoYW5uZWxzLiBBbGwgb3RoZXJzIGFyZSBub3Qgc3VzcGVuZGVkLgBxASBUaGlzIGlzIGEgYFN0b3JhZ2VWYWx1ZWAgaW5zdGVhZCBvZiBhIGBTdG9yYWdlTWFwYCBzaW5jZSB3ZSBleHBlY3QgbXVsdGlwbGUgcmVhZHMgcGVyIGJsb2NraQEgdG8gZGlmZmVyZW50IGtleXMgd2l0aCBhIG9uZSBieXRlIHBheWxvYWQuIFRoZSBhY2Nlc3MgdG8gYEJvdW5kZWRCVHJlZVNldGAgd2lsbCBiZSBjYWNoZWQVASB3aXRoaW4gdGhlIGJsb2NrIGFuZCB0aGVyZWZvcmUgb25seSBpbmNsdWRlZCBvbmNlIGluIHRoZSBwcm9vZiBzaXplLgBlASBOT1RFOiBUaGUgUG9WIGJlbmNobWFya2luZyBjYW5ub3Qga25vdyB0aGlzIGFuZCB3aWxsIG92ZXItZXN0aW1hdGUsIGJ1dCB0aGUgYWN0dWFsIHByb29mRCB3aWxsIGJlIHNtYWxsZXIuAEhPdXRib3VuZFhjbXBTdGF0dXMBAFUGBAAYXQEgVGhlIG5vbi1lbXB0eSBYQ01QIGNoYW5uZWxzIGluIG9yZGVyIG9mIGJlY29taW5nIG5vbi1lbXB0eSwgYW5kIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RRASBhbmQgbGFzdCBvdXRib3VuZCBtZXNzYWdlLiBJZiB0aGUgdHdvIGluZGljZXMgYXJlIGVxdWFsLCB0aGVuIGl0IGluZGljYXRlcyBhbiBlbXB0eVkBIHF1ZXVlIGFuZCB0aGVyZSBtdXN0IGJlIGEgbm9uLWBPa2AgYE91dGJvdW5kU3RhdHVzYC4gV2UgYXNzdW1lIHF1ZXVlcyBncm93IG5vIGdyZWF0ZXJZASB0aGFuIDY1NTM1IGl0ZW1zLiBRdWV1ZSBpbmRpY2VzIGZvciBub3JtYWwgbWVzc2FnZXMgYmVnaW4gYXQgb25lOyB6ZXJvIGlzIHJlc2VydmVkIGluEQEgY2FzZSBvZiB0aGUgbmVlZCB0byBzZW5kIGEgaGlnaC1wcmlvcml0eSBzaWduYWwgbWVzc2FnZSB0aGlzIGJsb2NrLgkBIFRoZSBib29sIGlzIHRydWUgaWYgdGhlcmUgaXMgYSBzaWduYWwgbWVzc2FnZSB3YWl0aW5nIHRvIGJlIHNlbnQuAFBPdXRib3VuZFhjbXBNZXNzYWdlcwEBCAIFaQZtBgQABLwgVGhlIG1lc3NhZ2VzIG91dGJvdW5kIGluIGEgZ2l2ZW4gWENNUCBjaGFubmVsLgA4U2lnbmFsTWVzc2FnZXMBAQQCnG0GBAAEoCBBbnkgc2lnbmFsIG1lc3NhZ2VzIHdhaXRpbmcgdG8gYmUgc2VudC4ALFF1ZXVlQ29uZmlnAQBxBjAgAAAAMAAAAAgAAAAEFQEgVGhlIGNvbmZpZ3VyYXRpb24gd2hpY2ggY29udHJvbHMgdGhlIGR5bmFtaWNzIG9mIHRoZSBvdXRib3VuZCBxdWV1ZS4AOFF1ZXVlU3VzcGVuZGVkAQBdAQQABEEBIFdoZXRoZXIgb3Igbm90IHRoZSBYQ01QIHF1ZXVlIGlzIHN1c3BlbmRlZCBmcm9tIGV4ZWN1dGluZyBpbmNvbWluZyBYQ01zIG9yIG5vdC4ARERlbGl2ZXJ5RmVlRmFjdG9yAQEEBZxdBUAAAGSns7bgDQAAAAAAAAAABMQgVGhlIGZhY3RvciB0byBtdWx0aXBseSB0aGUgYmFzZSBkZWxpdmVyeSBmZWUgYnkuAAG5AQABXQQADExNYXhJbmJvdW5kU3VzcGVuZGVkOBDoAwAAFEkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbmJvdW5kIFhDTVAgY2hhbm5lbHMgdGhhdCBjYW4gYmUgc3VzcGVuZGVkIHNpbXVsdGFuZW91c2x5LgBdASBBbnkgZnVydGhlciBjaGFubmVsIHN1c3BlbnNpb25zIHdpbGwgZmFpbCBhbmQgbWVzc2FnZXMgbWF5IGdldCBkcm9wcGVkIHdpdGhvdXQgZnVydGhlckUBIG5vdGljZS4gQ2hvb3NpbmcgYSBoaWdoIHZhbHVlICgxMDAwKSBpcyBva2F5OyB0aGUgdHJhZGUtb2ZmIHRoYXQgaXMgZGVzY3JpYmVkIGlu2CBbYEluYm91bmRYY21wU3VzcGVuZGVkYF0gc3RpbGwgYXBwbGllcyBhdCB0aGF0IHNjYWxlLgBkTWF4QWN0aXZlT3V0Ym91bmRDaGFubmVsczgQgAAAACBlASBNYXhpbWFsIG51bWJlciBvZiBvdXRib3VuZCBYQ01QIGNoYW5uZWxzIHRoYXQgY2FuIGhhdmUgbWVzc2FnZXMgcXVldWVkIGF0IHRoZSBzYW1lIHRpbWUuAFUBIElmIHRoaXMgaXMgcmVhY2hlZCwgdGhlbiBubyBmdXJ0aGVyIG1lc3NhZ2VzIGNhbiBiZSBzZW50IHRvIGNoYW5uZWxzIHRoYXQgZG8gbm90IHlldF0BIGhhdmUgYSBtZXNzYWdlIHF1ZXVlZC4gVGhpcyBzaG91bGQgYmUgc2V0IHRvIHRoZSBleHBlY3RlZCBtYXhpbXVtIG9mIG91dGJvdW5kIGNoYW5uZWxzYQEgd2hpY2ggaXMgZGV0ZXJtaW5lZCBieSBbYFNlbGY6OkNoYW5uZWxJbmZvYF0uIEl0IGlzIGltcG9ydGFudCB0byBzZXQgdGhpcyBsYXJnZSBlbm91Z2gsXQEgc2luY2Ugb3RoZXJ3aXNlIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgcHJvdG9jb2wgd2lsbCBub3Qgd29yayBhcyBpbnRlbmRlZCBhbmQgbWVzc2FnZXNRASBtYXkgYmUgZHJvcHBlZC4gVGhpcyB2YWx1ZSBpbmNyZWFzZXMgdGhlIFBvViBhbmQgc2hvdWxkIHRoZXJlZm9yZSBub3QgYmUgcGlja2VkIHRvb00BIGhpZ2guIEdvdmVybmFuY2UgbmVlZHMgdG8gcGF5IGF0dGVudGlvbiB0byBub3Qgb3BlbiBtb3JlIGNoYW5uZWxzIHRoYW4gdGhpcyB2YWx1ZS4ALE1heFBhZ2VTaXplOBAAnAEAFLggVGhlIG1heGltYWwgcGFnZSBzaXplIGZvciBIUk1QIG1lc3NhZ2UgcGFnZXMuAGEBIEEgbG93ZXIgbGltaXQgY2FuIGJlIHNldCBkeW5hbWljYWxseSwgYnV0IHRoaXMgaXMgdGhlIGhhcmQtbGltaXQgZm9yIHRoZSBQb1Ygd29yc3QgY2FzZVUBIGJlbmNobWFya2luZy4gVGhlIGxpbWl0IGZvciB0aGUgc2l6ZSBvZiBhIG1lc3NhZ2UgaXMgc2xpZ2h0bHkgYmVsb3cgdGhpcywgc2luY2Ugc29tZbggb3ZlcmhlYWQgaXMgaW5jdXJyZWQgZm9yIGVuY29kaW5nIHRoZSBmb3JtYXQuAAF1BgAAAB4AACxQb2xrYWRvdFhjbQEsUG9sa2Fkb3RYY208MFF1ZXJ5Q291bnRlcgEAKCAAAAAAAAAAAASIIFRoZSBsYXRlc3QgYXZhaWxhYmxlIHF1ZXJ5IGluZGV4LgAcUXVlcmllcwABBAIoeQYEAARUIFRoZSBvbmdvaW5nIHF1ZXJpZXMuAChBc3NldFRyYXBzAQEEBjw4EAAAAAAQaCBUaGUgZXhpc3RpbmcgYXNzZXQgdHJhcHMuAGEBIEtleSBpcyB0aGUgYmxha2UyIDI1NiBoYXNoIG9mIChvcmlnaW4sIHZlcnNpb25lZCBgQXNzZXRzYCkgcGFpci4gVmFsdWUgaXMgdGhlIG51bWJlciBvZh0BIHRpbWVzIHRoaXMgcGFpciBoYXMgYmVlbiB0cmFwcGVkICh1c3VhbGx5IGp1c3QgMSBpZiBpdCBleGlzdHMgYXQgYWxsKS4AOFNhZmVYY21WZXJzaW9uAAA4BAAIYQEgRGVmYXVsdCB2ZXJzaW9uIHRvIGVuY29kZSBYQ00gd2hlbiBsYXRlc3QgdmVyc2lvbiBvZiBkZXN0aW5hdGlvbiBpcyB1bmtub3duLiBJZiBgTm9uZWAsPQEgdGhlbiB0aGUgZGVzdGluYXRpb25zIHdob3NlIFhDTSB2ZXJzaW9uIGlzIHVua25vd24gYXJlIGNvbnNpZGVyZWQgdW5yZWFjaGFibGUuAEBTdXBwb3J0ZWRWZXJzaW9uAAEIBQKNBjgEAATwIFRoZSBMYXRlc3QgdmVyc2lvbnMgdGhhdCB3ZSBrbm93IHZhcmlvdXMgbG9jYXRpb25zIHN1cHBvcnQuAEBWZXJzaW9uTm90aWZpZXJzAAEIBQKNBigEAAQFASBBbGwgbG9jYXRpb25zIHRoYXQgd2UgaGF2ZSByZXF1ZXN0ZWQgdmVyc2lvbiBub3RpZmljYXRpb25zIGZyb20uAFBWZXJzaW9uTm90aWZ5VGFyZ2V0cwABCAUCjQaRBgQACHEBIFRoZSB0YXJnZXQgbG9jYXRpb25zIHRoYXQgYXJlIHN1YnNjcmliZWQgdG8gb3VyIHZlcnNpb24gY2hhbmdlcywgYXMgd2VsbCBhcyB0aGUgbW9zdCByZWNlbnSUIG9mIG91ciB2ZXJzaW9ucyB3ZSBpbmZvcm1lZCB0aGVtIG9mLgBUVmVyc2lvbkRpc2NvdmVyeVF1ZXVlAQCVBgQADGUBIERlc3RpbmF0aW9ucyB3aG9zZSBsYXRlc3QgWENNIHZlcnNpb24gd2Ugd291bGQgbGlrZSB0byBrbm93LiBEdXBsaWNhdGVzIG5vdCBhbGxvd2VkLCBhbmRxASB0aGUgYHUzMmAgY291bnRlciBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYSBzZW5kIHRvIHRoZSBkZXN0aW5hdGlvbiBoYXMgYmVlbiBhdHRlbXB0ZWQsjCB3aGljaCBpcyB1c2VkIGFzIGEgcHJpb3JpdGl6YXRpb24uAEBDdXJyZW50TWlncmF0aW9uAAChBgQABJwgVGhlIGN1cnJlbnQgbWlncmF0aW9uJ3Mgc3RhZ2UsIGlmIGFueS4AVFJlbW90ZUxvY2tlZEZ1bmdpYmxlcwABDAUCAqUGqQYEAATwIEZ1bmdpYmxlIGFzc2V0cyB3aGljaCB3ZSBrbm93IGFyZSBsb2NrZWQgb24gYSByZW1vdGUgY2hhaW4uADxMb2NrZWRGdW5naWJsZXMAAQQCBLkGBAAE4CBGdW5naWJsZSBhc3NldHMgd2hpY2ggd2Uga25vdyBhcmUgbG9ja2VkIG9uIHRoaXMgY2hhaW4uAFRYY21FeGVjdXRpb25TdXNwZW5kZWQBAF0BBAAEtCBHbG9iYWwgc3VzcGVuc2lvbiBzdGF0ZSBvZiB0aGUgWENNIGV4ZWN1dG9yLgA8U2hvdWxkUmVjb3JkWGNtAQBdAQQAHFkBIFdoZXRoZXIgb3Igbm90IGluY29taW5nIFhDTXMgKGJvdGggZXhlY3V0ZWQgbG9jYWxseSBhbmQgcmVjZWl2ZWQpIHNob3VsZCBiZSByZWNvcmRlZC7EIE9ubHkgb25lIFhDTSBwcm9ncmFtIHdpbGwgYmUgcmVjb3JkZWQgYXQgYSB0aW1lLikBIFRoaXMgaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBydW50aW1lIEFQSXMsIGFuZCBpdCdzIGFkdmlzZWQgaXQgc3RheXMgZmFsc2UNASBmb3IgYWxsIG90aGVyIHVzZSBjYXNlcywgc28gYXMgdG8gbm90IGRlZ3JhZGUgcmVndWxhciBwZXJmb3JtYW5jZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgAsUmVjb3JkZWRYY20AANECBAAYSQEgSWYgW2BTaG91bGRSZWNvcmRYY21gXSBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiB0aGUgbGFzdCBYQ00gcHJvZ3JhbSBleGVjdXRlZCBsb2NhbGx5VCB3aWxsIGJlIHN0b3JlZCBoZXJlLikBIFJ1bnRpbWUgQVBJcyBjYW4gZmV0Y2ggdGhlIFhDTSB0aGF0IHdhcyBleGVjdXRlZCBieSBhY2Nlc3NpbmcgdGhpcyB2YWx1ZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgBEQXV0aG9yaXplZEFsaWFzZXMAAQQCwQHFBgQADGUBIE1hcCBvZiBhdXRob3JpemVkIGFsaWFzZXJzIG9mIGxvY2FsIG9yaWdpbnMuIEVhY2ggbG9jYWwgbG9jYXRpb24gY2FuIGF1dGhvcml6ZSBhIGxpc3Qgb2ZZASBvdGhlciBsb2NhdGlvbnMgdG8gYWxpYXMgaW50byBpdC4gRWFjaCBhbGlhc2VyIGlzIG9ubHkgdmFsaWQgdW50aWwgaXRzIGlubmVyIGBleHBpcnlgOCBibG9jayBudW1iZXIuAAG9AQgBArkBVGhpcyBleHRyaW5zaWMgdXNlcyBgV2VpZ2h0TGltaXQ6OlVubGltaXRlZGAsIHBsZWFzZSBtaWdyYXRlIHRvIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2Agb3IgYHRyYW5zZmVyX2Fzc2V0c2AAAgLZAVRoaXMgZXh0cmluc2ljIHVzZXMgYFdlaWdodExpbWl0OjpVbmxpbWl0ZWRgLCBwbGVhc2UgbWlncmF0ZSB0byBgbGltaXRlZF9yZXNlcnZlX3RyYW5zZmVyX2Fzc2V0c2Agb3IgYHRyYW5zZmVyX2Fzc2V0c2AAAWEEABBEVW5pdmVyc2FsTG9jYXRpb27kGAIJAgDJDwSEIFRoaXMgY2hhaW4ncyBVbml2ZXJzYWwgTG9jYXRpb24uAFBBZHZlcnRpc2VkWGNtVmVyc2lvbjgQBQAAAAglASBUaGUgbGF0ZXN0IHN1cHBvcnRlZCB2ZXJzaW9uIHRoYXQgd2UgYWR2ZXJ0aXNlLiBHZW5lcmFsbHkganVzdCBzZXQgaXQgdG+EIGBwYWxsZXRfeGNtOjpDdXJyZW50WGNtVmVyc2lvbmAuAChNYXhMb2NrZXJzOBAIAAAABBkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NhbCBYQ00gbG9ja3MgdGhhdCBhIHNpbmdsZSBhY2NvdW50IG1heSBoYXZlLgBYTWF4UmVtb3RlTG9ja0NvbnN1bWVyczgQAAAAAAT8IFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zdW1lcnMgYSBzaW5nbGUgcmVtb3RlIGxvY2sgbWF5IGhhdmUuAAHdBgQYArxVc2UgYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcmAgaW5zdGVhZAEYMjAuMC4wCCxSdW50aW1lQ2FsbCAEZCBUaGUgcnVudGltZSBgQ2FsbGAgdHlwZS5wUmVtb3RlTG9ja0NvbnN1bWVySWRlbnRpZmllchAExCBUaGUgSUQgdHlwZSBmb3IgbG9jYWwgY29uc3VtZXJzIG9mIHJlbW90ZSBsb2Nrcy4AHwAAKEN1bXVsdXNYY20AAYkDAAFxBAAAAAAAIAAAME1lc3NhZ2VRdWV1ZQEwTWVzc2FnZVF1ZXVlDDBCb29rU3RhdGVGb3IBAQQFkQPlBnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATMIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgYW5kIGxhc3QgKG5vbi1lbXB0eSkgcGFnZXMuACxTZXJ2aWNlSGVhZAAAkQMEAAS8IFRoZSBvcmlnaW4gYXQgd2hpY2ggd2Ugc2hvdWxkIGJlZ2luIHNlcnZpY2luZy4AFFBhZ2VzAAEIBQXxBvUGBAAEiCBUaGUgbWFwIG9mIHBhZ2UgaW5kaWNlcyB0byBwYWdlcy4AAY0DAAF1BAAQIEhlYXBTaXplOBAAAAEAFD0BIFRoZSBzaXplIG9mIHRoZSBwYWdlOyB0aGlzIGltcGxpZXMgdGhlIG1heGltdW0gbWVzc2FnZSBzaXplIHdoaWNoIGNhbiBiZSBzZW50LgBZASBBIGdvb2QgdmFsdWUgZGVwZW5kcyBvbiB0aGUgZXhwZWN0ZWQgbWVzc2FnZSBzaXplcywgdGhlaXIgd2VpZ2h0cywgdGhlIHdlaWdodCB0aGF0IGlzXQEgYXZhaWxhYmxlIGZvciBwcm9jZXNzaW5nIHRoZW0gYW5kIHRoZSBtYXhpbWFsIG5lZWRlZCBtZXNzYWdlIHNpemUuIFRoZSBtYXhpbWFsIG1lc3NhZ2URASBzaXplIGlzIHNsaWdodGx5IGxvd2VyIHRoYW4gdGhpcyBhcyBkZWZpbmVkIGJ5IFtgTWF4TWVzc2FnZUxlbk9mYF0uACBNYXhTdGFsZTgQCAAAAAxdASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhbGUgcGFnZXMgKGkuZS4gb2Ygb3ZlcndlaWdodCBtZXNzYWdlcykgYWxsb3dlZCBiZWZvcmUgY3VsbGluZ1EBIGNhbiBoYXBwZW4uIE9uY2UgdGhlcmUgYXJlIG1vcmUgc3RhbGUgcGFnZXMgdGhhbiB0aGlzLCB0aGVuIGhpc3RvcmljYWwgcGFnZXMgbWF5IGJl/CBkcm9wcGVkLCBldmVuIGlmIHRoZXkgY29udGFpbiB1bnByb2Nlc3NlZCBvdmVyd2VpZ2h0IG1lc3NhZ2VzLgA0U2VydmljZVdlaWdodBkDLAEHAFhA+6ICAOAAGEEBIFRoZSBhbW91bnQgb2Ygd2VpZ2h0IChpZiBhbnkpIHdoaWNoIHNob3VsZCBiZSBwcm92aWRlZCB0byB0aGUgbWVzc2FnZSBxdWV1ZSBmb3KoIHNlcnZpY2luZyBlbnF1ZXVlZCBpdGVtcyBgb25faW5pdGlhbGl6ZWAuAPwgVGhpcyBtYXkgYmUgbGVnaXRpbWF0ZWx5IGBOb25lYCBpbiB0aGUgY2FzZSB0aGF0IHlvdSB3aWxsIGNhbGxdASBgU2VydmljZVF1ZXVlczo6c2VydmljZV9xdWV1ZXNgIG1hbnVhbGx5IG9yIHNldCBbYFNlbGY6OklkbGVNYXhTZXJ2aWNlV2VpZ2h0YF0gdG8gaGF2ZVQgaXQgcnVuIGluIGBvbl9pZGxlYC4AUElkbGVNYXhTZXJ2aWNlV2VpZ2h0GQMsAQcAoNshXQIAgAAUXQEgVGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCAoaWYgYW55KSB0byBiZSB1c2VkIGZyb20gcmVtYWluaW5nIHdlaWdodCBgb25faWRsZWAgd2hpY2hBASBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdGhlIG1lc3NhZ2UgcXVldWUgZm9yIHNlcnZpY2luZyBlbnF1ZXVlZCBpdGVtcyBgb25faWRsZWAuPQEgVXNlZnVsIGZvciBwYXJhY2hhaW5zIHRvIHByb2Nlc3MgbWVzc2FnZXMgYXQgdGhlIHNhbWUgYmxvY2sgdGhleSBhcmUgcmVjZWl2ZWQuACkBIElmIGBOb25lYCwgaXQgd2lsbCBub3QgY2FsbCBgU2VydmljZVF1ZXVlczo6c2VydmljZV9xdWV1ZXNgIGluIGBvbl9pZGxlYC4AAf0GAAQQU2l6ZTgEVCBQYWdlL2hlYXAgc2l6ZSB0eXBlLgAiAAAQU3VkbwEQU3VkbwQMS2V5AAAEBAAEhCBUaGUgYEFjY291bnRJZGAgb2YgdGhlIHN1ZG8ga2V5LgABlQMAAX0EAAABAQcABCxSdW50aW1lQ2FsbCAESCBBIHN1ZG8tYWJsZSBjYWxsLgBkAAAIBAUAIJUBBAA0AAQIDBAUGBwgJCgsMDQ0QXV0aG9yaXplQ2FsbJkDEEhDaGVja05vblplcm9TZW5kZXKdAxBAQ2hlY2tTcGVjVmVyc2lvbqEDODhDaGVja1R4VmVyc2lvbqUDODBDaGVja0dlbmVzaXOpAzw4Q2hlY2tNb3J0YWxpdHmtAzwoQ2hlY2tOb25jZbUDECxDaGVja1dlaWdodLkDEGBDaGFyZ2VUcmFuc2FjdGlvblBheW1lbnS9AxBcVmFsaWRhdGVBdXRob3JpemVkQ2FsbHPBAxBYQWxsb3dhbmNlQmFzZWRQcmlvcml0ecUDEERDaGVja01ldGFkYXRhSGFzaMkD0QNQU3RvcmFnZVdlaWdodFJlY2xhaW0QEFwcQXVyYUFwaQg0c2xvdF9kdXJhdGlvbgAFBwyQIFJldHVybnMgdGhlIHNsb3QgZHVyYXRpb24gZm9yIEF1cmEuACUBIEN1cnJlbnRseSwgb25seSB0aGUgdmFsdWUgcHJvdmlkZWQgYnkgdGhpcyB0eXBlIGF0IGdlbmVzaXMgd2lsbCBiZSB1c2VkLgAsYXV0aG9yaXRpZXMAQQYEnCBSZXR1cm4gdGhlIGN1cnJlbnQgc2V0IG9mIGF1dGhvcml0aWVzLgAEuCBBUEkgbmVjZXNzYXJ5IGZvciBibG9jayBhdXRob3JzaGlwIHdpdGggYXVyYS4EAFBSZWxheVBhcmVudE9mZnNldEFwaQhMcmVsYXlfcGFyZW50X29mZnNldAA4DBUBIEZldGNoIHRoZSByZWxheSBwYXJlbnQgb2Zmc2V0IHRoYXQgaXMgZXhwZWN0ZWQgZnJvbSB0aGUgcmVsYXkgY2hhaW4uAF0BIFRoaXMgZGV0ZXJtaW5lcyBob3cgbWFueSBibG9ja3MgYmVoaW5kIHRoZSByZWxheSBjaGFpbiB0aXAgdGhlIHJlbGF5IHBhcmVudCBzaG91bGQgYmUuAFhtYXhfY2xhaW1fcXVldWVfb2Zmc2V0AAyI6CBNYXhpbXVtIGNsYWltIHF1ZXVlIG9mZnNldCBmb3IgYXN5bmMgYmFja2luZyBmbGV4aWJpbGl0eS4AOQEgQm91bmRzIGhvdyBmYXIgImludG8gdGhlIGZ1dHVyZSIgYSBjYW5kaWRhdGUgbWF5IGxvb2sgaW4gdGhlIGNsYWltIHF1ZXVlIHdoZW5RASBzZWxlY3RpbmcgYSBjb3JlLiBUaGUgZWZmZWN0aXZlIGNsYWltIHF1ZXVlIGRlcHRoIGRlcGVuZHMgb24gdGhlIGNhbmRpZGF0ZSB2ZXJzaW9uOgBhASAtICoqVjEvVjIgY2FuZGlkYXRlcyoqOiB0aGUgY2xhaW0gcXVldWUgaXMgbG9va2VkIHVwIGF0IHRoZSBjYW5kaWRhdGUncyBgcmVsYXlfcGFyZW50YCxJASAgIHdoaWNoIGlzIGByZWxheV9wYXJlbnRfb2Zmc2V0YCBibG9ja3MgYmVoaW5kIHRoZSByZWxheS1jaGFpbiB0aXAuIFRoZSBlZmZlY3RpdmXsICAgZGVwdGggaXMgYHJlbGF5X3BhcmVudF9vZmZzZXQgKyBtYXhfY2xhaW1fcXVldWVfb2Zmc2V0YC4AFQEgLSAqKlYzIGNhbmRpZGF0ZXMqKjogdGhlIGNsYWltIHF1ZXVlIGlzIGxvb2tlZCB1cCBhdCB0aGUgY2FuZGlkYXRlJ3NdASAgIGBzY2hlZHVsaW5nX3BhcmVudGAg4oCUIHRoZSByZWxheS1jaGFpbiBibG9jayBvZiB0aGUgKmxhc3QgZmluaXNoZWQqIHNsb3QsIGRlY291cGxlZCUBICAgZnJvbSB0aGUgZXhlY3V0aW9uLWNvbnRleHQgYHJlbGF5X3BhcmVudGAuIFRoZSBlZmZlY3RpdmUgZGVwdGggaXMganVzdHAgICBgbWF4X2NsYWltX3F1ZXVlX29mZnNldGAuACEBIENvbGxhdG9ycyBzZWxlY3QgYSBjb3JlIHZpYSBhbiBvZmZzZXQgaW4gYFswLCBtYXhfY2xhaW1fcXVldWVfb2Zmc2V0XWAuAFEBIC0gKipWMiBjYW5kaWRhdGVzKio6IGBtYXhfY2xhaW1fcXVldWVfb2Zmc2V0ID0gMWAgaXMgc3VmZmljaWVudC4gVGhlIGNsYWltIHF1ZXVlIGlzWQEgICBsb29rZWQgdXAgYXQgYHJlbGF5X3BhcmVudGAsIHdoaWNoIHNpdHMgYmVoaW5kIHRoZSB0aXAuIE9mZnNldCAwIGNvdmVycyBzeW5jaHJvbm91c1UBICAgYmFja2luZyBpbiB0aGUgbmV4dCByZWxheSBibG9jazsgb2Zmc2V0IDEgY292ZXJzIGFzeW5jaHJvbm91cyBiYWNraW5nIGluIHRoZSByZWxheVAgICBibG9jayBhZnRlciB0aGF0LgAtASAtICoqVjMgY2FuZGlkYXRlcyoqOiBvZmZzZXQgMCBpcyBub3QgcmVhY2hhYmxlIOKAlCB0aGUgYHNjaGVkdWxpbmdfcGFyZW50YFUBICAgaXMgdXN1YWxseSB0aGUgbGVhZiB3aGVuIHBpY2tlZCwgYnV0IGl0cyBjaGlsZCBpcyBhbHJlYWR5IGJlaW5nIGJ1aWx0LCBzbyB0aGVyZSBpczkBICAgbm8gb3Bwb3J0dW5pdHkgdG8gbGFuZCBpbiB0aGUgbmV4dCByZWxheSBibG9jay4gT2Zmc2V0IDEgaXMgcmVhY2hhYmxlIHVuZGVyVQEgICBzeW5jaHJvbm91cy1iYWNraW5nIHNlbWFudGljcy4gRm9yIGVsYXN0aWMgc2NhbGluZyB0aGUgbGFzdCBibG9jayBpbiB0aGUgYnVuZGxlIGlzNQEgICBidWlsdCBuZWFyIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc2xvdCwgd2hpY2ggbWFrZXMgb2Zmc2V0IDEgdG9vIHRpZ2h0IOKAlFUBICAgYG1heF9jbGFpbV9xdWV1ZV9vZmZzZXQgPSAyYCBpcyB0aGUgbWluaW11bSBjYXAgdGhhdCBrZWVwcyBlbGFzdGljIHNjYWxpbmcgdmlhYmxlLgBVASBOb3RlOiB0aGlzIG1ldGhvZCB3YXMgYWRkZWQgaW4gYGFwaV92ZXJzaW9uID0gMmAuIENvbGxhdG9ycyBjYWxsaW5nIG9uIHJ1bnRpbWVzIHRoYXRNASBvbmx5IGltcGxlbWVudCBgYXBpX3ZlcnNpb24gPSAxYCBvZiBbYFJlbGF5UGFyZW50T2Zmc2V0QXBpYF0gd2lsbCByZWNlaXZlIGFuIGVycm9ySQEgYW5kIHNob3VsZCBmYWxsIGJhY2sgdG8gYSBzZW5zaWJsZSBkZWZhdWx0IChjdXJyZW50IGNvbGxhdG9yIGRlZmF1bHRzOiBgMWAgb24gdGhlhCBWMyBwYXRoLCBgMGAgb24gdGhlIFYxL1YyIHBhdGgpLgD4IFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9pc3N1ZXMvODg5Mz4APFEBIEFQSSB0byB0ZWxsIHRoZSBub2RlIHNpZGUgaG93IHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIGJlIGNob3NlbiBhbmQgaG93IGNsYWltIHF1ZXVlYCBvZmZzZXRzIGFyZSBkZXRlcm1pbmVkLgBZASBBIGxhcmdlciByZWxheSBwYXJlbnQgb2Zmc2V0IGluZGljYXRlcyB0aGF0IHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIG5vdCBiZSB0aGUgdGlwIG9mUQEgdGhlIHJlbGF5IGNoYWluLCBidXQgYE5gIGJsb2NrcyBiZWhpbmQgdGhlIHRpcC4gVGhpcyBvZmZzZXQgaXMgdGhlbiBlbmZvcmNlZCBieSB0aGUkIHJ1bnRpbWUuAFkBIFRoZSBtYXggY2xhaW0gcXVldWUgb2Zmc2V0IGRldGVybWluZXMgaG93IGZhciAiaW50byB0aGUgZnV0dXJlIiBjb2xsYXRvcnMgdGFyZ2V0IHdoZW5RASBzZWxlY3RpbmcgY29yZXMgZnJvbSB0aGUgY2xhaW0gcXVldWUuIFRoaXMgcHJvdmlkZXMgYXN5bmMgYmFja2luZyBmbGV4aWJpbGl0eSB3aGlsZaggcHJldmVudGluZyBjb2xsYXRvcnMgZnJvbSBza2lwcGluZyBzbG90cy74IFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9pc3N1ZXMvODg5Mz4ARCBWZXJzaW9uIGhpc3Rvcnk69CAtIFZlcnNpb24gMTogSW5pdGlhbCB2ZXJzaW9uIHdpdGggYHJlbGF5X3BhcmVudF9vZmZzZXRgIG9ubHnMIC0gVmVyc2lvbiAyOiBBZGRlZCBgbWF4X2NsYWltX3F1ZXVlX29mZnNldGAgbWV0aG9kCABgQXVyYVVuaW5jbHVkZWRTZWdtZW50QXBpBDhjYW5fYnVpbGRfdXBvbgg0aW5jbHVkZWRfaGFzaDwQc2xvdEUGXQEoOQEgV2hldGhlciBpdCBpcyBsZWdhbCB0byBleHRlbmQgdGhlIGNoYWluLCBhc3N1bWluZyB0aGUgZ2l2ZW4gYmxvY2sgaXMgdGhlIG1vc3Q1ASByZWNlbnRseSBpbmNsdWRlZCBvbmUgYXMtb2YgdGhlIHJlbGF5IHBhcmVudCB0aGF0IHdpbGwgYmUgYnVpbHQgYWdhaW5zdCwgYW5kcCB0aGUgZ2l2ZW4gcmVsYXkgY2hhaW4gc2xvdC4AUQEgVGhpcyBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIHRoZSBsb2dpYyB0aGUgcnVudGltZSB1c2VzIHdoZW4gdmFsaWRhdGluZyBibG9ja3MgdG84IGF2b2lkIGlzc3Vlcy4AYQEgV2hlbiB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGlzIGVtcHR5LCBpLmUuIGBpbmNsdWRlZF9oYXNoID09IGF0YCwgd2hlcmUgYXQgaXMgdGhlIGJsb2NrYQEgd2hvc2Ugc3RhdGUgd2UgYXJlIHF1ZXJ5aW5nIGFnYWluc3QsIHRoaXMgbXVzdCBhbHdheXMgcmV0dXJuIGB0cnVlYCBhcyBsb25nIGFzIHRoZSBzbG90vCBpcyBtb3JlIHJlY2VudCB0aGFuIHRoZSBpbmNsdWRlZCBibG9jayBpdHNlbGYuADQ1ASBUaGlzIHJ1bnRpbWUgQVBJIGlzIHVzZWQgdG8gaW5mb3JtIHBvdGVudGlhbCBibG9jayBhdXRob3JzIHdoZXRoZXIgdGhleSB3aWxsJQEgaGF2ZSB0aGUgcmlnaHQgdG8gYXV0aG9yIGF0IGEgc2xvdCwgYXNzdW1pbmcgdGhleSBoYXZlIGNsYWltZWQgdGhlIHNsb3QuAHUBIEluIHBhcnRpY3VsYXIsIHRoaXMgQVBJIGFsbG93cyBBdXJhLWJhc2VkIHBhcmFjaGFpbnMgdG8gcmVndWxhdGUgdGhlaXIgInVuaW5jbHVkZWQgc2VnbWVudCIsbQEgd2hpY2ggaXMgdGhlIHNlY3Rpb24gb2YgdGhlIGhlYWQgb2YgdGhlIGNoYWluIHdoaWNoIGhhcyBub3QgeWV0IGJlZW4gbWFkZSBhdmFpbGFibGUgaW4gdGhlNCByZWxheSBjaGFpbi4AYQEgV2hlbiB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGlzIHNob3J0LCBBdXJhIGNoYWlucyB3aWxsIGFsbG93IGF1dGhvcnMgdG8gY3JlYXRlIG11bHRpcGxlXQEgYmxvY2tzIHBlciBzbG90IGluIG9yZGVyIHRvIGJ1aWxkIGEgYmFja2xvZy4gV2hlbiBpdCBpcyBzYXR1cmF0ZWQsIHRoaXMgQVBJIHdpbGwgbGltaXSoIHRoZSBhbW91bnQgb2YgYmxvY2tzIHRoYXQgY2FuIGJlIGNyZWF0ZWQuACQgQ2hhbmdlczqRASAtIFZlcnNpb24gMjogVXBkYXRlIHRvIGBjYW5fYnVpbGRfdXBvbmAgdG8gdGFrZSBhIHJlbGF5IGNoYWluIGBTbG90YCBpbnN0ZWFkIG9mIGEgcGFyYWNoYWluIGBTbG90YC4IABBDb3JlDBx2ZXJzaW9uAL0EBJAgUmV0dXJucyB0aGUgdmVyc2lvbiBvZiB0aGUgcnVudGltZS4ANGV4ZWN1dGVfYmxvY2sEFGJsb2NrCQcQBGQgRXhlY3V0ZSB0aGUgZ2l2ZW4gYmxvY2suAEBpbml0aWFsaXplX2Jsb2NrBBhoZWFkZXJcFQcEQQEgSW5pdGlhbGl6ZSBhIGJsb2NrIHdpdGggdGhlIGdpdmVuIGhlYWRlciBhbmQgcmV0dXJuIHRoZSBydW50aW1lIGV4ZWN1dGl2ZSBtb2RlLgAEIQEgVGhlIGBDb3JlYCBydW50aW1lIGFwaSB0aGF0IGV2ZXJ5IFN1YnN0cmF0ZSBydW50aW1lIG5lZWRzIHRvIGltcGxlbWVudC4UACBNZXRhZGF0YQwgbWV0YWRhdGEAGQcEjCBSZXR1cm5zIHRoZSBtZXRhZGF0YSBvZiBhIHJ1bnRpbWUuAExtZXRhZGF0YV9hdF92ZXJzaW9uBBx2ZXJzaW9uOB0HEKQgUmV0dXJucyB0aGUgbWV0YWRhdGEgYXQgYSBnaXZlbiB2ZXJzaW9uLgAFASBJZiB0aGUgZ2l2ZW4gYHZlcnNpb25gIGlzbid0IHN1cHBvcnRlZCwgdGhpcyB3aWxsIHJldHVybiBgTm9uZWAudQEgVXNlIFtgU2VsZjo6bWV0YWRhdGFfdmVyc2lvbnNgXSB0byBmaW5kIG91dCBhYm91dCBzdXBwb3J0ZWQgbWV0YWRhdGEgdmVyc2lvbiBvZiB0aGUgcnVudGltZS4ARG1ldGFkYXRhX3ZlcnNpb25zACEHDKQgUmV0dXJucyB0aGUgc3VwcG9ydGVkIG1ldGFkYXRhIHZlcnNpb25zLgDAIFRoaXMgY2FuIGJlIHVzZWQgdG8gY2FsbCBgbWV0YWRhdGFfYXRfdmVyc2lvbmAuAAQBASBUaGUgYE1ldGFkYXRhYCBhcGkgdHJhaXQgdGhhdCByZXR1cm5zIG1ldGFkYXRhIGZvciB0aGUgcnVudGltZS4IADBCbG9ja0J1aWxkZXIQPGFwcGx5X2V4dHJpbnNpYwQkZXh0cmluc2lj2QQlBxBsIEFwcGx5IHRoZSBnaXZlbiBleHRyaW5zaWMuADkBIFJldHVybnMgYW4gaW5jbHVzaW9uIG91dGNvbWUgd2hpY2ggc3BlY2lmaWVzIGlmIHRoaXMgZXh0cmluc2ljIGlzIGluY2x1ZGVkIGluTCB0aGlzIGJsb2NrIG9yIG5vdC4AOGZpbmFsaXplX2Jsb2NrAFwEaCBGaW5pc2ggdGhlIGN1cnJlbnQgYmxvY2suAExpbmhlcmVudF9leHRyaW5zaWNzBCBpbmhlcmVudDUH5QQEPQEgR2VuZXJhdGUgaW5oZXJlbnQgZXh0cmluc2ljcy4gVGhlIGluaGVyZW50IGRhdGEgd2lsbCB2YXJ5IGZyb20gY2hhaW4gdG8gY2hhaW4uADxjaGVja19pbmhlcmVudHMIFGJsb2NrCQcQZGF0YTUHRQcEVQEgQ2hlY2sgdGhhdCB0aGUgaW5oZXJlbnRzIGFyZSB2YWxpZC4gVGhlIGluaGVyZW50IGRhdGEgd2lsbCB2YXJ5IGZyb20gY2hhaW4gdG8gY2hhaW4uAARxASBUaGUgYEJsb2NrQnVpbGRlcmAgYXBpIHRyYWl0IHRoYXQgcHJvdmlkZXMgdGhlIHJlcXVpcmVkIGZ1bmN0aW9uYWxpdHkgZm9yIGJ1aWxkaW5nIGEgYmxvY2suGABYVGFnZ2VkVHJhbnNhY3Rpb25RdWV1ZQRQdmFsaWRhdGVfdHJhbnNhY3Rpb24MGHNvdXJjZUkHCHR42QQoYmxvY2tfaGFzaDxNByRoIFZhbGlkYXRlIHRoZSB0cmFuc2FjdGlvbi4AZQEgVGhpcyBtZXRob2QgaXMgaW52b2tlZCBieSB0aGUgdHJhbnNhY3Rpb24gcG9vbCB0byBsZWFybiBkZXRhaWxzIGFib3V0IGdpdmVuIHRyYW5zYWN0aW9uLkUBIFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgbWFrZSBzdXJlIHRvIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHRyYW5zYWN0aW9uTQEgYWdhaW5zdCBjdXJyZW50IHN0YXRlLiBUaGUgZ2l2ZW4gYGJsb2NrX2hhc2hgIGNvcnJlc3BvbmRzIHRvIHRoZSBoYXNoIG9mIHRoZSBibG9ja3wgdGhhdCBpcyB1c2VkIGFzIGN1cnJlbnQgc3RhdGUuAEUBIE5vdGUgdGhhdCB0aGlzIGNhbGwgbWF5IGJlIHBlcmZvcm1lZCBieSB0aGUgcG9vbCBtdWx0aXBsZSB0aW1lcyBhbmQgdHJhbnNhY3Rpb25zpCBtaWdodCBiZSB2ZXJpZmllZCBpbiBhbnkgcG9zc2libGUgb3JkZXIuAARNASBUaGUgYFRhZ2dlZFRyYW5zYWN0aW9uUXVldWVgIGFwaSB0cmFpdCBmb3IgaW50ZXJmZXJpbmcgd2l0aCB0aGUgdHJhbnNhY3Rpb24gcXVldWUuDABET2ZmY2hhaW5Xb3JrZXJBcGkEPG9mZmNoYWluX3dvcmtlcgQYaGVhZGVyXBAEyCBTdGFydHMgdGhlIG9mZi1jaGFpbiB0YXNrIGZvciBnaXZlbiBibG9jayBoZWFkZXIuAARkIFRoZSBvZmZjaGFpbiB3b3JrZXIgYXBpLggALFNlc3Npb25LZXlzCFRnZW5lcmF0ZV9zZXNzaW9uX2tleXMIFG93bmVyGBBzZWVkVQFVBxwVASBHZW5lcmF0ZSBhIHNldCBvZiBzZXNzaW9uIGtleXMgd2l0aCBvcHRpb25hbGx5IHVzaW5nIHRoZSBnaXZlbiBzZWVkLgkBIFRoZSBrZXlzIHNob3VsZCBiZSBzdG9yZWQgd2l0aGluIHRoZSBrZXlzdG9yZSBleHBvc2VkIHZpYSBydW50aW1lPCBleHRlcm5hbGl0aWVzLgCwIFRoZSBzZWVkIG5lZWRzIHRvIGJlIGEgdmFsaWQgYHV0ZjhgIHN0cmluZy4A0CBSZXR1cm5zIHRoZSBjb25jYXRlbmF0ZWQgU0NBTEUgZW5jb2RlZCBwdWJsaWMga2V5cy4ATGRlY29kZV9zZXNzaW9uX2tleXMEHGVuY29kZWQYWQcMmCBEZWNvZGUgdGhlIGdpdmVuIHB1YmxpYyBzZXNzaW9uIGtleXMuANwgUmV0dXJucyB0aGUgbGlzdCBvZiBwdWJsaWMgcmF3IHB1YmxpYyBrZXlzICsga2V5IHR5cGUuAARoIFNlc3Npb24ga2V5cyBydW50aW1lIGFwaS4IADxBY2NvdW50Tm9uY2VBcGkENGFjY291bnRfbm9uY2UEHGFjY291bnQEOATAIEdldCBjdXJyZW50IGFjY291bnQgbm9uY2Ugb2YgZ2l2ZW4gYEFjY291bnRJZGAuAASAIFRoZSBBUEkgdG8gcXVlcnkgYWNjb3VudCBub25jZS4EAFRUcmFuc2FjdGlvblBheW1lbnRBcGkQKHF1ZXJ5X2luZm8IDHV4dNkEDGxlbjhlBwAARHF1ZXJ5X2ZlZV9kZXRhaWxzCAx1eHTZBAxsZW44aQcAAExxdWVyeV93ZWlnaHRfdG9fZmVlBBh3ZWlnaHQpAfwAAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4/AAAABAAZFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGkQPHF1ZXJ5X2NhbGxfaW5mbwgQY2FsbCAMbGVuOGUHBEkBIFF1ZXJ5IGluZm9ybWF0aW9uIG9mIGEgZGlzcGF0Y2ggY2xhc3MsIHdlaWdodCwgYW5kIGZlZSBvZiBhIGdpdmVuIGVuY29kZWQgYENhbGxgLgBYcXVlcnlfY2FsbF9mZWVfZGV0YWlscwgQY2FsbCAMbGVuOGkHBLQgUXVlcnkgZmVlIGRldGFpbHMgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4ATHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodCkB/AQBASBRdWVyeSB0aGUgb3V0cHV0IG9mIHRoZSBjdXJyZW50IGBXZWlnaHRUb0ZlZWAgZ2l2ZW4gc29tZSBpbnB1dC4ATHF1ZXJ5X2xlbmd0aF90b19mZWUEGGxlbmd0aDj8BAEBIFF1ZXJ5IHRoZSBvdXRwdXQgb2YgdGhlIGN1cnJlbnQgYExlbmd0aFRvRmVlYCBnaXZlbiBzb21lIGlucHV0LgAADAA0WGNtUGF5bWVudEFwaRB8cXVlcnlfYWNjZXB0YWJsZV9wYXltZW50X2Fzc2V0cwQseGNtX3ZlcnNpb244dQcUtCBSZXR1cm5zIGEgbGlzdCBvZiBhY2NlcHRhYmxlIHBheW1lbnQgYXNzZXRzLgAwICMgQXJndW1lbnRzAGggKiBgeGNtX3ZlcnNpb25gOiBWZXJzaW9uLgBAcXVlcnlfeGNtX3dlaWdodAQcbWVzc2FnZQ0CgQcUqCBSZXR1cm5zIGEgd2VpZ2h0IG5lZWRlZCB0byBleGVjdXRlIGEgWENNLgAwICMgQXJndW1lbnRzAHQgKiBgbWVzc2FnZWA6IGBWZXJzaW9uZWRYY21gLgBkcXVlcnlfd2VpZ2h0X3RvX2Fzc2V0X2ZlZQgYd2VpZ2h0KQEUYXNzZXSBA4UHGOggQ29udmVydHMgYSB3ZWlnaHQgaW50byBhIGZlZSBmb3IgdGhlIHNwZWNpZmllZCBgQXNzZXRJZGAuADAgIyBBcmd1bWVudHMAiCAqIGB3ZWlnaHRgOiBjb252ZXJ0aWJsZSBgV2VpZ2h0YC58ICogYGFzc2V0YDogYFZlcnNpb25lZEFzc2V0SWRgLgBMcXVlcnlfZGVsaXZlcnlfZmVlcwwsZGVzdGluYXRpb27BARxtZXNzYWdlDQIgYXNzZXRfaWSBA4kHKGAgUXVlcnkgZGVsaXZlcnkgZmVlcyBWMi4AHQEgR2V0IGRlbGl2ZXJ5IGZlZXMgZm9yIHNlbmRpbmcgYSBzcGVjaWZpYyBgbWVzc2FnZWAgdG8gYSBgZGVzdGluYXRpb25gLvQgVGhlc2UgYWx3YXlzIGNvbWUgaW4gYSBzcGVjaWZpYyBhc3NldCwgZGVmaW5lZCBieSB0aGUgY2hhaW4uADAgIyBBcmd1bWVudHOBASAqIGBtZXNzYWdlYDogVGhlIG1lc3NhZ2UgdGhhdCdsbCBiZSBzZW50LCBuZWNlc3NhcnkgYmVjYXVzZSBtb3N0IGRlbGl2ZXJ5IGZlZXMgYXJlIGJhc2VkIG9uIHRoZVwgICBzaXplIG9mIHRoZSBtZXNzYWdlLmEBICogYGRlc3RpbmF0aW9uYDogVGhlIGRlc3RpbmF0aW9uIHRvIHNlbmQgdGhlIG1lc3NhZ2UgdG8uIERpZmZlcmVudCBkZXN0aW5hdGlvbnMgbWF5IHVzZcAgICBkaWZmZXJlbnQgc2VuZGVycyB0aGF0IGNoYXJnZSBkaWZmZXJlbnQgZmVlcy4ALHAgQSB0cmFpdCBvZiBYQ00gcGF5bWVudCBBUEkuAKggQVBJIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgZm9yIG9idGFpbmluZzoAxCAqIHRoZSB3ZWlnaHQgcmVxdWlyZWQgdG8gZXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSwFASAqIGEgbGlzdCBvZiBhY2NlcHRhYmxlIGBBc3NldElkYHMgZm9yIG1lc3NhZ2UgZXhlY3V0aW9uIHBheW1lbnQsAQEgKiB0aGUgY29zdCBvZiB0aGUgd2VpZ2h0IGluIHRoZSBzcGVjaWZpZWQgYWNjZXB0YWJsZSBgQXNzZXRJZGAuoCAqIHRoZSBmZWVzIGZvciBhbiBYQ00gbWVzc2FnZSBkZWxpdmVyeS4A8CBUbyBkZXRlcm1pbmUgdGhlIGV4ZWN1dGlvbiB3ZWlnaHQgb2YgdGhlIGNhbGxzIHJlcXVpcmVkIGZvcnUBIFtgeGNtOjpsYXRlc3Q6Okluc3RydWN0aW9uOjpUcmFuc2FjdGBdIGluc3RydWN0aW9uLCBgVHJhbnNhY3Rpb25QYXltZW50Q2FsbEFwaWAgY2FuIGJlIHVzZWQuCAAkRHJ5UnVuQXBpCDBkcnlfcnVuX2NhbGwMGG9yaWdpbsgQY2FsbCBMcmVzdWx0X3hjbXNfdmVyc2lvbjiNBwREIERyeSBydW4gY2FsbCBWMi4ALGRyeV9ydW5feGNtCDxvcmlnaW5fbG9jYXRpb27BAQx4Y21RA7kHBFAgRHJ5IHJ1biBYQ00gcHJvZ3JhbQAksQEgQVBJIGZvciBkcnktcnVubmluZyBleHRyaW5zaWNzIGFuZCBYQ00gcHJvZ3JhbXMgdG8gZ2V0IHRoZSBwcm9ncmFtcyB0aGF0IG5lZWQgdG8gYmUgcGFzc2VkIHRvIHRoZSBmZWVzIEFQSS4AgQEgQWxsIGNhbGxzIHJldHVybiBhIHZlY3RvciBvZiB0dXBsZXMgKGxvY2F0aW9uLCB4Y20pIHdoZXJlIGVhY2ggInhjbSIgaXMgZXhlY3V0ZWQgaW4gImxvY2F0aW9uIi7kIElmIHRoZXJlJ3MgbG9jYWwgZXhlY3V0aW9uLCB0aGUgbG9jYXRpb24gd2lsbCBiZSAiSGVyZSIuHQEgVGhpcyB2ZWN0b3IgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIGJvdGggZXhlY3V0aW9uIGFuZCBkZWxpdmVyeSBmZWVzLgCZASBDYWxscyBvciBYQ01zIG1pZ2h0IGZhaWwgd2hlbiBleGVjdXRlZCwgdGhpcyBkb2Vzbid0IG1lYW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjYWxscyB3aWxsIGJlIGFuIGBFcnJgLmUBIEluIHRob3NlIGNhc2VzLCB0aGVyZSBtaWdodCBzdGlsbCBiZSBhIHZhbGlkIHJlc3VsdCwgd2l0aCB0aGUgZXhlY3V0aW9uIGVycm9yIGluc2lkZSBpdC5lASBUaGUgb25seSByZWFzb25zIHdoeSB0aGVzZSBjYWxscyBtaWdodCByZXR1cm4gYW4gZXJyb3IgYXJlIGxpc3RlZCBpbiB0aGUgW2BFcnJvcmBdIGVudW0uCABQTG9jYXRpb25Ub0FjY291bnRBcGkEQGNvbnZlcnRfbG9jYXRpb24EIGxvY2F0aW9uwQHBBwSQIENvbnZlcnRzIGBMb2NhdGlvbmAgdG8gYEFjY291bnRJZGAuAAQNASBBUEkgZm9yIHVzZWZ1bCBjb252ZXJzaW9ucyBiZXR3ZWVuIFhDTSBgTG9jYXRpb25gIGFuZCBgQWNjb3VudElkYC4EADxUcnVzdGVkUXVlcnlBcGkISGlzX3RydXN0ZWRfcmVzZXJ2ZQgUYXNzZXTJByBsb2NhdGlvbsEBzQcU8CBSZXR1cm5zIGlmIHRoZSBsb2NhdGlvbiBpcyBhIHRydXN0ZWQgcmVzZXJ2ZSBmb3IgdGhlIGFzc2V0LgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAFRpc190cnVzdGVkX3RlbGVwb3J0ZXIIFGFzc2V0yQcgbG9jYXRpb27BAc0HFOAgUmV0dXJucyBpZiB0aGUgYXNzZXQgY2FuIGJlIHRlbGVwb3J0ZWQgdG8gdGhlIGxvY2F0aW9uLgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAATsIEFQSSBmb3IgcXVlcnlpbmcgdHJ1c3RlZCByZXNlcnZlcyBhbmQgdHJ1c3RlZCB0ZWxlcG9ydGVycy4EAFRBdXRob3JpemVkQWxpYXNlcnNBcGkITGF1dGhvcml6ZWRfYWxpYXNlcnMEGHRhcmdldMEB1QcE9CBSZXR1cm5zIGxvY2F0aW9ucyBhbGxvd2VkIHRvIGFsaWFzIGludG8gYW5kIGFjdCBhcyBgdGFyZ2V0YC4ATGlzX2F1dGhvcml6ZWRfYWxpYXMIGG9yaWdpbsEBGHRhcmdldMEB3QcEHQEgUmV0dXJucyB3aGV0aGVyIGBvcmlnaW5gIGlzIGFsbG93ZWQgdG8gYWxpYXMgaW50byBhbmQgYWN0IGFzIGB0YXJnZXRgLgAEoCBBUEkgZm9yIHF1ZXJ5aW5nIFhDTSBhdXRob3JpemVkIGFsaWFzZXMEAFBDb2xsZWN0Q29sbGF0aW9uSW5mbwRYY29sbGVjdF9jb2xsYXRpb25faW5mbwQYaGVhZGVyXOEHEJwgQ29sbGVjdCBpbmZvcm1hdGlvbiBhYm91dCBhIGNvbGxhdGlvbi4A9CBUaGUgZ2l2ZW4gYGhlYWRlcmAgaXMgdGhlIGhlYWRlciBvZiB0aGUgYnVpbHQgYmxvY2sgZm9yIHRoYXSoIHdlIGFyZSBjb2xsZWN0aW5nIHRoZSBjb2xsYXRpb24gaW5mbyBmb3IuABTYIFJ1bnRpbWUgYXBpIHRvIGNvbGxlY3QgaW5mb3JtYXRpb24gYWJvdXQgYSBjb2xsYXRpb24uAEQgVmVyc2lvbiBoaXN0b3J5OgEBIC0gVmVyc2lvbiAyOiBDaGFuZ2VkIFtgU2VsZjo6Y29sbGVjdF9jb2xsYXRpb25faW5mb2BdIHNpZ25hdHVyZTUBIC0gVmVyc2lvbiAzOiBTaWduYWxzIHRvIHRoZSBub2RlIHRvIHVzZSB2ZXJzaW9uIDEgb2YgW2BQYXJhY2hhaW5CbG9ja0RhdGFgXS4MAFRUcmFuc2FjdGlvblN0b3JhZ2VBcGkIQHJldGVudGlvbl9wZXJpb2QAOAS4IFJldGVudGlvbiBwZXJpb2QgZm9yIGluZGV4ZWQgZGF0YSwgaW4gYmxvY2tzLgBQaW5kZXhlZF90cmFuc2FjdGlvbnMEFGJsb2NrOO0HEKggSW5kZXhlZC10cmFuc2FjdGlvbiBtZXRhZGF0YSBmb3IgYGJsb2NrYC4AEQEgUmV0dXJucyBhbiBlbXB0eSB2ZWN0b3IgaWYgdGhlIGJsb2NrIGhhcyBubyBpbmRleGVkIHRyYW5zYWN0aW9ucyBvcoQgaXMgb3V0c2lkZSB0aGUgcmV0ZW50aW9uIHdpbmRvdy4ABMwgUnVudGltZSBBUEkgdHJhaXQgZm9yIHRyYW5zYWN0aW9uIHN0b3JhZ2Ugc3VwcG9ydC4IADRIb3BSdW50aW1lQXBpEEhtYXhfcHJvbW90aW9uX3NpemUAOBQRASBNYXhpbXVtIGJsb2Igc2l6ZSAoaW4gYnl0ZXMpIHRoZSBydW50aW1lIHdpbGwgYWNjZXB0IGZvciBwcm9tb3Rpb24uABEBIEF1dGhvcml0YXRpdmUg4oCUIHRoZSBub2RlIHJlamVjdHMgb3ZlcnNpemVkIHN1Ym1pc3Npb25zIGF0IHRoZSBSUEMdASBib3VuZGFyeSB1c2luZyB0aGlzIHZhbHVlLCBiZWZvcmUgYW55IHBlci1hY2NvdW50IGF1dGhvcml6YXRpb24gbG9va3VwbCBvciBzaWduYXR1cmUgdmVyaWZpY2F0aW9uLgBMY2FuX2FjY291bnRfcHJvbW90ZQgMd2hvBCBkYXRhX2xlbjhdARgdASBXaGV0aGVyIGB3aG9gIG1heSBzdWJtaXQgYSBIT1AgYmxvYiBvZiBgZGF0YV9sZW5gIGJ5dGVzIGZvciBwcm9tb3Rpb24uABUBIFJldHVybnMgYGZhbHNlYCBmb3IgYW55IHBlci1hY2NvdW50ICJub3QgYWxsb3dlZCIgcmVhc29uIOKAlCB1bmtub3duEQEgYWNjb3VudCwgZXhoYXVzdGVkIHF1b3RhLCBzaXplIG91dHNpZGUgYSBwZXItYWNjb3VudCB0aWVyLCBldGMuIFRoZeggYWJzb2x1dGUgcGVyLXN1Ym1pc3Npb24gc2l6ZSBjYXAgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mDQEgW2BTZWxmOjptYXhfcHJvbW90aW9uX3NpemVgXTsgdGhpcyBob29rIGlzIGZvciBwZXItYWNjb3VudCBwb2xpY3kuAGhjcmVhdGVfcHJvbW90aW9uX2V4dHJpbnNpYxAQZGF0YRgYc2lnbmVyjQEkc2lnbmF0dXJllQFAc3VibWl0X3RpbWVzdGFtcCjZBCwpASBDb25zdHJ1Y3QgYW4gdW5zaWduZWQgcHJvbW90aW9uIGV4dHJpbnNpYyBjYXJyeWluZyB0aGUgdXNlcidzIHN1Ym1pdC10aW1lIQEgKGluIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBVbml4IGVwb2NoKSwgc2lnbmVyLCBzaWduYXR1cmUsIGFuZCB0aW1lc3RhbXDMIHNvIHRoZSBydW50aW1lIHBhbGxldCBjYW4gdmVyaWZ5IGNvbnNlbnQgb24tY2hhaW4uAAkBIGBzdWJtaXRfdGltZXN0YW1wYCBpcyBib3VuZCBpbnRvIHRoZSBzaWduZWQgcGF5bG9hZC4gSW1wbGVtZW50aW5nBQEgcnVudGltZXMgKiptdXN0KiogcmVqZWN0IHByb21vdGlvbnMgd2hvc2UgdGltZXN0YW1wIGlzIG91dHNpZGUgYRUBIHRvbGVyYW5jZSB3aW5kb3cgYXJvdW5kIHRoZSBjdXJyZW50IG9uLWNoYWluIGNsb2NrIOKAlCBvdGhlcndpc2UgdGhlEQEgc2FtZSBgKGRhdGEsIHNpZ25lciwgc2lnbmF0dXJlKWAgdHVwbGUgY2FuIGJlIHJlcGxheWVkIGluZGVmaW5pdGVseRUBIGZyb20gdGhlIGNvbGxhdG9yJ3MgcGVyc2lzdGVkIG1ldGFkYXRhLiBUaGUgd2lkdGggb2YgdGhlIHdpbmRvdyBpcyBh/CBydW50aW1lIHBvbGljeSBkZWNpc2lvbiAoY2xvY2sgc2tldyArIG1heCBhY2NlcHRhYmxlIHByb21vdGlvbswgbGF0ZW5jeSk7IGEgZmV3IGhvdXJzIGlzIGEgcmVhc29uYWJsZSB1cHBlciBib3VuZC4AUGlzX3Byb21vdGVkX29uX2NoYWluBBBoYXNoCF0BEPAgV2hldGhlciB0aGUgY29udGVudCB3aXRoIGBoYXNoYCBpcyBhbHJlYWR5IHN0b3JlZCBvbi1jaGFpbi4AGQEgVXNlZCBieSBIT1AncyBtYWludGVuYW5jZSB0YXNrIHRvIGNvbmZpcm0gdGhhdCBhIHByZXZpb3VzbHkgc3VibWl0dGVkzCBwcm9tb3Rpb24gZXh0cmluc2ljIGFjdHVhbGx5IG1hZGUgaXQgaW50byBhIGJsb2NrLgAQVCBSdW50aW1lIEFQSSBmb3IgSE9QLgANASBSdW50aW1lcyB0aGF0IHN1cHBvcnQgSE9QIGltcGxlbWVudCB0aGlzIEFQSSBzbyB0aGUgbm9kZSBjYW4gY2hlY2shASBhdXRob3JpemF0aW9uIGFuZCBwcm9tb3RlIG5lYXItZXhwaXJ5IHBvb2wgZW50cmllcyB0byBvbi1jaGFpbiBzdG9yYWdlLgQAdEJ1bGxldGluVHJhbnNhY3Rpb25TdG9yYWdlQXBpDFRhY2NvdW50X2F1dGhvcml6YXRpb24EHGFjY291bnQE+QcICQEgQXV0aG9yaXphdGlvbiBzdW1tYXJ5IGZvciBgYWNjb3VudGAsIG9yIGBOb25lYCBpZiB0aGUgYWNjb3VudCBoYXNwIG5vIHVuZXhwaXJlZCBhdXRob3JpemF0aW9uLgAkY2FuX3N0b3JlCBxhY2NvdW50BCBkYXRhX2xlbjhdAQgdASBSZXR1cm5zIGB0cnVlYCBpZmYgYSBgc3RvcmUoZGF0YSlgIGNhbGwgd2hlcmUgYGRhdGEubGVuKCkgPT0gZGF0YV9sZW5g7CB3b3VsZCBjdXJyZW50bHkgcGFzcyB0cmFuc2FjdGlvbiB2YWxpZGF0aW9uIGZvciBgYWNjb3VudGAuACRjYW5fcmVuZXcIHGFjY291bnQEFGVudHJ5pQFdAQgpASBSZXR1cm5zIGB0cnVlYCBpZmYgYSBgcmVuZXcoZW50cnkpYCBjYWxsIHdvdWxkIGN1cnJlbnRseSBwYXNzIHRyYW5zYWN0aW9uaCB2YWxpZGF0aW9uIGZvciBgYWNjb3VudGAuAAT8IFJ1bnRpbWUgQVBJIGZvciB0aGUgQnVsbGV0aW4gQ2hhaW4gdHJhbnNhY3Rpb24tc3RvcmFnZSBwYWxsZXQuBAA4R2VuZXNpc0J1aWxkZXIMLGJ1aWxkX3N0YXRlBBBqc29uGAEIKGUBIEJ1aWxkIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZnJvbSBhIEpTT04gYmxvYiBub3QgdXNpbmcgYW55IGRlZmF1bHRzIGFuZCBzdG9yZSBpdCBpbiB0aGUkIHN0b3JhZ2UuACkBIEluIHRoZSBjYXNlIG9mIGEgRlJBTUUtYmFzZWQgcnVudGltZSwgdGhpcyBmdW5jdGlvbiBkZXNlcmlhbGl6ZXMgdGhlIGZ1bGxVASBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gdGhlIGdpdmVuIEpTT04gYmxvYiBhbmQgcHV0cyBpdCBpbnRvIHRoZSBzdG9yYWdlLiBJZiB0aGVVASBwcm92aWRlZCBKU09OIGJsb2IgaXMgaW5jb3JyZWN0IG9yIGluY29tcGxldGUgb3IgdGhlIGRlc2VyaWFsaXphdGlvbiBmYWlscywgYW4gZXJyb3I0IGlzIHJldHVybmVkLgBdASBQbGVhc2Ugbm90ZSB0aGF0IHByb3ZpZGVkIEpTT04gYmxvYiBtdXN0IGNvbnRhaW4gYWxsIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZmllbGRzLCBub1wgZGVmYXVsdHMgd2lsbCBiZSB1c2VkLgAoZ2V0X3ByZXNldAQIaWQFCFUBOGEBIFJldHVybnMgYSBKU09OIGJsb2IgcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgaWRlbnRpZmllZCBieRggYGlkYC4AVQEgSWYgYGlkYCBpcyBgTm9uZWAgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gSlNPTiBibG9iIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkZWZhdWx0SQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBzdHJ1Y3Qgb2YgdGhlIHJ1bnRpbWUuIEltcGxlbWVudGF0aW9uIG11c3QgcHJvdmlkZSBkZWZhdWx0YCBgUnVudGltZUdlbmVzaXNDb25maWdgLgAhASBPdGhlcndpc2UgZnVuY3Rpb24gcmV0dXJucyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluLCBuYW1lZFEBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0IGlkZW50aWZpZWQgYnkgYGlkYCwgb3IgYE5vbmVgIGlmIHN1Y2ggcHJlc2V0IGRvZXMgbm90YQEgZXhpc3QuIFJldHVybmVkIGBWZWM8dTg+YCBjb250YWlucyBieXRlcyBvZiBKU09OIGJsb2IgKHBhdGNoKSB3aGljaCBjb21wcmlzZXMgYSBsaXN0IG9mTQEgKHBvdGVudGlhbGx5IG5lc3RlZCkga2V5LXZhbHVlIHBhaXJzIHRoYXQgYXJlIGludGVuZGVkIGZvciBjdXN0b21pemluZyB0aGUgZGVmYXVsdGUBIHJ1bnRpbWUgZ2VuZXNpcyBjb25maWcuIFRoZSBwYXRjaCBzaGFsbCBiZSBtZXJnZWQgKHJmYzczODYpIHdpdGggdGhlIEpTT04gcmVwcmVzZW50YXRpb25hASBvZiB0aGUgZGVmYXVsdCBgUnVudGltZUdlbmVzaXNDb25maWdgIHRvIGNyZWF0ZSBhIGNvbXByZWhlbnNpdmUgZ2VuZXNpcyBjb25maWcgdGhhdCBjYW6EIGJlIHVzZWQgaW4gYGJ1aWxkX3N0YXRlYCBtZXRob2QuADBwcmVzZXRfbmFtZXMACQgQUQEgUmV0dXJucyBhIGxpc3Qgb2YgaWRlbnRpZmllcnMgZm9yIGF2YWlsYWJsZSBidWlsdGluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0cy4AYQEgVGhlIHByZXNldHMgZnJvbSB0aGUgbGlzdCBjYW4gYmUgcXVlcmllZCB3aXRoIFtgR2VuZXNpc0J1aWxkZXI6OmdldF9wcmVzZXRgXSBtZXRob2QuIElmAQEgbm8gbmFtZWQgcHJlc2V0cyBhcmUgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWUgdGhlIGxpc3QgaXMgZW1wdHkuAATwIEFQSSB0byBpbnRlcmFjdCB3aXRoIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZm9yIHRoZSBydW50aW1lBABAR2V0UGFyYWNoYWluSW5mbwQwcGFyYWNoYWluX2lkAJwEsCBSZXRyaWV2ZSB0aGUgcGFyYWNoYWluIGlkIHVzZWQgZm9yIHJ1bnRpbWUuAAQNASBSdW50aW1lIGFwaSB1c2VkIHRvIGFjY2VzcyBnZW5lcmFsIGluZm8gYWJvdXQgYSBwYXJhY2hhaW4gcnVudGltZS4EACDtAw0IAA=="; bulletin_metadata_default = binMeta2; } }); @@ -196,7 +196,7 @@ var extensions2 = {}; var getMetadata2 = () => Promise.resolve().then(() => (init_bulletin_metadata(), bulletin_metadata_exports)).then( (module2) => toBinary("default" in module2 ? module2.default : module2) ); -var genesis2 = "0x744960c32e3a3df5440e1ecd4d34096f1ce2230d7016a5ada8a765d5a622b4ea"; +var genesis2 = "0xe101f0fa4627d29a257645e02be86d80378fea1a2bf8fa6a918d150ebc760a59"; var _allDescriptors2 = { descriptors: descriptorValues2, metadataTypes: metadataTypes2, asset: asset2, extensions: extensions2, getMetadata: getMetadata2, genesis: genesis2 }; var bulletin_default = _allDescriptors2; @@ -255,7 +255,7 @@ var XcmVersionedAsset = import_polkadot_api._Enum; // .papi/descriptors/src/index.ts var metadatas = { ["0x5d82548ee8362ca123514269ea6df6f1ad252e4f120516b810bcb2cb29957eb8"]: stack_template_default, - ["0x1a82e5143be3211ded412b0368b486ce83bd41a80ec95eb267f6c204adda8365"]: bulletin_default + ["0xcfc45b6f601f6e2971053639331432857feea30c7668279df079b33eed7e01dc"]: bulletin_default }; var getMetadata3 = async (codeHash) => { try { diff --git a/web/.papi/descriptors/dist/index.mjs b/web/.papi/descriptors/dist/index.mjs index 053905a0..a02a9c00 100644 --- a/web/.papi/descriptors/dist/index.mjs +++ b/web/.papi/descriptors/dist/index.mjs @@ -14,8 +14,8 @@ var toBinary = (base64) => { }; // .papi/descriptors/src/stack_template.ts -var descriptorValues = import("./descriptors-WIWSIN73.mjs").then((module) => module["Stack_template"]); -var metadataTypes = import("./metadataTypes-N3ONLFCD.mjs").then( +var descriptorValues = import("./descriptors-VDZJ5VNF.mjs").then((module) => module["Stack_template"]); +var metadataTypes = import("./metadataTypes-YGW4UPUJ.mjs").then( (module) => toBinary("default" in module ? module.default : module) ); var asset = {}; @@ -28,16 +28,16 @@ var _allDescriptors = { descriptors: descriptorValues, metadataTypes, asset, ext var stack_template_default = _allDescriptors; // .papi/descriptors/src/bulletin.ts -var descriptorValues2 = import("./descriptors-WIWSIN73.mjs").then((module) => module["Bulletin"]); -var metadataTypes2 = import("./metadataTypes-N3ONLFCD.mjs").then( +var descriptorValues2 = import("./descriptors-VDZJ5VNF.mjs").then((module) => module["Bulletin"]); +var metadataTypes2 = import("./metadataTypes-YGW4UPUJ.mjs").then( (module) => toBinary("default" in module ? module.default : module) ); var asset2 = {}; var extensions2 = {}; -var getMetadata2 = () => import("./bulletin_metadata-6D4OUQ3Y.mjs").then( +var getMetadata2 = () => import("./bulletin_metadata-5EJPF4RF.mjs").then( (module) => toBinary("default" in module ? module.default : module) ); -var genesis2 = "0x744960c32e3a3df5440e1ecd4d34096f1ce2230d7016a5ada8a765d5a622b4ea"; +var genesis2 = "0xe101f0fa4627d29a257645e02be86d80378fea1a2bf8fa6a918d150ebc760a59"; var _allDescriptors2 = { descriptors: descriptorValues2, metadataTypes: metadataTypes2, asset: asset2, extensions: extensions2, getMetadata: getMetadata2, genesis: genesis2 }; var bulletin_default = _allDescriptors2; @@ -96,7 +96,7 @@ var XcmVersionedAsset = _Enum; // .papi/descriptors/src/index.ts var metadatas = { ["0x5d82548ee8362ca123514269ea6df6f1ad252e4f120516b810bcb2cb29957eb8"]: stack_template_default, - ["0x1a82e5143be3211ded412b0368b486ce83bd41a80ec95eb267f6c204adda8365"]: bulletin_default + ["0xcfc45b6f601f6e2971053639331432857feea30c7668279df079b33eed7e01dc"]: bulletin_default }; var getMetadata3 = async (codeHash) => { try { diff --git a/web/.papi/descriptors/dist/metadataTypes-N3ONLFCD.mjs b/web/.papi/descriptors/dist/metadataTypes-N3ONLFCD.mjs deleted file mode 100644 index 3c54a652..00000000 --- a/web/.papi/descriptors/dist/metadataTypes-N3ONLFCD.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// .papi/descriptors/src/metadataTypes.ts -var content = "3QQAAAAQAQEFAAQBAQUAFAEBBQAcAAQAIAAEACQBAQUAIAEBBQAwAQEFABkCACAAIQIBAQUAKQIBAQUANAEBBQAtAgEBBQAYAQEFADkCAQEFAD0CAQEFAEECAQEFAE0CAQAEGHJlbWFyayQBAQUBAAQUcGFnZXMIAQEFAQAEEGNvZGUkAQEFAQAEFGl0ZW1zVQIBAQUBAAQQa2V5c1kCAQEFAQAIGHByZWZpeCQcc3Via2V5cwQBAQUBAAQkY29kZV9oYXNoIAEBBQEBBQEABDRkaXNwYXRjaF9pbmZvQAEBBQEACDhkaXNwYXRjaF9lcnJvcog0ZGlzcGF0Y2hfaW5mb0ABAQUBAQUBAQUBAAQcYWNjb3VudAABAQUBAAgYc2VuZGVyABBoYXNoIAEBBQEACCRjb2RlX2hhc2ggNGNoZWNrX3ZlcnNpb24UAQEFAQAIJGNvZGVfaGFzaCAUZXJyb3KIAQEFAQEFAQEFAHkCAQEFAH0CAQEFACQBAQUAgQIBAQUAiQIBAQUAcQIBAQUAWQIBAQUAnQIBAQUApQIBAQUArQIBAQUAsQIBAQUAuQIBAQUACAEACBBkYXRhxQJUaW5ib3VuZF9tZXNzYWdlc19kYXRh9QIBAQUBAAQcbWVzc2FnZSQBAQUBAQUBAARUcmVsYXlfY2hhaW5fYmxvY2tfbnVtBAEBBQEABBRjb3VudAQBAQUBAAgsd2VpZ2h0X3VzZWQYIGRtcV9oZWFkIAEBBQEABDBtZXNzYWdlX2hhc2iQAQAEDG5vdwgBAQUAAAAMAAAAAQMAAAAJAwAAABEDAAAAGQMBAAgQZGVzdB0DFHZhbHVlCAEBBQEADBhzb3VyY2UdAxBkZXN0HQMUdmFsdWUIAQEFAQAIEGRlc3QdAyhrZWVwX2FsaXZlFAEBBQEACAx3aG8dAxhhbW91bnQIAQEFAQAEDHdob8gBAQUBAAgMd2hvHQMgbmV3X2ZyZWUIAQEFAQAIJGRpcmVjdGlvbiEDFGRlbHRhCAEBBQEACBR2YWx1ZQgoa2VlcF9hbGl2ZRQBAQUBAQUBAAgcYWNjb3VudAAwZnJlZV9iYWxhbmNlCAEBBQEACBxhY2NvdW50ABhhbW91bnQIAQEFAQAMEGZyb20ACHRvABhhbW91bnQIAQEFAQAIDHdobwAQZnJlZQgBAQUBAAgMd2hvABhhbW91bnQIAQEFAQAQEGZyb20ACHRvABhhbW91bnQISGRlc3RpbmF0aW9uX3N0YXR1c5gBAQUBAAQYYW1vdW50CAEBBQEABAx3aG8AAQEFAQAIDG9sZAgMbmV3CAEBBQEADBhyZWFzb26oDHdobwAYYW1vdW50CAEBBQEAEBhyZWFzb26oGHNvdXJjZQAQZGVzdAAYYW1vdW50CAEBBQEAEBhyZWFzb26oGHNvdXJjZQAQZGVzdAAsdHJhbnNmZXJyZWQIAQEFAKwBAQUAJQMBAQUBAAwMd2hvAChhY3R1YWxfZmVlCAx0aXAIAQEFAAABAAQQY2FsbKUDAQEFAQAIEGNhbGylAxh3ZWlnaHQYAQEFAQAEDG5ldx0DAQEFAQAIDHdobx0DEGNhbGylAwEBBQEBBQEBBQEBBQEABCxzdWRvX3Jlc3VsdLwBAQUBAAgMb2xkwAxuZXcAAQEFAMgBAQUArQMAAAAEAQEFACEBAQAEDG5ld8gBAQUBAAQMbWF4BAEBBQEABBBib25kCAEBBQEABAx3aG8AAQEFAQAELG5ld19kZXBvc2l0CAEBBQEACBxkZXBvc2l0CBh0YXJnZXQAAQEFAQEFAQAENGludnVsbmVyYWJsZXPIAQEFAQAEKGFjY291bnRfaWQAAQEFAQAESGRlc2lyZWRfY2FuZGlkYXRlcwQBAQUBAAQsYm9uZF9hbW91bnQIAQEFAQAIKGFjY291bnRfaWQAHGRlcG9zaXQIAQEFAQAMDG9sZAAMbmV3ABxkZXBvc2l0CAEBBQC1AwEBBQAhAgAAACAAuQMAAAAAALgBAAgQa2V5cyAUcHJvb2YkAQEFAQEFAQAENHNlc3Npb25faW5kZXgEAQEFAQAEJHZhbGlkYXRvcgABAQUACQIBAQUAvQMBAQUAwQMBAQUAzQMA0QMAJAEBBQDVAwAEAAgBAAQMbmV3BAEBBQEBBQEABDBtZXNzYWdlX2hhc2ggAAgA6QMAIAAEAO0DAAQA7QMACADtAwDxAwEBBQD5AwEBBQD9AwABBAANBAAAABUEAQEFAI0BAMEBACEEAQEFABkBAQAIEGRlc3TBARxtZXNzYWdlhQMBAQUBABAQZGVzdMEBLGJlbmVmaWNpYXJ5wQEYYXNzZXRzvQE4ZmVlX2Fzc2V0X2l0ZW0EAQEFAQAIHG1lc3NhZ2WFAyhtYXhfd2VpZ2h0GAEBBQEACCBsb2NhdGlvbh0BHHZlcnNpb24EAQEFAQAERG1heWJlX3hjbV92ZXJzaW9u8QEBAQUBAAQgbG9jYXRpb27BAQEBBQEAFBBkZXN0wQEsYmVuZWZpY2lhcnnBARhhc3NldHO9AThmZWVfYXNzZXRfaXRlbQQwd2VpZ2h0X2xpbWl0bQEBAQUBAAQkc3VzcGVuZGVkFAEBBQEACBhhc3NldHO9ASxiZW5lZmljaWFyecEBAQEFAQAcEGRlc3TBARhhc3NldHO9AVBhc3NldHNfdHJhbnNmZXJfdHlwZYkDOHJlbW90ZV9mZWVzX2lkjQNIZmVlc190cmFuc2Zlcl90eXBliQNIY3VzdG9tX3hjbV9vbl9kZXN0hQMwd2VpZ2h0X2xpbWl0bQEBAQUBAAgcYWxpYXNlcsEBHGV4cGlyZXPFAQEBBQEABBxhbGlhc2VywQEBAQUBAQUBAAQcb3V0Y29tZeABAQUBABAYb3JpZ2luHQEsZGVzdGluYXRpb24dARxtZXNzYWdljQEobWVzc2FnZV9pZCABAQUBABAYb3JpZ2luHQEsZGVzdGluYXRpb24dARRlcnJvcpEBKG1lc3NhZ2VfaWQgAQEFAQAMGG9yaWdpbh0BFGVycm9y2ChtZXNzYWdlX2lkIAEBBQEACBhvcmlnaW4dASBxdWVyeV9pZAgBAQUBAAggcXVlcnlfaWQIIHJlc3BvbnNlTQEBAQUBAAwgcXVlcnlfaWQIMHBhbGxldF9pbmRleAQoY2FsbF9pbmRleAQBAQUBABQgcXVlcnlfaWQIMHBhbGxldF9pbmRleAQoY2FsbF9pbmRleAQ0YWN0dWFsX3dlaWdodBhMbWF4X2J1ZGdldGVkX3dlaWdodBgBAQUBAAwYb3JpZ2luHQEgcXVlcnlfaWQIRGV4cGVjdGVkX2xvY2F0aW9uUQEBAQUBAAQgcXVlcnlfaWQIAQEFAQAMEGhhc2ggGG9yaWdpbh0BGGFzc2V0c70BAQEFAQAQLGRlc3RpbmF0aW9uHQEYcmVzdWx0BBBjb3N0NQEobWVzc2FnZV9pZCABAQUBAAggbG9jYXRpb24dARx2ZXJzaW9uBAEBBQEADCBsb2NhdGlvbh0BIHF1ZXJ5X2lkCBRlcnJvctgBAQUBAAggbG9jYXRpb27BASBxdWVyeV9pZAgBAQUBABAYb3JpZ2luHQEgcXVlcnlfaWQIQGV4cGVjdGVkX3F1ZXJpZXIdAVBtYXliZV9hY3R1YWxfcXVlcmllclEBAQEFAQAMLGRlc3RpbmF0aW9uHQEQY29zdDUBKG1lc3NhZ2VfaWQgAQEFAQAIGHBheWluZx0BEGZlZXM1AQEBBQEABBx2ZXJzaW9uBAEBBQEADBxhbGlhc2VyHQEYdGFyZ2V0HQEYZXhwaXJ5xQEBAQUBAAgcYWxpYXNlch0BGHRhcmdldB0BAQEFAQAEGHRhcmdldB0BAQEFAQAIFGluZGV4BBRlcnJvcmABAQUAIAEBBQEDCCDgANEBAC0EAQEFANEBADEEADUEAQEFAFkBAQAIOG1lc3NhZ2Vfb3JpZ2lu0QEocGFnZV9pbmRleAQBAQUBABA4bWVzc2FnZV9vcmlnaW7RARBwYWdlBBRpbmRleAQwd2VpZ2h0X2xpbWl0GAEBBQEBBQEADAhpZCAYb3JpZ2lu0QEUZXJyb3LVAQEBBQEAEAhpZCAYb3JpZ2lu0QEsd2VpZ2h0X3VzZWQYHHN1Y2Nlc3MUAQEFAQAQCGlkIBhvcmlnaW7RAShwYWdlX2luZGV4BDRtZXNzYWdlX2luZGV4BAEBBQEACBhvcmlnaW7RARRpbmRleAQBAQUBAAgcYWNjb3VudAAkc3RhdGVtZW50/QEAIAA5BAEABBBoYXNoIAEBBQEBBQEACAx3aG8AEGhhc2ggACAAJAAgAEEEAOwATQQA7AAkAQEFAFEEAOwAAAEBBQCxBAEBBQC5BAEBBQDBBAEBBQDFBAEBBQDJBAEABBxwYXlsb2FkJAEBBQEAFBBkZXN07BR2YWx1ZQgwd2VpZ2h0X2xpbWl0GFRzdG9yYWdlX2RlcG9zaXRfbGltaXQIEGRhdGEkAQEFAQAYFHZhbHVlCDB3ZWlnaHRfbGltaXQYVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgkY29kZV9oYXNoIBBkYXRhJBBzYWx0kAEBBQEAGBR2YWx1ZQgwd2VpZ2h0X2xpbWl0GFRzdG9yYWdlX2RlcG9zaXRfbGltaXQIEGNvZGUkEGRhdGEkEHNhbHSQAQEFAQAgFHZhbHVlnQMwd2VpZ2h0X2xpbWl0GDRldGhfZ2FzX2xpbWl0nQMQY29kZSQQZGF0YSRMdHJhbnNhY3Rpb25fZW5jb2RlZCRMZWZmZWN0aXZlX2dhc19wcmljZZ0DLGVuY29kZWRfbGVuBAEBBQEAIBBkZXN07BR2YWx1ZZ0DMHdlaWdodF9saW1pdBg0ZXRoX2dhc19saW1pdJ0DEGRhdGEkTHRyYW5zYWN0aW9uX2VuY29kZWQkTGVmZmVjdGl2ZV9nYXNfcHJpY2WdAyxlbmNvZGVkX2xlbgQBAQUBAAgQY2FsbKUDTHRyYW5zYWN0aW9uX2VuY29kZWQkAQEFAQAIEGNvZGUkVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgBAQUBAAgQZGVzdOwkY29kZV9oYXNoIAEBBQEBBQEADCBjb250cmFjdOwQZGF0YSQYdG9waWNzCQIBAQUBAAggZGVwbG95ZXLsIGNvbnRyYWN07AEBBQEABDhkaXNwYXRjaF9lcnJvcogBAwAACAEDAAAJAgEDCCAIABQBAwAATQIBAwTNBAC4AQMEvQIA0QQBAwAAJAEDBAQA+QEBAwAAwQMBAwjVBCQA3QQBAwQkAO0EAQMAAL0CAQME9QQAWQIBAwjNBPUEAPkEAQMM/QQkIAAFBQEDBL0CALgBAwT5AQAkAQMEJAARBQEDBAAABAEDCCQEABUFAQMIJAQAIQUBAwQYAAgBAwQEAAgBAwilAwQAFQUBAwilAwQAIQUBAwS9AgAlBQEDCCkF/QEANQUBAwQkADkFAQMEPQUA+QEBAwAAQQUBAwAAsQQBAwSdAwCQAQMAALkEAQMAAJ0DAQME7ACdAwEDBOwABAEDGADsCFkBxQEkAFEFAQMcAAhZAcUBVQUkkABhBQEDBG0FAHkFAQMIbQV9BQB5BQEDDAAkxQEAhQUBAwjsIACNBQEDCOwkAI0FAQMIzQShBQDZBQEDDM0EBKEFAN0FAQMIbQWhBQDhBQEDAADsAQMEAADsAQME7AAAAQME7AAkAQMEnQMA6QUBAQUAQQYBAQUARQYBAQUBAAg4ZGlzcGF0Y2hfZXJyb3L5BTRkaXNwYXRjaF9pbmZvQAEBBQEACCRjb2RlX2hhc2ggFGVycm9y+QUBAAQUY2FsbHNlBgEBBQEACBRpbmRleAQQY2FsbGEGAQEFAQAIJGFzX29yaWdpbikGEGNhbGxhBgEBBQEACBBjYWxsYQYYd2VpZ2h0GAEBBQEACBBtYWluYQYgZmFsbGJhY2thBgEBBQEBBQEACBRpbmRleAQUZXJyb3L5BQEBBQEABBRlcnJvcvkFAQEFAQAEGHJlc3VsdAEGAQEFAQAEKG1haW5fZXJyb3L5BQAAAG0GAQEFAQAMGHJlYXNvbg0GDHdobwAYYW1vdW50CAEBBQEAEBhyZWFzb24NBhhzb3VyY2UAEGRlc3QAGGFtb3VudAgBAQUBABAYcmVhc29uDQYYc291cmNlABBkZXN0ACx0cmFuc2ZlcnJlZAgBAQUBAAQYb3JpZ2luKQYAGQYAdQYABAB9BgEBBQB9BgEABBBkYXRhJAEBBQEACAxjaWRRBhBkYXRhJAEBBQEACBRibG9jawQUaW5kZXgEAQEFAQAEFHByb29mVQYBAQUBAAwMd2hvADB0cmFuc2FjdGlvbnMEFGJ5dGVzCAEBBQEACDBjb250ZW50X2hhc2ggIG1heF9zaXplCAEBBQEABDBjb250ZW50X2hhc2ggAQEFAQEFAQAMFGluZGV4BDBjb250ZW50X2hhc2ggDGNpZPkBAQEFAQAIFGluZGV4BDBjb250ZW50X2hhc2ggAQEFAQAMDHdobwAwdHJhbnNhY3Rpb25zBBRieXRlcwgBAQUBAAgwY29udGVudF9oYXNoICBtYXhfc2l6ZQgBAQUBAAQwY29udGVudF9oYXNoIADBAQCBBgEABBBjYWxsYQYBAQUBAAgMd2hvHQMQY2FsbGEGAQEFAQEFAQAELHN1ZG9fcmVzdWx0AQYBAwAABAEDBCQAhQYBAwgk+QEAiQYBAwhhBgQAFQUBAwhhBgQAIQUBAwQEAJUGAQMEhQMAmQYBAwgYjQMAnQYBAwzBAYUDjQMAoQYBAwwpBmEGBADNBgEDCMEBhQMA1QYBAwTBAQDdBgEDCOEGwQEA6QYBAwTBAQDxBgEDCMEBwQEA9Qb5BgEBAQIBAwAQEGZyZWUIIHJlc2VydmVkCBhmcm96ZW4IFGZsYWdzCAAUFG5vbmNlBCRjb25zdW1lcnMEJHByb3ZpZGVycwQsc3VmZmljaWVudHMEEGRhdGEMAQAACCByZWZfdGltZQgocHJvb2Zfc2l6ZQgADBhub3JtYWwYLG9wZXJhdGlvbmFsGCRtYW5kYXRvcnkYBQGABQAFARACFChQcmVSdW50aW1lAAMIKCQkQ29uc2Vuc3VzAAMIKCQQU2VhbAADCCgkFE90aGVyASRkUnVudGltZUVudmlyb25tZW50VXBkYXRlZAABBQQsAAIMOEFwcGx5RXh0cmluc2ljAQQwRmluYWxpemF0aW9uAAEFOEluaXRpYWxpemF0aW9uAAEFAgwYTm9ybWFsAAEFLE9wZXJhdGlvbmFsAAEFJE1hbmRhdG9yeQABBQIIDFllcwABBQhObwABBQAMGHdlaWdodBgUY2xhc3M4IHBheXNfZmVlPAIkPEludmFsaWRTcGVjTmFtZQABBWhTcGVjVmVyc2lvbk5lZWRzVG9JbmNyZWFzZQABBXRGYWlsZWRUb0V4dHJhY3RSdW50aW1lVmVyc2lvbgABBUxOb25EZWZhdWx0Q29tcG9zaXRlAAEFPE5vblplcm9SZWZDb3VudAABBTBDYWxsRmlsdGVyZWQAAQVsTXVsdGlCbG9ja01pZ3JhdGlvbnNPbmdvaW5nAAEFRE5vdGhpbmdBdXRob3JpemVkAAEFMFVuYXV0aG9yaXplZAABBQIYTE92ZXJsYXBwaW5nVXBncmFkZXMAAQVQUHJvaGliaXRlZEJ5UG9sa2Fkb3QAAQUYVG9vQmlnAAEFaFZhbGlkYXRpb25EYXRhTm90QXZhaWxhYmxlAAEFdEhvc3RDb25maWd1cmF0aW9uTm90QXZhaWxhYmxlAAEFME5vdFNjaGVkdWxlZAABBQIwOFZlc3RpbmdCYWxhbmNlAAEFVExpcXVpZGl0eVJlc3RyaWN0aW9ucwABBUxJbnN1ZmZpY2llbnRCYWxhbmNlAAEFSEV4aXN0ZW50aWFsRGVwb3NpdAABBTRFeHBlbmRhYmlsaXR5AAEFXEV4aXN0aW5nVmVzdGluZ1NjaGVkdWxlAAEFLERlYWRBY2NvdW50AAEFPFRvb01hbnlSZXNlcnZlcwABBTBUb29NYW55SG9sZHMAAQU4VG9vTWFueUZyZWV6ZXMAAQVMSXNzdWFuY2VEZWFjdGl2YXRlZAABBSREZWx0YVplcm8AAQUCBCxSZXF1aXJlU3VkbwABBQJERFRvb01hbnlDYW5kaWRhdGVzAAEFXFRvb0Zld0VsaWdpYmxlQ29sbGF0b3JzAAEFQEFscmVhZHlDYW5kaWRhdGUAAQUwTm90Q2FuZGlkYXRlAAEFUFRvb01hbnlJbnZ1bG5lcmFibGVzAAEFTEFscmVhZHlJbnZ1bG5lcmFibGUAAQU8Tm90SW52dWxuZXJhYmxlAAEFXE5vQXNzb2NpYXRlZFZhbGlkYXRvcklkAAEFWFZhbGlkYXRvck5vdFJlZ2lzdGVyZWQAAQVsSW5zZXJ0VG9DYW5kaWRhdGVMaXN0RmFpbGVkAAEFdFJlbW92ZUZyb21DYW5kaWRhdGVMaXN0RmFpbGVkAAEFNERlcG9zaXRUb29Mb3cAAQVkVXBkYXRlQ2FuZGlkYXRlTGlzdEZhaWxlZAABBUBJbnN1ZmZpY2llbnRCb25kAAEFUFRhcmdldElzTm90Q2FuZGlkYXRlAAEFQElkZW50aWNhbERlcG9zaXQAAQVASW52YWxpZFVucmVzZXJ2ZQABBQIUMEludmFsaWRQcm9vZgABBVxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAABBTREdXBsaWNhdGVkS2V5AAEFGE5vS2V5cwABBSROb0FjY291bnQAAQUCFDhCYWRRdWV1ZUNvbmZpZwABBUBBbHJlYWR5U3VzcGVuZGVkAAEFOEFscmVhZHlSZXN1bWVkAAEFdFRvb01hbnlBY3RpdmVPdXRib3VuZENoYW5uZWxzAAEFGFRvb0JpZwABBQKkIE92ZXJmbG93AAEFNFVuaW1wbGVtZW50ZWQAAQVgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAEFZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAQUwTG9jYXRpb25GdWxsAAEFVExvY2F0aW9uTm90SW52ZXJ0aWJsZQABBSRCYWRPcmlnaW4AAQU8SW52YWxpZExvY2F0aW9uAAEFNEFzc2V0Tm90Rm91bmQAAQVURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAEFPE5vdFdpdGhkcmF3YWJsZQABBUhMb2NhdGlvbkNhbm5vdEhvbGQAAQVURXhjZWVkc01heE1lc3NhZ2VTaXplAAEFWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQAAQUkVHJhbnNwb3J0AAEFKFVucm91dGFibGUAAQUwVW5rbm93bkNsYWltAAEFOEZhaWxlZFRvRGVjb2RlAAEFQE1heFdlaWdodEludmFsaWQAAQU4Tm90SG9sZGluZ0ZlZXMAAQUwVG9vRXhwZW5zaXZlAAEFEFRyYXAAAQVARXhwZWN0YXRpb25GYWxzZQABBThQYWxsZXROb3RGb3VuZAABBTBOYW1lTWlzbWF0Y2gAAQVMVmVyc2lvbkluY29tcGF0aWJsZQABBVBIb2xkaW5nV291bGRPdmVyZmxvdwABBSxFeHBvcnRFcnJvcgABBThSZWFuY2hvckZhaWxlZAABBRhOb0RlYWwAAQUoRmVlc05vdE1ldAABBSRMb2NrRXJyb3IAAQUwTm9QZXJtaXNzaW9uAAEFKFVuYW5jaG9yZWQAAQU4Tm90RGVwb3NpdGFibGUAAQU0VG9vTWFueUFzc2V0cwABBUxVbmhhbmRsZWRYY21WZXJzaW9uAAEFSFdlaWdodExpbWl0UmVhY2hlZAABBRxCYXJyaWVyAAEFTFdlaWdodE5vdENvbXB1dGFibGUAAQVERXhjZWVkc1N0YWNrTGltaXQAAQUCcCxVbnJlYWNoYWJsZQABBSxTZW5kRmFpbHVyZQABBSBGaWx0ZXJlZAABBUhVbndlaWdoYWJsZU1lc3NhZ2UAAQVgRGVzdGluYXRpb25Ob3RJbnZlcnRpYmxlAAEFFEVtcHR5AAEFOENhbm5vdFJlYW5jaG9yAAEFNFRvb01hbnlBc3NldHMAAQU0SW52YWxpZE9yaWdpbgABBShCYWRWZXJzaW9uAAEFLEJhZExvY2F0aW9uAAEFOE5vU3Vic2NyaXB0aW9uAAEFREFscmVhZHlTdWJzY3JpYmVkAAEFWENhbm5vdENoZWNrT3V0VGVsZXBvcnQAAQUoTG93QmFsYW5jZQABBTBUb29NYW55TG9ja3MAAQVMQWNjb3VudE5vdFNvdmVyZWlnbgABBShGZWVzTm90TWV0AAEFMExvY2tOb3RGb3VuZAABBRRJblVzZQABBWhJbnZhbGlkQXNzZXRVbmtub3duUmVzZXJ2ZQABBXhJbnZhbGlkQXNzZXRVbnN1cHBvcnRlZFJlc2VydmUAAQU8VG9vTWFueVJlc2VydmVzAAEFYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZQABBWBUb29NYW55QXV0aG9yaXplZEFsaWFzZXMAAQU0RXhwaXJlc0luUGFzdAABBTRBbGlhc05vdEZvdW5kAAEFhExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcgAACBRpbmRleAQUZXJyb3JgAiQsTm90UmVhcGFibGUAAQUYTm9QYWdlAAEFJE5vTWVzc2FnZQABBUBBbHJlYWR5UHJvY2Vzc2VkAAEFGFF1ZXVlZAABBUhJbnN1ZmZpY2llbnRXZWlnaHQAAQVgVGVtcG9yYXJpbHlVbnByb2Nlc3NhYmxlAAEFLFF1ZXVlUGF1c2VkAAEFTFJlY3Vyc2l2ZURpc2FsbG93ZWQAAQUCDDhBbHJlYWR5Q2xhaW1lZAABBTROb3RDbGFpbU93bmVyAAEFNENsYWltTm90Rm91bmQAAQUC4DxJbnZhbGlkU2NoZWR1bGUAAQVASW52YWxpZENhbGxGbGFncwABBSBPdXRPZkdhcwABBThUcmFuc2ZlckZhaWxlZAABBUxNYXhDYWxsRGVwdGhSZWFjaGVkAAEFQENvbnRyYWN0Tm90Rm91bmQAAQUwQ29kZU5vdEZvdW5kAAEFQENvZGVJbmZvTm90Rm91bmQAAQUsT3V0T2ZCb3VuZHMAAQU4RGVjb2RpbmdGYWlsZWQAAQU8Q29udHJhY3RUcmFwcGVkAAEFNFZhbHVlVG9vTGFyZ2UAAQVgVGVybWluYXRlZFdoaWxlUmVlbnRyYW50AAEFOElucHV0Rm9yd2FyZGVkAAEFNFRvb01hbnlUb3BpY3MAAQVERHVwbGljYXRlQ29udHJhY3QAAQVcVGVybWluYXRlZEluQ29uc3RydWN0b3IAAQVAUmVlbnRyYW5jZURlbmllZAABBTxSZWVudGVyZWRQYWxsZXQAAQVEU3RhdGVDaGFuZ2VEZW5pZWQAAQVwU3RvcmFnZURlcG9zaXROb3RFbm91Z2hGdW5kcwABBXBTdG9yYWdlRGVwb3NpdExpbWl0RXhoYXVzdGVkAAEFJENvZGVJblVzZQABBUBDb250cmFjdFJldmVydGVkAAEFMENvZGVSZWplY3RlZAABBTBCbG9iVG9vTGFyZ2UAAQVQU3RhdGljTWVtb3J5VG9vTGFyZ2UAAQVIQmFzaWNCbG9ja1Rvb0xhcmdlAAEFSEludmFsaWRJbnN0cnVjdGlvbgABBXhNYXhEZWxlZ2F0ZURlcGVuZGVuY2llc1JlYWNoZWQAAQVoRGVsZWdhdGVEZXBlbmRlbmN5Tm90Rm91bmQAAQV8RGVsZWdhdGVEZXBlbmRlbmN5QWxyZWFkeUV4aXN0cwABBYRDYW5ub3RBZGRTZWxmQXNEZWxlZ2F0ZURlcGVuZGVuY3kAAQVUT3V0T2ZUcmFuc2llbnRTdG9yYWdlAAEFOEludmFsaWRTeXNjYWxsAAEFTEludmFsaWRTdG9yYWdlRmxhZ3MAAQU8RXhlY3V0aW9uRmFpbGVkAAEFXEJhbGFuY2VDb252ZXJzaW9uRmFpbGVkAAEFWEludmFsaWRJbW11dGFibGVBY2Nlc3MAAQU8QWNjb3VudFVubWFwcGVkAAEFUEFjY291bnRBbHJlYWR5TWFwcGVkAAEFZEludmFsaWRHZW5lcmljVHJhbnNhY3Rpb24AAQVcUmVmY291bnRPdmVyT3JVbmRlcmZsb3cAAQVwVW5zdXBwb3J0ZWRQcmVjb21waWxlQWRkcmVzcwABBUBDYWxsRGF0YVRvb0xhcmdlAAEFSFJldHVybkRhdGFUb29MYXJnZQABBSxJbnZhbGlkSnVtcAABBThTdGFja1VuZGVyZmxvdwABBTRTdGFja092ZXJmbG93AAEFNFR4RmVlT3ZlcmRyYXcAAQVoRXZtQ29uc3RydWN0b3JOb25FbXB0eURhdGEAAQVYRXZtQ29uc3RydWN0ZWRGcm9tSGFzaAABBWxTdG9yYWdlUmVmdW5kTm90RW5vdWdoRnVuZHMAAQVMU3RvcmFnZVJlZnVuZExvY2tlZAABBWBQcmVjb21waWxlRGVsZWdhdGVEZW5pZWQAAQVMRWNkc2FSZWNvdmVyeUZhaWxlZAABBQJQGFN5c3RlbQFEPFBhcmFjaGFpblN5c3RlbQFIJFRpbWVzdGFtcAABBTRQYXJhY2hhaW5JbmZvAAEFNFdlaWdodFJlY2xhaW0AAQUgQmFsYW5jZXMBTEhUcmFuc2FjdGlvblBheW1lbnQAAQUQU3VkbwFQKEF1dGhvcnNoaXAAAQVEQ29sbGF0b3JTZWxlY3Rpb24BVBxTZXNzaW9uAVgQQXVyYQABBRxBdXJhRXh0AAEFJFhjbXBRdWV1ZQFcLFBvbGthZG90WGNtAWQoQ3VtdWx1c1hjbQABBTBNZXNzYWdlUXVldWUBaCRTdGF0ZW1lbnQAAQU4VGVtcGxhdGVQYWxsZXQBbBhSZXZpdmUBcAIoQEZ1bmRzVW5hdmFpbGFibGUAAQUwT25seVByb3ZpZGVyAAEFMEJlbG93TWluaW11bQABBTBDYW5ub3RDcmVhdGUAAQUwVW5rbm93bkFzc2V0AAEFGEZyb3plbgABBSxVbnN1cHBvcnRlZAABBUBDYW5ub3RDcmVhdGVIb2xkAAEFNE5vdEV4cGVuZGFibGUAAQUcQmxvY2tlZAABBQIMJFVuZGVyZmxvdwABBSBPdmVyZmxvdwABBThEaXZpc2lvbkJ5WmVybwABBQIIMExpbWl0UmVhY2hlZAABBRxOb0xheWVyAAEFAjhASW52YWxpZFN0YXRlUm9vdAABBUhJbmNvbXBsZXRlRGF0YWJhc2UAAQVQVmFsdWVBdEluY29tcGxldGVLZXkAAQUwRGVjb2RlckVycm9yAAEFLEludmFsaWRIYXNoAAEFMER1cGxpY2F0ZUtleQABBThFeHRyYW5lb3VzTm9kZQABBTxFeHRyYW5lb3VzVmFsdWUAAQVcRXh0cmFuZW91c0hhc2hSZWZlcmVuY2UAAQVUSW52YWxpZENoaWxkUmVmZXJlbmNlAAEFNFZhbHVlTWlzbWF0Y2gAAQU8SW5jb21wbGV0ZVByb29mAAEFMFJvb3RNaXNtYXRjaAABBSxEZWNvZGVFcnJvcgABBQI8FE90aGVyAAEFMENhbm5vdExvb2t1cAABBSRCYWRPcmlnaW4AAQUYTW9kdWxlAXREQ29uc3VtZXJSZW1haW5pbmcAAQUsTm9Qcm92aWRlcnMAAQVAVG9vTWFueUNvbnN1bWVycwABBRRUb2tlbgF4KEFyaXRobWV0aWMBfDRUcmFuc2FjdGlvbmFsAYAkRXhoYXVzdGVkAAEFKENvcnJ1cHRpb24AAQUsVW5hdmFpbGFibGUAAQU4Um9vdE5vdEFsbG93ZWQAAQUQVHJpZQGEAiBARXh0cmluc2ljU3VjY2VzcwAABDRkaXNwYXRjaF9pbmZvQDxFeHRyaW5zaWNGYWlsZWQAAAg4ZGlzcGF0Y2hfZXJyb3KINGRpc3BhdGNoX2luZm9ALENvZGVVcGRhdGVkAAEFKE5ld0FjY291bnQAAAQcYWNjb3VudAA0S2lsbGVkQWNjb3VudAAABBxhY2NvdW50ACBSZW1hcmtlZAAACBhzZW5kZXIAEGhhc2ggRFVwZ3JhZGVBdXRob3JpemVkAAAIJGNvZGVfaGFzaCA0Y2hlY2tfdmVyc2lvbhSAUmVqZWN0ZWRJbnZhbGlkQXV0aG9yaXplZFVwZ3JhZGUAAAgkY29kZV9oYXNoIBRlcnJvcogGIAIYYFZhbGlkYXRpb25GdW5jdGlvblN0b3JlZAABBWRWYWxpZGF0aW9uRnVuY3Rpb25BcHBsaWVkAAAEVHJlbGF5X2NoYWluX2Jsb2NrX251bQRsVmFsaWRhdGlvbkZ1bmN0aW9uRGlzY2FyZGVkAAEFYERvd253YXJkTWVzc2FnZXNSZWNlaXZlZAAABBRjb3VudARkRG93bndhcmRNZXNzYWdlc1Byb2Nlc3NlZAAACCx3ZWlnaHRfdXNlZBggZG1xX2hlYWQgRFVwd2FyZE1lc3NhZ2VTZW50AAAEMG1lc3NhZ2VfaGFzaJACCBBGcmVlAAEFIFJlc2VydmVkAAEFAgQQS2V5cwABBQIEOEF1dGhvcml6ZUFsaWFzAAEFAgxgQ29kZVVwbG9hZERlcG9zaXRSZXNlcnZlAAEFVFN0b3JhZ2VEZXBvc2l0UmVzZXJ2ZQABBThBZGRyZXNzTWFwcGluZwABBQIMHFNlc3Npb24BnCxQb2xrYWRvdFhjbQGgGFJldml2ZQGkAgg4QmFsYW5jZVVwZGF0ZWQAAQVURmFpbGVkVG9NdXRhdGVBY2NvdW50AAEFAngcRW5kb3dlZAAACBxhY2NvdW50ADBmcmVlX2JhbGFuY2UIIER1c3RMb3N0AAAIHGFjY291bnQAGGFtb3VudAggVHJhbnNmZXIAAAwQZnJvbQAIdG8AGGFtb3VudAgoQmFsYW5jZVNldAAACAx3aG8AEGZyZWUIIFJlc2VydmVkAAAIDHdobwAYYW1vdW50CChVbnJlc2VydmVkAAAIDHdobwAYYW1vdW50CEhSZXNlcnZlUmVwYXRyaWF0ZWQAABAQZnJvbQAIdG8AGGFtb3VudAhIZGVzdGluYXRpb25fc3RhdHVzmBxEZXBvc2l0AAAIDHdobwAYYW1vdW50CCBXaXRoZHJhdwAACAx3aG8AGGFtb3VudAgcU2xhc2hlZAAACAx3aG8AGGFtb3VudAgYTWludGVkAAAIDHdobwAYYW1vdW50CDBNaW50ZWRDcmVkaXQAAAQYYW1vdW50CBhCdXJuZWQAAAgMd2hvABhhbW91bnQIKEJ1cm5lZERlYnQAAAQYYW1vdW50CCRTdXNwZW5kZWQAAAgMd2hvABhhbW91bnQIIFJlc3RvcmVkAAAIDHdobwAYYW1vdW50CCBVcGdyYWRlZAAABAx3aG8AGElzc3VlZAAABBhhbW91bnQIJFJlc2NpbmRlZAAABBhhbW91bnQIGExvY2tlZAAACAx3aG8AGGFtb3VudAggVW5sb2NrZWQAAAgMd2hvABhhbW91bnQIGEZyb3plbgAACAx3aG8AGGFtb3VudAgYVGhhd2VkAAAIDHdobwAYYW1vdW50CExUb3RhbElzc3VhbmNlRm9yY2VkAAAIDG9sZAgMbmV3CBBIZWxkAAAMGHJlYXNvbqgMd2hvABhhbW91bnQIKEJ1cm5lZEhlbGQAAAwYcmVhc29uqAx3aG8AGGFtb3VudAg4VHJhbnNmZXJPbkhvbGQAABAYcmVhc29uqBhzb3VyY2UAEGRlc3QAGGFtb3VudAg8VHJhbnNmZXJBbmRIb2xkAAAQGHJlYXNvbqgYc291cmNlABBkZXN0ACx0cmFuc2ZlcnJlZAggUmVsZWFzZWQAAAwYcmVhc29uqAx3aG8AGGFtb3VudAgoVW5leHBlY3RlZAGsAgRIVHJhbnNhY3Rpb25GZWVQYWlkAAAMDHdobwAoYWN0dWFsX2ZlZQgMdGlwCAEFB7iIBgACEBRTdWRpZAAABCxzdWRvX3Jlc3VsdLwoS2V5Q2hhbmdlZAAACAxvbGTADG5ldwAoS2V5UmVtb3ZlZAABBShTdWRvQXNEb25lAAAELHN1ZG9fcmVzdWx0vAQAAAIoQE5ld0ludnVsbmVyYWJsZXMAAAQ0aW52dWxuZXJhYmxlc8hESW52dWxuZXJhYmxlQWRkZWQAAAQoYWNjb3VudF9pZABMSW52dWxuZXJhYmxlUmVtb3ZlZAAABChhY2NvdW50X2lkAFBOZXdEZXNpcmVkQ2FuZGlkYXRlcwAABEhkZXNpcmVkX2NhbmRpZGF0ZXMEQE5ld0NhbmRpZGFjeUJvbmQAAAQsYm9uZF9hbW91bnQIOENhbmRpZGF0ZUFkZGVkAAAIKGFjY291bnRfaWQAHGRlcG9zaXQIUENhbmRpZGF0ZUJvbmRVcGRhdGVkAAAIKGFjY291bnRfaWQAHGRlcG9zaXQIQENhbmRpZGF0ZVJlbW92ZWQAAAQoYWNjb3VudF9pZABEQ2FuZGlkYXRlUmVwbGFjZWQAAAwMb2xkAAxuZXcAHGRlcG9zaXQIaEludmFsaWRJbnZ1bG5lcmFibGVTa2lwcGVkAAAEKGFjY291bnRfaWQAAhAoTmV3U2Vzc2lvbgAABDRzZXNzaW9uX2luZGV4BCROZXdRdWV1ZWQAAQVEVmFsaWRhdG9yRGlzYWJsZWQAAAQkdmFsaWRhdG9yAEhWYWxpZGF0b3JSZWVuYWJsZWQAAAQkdmFsaWRhdG9yAAIEPFhjbXBNZXNzYWdlU2VudAAABDBtZXNzYWdlX2hhc2ggAqQgT3ZlcmZsb3cAAQU0VW5pbXBsZW1lbnRlZAABBWBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAQVkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgABBTBMb2NhdGlvbkZ1bGwAAQVUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAEFJEJhZE9yaWdpbgABBTxJbnZhbGlkTG9jYXRpb24AAQU0QXNzZXROb3RGb3VuZAABBVRGYWlsZWRUb1RyYW5zYWN0QXNzZXQAAQU8Tm90V2l0aGRyYXdhYmxlAAEFSExvY2F0aW9uQ2Fubm90SG9sZAABBVRFeGNlZWRzTWF4TWVzc2FnZVNpemUAAQVYRGVzdGluYXRpb25VbnN1cHBvcnRlZAABBSRUcmFuc3BvcnQAAQUoVW5yb3V0YWJsZQABBTBVbmtub3duQ2xhaW0AAQU4RmFpbGVkVG9EZWNvZGUAAQVATWF4V2VpZ2h0SW52YWxpZAABBThOb3RIb2xkaW5nRmVlcwABBTBUb29FeHBlbnNpdmUAAQUQVHJhcAEIQEV4cGVjdGF0aW9uRmFsc2UAAQU4UGFsbGV0Tm90Rm91bmQAAQUwTmFtZU1pc21hdGNoAAEFTFZlcnNpb25JbmNvbXBhdGlibGUAAQVQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAAQUsRXhwb3J0RXJyb3IAAQU4UmVhbmNob3JGYWlsZWQAAQUYTm9EZWFsAAEFKEZlZXNOb3RNZXQAAQUkTG9ja0Vycm9yAAEFME5vUGVybWlzc2lvbgABBShVbmFuY2hvcmVkAAEFOE5vdERlcG9zaXRhYmxlAAEFNFRvb01hbnlBc3NldHMAAQVMVW5oYW5kbGVkWGNtVmVyc2lvbgABBUhXZWlnaHRMaW1pdFJlYWNoZWQBGBxCYXJyaWVyAAEFTFdlaWdodE5vdENvbXB1dGFibGUAAQVERXhjZWVkc1N0YWNrTGltaXQAAQUACBRpbmRleAQUZXJyb3LYAgwgQ29tcGxldGUAAAQQdXNlZBgoSW5jb21wbGV0ZQAACBB1c2VkGBRlcnJvctwURXJyb3IB3AIgJEJ5R2VuZXNpcwEgGEJ5Rm9yawAACDBibG9ja19udW1iZXIIKGJsb2NrX2hhc2ggIFBvbGthZG90AAEFGEt1c2FtYQABBSBFdGhlcmV1bQAABCBjaGFpbl9pZAgsQml0Y29pbkNvcmUAAQUsQml0Y29pbkNhc2gAAQVAUG9sa2Fkb3RCdWxsZXRpbgABBQbkBQFQAigQVW5pdAABBRxNb25pa2VyASgUSW5kZXgBBCRFeGVjdXRpdmUAAQUkVGVjaG5pY2FsAAEFLExlZ2lzbGF0aXZlAAEFIEp1ZGljaWFsAAEFHERlZmVuc2UAAQU4QWRtaW5pc3RyYXRpb24AAQUgVHJlYXN1cnkAAQUCFBRWb2ljZQABBRxNZW1iZXJzAAAEFGNvdW50BCBGcmFjdGlvbgAACAxub20EFGRlbm9tBERBdExlYXN0UHJvcG9ydGlvbgAACAxub20EFGRlbm9tBEhNb3JlVGhhblByb3BvcnRpb24AAAgMbm9tBBRkZW5vbQQCKCRQYXJhY2hhaW4BBCxBY2NvdW50SWQzMgAACBxuZXR3b3Jr6AhpZCA4QWNjb3VudEluZGV4NjQAAAgcbmV0d29ya+gUaW5kZXgIMEFjY291bnRLZXkyMAAACBxuZXR3b3Jr6AxrZXnsOFBhbGxldEluc3RhbmNlAQQwR2VuZXJhbEluZGV4AQgoR2VuZXJhbEtleQAACBhsZW5ndGgEEGRhdGEgJE9ubHlDaGlsZAABBSRQbHVyYWxpdHkAAAgIaWTwEHBhcnT0PEdsb2JhbENvbnNlbnN1cwHkBPgBCAT4AQwE+AEQBPgBFAT4ARgE+AEcBPgBIAIkEEhlcmUAAQUIWDEB+AhYMgH8CFgzAQEBCFg0AQUBCFg1AQkBCFg2AQ0BCFg3AREBCFg4ARUBAAgccGFyZW50cwQgaW50ZXJpb3IZAQUBIAUBQAIYJFVuZGVmaW5lZAABBRRJbmRleAEIGEFycmF5NAEoGEFycmF5OAEhARxBcnJheTE2ASUBHEFycmF5MzIBIAIIIEZ1bmdpYmxlAQgsTm9uRnVuZ2libGUBKQEACAhpZB0BDGZ1bi0BBDEBAAMIBNgGOQEAGBRpbmRleAQQbmFtZSQsbW9kdWxlX25hbWUkFG1ham9yBBRtaW5vcgQUcGF0Y2gEBEEBAAIMHFN1Y2Nlc3MAAQUURXJyb3IBJDhUcnVuY2F0ZWRFcnJvcgEkAhgQTnVsbAABBRhBc3NldHMBNQE8RXhlY3V0aW9uUmVzdWx0AT0BHFZlcnNpb24BBCxQYWxsZXRzSW5mbwFFAThEaXNwYXRjaFJlc3VsdAFJAQYdAQIQGE5hdGl2ZQABBUBTb3ZlcmVpZ25BY2NvdW50AAEFJFN1cGVydXNlcgABBQxYY20AAQUGGAAMLGRlc3RpbmF0aW9uHQEgcXVlcnlfaWQIKG1heF93ZWlnaHQYAgggRnVuZ2libGUAAQUsTm9uRnVuZ2libGUAAQUCEAxBbGwAAQUUQWxsT2YAAAgIaWQdAQxmdW5hAShBbGxDb3VudGVkAQQwQWxsT2ZDb3VudGVkAAAMCGlkHQEMZnVuYQEUY291bnQEAgggRGVmaW5pdGUBNQEQV2lsZAFlAQIIJFVubGltaXRlZAABBRxMaW1pdGVkARgCDCBUZWxlcG9ydAFpAThSZXNlcnZlRGVwb3NpdAFpATxSZXNlcnZlV2l0aGRyYXcBaQEGcQEEcQEABhkBAgQwQXNzZXRDbGFpbWVyAAAEIGxvY2F0aW9uHQEEgQEAAtA0V2l0aGRyYXdBc3NldAE1AVRSZXNlcnZlQXNzZXREZXBvc2l0ZWQBNQFYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAE1ATRRdWVyeVJlc3BvbnNlAAAQIHF1ZXJ5X2lkCCByZXNwb25zZU0BKG1heF93ZWlnaHQYHHF1ZXJpZXJRATRUcmFuc2ZlckFzc2V0AAAIGGFzc2V0czUBLGJlbmVmaWNpYXJ5HQFQVHJhbnNmZXJSZXNlcnZlQXNzZXQAAAwYYXNzZXRzNQEQZGVzdB0BDHhjbY0BIFRyYW5zYWN0AAAMLG9yaWdpbl9raW5kVQFMZmFsbGJhY2tfbWF4X3dlaWdodFkBEGNhbGwkZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QAAAwYc2VuZGVyBEBtYXhfbWVzc2FnZV9zaXplBDBtYXhfY2FwYWNpdHkETEhybXBDaGFubmVsQWNjZXB0ZWQAAAQkcmVjaXBpZW50BEhIcm1wQ2hhbm5lbENsb3NpbmcAAAwkaW5pdGlhdG9yBBhzZW5kZXIEJHJlY2lwaWVudAQsQ2xlYXJPcmlnaW4AAQU0RGVzY2VuZE9yaWdpbgEZASxSZXBvcnRFcnJvcgFdATBEZXBvc2l0QXNzZXQAAAgYYXNzZXRzaQEsYmVuZWZpY2lhcnkdAUxEZXBvc2l0UmVzZXJ2ZUFzc2V0AAAMGGFzc2V0c2kBEGRlc3QdAQx4Y22NATRFeGNoYW5nZUFzc2V0AAAMEGdpdmVpARB3YW50NQEcbWF4aW1hbBRcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcAAAwYYXNzZXRzaQEccmVzZXJ2ZR0BDHhjbY0BQEluaXRpYXRlVGVsZXBvcnQAAAwYYXNzZXRzaQEQZGVzdB0BDHhjbY0BNFJlcG9ydEhvbGRpbmcAAAg0cmVzcG9uc2VfaW5mb10BGGFzc2V0c2kBMEJ1eUV4ZWN1dGlvbgAACBBmZWVzMQEwd2VpZ2h0X2xpbWl0bQE0UmVmdW5kU3VycGx1cwABBTxTZXRFcnJvckhhbmRsZXIBjQEsU2V0QXBwZW5kaXgBjQEoQ2xlYXJFcnJvcgABBShDbGFpbUFzc2V0AAAIGGFzc2V0czUBGHRpY2tldB0BEFRyYXABCEBTdWJzY3JpYmVWZXJzaW9uAAAIIHF1ZXJ5X2lkCExtYXhfcmVzcG9uc2Vfd2VpZ2h0GEhVbnN1YnNjcmliZVZlcnNpb24AAQUkQnVybkFzc2V0ATUBLEV4cGVjdEFzc2V0ATUBMEV4cGVjdE9yaWdpbgFRASxFeHBlY3RFcnJvcgE9AVBFeHBlY3RUcmFuc2FjdFN0YXR1cwFJASxRdWVyeVBhbGxldAAACCxtb2R1bGVfbmFtZSQ0cmVzcG9uc2VfaW5mb10BMEV4cGVjdFBhbGxldAAAFBRpbmRleAQQbmFtZSQsbW9kdWxlX25hbWUkLGNyYXRlX21ham9yBDxtaW5fY3JhdGVfbWlub3IEUFJlcG9ydFRyYW5zYWN0U3RhdHVzAV0BTENsZWFyVHJhbnNhY3RTdGF0dXMAAQU8VW5pdmVyc2FsT3JpZ2luAfg0RXhwb3J0TWVzc2FnZQAADBxuZXR3b3Jr5CxkZXN0aW5hdGlvbhkBDHhjbY0BJExvY2tBc3NldAAACBRhc3NldDEBIHVubG9ja2VyHQEsVW5sb2NrQXNzZXQAAAgUYXNzZXQxARh0YXJnZXQdAThOb3RlVW5sb2NrYWJsZQAACBRhc3NldDEBFG93bmVyHQE0UmVxdWVzdFVubG9jawAACBRhc3NldDEBGGxvY2tlch0BLFNldEZlZXNNb2RlAAAEMGppdF93aXRoZHJhdxQgU2V0VG9waWMBIChDbGVhclRvcGljAAEFLEFsaWFzT3JpZ2luAR0BPFVucGFpZEV4ZWN1dGlvbgAACDB3ZWlnaHRfbGltaXRtATBjaGVja19vcmlnaW5RARxQYXlGZWVzAAAEFGFzc2V0MQFASW5pdGlhdGVUcmFuc2ZlcgAAFCxkZXN0aW5hdGlvbh0BLHJlbW90ZV9mZWVzdQE8cHJlc2VydmVfb3JpZ2luFBhhc3NldHN5AShyZW1vdGVfeGNtjQFERXhlY3V0ZVdpdGhPcmlnaW4AAAhEZGVzY2VuZGFudF9vcmlnaW59AQx4Y22NASBTZXRIaW50cwAABBRoaW50c4UBBIkBAAIcNE5vdEFwcGxpY2FibGUAAQUkVHJhbnNwb3J0AAEFKFVucm91dGFibGUAAQVYRGVzdGluYXRpb25VbnN1cHBvcnRlZAABBVRFeGNlZWRzTWF4TWVzc2FnZVNpemUAAQU8TWlzc2luZ0FyZ3VtZW50AAEFEEZlZXMAAQUCLCRCeUdlbmVzaXMBIBhCeUZvcmsAAAgwYmxvY2tfbnVtYmVyCChibG9ja19oYXNoICBQb2xrYWRvdAABBRhLdXNhbWEAAQUcV2VzdGVuZAABBRhSb2NvY28AAQUYV29jb2NvAAEFIEV0aGVyZXVtAAAEIGNoYWluX2lkCCxCaXRjb2luQ29yZQABBSxCaXRjb2luQ2FzaAABBUBQb2xrYWRvdEJ1bGxldGluAAEFBpUBAigkUGFyYWNoYWluAQQsQWNjb3VudElkMzIAAAgcbmV0d29ya5kBCGlkIDhBY2NvdW50SW5kZXg2NAAACBxuZXR3b3JrmQEUaW5kZXgIMEFjY291bnRLZXkyMAAACBxuZXR3b3JrmQEMa2V57DhQYWxsZXRJbnN0YW5jZQEEMEdlbmVyYWxJbmRleAEIKEdlbmVyYWxLZXkAAAgYbGVuZ3RoBBBkYXRhICRPbmx5Q2hpbGQAAQUkUGx1cmFsaXR5AAAICGlk8BBwYXJ09DxHbG9iYWxDb25zZW5zdXMBlQECJBBIZXJlAAEFCFgxAZ0BCFgyAASdAQEICFgzAASdAQEMCFg0AASdAQEQCFg1AASdAQEUCFg2AASdAQEYCFg3AASdAQEcCFg4AASdAQEgAAgccGFyZW50cwQgaW50ZXJpb3KhAQIIIENvbmNyZXRlAaUBIEFic3RyYWN0ASAACAhpZKkBDGZ1bi0BBK0BAAAICGlkpQEMZnVuLQEEtQEAAgwIVjMBsQEIVjQBuQEIVjUBNQECDAhWMwGlAQhWNAGlAQhWNQEdAQYIAnQkQXR0ZW1wdGVkAAAEHG91dGNvbWXgEFNlbnQAABAYb3JpZ2luHQEsZGVzdGluYXRpb24dARxtZXNzYWdljQEobWVzc2FnZV9pZCAoU2VuZEZhaWxlZAAAEBhvcmlnaW4dASxkZXN0aW5hdGlvbh0BFGVycm9ykQEobWVzc2FnZV9pZCA8UHJvY2Vzc1hjbUVycm9yAAAMGG9yaWdpbh0BFGVycm9y2ChtZXNzYWdlX2lkIEhVbmV4cGVjdGVkUmVzcG9uc2UAAAgYb3JpZ2luHQEgcXVlcnlfaWQINFJlc3BvbnNlUmVhZHkAAAggcXVlcnlfaWQIIHJlc3BvbnNlTQEgTm90aWZpZWQAAAwgcXVlcnlfaWQIMHBhbGxldF9pbmRleAQoY2FsbF9pbmRleARATm90aWZ5T3ZlcndlaWdodAAAFCBxdWVyeV9pZAgwcGFsbGV0X2luZGV4BChjYWxsX2luZGV4BDRhY3R1YWxfd2VpZ2h0GExtYXhfYnVkZ2V0ZWRfd2VpZ2h0GExOb3RpZnlEaXNwYXRjaEVycm9yAAAMIHF1ZXJ5X2lkCDBwYWxsZXRfaW5kZXgEKGNhbGxfaW5kZXgESE5vdGlmeURlY29kZUZhaWxlZAAADCBxdWVyeV9pZAgwcGFsbGV0X2luZGV4BChjYWxsX2luZGV4BEBJbnZhbGlkUmVzcG9uZGVyAAAMGG9yaWdpbh0BIHF1ZXJ5X2lkCERleHBlY3RlZF9sb2NhdGlvblEBXEludmFsaWRSZXNwb25kZXJWZXJzaW9uAAAIGG9yaWdpbh0BIHF1ZXJ5X2lkCDRSZXNwb25zZVRha2VuAAAEIHF1ZXJ5X2lkCDRBc3NldHNUcmFwcGVkAAAMEGhhc2ggGG9yaWdpbh0BGGFzc2V0c70BVFZlcnNpb25DaGFuZ2VOb3RpZmllZAAAECxkZXN0aW5hdGlvbh0BGHJlc3VsdAQQY29zdDUBKG1lc3NhZ2VfaWQgXFN1cHBvcnRlZFZlcnNpb25DaGFuZ2VkAAAIIGxvY2F0aW9uHQEcdmVyc2lvbgRQTm90aWZ5VGFyZ2V0U2VuZEZhaWwAAAwgbG9jYXRpb24dASBxdWVyeV9pZAgUZXJyb3LYZE5vdGlmeVRhcmdldE1pZ3JhdGlvbkZhaWwAAAggbG9jYXRpb27BASBxdWVyeV9pZAhUSW52YWxpZFF1ZXJpZXJWZXJzaW9uAAAIGG9yaWdpbh0BIHF1ZXJ5X2lkCDhJbnZhbGlkUXVlcmllcgAAEBhvcmlnaW4dASBxdWVyeV9pZAhAZXhwZWN0ZWRfcXVlcmllch0BUG1heWJlX2FjdHVhbF9xdWVyaWVyUQFQVmVyc2lvbk5vdGlmeVN0YXJ0ZWQAAAwsZGVzdGluYXRpb24dARBjb3N0NQEobWVzc2FnZV9pZCBYVmVyc2lvbk5vdGlmeVJlcXVlc3RlZAAADCxkZXN0aW5hdGlvbh0BEGNvc3Q1AShtZXNzYWdlX2lkIGBWZXJzaW9uTm90aWZ5VW5yZXF1ZXN0ZWQAAAwsZGVzdGluYXRpb24dARBjb3N0NQEobWVzc2FnZV9pZCAgRmVlc1BhaWQAAAgYcGF5aW5nHQEQZmVlczUBNEFzc2V0c0NsYWltZWQAAAwQaGFzaCAYb3JpZ2luHQEYYXNzZXRzvQFgVmVyc2lvbk1pZ3JhdGlvbkZpbmlzaGVkAAAEHHZlcnNpb24EPEFsaWFzQXV0aG9yaXplZAAADBxhbGlhc2VyHQEYdGFyZ2V0HQEYZXhwaXJ5xQFkQWxpYXNBdXRob3JpemF0aW9uUmVtb3ZlZAAACBxhbGlhc2VyHQEYdGFyZ2V0HQFwQWxpYXNlc0F1dGhvcml6YXRpb25zUmVtb3ZlZAAABBh0YXJnZXQdAQIMNEludmFsaWRGb3JtYXQBIEhVbnN1cHBvcnRlZFZlcnNpb24BIEBFeGVjdXRlZERvd253YXJkAAMIIOACDBBIZXJlAAEFGFBhcmVudAABBRxTaWJsaW5nAQQCGCRCYWRGb3JtYXQAAQUcQ29ycnVwdAABBSxVbnN1cHBvcnRlZAABBShPdmVyd2VpZ2h0ARgUWWllbGQAAQVEU3RhY2tMaW1pdFJlYWNoZWQAAQUCEEBQcm9jZXNzaW5nRmFpbGVkAAAMCGlkIBhvcmlnaW7RARRlcnJvctUBJFByb2Nlc3NlZAAAEAhpZCAYb3JpZ2lu0QEsd2VpZ2h0X3VzZWQYHHN1Y2Nlc3MUSE92ZXJ3ZWlnaHRFbnF1ZXVlZAAAEAhpZCAYb3JpZ2lu0QEocGFnZV9pbmRleAQ0bWVzc2FnZV9pbmRleAQoUGFnZVJlYXBlZAAACBhvcmlnaW7RARRpbmRleAQFAQEBBQEFAQUBhAIQHFNyMjU1MTkAAAgkc2lnbmF0dXJl3QEYc2lnbmVyIBxFZDI1NTE5AAAIJHNpZ25hdHVyZd0BGHNpZ25lciA4U2VjcDI1NmsxRWNkc2EAAAgkc2lnbmF0dXJl4QEYc2lnbmVy5QEcT25DaGFpbgAADAx3aG8gKGJsb2NrX2hhc2ggLGV2ZW50X2luZGV4CAbpAQYEBCABEAYkABwUcHJvb2btAThkZWNyeXB0aW9uX2tleZAcY2hhbm5lbJAgcHJpb3JpdHnxAShudW1fdG9waWNzBBh0b3BpY3P1ARBkYXRh+QECBDBOZXdTdGF0ZW1lbnQAAAgcYWNjb3VudAAkc3RhdGVtZW50/QECCDBDbGFpbUNyZWF0ZWQAAAgMd2hvABBoYXNoIDBDbGFpbVJldm9rZWQAAAgMd2hvABBoYXNoIAQgAAIMPENvbnRyYWN0RW1pdHRlZAAADCBjb250cmFjdOwQZGF0YSQYdG9waWNzCQIwSW5zdGFudGlhdGVkAAAIIGRlcGxveWVy7CBjb250cmFjdOxIRXRoRXh0cmluc2ljUmV2ZXJ0AAAEOGRpc3BhdGNoX2Vycm9yiAI4GFN5c3RlbQGMPFBhcmFjaGFpblN5c3RlbQGUIEJhbGFuY2VzAbBIVHJhbnNhY3Rpb25QYXltZW50AbQQU3VkbwHERENvbGxhdG9yU2VsZWN0aW9uAcwcU2Vzc2lvbgHQJFhjbXBRdWV1ZQHULFBvbGthZG90WGNtAckBKEN1bXVsdXNYY20BzQEwTWVzc2FnZVF1ZXVlAdkBJFN0YXRlbWVudAEBAjhUZW1wbGF0ZVBhbGxldAEFAhhSZXZpdmUBDQIADBRwaGFzZTQUZXZlbnQRAhh0b3BpY3MJAgQVAgAEBAEIBB0CAAEBAAgwc3BlY192ZXJzaW9uBCRzcGVjX25hbWUlAgAIJGNvZGVfaGFzaCA0Y2hlY2tfdmVyc2lvbhQAEDhiYXNlX2V4dHJpbnNpYxg0bWF4X2V4dHJpbnNpY1kBJG1heF90b3RhbFkBIHJlc2VydmVkWQEADBhub3JtYWwxAixvcGVyYXRpb25hbDECJG1hbmRhdG9yeTECAAwoYmFzZV9ibG9jaxgkbWF4X2Jsb2NrGCRwZXJfY2xhc3M1AgAMGG5vcm1hbAQsb3BlcmF0aW9uYWwEJG1hbmRhdG9yeQQACBByZWFkCBR3cml0ZQgDCCEBBARFAgAAICRzcGVjX25hbWUlAiRpbXBsX25hbWUlAkRhdXRob3JpbmdfdmVyc2lvbgQwc3BlY192ZXJzaW9uBDBpbXBsX3ZlcnNpb24EEGFwaXNJAkx0cmFuc2FjdGlvbl92ZXJzaW9uBDhzeXN0ZW1fdmVyc2lvbgQEJAEIBFECAAQkAAAIJG1zZ19jb3VudAQsdG90YWxfYnl0ZXMEAwgEXQIEYQIAAAw0dW1wX21zZ19jb3VudAQ8dW1wX3RvdGFsX2J5dGVzBDRocm1wX291dGdvaW5nZQICCBRBYm9ydAABBRxHb0FoZWFkAAEFBm0CAAw4dXNlZF9iYW5kd2lkdGhpAjhwYXJhX2hlYWRfaGFzaJBgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFscQIEdQIAAAw4dXNlZF9iYW5kd2lkdGhpAjhocm1wX3dhdGVybWFya/EBYGNvbnN1bWVkX2dvX2FoZWFkX3NpZ25hbHECABAscGFyZW50X2hlYWQkTHJlbGF5X3BhcmVudF9udW1iZXIEZHJlbGF5X3BhcmVudF9zdG9yYWdlX3Jvb3QgMG1heF9wb3Zfc2l6ZQQCBBxQcmVzZW50AAEFBoUCAAg8cmVtYWluaW5nX2NvdW50BDhyZW1haW5pbmdfc2l6ZQQAGDBtYXhfY2FwYWNpdHkEOG1heF90b3RhbF9zaXplBEBtYXhfbWVzc2FnZV9zaXplBCRtc2dfY291bnQEKHRvdGFsX3NpemUEIG1xY19oZWFkkAMIBJECBJUCAAAQMGRtcV9tcWNfaGVhZCCccmVsYXlfZGlzcGF0Y2hfcXVldWVfcmVtYWluaW5nX2NhcGFjaXR5jQJAaW5ncmVzc19jaGFubmVsc5kCPGVncmVzc19jaGFubmVsc5kCAAhMbWF4X2NhbmRpZGF0ZV9kZXB0aARQYWxsb3dlZF9hbmNlc3RyeV9sZW4EACg0bWF4X2NvZGVfc2l6ZQRIbWF4X2hlYWRfZGF0YV9zaXplBFhtYXhfdXB3YXJkX3F1ZXVlX2NvdW50BFRtYXhfdXB3YXJkX3F1ZXVlX3NpemUEXG1heF91cHdhcmRfbWVzc2FnZV9zaXplBJBtYXhfdXB3YXJkX21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGUEiGhybXBfbWF4X21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGUEbHZhbGlkYXRpb25fdXBncmFkZV9jb29sZG93bgRgdmFsaWRhdGlvbl91cGdyYWRlX2RlbGF5BFBhc3luY19iYWNraW5nX3BhcmFtc6ECAwgEIASpAgAACBxzZW50X2F0BCxyZXZlcnNlX2lkeAQACCRyZWNpcGllbnQEEGRhdGEkBLUCAAAULHBhcmVudF9oYXNoIBhudW1iZXIEKHN0YXRlX3Jvb3QgPGV4dHJpbnNpY3Nfcm9vdCAYZGlnZXN0MAS9AgAAEDx2YWxpZGF0aW9uX2RhdGGBAkRyZWxheV9jaGFpbl9zdGF0ZVkCYHJlbGF5X3BhcmVudF9kZXNjZW5kYW50c8ECQGNvbGxhdG9yX3BlZXJfaWT5AQAIHHNlbnRfYXQEDG1zZyQEyQIAAAgcc2VudF9hdAQgbXNnX2hhc2ggBNECAAAINGZ1bGxfbWVzc2FnZXPNAjxoYXNoZWRfbWVzc2FnZXPVAgAIHHNlbnRfYXQEEGRhdGEkAwgE3QIE4QIAAwgE0QIE6QIAAAg0ZnVsbF9tZXNzYWdlc+UCPGhhc2hlZF9tZXNzYWdlc+0CAAhEZG93bndhcmRfbWVzc2FnZXPZAkxob3Jpem9udGFsX21lc3NhZ2Vz8QICDAxGZWUAAQUQTWlzYwABBQxBbGwAAQUADAhpZCEBGGFtb3VudAgccmVhc29uc/kCBP0CAAAICGlkIQEYYW1vdW50CAQFAwAACAhpZKgYYW1vdW50CAQNAwAABBhhbW91bnQIBBUDAAIUCElkAQAUSW5kZXgBuAxSYXcBJCRBZGRyZXNzMzIBICRBZGRyZXNzMjAB7AIIIEluY3JlYXNlAAEFIERlY3JlYXNlAAEFAggkVjFBbmNpZW50AAEFCFYyAAEFAiwYcmVtYXJrAAAEGHJlbWFyayQ4c2V0X2hlYXBfcGFnZXMAAAQUcGFnZXMIIHNldF9jb2RlAAAEEGNvZGUkXHNldF9jb2RlX3dpdGhvdXRfY2hlY2tzAAAEEGNvZGUkLHNldF9zdG9yYWdlAAAEFGl0ZW1zVQIwa2lsbF9zdG9yYWdlAAAEEGtleXNZAixraWxsX3ByZWZpeAAACBhwcmVmaXgkHHN1YmtleXMERHJlbWFya193aXRoX2V2ZW50AAAEGHJlbWFyayREYXV0aG9yaXplX3VwZ3JhZGUAAAQkY29kZV9oYXNoIIBhdXRob3JpemVfdXBncmFkZV93aXRob3V0X2NoZWNrcwAABCRjb2RlX2hhc2ggYGFwcGx5X2F1dGhvcml6ZWRfdXBncmFkZQAABBBjb2RlJAIITHNldF92YWxpZGF0aW9uX2RhdGEAAAgQZGF0YcUCVGluYm91bmRfbWVzc2FnZXNfZGF0YfUCYHN1ZG9fc2VuZF91cHdhcmRfbWVzc2FnZQAABBxtZXNzYWdlJAIEDHNldAAABAxub3cIAiRQdHJhbnNmZXJfYWxsb3dfZGVhdGgAAAgQZGVzdB0DFHZhbHVlCDhmb3JjZV90cmFuc2ZlcgAADBhzb3VyY2UdAxBkZXN0HQMUdmFsdWUITHRyYW5zZmVyX2tlZXBfYWxpdmUAAAgQZGVzdB0DFHZhbHVlCDB0cmFuc2Zlcl9hbGwAAAgQZGVzdB0DKGtlZXBfYWxpdmUUPGZvcmNlX3VucmVzZXJ2ZQAACAx3aG8dAxhhbW91bnQIQHVwZ3JhZGVfYWNjb3VudHMAAAQMd2hvyERmb3JjZV9zZXRfYmFsYW5jZQAACAx3aG8dAyBuZXdfZnJlZQhsZm9yY2VfYWRqdXN0X3RvdGFsX2lzc3VhbmNlAAAIJGRpcmVjdGlvbiEDFGRlbHRhCBBidXJuAAAIFHZhbHVlCChrZWVwX2FsaXZlFAIUEHN1ZG8AAAQQY2FsbKUDVHN1ZG9fdW5jaGVja2VkX3dlaWdodAAACBBjYWxspQMYd2VpZ2h0GBxzZXRfa2V5AAAEDG5ldx0DHHN1ZG9fYXMAAAgMd2hvHQMQY2FsbKUDKHJlbW92ZV9rZXkAAQUCJERzZXRfaW52dWxuZXJhYmxlcwAABAxuZXfIWHNldF9kZXNpcmVkX2NhbmRpZGF0ZXMAAAQMbWF4BEhzZXRfY2FuZGlkYWN5X2JvbmQAAAQQYm9uZAhUcmVnaXN0ZXJfYXNfY2FuZGlkYXRlAAEFMGxlYXZlX2ludGVudAABBUBhZGRfaW52dWxuZXJhYmxlAAAEDHdobwBMcmVtb3ZlX2ludnVsbmVyYWJsZQAABAx3aG8ALHVwZGF0ZV9ib25kAAAELG5ld19kZXBvc2l0CEx0YWtlX2NhbmRpZGF0ZV9zbG90AAAIHGRlcG9zaXQIGHRhcmdldAACCCBzZXRfa2V5cwAACBBrZXlzIBRwcm9vZiQocHVyZ2Vfa2V5cwABBQIUVHN1c3BlbmRfeGNtX2V4ZWN1dGlvbgABBVByZXN1bWVfeGNtX2V4ZWN1dGlvbgABBWB1cGRhdGVfc3VzcGVuZF90aHJlc2hvbGQAAAQMbmV3BFR1cGRhdGVfZHJvcF90aHJlc2hvbGQAAAQMbmV3BFx1cGRhdGVfcmVzdW1lX3RocmVzaG9sZAAABAxuZXcEAqAgT3ZlcmZsb3cAAQU0VW5pbXBsZW1lbnRlZAABBWBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAQVkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgABBTBMb2NhdGlvbkZ1bGwAAQVUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAEFJEJhZE9yaWdpbgABBTxJbnZhbGlkTG9jYXRpb24AAQU0QXNzZXROb3RGb3VuZAABBVRGYWlsZWRUb1RyYW5zYWN0QXNzZXQAAQU8Tm90V2l0aGRyYXdhYmxlAAEFSExvY2F0aW9uQ2Fubm90SG9sZAABBVRFeGNlZWRzTWF4TWVzc2FnZVNpemUAAQVYRGVzdGluYXRpb25VbnN1cHBvcnRlZAABBSRUcmFuc3BvcnQAAQUoVW5yb3V0YWJsZQABBTBVbmtub3duQ2xhaW0AAQU4RmFpbGVkVG9EZWNvZGUAAQVATWF4V2VpZ2h0SW52YWxpZAABBThOb3RIb2xkaW5nRmVlcwABBTBUb29FeHBlbnNpdmUAAQUQVHJhcAEIQEV4cGVjdGF0aW9uRmFsc2UAAQU4UGFsbGV0Tm90Rm91bmQAAQUwTmFtZU1pc21hdGNoAAEFTFZlcnNpb25JbmNvbXBhdGlibGUAAQVQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAAQUsRXhwb3J0RXJyb3IAAQU4UmVhbmNob3JGYWlsZWQAAQUYTm9EZWFsAAEFKEZlZXNOb3RNZXQAAQUkTG9ja0Vycm9yAAEFME5vUGVybWlzc2lvbgABBShVbmFuY2hvcmVkAAEFOE5vdERlcG9zaXRhYmxlAAEFTFVuaGFuZGxlZFhjbVZlcnNpb24AAQVIV2VpZ2h0TGltaXRSZWFjaGVkARgcQmFycmllcgABBUxXZWlnaHROb3RDb21wdXRhYmxlAAEFREV4Y2VlZHNTdGFja0xpbWl0AAEFAwgESQMGTQMCGBBOdWxsAAEFGEFzc2V0cwGxATxFeGVjdXRpb25SZXN1bHQBUQMcVmVyc2lvbgEELFBhbGxldHNJbmZvAUUBOERpc3BhdGNoUmVzdWx0AUkBBqUBAAwsZGVzdGluYXRpb26lASBxdWVyeV9pZAgobWF4X3dlaWdodBgCEAxBbGwAAQUUQWxsT2YAAAgIaWSpAQxmdW5hAShBbGxDb3VudGVkAQQwQWxsT2ZDb3VudGVkAAAMCGlkqQEMZnVuYQEUY291bnQEAgggRGVmaW5pdGUBsQEQV2lsZAFhAwLANFdpdGhkcmF3QXNzZXQBsQFUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkAbEBWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQBsQE0UXVlcnlSZXNwb25zZQAAECBxdWVyeV9pZAggcmVzcG9uc2VVAyhtYXhfd2VpZ2h0GBxxdWVyaWVyWQM0VHJhbnNmZXJBc3NldAAACBhhc3NldHOxASxiZW5lZmljaWFyeaUBUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0AAAMGGFzc2V0c7EBEGRlc3SlAQx4Y21tAyBUcmFuc2FjdAAADCxvcmlnaW5fa2luZFUBWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QYEGNhbGwkZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QAAAwYc2VuZGVyBEBtYXhfbWVzc2FnZV9zaXplBDBtYXhfY2FwYWNpdHkETEhybXBDaGFubmVsQWNjZXB0ZWQAAAQkcmVjaXBpZW50BEhIcm1wQ2hhbm5lbENsb3NpbmcAAAwkaW5pdGlhdG9yBBhzZW5kZXIEJHJlY2lwaWVudAQsQ2xlYXJPcmlnaW4AAQU0RGVzY2VuZE9yaWdpbgGhASxSZXBvcnRFcnJvcgFdAzBEZXBvc2l0QXNzZXQAAAgYYXNzZXRzZQMsYmVuZWZpY2lhcnmlAUxEZXBvc2l0UmVzZXJ2ZUFzc2V0AAAMGGFzc2V0c2UDEGRlc3SlAQx4Y21tAzRFeGNoYW5nZUFzc2V0AAAMEGdpdmVlAxB3YW50sQEcbWF4aW1hbBRcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcAAAwYYXNzZXRzZQMccmVzZXJ2ZaUBDHhjbW0DQEluaXRpYXRlVGVsZXBvcnQAAAwYYXNzZXRzZQMQZGVzdKUBDHhjbW0DNFJlcG9ydEhvbGRpbmcAAAg0cmVzcG9uc2VfaW5mb10DGGFzc2V0c2UDMEJ1eUV4ZWN1dGlvbgAACBBmZWVzrQEwd2VpZ2h0X2xpbWl0bQE0UmVmdW5kU3VycGx1cwABBTxTZXRFcnJvckhhbmRsZXIBbQMsU2V0QXBwZW5kaXgBbQMoQ2xlYXJFcnJvcgABBShDbGFpbUFzc2V0AAAIGGFzc2V0c7EBGHRpY2tldKUBEFRyYXABCEBTdWJzY3JpYmVWZXJzaW9uAAAIIHF1ZXJ5X2lkCExtYXhfcmVzcG9uc2Vfd2VpZ2h0GEhVbnN1YnNjcmliZVZlcnNpb24AAQUkQnVybkFzc2V0AbEBLEV4cGVjdEFzc2V0AbEBMEV4cGVjdE9yaWdpbgFZAyxFeHBlY3RFcnJvcgFRA1BFeHBlY3RUcmFuc2FjdFN0YXR1cwFJASxRdWVyeVBhbGxldAAACCxtb2R1bGVfbmFtZSQ0cmVzcG9uc2VfaW5mb10DMEV4cGVjdFBhbGxldAAAFBRpbmRleAQQbmFtZSQsbW9kdWxlX25hbWUkLGNyYXRlX21ham9yBDxtaW5fY3JhdGVfbWlub3IEUFJlcG9ydFRyYW5zYWN0U3RhdHVzAV0DTENsZWFyVHJhbnNhY3RTdGF0dXMAAQU8VW5pdmVyc2FsT3JpZ2luAZ0BNEV4cG9ydE1lc3NhZ2UAAAwcbmV0d29ya5UBLGRlc3RpbmF0aW9uoQEMeGNtbQMkTG9ja0Fzc2V0AAAIFGFzc2V0rQEgdW5sb2NrZXKlASxVbmxvY2tBc3NldAAACBRhc3NldK0BGHRhcmdldKUBOE5vdGVVbmxvY2thYmxlAAAIFGFzc2V0rQEUb3duZXKlATRSZXF1ZXN0VW5sb2NrAAAIFGFzc2V0rQEYbG9ja2VypQEsU2V0RmVlc01vZGUAAAQwaml0X3dpdGhkcmF3FCBTZXRUb3BpYwEgKENsZWFyVG9waWMAAQUsQWxpYXNPcmlnaW4BpQE8VW5wYWlkRXhlY3V0aW9uAAAIMHdlaWdodF9saW1pdG0BMGNoZWNrX29yaWdpblkDBGkDAAIYEE51bGwAAQUYQXNzZXRzAbkBPEV4ZWN1dGlvblJlc3VsdAFRAxxWZXJzaW9uAQQsUGFsbGV0c0luZm8BRQE4RGlzcGF0Y2hSZXN1bHQBSQECEAxBbGwAAQUUQWxsT2YAAAgIaWSlAQxmdW5hAShBbGxDb3VudGVkAQQwQWxsT2ZDb3VudGVkAAAMCGlkpQEMZnVuYQEUY291bnQEAgggRGVmaW5pdGUBuQEQV2lsZAF1AwLANFdpdGhkcmF3QXNzZXQBuQFUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkAbkBWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQBuQE0UXVlcnlSZXNwb25zZQAAECBxdWVyeV9pZAggcmVzcG9uc2VxAyhtYXhfd2VpZ2h0GBxxdWVyaWVyWQM0VHJhbnNmZXJBc3NldAAACBhhc3NldHO5ASxiZW5lZmljaWFyeaUBUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0AAAMGGFzc2V0c7kBEGRlc3SlAQx4Y22BAyBUcmFuc2FjdAAADCxvcmlnaW5fa2luZFUBWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QYEGNhbGwkZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QAAAwYc2VuZGVyBEBtYXhfbWVzc2FnZV9zaXplBDBtYXhfY2FwYWNpdHkETEhybXBDaGFubmVsQWNjZXB0ZWQAAAQkcmVjaXBpZW50BEhIcm1wQ2hhbm5lbENsb3NpbmcAAAwkaW5pdGlhdG9yBBhzZW5kZXIEJHJlY2lwaWVudAQsQ2xlYXJPcmlnaW4AAQU0RGVzY2VuZE9yaWdpbgGhASxSZXBvcnRFcnJvcgFdAzBEZXBvc2l0QXNzZXQAAAgYYXNzZXRzeQMsYmVuZWZpY2lhcnmlAUxEZXBvc2l0UmVzZXJ2ZUFzc2V0AAAMGGFzc2V0c3kDEGRlc3SlAQx4Y22BAzRFeGNoYW5nZUFzc2V0AAAMEGdpdmV5AxB3YW50uQEcbWF4aW1hbBRcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcAAAwYYXNzZXRzeQMccmVzZXJ2ZaUBDHhjbYEDQEluaXRpYXRlVGVsZXBvcnQAAAwYYXNzZXRzeQMQZGVzdKUBDHhjbYEDNFJlcG9ydEhvbGRpbmcAAAg0cmVzcG9uc2VfaW5mb10DGGFzc2V0c3kDMEJ1eUV4ZWN1dGlvbgAACBBmZWVztQEwd2VpZ2h0X2xpbWl0bQE0UmVmdW5kU3VycGx1cwABBTxTZXRFcnJvckhhbmRsZXIBgQMsU2V0QXBwZW5kaXgBgQMoQ2xlYXJFcnJvcgABBShDbGFpbUFzc2V0AAAIGGFzc2V0c7kBGHRpY2tldKUBEFRyYXABCEBTdWJzY3JpYmVWZXJzaW9uAAAIIHF1ZXJ5X2lkCExtYXhfcmVzcG9uc2Vfd2VpZ2h0GEhVbnN1YnNjcmliZVZlcnNpb24AAQUkQnVybkFzc2V0AbkBLEV4cGVjdEFzc2V0AbkBMEV4cGVjdE9yaWdpbgFZAyxFeHBlY3RFcnJvcgFRA1BFeHBlY3RUcmFuc2FjdFN0YXR1cwFJASxRdWVyeVBhbGxldAAACCxtb2R1bGVfbmFtZSQ0cmVzcG9uc2VfaW5mb10DMEV4cGVjdFBhbGxldAAAFBRpbmRleAQQbmFtZSQsbW9kdWxlX25hbWUkLGNyYXRlX21ham9yBDxtaW5fY3JhdGVfbWlub3IEUFJlcG9ydFRyYW5zYWN0U3RhdHVzAV0DTENsZWFyVHJhbnNhY3RTdGF0dXMAAQU8VW5pdmVyc2FsT3JpZ2luAZ0BNEV4cG9ydE1lc3NhZ2UAAAwcbmV0d29ya5UBLGRlc3RpbmF0aW9uoQEMeGNtgQMkTG9ja0Fzc2V0AAAIFGFzc2V0tQEgdW5sb2NrZXKlASxVbmxvY2tBc3NldAAACBRhc3NldLUBGHRhcmdldKUBOE5vdGVVbmxvY2thYmxlAAAIFGFzc2V0tQEUb3duZXKlATRSZXF1ZXN0VW5sb2NrAAAIFGFzc2V0tQEYbG9ja2VypQEsU2V0RmVlc01vZGUAAAQwaml0X3dpdGhkcmF3FCBTZXRUb3BpYwEgKENsZWFyVG9waWMAAQUsQWxpYXNPcmlnaW4BpQE8VW5wYWlkRXhlY3V0aW9uAAAIMHdlaWdodF9saW1pdG0BMGNoZWNrX29yaWdpblkDBH0DAAIMCFYzAW0DCFY0AYEDCFY1AY0BAhAgVGVsZXBvcnQAAQUwTG9jYWxSZXNlcnZlAAEFSERlc3RpbmF0aW9uUmVzZXJ2ZQABBTRSZW1vdGVSZXNlcnZlAcEBAgwIVjMBqQEIVjQBpQEIVjUBHQECRBBzZW5kAAAIEGRlc3TBARxtZXNzYWdlhQM8dGVsZXBvcnRfYXNzZXRzAAAQEGRlc3TBASxiZW5lZmljaWFyecEBGGFzc2V0c70BOGZlZV9hc3NldF9pdGVtBFxyZXNlcnZlX3RyYW5zZmVyX2Fzc2V0cwAAEBBkZXN0wQEsYmVuZWZpY2lhcnnBARhhc3NldHO9AThmZWVfYXNzZXRfaXRlbQQcZXhlY3V0ZQAACBxtZXNzYWdlhQMobWF4X3dlaWdodBhEZm9yY2VfeGNtX3ZlcnNpb24AAAggbG9jYXRpb24dARx2ZXJzaW9uBGRmb3JjZV9kZWZhdWx0X3hjbV92ZXJzaW9uAAAERG1heWJlX3hjbV92ZXJzaW9u8QF4Zm9yY2Vfc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5AAAEIGxvY2F0aW9uwQGAZm9yY2VfdW5zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkAAAQgbG9jYXRpb27BAXxsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzAAAUEGRlc3TBASxiZW5lZmljaWFyecEBGGFzc2V0c70BOGZlZV9hc3NldF9pdGVtBDB3ZWlnaHRfbGltaXRtAVxsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0cwAAFBBkZXN0wQEsYmVuZWZpY2lhcnnBARhhc3NldHO9AThmZWVfYXNzZXRfaXRlbQQwd2VpZ2h0X2xpbWl0bQFAZm9yY2Vfc3VzcGVuc2lvbgAABCRzdXNwZW5kZWQUPHRyYW5zZmVyX2Fzc2V0cwAAFBBkZXN0wQEsYmVuZWZpY2lhcnnBARhhc3NldHO9AThmZWVfYXNzZXRfaXRlbQQwd2VpZ2h0X2xpbWl0bQEwY2xhaW1fYXNzZXRzAAAIGGFzc2V0c70BLGJlbmVmaWNpYXJ5wQGMdHJhbnNmZXJfYXNzZXRzX3VzaW5nX3R5cGVfYW5kX3RoZW4AABwQZGVzdMEBGGFzc2V0c70BUGFzc2V0c190cmFuc2Zlcl90eXBliQM4cmVtb3RlX2ZlZXNfaWSNA0hmZWVzX3RyYW5zZmVyX3R5cGWJA0hjdXN0b21feGNtX29uX2Rlc3SFAzB3ZWlnaHRfbGltaXRtAVBhZGRfYXV0aG9yaXplZF9hbGlhcwAACBxhbGlhc2VywQEcZXhwaXJlc8UBXHJlbW92ZV9hdXRob3JpemVkX2FsaWFzAAAEHGFsaWFzZXLBAXRyZW1vdmVfYWxsX2F1dGhvcml6ZWRfYWxpYXNlcwABBQIIJHJlYXBfcGFnZQAACDhtZXNzYWdlX29yaWdpbtEBKHBhZ2VfaW5kZXgESGV4ZWN1dGVfb3ZlcndlaWdodAAAEDhtZXNzYWdlX29yaWdpbtEBEHBhZ2UEFGluZGV4BDB3ZWlnaHRfbGltaXQYAggwY3JlYXRlX2NsYWltAAAEEGhhc2ggMHJldm9rZV9jbGFpbQAABBBoYXNoIAQIARACNDBldGhfdHJhbnNhY3QAAAQccGF5bG9hZCQQY2FsbAAAFBBkZXN07BR2YWx1ZQgwd2VpZ2h0X2xpbWl0GFRzdG9yYWdlX2RlcG9zaXRfbGltaXQIEGRhdGEkLGluc3RhbnRpYXRlAAAYFHZhbHVlCDB3ZWlnaHRfbGltaXQYVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgkY29kZV9oYXNoIBBkYXRhJBBzYWx0kFRpbnN0YW50aWF0ZV93aXRoX2NvZGUAABgUdmFsdWUIMHdlaWdodF9saW1pdBhUc3RvcmFnZV9kZXBvc2l0X2xpbWl0CBBjb2RlJBBkYXRhJBBzYWx0kGRldGhfaW5zdGFudGlhdGVfd2l0aF9jb2RlAAAgFHZhbHVlnQMwd2VpZ2h0X2xpbWl0GDRldGhfZ2FzX2xpbWl0nQMQY29kZSQQZGF0YSRMdHJhbnNhY3Rpb25fZW5jb2RlZCRMZWZmZWN0aXZlX2dhc19wcmljZZ0DLGVuY29kZWRfbGVuBCBldGhfY2FsbAAAIBBkZXN07BR2YWx1ZZ0DMHdlaWdodF9saW1pdBg0ZXRoX2dhc19saW1pdJ0DEGRhdGEkTHRyYW5zYWN0aW9uX2VuY29kZWQkTGVmZmVjdGl2ZV9nYXNfcHJpY2WdAyxlbmNvZGVkX2xlbgRIZXRoX3N1YnN0cmF0ZV9jYWxsAAAIEGNhbGylA0x0cmFuc2FjdGlvbl9lbmNvZGVkJCx1cGxvYWRfY29kZQAACBBjb2RlJFRzdG9yYWdlX2RlcG9zaXRfbGltaXQILHJlbW92ZV9jb2RlAAAEJGNvZGVfaGFzaCAgc2V0X2NvZGUAAAgQZGVzdOwkY29kZV9oYXNoICxtYXBfYWNjb3VudAABBTR1bm1hcF9hY2NvdW50AAEFcGRpc3BhdGNoX2FzX2ZhbGxiYWNrX2FjY291bnQAAAQQY2FsbKUDAjgYU3lzdGVtASkDPFBhcmFjaGFpblN5c3RlbQEtAyRUaW1lc3RhbXABMQM0UGFyYWNoYWluSW5mbwG4IEJhbGFuY2VzATUDEFN1ZG8BOQNEQ29sbGF0b3JTZWxlY3Rpb24BPQMcU2Vzc2lvbgFBAyRYY21wUXVldWUBRQMsUG9sa2Fkb3RYY20BkQMoQ3VtdWx1c1hjbQG4ME1lc3NhZ2VRdWV1ZQGVAzhUZW1wbGF0ZVBhbGxldAGZAxhSZXZpdmUBoQMACAx3aG8AHGRlcG9zaXQIBKkDAAMIACAEsQMAAwgoJAMICAQEBAACCAhPawABBSRTdXNwZW5kZWQAAQUAFCRyZWNpcGllbnQEFHN0YXRlxQM0c2lnbmFsc19leGlzdBQsZmlyc3RfaW5kZXgEKGxhc3RfaW5kZXgEBMkDAAMIBAQADERzdXNwZW5kX3RocmVzaG9sZAQ4ZHJvcF90aHJlc2hvbGQEQHJlc3VtZV90aHJlc2hvbGQEBsEBBQEIBt0DAgwIVjMBVQMIVjQBcQMIVjUBTQECDBxQZW5kaW5nAAAQJHJlc3BvbmRlcsEBTG1heWJlX21hdGNoX3F1ZXJpZXLZAzBtYXliZV9ub3RpZnnhAxx0aW1lb3V0BDxWZXJzaW9uTm90aWZpZXIAAAgYb3JpZ2luwQEkaXNfYWN0aXZlFBRSZWFkeQAACCByZXNwb25zZeUDCGF0BAMIBMEBAwwIGAQDCMEBBAT1AwACEFxNaWdyYXRlU3VwcG9ydGVkVmVyc2lvbgABBVxNaWdyYXRlVmVyc2lvbk5vdGlmaWVycwABBVBOb3RpZnlDdXJyZW50VGFyZ2V0cwH5AWhNaWdyYXRlQW5kTm90aWZ5T2xkVGFyZ2V0cwABBQMMBACNAwMIuAgEBQQAABAYYW1vdW50CBRvd25lcsEBGGxvY2tlcsEBJGNvbnN1bWVycwkEAwgIwQEEEQQAAAggbG9jYXRpb27BARhleHBpcnnFAQQZBAAABCBhbGlhc2Vycx0EAAgQcHJldtEBEG5leHTRAQYlBAAYFGJlZ2luBAxlbmQEFGNvdW50BEByZWFkeV9uZWlnaGJvdXJzKQQ0bWVzc2FnZV9jb3VudAgQc2l6ZQgDCNEBBAAYJHJlbWFpbmluZwQ4cmVtYWluaW5nX3NpemUELGZpcnN0X2luZGV4BBRmaXJzdAQQbGFzdAQQaGVhcCQACBRvd25lcgAwYmxvY2tfbnVtYmVyBAIIDFB2bQABBQxFdm0AAQUAGBRvd25lcgAcZGVwb3NpdAggcmVmY291bnQIIGNvZGVfbGVuBCRjb2RlX3R5cGU9BERiZWhhdmlvdXJfdmVyc2lvbgQAIBx0cmllX2lkJCRjb2RlX2hhc2ggNHN0b3JhZ2VfYnl0ZXMENHN0b3JhZ2VfaXRlbXMEUHN0b3JhZ2VfYnl0ZV9kZXBvc2l0CFBzdG9yYWdlX2l0ZW1fZGVwb3NpdAhQc3RvcmFnZV9iYXNlX2RlcG9zaXQISGltbXV0YWJsZV9kYXRhX2xlbgQCCCBDb250cmFjdAFFBAxFT0EAAQUACDBhY2NvdW50X3R5cGVJBBBkdXN0BAAIOGluc2VydF9jb3VudGVyBDhkZWxldGVfY291bnRlcgQFAQEEBp0DAAgcYWRkcmVzc+wwc3RvcmFnZV9rZXlzCQIEXQQAABggY2hhaW5faWSdAxxhZGRyZXNz7BRub25jZZ0DIHlfcGFyaXR5nQMEcp0DBHOdAwRlBAAAMCxhY2Nlc3NfbGlzdGEESGF1dGhvcml6YXRpb25fbGlzdGkEIGNoYWluX2lknQMMZ2FznQMkZ2FzX3ByaWNlnQMUaW5wdXQkPG1heF9mZWVfcGVyX2dhc50DYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc50DFG5vbmNlnQMIdG/sGHIjdHlwZQQUdmFsdWWdAwAUZHRyYW5zYWN0aW9uXzc3MDJfdW5zaWduZWRtBARynQMEc50DBHZZBCB5X3Bhcml0eZ0DADAsYWNjZXNzX2xpc3RhBFRibG9iX3ZlcnNpb25lZF9oYXNoZXMJAiBjaGFpbl9pZJ0DDGdhc50DFGlucHV0JFBtYXhfZmVlX3Blcl9ibG9iX2dhc50DPG1heF9mZWVfcGVyX2dhc50DYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc50DFG5vbmNlnQMIdG/sGHIjdHlwZQQUdmFsdWWdAwAQZHRyYW5zYWN0aW9uXzQ4NDRfdW5zaWduZWR1BARynQMEc50DIHlfcGFyaXR5nQMG7AAsLGFjY2Vzc19saXN0YQQgY2hhaW5faWSdAwxnYXOdAyRnYXNfcHJpY2WdAxRpbnB1dCQ8bWF4X2ZlZV9wZXJfZ2FznQNgbWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FznQMUbm9uY2WdAwh0b30EGHIjdHlwZQQUdmFsdWWdAwAUZHRyYW5zYWN0aW9uXzE1NTlfdW5zaWduZWSBBARynQMEc50DBHZZBCB5X3Bhcml0eZ0DACQsYWNjZXNzX2xpc3RhBCBjaGFpbl9pZJ0DDGdhc50DJGdhc19wcmljZZ0DFGlucHV0JBRub25jZZ0DCHRvfQQYciN0eXBlBBR2YWx1ZZ0DABRkdHJhbnNhY3Rpb25fMjkzMF91bnNpZ25lZIkEBHKdAwRznQMEdlkEIHlfcGFyaXR5nQMAICBjaGFpbl9pZFkEDGdhc50DJGdhc19wcmljZZ0DFGlucHV0JBRub25jZZ0DCHRvfQQYciN0eXBlBBR2YWx1ZZ0DABBsdHJhbnNhY3Rpb25fbGVnYWN5X3Vuc2lnbmVkkQQEcp0DBHOdAwR2nQMCFFRUcmFuc2FjdGlvbjc3MDJTaWduZWQBcQRUVHJhbnNhY3Rpb240ODQ0U2lnbmVkAXkEVFRyYW5zYWN0aW9uMTU1OVNpZ25lZAGFBFRUcmFuc2FjdGlvbjI5MzBTaWduZWQBjQRcVHJhbnNhY3Rpb25MZWdhY3lTaWduZWQBlQQAGChibG9ja19oYXNoIDBibG9ja19udW1iZXKdAxBmcm9t7BBoYXNoIER0cmFuc2FjdGlvbl9pbmRleJ0DSHRyYW5zYWN0aW9uX3NpZ25lZJkEBJ0EAAIIGEhhc2hlcwEJAkBUcmFuc2FjdGlvbkluZm9zAaEEABAcYWRkcmVzc+wYYW1vdW50nQMUaW5kZXidAzx2YWxpZGF0b3JfaW5kZXidAwSpBAAAbEBiYXNlX2ZlZV9wZXJfZ2FznQM0YmxvYl9nYXNfdXNlZJ0DKGRpZmZpY3VsdHmdAzxleGNlc3NfYmxvYl9nYXOdAyhleHRyYV9kYXRhJCRnYXNfbGltaXSdAyBnYXNfdXNlZJ0DEGhhc2ggKGxvZ3NfYmxvb21VBBRtaW5lcuwgbWl4X2hhc2ggFG5vbmNlIQEYbnVtYmVynQNgcGFyZW50X2JlYWNvbl9ibG9ja19yb290kCxwYXJlbnRfaGFzaCA0cmVjZWlwdHNfcm9vdCA0cmVxdWVzdHNfaGFzaJAwc2hhXzNfdW5jbGVzIBBzaXplnQMoc3RhdGVfcm9vdCAkdGltZXN0YW1wnQNAdG90YWxfZGlmZmljdWx0eVkEMHRyYW5zYWN0aW9uc6UERHRyYW5zYWN0aW9uc19yb290IBh1bmNsZXMJAix3aXRoZHJhd2Fsc60EQHdpdGhkcmF3YWxzX3Jvb3QgAAggZ2FzX3VzZWSdA0xlZmZlY3RpdmVfZ2FzX3ByaWNlnQMEtQQAACgMa2V5JCh2YWx1ZV90eXBlBDRidWlsZGVyX3ZhbHVlJBRzdGFja1kCLHN0YXRlX21hc2tzwQModHJlZV9tYXNrc8EDKGhhc2hfbWFza3PBA0hzdG9yZWRfaW5fZGF0YWJhc2UUHHJscF9idWYkFGluZGV4CAAgYHRyYW5zYWN0aW9uX3Jvb3RfYnVpbGRlcr0EVHJlY2VpcHRzX3Jvb3RfYnVpbGRlcr0EQGJhc2VfZmVlX3Blcl9nYXOdAzxibG9ja19nYXNfbGltaXSdAyBnYXNfdXNlZJ0DKGxvZ3NfYmxvb21VBCR0eF9oYXNoZXMJAiBnYXNfaW5mb7kEBlECAAx0YWxsb3dfdW5saW1pdGVkX2NvbnRyYWN0X3NpemUUPGJ5cGFzc19laXBfMzYwNxQgcHZtX2xvZ3MUAAgYaGVhZGVyvQIoZXh0cmluc2ljc1kCAgg0QWxsRXh0cmluc2ljcwABBTRPbmx5SW5oZXJlbnRzAAEFAAgYcHJlZml4JQEYc3VmZml4JQECDDhOb3RJbXBsZW1lbnRlZAABBSBOb3RGb3VuZAHVBBRDb2RlYwABBQck2QQCNBBDYWxsAAEFHFBheW1lbnQAAQUYRnV0dXJlAAEFFFN0YWxlAAEFIEJhZFByb29mAAEFREFuY2llbnRCaXJ0aEJsb2NrAAEFREV4aGF1c3RzUmVzb3VyY2VzAAEFGEN1c3RvbQEEMEJhZE1hbmRhdG9yeQABBUxNYW5kYXRvcnlWYWxpZGF0aW9uAAEFJEJhZFNpZ25lcgABBVRJbmRldGVybWluYXRlSW1wbGljaXQAAQU0VW5rbm93bk9yaWdpbgABBQIMMENhbm5vdExvb2t1cAABBUxOb1Vuc2lnbmVkVmFsaWRhdG9yAAEFGEN1c3RvbQEEAggcSW52YWxpZAHhBBxVbmtub3duAeUEB7zpBAMIIQEkBPEEAAAMEG9rYXkULGZhdGFsX2Vycm9yFBhlcnJvcnP1BAIMHEluQmxvY2sAAQUUTG9jYWwAAQUgRXh0ZXJuYWwAAQUAFCBwcmlvcml0eQggcmVxdWlyZXNZAiBwcm92aWRlc1kCJGxvbmdldml0eQgkcHJvcGFnYXRlFAcBBekEAwgkKAQJBQAGDQUADBh3ZWlnaHQYFGNsYXNzOCxwYXJ0aWFsX2ZlZQgADCBiYXNlX2ZlZQgcbGVuX2ZlZQhMYWRqdXN0ZWRfd2VpZ2h0X2ZlZQgGGQUACDRpbmNsdXNpb25fZmVlHQUMdGlwCAAYPHVwd2FyZF9tZXNzYWdlc1kCTGhvcml6b250YWxfbWVzc2FnZXO5AkxuZXdfdmFsaWRhdGlvbl9jb2Rl+QFscHJvY2Vzc2VkX2Rvd253YXJkX21lc3NhZ2VzBDhocm1wX3dhdGVybWFyawQkaGVhZF9kYXRhJAIMFENoYWluAAEFHE5ldHdvcmsAAQUUTG9jYWwAAQUACCRtYXhfY291bnQEIG1heF9zaXplBAIMIEJhZFByb29mAAEFHE5vUHJvb2YAAQU0SW50ZXJuYWxFcnJvcgABBQctBTEFB7glAgYlAgQlAgACCBhSZWZ1bmQBCBhDaGFyZ2UBCAAIFGZsYWdzBBBkYXRhJAdJBYgAGDx3ZWlnaHRfY29uc3VtZWQYPHdlaWdodF9yZXF1aXJlZBg8c3RvcmFnZV9kZXBvc2l0RQVMbWF4X3N0b3JhZ2VfZGVwb3NpdEUFMGdhc19jb25zdW1lZAgYcmVzdWx0TQUCCBhVcGxvYWQBJCBFeGlzdGluZwEgAAgYcmVzdWx0SQUQYWRkcuwHWQWIABg8d2VpZ2h0X2NvbnN1bWVkGDx3ZWlnaHRfcmVxdWlyZWQYPHN0b3JhZ2VfZGVwb3NpdEUFTG1heF9zdG9yYWdlX2RlcG9zaXRFBTBnYXNfY29uc3VtZWQIGHJlc3VsdF0FBmEEAAgUaW5wdXT5ARBkYXRh+QEAQCxhY2Nlc3NfbGlzdGUFSGF1dGhvcml6YXRpb25fbGlzdGkEVGJsb2JfdmVyc2lvbmVkX2hhc2hlcwkCFGJsb2JzWQIgY2hhaW5faWRZBBBmcm9tfQQMZ2FzWQQkZ2FzX3ByaWNlWQQUaW5wdXRpBVBtYXhfZmVlX3Blcl9ibG9iX2dhc1kEPG1heF9mZWVfcGVyX2dhc1kEYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc1kEFG5vbmNlWQQIdG99BBhyI3R5cGXxARR2YWx1ZVkEABQ8d2VpZ2h0X3JlcXVpcmVkGDxzdG9yYWdlX2RlcG9zaXQITG1heF9zdG9yYWdlX2RlcG9zaXQIHGV0aF9nYXOdAxBkYXRhJAIIEERhdGEBJBxNZXNzYWdlASUCB3EFdQUACEh0aW1lc3RhbXBfb3ZlcnJpZGXFASByZXNlcnZlZBQACCRjb2RlX2hhc2ggHGRlcG9zaXQIB4EFiAIMLERvZXNudEV4aXN0AAEFREtleURlY29kaW5nRmFpbGVkAAEFSFN0b3JhZ2VXcml0ZUZhaWxlZAGIB/kBiQUACCR3aXRoX2xvZ3MUNG9ubHlfdG9wX2NhbGwUBpEFAAwkZGlmZl9tb2RlFDxkaXNhYmxlX3N0b3JhZ2UUMGRpc2FibGVfY29kZRQGmQUCCChDYWxsVHJhY2VyAZUFOFByZXN0YXRlVHJhY2VyAZ0FBLUFAAAQHGFkZHJlc3PsGHRvcGljcwkCEGRhdGEkIHBvc2l0aW9uBASpBQACGBBDYWxsAAEFKFN0YXRpY0NhbGwAAQUwRGVsZWdhdGVDYWxsAAEFGENyZWF0ZQABBRxDcmVhdGUyAAEFMFNlbGZkZXN0cnVjdAABBQA0EGZyb23sDGdhc50DIGdhc191c2VknQMIdG/sFGlucHV0JBhvdXRwdXQkFGVycm9yPQU0cmV2ZXJ0X3JlYXNvbj0FFGNhbGxzpQUQbG9nc60FFHZhbHVlWQQkY2FsbF90eXBlsQVAY2hpbGRfY2FsbF9jb3VudAQDCCT5AQS5BQAAEBxiYWxhbmNlWQQUbm9uY2XxARBjb2Rl+QEcc3RvcmFnZb0FAwjswQUExQUAAgggUHJlc3RhdGUByQUgRGlmZk1vZGUAAAgMcHJlyQUQcG9zdMkFAggQQ2FsbAG1BSBQcmVzdGF0ZQHNBQMIBNEFBNUFAAbRBQfRBXUFAggUVmFsdWUAAQUQRHVzdAABBQe9A+UFAgQwVG9vTWFueUNhbGxzAAEFAjgoQmFkQ29udGV4dAABBSxCYWREYXRhU2l6ZQABBUxUb29NYW55VHJhbnNhY3Rpb25zAAEFNE5vdENvbmZpZ3VyZWQAAQU8UmVuZXdlZE5vdEZvdW5kAAEFPFVuZXhwZWN0ZWRQcm9vZgABBTBJbnZhbGlkUHJvb2YAAQUwTWlzc2luZ1Byb29mAAEFQE1pc3NpbmdTdGF0ZURhdGEAAQUsRG91YmxlQ2hlY2sAAQU8UHJvb2ZOb3RDaGVja2VkAAEFVEF1dGhvcml6YXRpb25Ob3RGb3VuZAABBVxBdXRob3JpemF0aW9uTm90RXhwaXJlZAABBUhJbnZhbGlkQ29udGVudEhhc2gAAQUCUBhTeXN0ZW0BRDxQYXJhY2hhaW5TeXN0ZW0BSCRUaW1lc3RhbXAAAQU0UGFyYWNoYWluSW5mbwABBTRXZWlnaHRSZWNsYWltAAEFHFV0aWxpdHkB7QUgQmFsYW5jZXMBTEhUcmFuc2FjdGlvblBheW1lbnQAAQVIU2tpcEZlZWxlc3NQYXltZW50AAEFSFRyYW5zYWN0aW9uU3RvcmFnZQHxBShBdXRob3JzaGlwAAEFRENvbGxhdG9yU2VsZWN0aW9uAVQcU2Vzc2lvbgFYEEF1cmEAAQUcQXVyYUV4dAABBSRYY21wUXVldWUBXCxQb2xrYWRvdFhjbQFkKEN1bXVsdXNYY20AAQUwTWVzc2FnZVF1ZXVlAWgQU3VkbwFQAjwUT3RoZXIAAQUwQ2Fubm90TG9va3VwAAEFJEJhZE9yaWdpbgABBRhNb2R1bGUB9QVEQ29uc3VtZXJSZW1haW5pbmcAAQUsTm9Qcm92aWRlcnMAAQVAVG9vTWFueUNvbnN1bWVycwABBRRUb2tlbgF4KEFyaXRobWV0aWMBfDRUcmFuc2FjdGlvbmFsAYAkRXhoYXVzdGVkAAEFKENvcnJ1cHRpb24AAQUsVW5hdmFpbGFibGUAAQU4Um9vdE5vdEFsbG93ZWQAAQUQVHJpZQGEAiBARXh0cmluc2ljU3VjY2VzcwAABDRkaXNwYXRjaF9pbmZvQDxFeHRyaW5zaWNGYWlsZWQAAAg4ZGlzcGF0Y2hfZXJyb3L5BTRkaXNwYXRjaF9pbmZvQCxDb2RlVXBkYXRlZAABBShOZXdBY2NvdW50AAAEHGFjY291bnQANEtpbGxlZEFjY291bnQAAAQcYWNjb3VudAAgUmVtYXJrZWQAAAgYc2VuZGVyABBoYXNoIERVcGdyYWRlQXV0aG9yaXplZAAACCRjb2RlX2hhc2ggNGNoZWNrX3ZlcnNpb24UgFJlamVjdGVkSW52YWxpZEF1dGhvcml6ZWRVcGdyYWRlAAAIJGNvZGVfaGFzaCAUZXJyb3L5BQe4+QUCIEBCYXRjaEludGVycnVwdGVkAAAIFGluZGV4BBRlcnJvcvkFOEJhdGNoQ29tcGxldGVkAAEFYEJhdGNoQ29tcGxldGVkV2l0aEVycm9ycwABBTRJdGVtQ29tcGxldGVkAAEFKEl0ZW1GYWlsZWQAAAQUZXJyb3L5BTBEaXNwYXRjaGVkQXMAAAQYcmVzdWx0AQZESWZFbHNlTWFpblN1Y2Nlc3MAAQVQSWZFbHNlRmFsbGJhY2tDYWxsZWQAAAQobWFpbl9lcnJvcvkFAgQ4U3RvcmFnZUZlZUhvbGQAAQUCDEhUcmFuc2FjdGlvblN0b3JhZ2UBCQYcU2Vzc2lvbgGcLFBvbGthZG90WGNtAaACeBxFbmRvd2VkAAAIHGFjY291bnQAMGZyZWVfYmFsYW5jZQggRHVzdExvc3QAAAgcYWNjb3VudAAYYW1vdW50CCBUcmFuc2ZlcgAADBBmcm9tAAh0bwAYYW1vdW50CChCYWxhbmNlU2V0AAAIDHdobwAQZnJlZQggUmVzZXJ2ZWQAAAgMd2hvABhhbW91bnQIKFVucmVzZXJ2ZWQAAAgMd2hvABhhbW91bnQISFJlc2VydmVSZXBhdHJpYXRlZAAAEBBmcm9tAAh0bwAYYW1vdW50CEhkZXN0aW5hdGlvbl9zdGF0dXOYHERlcG9zaXQAAAgMd2hvABhhbW91bnQIIFdpdGhkcmF3AAAIDHdobwAYYW1vdW50CBxTbGFzaGVkAAAIDHdobwAYYW1vdW50CBhNaW50ZWQAAAgMd2hvABhhbW91bnQIME1pbnRlZENyZWRpdAAABBhhbW91bnQIGEJ1cm5lZAAACAx3aG8AGGFtb3VudAgoQnVybmVkRGVidAAABBhhbW91bnQIJFN1c3BlbmRlZAAACAx3aG8AGGFtb3VudAggUmVzdG9yZWQAAAgMd2hvABhhbW91bnQIIFVwZ3JhZGVkAAAEDHdobwAYSXNzdWVkAAAEGGFtb3VudAgkUmVzY2luZGVkAAAEGGFtb3VudAgYTG9ja2VkAAAIDHdobwAYYW1vdW50CCBVbmxvY2tlZAAACAx3aG8AGGFtb3VudAgYRnJvemVuAAAIDHdobwAYYW1vdW50CBhUaGF3ZWQAAAgMd2hvABhhbW91bnQITFRvdGFsSXNzdWFuY2VGb3JjZWQAAAgMb2xkCAxuZXcIEEhlbGQAAAwYcmVhc29uDQYMd2hvABhhbW91bnQIKEJ1cm5lZEhlbGQAAAwYcmVhc29uDQYMd2hvABhhbW91bnQIOFRyYW5zZmVyT25Ib2xkAAAQGHJlYXNvbg0GGHNvdXJjZQAQZGVzdAAYYW1vdW50CDxUcmFuc2ZlckFuZEhvbGQAABAYcmVhc29uDQYYc291cmNlABBkZXN0ACx0cmFuc2ZlcnJlZAggUmVsZWFzZWQAAAwYcmVhc29uDQYMd2hvABhhbW91bnQIKFVuZXhwZWN0ZWQBrAIQEFJvb3QAAQUYU2lnbmVkAQAQTm9uZQABBShBdXRob3JpemVkAAEFAggcQWNjb3VudAEAIFByZWltYWdlASACBChBdXRob3JpemVkAAAIDHdobwAUc2NvcGUZBgIIDFhjbQEdASBSZXNwb25zZQEdAQIIFFJlbGF5AAEFQFNpYmxpbmdQYXJhY2hhaW4BBAIQGHN5c3RlbQEVBkhUcmFuc2FjdGlvblN0b3JhZ2UBHQYsUG9sa2Fkb3RYY20BIQYoQ3VtdWx1c1hjbQElBgIEKEZlZVNraXBwZWQAAAQYb3JpZ2luKQYCJBhTdG9yZWQAAAwUaW5kZXgEMGNvbnRlbnRfaGFzaCAMY2lk+QEcUmVuZXdlZAAACBRpbmRleAQwY29udGVudF9oYXNoIDBQcm9vZkNoZWNrZWQAAQVEQWNjb3VudEF1dGhvcml6ZWQAAAwMd2hvADB0cmFuc2FjdGlvbnMEFGJ5dGVzCHRBY2NvdW50QXV0aG9yaXphdGlvblJlZnJlc2hlZAAABAx3aG8ASFByZWltYWdlQXV0aG9yaXplZAAACDBjb250ZW50X2hhc2ggIG1heF9zaXplCHhQcmVpbWFnZUF1dGhvcml6YXRpb25SZWZyZXNoZWQAAAQwY29udGVudF9oYXNoIIhFeHBpcmVkQWNjb3VudEF1dGhvcml6YXRpb25SZW1vdmVkAAAEDHdobwCMRXhwaXJlZFByZWltYWdlQXV0aG9yaXphdGlvblJlbW92ZWQAAAQwY29udGVudF9oYXNoIAIQFFN1ZGlkAAAELHN1ZG9fcmVzdWx0AQYoS2V5Q2hhbmdlZAAACAxvbGTADG5ldwAoS2V5UmVtb3ZlZAABBShTdWRvQXNEb25lAAAELHN1ZG9fcmVzdWx0AQYCOBhTeXN0ZW0B/QU8UGFyYWNoYWluU3lzdGVtAZQcVXRpbGl0eQEFBiBCYWxhbmNlcwERBkhUcmFuc2FjdGlvblBheW1lbnQBtEhTa2lwRmVlbGVzc1BheW1lbnQBLQZIVHJhbnNhY3Rpb25TdG9yYWdlATEGRENvbGxhdG9yU2VsZWN0aW9uAcwcU2Vzc2lvbgHQJFhjbXBRdWV1ZQHULFBvbGthZG90WGNtAckBKEN1bXVsdXNYY20BzQEwTWVzc2FnZVF1ZXVlAdkBEFN1ZG8BNQYADBRwaGFzZTQUZXZlbnQ5Bhh0b3BpY3MJAgQ9BgAACAxtYXg9AjxtYXhfaGVhZGVyX3NpemXxAQIgFGJhdGNoAAAEFGNhbGxzZQY0YXNfZGVyaXZhdGl2ZQAACBRpbmRleAQQY2FsbGEGJGJhdGNoX2FsbAAABBRjYWxsc2UGLGRpc3BhdGNoX2FzAAAIJGFzX29yaWdpbikGEGNhbGxhBixmb3JjZV9iYXRjaAAABBRjYWxsc2UGLHdpdGhfd2VpZ2h0AAAIEGNhbGxhBhh3ZWlnaHQYHGlmX2Vsc2UAAAgQbWFpbmEGIGZhbGxiYWNrYQZQZGlzcGF0Y2hfYXNfZmFsbGlibGUAAAgkYXNfb3JpZ2luKQYQY2FsbGEGAgwoQmxha2UyYjI1NgABBSBTaGEyXzI1NgABBSRLZWNjYWsyNTYAAQUACBRjb2RlYwgcaGFzaGluZ00GAAgUY2h1bmskFHByb29mWQICKBRzdG9yZQAABBBkYXRhJFRzdG9yZV93aXRoX2NpZF9jb25maWcAAAgMY2lkUQYQZGF0YSQUcmVuZXcAAAgUYmxvY2sEFGluZGV4BCxjaGVja19wcm9vZgAABBRwcm9vZlUGRGF1dGhvcml6ZV9hY2NvdW50AAAMDHdobwAwdHJhbnNhY3Rpb25zBBRieXRlcwhIYXV0aG9yaXplX3ByZWltYWdlAAAIMGNvbnRlbnRfaGFzaCAgbWF4X3NpemUIkHJlbW92ZV9leHBpcmVkX2FjY291bnRfYXV0aG9yaXphdGlvbgAABAx3aG8AlHJlbW92ZV9leHBpcmVkX3ByZWltYWdlX2F1dGhvcml6YXRpb24AAAQwY29udGVudF9oYXNoIHRyZWZyZXNoX2FjY291bnRfYXV0aG9yaXphdGlvbgAABAx3aG8AeHJlZnJlc2hfcHJlaW1hZ2VfYXV0aG9yaXphdGlvbgAABDBjb250ZW50X2hhc2ggAhQQc3VkbwAABBBjYWxsYQZUc3Vkb191bmNoZWNrZWRfd2VpZ2h0AAAIEGNhbGxhBhh3ZWlnaHQYHHNldF9rZXkAAAQMbmV3HQMcc3Vkb19hcwAACAx3aG8dAxBjYWxsYQYocmVtb3ZlX2tleQABBQI4GFN5c3RlbQEpAzxQYXJhY2hhaW5TeXN0ZW0BLQMkVGltZXN0YW1wATEDNFBhcmFjaGFpbkluZm8BuBxVdGlsaXR5AUkGIEJhbGFuY2VzATUDSFRyYW5zYWN0aW9uU3RvcmFnZQFZBkRDb2xsYXRvclNlbGVjdGlvbgE9AxxTZXNzaW9uAUEDJFhjbXBRdWV1ZQFFAyxQb2xrYWRvdFhjbQGRAyhDdW11bHVzWGNtAbgwTWVzc2FnZVF1ZXVlAZUDEFN1ZG8BXQYEYQYAAAgIaWQNBhhhbW91bnQIBGkGAAAIMHRyYW5zYWN0aW9ucwQUYnl0ZXMIAAgYZXh0ZW50cQYoZXhwaXJhdGlvbgQAGChjaHVua19yb290IDBjb250ZW50X2hhc2ggHGhhc2hpbmdNBiRjaWRfY29kZWMIEHNpemUEMGJsb2NrX2NodW5rcwQEeQYAAAggYWxpYXNlcnMdBBh0aWNrZXQIBwEG6QQACBBrZXlzJBRwcm9vZiQEjQMAAhg0VW5pbXBsZW1lbnRlZAABBWRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEFTFdlaWdodE5vdENvbXB1dGFibGUAAQVMVW5oYW5kbGVkWGNtVmVyc2lvbgABBTRBc3NldE5vdEZvdW5kAAEFKFVucm91dGFibGUAAQUHjQaRBgcYkQYHCJEGB70BkQYACDRhY3R1YWxfd2VpZ2h0WQEgcGF5c19mZWU8AAgkcG9zdF9pbmZvpQYUZXJyb3L5BQelBqkGBDkGAAaFAwSFAwADCMEBuQYEvQYAABBAZXhlY3V0aW9uX3Jlc3VsdK0GOGVtaXR0ZWRfZXZlbnRzsQYkbG9jYWxfeGNttQY4Zm9yd2FyZGVkX3hjbXPBBgIINFVuaW1wbGVtZW50ZWQAAQVkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABBQfFBskGAAxAZXhlY3V0aW9uX3Jlc3VsdOA4ZW1pdHRlZF9ldmVudHOxBjhmb3J3YXJkZWRfeGNtc8EGB9EGyQYCCCxVbnN1cHBvcnRlZAABBWRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEFBwDZBgIMCFYzAa0BCFY0AbUBCFY1ATEBAgh4VmVyc2lvbmVkQXNzZXRDb252ZXJzaW9uRmFpbGVkAAEFhFZlcnNpb25lZExvY2F0aW9uQ29udmVyc2lvbkZhaWxlZAABBQcU5QYCBHxMb2NhdGlvblZlcnNpb25Db252ZXJzaW9uRmFpbGVkAAEFBx0E7QYHFO0G"; -var metadataTypes_default = content; -export { - metadataTypes_default as default -}; diff --git a/web/.papi/descriptors/dist/metadataTypes-YGW4UPUJ.mjs b/web/.papi/descriptors/dist/metadataTypes-YGW4UPUJ.mjs new file mode 100644 index 00000000..2718178a --- /dev/null +++ b/web/.papi/descriptors/dist/metadataTypes-YGW4UPUJ.mjs @@ -0,0 +1,6 @@ +// .papi/descriptors/src/metadataTypes.ts +var content = "dQUAAAAQAQEFAAQBAQUAFAEBBQAcAAQAIAAEACQBAQUAIAEBBQAwAQEFABkCACAAIQIBAQUAKQIBAQUANAEBBQAtAgEBBQAYAQEFADkCAQEFAD0CAQEFAEECAQEFAE0CAQAEGHJlbWFyayQBAQUBAAQUcGFnZXMIAQEFAQAEEGNvZGUkAQEFAQAEFGl0ZW1zVQIBAQUBAAQQa2V5c1kCAQEFAQAIGHByZWZpeCQcc3Via2V5cwQBAQUBAAQkY29kZV9oYXNoIAEBBQEBBQEABDRkaXNwYXRjaF9pbmZvQAEBBQEACDhkaXNwYXRjaF9lcnJvcog0ZGlzcGF0Y2hfaW5mb0ABAQUBAQUBAQUBAAQcYWNjb3VudAABAQUBAAgYc2VuZGVyABBoYXNoIAEBBQEACCRjb2RlX2hhc2ggNGNoZWNrX3ZlcnNpb24UAQEFAQAIJGNvZGVfaGFzaCAUZXJyb3KIAQEFAQEFAQEFAHkCAQEFAH0CAQEFACQBAQUAgQIBAQUAiQIBAQUAcQIBAQUAWQIBAQUAnQIBAQUApQIBAQUArQIBAQUAsQIBAQUAuQIBAQUACAEACBBkYXRhxQJUaW5ib3VuZF9tZXNzYWdlc19kYXRh9QIBAQUBAAQcbWVzc2FnZSQBAQUBAQUBAARUcmVsYXlfY2hhaW5fYmxvY2tfbnVtBAEBBQEABBRjb3VudAQBAQUBAAgsd2VpZ2h0X3VzZWQYIGRtcV9oZWFkIAEBBQEABDBtZXNzYWdlX2hhc2iQAQAEDG5vdwgBAQUAAAAMAAAAAQMAAAAJAwAAABEDAAAAGQMBAAgQZGVzdB0DFHZhbHVlCAEBBQEADBhzb3VyY2UdAxBkZXN0HQMUdmFsdWUIAQEFAQAIEGRlc3QdAyhrZWVwX2FsaXZlFAEBBQEACAx3aG8dAxhhbW91bnQIAQEFAQAEDHdob8gBAQUBAAgMd2hvHQMgbmV3X2ZyZWUIAQEFAQAIJGRpcmVjdGlvbiEDFGRlbHRhCAEBBQEACBR2YWx1ZQgoa2VlcF9hbGl2ZRQBAQUBAQUBAAgcYWNjb3VudAAwZnJlZV9iYWxhbmNlCAEBBQEACBxhY2NvdW50ABhhbW91bnQIAQEFAQAMEGZyb20ACHRvABhhbW91bnQIAQEFAQAIDHdobwAQZnJlZQgBAQUBAAgMd2hvABhhbW91bnQIAQEFAQAQEGZyb20ACHRvABhhbW91bnQISGRlc3RpbmF0aW9uX3N0YXR1c5gBAQUBAAQYYW1vdW50CAEBBQEABAx3aG8AAQEFAQAIDG9sZAgMbmV3CAEBBQEADBhyZWFzb26oDHdobwAYYW1vdW50CAEBBQEAEBhyZWFzb26oGHNvdXJjZQAQZGVzdAAYYW1vdW50CAEBBQEAEBhyZWFzb26oGHNvdXJjZQAQZGVzdAAsdHJhbnNmZXJyZWQIAQEFAKwBAQUAJQMBAQUBAAwMd2hvAChhY3R1YWxfZmVlCAx0aXAIAQEFAAABAAQQY2FsbKUDAQEFAQAIEGNhbGylAxh3ZWlnaHQYAQEFAQAEDG5ldx0DAQEFAQAIDHdobx0DEGNhbGylAwEBBQEBBQEBBQEBBQEABCxzdWRvX3Jlc3VsdLwBAQUBAAgMb2xkwAxuZXcAAQEFAMgBAQUArQMAAAAEAQEFACEBAQAEDG5ld8gBAQUBAAQMbWF4BAEBBQEABBBib25kCAEBBQEABAx3aG8AAQEFAQAELG5ld19kZXBvc2l0CAEBBQEACBxkZXBvc2l0CBh0YXJnZXQAAQEFAQEFAQAENGludnVsbmVyYWJsZXPIAQEFAQAEKGFjY291bnRfaWQAAQEFAQAESGRlc2lyZWRfY2FuZGlkYXRlcwQBAQUBAAQsYm9uZF9hbW91bnQIAQEFAQAIKGFjY291bnRfaWQAHGRlcG9zaXQIAQEFAQAMDG9sZAAMbmV3ABxkZXBvc2l0CAEBBQC1AwEBBQAhAgAAACAAuQMAAAAAALgBAAgQa2V5cyAUcHJvb2YkAQEFAQEFAQAENHNlc3Npb25faW5kZXgEAQEFAQAEJHZhbGlkYXRvcgABAQUACQIBAQUAvQMBAQUAwQMBAQUAzQMA0QMAJAEBBQDVAwAEAAgBAAQMbmV3BAEBBQEBBQEABDBtZXNzYWdlX2hhc2ggAAgA6QMAIAAEAO0DAAQA7QMACADtAwDxAwEBBQD5AwEBBQD9AwABBAANBAAAABUEAQEFAI0BAMEBACEEAQEFABkBAQAIEGRlc3TBARxtZXNzYWdlhQMBAQUBABAQZGVzdMEBLGJlbmVmaWNpYXJ5wQEYYXNzZXRzvQE4ZmVlX2Fzc2V0X2l0ZW0EAQEFAQAIHG1lc3NhZ2WFAyhtYXhfd2VpZ2h0GAEBBQEACCBsb2NhdGlvbh0BHHZlcnNpb24EAQEFAQAERG1heWJlX3hjbV92ZXJzaW9u8QEBAQUBAAQgbG9jYXRpb27BAQEBBQEAFBBkZXN0wQEsYmVuZWZpY2lhcnnBARhhc3NldHO9AThmZWVfYXNzZXRfaXRlbQQwd2VpZ2h0X2xpbWl0bQEBAQUBAAQkc3VzcGVuZGVkFAEBBQEACBhhc3NldHO9ASxiZW5lZmljaWFyecEBAQEFAQAcEGRlc3TBARhhc3NldHO9AVBhc3NldHNfdHJhbnNmZXJfdHlwZYkDOHJlbW90ZV9mZWVzX2lkjQNIZmVlc190cmFuc2Zlcl90eXBliQNIY3VzdG9tX3hjbV9vbl9kZXN0hQMwd2VpZ2h0X2xpbWl0bQEBAQUBAAgcYWxpYXNlcsEBHGV4cGlyZXPFAQEBBQEABBxhbGlhc2VywQEBAQUBAQUBAAQcb3V0Y29tZeABAQUBABAYb3JpZ2luHQEsZGVzdGluYXRpb24dARxtZXNzYWdljQEobWVzc2FnZV9pZCABAQUBABAYb3JpZ2luHQEsZGVzdGluYXRpb24dARRlcnJvcpEBKG1lc3NhZ2VfaWQgAQEFAQAMGG9yaWdpbh0BFGVycm9y2ChtZXNzYWdlX2lkIAEBBQEACBhvcmlnaW4dASBxdWVyeV9pZAgBAQUBAAggcXVlcnlfaWQIIHJlc3BvbnNlTQEBAQUBAAwgcXVlcnlfaWQIMHBhbGxldF9pbmRleAQoY2FsbF9pbmRleAQBAQUBABQgcXVlcnlfaWQIMHBhbGxldF9pbmRleAQoY2FsbF9pbmRleAQ0YWN0dWFsX3dlaWdodBhMbWF4X2J1ZGdldGVkX3dlaWdodBgBAQUBAAwYb3JpZ2luHQEgcXVlcnlfaWQIRGV4cGVjdGVkX2xvY2F0aW9uUQEBAQUBAAQgcXVlcnlfaWQIAQEFAQAMEGhhc2ggGG9yaWdpbh0BGGFzc2V0c70BAQEFAQAQLGRlc3RpbmF0aW9uHQEYcmVzdWx0BBBjb3N0NQEobWVzc2FnZV9pZCABAQUBAAggbG9jYXRpb24dARx2ZXJzaW9uBAEBBQEADCBsb2NhdGlvbh0BIHF1ZXJ5X2lkCBRlcnJvctgBAQUBAAggbG9jYXRpb27BASBxdWVyeV9pZAgBAQUBABAYb3JpZ2luHQEgcXVlcnlfaWQIQGV4cGVjdGVkX3F1ZXJpZXIdAVBtYXliZV9hY3R1YWxfcXVlcmllclEBAQEFAQAMLGRlc3RpbmF0aW9uHQEQY29zdDUBKG1lc3NhZ2VfaWQgAQEFAQAIGHBheWluZx0BEGZlZXM1AQEBBQEABBx2ZXJzaW9uBAEBBQEADBxhbGlhc2VyHQEYdGFyZ2V0HQEYZXhwaXJ5xQEBAQUBAAgcYWxpYXNlch0BGHRhcmdldB0BAQEFAQAEGHRhcmdldB0BAQEFAQAIFGluZGV4BBRlcnJvcmABAQUAIAEBBQEDCCDgANEBAC0EAQEFANEBADEEADUEAQEFAFkBAQAIOG1lc3NhZ2Vfb3JpZ2lu0QEocGFnZV9pbmRleAQBAQUBABA4bWVzc2FnZV9vcmlnaW7RARBwYWdlBBRpbmRleAQwd2VpZ2h0X2xpbWl0GAEBBQEBBQEADAhpZCAYb3JpZ2lu0QEUZXJyb3LVAQEBBQEAEAhpZCAYb3JpZ2lu0QEsd2VpZ2h0X3VzZWQYHHN1Y2Nlc3MUAQEFAQAQCGlkIBhvcmlnaW7RAShwYWdlX2luZGV4BDRtZXNzYWdlX2luZGV4BAEBBQEACBhvcmlnaW7RARRpbmRleAQBAQUBAAgcYWNjb3VudAAkc3RhdGVtZW50/QEAIAA5BAEABBBoYXNoIAEBBQEBBQEACAx3aG8AEGhhc2ggACAAJAAgAEEEAOwATQQA7AAkAQEFAFEEAOwAAAEBBQCxBAEBBQC5BAEBBQDBBAEBBQDFBAEBBQDJBAEABBxwYXlsb2FkJAEBBQEAFBBkZXN07BR2YWx1ZQgwd2VpZ2h0X2xpbWl0GFRzdG9yYWdlX2RlcG9zaXRfbGltaXQIEGRhdGEkAQEFAQAYFHZhbHVlCDB3ZWlnaHRfbGltaXQYVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgkY29kZV9oYXNoIBBkYXRhJBBzYWx0kAEBBQEAGBR2YWx1ZQgwd2VpZ2h0X2xpbWl0GFRzdG9yYWdlX2RlcG9zaXRfbGltaXQIEGNvZGUkEGRhdGEkEHNhbHSQAQEFAQAgFHZhbHVlnQMwd2VpZ2h0X2xpbWl0GDRldGhfZ2FzX2xpbWl0nQMQY29kZSQQZGF0YSRMdHJhbnNhY3Rpb25fZW5jb2RlZCRMZWZmZWN0aXZlX2dhc19wcmljZZ0DLGVuY29kZWRfbGVuBAEBBQEAIBBkZXN07BR2YWx1ZZ0DMHdlaWdodF9saW1pdBg0ZXRoX2dhc19saW1pdJ0DEGRhdGEkTHRyYW5zYWN0aW9uX2VuY29kZWQkTGVmZmVjdGl2ZV9nYXNfcHJpY2WdAyxlbmNvZGVkX2xlbgQBAQUBAAgQY2FsbKUDTHRyYW5zYWN0aW9uX2VuY29kZWQkAQEFAQAIEGNvZGUkVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgBAQUBAAgQZGVzdOwkY29kZV9oYXNoIAEBBQEBBQEADCBjb250cmFjdOwQZGF0YSQYdG9waWNzCQIBAQUBAAggZGVwbG95ZXLsIGNvbnRyYWN07AEBBQEABDhkaXNwYXRjaF9lcnJvcogBAwAACAEDAAAJAgEDCCAIABQBAwAATQIBAwTNBAC4AQMEvQIA0QQBAwAAJAEDBAQA+QEBAwAAwQMBAwjVBCQA3QQBAwQkAO0EAQMAAL0CAQME9QQAWQIBAwjNBPUEAPkEAQMM/QQkIAAFBQEDBL0CALgBAwT5AQAkAQMEJAARBQEDBAAABAEDCCQEABUFAQMIJAQAIQUBAwQYAAgBAwQEAAgBAwilAwQAFQUBAwilAwQAIQUBAwS9AgAlBQEDCCkF/QEANQUBAwQkADkFAQMEPQUA+QEBAwAAQQUBAwAAsQQBAwSdAwCQAQMAALkEAQMAAJ0DAQME7ACdAwEDBOwABAEDGADsCFkBxQEkAFEFAQMcAAhZAcUBVQUkkABhBQEDBG0FAHkFAQMIbQV9BQB5BQEDDAAkxQEAhQUBAwjsIACNBQEDCOwkAI0FAQMIzQShBQDZBQEDDM0EBKEFAN0FAQMIbQWhBQDhBQEDAADsAQMEAADsAQME7AAAAQME7AAkAQMEnQMA6QUBAQUAUQYBAQUAVQYBAQUBAAg4ZGlzcGF0Y2hfZXJyb3IBBjRkaXNwYXRjaF9pbmZvQAEBBQEABBBoYXNoIAEBBQEACCRjb2RlX2hhc2ggFGVycm9yAQYBAQUAWQYBAQUAXQYBAAQUY2FsbHO1BgEBBQEACBRpbmRleAQQY2FsbLEGAQEFAQAIJGFzX29yaWdpbjUGEGNhbGyxBgEBBQEACBBjYWxssQYYd2VpZ2h0GAEBBQEACBBtYWlusQYgZmFsbGJhY2uxBgEBBQEBBQEACBRpbmRleAQUZXJyb3IBBgEBBQEABBRlcnJvcgEGAQEFAQAEGHJlc3VsdAkGAQEFAQAEKG1haW5fZXJyb3IBBgEBBQBpBgAkALgBAwAAuQYBAwAAwQYBAwAAWQIBAwAAxQYBAAQYY3Vyc29ybQYBAQUBAAwUaW5kZXgEMGlubmVyX2N1cnNvcvkBKHN0YXJ0ZWRfYXTxAQEBBQEABCBzZWxlY3RvcnEGAQEFAQEFAQAEKG1pZ3JhdGlvbnMEAQEFAQAEFGluZGV4BAEBBQEACBRpbmRleAQQdG9vawQBAQUBAAQsbmV4dF9jdXJzb3L5AQAAAM0GAQEFAQAMGHJlYXNvbhkGDHdobwAYYW1vdW50CAEBBQEAEBhyZWFzb24ZBhhzb3VyY2UAEGRlc3QAGGFtb3VudAgBAQUBABAYcmVhc29uGQYYc291cmNlABBkZXN0ACx0cmFuc2ZlcnJlZAgBAQUBAAQYb3JpZ2luNQYAJQYA1QYAAACRBgAEAOEGAQEFAOEGACAAHQIBAQUA5QYBAAQQZGF0YSQBAQUBAAgMY2lkfQYQZGF0YSQBAQUBAAwMd2hvADB0cmFuc2FjdGlvbnMEFGJ5dGVzCAEBBQEACDBjb250ZW50X2hhc2ggIG1heF9zaXplCAEBBQEABDBjb250ZW50X2hhc2ggAQEFAQAEFHByb29mhQYBAQUBAAgMd2hvABhidWRnZXSRBgEBBQEBBQEADBRpbmRleAQwY29udGVudF9oYXNoIAxjaWT5AQEBBQEADAx3aG8AMHRyYW5zYWN0aW9ucwQUYnl0ZXMIAQEFAQAIMGNvbnRlbnRfaGFzaCAgbWF4X3NpemUIAQEFAQAEMGNvbnRlbnRfaGFzaCABABAYc2lnbmVymQYkc2lnbmF0dXJlnQZAc3VibWl0X3RpbWVzdGFtcAgQZGF0YSQBAQUBABQYc2lnbmVymQYkc2lnbmF0dXJlnQZAc3VibWl0X3RpbWVzdGFtcAg8cmVjaXBpZW50c19oYXNoIBBkYXRhJAEBBQAgAOkGAQEFAPEGAQAEFGVudHJ5pQYBAQUBAQUBAAgUaW5kZXgEMGNvbnRlbnRfaGFzaCABAQUBAAwwY29udGVudF9oYXNoIAx3aG8AJHJlY3VycmluZxQBAQUBAAgwY29udGVudF9oYXNoIAx3aG8AAQEFAQAMFGluZGV4BDBjb250ZW50X2hhc2ggHGFjY291bnQAAQEFAQAIMGNvbnRlbnRfaGFzaCAcYWNjb3VudAABAQUBAAQQdXNlZAgBAQUBAAgQdXNlZAgMY2FwCAEBBQD5BgDBAQD9BgEABBBjYWxssQYBAQUBAAgMd2hvHQMQY2FsbLEGAQEFAQEFAQAELHN1ZG9fcmVzdWx0CQYBAwAABAEDBCQAAQcBAwgk+QEABQcBAwixBgQAFQUBAwixBgQAIQUBAwQEABEHAQMEhQMAFQcBAwgYjQMAGQcBAwzBAYUDjQMAHQcBAww1BrEGBABJBwEDCMEBhQMAUQcBAwTBAQBZBwEDCF0HwQEAZQcBAwTBAQBtBwEDCMEBwQEAcQcBAwQEAHkHAQMIAAQAFAEDECSZBp0GCAAkAQMEIAAUAQMEAACBBwEDCAAEABQBAwgApQYAFIUHAQEBAgEDABAQZnJlZQggcmVzZXJ2ZWQIGGZyb3plbggUZmxhZ3MIABQUbm9uY2UEJGNvbnN1bWVycwQkcHJvdmlkZXJzBCxzdWZmaWNpZW50cwQQZGF0YQwBAAAIIHJlZl90aW1lCChwcm9vZl9zaXplCAAMGG5vcm1hbBgsb3BlcmF0aW9uYWwYJG1hbmRhdG9yeRgFAYAFAAUBEAIUKFByZVJ1bnRpbWUAAwgoJCRDb25zZW5zdXMAAwgoJBBTZWFsAAMIKCQUT3RoZXIBJGRSdW50aW1lRW52aXJvbm1lbnRVcGRhdGVkAAEFBCwAAgw4QXBwbHlFeHRyaW5zaWMBBDBGaW5hbGl6YXRpb24AAQU4SW5pdGlhbGl6YXRpb24AAQUCDBhOb3JtYWwAAQUsT3BlcmF0aW9uYWwAAQUkTWFuZGF0b3J5AAEFAggMWWVzAAEFCE5vAAEFAAwYd2VpZ2h0GBRjbGFzczggcGF5c19mZWU8AiQ8SW52YWxpZFNwZWNOYW1lAAEFaFNwZWNWZXJzaW9uTmVlZHNUb0luY3JlYXNlAAEFdEZhaWxlZFRvRXh0cmFjdFJ1bnRpbWVWZXJzaW9uAAEFTE5vbkRlZmF1bHRDb21wb3NpdGUAAQU8Tm9uWmVyb1JlZkNvdW50AAEFMENhbGxGaWx0ZXJlZAABBWxNdWx0aUJsb2NrTWlncmF0aW9uc09uZ29pbmcAAQVETm90aGluZ0F1dGhvcml6ZWQAAQUwVW5hdXRob3JpemVkAAEFAhhMT3ZlcmxhcHBpbmdVcGdyYWRlcwABBVBQcm9oaWJpdGVkQnlQb2xrYWRvdAABBRhUb29CaWcAAQVoVmFsaWRhdGlvbkRhdGFOb3RBdmFpbGFibGUAAQV0SG9zdENvbmZpZ3VyYXRpb25Ob3RBdmFpbGFibGUAAQUwTm90U2NoZWR1bGVkAAEFAjA4VmVzdGluZ0JhbGFuY2UAAQVUTGlxdWlkaXR5UmVzdHJpY3Rpb25zAAEFTEluc3VmZmljaWVudEJhbGFuY2UAAQVIRXhpc3RlbnRpYWxEZXBvc2l0AAEFNEV4cGVuZGFiaWxpdHkAAQVcRXhpc3RpbmdWZXN0aW5nU2NoZWR1bGUAAQUsRGVhZEFjY291bnQAAQU8VG9vTWFueVJlc2VydmVzAAEFMFRvb01hbnlIb2xkcwABBThUb29NYW55RnJlZXplcwABBUxJc3N1YW5jZURlYWN0aXZhdGVkAAEFJERlbHRhWmVybwABBQIELFJlcXVpcmVTdWRvAAEFAkREVG9vTWFueUNhbmRpZGF0ZXMAAQVcVG9vRmV3RWxpZ2libGVDb2xsYXRvcnMAAQVAQWxyZWFkeUNhbmRpZGF0ZQABBTBOb3RDYW5kaWRhdGUAAQVQVG9vTWFueUludnVsbmVyYWJsZXMAAQVMQWxyZWFkeUludnVsbmVyYWJsZQABBTxOb3RJbnZ1bG5lcmFibGUAAQVcTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQAAQVYVmFsaWRhdG9yTm90UmVnaXN0ZXJlZAABBWxJbnNlcnRUb0NhbmRpZGF0ZUxpc3RGYWlsZWQAAQV0UmVtb3ZlRnJvbUNhbmRpZGF0ZUxpc3RGYWlsZWQAAQU0RGVwb3NpdFRvb0xvdwABBWRVcGRhdGVDYW5kaWRhdGVMaXN0RmFpbGVkAAEFQEluc3VmZmljaWVudEJvbmQAAQVQVGFyZ2V0SXNOb3RDYW5kaWRhdGUAAQVASWRlbnRpY2FsRGVwb3NpdAABBUBJbnZhbGlkVW5yZXNlcnZlAAEFAhQwSW52YWxpZFByb29mAAEFXE5vQXNzb2NpYXRlZFZhbGlkYXRvcklkAAEFNER1cGxpY2F0ZWRLZXkAAQUYTm9LZXlzAAEFJE5vQWNjb3VudAABBQIUOEJhZFF1ZXVlQ29uZmlnAAEFQEFscmVhZHlTdXNwZW5kZWQAAQU4QWxyZWFkeVJlc3VtZWQAAQV0VG9vTWFueUFjdGl2ZU91dGJvdW5kQ2hhbm5lbHMAAQUYVG9vQmlnAAEFAqQgT3ZlcmZsb3cAAQU0VW5pbXBsZW1lbnRlZAABBWBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAQVkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgABBTBMb2NhdGlvbkZ1bGwAAQVUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAEFJEJhZE9yaWdpbgABBTxJbnZhbGlkTG9jYXRpb24AAQU0QXNzZXROb3RGb3VuZAABBVRGYWlsZWRUb1RyYW5zYWN0QXNzZXQAAQU8Tm90V2l0aGRyYXdhYmxlAAEFSExvY2F0aW9uQ2Fubm90SG9sZAABBVRFeGNlZWRzTWF4TWVzc2FnZVNpemUAAQVYRGVzdGluYXRpb25VbnN1cHBvcnRlZAABBSRUcmFuc3BvcnQAAQUoVW5yb3V0YWJsZQABBTBVbmtub3duQ2xhaW0AAQU4RmFpbGVkVG9EZWNvZGUAAQVATWF4V2VpZ2h0SW52YWxpZAABBThOb3RIb2xkaW5nRmVlcwABBTBUb29FeHBlbnNpdmUAAQUQVHJhcAABBUBFeHBlY3RhdGlvbkZhbHNlAAEFOFBhbGxldE5vdEZvdW5kAAEFME5hbWVNaXNtYXRjaAABBUxWZXJzaW9uSW5jb21wYXRpYmxlAAEFUEhvbGRpbmdXb3VsZE92ZXJmbG93AAEFLEV4cG9ydEVycm9yAAEFOFJlYW5jaG9yRmFpbGVkAAEFGE5vRGVhbAABBShGZWVzTm90TWV0AAEFJExvY2tFcnJvcgABBTBOb1Blcm1pc3Npb24AAQUoVW5hbmNob3JlZAABBThOb3REZXBvc2l0YWJsZQABBTRUb29NYW55QXNzZXRzAAEFTFVuaGFuZGxlZFhjbVZlcnNpb24AAQVIV2VpZ2h0TGltaXRSZWFjaGVkAAEFHEJhcnJpZXIAAQVMV2VpZ2h0Tm90Q29tcHV0YWJsZQABBURFeGNlZWRzU3RhY2tMaW1pdAABBQJwLFVucmVhY2hhYmxlAAEFLFNlbmRGYWlsdXJlAAEFIEZpbHRlcmVkAAEFSFVud2VpZ2hhYmxlTWVzc2FnZQABBWBEZXN0aW5hdGlvbk5vdEludmVydGlibGUAAQUURW1wdHkAAQU4Q2Fubm90UmVhbmNob3IAAQU0VG9vTWFueUFzc2V0cwABBTRJbnZhbGlkT3JpZ2luAAEFKEJhZFZlcnNpb24AAQUsQmFkTG9jYXRpb24AAQU4Tm9TdWJzY3JpcHRpb24AAQVEQWxyZWFkeVN1YnNjcmliZWQAAQVYQ2Fubm90Q2hlY2tPdXRUZWxlcG9ydAABBShMb3dCYWxhbmNlAAEFMFRvb01hbnlMb2NrcwABBUxBY2NvdW50Tm90U292ZXJlaWduAAEFKEZlZXNOb3RNZXQAAQUwTG9ja05vdEZvdW5kAAEFFEluVXNlAAEFaEludmFsaWRBc3NldFVua25vd25SZXNlcnZlAAEFeEludmFsaWRBc3NldFVuc3VwcG9ydGVkUmVzZXJ2ZQABBTxUb29NYW55UmVzZXJ2ZXMAAQVgTG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlAAEFYFRvb01hbnlBdXRob3JpemVkQWxpYXNlcwABBTRFeHBpcmVzSW5QYXN0AAEFNEFsaWFzTm90Rm91bmQAAQWETG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlV2l0aEVycm9yAAAIFGluZGV4BBRlcnJvcmACJCxOb3RSZWFwYWJsZQABBRhOb1BhZ2UAAQUkTm9NZXNzYWdlAAEFQEFscmVhZHlQcm9jZXNzZWQAAQUYUXVldWVkAAEFSEluc3VmZmljaWVudFdlaWdodAABBWBUZW1wb3JhcmlseVVucHJvY2Vzc2FibGUAAQUsUXVldWVQYXVzZWQAAQVMUmVjdXJzaXZlRGlzYWxsb3dlZAABBQIMOEFscmVhZHlDbGFpbWVkAAEFNE5vdENsYWltT3duZXIAAQU0Q2xhaW1Ob3RGb3VuZAABBQLgPEludmFsaWRTY2hlZHVsZQABBUBJbnZhbGlkQ2FsbEZsYWdzAAEFIE91dE9mR2FzAAEFOFRyYW5zZmVyRmFpbGVkAAEFTE1heENhbGxEZXB0aFJlYWNoZWQAAQVAQ29udHJhY3ROb3RGb3VuZAABBTBDb2RlTm90Rm91bmQAAQVAQ29kZUluZm9Ob3RGb3VuZAABBSxPdXRPZkJvdW5kcwABBThEZWNvZGluZ0ZhaWxlZAABBTxDb250cmFjdFRyYXBwZWQAAQU0VmFsdWVUb29MYXJnZQABBWBUZXJtaW5hdGVkV2hpbGVSZWVudHJhbnQAAQU4SW5wdXRGb3J3YXJkZWQAAQU0VG9vTWFueVRvcGljcwABBUREdXBsaWNhdGVDb250cmFjdAABBVxUZXJtaW5hdGVkSW5Db25zdHJ1Y3RvcgABBUBSZWVudHJhbmNlRGVuaWVkAAEFPFJlZW50ZXJlZFBhbGxldAABBURTdGF0ZUNoYW5nZURlbmllZAABBXBTdG9yYWdlRGVwb3NpdE5vdEVub3VnaEZ1bmRzAAEFcFN0b3JhZ2VEZXBvc2l0TGltaXRFeGhhdXN0ZWQAAQUkQ29kZUluVXNlAAEFQENvbnRyYWN0UmV2ZXJ0ZWQAAQUwQ29kZVJlamVjdGVkAAEFMEJsb2JUb29MYXJnZQABBVBTdGF0aWNNZW1vcnlUb29MYXJnZQABBUhCYXNpY0Jsb2NrVG9vTGFyZ2UAAQVISW52YWxpZEluc3RydWN0aW9uAAEFeE1heERlbGVnYXRlRGVwZW5kZW5jaWVzUmVhY2hlZAABBWhEZWxlZ2F0ZURlcGVuZGVuY3lOb3RGb3VuZAABBXxEZWxlZ2F0ZURlcGVuZGVuY3lBbHJlYWR5RXhpc3RzAAEFhENhbm5vdEFkZFNlbGZBc0RlbGVnYXRlRGVwZW5kZW5jeQABBVRPdXRPZlRyYW5zaWVudFN0b3JhZ2UAAQU4SW52YWxpZFN5c2NhbGwAAQVMSW52YWxpZFN0b3JhZ2VGbGFncwABBTxFeGVjdXRpb25GYWlsZWQAAQVcQmFsYW5jZUNvbnZlcnNpb25GYWlsZWQAAQVYSW52YWxpZEltbXV0YWJsZUFjY2VzcwABBTxBY2NvdW50VW5tYXBwZWQAAQVQQWNjb3VudEFscmVhZHlNYXBwZWQAAQVkSW52YWxpZEdlbmVyaWNUcmFuc2FjdGlvbgABBVxSZWZjb3VudE92ZXJPclVuZGVyZmxvdwABBXBVbnN1cHBvcnRlZFByZWNvbXBpbGVBZGRyZXNzAAEFQENhbGxEYXRhVG9vTGFyZ2UAAQVIUmV0dXJuRGF0YVRvb0xhcmdlAAEFLEludmFsaWRKdW1wAAEFOFN0YWNrVW5kZXJmbG93AAEFNFN0YWNrT3ZlcmZsb3cAAQU0VHhGZWVPdmVyZHJhdwABBWhFdm1Db25zdHJ1Y3Rvck5vbkVtcHR5RGF0YQABBVhFdm1Db25zdHJ1Y3RlZEZyb21IYXNoAAEFbFN0b3JhZ2VSZWZ1bmROb3RFbm91Z2hGdW5kcwABBUxTdG9yYWdlUmVmdW5kTG9ja2VkAAEFYFByZWNvbXBpbGVEZWxlZ2F0ZURlbmllZAABBUxFY2RzYVJlY292ZXJ5RmFpbGVkAAEFAlAYU3lzdGVtAUQ8UGFyYWNoYWluU3lzdGVtAUgkVGltZXN0YW1wAAEFNFBhcmFjaGFpbkluZm8AAQU0V2VpZ2h0UmVjbGFpbQABBSBCYWxhbmNlcwFMSFRyYW5zYWN0aW9uUGF5bWVudAABBRBTdWRvAVAoQXV0aG9yc2hpcAABBURDb2xsYXRvclNlbGVjdGlvbgFUHFNlc3Npb24BWBBBdXJhAAEFHEF1cmFFeHQAAQUkWGNtcFF1ZXVlAVwsUG9sa2Fkb3RYY20BZChDdW11bHVzWGNtAAEFME1lc3NhZ2VRdWV1ZQFoJFN0YXRlbWVudAABBThUZW1wbGF0ZVBhbGxldAFsGFJldml2ZQFwAihARnVuZHNVbmF2YWlsYWJsZQABBTBPbmx5UHJvdmlkZXIAAQUwQmVsb3dNaW5pbXVtAAEFMENhbm5vdENyZWF0ZQABBTBVbmtub3duQXNzZXQAAQUYRnJvemVuAAEFLFVuc3VwcG9ydGVkAAEFQENhbm5vdENyZWF0ZUhvbGQAAQU0Tm90RXhwZW5kYWJsZQABBRxCbG9ja2VkAAEFAgwkVW5kZXJmbG93AAEFIE92ZXJmbG93AAEFOERpdmlzaW9uQnlaZXJvAAEFAggwTGltaXRSZWFjaGVkAAEFHE5vTGF5ZXIAAQUCOEBJbnZhbGlkU3RhdGVSb290AAEFSEluY29tcGxldGVEYXRhYmFzZQABBVBWYWx1ZUF0SW5jb21wbGV0ZUtleQABBTBEZWNvZGVyRXJyb3IAAQUsSW52YWxpZEhhc2gAAQUwRHVwbGljYXRlS2V5AAEFOEV4dHJhbmVvdXNOb2RlAAEFPEV4dHJhbmVvdXNWYWx1ZQABBVxFeHRyYW5lb3VzSGFzaFJlZmVyZW5jZQABBVRJbnZhbGlkQ2hpbGRSZWZlcmVuY2UAAQU0VmFsdWVNaXNtYXRjaAABBTxJbmNvbXBsZXRlUHJvb2YAAQUwUm9vdE1pc21hdGNoAAEFLERlY29kZUVycm9yAAEFAjwUT3RoZXIAAQUwQ2Fubm90TG9va3VwAAEFJEJhZE9yaWdpbgABBRhNb2R1bGUBdERDb25zdW1lclJlbWFpbmluZwABBSxOb1Byb3ZpZGVycwABBUBUb29NYW55Q29uc3VtZXJzAAEFFFRva2VuAXgoQXJpdGhtZXRpYwF8NFRyYW5zYWN0aW9uYWwBgCRFeGhhdXN0ZWQAAQUoQ29ycnVwdGlvbgABBSxVbmF2YWlsYWJsZQABBThSb290Tm90QWxsb3dlZAABBRBUcmllAYQCIEBFeHRyaW5zaWNTdWNjZXNzAAAENGRpc3BhdGNoX2luZm9APEV4dHJpbnNpY0ZhaWxlZAAACDhkaXNwYXRjaF9lcnJvcog0ZGlzcGF0Y2hfaW5mb0AsQ29kZVVwZGF0ZWQAAQUoTmV3QWNjb3VudAAABBxhY2NvdW50ADRLaWxsZWRBY2NvdW50AAAEHGFjY291bnQAIFJlbWFya2VkAAAIGHNlbmRlcgAQaGFzaCBEVXBncmFkZUF1dGhvcml6ZWQAAAgkY29kZV9oYXNoIDRjaGVja192ZXJzaW9uFIBSZWplY3RlZEludmFsaWRBdXRob3JpemVkVXBncmFkZQAACCRjb2RlX2hhc2ggFGVycm9yiAYgAhhgVmFsaWRhdGlvbkZ1bmN0aW9uU3RvcmVkAAEFZFZhbGlkYXRpb25GdW5jdGlvbkFwcGxpZWQAAARUcmVsYXlfY2hhaW5fYmxvY2tfbnVtBGxWYWxpZGF0aW9uRnVuY3Rpb25EaXNjYXJkZWQAAQVgRG93bndhcmRNZXNzYWdlc1JlY2VpdmVkAAAEFGNvdW50BGREb3dud2FyZE1lc3NhZ2VzUHJvY2Vzc2VkAAAILHdlaWdodF91c2VkGCBkbXFfaGVhZCBEVXB3YXJkTWVzc2FnZVNlbnQAAAQwbWVzc2FnZV9oYXNokAIIEEZyZWUAAQUgUmVzZXJ2ZWQAAQUCBBBLZXlzAAEFAgQ4QXV0aG9yaXplQWxpYXMAAQUCDGBDb2RlVXBsb2FkRGVwb3NpdFJlc2VydmUAAQVUU3RvcmFnZURlcG9zaXRSZXNlcnZlAAEFOEFkZHJlc3NNYXBwaW5nAAEFAgwcU2Vzc2lvbgGcLFBvbGthZG90WGNtAaAYUmV2aXZlAaQCCDhCYWxhbmNlVXBkYXRlZAABBVRGYWlsZWRUb011dGF0ZUFjY291bnQAAQUCeBxFbmRvd2VkAAAIHGFjY291bnQAMGZyZWVfYmFsYW5jZQggRHVzdExvc3QAAAgcYWNjb3VudAAYYW1vdW50CCBUcmFuc2ZlcgAADBBmcm9tAAh0bwAYYW1vdW50CChCYWxhbmNlU2V0AAAIDHdobwAQZnJlZQggUmVzZXJ2ZWQAAAgMd2hvABhhbW91bnQIKFVucmVzZXJ2ZWQAAAgMd2hvABhhbW91bnQISFJlc2VydmVSZXBhdHJpYXRlZAAAEBBmcm9tAAh0bwAYYW1vdW50CEhkZXN0aW5hdGlvbl9zdGF0dXOYHERlcG9zaXQAAAgMd2hvABhhbW91bnQIIFdpdGhkcmF3AAAIDHdobwAYYW1vdW50CBxTbGFzaGVkAAAIDHdobwAYYW1vdW50CBhNaW50ZWQAAAgMd2hvABhhbW91bnQIME1pbnRlZENyZWRpdAAABBhhbW91bnQIGEJ1cm5lZAAACAx3aG8AGGFtb3VudAgoQnVybmVkRGVidAAABBhhbW91bnQIJFN1c3BlbmRlZAAACAx3aG8AGGFtb3VudAggUmVzdG9yZWQAAAgMd2hvABhhbW91bnQIIFVwZ3JhZGVkAAAEDHdobwAYSXNzdWVkAAAEGGFtb3VudAgkUmVzY2luZGVkAAAEGGFtb3VudAgYTG9ja2VkAAAIDHdobwAYYW1vdW50CCBVbmxvY2tlZAAACAx3aG8AGGFtb3VudAgYRnJvemVuAAAIDHdobwAYYW1vdW50CBhUaGF3ZWQAAAgMd2hvABhhbW91bnQITFRvdGFsSXNzdWFuY2VGb3JjZWQAAAgMb2xkCAxuZXcIEEhlbGQAAAwYcmVhc29uqAx3aG8AGGFtb3VudAgoQnVybmVkSGVsZAAADBhyZWFzb26oDHdobwAYYW1vdW50CDhUcmFuc2Zlck9uSG9sZAAAEBhyZWFzb26oGHNvdXJjZQAQZGVzdAAYYW1vdW50CDxUcmFuc2ZlckFuZEhvbGQAABAYcmVhc29uqBhzb3VyY2UAEGRlc3QALHRyYW5zZmVycmVkCCBSZWxlYXNlZAAADBhyZWFzb26oDHdobwAYYW1vdW50CChVbmV4cGVjdGVkAawCBEhUcmFuc2FjdGlvbkZlZVBhaWQAAAwMd2hvAChhY3R1YWxfZmVlCAx0aXAIAQUHuIgGAAIQFFN1ZGlkAAAELHN1ZG9fcmVzdWx0vChLZXlDaGFuZ2VkAAAIDG9sZMAMbmV3AChLZXlSZW1vdmVkAAEFKFN1ZG9Bc0RvbmUAAAQsc3Vkb19yZXN1bHS8BAAAAihATmV3SW52dWxuZXJhYmxlcwAABDRpbnZ1bG5lcmFibGVzyERJbnZ1bG5lcmFibGVBZGRlZAAABChhY2NvdW50X2lkAExJbnZ1bG5lcmFibGVSZW1vdmVkAAAEKGFjY291bnRfaWQAUE5ld0Rlc2lyZWRDYW5kaWRhdGVzAAAESGRlc2lyZWRfY2FuZGlkYXRlcwRATmV3Q2FuZGlkYWN5Qm9uZAAABCxib25kX2Ftb3VudAg4Q2FuZGlkYXRlQWRkZWQAAAgoYWNjb3VudF9pZAAcZGVwb3NpdAhQQ2FuZGlkYXRlQm9uZFVwZGF0ZWQAAAgoYWNjb3VudF9pZAAcZGVwb3NpdAhAQ2FuZGlkYXRlUmVtb3ZlZAAABChhY2NvdW50X2lkAERDYW5kaWRhdGVSZXBsYWNlZAAADAxvbGQADG5ldwAcZGVwb3NpdAhoSW52YWxpZEludnVsbmVyYWJsZVNraXBwZWQAAAQoYWNjb3VudF9pZAACEChOZXdTZXNzaW9uAAAENHNlc3Npb25faW5kZXgEJE5ld1F1ZXVlZAABBURWYWxpZGF0b3JEaXNhYmxlZAAABCR2YWxpZGF0b3IASFZhbGlkYXRvclJlZW5hYmxlZAAABCR2YWxpZGF0b3IAAgQ8WGNtcE1lc3NhZ2VTZW50AAAEMG1lc3NhZ2VfaGFzaCACpCBPdmVyZmxvdwABBTRVbmltcGxlbWVudGVkAAEFYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgABBWRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAEFMExvY2F0aW9uRnVsbAABBVRMb2NhdGlvbk5vdEludmVydGlibGUAAQUkQmFkT3JpZ2luAAEFPEludmFsaWRMb2NhdGlvbgABBTRBc3NldE5vdEZvdW5kAAEFVEZhaWxlZFRvVHJhbnNhY3RBc3NldAABBTxOb3RXaXRoZHJhd2FibGUAAQVITG9jYXRpb25DYW5ub3RIb2xkAAEFVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQABBVhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAAEFJFRyYW5zcG9ydAABBShVbnJvdXRhYmxlAAEFMFVua25vd25DbGFpbQABBThGYWlsZWRUb0RlY29kZQABBUBNYXhXZWlnaHRJbnZhbGlkAAEFOE5vdEhvbGRpbmdGZWVzAAEFMFRvb0V4cGVuc2l2ZQABBRBUcmFwAQhARXhwZWN0YXRpb25GYWxzZQABBThQYWxsZXROb3RGb3VuZAABBTBOYW1lTWlzbWF0Y2gAAQVMVmVyc2lvbkluY29tcGF0aWJsZQABBVBIb2xkaW5nV291bGRPdmVyZmxvdwABBSxFeHBvcnRFcnJvcgABBThSZWFuY2hvckZhaWxlZAABBRhOb0RlYWwAAQUoRmVlc05vdE1ldAABBSRMb2NrRXJyb3IAAQUwTm9QZXJtaXNzaW9uAAEFKFVuYW5jaG9yZWQAAQU4Tm90RGVwb3NpdGFibGUAAQU0VG9vTWFueUFzc2V0cwABBUxVbmhhbmRsZWRYY21WZXJzaW9uAAEFSFdlaWdodExpbWl0UmVhY2hlZAEYHEJhcnJpZXIAAQVMV2VpZ2h0Tm90Q29tcHV0YWJsZQABBURFeGNlZWRzU3RhY2tMaW1pdAABBQAIFGluZGV4BBRlcnJvctgCDCBDb21wbGV0ZQAABBB1c2VkGChJbmNvbXBsZXRlAAAIEHVzZWQYFGVycm9y3BRFcnJvcgHcAiAkQnlHZW5lc2lzASAYQnlGb3JrAAAIMGJsb2NrX251bWJlcggoYmxvY2tfaGFzaCAgUG9sa2Fkb3QAAQUYS3VzYW1hAAEFIEV0aGVyZXVtAAAEIGNoYWluX2lkCCxCaXRjb2luQ29yZQABBSxCaXRjb2luQ2FzaAABBUBQb2xrYWRvdEJ1bGxldGluAAEFBuQFAVACKBBVbml0AAEFHE1vbmlrZXIBKBRJbmRleAEEJEV4ZWN1dGl2ZQABBSRUZWNobmljYWwAAQUsTGVnaXNsYXRpdmUAAQUgSnVkaWNpYWwAAQUcRGVmZW5zZQABBThBZG1pbmlzdHJhdGlvbgABBSBUcmVhc3VyeQABBQIUFFZvaWNlAAEFHE1lbWJlcnMAAAQUY291bnQEIEZyYWN0aW9uAAAIDG5vbQQUZGVub20EREF0TGVhc3RQcm9wb3J0aW9uAAAIDG5vbQQUZGVub20ESE1vcmVUaGFuUHJvcG9ydGlvbgAACAxub20EFGRlbm9tBAIoJFBhcmFjaGFpbgEELEFjY291bnRJZDMyAAAIHG5ldHdvcmvoCGlkIDhBY2NvdW50SW5kZXg2NAAACBxuZXR3b3Jr6BRpbmRleAgwQWNjb3VudEtleTIwAAAIHG5ldHdvcmvoDGtleew4UGFsbGV0SW5zdGFuY2UBBDBHZW5lcmFsSW5kZXgBCChHZW5lcmFsS2V5AAAIGGxlbmd0aAQQZGF0YSAkT25seUNoaWxkAAEFJFBsdXJhbGl0eQAACAhpZPAQcGFydPQ8R2xvYmFsQ29uc2Vuc3VzAeQE+AEIBPgBDAT4ARAE+AEUBPgBGAT4ARwE+AEgAiQQSGVyZQABBQhYMQH4CFgyAfwIWDMBAQEIWDQBBQEIWDUBCQEIWDYBDQEIWDcBEQEIWDgBFQEACBxwYXJlbnRzBCBpbnRlcmlvchkBBQEgBQFAAhgkVW5kZWZpbmVkAAEFFEluZGV4AQgYQXJyYXk0ASgYQXJyYXk4ASEBHEFycmF5MTYBJQEcQXJyYXkzMgEgAgggRnVuZ2libGUBCCxOb25GdW5naWJsZQEpAQAICGlkHQEMZnVuLQEEMQEAAwgE2AY5AQAYFGluZGV4BBBuYW1lJCxtb2R1bGVfbmFtZSQUbWFqb3IEFG1pbm9yBBRwYXRjaAQEQQEAAgwcU3VjY2VzcwABBRRFcnJvcgEkOFRydW5jYXRlZEVycm9yASQCGBBOdWxsAAEFGEFzc2V0cwE1ATxFeGVjdXRpb25SZXN1bHQBPQEcVmVyc2lvbgEELFBhbGxldHNJbmZvAUUBOERpc3BhdGNoUmVzdWx0AUkBBh0BAhAYTmF0aXZlAAEFQFNvdmVyZWlnbkFjY291bnQAAQUkU3VwZXJ1c2VyAAEFDFhjbQABBQYYAAwsZGVzdGluYXRpb24dASBxdWVyeV9pZAgobWF4X3dlaWdodBgCCCBGdW5naWJsZQABBSxOb25GdW5naWJsZQABBQIQDEFsbAABBRRBbGxPZgAACAhpZB0BDGZ1bmEBKEFsbENvdW50ZWQBBDBBbGxPZkNvdW50ZWQAAAwIaWQdAQxmdW5hARRjb3VudAQCCCBEZWZpbml0ZQE1ARBXaWxkAWUBAggkVW5saW1pdGVkAAEFHExpbWl0ZWQBGAIMIFRlbGVwb3J0AWkBOFJlc2VydmVEZXBvc2l0AWkBPFJlc2VydmVXaXRoZHJhdwFpAQZxAQRxAQAGGQECBDBBc3NldENsYWltZXIAAAQgbG9jYXRpb24dAQSBAQAC0DRXaXRoZHJhd0Fzc2V0ATUBVFJlc2VydmVBc3NldERlcG9zaXRlZAE1AVhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0ATUBNFF1ZXJ5UmVzcG9uc2UAABAgcXVlcnlfaWQIIHJlc3BvbnNlTQEobWF4X3dlaWdodBgccXVlcmllclEBNFRyYW5zZmVyQXNzZXQAAAgYYXNzZXRzNQEsYmVuZWZpY2lhcnkdAVBUcmFuc2ZlclJlc2VydmVBc3NldAAADBhhc3NldHM1ARBkZXN0HQEMeGNtjQEgVHJhbnNhY3QAAAwsb3JpZ2luX2tpbmRVAUxmYWxsYmFja19tYXhfd2VpZ2h0WQEQY2FsbCRkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAAADBhzZW5kZXIEQG1heF9tZXNzYWdlX3NpemUEMG1heF9jYXBhY2l0eQRMSHJtcENoYW5uZWxBY2NlcHRlZAAABCRyZWNpcGllbnQESEhybXBDaGFubmVsQ2xvc2luZwAADCRpbml0aWF0b3IEGHNlbmRlcgQkcmVjaXBpZW50BCxDbGVhck9yaWdpbgABBTREZXNjZW5kT3JpZ2luARkBLFJlcG9ydEVycm9yAV0BMERlcG9zaXRBc3NldAAACBhhc3NldHNpASxiZW5lZmljaWFyeR0BTERlcG9zaXRSZXNlcnZlQXNzZXQAAAwYYXNzZXRzaQEQZGVzdB0BDHhjbY0BNEV4Y2hhbmdlQXNzZXQAAAwQZ2l2ZWkBEHdhbnQ1ARxtYXhpbWFsFFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwAADBhhc3NldHNpARxyZXNlcnZlHQEMeGNtjQFASW5pdGlhdGVUZWxlcG9ydAAADBhhc3NldHNpARBkZXN0HQEMeGNtjQE0UmVwb3J0SG9sZGluZwAACDRyZXNwb25zZV9pbmZvXQEYYXNzZXRzaQEwQnV5RXhlY3V0aW9uAAAIEGZlZXMxATB3ZWlnaHRfbGltaXRtATRSZWZ1bmRTdXJwbHVzAAEFPFNldEVycm9ySGFuZGxlcgGNASxTZXRBcHBlbmRpeAGNAShDbGVhckVycm9yAAEFKENsYWltQXNzZXQAAAgYYXNzZXRzNQEYdGlja2V0HQEQVHJhcAEIQFN1YnNjcmliZVZlcnNpb24AAAggcXVlcnlfaWQITG1heF9yZXNwb25zZV93ZWlnaHQYSFVuc3Vic2NyaWJlVmVyc2lvbgABBSRCdXJuQXNzZXQBNQEsRXhwZWN0QXNzZXQBNQEwRXhwZWN0T3JpZ2luAVEBLEV4cGVjdEVycm9yAT0BUEV4cGVjdFRyYW5zYWN0U3RhdHVzAUkBLFF1ZXJ5UGFsbGV0AAAILG1vZHVsZV9uYW1lJDRyZXNwb25zZV9pbmZvXQEwRXhwZWN0UGFsbGV0AAAUFGluZGV4BBBuYW1lJCxtb2R1bGVfbmFtZSQsY3JhdGVfbWFqb3IEPG1pbl9jcmF0ZV9taW5vcgRQUmVwb3J0VHJhbnNhY3RTdGF0dXMBXQFMQ2xlYXJUcmFuc2FjdFN0YXR1cwABBTxVbml2ZXJzYWxPcmlnaW4B+DRFeHBvcnRNZXNzYWdlAAAMHG5ldHdvcmvkLGRlc3RpbmF0aW9uGQEMeGNtjQEkTG9ja0Fzc2V0AAAIFGFzc2V0MQEgdW5sb2NrZXIdASxVbmxvY2tBc3NldAAACBRhc3NldDEBGHRhcmdldB0BOE5vdGVVbmxvY2thYmxlAAAIFGFzc2V0MQEUb3duZXIdATRSZXF1ZXN0VW5sb2NrAAAIFGFzc2V0MQEYbG9ja2VyHQEsU2V0RmVlc01vZGUAAAQwaml0X3dpdGhkcmF3FCBTZXRUb3BpYwEgKENsZWFyVG9waWMAAQUsQWxpYXNPcmlnaW4BHQE8VW5wYWlkRXhlY3V0aW9uAAAIMHdlaWdodF9saW1pdG0BMGNoZWNrX29yaWdpblEBHFBheUZlZXMAAAQUYXNzZXQxAUBJbml0aWF0ZVRyYW5zZmVyAAAULGRlc3RpbmF0aW9uHQEscmVtb3RlX2ZlZXN1ATxwcmVzZXJ2ZV9vcmlnaW4UGGFzc2V0c3kBKHJlbW90ZV94Y22NAURFeGVjdXRlV2l0aE9yaWdpbgAACERkZXNjZW5kYW50X29yaWdpbn0BDHhjbY0BIFNldEhpbnRzAAAEFGhpbnRzhQEEiQEAAhw0Tm90QXBwbGljYWJsZQABBSRUcmFuc3BvcnQAAQUoVW5yb3V0YWJsZQABBVhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAAEFVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQABBTxNaXNzaW5nQXJndW1lbnQAAQUQRmVlcwABBQIsJEJ5R2VuZXNpcwEgGEJ5Rm9yawAACDBibG9ja19udW1iZXIIKGJsb2NrX2hhc2ggIFBvbGthZG90AAEFGEt1c2FtYQABBRxXZXN0ZW5kAAEFGFJvY29jbwABBRhXb2NvY28AAQUgRXRoZXJldW0AAAQgY2hhaW5faWQILEJpdGNvaW5Db3JlAAEFLEJpdGNvaW5DYXNoAAEFQFBvbGthZG90QnVsbGV0aW4AAQUGlQECKCRQYXJhY2hhaW4BBCxBY2NvdW50SWQzMgAACBxuZXR3b3JrmQEIaWQgOEFjY291bnRJbmRleDY0AAAIHG5ldHdvcmuZARRpbmRleAgwQWNjb3VudEtleTIwAAAIHG5ldHdvcmuZAQxrZXnsOFBhbGxldEluc3RhbmNlAQQwR2VuZXJhbEluZGV4AQgoR2VuZXJhbEtleQAACBhsZW5ndGgEEGRhdGEgJE9ubHlDaGlsZAABBSRQbHVyYWxpdHkAAAgIaWTwEHBhcnT0PEdsb2JhbENvbnNlbnN1cwGVAQIkEEhlcmUAAQUIWDEBnQEIWDIABJ0BAQgIWDMABJ0BAQwIWDQABJ0BARAIWDUABJ0BARQIWDYABJ0BARgIWDcABJ0BARwIWDgABJ0BASAACBxwYXJlbnRzBCBpbnRlcmlvcqEBAgggQ29uY3JldGUBpQEgQWJzdHJhY3QBIAAICGlkqQEMZnVuLQEErQEAAAgIaWSlAQxmdW4tAQS1AQACDAhWMwGxAQhWNAG5AQhWNQE1AQIMCFYzAaUBCFY0AaUBCFY1AR0BBggCdCRBdHRlbXB0ZWQAAAQcb3V0Y29tZeAQU2VudAAAEBhvcmlnaW4dASxkZXN0aW5hdGlvbh0BHG1lc3NhZ2WNAShtZXNzYWdlX2lkIChTZW5kRmFpbGVkAAAQGG9yaWdpbh0BLGRlc3RpbmF0aW9uHQEUZXJyb3KRAShtZXNzYWdlX2lkIDxQcm9jZXNzWGNtRXJyb3IAAAwYb3JpZ2luHQEUZXJyb3LYKG1lc3NhZ2VfaWQgSFVuZXhwZWN0ZWRSZXNwb25zZQAACBhvcmlnaW4dASBxdWVyeV9pZAg0UmVzcG9uc2VSZWFkeQAACCBxdWVyeV9pZAggcmVzcG9uc2VNASBOb3RpZmllZAAADCBxdWVyeV9pZAgwcGFsbGV0X2luZGV4BChjYWxsX2luZGV4BEBOb3RpZnlPdmVyd2VpZ2h0AAAUIHF1ZXJ5X2lkCDBwYWxsZXRfaW5kZXgEKGNhbGxfaW5kZXgENGFjdHVhbF93ZWlnaHQYTG1heF9idWRnZXRlZF93ZWlnaHQYTE5vdGlmeURpc3BhdGNoRXJyb3IAAAwgcXVlcnlfaWQIMHBhbGxldF9pbmRleAQoY2FsbF9pbmRleARITm90aWZ5RGVjb2RlRmFpbGVkAAAMIHF1ZXJ5X2lkCDBwYWxsZXRfaW5kZXgEKGNhbGxfaW5kZXgEQEludmFsaWRSZXNwb25kZXIAAAwYb3JpZ2luHQEgcXVlcnlfaWQIRGV4cGVjdGVkX2xvY2F0aW9uUQFcSW52YWxpZFJlc3BvbmRlclZlcnNpb24AAAgYb3JpZ2luHQEgcXVlcnlfaWQINFJlc3BvbnNlVGFrZW4AAAQgcXVlcnlfaWQINEFzc2V0c1RyYXBwZWQAAAwQaGFzaCAYb3JpZ2luHQEYYXNzZXRzvQFUVmVyc2lvbkNoYW5nZU5vdGlmaWVkAAAQLGRlc3RpbmF0aW9uHQEYcmVzdWx0BBBjb3N0NQEobWVzc2FnZV9pZCBcU3VwcG9ydGVkVmVyc2lvbkNoYW5nZWQAAAggbG9jYXRpb24dARx2ZXJzaW9uBFBOb3RpZnlUYXJnZXRTZW5kRmFpbAAADCBsb2NhdGlvbh0BIHF1ZXJ5X2lkCBRlcnJvcthkTm90aWZ5VGFyZ2V0TWlncmF0aW9uRmFpbAAACCBsb2NhdGlvbsEBIHF1ZXJ5X2lkCFRJbnZhbGlkUXVlcmllclZlcnNpb24AAAgYb3JpZ2luHQEgcXVlcnlfaWQIOEludmFsaWRRdWVyaWVyAAAQGG9yaWdpbh0BIHF1ZXJ5X2lkCEBleHBlY3RlZF9xdWVyaWVyHQFQbWF5YmVfYWN0dWFsX3F1ZXJpZXJRAVBWZXJzaW9uTm90aWZ5U3RhcnRlZAAADCxkZXN0aW5hdGlvbh0BEGNvc3Q1AShtZXNzYWdlX2lkIFhWZXJzaW9uTm90aWZ5UmVxdWVzdGVkAAAMLGRlc3RpbmF0aW9uHQEQY29zdDUBKG1lc3NhZ2VfaWQgYFZlcnNpb25Ob3RpZnlVbnJlcXVlc3RlZAAADCxkZXN0aW5hdGlvbh0BEGNvc3Q1AShtZXNzYWdlX2lkICBGZWVzUGFpZAAACBhwYXlpbmcdARBmZWVzNQE0QXNzZXRzQ2xhaW1lZAAADBBoYXNoIBhvcmlnaW4dARhhc3NldHO9AWBWZXJzaW9uTWlncmF0aW9uRmluaXNoZWQAAAQcdmVyc2lvbgQ8QWxpYXNBdXRob3JpemVkAAAMHGFsaWFzZXIdARh0YXJnZXQdARhleHBpcnnFAWRBbGlhc0F1dGhvcml6YXRpb25SZW1vdmVkAAAIHGFsaWFzZXIdARh0YXJnZXQdAXBBbGlhc2VzQXV0aG9yaXphdGlvbnNSZW1vdmVkAAAEGHRhcmdldB0BAgw0SW52YWxpZEZvcm1hdAEgSFVuc3VwcG9ydGVkVmVyc2lvbgEgQEV4ZWN1dGVkRG93bndhcmQAAwgg4AIMEEhlcmUAAQUYUGFyZW50AAEFHFNpYmxpbmcBBAIYJEJhZEZvcm1hdAABBRxDb3JydXB0AAEFLFVuc3VwcG9ydGVkAAEFKE92ZXJ3ZWlnaHQBGBRZaWVsZAABBURTdGFja0xpbWl0UmVhY2hlZAABBQIQQFByb2Nlc3NpbmdGYWlsZWQAAAwIaWQgGG9yaWdpbtEBFGVycm9y1QEkUHJvY2Vzc2VkAAAQCGlkIBhvcmlnaW7RASx3ZWlnaHRfdXNlZBgcc3VjY2VzcxRIT3ZlcndlaWdodEVucXVldWVkAAAQCGlkIBhvcmlnaW7RAShwYWdlX2luZGV4BDRtZXNzYWdlX2luZGV4BChQYWdlUmVhcGVkAAAIGG9yaWdpbtEBFGluZGV4BAUBAQEFAQUBBQGEAhAcU3IyNTUxOQAACCRzaWduYXR1cmXdARhzaWduZXIgHEVkMjU1MTkAAAgkc2lnbmF0dXJl3QEYc2lnbmVyIDhTZWNwMjU2azFFY2RzYQAACCRzaWduYXR1cmXhARhzaWduZXLlARxPbkNoYWluAAAMDHdobyAoYmxvY2tfaGFzaCAsZXZlbnRfaW5kZXgIBukBBgQEIAEQBiQAHBRwcm9vZu0BOGRlY3J5cHRpb25fa2V5kBxjaGFubmVskCBwcmlvcml0efEBKG51bV90b3BpY3MEGHRvcGljc/UBEGRhdGH5AQIEME5ld1N0YXRlbWVudAAACBxhY2NvdW50ACRzdGF0ZW1lbnT9AQIIMENsYWltQ3JlYXRlZAAACAx3aG8AEGhhc2ggMENsYWltUmV2b2tlZAAACAx3aG8AEGhhc2ggBCAAAgw8Q29udHJhY3RFbWl0dGVkAAAMIGNvbnRyYWN07BBkYXRhJBh0b3BpY3MJAjBJbnN0YW50aWF0ZWQAAAggZGVwbG95ZXLsIGNvbnRyYWN07EhFdGhFeHRyaW5zaWNSZXZlcnQAAAQ4ZGlzcGF0Y2hfZXJyb3KIAjgYU3lzdGVtAYw8UGFyYWNoYWluU3lzdGVtAZQgQmFsYW5jZXMBsEhUcmFuc2FjdGlvblBheW1lbnQBtBBTdWRvAcREQ29sbGF0b3JTZWxlY3Rpb24BzBxTZXNzaW9uAdAkWGNtcFF1ZXVlAdQsUG9sa2Fkb3RYY20ByQEoQ3VtdWx1c1hjbQHNATBNZXNzYWdlUXVldWUB2QEkU3RhdGVtZW50AQECOFRlbXBsYXRlUGFsbGV0AQUCGFJldml2ZQENAgAMFHBoYXNlNBRldmVudBECGHRvcGljcwkCBBUCAAQEAQgEHQIAAQEACDBzcGVjX3ZlcnNpb24EJHNwZWNfbmFtZSUCAAgkY29kZV9oYXNoIDRjaGVja192ZXJzaW9uFAAQOGJhc2VfZXh0cmluc2ljGDRtYXhfZXh0cmluc2ljWQEkbWF4X3RvdGFsWQEgcmVzZXJ2ZWRZAQAMGG5vcm1hbDECLG9wZXJhdGlvbmFsMQIkbWFuZGF0b3J5MQIADChiYXNlX2Jsb2NrGCRtYXhfYmxvY2sYJHBlcl9jbGFzczUCAAwYbm9ybWFsBCxvcGVyYXRpb25hbAQkbWFuZGF0b3J5BAAIEHJlYWQIFHdyaXRlCAMIIQEEBEUCAAAgJHNwZWNfbmFtZSUCJGltcGxfbmFtZSUCRGF1dGhvcmluZ192ZXJzaW9uBDBzcGVjX3ZlcnNpb24EMGltcGxfdmVyc2lvbgQQYXBpc0kCTHRyYW5zYWN0aW9uX3ZlcnNpb24EOHN5c3RlbV92ZXJzaW9uBAQkAQgEUQIABCQAAAgkbXNnX2NvdW50BCx0b3RhbF9ieXRlcwQDCARdAgRhAgAADDR1bXBfbXNnX2NvdW50BDx1bXBfdG90YWxfYnl0ZXMENGhybXBfb3V0Z29pbmdlAgIIFEFib3J0AAEFHEdvQWhlYWQAAQUGbQIADDh1c2VkX2JhbmR3aWR0aGkCOHBhcmFfaGVhZF9oYXNokGBjb25zdW1lZF9nb19haGVhZF9zaWduYWxxAgR1AgAADDh1c2VkX2JhbmR3aWR0aGkCOGhybXBfd2F0ZXJtYXJr8QFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFscQIAECxwYXJlbnRfaGVhZCRMcmVsYXlfcGFyZW50X251bWJlcgRkcmVsYXlfcGFyZW50X3N0b3JhZ2Vfcm9vdCAwbWF4X3Bvdl9zaXplBAIEHFByZXNlbnQAAQUGhQIACDxyZW1haW5pbmdfY291bnQEOHJlbWFpbmluZ19zaXplBAAYMG1heF9jYXBhY2l0eQQ4bWF4X3RvdGFsX3NpemUEQG1heF9tZXNzYWdlX3NpemUEJG1zZ19jb3VudAQodG90YWxfc2l6ZQQgbXFjX2hlYWSQAwgEkQIElQIAABAwZG1xX21xY19oZWFkIJxyZWxheV9kaXNwYXRjaF9xdWV1ZV9yZW1haW5pbmdfY2FwYWNpdHmNAkBpbmdyZXNzX2NoYW5uZWxzmQI8ZWdyZXNzX2NoYW5uZWxzmQIACExtYXhfY2FuZGlkYXRlX2RlcHRoBFBhbGxvd2VkX2FuY2VzdHJ5X2xlbgQAKDRtYXhfY29kZV9zaXplBEhtYXhfaGVhZF9kYXRhX3NpemUEWG1heF91cHdhcmRfcXVldWVfY291bnQEVG1heF91cHdhcmRfcXVldWVfc2l6ZQRcbWF4X3Vwd2FyZF9tZXNzYWdlX3NpemUEkG1heF91cHdhcmRfbWVzc2FnZV9udW1fcGVyX2NhbmRpZGF0ZQSIaHJtcF9tYXhfbWVzc2FnZV9udW1fcGVyX2NhbmRpZGF0ZQRsdmFsaWRhdGlvbl91cGdyYWRlX2Nvb2xkb3duBGB2YWxpZGF0aW9uX3VwZ3JhZGVfZGVsYXkEUGFzeW5jX2JhY2tpbmdfcGFyYW1zoQIDCAQgBKkCAAAIHHNlbnRfYXQELHJldmVyc2VfaWR4BAAIJHJlY2lwaWVudAQQZGF0YSQEtQIAABQscGFyZW50X2hhc2ggGG51bWJlcgQoc3RhdGVfcm9vdCA8ZXh0cmluc2ljc19yb290IBhkaWdlc3QwBL0CAAAQPHZhbGlkYXRpb25fZGF0YYECRHJlbGF5X2NoYWluX3N0YXRlWQJgcmVsYXlfcGFyZW50X2Rlc2NlbmRhbnRzwQJAY29sbGF0b3JfcGVlcl9pZPkBAAgcc2VudF9hdAQMbXNnJATJAgAACBxzZW50X2F0BCBtc2dfaGFzaCAE0QIAAAg0ZnVsbF9tZXNzYWdlc80CPGhhc2hlZF9tZXNzYWdlc9UCAAgcc2VudF9hdAQQZGF0YSQDCATdAgThAgADCATRAgTpAgAACDRmdWxsX21lc3NhZ2Vz5QI8aGFzaGVkX21lc3NhZ2Vz7QIACERkb3dud2FyZF9tZXNzYWdlc9kCTGhvcml6b250YWxfbWVzc2FnZXPxAgIMDEZlZQABBRBNaXNjAAEFDEFsbAABBQAMCGlkIQEYYW1vdW50CBxyZWFzb25z+QIE/QIAAAgIaWQhARhhbW91bnQIBAUDAAAICGlkqBhhbW91bnQIBA0DAAAEGGFtb3VudAgEFQMAAhQISWQBABRJbmRleAG4DFJhdwEkJEFkZHJlc3MzMgEgJEFkZHJlc3MyMAHsAgggSW5jcmVhc2UAAQUgRGVjcmVhc2UAAQUCCCRWMUFuY2llbnQAAQUIVjIAAQUCLBhyZW1hcmsAAAQYcmVtYXJrJDhzZXRfaGVhcF9wYWdlcwAABBRwYWdlcwggc2V0X2NvZGUAAAQQY29kZSRcc2V0X2NvZGVfd2l0aG91dF9jaGVja3MAAAQQY29kZSQsc2V0X3N0b3JhZ2UAAAQUaXRlbXNVAjBraWxsX3N0b3JhZ2UAAAQQa2V5c1kCLGtpbGxfcHJlZml4AAAIGHByZWZpeCQcc3Via2V5cwREcmVtYXJrX3dpdGhfZXZlbnQAAAQYcmVtYXJrJERhdXRob3JpemVfdXBncmFkZQAABCRjb2RlX2hhc2gggGF1dGhvcml6ZV91cGdyYWRlX3dpdGhvdXRfY2hlY2tzAAAEJGNvZGVfaGFzaCBgYXBwbHlfYXV0aG9yaXplZF91cGdyYWRlAAAEEGNvZGUkAghMc2V0X3ZhbGlkYXRpb25fZGF0YQAACBBkYXRhxQJUaW5ib3VuZF9tZXNzYWdlc19kYXRh9QJgc3Vkb19zZW5kX3Vwd2FyZF9tZXNzYWdlAAAEHG1lc3NhZ2UkAgQMc2V0AAAEDG5vdwgCJFB0cmFuc2Zlcl9hbGxvd19kZWF0aAAACBBkZXN0HQMUdmFsdWUIOGZvcmNlX3RyYW5zZmVyAAAMGHNvdXJjZR0DEGRlc3QdAxR2YWx1ZQhMdHJhbnNmZXJfa2VlcF9hbGl2ZQAACBBkZXN0HQMUdmFsdWUIMHRyYW5zZmVyX2FsbAAACBBkZXN0HQMoa2VlcF9hbGl2ZRQ8Zm9yY2VfdW5yZXNlcnZlAAAIDHdobx0DGGFtb3VudAhAdXBncmFkZV9hY2NvdW50cwAABAx3aG/IRGZvcmNlX3NldF9iYWxhbmNlAAAIDHdobx0DIG5ld19mcmVlCGxmb3JjZV9hZGp1c3RfdG90YWxfaXNzdWFuY2UAAAgkZGlyZWN0aW9uIQMUZGVsdGEIEGJ1cm4AAAgUdmFsdWUIKGtlZXBfYWxpdmUUAhQQc3VkbwAABBBjYWxspQNUc3Vkb191bmNoZWNrZWRfd2VpZ2h0AAAIEGNhbGylAxh3ZWlnaHQYHHNldF9rZXkAAAQMbmV3HQMcc3Vkb19hcwAACAx3aG8dAxBjYWxspQMocmVtb3ZlX2tleQABBQIkRHNldF9pbnZ1bG5lcmFibGVzAAAEDG5ld8hYc2V0X2Rlc2lyZWRfY2FuZGlkYXRlcwAABAxtYXgESHNldF9jYW5kaWRhY3lfYm9uZAAABBBib25kCFRyZWdpc3Rlcl9hc19jYW5kaWRhdGUAAQUwbGVhdmVfaW50ZW50AAEFQGFkZF9pbnZ1bG5lcmFibGUAAAQMd2hvAExyZW1vdmVfaW52dWxuZXJhYmxlAAAEDHdobwAsdXBkYXRlX2JvbmQAAAQsbmV3X2RlcG9zaXQITHRha2VfY2FuZGlkYXRlX3Nsb3QAAAgcZGVwb3NpdAgYdGFyZ2V0AAIIIHNldF9rZXlzAAAIEGtleXMgFHByb29mJChwdXJnZV9rZXlzAAEFAhRUc3VzcGVuZF94Y21fZXhlY3V0aW9uAAEFUHJlc3VtZV94Y21fZXhlY3V0aW9uAAEFYHVwZGF0ZV9zdXNwZW5kX3RocmVzaG9sZAAABAxuZXcEVHVwZGF0ZV9kcm9wX3RocmVzaG9sZAAABAxuZXcEXHVwZGF0ZV9yZXN1bWVfdGhyZXNob2xkAAAEDG5ldwQCoCBPdmVyZmxvdwABBTRVbmltcGxlbWVudGVkAAEFYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgABBWRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAEFMExvY2F0aW9uRnVsbAABBVRMb2NhdGlvbk5vdEludmVydGlibGUAAQUkQmFkT3JpZ2luAAEFPEludmFsaWRMb2NhdGlvbgABBTRBc3NldE5vdEZvdW5kAAEFVEZhaWxlZFRvVHJhbnNhY3RBc3NldAABBTxOb3RXaXRoZHJhd2FibGUAAQVITG9jYXRpb25DYW5ub3RIb2xkAAEFVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQABBVhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAAEFJFRyYW5zcG9ydAABBShVbnJvdXRhYmxlAAEFMFVua25vd25DbGFpbQABBThGYWlsZWRUb0RlY29kZQABBUBNYXhXZWlnaHRJbnZhbGlkAAEFOE5vdEhvbGRpbmdGZWVzAAEFMFRvb0V4cGVuc2l2ZQABBRBUcmFwAQhARXhwZWN0YXRpb25GYWxzZQABBThQYWxsZXROb3RGb3VuZAABBTBOYW1lTWlzbWF0Y2gAAQVMVmVyc2lvbkluY29tcGF0aWJsZQABBVBIb2xkaW5nV291bGRPdmVyZmxvdwABBSxFeHBvcnRFcnJvcgABBThSZWFuY2hvckZhaWxlZAABBRhOb0RlYWwAAQUoRmVlc05vdE1ldAABBSRMb2NrRXJyb3IAAQUwTm9QZXJtaXNzaW9uAAEFKFVuYW5jaG9yZWQAAQU4Tm90RGVwb3NpdGFibGUAAQVMVW5oYW5kbGVkWGNtVmVyc2lvbgABBUhXZWlnaHRMaW1pdFJlYWNoZWQBGBxCYXJyaWVyAAEFTFdlaWdodE5vdENvbXB1dGFibGUAAQVERXhjZWVkc1N0YWNrTGltaXQAAQUDCARJAwZNAwIYEE51bGwAAQUYQXNzZXRzAbEBPEV4ZWN1dGlvblJlc3VsdAFRAxxWZXJzaW9uAQQsUGFsbGV0c0luZm8BRQE4RGlzcGF0Y2hSZXN1bHQBSQEGpQEADCxkZXN0aW5hdGlvbqUBIHF1ZXJ5X2lkCChtYXhfd2VpZ2h0GAIQDEFsbAABBRRBbGxPZgAACAhpZKkBDGZ1bmEBKEFsbENvdW50ZWQBBDBBbGxPZkNvdW50ZWQAAAwIaWSpAQxmdW5hARRjb3VudAQCCCBEZWZpbml0ZQGxARBXaWxkAWEDAsA0V2l0aGRyYXdBc3NldAGxAVRSZXNlcnZlQXNzZXREZXBvc2l0ZWQBsQFYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAGxATRRdWVyeVJlc3BvbnNlAAAQIHF1ZXJ5X2lkCCByZXNwb25zZVUDKG1heF93ZWlnaHQYHHF1ZXJpZXJZAzRUcmFuc2ZlckFzc2V0AAAIGGFzc2V0c7EBLGJlbmVmaWNpYXJ5pQFQVHJhbnNmZXJSZXNlcnZlQXNzZXQAAAwYYXNzZXRzsQEQZGVzdKUBDHhjbW0DIFRyYW5zYWN0AAAMLG9yaWdpbl9raW5kVQFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdBgQY2FsbCRkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAAADBhzZW5kZXIEQG1heF9tZXNzYWdlX3NpemUEMG1heF9jYXBhY2l0eQRMSHJtcENoYW5uZWxBY2NlcHRlZAAABCRyZWNpcGllbnQESEhybXBDaGFubmVsQ2xvc2luZwAADCRpbml0aWF0b3IEGHNlbmRlcgQkcmVjaXBpZW50BCxDbGVhck9yaWdpbgABBTREZXNjZW5kT3JpZ2luAaEBLFJlcG9ydEVycm9yAV0DMERlcG9zaXRBc3NldAAACBhhc3NldHNlAyxiZW5lZmljaWFyeaUBTERlcG9zaXRSZXNlcnZlQXNzZXQAAAwYYXNzZXRzZQMQZGVzdKUBDHhjbW0DNEV4Y2hhbmdlQXNzZXQAAAwQZ2l2ZWUDEHdhbnSxARxtYXhpbWFsFFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwAADBhhc3NldHNlAxxyZXNlcnZlpQEMeGNtbQNASW5pdGlhdGVUZWxlcG9ydAAADBhhc3NldHNlAxBkZXN0pQEMeGNtbQM0UmVwb3J0SG9sZGluZwAACDRyZXNwb25zZV9pbmZvXQMYYXNzZXRzZQMwQnV5RXhlY3V0aW9uAAAIEGZlZXOtATB3ZWlnaHRfbGltaXRtATRSZWZ1bmRTdXJwbHVzAAEFPFNldEVycm9ySGFuZGxlcgFtAyxTZXRBcHBlbmRpeAFtAyhDbGVhckVycm9yAAEFKENsYWltQXNzZXQAAAgYYXNzZXRzsQEYdGlja2V0pQEQVHJhcAEIQFN1YnNjcmliZVZlcnNpb24AAAggcXVlcnlfaWQITG1heF9yZXNwb25zZV93ZWlnaHQYSFVuc3Vic2NyaWJlVmVyc2lvbgABBSRCdXJuQXNzZXQBsQEsRXhwZWN0QXNzZXQBsQEwRXhwZWN0T3JpZ2luAVkDLEV4cGVjdEVycm9yAVEDUEV4cGVjdFRyYW5zYWN0U3RhdHVzAUkBLFF1ZXJ5UGFsbGV0AAAILG1vZHVsZV9uYW1lJDRyZXNwb25zZV9pbmZvXQMwRXhwZWN0UGFsbGV0AAAUFGluZGV4BBBuYW1lJCxtb2R1bGVfbmFtZSQsY3JhdGVfbWFqb3IEPG1pbl9jcmF0ZV9taW5vcgRQUmVwb3J0VHJhbnNhY3RTdGF0dXMBXQNMQ2xlYXJUcmFuc2FjdFN0YXR1cwABBTxVbml2ZXJzYWxPcmlnaW4BnQE0RXhwb3J0TWVzc2FnZQAADBxuZXR3b3JrlQEsZGVzdGluYXRpb26hAQx4Y21tAyRMb2NrQXNzZXQAAAgUYXNzZXStASB1bmxvY2tlcqUBLFVubG9ja0Fzc2V0AAAIFGFzc2V0rQEYdGFyZ2V0pQE4Tm90ZVVubG9ja2FibGUAAAgUYXNzZXStARRvd25lcqUBNFJlcXVlc3RVbmxvY2sAAAgUYXNzZXStARhsb2NrZXKlASxTZXRGZWVzTW9kZQAABDBqaXRfd2l0aGRyYXcUIFNldFRvcGljASAoQ2xlYXJUb3BpYwABBSxBbGlhc09yaWdpbgGlATxVbnBhaWRFeGVjdXRpb24AAAgwd2VpZ2h0X2xpbWl0bQEwY2hlY2tfb3JpZ2luWQMEaQMAAhgQTnVsbAABBRhBc3NldHMBuQE8RXhlY3V0aW9uUmVzdWx0AVEDHFZlcnNpb24BBCxQYWxsZXRzSW5mbwFFAThEaXNwYXRjaFJlc3VsdAFJAQIQDEFsbAABBRRBbGxPZgAACAhpZKUBDGZ1bmEBKEFsbENvdW50ZWQBBDBBbGxPZkNvdW50ZWQAAAwIaWSlAQxmdW5hARRjb3VudAQCCCBEZWZpbml0ZQG5ARBXaWxkAXUDAsA0V2l0aGRyYXdBc3NldAG5AVRSZXNlcnZlQXNzZXREZXBvc2l0ZWQBuQFYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAG5ATRRdWVyeVJlc3BvbnNlAAAQIHF1ZXJ5X2lkCCByZXNwb25zZXEDKG1heF93ZWlnaHQYHHF1ZXJpZXJZAzRUcmFuc2ZlckFzc2V0AAAIGGFzc2V0c7kBLGJlbmVmaWNpYXJ5pQFQVHJhbnNmZXJSZXNlcnZlQXNzZXQAAAwYYXNzZXRzuQEQZGVzdKUBDHhjbYEDIFRyYW5zYWN0AAAMLG9yaWdpbl9raW5kVQFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdBgQY2FsbCRkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAAADBhzZW5kZXIEQG1heF9tZXNzYWdlX3NpemUEMG1heF9jYXBhY2l0eQRMSHJtcENoYW5uZWxBY2NlcHRlZAAABCRyZWNpcGllbnQESEhybXBDaGFubmVsQ2xvc2luZwAADCRpbml0aWF0b3IEGHNlbmRlcgQkcmVjaXBpZW50BCxDbGVhck9yaWdpbgABBTREZXNjZW5kT3JpZ2luAaEBLFJlcG9ydEVycm9yAV0DMERlcG9zaXRBc3NldAAACBhhc3NldHN5AyxiZW5lZmljaWFyeaUBTERlcG9zaXRSZXNlcnZlQXNzZXQAAAwYYXNzZXRzeQMQZGVzdKUBDHhjbYEDNEV4Y2hhbmdlQXNzZXQAAAwQZ2l2ZXkDEHdhbnS5ARxtYXhpbWFsFFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwAADBhhc3NldHN5AxxyZXNlcnZlpQEMeGNtgQNASW5pdGlhdGVUZWxlcG9ydAAADBhhc3NldHN5AxBkZXN0pQEMeGNtgQM0UmVwb3J0SG9sZGluZwAACDRyZXNwb25zZV9pbmZvXQMYYXNzZXRzeQMwQnV5RXhlY3V0aW9uAAAIEGZlZXO1ATB3ZWlnaHRfbGltaXRtATRSZWZ1bmRTdXJwbHVzAAEFPFNldEVycm9ySGFuZGxlcgGBAyxTZXRBcHBlbmRpeAGBAyhDbGVhckVycm9yAAEFKENsYWltQXNzZXQAAAgYYXNzZXRzuQEYdGlja2V0pQEQVHJhcAEIQFN1YnNjcmliZVZlcnNpb24AAAggcXVlcnlfaWQITG1heF9yZXNwb25zZV93ZWlnaHQYSFVuc3Vic2NyaWJlVmVyc2lvbgABBSRCdXJuQXNzZXQBuQEsRXhwZWN0QXNzZXQBuQEwRXhwZWN0T3JpZ2luAVkDLEV4cGVjdEVycm9yAVEDUEV4cGVjdFRyYW5zYWN0U3RhdHVzAUkBLFF1ZXJ5UGFsbGV0AAAILG1vZHVsZV9uYW1lJDRyZXNwb25zZV9pbmZvXQMwRXhwZWN0UGFsbGV0AAAUFGluZGV4BBBuYW1lJCxtb2R1bGVfbmFtZSQsY3JhdGVfbWFqb3IEPG1pbl9jcmF0ZV9taW5vcgRQUmVwb3J0VHJhbnNhY3RTdGF0dXMBXQNMQ2xlYXJUcmFuc2FjdFN0YXR1cwABBTxVbml2ZXJzYWxPcmlnaW4BnQE0RXhwb3J0TWVzc2FnZQAADBxuZXR3b3JrlQEsZGVzdGluYXRpb26hAQx4Y22BAyRMb2NrQXNzZXQAAAgUYXNzZXS1ASB1bmxvY2tlcqUBLFVubG9ja0Fzc2V0AAAIFGFzc2V0tQEYdGFyZ2V0pQE4Tm90ZVVubG9ja2FibGUAAAgUYXNzZXS1ARRvd25lcqUBNFJlcXVlc3RVbmxvY2sAAAgUYXNzZXS1ARhsb2NrZXKlASxTZXRGZWVzTW9kZQAABDBqaXRfd2l0aGRyYXcUIFNldFRvcGljASAoQ2xlYXJUb3BpYwABBSxBbGlhc09yaWdpbgGlATxVbnBhaWRFeGVjdXRpb24AAAgwd2VpZ2h0X2xpbWl0bQEwY2hlY2tfb3JpZ2luWQMEfQMAAgwIVjMBbQMIVjQBgQMIVjUBjQECECBUZWxlcG9ydAABBTBMb2NhbFJlc2VydmUAAQVIRGVzdGluYXRpb25SZXNlcnZlAAEFNFJlbW90ZVJlc2VydmUBwQECDAhWMwGpAQhWNAGlAQhWNQEdAQJEEHNlbmQAAAgQZGVzdMEBHG1lc3NhZ2WFAzx0ZWxlcG9ydF9hc3NldHMAABAQZGVzdMEBLGJlbmVmaWNpYXJ5wQEYYXNzZXRzvQE4ZmVlX2Fzc2V0X2l0ZW0EXHJlc2VydmVfdHJhbnNmZXJfYXNzZXRzAAAQEGRlc3TBASxiZW5lZmljaWFyecEBGGFzc2V0c70BOGZlZV9hc3NldF9pdGVtBBxleGVjdXRlAAAIHG1lc3NhZ2WFAyhtYXhfd2VpZ2h0GERmb3JjZV94Y21fdmVyc2lvbgAACCBsb2NhdGlvbh0BHHZlcnNpb24EZGZvcmNlX2RlZmF1bHRfeGNtX3ZlcnNpb24AAAREbWF5YmVfeGNtX3ZlcnNpb27xAXhmb3JjZV9zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkAAAQgbG9jYXRpb27BAYBmb3JjZV91bnN1YnNjcmliZV92ZXJzaW9uX25vdGlmeQAABCBsb2NhdGlvbsEBfGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMAABQQZGVzdMEBLGJlbmVmaWNpYXJ5wQEYYXNzZXRzvQE4ZmVlX2Fzc2V0X2l0ZW0EMHdlaWdodF9saW1pdG0BXGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzAAAUEGRlc3TBASxiZW5lZmljaWFyecEBGGFzc2V0c70BOGZlZV9hc3NldF9pdGVtBDB3ZWlnaHRfbGltaXRtAUBmb3JjZV9zdXNwZW5zaW9uAAAEJHN1c3BlbmRlZBQ8dHJhbnNmZXJfYXNzZXRzAAAUEGRlc3TBASxiZW5lZmljaWFyecEBGGFzc2V0c70BOGZlZV9hc3NldF9pdGVtBDB3ZWlnaHRfbGltaXRtATBjbGFpbV9hc3NldHMAAAgYYXNzZXRzvQEsYmVuZWZpY2lhcnnBAYx0cmFuc2Zlcl9hc3NldHNfdXNpbmdfdHlwZV9hbmRfdGhlbgAAHBBkZXN0wQEYYXNzZXRzvQFQYXNzZXRzX3RyYW5zZmVyX3R5cGWJAzhyZW1vdGVfZmVlc19pZI0DSGZlZXNfdHJhbnNmZXJfdHlwZYkDSGN1c3RvbV94Y21fb25fZGVzdIUDMHdlaWdodF9saW1pdG0BUGFkZF9hdXRob3JpemVkX2FsaWFzAAAIHGFsaWFzZXLBARxleHBpcmVzxQFccmVtb3ZlX2F1dGhvcml6ZWRfYWxpYXMAAAQcYWxpYXNlcsEBdHJlbW92ZV9hbGxfYXV0aG9yaXplZF9hbGlhc2VzAAEFAggkcmVhcF9wYWdlAAAIOG1lc3NhZ2Vfb3JpZ2lu0QEocGFnZV9pbmRleARIZXhlY3V0ZV9vdmVyd2VpZ2h0AAAQOG1lc3NhZ2Vfb3JpZ2lu0QEQcGFnZQQUaW5kZXgEMHdlaWdodF9saW1pdBgCCDBjcmVhdGVfY2xhaW0AAAQQaGFzaCAwcmV2b2tlX2NsYWltAAAEEGhhc2ggBAgBEAI0MGV0aF90cmFuc2FjdAAABBxwYXlsb2FkJBBjYWxsAAAUEGRlc3TsFHZhbHVlCDB3ZWlnaHRfbGltaXQYVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgQZGF0YSQsaW5zdGFudGlhdGUAABgUdmFsdWUIMHdlaWdodF9saW1pdBhUc3RvcmFnZV9kZXBvc2l0X2xpbWl0CCRjb2RlX2hhc2ggEGRhdGEkEHNhbHSQVGluc3RhbnRpYXRlX3dpdGhfY29kZQAAGBR2YWx1ZQgwd2VpZ2h0X2xpbWl0GFRzdG9yYWdlX2RlcG9zaXRfbGltaXQIEGNvZGUkEGRhdGEkEHNhbHSQZGV0aF9pbnN0YW50aWF0ZV93aXRoX2NvZGUAACAUdmFsdWWdAzB3ZWlnaHRfbGltaXQYNGV0aF9nYXNfbGltaXSdAxBjb2RlJBBkYXRhJEx0cmFuc2FjdGlvbl9lbmNvZGVkJExlZmZlY3RpdmVfZ2FzX3ByaWNlnQMsZW5jb2RlZF9sZW4EIGV0aF9jYWxsAAAgEGRlc3TsFHZhbHVlnQMwd2VpZ2h0X2xpbWl0GDRldGhfZ2FzX2xpbWl0nQMQZGF0YSRMdHJhbnNhY3Rpb25fZW5jb2RlZCRMZWZmZWN0aXZlX2dhc19wcmljZZ0DLGVuY29kZWRfbGVuBEhldGhfc3Vic3RyYXRlX2NhbGwAAAgQY2FsbKUDTHRyYW5zYWN0aW9uX2VuY29kZWQkLHVwbG9hZF9jb2RlAAAIEGNvZGUkVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgscmVtb3ZlX2NvZGUAAAQkY29kZV9oYXNoICBzZXRfY29kZQAACBBkZXN07CRjb2RlX2hhc2ggLG1hcF9hY2NvdW50AAEFNHVubWFwX2FjY291bnQAAQVwZGlzcGF0Y2hfYXNfZmFsbGJhY2tfYWNjb3VudAAABBBjYWxspQMCOBhTeXN0ZW0BKQM8UGFyYWNoYWluU3lzdGVtAS0DJFRpbWVzdGFtcAExAzRQYXJhY2hhaW5JbmZvAbggQmFsYW5jZXMBNQMQU3VkbwE5A0RDb2xsYXRvclNlbGVjdGlvbgE9AxxTZXNzaW9uAUEDJFhjbXBRdWV1ZQFFAyxQb2xrYWRvdFhjbQGRAyhDdW11bHVzWGNtAbgwTWVzc2FnZVF1ZXVlAZUDOFRlbXBsYXRlUGFsbGV0AZkDGFJldml2ZQGhAwAIDHdobwAcZGVwb3NpdAgEqQMAAwgAIASxAwADCCgkAwgIBAQEAAIICE9rAAEFJFN1c3BlbmRlZAABBQAUJHJlY2lwaWVudAQUc3RhdGXFAzRzaWduYWxzX2V4aXN0FCxmaXJzdF9pbmRleAQobGFzdF9pbmRleAQEyQMAAwgEBAAMRHN1c3BlbmRfdGhyZXNob2xkBDhkcm9wX3RocmVzaG9sZARAcmVzdW1lX3RocmVzaG9sZAQGwQEFAQgG3QMCDAhWMwFVAwhWNAFxAwhWNQFNAQIMHFBlbmRpbmcAABAkcmVzcG9uZGVywQFMbWF5YmVfbWF0Y2hfcXVlcmllctkDMG1heWJlX25vdGlmeeEDHHRpbWVvdXQEPFZlcnNpb25Ob3RpZmllcgAACBhvcmlnaW7BASRpc19hY3RpdmUUFFJlYWR5AAAIIHJlc3BvbnNl5QMIYXQEAwgEwQEDDAgYBAMIwQEEBPUDAAIQXE1pZ3JhdGVTdXBwb3J0ZWRWZXJzaW9uAAEFXE1pZ3JhdGVWZXJzaW9uTm90aWZpZXJzAAEFUE5vdGlmeUN1cnJlbnRUYXJnZXRzAfkBaE1pZ3JhdGVBbmROb3RpZnlPbGRUYXJnZXRzAAEFAwwEAI0DAwi4CAQFBAAAEBhhbW91bnQIFG93bmVywQEYbG9ja2VywQEkY29uc3VtZXJzCQQDCAjBAQQRBAAACCBsb2NhdGlvbsEBGGV4cGlyecUBBBkEAAAEIGFsaWFzZXJzHQQACBBwcmV20QEQbmV4dNEBBiUEABgUYmVnaW4EDGVuZAQUY291bnQEQHJlYWR5X25laWdoYm91cnMpBDRtZXNzYWdlX2NvdW50CBBzaXplCAMI0QEEABgkcmVtYWluaW5nBDhyZW1haW5pbmdfc2l6ZQQsZmlyc3RfaW5kZXgEFGZpcnN0BBBsYXN0BBBoZWFwJAAIFG93bmVyADBibG9ja19udW1iZXIEAggMUHZtAAEFDEV2bQABBQAYFG93bmVyABxkZXBvc2l0CCByZWZjb3VudAggY29kZV9sZW4EJGNvZGVfdHlwZT0ERGJlaGF2aW91cl92ZXJzaW9uBAAgHHRyaWVfaWQkJGNvZGVfaGFzaCA0c3RvcmFnZV9ieXRlcwQ0c3RvcmFnZV9pdGVtcwRQc3RvcmFnZV9ieXRlX2RlcG9zaXQIUHN0b3JhZ2VfaXRlbV9kZXBvc2l0CFBzdG9yYWdlX2Jhc2VfZGVwb3NpdAhIaW1tdXRhYmxlX2RhdGFfbGVuBAIIIENvbnRyYWN0AUUEDEVPQQABBQAIMGFjY291bnRfdHlwZUkEEGR1c3QEAAg4aW5zZXJ0X2NvdW50ZXIEOGRlbGV0ZV9jb3VudGVyBAUBAQQGnQMACBxhZGRyZXNz7DBzdG9yYWdlX2tleXMJAgRdBAAAGCBjaGFpbl9pZJ0DHGFkZHJlc3PsFG5vbmNlnQMgeV9wYXJpdHmdAwRynQMEc50DBGUEAAAwLGFjY2Vzc19saXN0YQRIYXV0aG9yaXphdGlvbl9saXN0aQQgY2hhaW5faWSdAwxnYXOdAyRnYXNfcHJpY2WdAxRpbnB1dCQ8bWF4X2ZlZV9wZXJfZ2FznQNgbWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FznQMUbm9uY2WdAwh0b+wYciN0eXBlBBR2YWx1ZZ0DABRkdHJhbnNhY3Rpb25fNzcwMl91bnNpZ25lZG0EBHKdAwRznQMEdlkEIHlfcGFyaXR5nQMAMCxhY2Nlc3NfbGlzdGEEVGJsb2JfdmVyc2lvbmVkX2hhc2hlcwkCIGNoYWluX2lknQMMZ2FznQMUaW5wdXQkUG1heF9mZWVfcGVyX2Jsb2JfZ2FznQM8bWF4X2ZlZV9wZXJfZ2FznQNgbWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FznQMUbm9uY2WdAwh0b+wYciN0eXBlBBR2YWx1ZZ0DABBkdHJhbnNhY3Rpb25fNDg0NF91bnNpZ25lZHUEBHKdAwRznQMgeV9wYXJpdHmdAwbsACwsYWNjZXNzX2xpc3RhBCBjaGFpbl9pZJ0DDGdhc50DJGdhc19wcmljZZ0DFGlucHV0JDxtYXhfZmVlX3Blcl9nYXOdA2BtYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXOdAxRub25jZZ0DCHRvfQQYciN0eXBlBBR2YWx1ZZ0DABRkdHJhbnNhY3Rpb25fMTU1OV91bnNpZ25lZIEEBHKdAwRznQMEdlkEIHlfcGFyaXR5nQMAJCxhY2Nlc3NfbGlzdGEEIGNoYWluX2lknQMMZ2FznQMkZ2FzX3ByaWNlnQMUaW5wdXQkFG5vbmNlnQMIdG99BBhyI3R5cGUEFHZhbHVlnQMAFGR0cmFuc2FjdGlvbl8yOTMwX3Vuc2lnbmVkiQQEcp0DBHOdAwR2WQQgeV9wYXJpdHmdAwAgIGNoYWluX2lkWQQMZ2FznQMkZ2FzX3ByaWNlnQMUaW5wdXQkFG5vbmNlnQMIdG99BBhyI3R5cGUEFHZhbHVlnQMAEGx0cmFuc2FjdGlvbl9sZWdhY3lfdW5zaWduZWSRBARynQMEc50DBHadAwIUVFRyYW5zYWN0aW9uNzcwMlNpZ25lZAFxBFRUcmFuc2FjdGlvbjQ4NDRTaWduZWQBeQRUVHJhbnNhY3Rpb24xNTU5U2lnbmVkAYUEVFRyYW5zYWN0aW9uMjkzMFNpZ25lZAGNBFxUcmFuc2FjdGlvbkxlZ2FjeVNpZ25lZAGVBAAYKGJsb2NrX2hhc2ggMGJsb2NrX251bWJlcp0DEGZyb23sEGhhc2ggRHRyYW5zYWN0aW9uX2luZGV4nQNIdHJhbnNhY3Rpb25fc2lnbmVkmQQEnQQAAggYSGFzaGVzAQkCQFRyYW5zYWN0aW9uSW5mb3MBoQQAEBxhZGRyZXNz7BhhbW91bnSdAxRpbmRleJ0DPHZhbGlkYXRvcl9pbmRleJ0DBKkEAABsQGJhc2VfZmVlX3Blcl9nYXOdAzRibG9iX2dhc191c2VknQMoZGlmZmljdWx0eZ0DPGV4Y2Vzc19ibG9iX2dhc50DKGV4dHJhX2RhdGEkJGdhc19saW1pdJ0DIGdhc191c2VknQMQaGFzaCAobG9nc19ibG9vbVUEFG1pbmVy7CBtaXhfaGFzaCAUbm9uY2UhARhudW1iZXKdA2BwYXJlbnRfYmVhY29uX2Jsb2NrX3Jvb3SQLHBhcmVudF9oYXNoIDRyZWNlaXB0c19yb290IDRyZXF1ZXN0c19oYXNokDBzaGFfM191bmNsZXMgEHNpemWdAyhzdGF0ZV9yb290ICR0aW1lc3RhbXCdA0B0b3RhbF9kaWZmaWN1bHR5WQQwdHJhbnNhY3Rpb25zpQREdHJhbnNhY3Rpb25zX3Jvb3QgGHVuY2xlcwkCLHdpdGhkcmF3YWxzrQRAd2l0aGRyYXdhbHNfcm9vdCAACCBnYXNfdXNlZJ0DTGVmZmVjdGl2ZV9nYXNfcHJpY2WdAwS1BAAAKAxrZXkkKHZhbHVlX3R5cGUENGJ1aWxkZXJfdmFsdWUkFHN0YWNrWQIsc3RhdGVfbWFza3PBAyh0cmVlX21hc2tzwQMoaGFzaF9tYXNrc8EDSHN0b3JlZF9pbl9kYXRhYmFzZRQccmxwX2J1ZiQUaW5kZXgIACBgdHJhbnNhY3Rpb25fcm9vdF9idWlsZGVyvQRUcmVjZWlwdHNfcm9vdF9idWlsZGVyvQRAYmFzZV9mZWVfcGVyX2dhc50DPGJsb2NrX2dhc19saW1pdJ0DIGdhc191c2VknQMobG9nc19ibG9vbVUEJHR4X2hhc2hlcwkCIGdhc19pbmZvuQQGUQIADHRhbGxvd191bmxpbWl0ZWRfY29udHJhY3Rfc2l6ZRQ8YnlwYXNzX2VpcF8zNjA3FCBwdm1fbG9ncxQACBhoZWFkZXK9AihleHRyaW5zaWNzWQICCDRBbGxFeHRyaW5zaWNzAAEFNE9ubHlJbmhlcmVudHMAAQUACBhwcmVmaXglARhzdWZmaXglAQIMOE5vdEltcGxlbWVudGVkAAEFIE5vdEZvdW5kAdUEFENvZGVjAAEFByTZBAI0EENhbGwAAQUcUGF5bWVudAABBRhGdXR1cmUAAQUUU3RhbGUAAQUgQmFkUHJvb2YAAQVEQW5jaWVudEJpcnRoQmxvY2sAAQVERXhoYXVzdHNSZXNvdXJjZXMAAQUYQ3VzdG9tAQQwQmFkTWFuZGF0b3J5AAEFTE1hbmRhdG9yeVZhbGlkYXRpb24AAQUkQmFkU2lnbmVyAAEFVEluZGV0ZXJtaW5hdGVJbXBsaWNpdAABBTRVbmtub3duT3JpZ2luAAEFAgwwQ2Fubm90TG9va3VwAAEFTE5vVW5zaWduZWRWYWxpZGF0b3IAAQUYQ3VzdG9tAQQCCBxJbnZhbGlkAeEEHFVua25vd24B5QQHvOkEAwghASQE8QQAAAwQb2theRQsZmF0YWxfZXJyb3IUGGVycm9yc/UEAgwcSW5CbG9jawABBRRMb2NhbAABBSBFeHRlcm5hbAABBQAUIHByaW9yaXR5CCByZXF1aXJlc1kCIHByb3ZpZGVzWQIkbG9uZ2V2aXR5CCRwcm9wYWdhdGUUBwEF6QQDCCQoBAkFAAYNBQAMGHdlaWdodBgUY2xhc3M4LHBhcnRpYWxfZmVlCAAMIGJhc2VfZmVlCBxsZW5fZmVlCExhZGp1c3RlZF93ZWlnaHRfZmVlCAYZBQAINGluY2x1c2lvbl9mZWUdBQx0aXAIABg8dXB3YXJkX21lc3NhZ2VzWQJMaG9yaXpvbnRhbF9tZXNzYWdlc7kCTG5ld192YWxpZGF0aW9uX2NvZGX5AWxwcm9jZXNzZWRfZG93bndhcmRfbWVzc2FnZXMEOGhybXBfd2F0ZXJtYXJrBCRoZWFkX2RhdGEkAgwUQ2hhaW4AAQUcTmV0d29yawABBRRMb2NhbAABBQAIJG1heF9jb3VudAQgbWF4X3NpemUEAgwgQmFkUHJvb2YAAQUcTm9Qcm9vZgABBTRJbnRlcm5hbEVycm9yAAEFBy0FMQUHuCUCBiUCBCUCAAIIGFJlZnVuZAEIGENoYXJnZQEIAAgUZmxhZ3MEEGRhdGEkB0kFiAAYPHdlaWdodF9jb25zdW1lZBg8d2VpZ2h0X3JlcXVpcmVkGDxzdG9yYWdlX2RlcG9zaXRFBUxtYXhfc3RvcmFnZV9kZXBvc2l0RQUwZ2FzX2NvbnN1bWVkCBhyZXN1bHRNBQIIGFVwbG9hZAEkIEV4aXN0aW5nASAACBhyZXN1bHRJBRBhZGRy7AdZBYgAGDx3ZWlnaHRfY29uc3VtZWQYPHdlaWdodF9yZXF1aXJlZBg8c3RvcmFnZV9kZXBvc2l0RQVMbWF4X3N0b3JhZ2VfZGVwb3NpdEUFMGdhc19jb25zdW1lZAgYcmVzdWx0XQUGYQQACBRpbnB1dPkBEGRhdGH5AQBALGFjY2Vzc19saXN0ZQVIYXV0aG9yaXphdGlvbl9saXN0aQRUYmxvYl92ZXJzaW9uZWRfaGFzaGVzCQIUYmxvYnNZAiBjaGFpbl9pZFkEEGZyb219BAxnYXNZBCRnYXNfcHJpY2VZBBRpbnB1dGkFUG1heF9mZWVfcGVyX2Jsb2JfZ2FzWQQ8bWF4X2ZlZV9wZXJfZ2FzWQRgbWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FzWQQUbm9uY2VZBAh0b30EGHIjdHlwZfEBFHZhbHVlWQQAFDx3ZWlnaHRfcmVxdWlyZWQYPHN0b3JhZ2VfZGVwb3NpdAhMbWF4X3N0b3JhZ2VfZGVwb3NpdAgcZXRoX2dhc50DEGRhdGEkAggQRGF0YQEkHE1lc3NhZ2UBJQIHcQV1BQAISHRpbWVzdGFtcF9vdmVycmlkZcUBIHJlc2VydmVkFAAIJGNvZGVfaGFzaCAcZGVwb3NpdAgHgQWIAgwsRG9lc250RXhpc3QAAQVES2V5RGVjb2RpbmdGYWlsZWQAAQVIU3RvcmFnZVdyaXRlRmFpbGVkAYgH+QGJBQAIJHdpdGhfbG9ncxQ0b25seV90b3BfY2FsbBQGkQUADCRkaWZmX21vZGUUPGRpc2FibGVfc3RvcmFnZRQwZGlzYWJsZV9jb2RlFAaZBQIIKENhbGxUcmFjZXIBlQU4UHJlc3RhdGVUcmFjZXIBnQUEtQUAABAcYWRkcmVzc+wYdG9waWNzCQIQZGF0YSQgcG9zaXRpb24EBKkFAAIYEENhbGwAAQUoU3RhdGljQ2FsbAABBTBEZWxlZ2F0ZUNhbGwAAQUYQ3JlYXRlAAEFHENyZWF0ZTIAAQUwU2VsZmRlc3RydWN0AAEFADQQZnJvbewMZ2FznQMgZ2FzX3VzZWSdAwh0b+wUaW5wdXQkGG91dHB1dCQUZXJyb3I9BTRyZXZlcnRfcmVhc29uPQUUY2FsbHOlBRBsb2dzrQUUdmFsdWVZBCRjYWxsX3R5cGWxBUBjaGlsZF9jYWxsX2NvdW50BAMIJPkBBLkFAAAQHGJhbGFuY2VZBBRub25jZfEBEGNvZGX5ARxzdG9yYWdlvQUDCOzBBQTFBQACCCBQcmVzdGF0ZQHJBSBEaWZmTW9kZQAACAxwcmXJBRBwb3N0yQUCCBBDYWxsAbUFIFByZXN0YXRlAc0FAwgE0QUE1QUABtEFB9EFdQUCCBRWYWx1ZQABBRBEdXN0AAEFB70D5QUCBDBUb29NYW55Q2FsbHMAAQUCBBxPbmdvaW5nAAEFAkgoQmFkQ29udGV4dAABBSxCYWREYXRhU2l6ZQABBUxUb29NYW55VHJhbnNhY3Rpb25zAAEFNE5vdENvbmZpZ3VyZWQAAQU8UmVuZXdlZE5vdEZvdW5kAAEFPFVuZXhwZWN0ZWRQcm9vZgABBTBJbnZhbGlkUHJvb2YAAQUwTWlzc2luZ1Byb29mAAEFQE1pc3NpbmdTdGF0ZURhdGEAAQUsRG91YmxlQ2hlY2sAAQU8UHJvb2ZOb3RDaGVja2VkAAEFVEF1dGhvcml6YXRpb25Ob3RGb3VuZAABBVxBdXRob3JpemF0aW9uTm90RXhwaXJlZAABBUhJbnZhbGlkQ29udGVudEhhc2gAAQVIQXV0aG9yaXplck5vdEZvdW5kAAEFcEF1dGhvcml6ZXJCdWRnZXROb3RFeGhhdXN0ZWQAAQVESW52YWxpZFZhbGlkVW50aWwAAQVwSW5zdWZmaWNpZW50QXV0aG9yaXplckJ1ZGdldAABBQIgKEJhZENvbnRleHQAAQU8UmVuZXdlZE5vdEZvdW5kAAEFTFRvb01hbnlUcmFuc2FjdGlvbnMAAQVUUmVuZXdhbEFscmVhZHlFbmFibGVkAAEFVEF1dG9SZW5ld2FsTm90RW5hYmxlZAABBUxOb3RBdXRvUmVuZXdhbE93bmVyAAEFfENhbm5vdERpc2FibGVQcmVwYWlkQXV0b1JlbmV3YWwAAQUsQmFkRGF0YVNpemUAAQUCXBhTeXN0ZW0BRDxQYXJhY2hhaW5TeXN0ZW0BSCRUaW1lc3RhbXAAAQU0UGFyYWNoYWluSW5mbwABBTRXZWlnaHRSZWNsYWltAAEFHFV0aWxpdHkB7QVQTXVsdGlCbG9ja01pZ3JhdGlvbnMB8QUgQmFsYW5jZXMBTEhUcmFuc2FjdGlvblBheW1lbnQAAQVIU2tpcEZlZWxlc3NQYXltZW50AAEFSFRyYW5zYWN0aW9uU3RvcmFnZQH1BTBIb3BQcm9tb3Rpb24AAQUsRGF0YVJlbmV3YWwB+QUoQXV0aG9yc2hpcAABBURDb2xsYXRvclNlbGVjdGlvbgFUHFNlc3Npb24BWBBBdXJhAAEFHEF1cmFFeHQAAQUkWGNtcFF1ZXVlAVwsUG9sa2Fkb3RYY20BZChDdW11bHVzWGNtAAEFME1lc3NhZ2VRdWV1ZQFoEFN1ZG8BUAI8FE90aGVyAAEFMENhbm5vdExvb2t1cAABBSRCYWRPcmlnaW4AAQUYTW9kdWxlAf0FRENvbnN1bWVyUmVtYWluaW5nAAEFLE5vUHJvdmlkZXJzAAEFQFRvb01hbnlDb25zdW1lcnMAAQUUVG9rZW4BeChBcml0aG1ldGljAXw0VHJhbnNhY3Rpb25hbAGAJEV4aGF1c3RlZAABBShDb3JydXB0aW9uAAEFLFVuYXZhaWxhYmxlAAEFOFJvb3ROb3RBbGxvd2VkAAEFEFRyaWUBhAIgQEV4dHJpbnNpY1N1Y2Nlc3MAAAQ0ZGlzcGF0Y2hfaW5mb0A8RXh0cmluc2ljRmFpbGVkAAAIOGRpc3BhdGNoX2Vycm9yAQY0ZGlzcGF0Y2hfaW5mb0AsQ29kZVVwZGF0ZWQAAAQQaGFzaCAoTmV3QWNjb3VudAAABBxhY2NvdW50ADRLaWxsZWRBY2NvdW50AAAEHGFjY291bnQAIFJlbWFya2VkAAAIGHNlbmRlcgAQaGFzaCBEVXBncmFkZUF1dGhvcml6ZWQAAAgkY29kZV9oYXNoIDRjaGVja192ZXJzaW9uFIBSZWplY3RlZEludmFsaWRBdXRob3JpemVkVXBncmFkZQAACCRjb2RlX2hhc2ggFGVycm9yAQYHuAEGAiBAQmF0Y2hJbnRlcnJ1cHRlZAAACBRpbmRleAQUZXJyb3IBBjhCYXRjaENvbXBsZXRlZAABBWBCYXRjaENvbXBsZXRlZFdpdGhFcnJvcnMAAQU0SXRlbUNvbXBsZXRlZAABBShJdGVtRmFpbGVkAAAEFGVycm9yAQYwRGlzcGF0Y2hlZEFzAAAEGHJlc3VsdAkGRElmRWxzZU1haW5TdWNjZXNzAAEFUElmRWxzZUZhbGxiYWNrQ2FsbGVkAAAEKG1haW5fZXJyb3IBBgIgOFVwZ3JhZGVTdGFydGVkAAAEKG1pZ3JhdGlvbnMEQFVwZ3JhZGVDb21wbGV0ZWQAAQU0VXBncmFkZUZhaWxlZAABBUBNaWdyYXRpb25Ta2lwcGVkAAAEFGluZGV4BERNaWdyYXRpb25BZHZhbmNlZAAACBRpbmRleAQQdG9vawRITWlncmF0aW9uQ29tcGxldGVkAAAIFGluZGV4BBB0b29rBDxNaWdyYXRpb25GYWlsZWQAAAgUaW5kZXgEEHRvb2sEPEhpc3RvcmljQ2xlYXJlZAAABCxuZXh0X2N1cnNvcvkBAgQ4U3RvcmFnZUZlZUhvbGQAAQUCDEhUcmFuc2FjdGlvblN0b3JhZ2UBFQYcU2Vzc2lvbgGcLFBvbGthZG90WGNtAaACeBxFbmRvd2VkAAAIHGFjY291bnQAMGZyZWVfYmFsYW5jZQggRHVzdExvc3QAAAgcYWNjb3VudAAYYW1vdW50CCBUcmFuc2ZlcgAADBBmcm9tAAh0bwAYYW1vdW50CChCYWxhbmNlU2V0AAAIDHdobwAQZnJlZQggUmVzZXJ2ZWQAAAgMd2hvABhhbW91bnQIKFVucmVzZXJ2ZWQAAAgMd2hvABhhbW91bnQISFJlc2VydmVSZXBhdHJpYXRlZAAAEBBmcm9tAAh0bwAYYW1vdW50CEhkZXN0aW5hdGlvbl9zdGF0dXOYHERlcG9zaXQAAAgMd2hvABhhbW91bnQIIFdpdGhkcmF3AAAIDHdobwAYYW1vdW50CBxTbGFzaGVkAAAIDHdobwAYYW1vdW50CBhNaW50ZWQAAAgMd2hvABhhbW91bnQIME1pbnRlZENyZWRpdAAABBhhbW91bnQIGEJ1cm5lZAAACAx3aG8AGGFtb3VudAgoQnVybmVkRGVidAAABBhhbW91bnQIJFN1c3BlbmRlZAAACAx3aG8AGGFtb3VudAggUmVzdG9yZWQAAAgMd2hvABhhbW91bnQIIFVwZ3JhZGVkAAAEDHdobwAYSXNzdWVkAAAEGGFtb3VudAgkUmVzY2luZGVkAAAEGGFtb3VudAgYTG9ja2VkAAAIDHdobwAYYW1vdW50CCBVbmxvY2tlZAAACAx3aG8AGGFtb3VudAgYRnJvemVuAAAIDHdobwAYYW1vdW50CBhUaGF3ZWQAAAgMd2hvABhhbW91bnQITFRvdGFsSXNzdWFuY2VGb3JjZWQAAAgMb2xkCAxuZXcIEEhlbGQAAAwYcmVhc29uGQYMd2hvABhhbW91bnQIKEJ1cm5lZEhlbGQAAAwYcmVhc29uGQYMd2hvABhhbW91bnQIOFRyYW5zZmVyT25Ib2xkAAAQGHJlYXNvbhkGGHNvdXJjZQAQZGVzdAAYYW1vdW50CDxUcmFuc2ZlckFuZEhvbGQAABAYcmVhc29uGQYYc291cmNlABBkZXN0ACx0cmFuc2ZlcnJlZAggUmVsZWFzZWQAAAwYcmVhc29uGQYMd2hvABhhbW91bnQIKFVuZXhwZWN0ZWQBrAIQEFJvb3QAAQUYU2lnbmVkAQAQTm9uZQABBShBdXRob3JpemVkAAEFAggcQWNjb3VudAEAIFByZWltYWdlASACBChBdXRob3JpemVkAAAIDHdobwAUc2NvcGUlBgIIDFhjbQEdASBSZXNwb25zZQEdAQIIFFJlbGF5AAEFQFNpYmxpbmdQYXJhY2hhaW4BBAIQGHN5c3RlbQEhBkhUcmFuc2FjdGlvblN0b3JhZ2UBKQYsUG9sa2Fkb3RYY20BLQYoQ3VtdWx1c1hjbQExBgIEKEZlZVNraXBwZWQAAAQYb3JpZ2luNQYCLBhTdG9yZWQAAAwUaW5kZXgEMGNvbnRlbnRfaGFzaCAMY2lk+QEwUHJvb2ZDaGVja2VkAAEFREFjY291bnRBdXRob3JpemVkAAAMDHdobwAwdHJhbnNhY3Rpb25zBBRieXRlcwh0QWNjb3VudEF1dGhvcml6YXRpb25SZWZyZXNoZWQAAAQMd2hvAEhQcmVpbWFnZUF1dGhvcml6ZWQAAAgwY29udGVudF9oYXNoICBtYXhfc2l6ZQh4UHJlaW1hZ2VBdXRob3JpemF0aW9uUmVmcmVzaGVkAAAEMGNvbnRlbnRfaGFzaCCIRXhwaXJlZEFjY291bnRBdXRob3JpemF0aW9uUmVtb3ZlZAAABAx3aG8AjEV4cGlyZWRQcmVpbWFnZUF1dGhvcml6YXRpb25SZW1vdmVkAAAEMGNvbnRlbnRfaGFzaCA8QXV0aG9yaXplckFkZGVkAAAEDHdobwBEQXV0aG9yaXplclJlbW92ZWQAAAQMd2hvAGhFeGhhdXN0ZWRBdXRob3JpemVyUmVtb3ZlZAAABAx3aG8AAhwcUmVuZXdlZAAACBRpbmRleAQwY29udGVudF9oYXNoIDhSZW5ld2FsRW5hYmxlZAAADDBjb250ZW50X2hhc2ggDHdobwAkcmVjdXJyaW5nFExBdXRvUmVuZXdhbERpc2FibGVkAAAIMGNvbnRlbnRfaGFzaCAMd2hvACxEYXRhUmVuZXdlZAAADBRpbmRleAQwY29udGVudF9oYXNoIBxhY2NvdW50ADRSZW5ld2FsRmFpbGVkAAAIMGNvbnRlbnRfaGFzaCAcYWNjb3VudABsUGVybWFuZW50U3RvcmFnZVVzZWRVcGRhdGVkAAAEEHVzZWQIXFBlcm1hbmVudFN0b3JhZ2VOZWFyQ2FwAAAIEHVzZWQIDGNhcAgCEBRTdWRpZAAABCxzdWRvX3Jlc3VsdAkGKEtleUNoYW5nZWQAAAgMb2xkwAxuZXcAKEtleVJlbW92ZWQAAQUoU3Vkb0FzRG9uZQAABCxzdWRvX3Jlc3VsdAkGAkAYU3lzdGVtAQUGPFBhcmFjaGFpblN5c3RlbQGUHFV0aWxpdHkBDQZQTXVsdGlCbG9ja01pZ3JhdGlvbnMBEQYgQmFsYW5jZXMBHQZIVHJhbnNhY3Rpb25QYXltZW50AbRIU2tpcEZlZWxlc3NQYXltZW50ATkGSFRyYW5zYWN0aW9uU3RvcmFnZQE9BixEYXRhUmVuZXdhbAFBBkRDb2xsYXRvclNlbGVjdGlvbgHMHFNlc3Npb24B0CRYY21wUXVldWUB1CxQb2xrYWRvdFhjbQHJAShDdW11bHVzWGNtAc0BME1lc3NhZ2VRdWV1ZQHZARBTdWRvAUUGAAwUcGhhc2U0FGV2ZW50SQYYdG9waWNzCQIETQYAAAgMbWF4PQI8bWF4X2hlYWRlcl9zaXpl8QECDCBGdWxsQ29yZQAABBxjb250ZXh0BERQb3RlbnRpYWxGdWxsQ29yZQAADBxjb250ZXh0BFxmaXJzdF90cmFuc2FjdGlvbl9pbmRlePEBNHRhcmdldF93ZWlnaHQYOEZyYWN0aW9uT2ZDb3JlAAAIHGNvbnRleHQEXGZpcnN0X3RyYW5zYWN0aW9uX2luZGV48QEAGGhyZWxheV9zdG9yYWdlX3Jvb3Rfb3JfaGFzaCA0Y29yZV9zZWxlY3RvcgQwYnVuZGxlX2luZGV4BDR1bXBfbXNnX2NvdW50BExocm1wX291dGJvdW5kX2NvdW50BGBocm1wX291dGJvdW5kX3JlY2lwaWVudHPBAwIgFGJhdGNoAAAEFGNhbGxztQY0YXNfZGVyaXZhdGl2ZQAACBRpbmRleAQQY2FsbLEGJGJhdGNoX2FsbAAABBRjYWxsc7UGLGRpc3BhdGNoX2FzAAAIJGFzX29yaWdpbjUGEGNhbGyxBixmb3JjZV9iYXRjaAAABBRjYWxsc7UGLHdpdGhfd2VpZ2h0AAAIEGNhbGyxBhh3ZWlnaHQYHGlmX2Vsc2UAAAgQbWFpbrEGIGZhbGxiYWNrsQZQZGlzcGF0Y2hfYXNfZmFsbGlibGUAAAgkYXNfb3JpZ2luNQYQY2FsbLEGAAwUaW5kZXgEMGlubmVyX2N1cnNvcvkBKHN0YXJ0ZWRfYXQEAggYQWN0aXZlAWUGFFN0dWNrAAEFBmkGAgggU3BlY2lmaWMBWQIgV2lsZGNhcmQAAAgUbGltaXTxATxwcmV2aW91c19jdXJzb3L5AQIQQGZvcmNlX3NldF9jdXJzb3IAAAQYY3Vyc29ybQZcZm9yY2Vfc2V0X2FjdGl2ZV9jdXJzb3IAAAwUaW5kZXgEMGlubmVyX2N1cnNvcvkBKHN0YXJ0ZWRfYXTxAUhmb3JjZV9vbmJvYXJkX21ibXMAAQU4Y2xlYXJfaGlzdG9yaWMAAAQgc2VsZWN0b3JxBgIMKEJsYWtlMmIyNTYAAQUgU2hhMl8yNTYAAQUkS2VjY2FrMjU2AAEFAAgUY29kZWMIHGhhc2hpbmd5BgAIFGNodW5rJBRwcm9vZlkCBoEGAAgwdHJhbnNhY3Rpb25zBBRieXRlcwgGiQYADBRxdW90YY0GLHZhbGlkX3VudGls8QEcZmVlbGVzcxQCMBRzdG9yZQAABBBkYXRhJFRzdG9yZV93aXRoX2NpZF9jb25maWcAAAgMY2lkfQYQZGF0YSREYXV0aG9yaXplX2FjY291bnQAAAwMd2hvADB0cmFuc2FjdGlvbnMEFGJ5dGVzCEhhdXRob3JpemVfcHJlaW1hZ2UAAAgwY29udGVudF9oYXNoICBtYXhfc2l6ZQiQcmVtb3ZlX2V4cGlyZWRfYWNjb3VudF9hdXRob3JpemF0aW9uAAAEDHdobwCUcmVtb3ZlX2V4cGlyZWRfcHJlaW1hZ2VfYXV0aG9yaXphdGlvbgAABDBjb250ZW50X2hhc2ggdHJlZnJlc2hfYWNjb3VudF9hdXRob3JpemF0aW9uAAAEDHdobwB4cmVmcmVzaF9wcmVpbWFnZV9hdXRob3JpemF0aW9uAAAEMGNvbnRlbnRfaGFzaCBUYXBwbHlfYmxvY2tfaW5oZXJlbnRzAAAEFHByb29mhQY4YWRkX2F1dGhvcml6ZXIAAAgMd2hvABhidWRnZXSRBkRyZW1vdmVfYXV0aG9yaXplcgAABAx3aG8AbHJlbW92ZV9leGhhdXN0ZWRfYXV0aG9yaXplcgAABAx3aG8AAhAcRWQyNTUxOQEgHFNyMjU1MTkBIBRFY2RzYQHlAQxFdGgB5QECEBxFZDI1NTE5Ad0BHFNyMjU1MTkB3QEURWNkc2EB4QEMRXRoAeEBAggccHJvbW90ZQAAEBhzaWduZXKZBiRzaWduYXR1cmWdBkBzdWJtaXRfdGltZXN0YW1wCBBkYXRhJChwcm9tb3RlX3YyAAAUGHNpZ25lcpkGJHNpZ25hdHVyZZ0GQHN1Ym1pdF90aW1lc3RhbXAIPHJlY2lwaWVudHNfaGFzaCAQZGF0YSQCCCBQb3NpdGlvbgAACBRibG9jawQUaW5kZXgELENvbnRlbnRIYXNoASACFBRyZW5ldwAABBRlbnRyeaUGLGZvcmNlX3JlbmV3AAAEFGVudHJ5pQZEZW5hYmxlX2F1dG9fcmVuZXcAAAQwY29udGVudF9oYXNoIEhkaXNhYmxlX2F1dG9fcmVuZXcAAAQwY29udGVudF9oYXNoIGBwcm9jZXNzX3BlbmRpbmdfcmVuZXdhbHMAAQUCFBBzdWRvAAAEEGNhbGyxBlRzdWRvX3VuY2hlY2tlZF93ZWlnaHQAAAgQY2FsbLEGGHdlaWdodBgcc2V0X2tleQAABAxuZXcdAxxzdWRvX2FzAAAIDHdobx0DEGNhbGyxBihyZW1vdmVfa2V5AAEFAkQYU3lzdGVtASkDPFBhcmFjaGFpblN5c3RlbQEtAyRUaW1lc3RhbXABMQM0UGFyYWNoYWluSW5mbwG4HFV0aWxpdHkBYQZQTXVsdGlCbG9ja01pZ3JhdGlvbnMBdQYgQmFsYW5jZXMBNQNIVHJhbnNhY3Rpb25TdG9yYWdlAZUGMEhvcFByb21vdGlvbgGhBixEYXRhUmVuZXdhbAGpBkRDb2xsYXRvclNlbGVjdGlvbgE9AxxTZXNzaW9uAUEDJFhjbXBRdWV1ZQFFAyxQb2xrYWRvdFhjbQGRAyhDdW11bHVzWGNtAbgwTWVzc2FnZVF1ZXVlAZUDEFN1ZG8BrQYEsQYAAgwMWWVzAAEFCE5vAAEFFFN0dWNrAAEFABBEY3VycmVudF9taWdyYXRpb24EQHRvdGFsX21pZ3JhdGlvbnMEXGN1cnJlbnRfbWlncmF0aW9uX3N0ZXBzBGxjdXJyZW50X21pZ3JhdGlvbl9tYXhfc3RlcHPxAQa9BgAMHG9uZ29pbme5BiBwcm9ncmVzc8EGIHByZWZpeGVzWQIACAhpZBkGGGFtb3VudAgEyQYAABQwdHJhbnNhY3Rpb25zBFh0cmFuc2FjdGlvbnNfYWxsb3dhbmNlBBRieXRlcwgUZXh0cmEIPGJ5dGVzX2FsbG93YW5jZQgACBhleHRlbnTRBihleHBpcmF0aW9uBAIIFFN0b3JlAAEFFFJlbmV3AAEFACAoY2h1bmtfcm9vdCAwY29udGVudF9oYXNoIBxoYXNoaW5neQYkY2lkX2NvZGVjCBBzaXplBDxleHRyaW5zaWNfaW5kZXgEMGJsb2NrX2NodW5rcwQQbWV0YdkGBN0GAAAMKHRhZ19wcmVmaXglAiBwcmlvcml0eQgkbG9uZ2V2aXR5CAAMHGFjY291bnQAJHJlY3VycmluZxQQcGFpZBQDDCDdBukGBO0GAAAcJHJlY2lwaWVudAQUc3RhdGXFAzRzaWduYWxzX2V4aXN0FCxmaXJzdF9pbmRleAQobGFzdF9pbmRleAQUZmxhZ3MEMHF1ZXVlZF9ieXRlcwQE9QYAAAggYWxpYXNlcnMdBBh0aWNrZXQIBwkG6QQACBBrZXlzJBRwcm9vZiQEjQMAAhg0VW5pbXBsZW1lbnRlZAABBWRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEFTFdlaWdodE5vdENvbXB1dGFibGUAAQVMVW5oYW5kbGVkWGNtVmVyc2lvbgABBTRBc3NldE5vdEZvdW5kAAEFKFVucm91dGFibGUAAQUHCQcNBwcYDQcHCA0HB70BDQcACDRhY3R1YWxfd2VpZ2h0WQEgcGF5c19mZWU8AAgkcG9zdF9pbmZvIQcUZXJyb3IBBgchByUHBEkGAAaFAwSFAwADCMEBNQcEOQcAABBAZXhlY3V0aW9uX3Jlc3VsdCkHOGVtaXR0ZWRfZXZlbnRzLQckbG9jYWxfeGNtMQc4Zm9yd2FyZGVkX3hjbXM9BwIINFVuaW1wbGVtZW50ZWQAAQVkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABBQdBB0UHAAxAZXhlY3V0aW9uX3Jlc3VsdOA4ZW1pdHRlZF9ldmVudHMtBzhmb3J3YXJkZWRfeGNtcz0HB00HRQcCCCxVbnN1cHBvcnRlZAABBWRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEFBwBVBwIMCFYzAa0BCFY0AbUBCFY1ATEBAgh4VmVyc2lvbmVkQXNzZXRDb252ZXJzaW9uRmFpbGVkAAEFhFZlcnNpb25lZExvY2F0aW9uQ29udmVyc2lvbkZhaWxlZAABBQcUYQcCBHxMb2NhdGlvblZlcnNpb25Db252ZXJzaW9uRmFpbGVkAAEFBx0EaQcHFGkHABQwY29udGVudF9oYXNoIBBzaXplBBxoYXNoaW5neQYkY2lkX2NvZGVjCDxleHRyaW5zaWNfaW5kZXgEBHUHAAAYKGV4cGlyZXNfYXQEPGJ5dGVzX2FsbG93YW5jZQgoYnl0ZXNfdXNlZAhQYnl0ZXNfcGVybWFuZW50X3VzZWQIWHRyYW5zYWN0aW9uc19hbGxvd2FuY2UERHRyYW5zYWN0aW9uc191c2VkBAZ9Bw=="; +var metadataTypes_default = content; +export { + metadataTypes_default as default +}; diff --git a/web/.papi/descriptors/dist/metadataTypes.d.ts b/web/.papi/descriptors/dist/metadataTypes.d.ts index d6452e02..11580984 100644 --- a/web/.papi/descriptors/dist/metadataTypes.d.ts +++ b/web/.papi/descriptors/dist/metadataTypes.d.ts @@ -1,2 +1,2 @@ -declare const content = "3QQAAAAQAQEFAAQBAQUAFAEBBQAcAAQAIAAEACQBAQUAIAEBBQAwAQEFABkCACAAIQIBAQUAKQIBAQUANAEBBQAtAgEBBQAYAQEFADkCAQEFAD0CAQEFAEECAQEFAE0CAQAEGHJlbWFyayQBAQUBAAQUcGFnZXMIAQEFAQAEEGNvZGUkAQEFAQAEFGl0ZW1zVQIBAQUBAAQQa2V5c1kCAQEFAQAIGHByZWZpeCQcc3Via2V5cwQBAQUBAAQkY29kZV9oYXNoIAEBBQEBBQEABDRkaXNwYXRjaF9pbmZvQAEBBQEACDhkaXNwYXRjaF9lcnJvcog0ZGlzcGF0Y2hfaW5mb0ABAQUBAQUBAQUBAAQcYWNjb3VudAABAQUBAAgYc2VuZGVyABBoYXNoIAEBBQEACCRjb2RlX2hhc2ggNGNoZWNrX3ZlcnNpb24UAQEFAQAIJGNvZGVfaGFzaCAUZXJyb3KIAQEFAQEFAQEFAHkCAQEFAH0CAQEFACQBAQUAgQIBAQUAiQIBAQUAcQIBAQUAWQIBAQUAnQIBAQUApQIBAQUArQIBAQUAsQIBAQUAuQIBAQUACAEACBBkYXRhxQJUaW5ib3VuZF9tZXNzYWdlc19kYXRh9QIBAQUBAAQcbWVzc2FnZSQBAQUBAQUBAARUcmVsYXlfY2hhaW5fYmxvY2tfbnVtBAEBBQEABBRjb3VudAQBAQUBAAgsd2VpZ2h0X3VzZWQYIGRtcV9oZWFkIAEBBQEABDBtZXNzYWdlX2hhc2iQAQAEDG5vdwgBAQUAAAAMAAAAAQMAAAAJAwAAABEDAAAAGQMBAAgQZGVzdB0DFHZhbHVlCAEBBQEADBhzb3VyY2UdAxBkZXN0HQMUdmFsdWUIAQEFAQAIEGRlc3QdAyhrZWVwX2FsaXZlFAEBBQEACAx3aG8dAxhhbW91bnQIAQEFAQAEDHdob8gBAQUBAAgMd2hvHQMgbmV3X2ZyZWUIAQEFAQAIJGRpcmVjdGlvbiEDFGRlbHRhCAEBBQEACBR2YWx1ZQgoa2VlcF9hbGl2ZRQBAQUBAQUBAAgcYWNjb3VudAAwZnJlZV9iYWxhbmNlCAEBBQEACBxhY2NvdW50ABhhbW91bnQIAQEFAQAMEGZyb20ACHRvABhhbW91bnQIAQEFAQAIDHdobwAQZnJlZQgBAQUBAAgMd2hvABhhbW91bnQIAQEFAQAQEGZyb20ACHRvABhhbW91bnQISGRlc3RpbmF0aW9uX3N0YXR1c5gBAQUBAAQYYW1vdW50CAEBBQEABAx3aG8AAQEFAQAIDG9sZAgMbmV3CAEBBQEADBhyZWFzb26oDHdobwAYYW1vdW50CAEBBQEAEBhyZWFzb26oGHNvdXJjZQAQZGVzdAAYYW1vdW50CAEBBQEAEBhyZWFzb26oGHNvdXJjZQAQZGVzdAAsdHJhbnNmZXJyZWQIAQEFAKwBAQUAJQMBAQUBAAwMd2hvAChhY3R1YWxfZmVlCAx0aXAIAQEFAAABAAQQY2FsbKUDAQEFAQAIEGNhbGylAxh3ZWlnaHQYAQEFAQAEDG5ldx0DAQEFAQAIDHdobx0DEGNhbGylAwEBBQEBBQEBBQEBBQEABCxzdWRvX3Jlc3VsdLwBAQUBAAgMb2xkwAxuZXcAAQEFAMgBAQUArQMAAAAEAQEFACEBAQAEDG5ld8gBAQUBAAQMbWF4BAEBBQEABBBib25kCAEBBQEABAx3aG8AAQEFAQAELG5ld19kZXBvc2l0CAEBBQEACBxkZXBvc2l0CBh0YXJnZXQAAQEFAQEFAQAENGludnVsbmVyYWJsZXPIAQEFAQAEKGFjY291bnRfaWQAAQEFAQAESGRlc2lyZWRfY2FuZGlkYXRlcwQBAQUBAAQsYm9uZF9hbW91bnQIAQEFAQAIKGFjY291bnRfaWQAHGRlcG9zaXQIAQEFAQAMDG9sZAAMbmV3ABxkZXBvc2l0CAEBBQC1AwEBBQAhAgAAACAAuQMAAAAAALgBAAgQa2V5cyAUcHJvb2YkAQEFAQEFAQAENHNlc3Npb25faW5kZXgEAQEFAQAEJHZhbGlkYXRvcgABAQUACQIBAQUAvQMBAQUAwQMBAQUAzQMA0QMAJAEBBQDVAwAEAAgBAAQMbmV3BAEBBQEBBQEABDBtZXNzYWdlX2hhc2ggAAgA6QMAIAAEAO0DAAQA7QMACADtAwDxAwEBBQD5AwEBBQD9AwABBAANBAAAABUEAQEFAI0BAMEBACEEAQEFABkBAQAIEGRlc3TBARxtZXNzYWdlhQMBAQUBABAQZGVzdMEBLGJlbmVmaWNpYXJ5wQEYYXNzZXRzvQE4ZmVlX2Fzc2V0X2l0ZW0EAQEFAQAIHG1lc3NhZ2WFAyhtYXhfd2VpZ2h0GAEBBQEACCBsb2NhdGlvbh0BHHZlcnNpb24EAQEFAQAERG1heWJlX3hjbV92ZXJzaW9u8QEBAQUBAAQgbG9jYXRpb27BAQEBBQEAFBBkZXN0wQEsYmVuZWZpY2lhcnnBARhhc3NldHO9AThmZWVfYXNzZXRfaXRlbQQwd2VpZ2h0X2xpbWl0bQEBAQUBAAQkc3VzcGVuZGVkFAEBBQEACBhhc3NldHO9ASxiZW5lZmljaWFyecEBAQEFAQAcEGRlc3TBARhhc3NldHO9AVBhc3NldHNfdHJhbnNmZXJfdHlwZYkDOHJlbW90ZV9mZWVzX2lkjQNIZmVlc190cmFuc2Zlcl90eXBliQNIY3VzdG9tX3hjbV9vbl9kZXN0hQMwd2VpZ2h0X2xpbWl0bQEBAQUBAAgcYWxpYXNlcsEBHGV4cGlyZXPFAQEBBQEABBxhbGlhc2VywQEBAQUBAQUBAAQcb3V0Y29tZeABAQUBABAYb3JpZ2luHQEsZGVzdGluYXRpb24dARxtZXNzYWdljQEobWVzc2FnZV9pZCABAQUBABAYb3JpZ2luHQEsZGVzdGluYXRpb24dARRlcnJvcpEBKG1lc3NhZ2VfaWQgAQEFAQAMGG9yaWdpbh0BFGVycm9y2ChtZXNzYWdlX2lkIAEBBQEACBhvcmlnaW4dASBxdWVyeV9pZAgBAQUBAAggcXVlcnlfaWQIIHJlc3BvbnNlTQEBAQUBAAwgcXVlcnlfaWQIMHBhbGxldF9pbmRleAQoY2FsbF9pbmRleAQBAQUBABQgcXVlcnlfaWQIMHBhbGxldF9pbmRleAQoY2FsbF9pbmRleAQ0YWN0dWFsX3dlaWdodBhMbWF4X2J1ZGdldGVkX3dlaWdodBgBAQUBAAwYb3JpZ2luHQEgcXVlcnlfaWQIRGV4cGVjdGVkX2xvY2F0aW9uUQEBAQUBAAQgcXVlcnlfaWQIAQEFAQAMEGhhc2ggGG9yaWdpbh0BGGFzc2V0c70BAQEFAQAQLGRlc3RpbmF0aW9uHQEYcmVzdWx0BBBjb3N0NQEobWVzc2FnZV9pZCABAQUBAAggbG9jYXRpb24dARx2ZXJzaW9uBAEBBQEADCBsb2NhdGlvbh0BIHF1ZXJ5X2lkCBRlcnJvctgBAQUBAAggbG9jYXRpb27BASBxdWVyeV9pZAgBAQUBABAYb3JpZ2luHQEgcXVlcnlfaWQIQGV4cGVjdGVkX3F1ZXJpZXIdAVBtYXliZV9hY3R1YWxfcXVlcmllclEBAQEFAQAMLGRlc3RpbmF0aW9uHQEQY29zdDUBKG1lc3NhZ2VfaWQgAQEFAQAIGHBheWluZx0BEGZlZXM1AQEBBQEABBx2ZXJzaW9uBAEBBQEADBxhbGlhc2VyHQEYdGFyZ2V0HQEYZXhwaXJ5xQEBAQUBAAgcYWxpYXNlch0BGHRhcmdldB0BAQEFAQAEGHRhcmdldB0BAQEFAQAIFGluZGV4BBRlcnJvcmABAQUAIAEBBQEDCCDgANEBAC0EAQEFANEBADEEADUEAQEFAFkBAQAIOG1lc3NhZ2Vfb3JpZ2lu0QEocGFnZV9pbmRleAQBAQUBABA4bWVzc2FnZV9vcmlnaW7RARBwYWdlBBRpbmRleAQwd2VpZ2h0X2xpbWl0GAEBBQEBBQEADAhpZCAYb3JpZ2lu0QEUZXJyb3LVAQEBBQEAEAhpZCAYb3JpZ2lu0QEsd2VpZ2h0X3VzZWQYHHN1Y2Nlc3MUAQEFAQAQCGlkIBhvcmlnaW7RAShwYWdlX2luZGV4BDRtZXNzYWdlX2luZGV4BAEBBQEACBhvcmlnaW7RARRpbmRleAQBAQUBAAgcYWNjb3VudAAkc3RhdGVtZW50/QEAIAA5BAEABBBoYXNoIAEBBQEBBQEACAx3aG8AEGhhc2ggACAAJAAgAEEEAOwATQQA7AAkAQEFAFEEAOwAAAEBBQCxBAEBBQC5BAEBBQDBBAEBBQDFBAEBBQDJBAEABBxwYXlsb2FkJAEBBQEAFBBkZXN07BR2YWx1ZQgwd2VpZ2h0X2xpbWl0GFRzdG9yYWdlX2RlcG9zaXRfbGltaXQIEGRhdGEkAQEFAQAYFHZhbHVlCDB3ZWlnaHRfbGltaXQYVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgkY29kZV9oYXNoIBBkYXRhJBBzYWx0kAEBBQEAGBR2YWx1ZQgwd2VpZ2h0X2xpbWl0GFRzdG9yYWdlX2RlcG9zaXRfbGltaXQIEGNvZGUkEGRhdGEkEHNhbHSQAQEFAQAgFHZhbHVlnQMwd2VpZ2h0X2xpbWl0GDRldGhfZ2FzX2xpbWl0nQMQY29kZSQQZGF0YSRMdHJhbnNhY3Rpb25fZW5jb2RlZCRMZWZmZWN0aXZlX2dhc19wcmljZZ0DLGVuY29kZWRfbGVuBAEBBQEAIBBkZXN07BR2YWx1ZZ0DMHdlaWdodF9saW1pdBg0ZXRoX2dhc19saW1pdJ0DEGRhdGEkTHRyYW5zYWN0aW9uX2VuY29kZWQkTGVmZmVjdGl2ZV9nYXNfcHJpY2WdAyxlbmNvZGVkX2xlbgQBAQUBAAgQY2FsbKUDTHRyYW5zYWN0aW9uX2VuY29kZWQkAQEFAQAIEGNvZGUkVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgBAQUBAAgQZGVzdOwkY29kZV9oYXNoIAEBBQEBBQEADCBjb250cmFjdOwQZGF0YSQYdG9waWNzCQIBAQUBAAggZGVwbG95ZXLsIGNvbnRyYWN07AEBBQEABDhkaXNwYXRjaF9lcnJvcogBAwAACAEDAAAJAgEDCCAIABQBAwAATQIBAwTNBAC4AQMEvQIA0QQBAwAAJAEDBAQA+QEBAwAAwQMBAwjVBCQA3QQBAwQkAO0EAQMAAL0CAQME9QQAWQIBAwjNBPUEAPkEAQMM/QQkIAAFBQEDBL0CALgBAwT5AQAkAQMEJAARBQEDBAAABAEDCCQEABUFAQMIJAQAIQUBAwQYAAgBAwQEAAgBAwilAwQAFQUBAwilAwQAIQUBAwS9AgAlBQEDCCkF/QEANQUBAwQkADkFAQMEPQUA+QEBAwAAQQUBAwAAsQQBAwSdAwCQAQMAALkEAQMAAJ0DAQME7ACdAwEDBOwABAEDGADsCFkBxQEkAFEFAQMcAAhZAcUBVQUkkABhBQEDBG0FAHkFAQMIbQV9BQB5BQEDDAAkxQEAhQUBAwjsIACNBQEDCOwkAI0FAQMIzQShBQDZBQEDDM0EBKEFAN0FAQMIbQWhBQDhBQEDAADsAQMEAADsAQME7AAAAQME7AAkAQMEnQMA6QUBAQUAQQYBAQUARQYBAQUBAAg4ZGlzcGF0Y2hfZXJyb3L5BTRkaXNwYXRjaF9pbmZvQAEBBQEACCRjb2RlX2hhc2ggFGVycm9y+QUBAAQUY2FsbHNlBgEBBQEACBRpbmRleAQQY2FsbGEGAQEFAQAIJGFzX29yaWdpbikGEGNhbGxhBgEBBQEACBBjYWxsYQYYd2VpZ2h0GAEBBQEACBBtYWluYQYgZmFsbGJhY2thBgEBBQEBBQEACBRpbmRleAQUZXJyb3L5BQEBBQEABBRlcnJvcvkFAQEFAQAEGHJlc3VsdAEGAQEFAQAEKG1haW5fZXJyb3L5BQAAAG0GAQEFAQAMGHJlYXNvbg0GDHdobwAYYW1vdW50CAEBBQEAEBhyZWFzb24NBhhzb3VyY2UAEGRlc3QAGGFtb3VudAgBAQUBABAYcmVhc29uDQYYc291cmNlABBkZXN0ACx0cmFuc2ZlcnJlZAgBAQUBAAQYb3JpZ2luKQYAGQYAdQYABAB9BgEBBQB9BgEABBBkYXRhJAEBBQEACAxjaWRRBhBkYXRhJAEBBQEACBRibG9jawQUaW5kZXgEAQEFAQAEFHByb29mVQYBAQUBAAwMd2hvADB0cmFuc2FjdGlvbnMEFGJ5dGVzCAEBBQEACDBjb250ZW50X2hhc2ggIG1heF9zaXplCAEBBQEABDBjb250ZW50X2hhc2ggAQEFAQEFAQAMFGluZGV4BDBjb250ZW50X2hhc2ggDGNpZPkBAQEFAQAIFGluZGV4BDBjb250ZW50X2hhc2ggAQEFAQAMDHdobwAwdHJhbnNhY3Rpb25zBBRieXRlcwgBAQUBAAgwY29udGVudF9oYXNoICBtYXhfc2l6ZQgBAQUBAAQwY29udGVudF9oYXNoIADBAQCBBgEABBBjYWxsYQYBAQUBAAgMd2hvHQMQY2FsbGEGAQEFAQEFAQAELHN1ZG9fcmVzdWx0AQYBAwAABAEDBCQAhQYBAwgk+QEAiQYBAwhhBgQAFQUBAwhhBgQAIQUBAwQEAJUGAQMEhQMAmQYBAwgYjQMAnQYBAwzBAYUDjQMAoQYBAwwpBmEGBADNBgEDCMEBhQMA1QYBAwTBAQDdBgEDCOEGwQEA6QYBAwTBAQDxBgEDCMEBwQEA9Qb5BgEBAQIBAwAQEGZyZWUIIHJlc2VydmVkCBhmcm96ZW4IFGZsYWdzCAAUFG5vbmNlBCRjb25zdW1lcnMEJHByb3ZpZGVycwQsc3VmZmljaWVudHMEEGRhdGEMAQAACCByZWZfdGltZQgocHJvb2Zfc2l6ZQgADBhub3JtYWwYLG9wZXJhdGlvbmFsGCRtYW5kYXRvcnkYBQGABQAFARACFChQcmVSdW50aW1lAAMIKCQkQ29uc2Vuc3VzAAMIKCQQU2VhbAADCCgkFE90aGVyASRkUnVudGltZUVudmlyb25tZW50VXBkYXRlZAABBQQsAAIMOEFwcGx5RXh0cmluc2ljAQQwRmluYWxpemF0aW9uAAEFOEluaXRpYWxpemF0aW9uAAEFAgwYTm9ybWFsAAEFLE9wZXJhdGlvbmFsAAEFJE1hbmRhdG9yeQABBQIIDFllcwABBQhObwABBQAMGHdlaWdodBgUY2xhc3M4IHBheXNfZmVlPAIkPEludmFsaWRTcGVjTmFtZQABBWhTcGVjVmVyc2lvbk5lZWRzVG9JbmNyZWFzZQABBXRGYWlsZWRUb0V4dHJhY3RSdW50aW1lVmVyc2lvbgABBUxOb25EZWZhdWx0Q29tcG9zaXRlAAEFPE5vblplcm9SZWZDb3VudAABBTBDYWxsRmlsdGVyZWQAAQVsTXVsdGlCbG9ja01pZ3JhdGlvbnNPbmdvaW5nAAEFRE5vdGhpbmdBdXRob3JpemVkAAEFMFVuYXV0aG9yaXplZAABBQIYTE92ZXJsYXBwaW5nVXBncmFkZXMAAQVQUHJvaGliaXRlZEJ5UG9sa2Fkb3QAAQUYVG9vQmlnAAEFaFZhbGlkYXRpb25EYXRhTm90QXZhaWxhYmxlAAEFdEhvc3RDb25maWd1cmF0aW9uTm90QXZhaWxhYmxlAAEFME5vdFNjaGVkdWxlZAABBQIwOFZlc3RpbmdCYWxhbmNlAAEFVExpcXVpZGl0eVJlc3RyaWN0aW9ucwABBUxJbnN1ZmZpY2llbnRCYWxhbmNlAAEFSEV4aXN0ZW50aWFsRGVwb3NpdAABBTRFeHBlbmRhYmlsaXR5AAEFXEV4aXN0aW5nVmVzdGluZ1NjaGVkdWxlAAEFLERlYWRBY2NvdW50AAEFPFRvb01hbnlSZXNlcnZlcwABBTBUb29NYW55SG9sZHMAAQU4VG9vTWFueUZyZWV6ZXMAAQVMSXNzdWFuY2VEZWFjdGl2YXRlZAABBSREZWx0YVplcm8AAQUCBCxSZXF1aXJlU3VkbwABBQJERFRvb01hbnlDYW5kaWRhdGVzAAEFXFRvb0Zld0VsaWdpYmxlQ29sbGF0b3JzAAEFQEFscmVhZHlDYW5kaWRhdGUAAQUwTm90Q2FuZGlkYXRlAAEFUFRvb01hbnlJbnZ1bG5lcmFibGVzAAEFTEFscmVhZHlJbnZ1bG5lcmFibGUAAQU8Tm90SW52dWxuZXJhYmxlAAEFXE5vQXNzb2NpYXRlZFZhbGlkYXRvcklkAAEFWFZhbGlkYXRvck5vdFJlZ2lzdGVyZWQAAQVsSW5zZXJ0VG9DYW5kaWRhdGVMaXN0RmFpbGVkAAEFdFJlbW92ZUZyb21DYW5kaWRhdGVMaXN0RmFpbGVkAAEFNERlcG9zaXRUb29Mb3cAAQVkVXBkYXRlQ2FuZGlkYXRlTGlzdEZhaWxlZAABBUBJbnN1ZmZpY2llbnRCb25kAAEFUFRhcmdldElzTm90Q2FuZGlkYXRlAAEFQElkZW50aWNhbERlcG9zaXQAAQVASW52YWxpZFVucmVzZXJ2ZQABBQIUMEludmFsaWRQcm9vZgABBVxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAABBTREdXBsaWNhdGVkS2V5AAEFGE5vS2V5cwABBSROb0FjY291bnQAAQUCFDhCYWRRdWV1ZUNvbmZpZwABBUBBbHJlYWR5U3VzcGVuZGVkAAEFOEFscmVhZHlSZXN1bWVkAAEFdFRvb01hbnlBY3RpdmVPdXRib3VuZENoYW5uZWxzAAEFGFRvb0JpZwABBQKkIE92ZXJmbG93AAEFNFVuaW1wbGVtZW50ZWQAAQVgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAEFZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAQUwTG9jYXRpb25GdWxsAAEFVExvY2F0aW9uTm90SW52ZXJ0aWJsZQABBSRCYWRPcmlnaW4AAQU8SW52YWxpZExvY2F0aW9uAAEFNEFzc2V0Tm90Rm91bmQAAQVURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAEFPE5vdFdpdGhkcmF3YWJsZQABBUhMb2NhdGlvbkNhbm5vdEhvbGQAAQVURXhjZWVkc01heE1lc3NhZ2VTaXplAAEFWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQAAQUkVHJhbnNwb3J0AAEFKFVucm91dGFibGUAAQUwVW5rbm93bkNsYWltAAEFOEZhaWxlZFRvRGVjb2RlAAEFQE1heFdlaWdodEludmFsaWQAAQU4Tm90SG9sZGluZ0ZlZXMAAQUwVG9vRXhwZW5zaXZlAAEFEFRyYXAAAQVARXhwZWN0YXRpb25GYWxzZQABBThQYWxsZXROb3RGb3VuZAABBTBOYW1lTWlzbWF0Y2gAAQVMVmVyc2lvbkluY29tcGF0aWJsZQABBVBIb2xkaW5nV291bGRPdmVyZmxvdwABBSxFeHBvcnRFcnJvcgABBThSZWFuY2hvckZhaWxlZAABBRhOb0RlYWwAAQUoRmVlc05vdE1ldAABBSRMb2NrRXJyb3IAAQUwTm9QZXJtaXNzaW9uAAEFKFVuYW5jaG9yZWQAAQU4Tm90RGVwb3NpdGFibGUAAQU0VG9vTWFueUFzc2V0cwABBUxVbmhhbmRsZWRYY21WZXJzaW9uAAEFSFdlaWdodExpbWl0UmVhY2hlZAABBRxCYXJyaWVyAAEFTFdlaWdodE5vdENvbXB1dGFibGUAAQVERXhjZWVkc1N0YWNrTGltaXQAAQUCcCxVbnJlYWNoYWJsZQABBSxTZW5kRmFpbHVyZQABBSBGaWx0ZXJlZAABBUhVbndlaWdoYWJsZU1lc3NhZ2UAAQVgRGVzdGluYXRpb25Ob3RJbnZlcnRpYmxlAAEFFEVtcHR5AAEFOENhbm5vdFJlYW5jaG9yAAEFNFRvb01hbnlBc3NldHMAAQU0SW52YWxpZE9yaWdpbgABBShCYWRWZXJzaW9uAAEFLEJhZExvY2F0aW9uAAEFOE5vU3Vic2NyaXB0aW9uAAEFREFscmVhZHlTdWJzY3JpYmVkAAEFWENhbm5vdENoZWNrT3V0VGVsZXBvcnQAAQUoTG93QmFsYW5jZQABBTBUb29NYW55TG9ja3MAAQVMQWNjb3VudE5vdFNvdmVyZWlnbgABBShGZWVzTm90TWV0AAEFMExvY2tOb3RGb3VuZAABBRRJblVzZQABBWhJbnZhbGlkQXNzZXRVbmtub3duUmVzZXJ2ZQABBXhJbnZhbGlkQXNzZXRVbnN1cHBvcnRlZFJlc2VydmUAAQU8VG9vTWFueVJlc2VydmVzAAEFYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZQABBWBUb29NYW55QXV0aG9yaXplZEFsaWFzZXMAAQU0RXhwaXJlc0luUGFzdAABBTRBbGlhc05vdEZvdW5kAAEFhExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcgAACBRpbmRleAQUZXJyb3JgAiQsTm90UmVhcGFibGUAAQUYTm9QYWdlAAEFJE5vTWVzc2FnZQABBUBBbHJlYWR5UHJvY2Vzc2VkAAEFGFF1ZXVlZAABBUhJbnN1ZmZpY2llbnRXZWlnaHQAAQVgVGVtcG9yYXJpbHlVbnByb2Nlc3NhYmxlAAEFLFF1ZXVlUGF1c2VkAAEFTFJlY3Vyc2l2ZURpc2FsbG93ZWQAAQUCDDhBbHJlYWR5Q2xhaW1lZAABBTROb3RDbGFpbU93bmVyAAEFNENsYWltTm90Rm91bmQAAQUC4DxJbnZhbGlkU2NoZWR1bGUAAQVASW52YWxpZENhbGxGbGFncwABBSBPdXRPZkdhcwABBThUcmFuc2ZlckZhaWxlZAABBUxNYXhDYWxsRGVwdGhSZWFjaGVkAAEFQENvbnRyYWN0Tm90Rm91bmQAAQUwQ29kZU5vdEZvdW5kAAEFQENvZGVJbmZvTm90Rm91bmQAAQUsT3V0T2ZCb3VuZHMAAQU4RGVjb2RpbmdGYWlsZWQAAQU8Q29udHJhY3RUcmFwcGVkAAEFNFZhbHVlVG9vTGFyZ2UAAQVgVGVybWluYXRlZFdoaWxlUmVlbnRyYW50AAEFOElucHV0Rm9yd2FyZGVkAAEFNFRvb01hbnlUb3BpY3MAAQVERHVwbGljYXRlQ29udHJhY3QAAQVcVGVybWluYXRlZEluQ29uc3RydWN0b3IAAQVAUmVlbnRyYW5jZURlbmllZAABBTxSZWVudGVyZWRQYWxsZXQAAQVEU3RhdGVDaGFuZ2VEZW5pZWQAAQVwU3RvcmFnZURlcG9zaXROb3RFbm91Z2hGdW5kcwABBXBTdG9yYWdlRGVwb3NpdExpbWl0RXhoYXVzdGVkAAEFJENvZGVJblVzZQABBUBDb250cmFjdFJldmVydGVkAAEFMENvZGVSZWplY3RlZAABBTBCbG9iVG9vTGFyZ2UAAQVQU3RhdGljTWVtb3J5VG9vTGFyZ2UAAQVIQmFzaWNCbG9ja1Rvb0xhcmdlAAEFSEludmFsaWRJbnN0cnVjdGlvbgABBXhNYXhEZWxlZ2F0ZURlcGVuZGVuY2llc1JlYWNoZWQAAQVoRGVsZWdhdGVEZXBlbmRlbmN5Tm90Rm91bmQAAQV8RGVsZWdhdGVEZXBlbmRlbmN5QWxyZWFkeUV4aXN0cwABBYRDYW5ub3RBZGRTZWxmQXNEZWxlZ2F0ZURlcGVuZGVuY3kAAQVUT3V0T2ZUcmFuc2llbnRTdG9yYWdlAAEFOEludmFsaWRTeXNjYWxsAAEFTEludmFsaWRTdG9yYWdlRmxhZ3MAAQU8RXhlY3V0aW9uRmFpbGVkAAEFXEJhbGFuY2VDb252ZXJzaW9uRmFpbGVkAAEFWEludmFsaWRJbW11dGFibGVBY2Nlc3MAAQU8QWNjb3VudFVubWFwcGVkAAEFUEFjY291bnRBbHJlYWR5TWFwcGVkAAEFZEludmFsaWRHZW5lcmljVHJhbnNhY3Rpb24AAQVcUmVmY291bnRPdmVyT3JVbmRlcmZsb3cAAQVwVW5zdXBwb3J0ZWRQcmVjb21waWxlQWRkcmVzcwABBUBDYWxsRGF0YVRvb0xhcmdlAAEFSFJldHVybkRhdGFUb29MYXJnZQABBSxJbnZhbGlkSnVtcAABBThTdGFja1VuZGVyZmxvdwABBTRTdGFja092ZXJmbG93AAEFNFR4RmVlT3ZlcmRyYXcAAQVoRXZtQ29uc3RydWN0b3JOb25FbXB0eURhdGEAAQVYRXZtQ29uc3RydWN0ZWRGcm9tSGFzaAABBWxTdG9yYWdlUmVmdW5kTm90RW5vdWdoRnVuZHMAAQVMU3RvcmFnZVJlZnVuZExvY2tlZAABBWBQcmVjb21waWxlRGVsZWdhdGVEZW5pZWQAAQVMRWNkc2FSZWNvdmVyeUZhaWxlZAABBQJQGFN5c3RlbQFEPFBhcmFjaGFpblN5c3RlbQFIJFRpbWVzdGFtcAABBTRQYXJhY2hhaW5JbmZvAAEFNFdlaWdodFJlY2xhaW0AAQUgQmFsYW5jZXMBTEhUcmFuc2FjdGlvblBheW1lbnQAAQUQU3VkbwFQKEF1dGhvcnNoaXAAAQVEQ29sbGF0b3JTZWxlY3Rpb24BVBxTZXNzaW9uAVgQQXVyYQABBRxBdXJhRXh0AAEFJFhjbXBRdWV1ZQFcLFBvbGthZG90WGNtAWQoQ3VtdWx1c1hjbQABBTBNZXNzYWdlUXVldWUBaCRTdGF0ZW1lbnQAAQU4VGVtcGxhdGVQYWxsZXQBbBhSZXZpdmUBcAIoQEZ1bmRzVW5hdmFpbGFibGUAAQUwT25seVByb3ZpZGVyAAEFMEJlbG93TWluaW11bQABBTBDYW5ub3RDcmVhdGUAAQUwVW5rbm93bkFzc2V0AAEFGEZyb3plbgABBSxVbnN1cHBvcnRlZAABBUBDYW5ub3RDcmVhdGVIb2xkAAEFNE5vdEV4cGVuZGFibGUAAQUcQmxvY2tlZAABBQIMJFVuZGVyZmxvdwABBSBPdmVyZmxvdwABBThEaXZpc2lvbkJ5WmVybwABBQIIMExpbWl0UmVhY2hlZAABBRxOb0xheWVyAAEFAjhASW52YWxpZFN0YXRlUm9vdAABBUhJbmNvbXBsZXRlRGF0YWJhc2UAAQVQVmFsdWVBdEluY29tcGxldGVLZXkAAQUwRGVjb2RlckVycm9yAAEFLEludmFsaWRIYXNoAAEFMER1cGxpY2F0ZUtleQABBThFeHRyYW5lb3VzTm9kZQABBTxFeHRyYW5lb3VzVmFsdWUAAQVcRXh0cmFuZW91c0hhc2hSZWZlcmVuY2UAAQVUSW52YWxpZENoaWxkUmVmZXJlbmNlAAEFNFZhbHVlTWlzbWF0Y2gAAQU8SW5jb21wbGV0ZVByb29mAAEFMFJvb3RNaXNtYXRjaAABBSxEZWNvZGVFcnJvcgABBQI8FE90aGVyAAEFMENhbm5vdExvb2t1cAABBSRCYWRPcmlnaW4AAQUYTW9kdWxlAXREQ29uc3VtZXJSZW1haW5pbmcAAQUsTm9Qcm92aWRlcnMAAQVAVG9vTWFueUNvbnN1bWVycwABBRRUb2tlbgF4KEFyaXRobWV0aWMBfDRUcmFuc2FjdGlvbmFsAYAkRXhoYXVzdGVkAAEFKENvcnJ1cHRpb24AAQUsVW5hdmFpbGFibGUAAQU4Um9vdE5vdEFsbG93ZWQAAQUQVHJpZQGEAiBARXh0cmluc2ljU3VjY2VzcwAABDRkaXNwYXRjaF9pbmZvQDxFeHRyaW5zaWNGYWlsZWQAAAg4ZGlzcGF0Y2hfZXJyb3KINGRpc3BhdGNoX2luZm9ALENvZGVVcGRhdGVkAAEFKE5ld0FjY291bnQAAAQcYWNjb3VudAA0S2lsbGVkQWNjb3VudAAABBxhY2NvdW50ACBSZW1hcmtlZAAACBhzZW5kZXIAEGhhc2ggRFVwZ3JhZGVBdXRob3JpemVkAAAIJGNvZGVfaGFzaCA0Y2hlY2tfdmVyc2lvbhSAUmVqZWN0ZWRJbnZhbGlkQXV0aG9yaXplZFVwZ3JhZGUAAAgkY29kZV9oYXNoIBRlcnJvcogGIAIYYFZhbGlkYXRpb25GdW5jdGlvblN0b3JlZAABBWRWYWxpZGF0aW9uRnVuY3Rpb25BcHBsaWVkAAAEVHJlbGF5X2NoYWluX2Jsb2NrX251bQRsVmFsaWRhdGlvbkZ1bmN0aW9uRGlzY2FyZGVkAAEFYERvd253YXJkTWVzc2FnZXNSZWNlaXZlZAAABBRjb3VudARkRG93bndhcmRNZXNzYWdlc1Byb2Nlc3NlZAAACCx3ZWlnaHRfdXNlZBggZG1xX2hlYWQgRFVwd2FyZE1lc3NhZ2VTZW50AAAEMG1lc3NhZ2VfaGFzaJACCBBGcmVlAAEFIFJlc2VydmVkAAEFAgQQS2V5cwABBQIEOEF1dGhvcml6ZUFsaWFzAAEFAgxgQ29kZVVwbG9hZERlcG9zaXRSZXNlcnZlAAEFVFN0b3JhZ2VEZXBvc2l0UmVzZXJ2ZQABBThBZGRyZXNzTWFwcGluZwABBQIMHFNlc3Npb24BnCxQb2xrYWRvdFhjbQGgGFJldml2ZQGkAgg4QmFsYW5jZVVwZGF0ZWQAAQVURmFpbGVkVG9NdXRhdGVBY2NvdW50AAEFAngcRW5kb3dlZAAACBxhY2NvdW50ADBmcmVlX2JhbGFuY2UIIER1c3RMb3N0AAAIHGFjY291bnQAGGFtb3VudAggVHJhbnNmZXIAAAwQZnJvbQAIdG8AGGFtb3VudAgoQmFsYW5jZVNldAAACAx3aG8AEGZyZWUIIFJlc2VydmVkAAAIDHdobwAYYW1vdW50CChVbnJlc2VydmVkAAAIDHdobwAYYW1vdW50CEhSZXNlcnZlUmVwYXRyaWF0ZWQAABAQZnJvbQAIdG8AGGFtb3VudAhIZGVzdGluYXRpb25fc3RhdHVzmBxEZXBvc2l0AAAIDHdobwAYYW1vdW50CCBXaXRoZHJhdwAACAx3aG8AGGFtb3VudAgcU2xhc2hlZAAACAx3aG8AGGFtb3VudAgYTWludGVkAAAIDHdobwAYYW1vdW50CDBNaW50ZWRDcmVkaXQAAAQYYW1vdW50CBhCdXJuZWQAAAgMd2hvABhhbW91bnQIKEJ1cm5lZERlYnQAAAQYYW1vdW50CCRTdXNwZW5kZWQAAAgMd2hvABhhbW91bnQIIFJlc3RvcmVkAAAIDHdobwAYYW1vdW50CCBVcGdyYWRlZAAABAx3aG8AGElzc3VlZAAABBhhbW91bnQIJFJlc2NpbmRlZAAABBhhbW91bnQIGExvY2tlZAAACAx3aG8AGGFtb3VudAggVW5sb2NrZWQAAAgMd2hvABhhbW91bnQIGEZyb3plbgAACAx3aG8AGGFtb3VudAgYVGhhd2VkAAAIDHdobwAYYW1vdW50CExUb3RhbElzc3VhbmNlRm9yY2VkAAAIDG9sZAgMbmV3CBBIZWxkAAAMGHJlYXNvbqgMd2hvABhhbW91bnQIKEJ1cm5lZEhlbGQAAAwYcmVhc29uqAx3aG8AGGFtb3VudAg4VHJhbnNmZXJPbkhvbGQAABAYcmVhc29uqBhzb3VyY2UAEGRlc3QAGGFtb3VudAg8VHJhbnNmZXJBbmRIb2xkAAAQGHJlYXNvbqgYc291cmNlABBkZXN0ACx0cmFuc2ZlcnJlZAggUmVsZWFzZWQAAAwYcmVhc29uqAx3aG8AGGFtb3VudAgoVW5leHBlY3RlZAGsAgRIVHJhbnNhY3Rpb25GZWVQYWlkAAAMDHdobwAoYWN0dWFsX2ZlZQgMdGlwCAEFB7iIBgACEBRTdWRpZAAABCxzdWRvX3Jlc3VsdLwoS2V5Q2hhbmdlZAAACAxvbGTADG5ldwAoS2V5UmVtb3ZlZAABBShTdWRvQXNEb25lAAAELHN1ZG9fcmVzdWx0vAQAAAIoQE5ld0ludnVsbmVyYWJsZXMAAAQ0aW52dWxuZXJhYmxlc8hESW52dWxuZXJhYmxlQWRkZWQAAAQoYWNjb3VudF9pZABMSW52dWxuZXJhYmxlUmVtb3ZlZAAABChhY2NvdW50X2lkAFBOZXdEZXNpcmVkQ2FuZGlkYXRlcwAABEhkZXNpcmVkX2NhbmRpZGF0ZXMEQE5ld0NhbmRpZGFjeUJvbmQAAAQsYm9uZF9hbW91bnQIOENhbmRpZGF0ZUFkZGVkAAAIKGFjY291bnRfaWQAHGRlcG9zaXQIUENhbmRpZGF0ZUJvbmRVcGRhdGVkAAAIKGFjY291bnRfaWQAHGRlcG9zaXQIQENhbmRpZGF0ZVJlbW92ZWQAAAQoYWNjb3VudF9pZABEQ2FuZGlkYXRlUmVwbGFjZWQAAAwMb2xkAAxuZXcAHGRlcG9zaXQIaEludmFsaWRJbnZ1bG5lcmFibGVTa2lwcGVkAAAEKGFjY291bnRfaWQAAhAoTmV3U2Vzc2lvbgAABDRzZXNzaW9uX2luZGV4BCROZXdRdWV1ZWQAAQVEVmFsaWRhdG9yRGlzYWJsZWQAAAQkdmFsaWRhdG9yAEhWYWxpZGF0b3JSZWVuYWJsZWQAAAQkdmFsaWRhdG9yAAIEPFhjbXBNZXNzYWdlU2VudAAABDBtZXNzYWdlX2hhc2ggAqQgT3ZlcmZsb3cAAQU0VW5pbXBsZW1lbnRlZAABBWBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAQVkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgABBTBMb2NhdGlvbkZ1bGwAAQVUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAEFJEJhZE9yaWdpbgABBTxJbnZhbGlkTG9jYXRpb24AAQU0QXNzZXROb3RGb3VuZAABBVRGYWlsZWRUb1RyYW5zYWN0QXNzZXQAAQU8Tm90V2l0aGRyYXdhYmxlAAEFSExvY2F0aW9uQ2Fubm90SG9sZAABBVRFeGNlZWRzTWF4TWVzc2FnZVNpemUAAQVYRGVzdGluYXRpb25VbnN1cHBvcnRlZAABBSRUcmFuc3BvcnQAAQUoVW5yb3V0YWJsZQABBTBVbmtub3duQ2xhaW0AAQU4RmFpbGVkVG9EZWNvZGUAAQVATWF4V2VpZ2h0SW52YWxpZAABBThOb3RIb2xkaW5nRmVlcwABBTBUb29FeHBlbnNpdmUAAQUQVHJhcAEIQEV4cGVjdGF0aW9uRmFsc2UAAQU4UGFsbGV0Tm90Rm91bmQAAQUwTmFtZU1pc21hdGNoAAEFTFZlcnNpb25JbmNvbXBhdGlibGUAAQVQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAAQUsRXhwb3J0RXJyb3IAAQU4UmVhbmNob3JGYWlsZWQAAQUYTm9EZWFsAAEFKEZlZXNOb3RNZXQAAQUkTG9ja0Vycm9yAAEFME5vUGVybWlzc2lvbgABBShVbmFuY2hvcmVkAAEFOE5vdERlcG9zaXRhYmxlAAEFNFRvb01hbnlBc3NldHMAAQVMVW5oYW5kbGVkWGNtVmVyc2lvbgABBUhXZWlnaHRMaW1pdFJlYWNoZWQBGBxCYXJyaWVyAAEFTFdlaWdodE5vdENvbXB1dGFibGUAAQVERXhjZWVkc1N0YWNrTGltaXQAAQUACBRpbmRleAQUZXJyb3LYAgwgQ29tcGxldGUAAAQQdXNlZBgoSW5jb21wbGV0ZQAACBB1c2VkGBRlcnJvctwURXJyb3IB3AIgJEJ5R2VuZXNpcwEgGEJ5Rm9yawAACDBibG9ja19udW1iZXIIKGJsb2NrX2hhc2ggIFBvbGthZG90AAEFGEt1c2FtYQABBSBFdGhlcmV1bQAABCBjaGFpbl9pZAgsQml0Y29pbkNvcmUAAQUsQml0Y29pbkNhc2gAAQVAUG9sa2Fkb3RCdWxsZXRpbgABBQbkBQFQAigQVW5pdAABBRxNb25pa2VyASgUSW5kZXgBBCRFeGVjdXRpdmUAAQUkVGVjaG5pY2FsAAEFLExlZ2lzbGF0aXZlAAEFIEp1ZGljaWFsAAEFHERlZmVuc2UAAQU4QWRtaW5pc3RyYXRpb24AAQUgVHJlYXN1cnkAAQUCFBRWb2ljZQABBRxNZW1iZXJzAAAEFGNvdW50BCBGcmFjdGlvbgAACAxub20EFGRlbm9tBERBdExlYXN0UHJvcG9ydGlvbgAACAxub20EFGRlbm9tBEhNb3JlVGhhblByb3BvcnRpb24AAAgMbm9tBBRkZW5vbQQCKCRQYXJhY2hhaW4BBCxBY2NvdW50SWQzMgAACBxuZXR3b3Jr6AhpZCA4QWNjb3VudEluZGV4NjQAAAgcbmV0d29ya+gUaW5kZXgIMEFjY291bnRLZXkyMAAACBxuZXR3b3Jr6AxrZXnsOFBhbGxldEluc3RhbmNlAQQwR2VuZXJhbEluZGV4AQgoR2VuZXJhbEtleQAACBhsZW5ndGgEEGRhdGEgJE9ubHlDaGlsZAABBSRQbHVyYWxpdHkAAAgIaWTwEHBhcnT0PEdsb2JhbENvbnNlbnN1cwHkBPgBCAT4AQwE+AEQBPgBFAT4ARgE+AEcBPgBIAIkEEhlcmUAAQUIWDEB+AhYMgH8CFgzAQEBCFg0AQUBCFg1AQkBCFg2AQ0BCFg3AREBCFg4ARUBAAgccGFyZW50cwQgaW50ZXJpb3IZAQUBIAUBQAIYJFVuZGVmaW5lZAABBRRJbmRleAEIGEFycmF5NAEoGEFycmF5OAEhARxBcnJheTE2ASUBHEFycmF5MzIBIAIIIEZ1bmdpYmxlAQgsTm9uRnVuZ2libGUBKQEACAhpZB0BDGZ1bi0BBDEBAAMIBNgGOQEAGBRpbmRleAQQbmFtZSQsbW9kdWxlX25hbWUkFG1ham9yBBRtaW5vcgQUcGF0Y2gEBEEBAAIMHFN1Y2Nlc3MAAQUURXJyb3IBJDhUcnVuY2F0ZWRFcnJvcgEkAhgQTnVsbAABBRhBc3NldHMBNQE8RXhlY3V0aW9uUmVzdWx0AT0BHFZlcnNpb24BBCxQYWxsZXRzSW5mbwFFAThEaXNwYXRjaFJlc3VsdAFJAQYdAQIQGE5hdGl2ZQABBUBTb3ZlcmVpZ25BY2NvdW50AAEFJFN1cGVydXNlcgABBQxYY20AAQUGGAAMLGRlc3RpbmF0aW9uHQEgcXVlcnlfaWQIKG1heF93ZWlnaHQYAgggRnVuZ2libGUAAQUsTm9uRnVuZ2libGUAAQUCEAxBbGwAAQUUQWxsT2YAAAgIaWQdAQxmdW5hAShBbGxDb3VudGVkAQQwQWxsT2ZDb3VudGVkAAAMCGlkHQEMZnVuYQEUY291bnQEAgggRGVmaW5pdGUBNQEQV2lsZAFlAQIIJFVubGltaXRlZAABBRxMaW1pdGVkARgCDCBUZWxlcG9ydAFpAThSZXNlcnZlRGVwb3NpdAFpATxSZXNlcnZlV2l0aGRyYXcBaQEGcQEEcQEABhkBAgQwQXNzZXRDbGFpbWVyAAAEIGxvY2F0aW9uHQEEgQEAAtA0V2l0aGRyYXdBc3NldAE1AVRSZXNlcnZlQXNzZXREZXBvc2l0ZWQBNQFYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAE1ATRRdWVyeVJlc3BvbnNlAAAQIHF1ZXJ5X2lkCCByZXNwb25zZU0BKG1heF93ZWlnaHQYHHF1ZXJpZXJRATRUcmFuc2ZlckFzc2V0AAAIGGFzc2V0czUBLGJlbmVmaWNpYXJ5HQFQVHJhbnNmZXJSZXNlcnZlQXNzZXQAAAwYYXNzZXRzNQEQZGVzdB0BDHhjbY0BIFRyYW5zYWN0AAAMLG9yaWdpbl9raW5kVQFMZmFsbGJhY2tfbWF4X3dlaWdodFkBEGNhbGwkZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QAAAwYc2VuZGVyBEBtYXhfbWVzc2FnZV9zaXplBDBtYXhfY2FwYWNpdHkETEhybXBDaGFubmVsQWNjZXB0ZWQAAAQkcmVjaXBpZW50BEhIcm1wQ2hhbm5lbENsb3NpbmcAAAwkaW5pdGlhdG9yBBhzZW5kZXIEJHJlY2lwaWVudAQsQ2xlYXJPcmlnaW4AAQU0RGVzY2VuZE9yaWdpbgEZASxSZXBvcnRFcnJvcgFdATBEZXBvc2l0QXNzZXQAAAgYYXNzZXRzaQEsYmVuZWZpY2lhcnkdAUxEZXBvc2l0UmVzZXJ2ZUFzc2V0AAAMGGFzc2V0c2kBEGRlc3QdAQx4Y22NATRFeGNoYW5nZUFzc2V0AAAMEGdpdmVpARB3YW50NQEcbWF4aW1hbBRcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcAAAwYYXNzZXRzaQEccmVzZXJ2ZR0BDHhjbY0BQEluaXRpYXRlVGVsZXBvcnQAAAwYYXNzZXRzaQEQZGVzdB0BDHhjbY0BNFJlcG9ydEhvbGRpbmcAAAg0cmVzcG9uc2VfaW5mb10BGGFzc2V0c2kBMEJ1eUV4ZWN1dGlvbgAACBBmZWVzMQEwd2VpZ2h0X2xpbWl0bQE0UmVmdW5kU3VycGx1cwABBTxTZXRFcnJvckhhbmRsZXIBjQEsU2V0QXBwZW5kaXgBjQEoQ2xlYXJFcnJvcgABBShDbGFpbUFzc2V0AAAIGGFzc2V0czUBGHRpY2tldB0BEFRyYXABCEBTdWJzY3JpYmVWZXJzaW9uAAAIIHF1ZXJ5X2lkCExtYXhfcmVzcG9uc2Vfd2VpZ2h0GEhVbnN1YnNjcmliZVZlcnNpb24AAQUkQnVybkFzc2V0ATUBLEV4cGVjdEFzc2V0ATUBMEV4cGVjdE9yaWdpbgFRASxFeHBlY3RFcnJvcgE9AVBFeHBlY3RUcmFuc2FjdFN0YXR1cwFJASxRdWVyeVBhbGxldAAACCxtb2R1bGVfbmFtZSQ0cmVzcG9uc2VfaW5mb10BMEV4cGVjdFBhbGxldAAAFBRpbmRleAQQbmFtZSQsbW9kdWxlX25hbWUkLGNyYXRlX21ham9yBDxtaW5fY3JhdGVfbWlub3IEUFJlcG9ydFRyYW5zYWN0U3RhdHVzAV0BTENsZWFyVHJhbnNhY3RTdGF0dXMAAQU8VW5pdmVyc2FsT3JpZ2luAfg0RXhwb3J0TWVzc2FnZQAADBxuZXR3b3Jr5CxkZXN0aW5hdGlvbhkBDHhjbY0BJExvY2tBc3NldAAACBRhc3NldDEBIHVubG9ja2VyHQEsVW5sb2NrQXNzZXQAAAgUYXNzZXQxARh0YXJnZXQdAThOb3RlVW5sb2NrYWJsZQAACBRhc3NldDEBFG93bmVyHQE0UmVxdWVzdFVubG9jawAACBRhc3NldDEBGGxvY2tlch0BLFNldEZlZXNNb2RlAAAEMGppdF93aXRoZHJhdxQgU2V0VG9waWMBIChDbGVhclRvcGljAAEFLEFsaWFzT3JpZ2luAR0BPFVucGFpZEV4ZWN1dGlvbgAACDB3ZWlnaHRfbGltaXRtATBjaGVja19vcmlnaW5RARxQYXlGZWVzAAAEFGFzc2V0MQFASW5pdGlhdGVUcmFuc2ZlcgAAFCxkZXN0aW5hdGlvbh0BLHJlbW90ZV9mZWVzdQE8cHJlc2VydmVfb3JpZ2luFBhhc3NldHN5AShyZW1vdGVfeGNtjQFERXhlY3V0ZVdpdGhPcmlnaW4AAAhEZGVzY2VuZGFudF9vcmlnaW59AQx4Y22NASBTZXRIaW50cwAABBRoaW50c4UBBIkBAAIcNE5vdEFwcGxpY2FibGUAAQUkVHJhbnNwb3J0AAEFKFVucm91dGFibGUAAQVYRGVzdGluYXRpb25VbnN1cHBvcnRlZAABBVRFeGNlZWRzTWF4TWVzc2FnZVNpemUAAQU8TWlzc2luZ0FyZ3VtZW50AAEFEEZlZXMAAQUCLCRCeUdlbmVzaXMBIBhCeUZvcmsAAAgwYmxvY2tfbnVtYmVyCChibG9ja19oYXNoICBQb2xrYWRvdAABBRhLdXNhbWEAAQUcV2VzdGVuZAABBRhSb2NvY28AAQUYV29jb2NvAAEFIEV0aGVyZXVtAAAEIGNoYWluX2lkCCxCaXRjb2luQ29yZQABBSxCaXRjb2luQ2FzaAABBUBQb2xrYWRvdEJ1bGxldGluAAEFBpUBAigkUGFyYWNoYWluAQQsQWNjb3VudElkMzIAAAgcbmV0d29ya5kBCGlkIDhBY2NvdW50SW5kZXg2NAAACBxuZXR3b3JrmQEUaW5kZXgIMEFjY291bnRLZXkyMAAACBxuZXR3b3JrmQEMa2V57DhQYWxsZXRJbnN0YW5jZQEEMEdlbmVyYWxJbmRleAEIKEdlbmVyYWxLZXkAAAgYbGVuZ3RoBBBkYXRhICRPbmx5Q2hpbGQAAQUkUGx1cmFsaXR5AAAICGlk8BBwYXJ09DxHbG9iYWxDb25zZW5zdXMBlQECJBBIZXJlAAEFCFgxAZ0BCFgyAASdAQEICFgzAASdAQEMCFg0AASdAQEQCFg1AASdAQEUCFg2AASdAQEYCFg3AASdAQEcCFg4AASdAQEgAAgccGFyZW50cwQgaW50ZXJpb3KhAQIIIENvbmNyZXRlAaUBIEFic3RyYWN0ASAACAhpZKkBDGZ1bi0BBK0BAAAICGlkpQEMZnVuLQEEtQEAAgwIVjMBsQEIVjQBuQEIVjUBNQECDAhWMwGlAQhWNAGlAQhWNQEdAQYIAnQkQXR0ZW1wdGVkAAAEHG91dGNvbWXgEFNlbnQAABAYb3JpZ2luHQEsZGVzdGluYXRpb24dARxtZXNzYWdljQEobWVzc2FnZV9pZCAoU2VuZEZhaWxlZAAAEBhvcmlnaW4dASxkZXN0aW5hdGlvbh0BFGVycm9ykQEobWVzc2FnZV9pZCA8UHJvY2Vzc1hjbUVycm9yAAAMGG9yaWdpbh0BFGVycm9y2ChtZXNzYWdlX2lkIEhVbmV4cGVjdGVkUmVzcG9uc2UAAAgYb3JpZ2luHQEgcXVlcnlfaWQINFJlc3BvbnNlUmVhZHkAAAggcXVlcnlfaWQIIHJlc3BvbnNlTQEgTm90aWZpZWQAAAwgcXVlcnlfaWQIMHBhbGxldF9pbmRleAQoY2FsbF9pbmRleARATm90aWZ5T3ZlcndlaWdodAAAFCBxdWVyeV9pZAgwcGFsbGV0X2luZGV4BChjYWxsX2luZGV4BDRhY3R1YWxfd2VpZ2h0GExtYXhfYnVkZ2V0ZWRfd2VpZ2h0GExOb3RpZnlEaXNwYXRjaEVycm9yAAAMIHF1ZXJ5X2lkCDBwYWxsZXRfaW5kZXgEKGNhbGxfaW5kZXgESE5vdGlmeURlY29kZUZhaWxlZAAADCBxdWVyeV9pZAgwcGFsbGV0X2luZGV4BChjYWxsX2luZGV4BEBJbnZhbGlkUmVzcG9uZGVyAAAMGG9yaWdpbh0BIHF1ZXJ5X2lkCERleHBlY3RlZF9sb2NhdGlvblEBXEludmFsaWRSZXNwb25kZXJWZXJzaW9uAAAIGG9yaWdpbh0BIHF1ZXJ5X2lkCDRSZXNwb25zZVRha2VuAAAEIHF1ZXJ5X2lkCDRBc3NldHNUcmFwcGVkAAAMEGhhc2ggGG9yaWdpbh0BGGFzc2V0c70BVFZlcnNpb25DaGFuZ2VOb3RpZmllZAAAECxkZXN0aW5hdGlvbh0BGHJlc3VsdAQQY29zdDUBKG1lc3NhZ2VfaWQgXFN1cHBvcnRlZFZlcnNpb25DaGFuZ2VkAAAIIGxvY2F0aW9uHQEcdmVyc2lvbgRQTm90aWZ5VGFyZ2V0U2VuZEZhaWwAAAwgbG9jYXRpb24dASBxdWVyeV9pZAgUZXJyb3LYZE5vdGlmeVRhcmdldE1pZ3JhdGlvbkZhaWwAAAggbG9jYXRpb27BASBxdWVyeV9pZAhUSW52YWxpZFF1ZXJpZXJWZXJzaW9uAAAIGG9yaWdpbh0BIHF1ZXJ5X2lkCDhJbnZhbGlkUXVlcmllcgAAEBhvcmlnaW4dASBxdWVyeV9pZAhAZXhwZWN0ZWRfcXVlcmllch0BUG1heWJlX2FjdHVhbF9xdWVyaWVyUQFQVmVyc2lvbk5vdGlmeVN0YXJ0ZWQAAAwsZGVzdGluYXRpb24dARBjb3N0NQEobWVzc2FnZV9pZCBYVmVyc2lvbk5vdGlmeVJlcXVlc3RlZAAADCxkZXN0aW5hdGlvbh0BEGNvc3Q1AShtZXNzYWdlX2lkIGBWZXJzaW9uTm90aWZ5VW5yZXF1ZXN0ZWQAAAwsZGVzdGluYXRpb24dARBjb3N0NQEobWVzc2FnZV9pZCAgRmVlc1BhaWQAAAgYcGF5aW5nHQEQZmVlczUBNEFzc2V0c0NsYWltZWQAAAwQaGFzaCAYb3JpZ2luHQEYYXNzZXRzvQFgVmVyc2lvbk1pZ3JhdGlvbkZpbmlzaGVkAAAEHHZlcnNpb24EPEFsaWFzQXV0aG9yaXplZAAADBxhbGlhc2VyHQEYdGFyZ2V0HQEYZXhwaXJ5xQFkQWxpYXNBdXRob3JpemF0aW9uUmVtb3ZlZAAACBxhbGlhc2VyHQEYdGFyZ2V0HQFwQWxpYXNlc0F1dGhvcml6YXRpb25zUmVtb3ZlZAAABBh0YXJnZXQdAQIMNEludmFsaWRGb3JtYXQBIEhVbnN1cHBvcnRlZFZlcnNpb24BIEBFeGVjdXRlZERvd253YXJkAAMIIOACDBBIZXJlAAEFGFBhcmVudAABBRxTaWJsaW5nAQQCGCRCYWRGb3JtYXQAAQUcQ29ycnVwdAABBSxVbnN1cHBvcnRlZAABBShPdmVyd2VpZ2h0ARgUWWllbGQAAQVEU3RhY2tMaW1pdFJlYWNoZWQAAQUCEEBQcm9jZXNzaW5nRmFpbGVkAAAMCGlkIBhvcmlnaW7RARRlcnJvctUBJFByb2Nlc3NlZAAAEAhpZCAYb3JpZ2lu0QEsd2VpZ2h0X3VzZWQYHHN1Y2Nlc3MUSE92ZXJ3ZWlnaHRFbnF1ZXVlZAAAEAhpZCAYb3JpZ2lu0QEocGFnZV9pbmRleAQ0bWVzc2FnZV9pbmRleAQoUGFnZVJlYXBlZAAACBhvcmlnaW7RARRpbmRleAQFAQEBBQEFAQUBhAIQHFNyMjU1MTkAAAgkc2lnbmF0dXJl3QEYc2lnbmVyIBxFZDI1NTE5AAAIJHNpZ25hdHVyZd0BGHNpZ25lciA4U2VjcDI1NmsxRWNkc2EAAAgkc2lnbmF0dXJl4QEYc2lnbmVy5QEcT25DaGFpbgAADAx3aG8gKGJsb2NrX2hhc2ggLGV2ZW50X2luZGV4CAbpAQYEBCABEAYkABwUcHJvb2btAThkZWNyeXB0aW9uX2tleZAcY2hhbm5lbJAgcHJpb3JpdHnxAShudW1fdG9waWNzBBh0b3BpY3P1ARBkYXRh+QECBDBOZXdTdGF0ZW1lbnQAAAgcYWNjb3VudAAkc3RhdGVtZW50/QECCDBDbGFpbUNyZWF0ZWQAAAgMd2hvABBoYXNoIDBDbGFpbVJldm9rZWQAAAgMd2hvABBoYXNoIAQgAAIMPENvbnRyYWN0RW1pdHRlZAAADCBjb250cmFjdOwQZGF0YSQYdG9waWNzCQIwSW5zdGFudGlhdGVkAAAIIGRlcGxveWVy7CBjb250cmFjdOxIRXRoRXh0cmluc2ljUmV2ZXJ0AAAEOGRpc3BhdGNoX2Vycm9yiAI4GFN5c3RlbQGMPFBhcmFjaGFpblN5c3RlbQGUIEJhbGFuY2VzAbBIVHJhbnNhY3Rpb25QYXltZW50AbQQU3VkbwHERENvbGxhdG9yU2VsZWN0aW9uAcwcU2Vzc2lvbgHQJFhjbXBRdWV1ZQHULFBvbGthZG90WGNtAckBKEN1bXVsdXNYY20BzQEwTWVzc2FnZVF1ZXVlAdkBJFN0YXRlbWVudAEBAjhUZW1wbGF0ZVBhbGxldAEFAhhSZXZpdmUBDQIADBRwaGFzZTQUZXZlbnQRAhh0b3BpY3MJAgQVAgAEBAEIBB0CAAEBAAgwc3BlY192ZXJzaW9uBCRzcGVjX25hbWUlAgAIJGNvZGVfaGFzaCA0Y2hlY2tfdmVyc2lvbhQAEDhiYXNlX2V4dHJpbnNpYxg0bWF4X2V4dHJpbnNpY1kBJG1heF90b3RhbFkBIHJlc2VydmVkWQEADBhub3JtYWwxAixvcGVyYXRpb25hbDECJG1hbmRhdG9yeTECAAwoYmFzZV9ibG9jaxgkbWF4X2Jsb2NrGCRwZXJfY2xhc3M1AgAMGG5vcm1hbAQsb3BlcmF0aW9uYWwEJG1hbmRhdG9yeQQACBByZWFkCBR3cml0ZQgDCCEBBARFAgAAICRzcGVjX25hbWUlAiRpbXBsX25hbWUlAkRhdXRob3JpbmdfdmVyc2lvbgQwc3BlY192ZXJzaW9uBDBpbXBsX3ZlcnNpb24EEGFwaXNJAkx0cmFuc2FjdGlvbl92ZXJzaW9uBDhzeXN0ZW1fdmVyc2lvbgQEJAEIBFECAAQkAAAIJG1zZ19jb3VudAQsdG90YWxfYnl0ZXMEAwgEXQIEYQIAAAw0dW1wX21zZ19jb3VudAQ8dW1wX3RvdGFsX2J5dGVzBDRocm1wX291dGdvaW5nZQICCBRBYm9ydAABBRxHb0FoZWFkAAEFBm0CAAw4dXNlZF9iYW5kd2lkdGhpAjhwYXJhX2hlYWRfaGFzaJBgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFscQIEdQIAAAw4dXNlZF9iYW5kd2lkdGhpAjhocm1wX3dhdGVybWFya/EBYGNvbnN1bWVkX2dvX2FoZWFkX3NpZ25hbHECABAscGFyZW50X2hlYWQkTHJlbGF5X3BhcmVudF9udW1iZXIEZHJlbGF5X3BhcmVudF9zdG9yYWdlX3Jvb3QgMG1heF9wb3Zfc2l6ZQQCBBxQcmVzZW50AAEFBoUCAAg8cmVtYWluaW5nX2NvdW50BDhyZW1haW5pbmdfc2l6ZQQAGDBtYXhfY2FwYWNpdHkEOG1heF90b3RhbF9zaXplBEBtYXhfbWVzc2FnZV9zaXplBCRtc2dfY291bnQEKHRvdGFsX3NpemUEIG1xY19oZWFkkAMIBJECBJUCAAAQMGRtcV9tcWNfaGVhZCCccmVsYXlfZGlzcGF0Y2hfcXVldWVfcmVtYWluaW5nX2NhcGFjaXR5jQJAaW5ncmVzc19jaGFubmVsc5kCPGVncmVzc19jaGFubmVsc5kCAAhMbWF4X2NhbmRpZGF0ZV9kZXB0aARQYWxsb3dlZF9hbmNlc3RyeV9sZW4EACg0bWF4X2NvZGVfc2l6ZQRIbWF4X2hlYWRfZGF0YV9zaXplBFhtYXhfdXB3YXJkX3F1ZXVlX2NvdW50BFRtYXhfdXB3YXJkX3F1ZXVlX3NpemUEXG1heF91cHdhcmRfbWVzc2FnZV9zaXplBJBtYXhfdXB3YXJkX21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGUEiGhybXBfbWF4X21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGUEbHZhbGlkYXRpb25fdXBncmFkZV9jb29sZG93bgRgdmFsaWRhdGlvbl91cGdyYWRlX2RlbGF5BFBhc3luY19iYWNraW5nX3BhcmFtc6ECAwgEIASpAgAACBxzZW50X2F0BCxyZXZlcnNlX2lkeAQACCRyZWNpcGllbnQEEGRhdGEkBLUCAAAULHBhcmVudF9oYXNoIBhudW1iZXIEKHN0YXRlX3Jvb3QgPGV4dHJpbnNpY3Nfcm9vdCAYZGlnZXN0MAS9AgAAEDx2YWxpZGF0aW9uX2RhdGGBAkRyZWxheV9jaGFpbl9zdGF0ZVkCYHJlbGF5X3BhcmVudF9kZXNjZW5kYW50c8ECQGNvbGxhdG9yX3BlZXJfaWT5AQAIHHNlbnRfYXQEDG1zZyQEyQIAAAgcc2VudF9hdAQgbXNnX2hhc2ggBNECAAAINGZ1bGxfbWVzc2FnZXPNAjxoYXNoZWRfbWVzc2FnZXPVAgAIHHNlbnRfYXQEEGRhdGEkAwgE3QIE4QIAAwgE0QIE6QIAAAg0ZnVsbF9tZXNzYWdlc+UCPGhhc2hlZF9tZXNzYWdlc+0CAAhEZG93bndhcmRfbWVzc2FnZXPZAkxob3Jpem9udGFsX21lc3NhZ2Vz8QICDAxGZWUAAQUQTWlzYwABBQxBbGwAAQUADAhpZCEBGGFtb3VudAgccmVhc29uc/kCBP0CAAAICGlkIQEYYW1vdW50CAQFAwAACAhpZKgYYW1vdW50CAQNAwAABBhhbW91bnQIBBUDAAIUCElkAQAUSW5kZXgBuAxSYXcBJCRBZGRyZXNzMzIBICRBZGRyZXNzMjAB7AIIIEluY3JlYXNlAAEFIERlY3JlYXNlAAEFAggkVjFBbmNpZW50AAEFCFYyAAEFAiwYcmVtYXJrAAAEGHJlbWFyayQ4c2V0X2hlYXBfcGFnZXMAAAQUcGFnZXMIIHNldF9jb2RlAAAEEGNvZGUkXHNldF9jb2RlX3dpdGhvdXRfY2hlY2tzAAAEEGNvZGUkLHNldF9zdG9yYWdlAAAEFGl0ZW1zVQIwa2lsbF9zdG9yYWdlAAAEEGtleXNZAixraWxsX3ByZWZpeAAACBhwcmVmaXgkHHN1YmtleXMERHJlbWFya193aXRoX2V2ZW50AAAEGHJlbWFyayREYXV0aG9yaXplX3VwZ3JhZGUAAAQkY29kZV9oYXNoIIBhdXRob3JpemVfdXBncmFkZV93aXRob3V0X2NoZWNrcwAABCRjb2RlX2hhc2ggYGFwcGx5X2F1dGhvcml6ZWRfdXBncmFkZQAABBBjb2RlJAIITHNldF92YWxpZGF0aW9uX2RhdGEAAAgQZGF0YcUCVGluYm91bmRfbWVzc2FnZXNfZGF0YfUCYHN1ZG9fc2VuZF91cHdhcmRfbWVzc2FnZQAABBxtZXNzYWdlJAIEDHNldAAABAxub3cIAiRQdHJhbnNmZXJfYWxsb3dfZGVhdGgAAAgQZGVzdB0DFHZhbHVlCDhmb3JjZV90cmFuc2ZlcgAADBhzb3VyY2UdAxBkZXN0HQMUdmFsdWUITHRyYW5zZmVyX2tlZXBfYWxpdmUAAAgQZGVzdB0DFHZhbHVlCDB0cmFuc2Zlcl9hbGwAAAgQZGVzdB0DKGtlZXBfYWxpdmUUPGZvcmNlX3VucmVzZXJ2ZQAACAx3aG8dAxhhbW91bnQIQHVwZ3JhZGVfYWNjb3VudHMAAAQMd2hvyERmb3JjZV9zZXRfYmFsYW5jZQAACAx3aG8dAyBuZXdfZnJlZQhsZm9yY2VfYWRqdXN0X3RvdGFsX2lzc3VhbmNlAAAIJGRpcmVjdGlvbiEDFGRlbHRhCBBidXJuAAAIFHZhbHVlCChrZWVwX2FsaXZlFAIUEHN1ZG8AAAQQY2FsbKUDVHN1ZG9fdW5jaGVja2VkX3dlaWdodAAACBBjYWxspQMYd2VpZ2h0GBxzZXRfa2V5AAAEDG5ldx0DHHN1ZG9fYXMAAAgMd2hvHQMQY2FsbKUDKHJlbW92ZV9rZXkAAQUCJERzZXRfaW52dWxuZXJhYmxlcwAABAxuZXfIWHNldF9kZXNpcmVkX2NhbmRpZGF0ZXMAAAQMbWF4BEhzZXRfY2FuZGlkYWN5X2JvbmQAAAQQYm9uZAhUcmVnaXN0ZXJfYXNfY2FuZGlkYXRlAAEFMGxlYXZlX2ludGVudAABBUBhZGRfaW52dWxuZXJhYmxlAAAEDHdobwBMcmVtb3ZlX2ludnVsbmVyYWJsZQAABAx3aG8ALHVwZGF0ZV9ib25kAAAELG5ld19kZXBvc2l0CEx0YWtlX2NhbmRpZGF0ZV9zbG90AAAIHGRlcG9zaXQIGHRhcmdldAACCCBzZXRfa2V5cwAACBBrZXlzIBRwcm9vZiQocHVyZ2Vfa2V5cwABBQIUVHN1c3BlbmRfeGNtX2V4ZWN1dGlvbgABBVByZXN1bWVfeGNtX2V4ZWN1dGlvbgABBWB1cGRhdGVfc3VzcGVuZF90aHJlc2hvbGQAAAQMbmV3BFR1cGRhdGVfZHJvcF90aHJlc2hvbGQAAAQMbmV3BFx1cGRhdGVfcmVzdW1lX3RocmVzaG9sZAAABAxuZXcEAqAgT3ZlcmZsb3cAAQU0VW5pbXBsZW1lbnRlZAABBWBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAQVkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgABBTBMb2NhdGlvbkZ1bGwAAQVUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAEFJEJhZE9yaWdpbgABBTxJbnZhbGlkTG9jYXRpb24AAQU0QXNzZXROb3RGb3VuZAABBVRGYWlsZWRUb1RyYW5zYWN0QXNzZXQAAQU8Tm90V2l0aGRyYXdhYmxlAAEFSExvY2F0aW9uQ2Fubm90SG9sZAABBVRFeGNlZWRzTWF4TWVzc2FnZVNpemUAAQVYRGVzdGluYXRpb25VbnN1cHBvcnRlZAABBSRUcmFuc3BvcnQAAQUoVW5yb3V0YWJsZQABBTBVbmtub3duQ2xhaW0AAQU4RmFpbGVkVG9EZWNvZGUAAQVATWF4V2VpZ2h0SW52YWxpZAABBThOb3RIb2xkaW5nRmVlcwABBTBUb29FeHBlbnNpdmUAAQUQVHJhcAEIQEV4cGVjdGF0aW9uRmFsc2UAAQU4UGFsbGV0Tm90Rm91bmQAAQUwTmFtZU1pc21hdGNoAAEFTFZlcnNpb25JbmNvbXBhdGlibGUAAQVQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAAQUsRXhwb3J0RXJyb3IAAQU4UmVhbmNob3JGYWlsZWQAAQUYTm9EZWFsAAEFKEZlZXNOb3RNZXQAAQUkTG9ja0Vycm9yAAEFME5vUGVybWlzc2lvbgABBShVbmFuY2hvcmVkAAEFOE5vdERlcG9zaXRhYmxlAAEFTFVuaGFuZGxlZFhjbVZlcnNpb24AAQVIV2VpZ2h0TGltaXRSZWFjaGVkARgcQmFycmllcgABBUxXZWlnaHROb3RDb21wdXRhYmxlAAEFREV4Y2VlZHNTdGFja0xpbWl0AAEFAwgESQMGTQMCGBBOdWxsAAEFGEFzc2V0cwGxATxFeGVjdXRpb25SZXN1bHQBUQMcVmVyc2lvbgEELFBhbGxldHNJbmZvAUUBOERpc3BhdGNoUmVzdWx0AUkBBqUBAAwsZGVzdGluYXRpb26lASBxdWVyeV9pZAgobWF4X3dlaWdodBgCEAxBbGwAAQUUQWxsT2YAAAgIaWSpAQxmdW5hAShBbGxDb3VudGVkAQQwQWxsT2ZDb3VudGVkAAAMCGlkqQEMZnVuYQEUY291bnQEAgggRGVmaW5pdGUBsQEQV2lsZAFhAwLANFdpdGhkcmF3QXNzZXQBsQFUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkAbEBWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQBsQE0UXVlcnlSZXNwb25zZQAAECBxdWVyeV9pZAggcmVzcG9uc2VVAyhtYXhfd2VpZ2h0GBxxdWVyaWVyWQM0VHJhbnNmZXJBc3NldAAACBhhc3NldHOxASxiZW5lZmljaWFyeaUBUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0AAAMGGFzc2V0c7EBEGRlc3SlAQx4Y21tAyBUcmFuc2FjdAAADCxvcmlnaW5fa2luZFUBWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QYEGNhbGwkZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QAAAwYc2VuZGVyBEBtYXhfbWVzc2FnZV9zaXplBDBtYXhfY2FwYWNpdHkETEhybXBDaGFubmVsQWNjZXB0ZWQAAAQkcmVjaXBpZW50BEhIcm1wQ2hhbm5lbENsb3NpbmcAAAwkaW5pdGlhdG9yBBhzZW5kZXIEJHJlY2lwaWVudAQsQ2xlYXJPcmlnaW4AAQU0RGVzY2VuZE9yaWdpbgGhASxSZXBvcnRFcnJvcgFdAzBEZXBvc2l0QXNzZXQAAAgYYXNzZXRzZQMsYmVuZWZpY2lhcnmlAUxEZXBvc2l0UmVzZXJ2ZUFzc2V0AAAMGGFzc2V0c2UDEGRlc3SlAQx4Y21tAzRFeGNoYW5nZUFzc2V0AAAMEGdpdmVlAxB3YW50sQEcbWF4aW1hbBRcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcAAAwYYXNzZXRzZQMccmVzZXJ2ZaUBDHhjbW0DQEluaXRpYXRlVGVsZXBvcnQAAAwYYXNzZXRzZQMQZGVzdKUBDHhjbW0DNFJlcG9ydEhvbGRpbmcAAAg0cmVzcG9uc2VfaW5mb10DGGFzc2V0c2UDMEJ1eUV4ZWN1dGlvbgAACBBmZWVzrQEwd2VpZ2h0X2xpbWl0bQE0UmVmdW5kU3VycGx1cwABBTxTZXRFcnJvckhhbmRsZXIBbQMsU2V0QXBwZW5kaXgBbQMoQ2xlYXJFcnJvcgABBShDbGFpbUFzc2V0AAAIGGFzc2V0c7EBGHRpY2tldKUBEFRyYXABCEBTdWJzY3JpYmVWZXJzaW9uAAAIIHF1ZXJ5X2lkCExtYXhfcmVzcG9uc2Vfd2VpZ2h0GEhVbnN1YnNjcmliZVZlcnNpb24AAQUkQnVybkFzc2V0AbEBLEV4cGVjdEFzc2V0AbEBMEV4cGVjdE9yaWdpbgFZAyxFeHBlY3RFcnJvcgFRA1BFeHBlY3RUcmFuc2FjdFN0YXR1cwFJASxRdWVyeVBhbGxldAAACCxtb2R1bGVfbmFtZSQ0cmVzcG9uc2VfaW5mb10DMEV4cGVjdFBhbGxldAAAFBRpbmRleAQQbmFtZSQsbW9kdWxlX25hbWUkLGNyYXRlX21ham9yBDxtaW5fY3JhdGVfbWlub3IEUFJlcG9ydFRyYW5zYWN0U3RhdHVzAV0DTENsZWFyVHJhbnNhY3RTdGF0dXMAAQU8VW5pdmVyc2FsT3JpZ2luAZ0BNEV4cG9ydE1lc3NhZ2UAAAwcbmV0d29ya5UBLGRlc3RpbmF0aW9uoQEMeGNtbQMkTG9ja0Fzc2V0AAAIFGFzc2V0rQEgdW5sb2NrZXKlASxVbmxvY2tBc3NldAAACBRhc3NldK0BGHRhcmdldKUBOE5vdGVVbmxvY2thYmxlAAAIFGFzc2V0rQEUb3duZXKlATRSZXF1ZXN0VW5sb2NrAAAIFGFzc2V0rQEYbG9ja2VypQEsU2V0RmVlc01vZGUAAAQwaml0X3dpdGhkcmF3FCBTZXRUb3BpYwEgKENsZWFyVG9waWMAAQUsQWxpYXNPcmlnaW4BpQE8VW5wYWlkRXhlY3V0aW9uAAAIMHdlaWdodF9saW1pdG0BMGNoZWNrX29yaWdpblkDBGkDAAIYEE51bGwAAQUYQXNzZXRzAbkBPEV4ZWN1dGlvblJlc3VsdAFRAxxWZXJzaW9uAQQsUGFsbGV0c0luZm8BRQE4RGlzcGF0Y2hSZXN1bHQBSQECEAxBbGwAAQUUQWxsT2YAAAgIaWSlAQxmdW5hAShBbGxDb3VudGVkAQQwQWxsT2ZDb3VudGVkAAAMCGlkpQEMZnVuYQEUY291bnQEAgggRGVmaW5pdGUBuQEQV2lsZAF1AwLANFdpdGhkcmF3QXNzZXQBuQFUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkAbkBWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQBuQE0UXVlcnlSZXNwb25zZQAAECBxdWVyeV9pZAggcmVzcG9uc2VxAyhtYXhfd2VpZ2h0GBxxdWVyaWVyWQM0VHJhbnNmZXJBc3NldAAACBhhc3NldHO5ASxiZW5lZmljaWFyeaUBUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0AAAMGGFzc2V0c7kBEGRlc3SlAQx4Y22BAyBUcmFuc2FjdAAADCxvcmlnaW5fa2luZFUBWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QYEGNhbGwkZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QAAAwYc2VuZGVyBEBtYXhfbWVzc2FnZV9zaXplBDBtYXhfY2FwYWNpdHkETEhybXBDaGFubmVsQWNjZXB0ZWQAAAQkcmVjaXBpZW50BEhIcm1wQ2hhbm5lbENsb3NpbmcAAAwkaW5pdGlhdG9yBBhzZW5kZXIEJHJlY2lwaWVudAQsQ2xlYXJPcmlnaW4AAQU0RGVzY2VuZE9yaWdpbgGhASxSZXBvcnRFcnJvcgFdAzBEZXBvc2l0QXNzZXQAAAgYYXNzZXRzeQMsYmVuZWZpY2lhcnmlAUxEZXBvc2l0UmVzZXJ2ZUFzc2V0AAAMGGFzc2V0c3kDEGRlc3SlAQx4Y22BAzRFeGNoYW5nZUFzc2V0AAAMEGdpdmV5AxB3YW50uQEcbWF4aW1hbBRcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcAAAwYYXNzZXRzeQMccmVzZXJ2ZaUBDHhjbYEDQEluaXRpYXRlVGVsZXBvcnQAAAwYYXNzZXRzeQMQZGVzdKUBDHhjbYEDNFJlcG9ydEhvbGRpbmcAAAg0cmVzcG9uc2VfaW5mb10DGGFzc2V0c3kDMEJ1eUV4ZWN1dGlvbgAACBBmZWVztQEwd2VpZ2h0X2xpbWl0bQE0UmVmdW5kU3VycGx1cwABBTxTZXRFcnJvckhhbmRsZXIBgQMsU2V0QXBwZW5kaXgBgQMoQ2xlYXJFcnJvcgABBShDbGFpbUFzc2V0AAAIGGFzc2V0c7kBGHRpY2tldKUBEFRyYXABCEBTdWJzY3JpYmVWZXJzaW9uAAAIIHF1ZXJ5X2lkCExtYXhfcmVzcG9uc2Vfd2VpZ2h0GEhVbnN1YnNjcmliZVZlcnNpb24AAQUkQnVybkFzc2V0AbkBLEV4cGVjdEFzc2V0AbkBMEV4cGVjdE9yaWdpbgFZAyxFeHBlY3RFcnJvcgFRA1BFeHBlY3RUcmFuc2FjdFN0YXR1cwFJASxRdWVyeVBhbGxldAAACCxtb2R1bGVfbmFtZSQ0cmVzcG9uc2VfaW5mb10DMEV4cGVjdFBhbGxldAAAFBRpbmRleAQQbmFtZSQsbW9kdWxlX25hbWUkLGNyYXRlX21ham9yBDxtaW5fY3JhdGVfbWlub3IEUFJlcG9ydFRyYW5zYWN0U3RhdHVzAV0DTENsZWFyVHJhbnNhY3RTdGF0dXMAAQU8VW5pdmVyc2FsT3JpZ2luAZ0BNEV4cG9ydE1lc3NhZ2UAAAwcbmV0d29ya5UBLGRlc3RpbmF0aW9uoQEMeGNtgQMkTG9ja0Fzc2V0AAAIFGFzc2V0tQEgdW5sb2NrZXKlASxVbmxvY2tBc3NldAAACBRhc3NldLUBGHRhcmdldKUBOE5vdGVVbmxvY2thYmxlAAAIFGFzc2V0tQEUb3duZXKlATRSZXF1ZXN0VW5sb2NrAAAIFGFzc2V0tQEYbG9ja2VypQEsU2V0RmVlc01vZGUAAAQwaml0X3dpdGhkcmF3FCBTZXRUb3BpYwEgKENsZWFyVG9waWMAAQUsQWxpYXNPcmlnaW4BpQE8VW5wYWlkRXhlY3V0aW9uAAAIMHdlaWdodF9saW1pdG0BMGNoZWNrX29yaWdpblkDBH0DAAIMCFYzAW0DCFY0AYEDCFY1AY0BAhAgVGVsZXBvcnQAAQUwTG9jYWxSZXNlcnZlAAEFSERlc3RpbmF0aW9uUmVzZXJ2ZQABBTRSZW1vdGVSZXNlcnZlAcEBAgwIVjMBqQEIVjQBpQEIVjUBHQECRBBzZW5kAAAIEGRlc3TBARxtZXNzYWdlhQM8dGVsZXBvcnRfYXNzZXRzAAAQEGRlc3TBASxiZW5lZmljaWFyecEBGGFzc2V0c70BOGZlZV9hc3NldF9pdGVtBFxyZXNlcnZlX3RyYW5zZmVyX2Fzc2V0cwAAEBBkZXN0wQEsYmVuZWZpY2lhcnnBARhhc3NldHO9AThmZWVfYXNzZXRfaXRlbQQcZXhlY3V0ZQAACBxtZXNzYWdlhQMobWF4X3dlaWdodBhEZm9yY2VfeGNtX3ZlcnNpb24AAAggbG9jYXRpb24dARx2ZXJzaW9uBGRmb3JjZV9kZWZhdWx0X3hjbV92ZXJzaW9uAAAERG1heWJlX3hjbV92ZXJzaW9u8QF4Zm9yY2Vfc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5AAAEIGxvY2F0aW9uwQGAZm9yY2VfdW5zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkAAAQgbG9jYXRpb27BAXxsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzAAAUEGRlc3TBASxiZW5lZmljaWFyecEBGGFzc2V0c70BOGZlZV9hc3NldF9pdGVtBDB3ZWlnaHRfbGltaXRtAVxsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0cwAAFBBkZXN0wQEsYmVuZWZpY2lhcnnBARhhc3NldHO9AThmZWVfYXNzZXRfaXRlbQQwd2VpZ2h0X2xpbWl0bQFAZm9yY2Vfc3VzcGVuc2lvbgAABCRzdXNwZW5kZWQUPHRyYW5zZmVyX2Fzc2V0cwAAFBBkZXN0wQEsYmVuZWZpY2lhcnnBARhhc3NldHO9AThmZWVfYXNzZXRfaXRlbQQwd2VpZ2h0X2xpbWl0bQEwY2xhaW1fYXNzZXRzAAAIGGFzc2V0c70BLGJlbmVmaWNpYXJ5wQGMdHJhbnNmZXJfYXNzZXRzX3VzaW5nX3R5cGVfYW5kX3RoZW4AABwQZGVzdMEBGGFzc2V0c70BUGFzc2V0c190cmFuc2Zlcl90eXBliQM4cmVtb3RlX2ZlZXNfaWSNA0hmZWVzX3RyYW5zZmVyX3R5cGWJA0hjdXN0b21feGNtX29uX2Rlc3SFAzB3ZWlnaHRfbGltaXRtAVBhZGRfYXV0aG9yaXplZF9hbGlhcwAACBxhbGlhc2VywQEcZXhwaXJlc8UBXHJlbW92ZV9hdXRob3JpemVkX2FsaWFzAAAEHGFsaWFzZXLBAXRyZW1vdmVfYWxsX2F1dGhvcml6ZWRfYWxpYXNlcwABBQIIJHJlYXBfcGFnZQAACDhtZXNzYWdlX29yaWdpbtEBKHBhZ2VfaW5kZXgESGV4ZWN1dGVfb3ZlcndlaWdodAAAEDhtZXNzYWdlX29yaWdpbtEBEHBhZ2UEFGluZGV4BDB3ZWlnaHRfbGltaXQYAggwY3JlYXRlX2NsYWltAAAEEGhhc2ggMHJldm9rZV9jbGFpbQAABBBoYXNoIAQIARACNDBldGhfdHJhbnNhY3QAAAQccGF5bG9hZCQQY2FsbAAAFBBkZXN07BR2YWx1ZQgwd2VpZ2h0X2xpbWl0GFRzdG9yYWdlX2RlcG9zaXRfbGltaXQIEGRhdGEkLGluc3RhbnRpYXRlAAAYFHZhbHVlCDB3ZWlnaHRfbGltaXQYVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgkY29kZV9oYXNoIBBkYXRhJBBzYWx0kFRpbnN0YW50aWF0ZV93aXRoX2NvZGUAABgUdmFsdWUIMHdlaWdodF9saW1pdBhUc3RvcmFnZV9kZXBvc2l0X2xpbWl0CBBjb2RlJBBkYXRhJBBzYWx0kGRldGhfaW5zdGFudGlhdGVfd2l0aF9jb2RlAAAgFHZhbHVlnQMwd2VpZ2h0X2xpbWl0GDRldGhfZ2FzX2xpbWl0nQMQY29kZSQQZGF0YSRMdHJhbnNhY3Rpb25fZW5jb2RlZCRMZWZmZWN0aXZlX2dhc19wcmljZZ0DLGVuY29kZWRfbGVuBCBldGhfY2FsbAAAIBBkZXN07BR2YWx1ZZ0DMHdlaWdodF9saW1pdBg0ZXRoX2dhc19saW1pdJ0DEGRhdGEkTHRyYW5zYWN0aW9uX2VuY29kZWQkTGVmZmVjdGl2ZV9nYXNfcHJpY2WdAyxlbmNvZGVkX2xlbgRIZXRoX3N1YnN0cmF0ZV9jYWxsAAAIEGNhbGylA0x0cmFuc2FjdGlvbl9lbmNvZGVkJCx1cGxvYWRfY29kZQAACBBjb2RlJFRzdG9yYWdlX2RlcG9zaXRfbGltaXQILHJlbW92ZV9jb2RlAAAEJGNvZGVfaGFzaCAgc2V0X2NvZGUAAAgQZGVzdOwkY29kZV9oYXNoICxtYXBfYWNjb3VudAABBTR1bm1hcF9hY2NvdW50AAEFcGRpc3BhdGNoX2FzX2ZhbGxiYWNrX2FjY291bnQAAAQQY2FsbKUDAjgYU3lzdGVtASkDPFBhcmFjaGFpblN5c3RlbQEtAyRUaW1lc3RhbXABMQM0UGFyYWNoYWluSW5mbwG4IEJhbGFuY2VzATUDEFN1ZG8BOQNEQ29sbGF0b3JTZWxlY3Rpb24BPQMcU2Vzc2lvbgFBAyRYY21wUXVldWUBRQMsUG9sa2Fkb3RYY20BkQMoQ3VtdWx1c1hjbQG4ME1lc3NhZ2VRdWV1ZQGVAzhUZW1wbGF0ZVBhbGxldAGZAxhSZXZpdmUBoQMACAx3aG8AHGRlcG9zaXQIBKkDAAMIACAEsQMAAwgoJAMICAQEBAACCAhPawABBSRTdXNwZW5kZWQAAQUAFCRyZWNpcGllbnQEFHN0YXRlxQM0c2lnbmFsc19leGlzdBQsZmlyc3RfaW5kZXgEKGxhc3RfaW5kZXgEBMkDAAMIBAQADERzdXNwZW5kX3RocmVzaG9sZAQ4ZHJvcF90aHJlc2hvbGQEQHJlc3VtZV90aHJlc2hvbGQEBsEBBQEIBt0DAgwIVjMBVQMIVjQBcQMIVjUBTQECDBxQZW5kaW5nAAAQJHJlc3BvbmRlcsEBTG1heWJlX21hdGNoX3F1ZXJpZXLZAzBtYXliZV9ub3RpZnnhAxx0aW1lb3V0BDxWZXJzaW9uTm90aWZpZXIAAAgYb3JpZ2luwQEkaXNfYWN0aXZlFBRSZWFkeQAACCByZXNwb25zZeUDCGF0BAMIBMEBAwwIGAQDCMEBBAT1AwACEFxNaWdyYXRlU3VwcG9ydGVkVmVyc2lvbgABBVxNaWdyYXRlVmVyc2lvbk5vdGlmaWVycwABBVBOb3RpZnlDdXJyZW50VGFyZ2V0cwH5AWhNaWdyYXRlQW5kTm90aWZ5T2xkVGFyZ2V0cwABBQMMBACNAwMIuAgEBQQAABAYYW1vdW50CBRvd25lcsEBGGxvY2tlcsEBJGNvbnN1bWVycwkEAwgIwQEEEQQAAAggbG9jYXRpb27BARhleHBpcnnFAQQZBAAABCBhbGlhc2Vycx0EAAgQcHJldtEBEG5leHTRAQYlBAAYFGJlZ2luBAxlbmQEFGNvdW50BEByZWFkeV9uZWlnaGJvdXJzKQQ0bWVzc2FnZV9jb3VudAgQc2l6ZQgDCNEBBAAYJHJlbWFpbmluZwQ4cmVtYWluaW5nX3NpemUELGZpcnN0X2luZGV4BBRmaXJzdAQQbGFzdAQQaGVhcCQACBRvd25lcgAwYmxvY2tfbnVtYmVyBAIIDFB2bQABBQxFdm0AAQUAGBRvd25lcgAcZGVwb3NpdAggcmVmY291bnQIIGNvZGVfbGVuBCRjb2RlX3R5cGU9BERiZWhhdmlvdXJfdmVyc2lvbgQAIBx0cmllX2lkJCRjb2RlX2hhc2ggNHN0b3JhZ2VfYnl0ZXMENHN0b3JhZ2VfaXRlbXMEUHN0b3JhZ2VfYnl0ZV9kZXBvc2l0CFBzdG9yYWdlX2l0ZW1fZGVwb3NpdAhQc3RvcmFnZV9iYXNlX2RlcG9zaXQISGltbXV0YWJsZV9kYXRhX2xlbgQCCCBDb250cmFjdAFFBAxFT0EAAQUACDBhY2NvdW50X3R5cGVJBBBkdXN0BAAIOGluc2VydF9jb3VudGVyBDhkZWxldGVfY291bnRlcgQFAQEEBp0DAAgcYWRkcmVzc+wwc3RvcmFnZV9rZXlzCQIEXQQAABggY2hhaW5faWSdAxxhZGRyZXNz7BRub25jZZ0DIHlfcGFyaXR5nQMEcp0DBHOdAwRlBAAAMCxhY2Nlc3NfbGlzdGEESGF1dGhvcml6YXRpb25fbGlzdGkEIGNoYWluX2lknQMMZ2FznQMkZ2FzX3ByaWNlnQMUaW5wdXQkPG1heF9mZWVfcGVyX2dhc50DYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc50DFG5vbmNlnQMIdG/sGHIjdHlwZQQUdmFsdWWdAwAUZHRyYW5zYWN0aW9uXzc3MDJfdW5zaWduZWRtBARynQMEc50DBHZZBCB5X3Bhcml0eZ0DADAsYWNjZXNzX2xpc3RhBFRibG9iX3ZlcnNpb25lZF9oYXNoZXMJAiBjaGFpbl9pZJ0DDGdhc50DFGlucHV0JFBtYXhfZmVlX3Blcl9ibG9iX2dhc50DPG1heF9mZWVfcGVyX2dhc50DYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc50DFG5vbmNlnQMIdG/sGHIjdHlwZQQUdmFsdWWdAwAQZHRyYW5zYWN0aW9uXzQ4NDRfdW5zaWduZWR1BARynQMEc50DIHlfcGFyaXR5nQMG7AAsLGFjY2Vzc19saXN0YQQgY2hhaW5faWSdAwxnYXOdAyRnYXNfcHJpY2WdAxRpbnB1dCQ8bWF4X2ZlZV9wZXJfZ2FznQNgbWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FznQMUbm9uY2WdAwh0b30EGHIjdHlwZQQUdmFsdWWdAwAUZHRyYW5zYWN0aW9uXzE1NTlfdW5zaWduZWSBBARynQMEc50DBHZZBCB5X3Bhcml0eZ0DACQsYWNjZXNzX2xpc3RhBCBjaGFpbl9pZJ0DDGdhc50DJGdhc19wcmljZZ0DFGlucHV0JBRub25jZZ0DCHRvfQQYciN0eXBlBBR2YWx1ZZ0DABRkdHJhbnNhY3Rpb25fMjkzMF91bnNpZ25lZIkEBHKdAwRznQMEdlkEIHlfcGFyaXR5nQMAICBjaGFpbl9pZFkEDGdhc50DJGdhc19wcmljZZ0DFGlucHV0JBRub25jZZ0DCHRvfQQYciN0eXBlBBR2YWx1ZZ0DABBsdHJhbnNhY3Rpb25fbGVnYWN5X3Vuc2lnbmVkkQQEcp0DBHOdAwR2nQMCFFRUcmFuc2FjdGlvbjc3MDJTaWduZWQBcQRUVHJhbnNhY3Rpb240ODQ0U2lnbmVkAXkEVFRyYW5zYWN0aW9uMTU1OVNpZ25lZAGFBFRUcmFuc2FjdGlvbjI5MzBTaWduZWQBjQRcVHJhbnNhY3Rpb25MZWdhY3lTaWduZWQBlQQAGChibG9ja19oYXNoIDBibG9ja19udW1iZXKdAxBmcm9t7BBoYXNoIER0cmFuc2FjdGlvbl9pbmRleJ0DSHRyYW5zYWN0aW9uX3NpZ25lZJkEBJ0EAAIIGEhhc2hlcwEJAkBUcmFuc2FjdGlvbkluZm9zAaEEABAcYWRkcmVzc+wYYW1vdW50nQMUaW5kZXidAzx2YWxpZGF0b3JfaW5kZXidAwSpBAAAbEBiYXNlX2ZlZV9wZXJfZ2FznQM0YmxvYl9nYXNfdXNlZJ0DKGRpZmZpY3VsdHmdAzxleGNlc3NfYmxvYl9nYXOdAyhleHRyYV9kYXRhJCRnYXNfbGltaXSdAyBnYXNfdXNlZJ0DEGhhc2ggKGxvZ3NfYmxvb21VBBRtaW5lcuwgbWl4X2hhc2ggFG5vbmNlIQEYbnVtYmVynQNgcGFyZW50X2JlYWNvbl9ibG9ja19yb290kCxwYXJlbnRfaGFzaCA0cmVjZWlwdHNfcm9vdCA0cmVxdWVzdHNfaGFzaJAwc2hhXzNfdW5jbGVzIBBzaXplnQMoc3RhdGVfcm9vdCAkdGltZXN0YW1wnQNAdG90YWxfZGlmZmljdWx0eVkEMHRyYW5zYWN0aW9uc6UERHRyYW5zYWN0aW9uc19yb290IBh1bmNsZXMJAix3aXRoZHJhd2Fsc60EQHdpdGhkcmF3YWxzX3Jvb3QgAAggZ2FzX3VzZWSdA0xlZmZlY3RpdmVfZ2FzX3ByaWNlnQMEtQQAACgMa2V5JCh2YWx1ZV90eXBlBDRidWlsZGVyX3ZhbHVlJBRzdGFja1kCLHN0YXRlX21hc2tzwQModHJlZV9tYXNrc8EDKGhhc2hfbWFza3PBA0hzdG9yZWRfaW5fZGF0YWJhc2UUHHJscF9idWYkFGluZGV4CAAgYHRyYW5zYWN0aW9uX3Jvb3RfYnVpbGRlcr0EVHJlY2VpcHRzX3Jvb3RfYnVpbGRlcr0EQGJhc2VfZmVlX3Blcl9nYXOdAzxibG9ja19nYXNfbGltaXSdAyBnYXNfdXNlZJ0DKGxvZ3NfYmxvb21VBCR0eF9oYXNoZXMJAiBnYXNfaW5mb7kEBlECAAx0YWxsb3dfdW5saW1pdGVkX2NvbnRyYWN0X3NpemUUPGJ5cGFzc19laXBfMzYwNxQgcHZtX2xvZ3MUAAgYaGVhZGVyvQIoZXh0cmluc2ljc1kCAgg0QWxsRXh0cmluc2ljcwABBTRPbmx5SW5oZXJlbnRzAAEFAAgYcHJlZml4JQEYc3VmZml4JQECDDhOb3RJbXBsZW1lbnRlZAABBSBOb3RGb3VuZAHVBBRDb2RlYwABBQck2QQCNBBDYWxsAAEFHFBheW1lbnQAAQUYRnV0dXJlAAEFFFN0YWxlAAEFIEJhZFByb29mAAEFREFuY2llbnRCaXJ0aEJsb2NrAAEFREV4aGF1c3RzUmVzb3VyY2VzAAEFGEN1c3RvbQEEMEJhZE1hbmRhdG9yeQABBUxNYW5kYXRvcnlWYWxpZGF0aW9uAAEFJEJhZFNpZ25lcgABBVRJbmRldGVybWluYXRlSW1wbGljaXQAAQU0VW5rbm93bk9yaWdpbgABBQIMMENhbm5vdExvb2t1cAABBUxOb1Vuc2lnbmVkVmFsaWRhdG9yAAEFGEN1c3RvbQEEAggcSW52YWxpZAHhBBxVbmtub3duAeUEB7zpBAMIIQEkBPEEAAAMEG9rYXkULGZhdGFsX2Vycm9yFBhlcnJvcnP1BAIMHEluQmxvY2sAAQUUTG9jYWwAAQUgRXh0ZXJuYWwAAQUAFCBwcmlvcml0eQggcmVxdWlyZXNZAiBwcm92aWRlc1kCJGxvbmdldml0eQgkcHJvcGFnYXRlFAcBBekEAwgkKAQJBQAGDQUADBh3ZWlnaHQYFGNsYXNzOCxwYXJ0aWFsX2ZlZQgADCBiYXNlX2ZlZQgcbGVuX2ZlZQhMYWRqdXN0ZWRfd2VpZ2h0X2ZlZQgGGQUACDRpbmNsdXNpb25fZmVlHQUMdGlwCAAYPHVwd2FyZF9tZXNzYWdlc1kCTGhvcml6b250YWxfbWVzc2FnZXO5AkxuZXdfdmFsaWRhdGlvbl9jb2Rl+QFscHJvY2Vzc2VkX2Rvd253YXJkX21lc3NhZ2VzBDhocm1wX3dhdGVybWFyawQkaGVhZF9kYXRhJAIMFENoYWluAAEFHE5ldHdvcmsAAQUUTG9jYWwAAQUACCRtYXhfY291bnQEIG1heF9zaXplBAIMIEJhZFByb29mAAEFHE5vUHJvb2YAAQU0SW50ZXJuYWxFcnJvcgABBQctBTEFB7glAgYlAgQlAgACCBhSZWZ1bmQBCBhDaGFyZ2UBCAAIFGZsYWdzBBBkYXRhJAdJBYgAGDx3ZWlnaHRfY29uc3VtZWQYPHdlaWdodF9yZXF1aXJlZBg8c3RvcmFnZV9kZXBvc2l0RQVMbWF4X3N0b3JhZ2VfZGVwb3NpdEUFMGdhc19jb25zdW1lZAgYcmVzdWx0TQUCCBhVcGxvYWQBJCBFeGlzdGluZwEgAAgYcmVzdWx0SQUQYWRkcuwHWQWIABg8d2VpZ2h0X2NvbnN1bWVkGDx3ZWlnaHRfcmVxdWlyZWQYPHN0b3JhZ2VfZGVwb3NpdEUFTG1heF9zdG9yYWdlX2RlcG9zaXRFBTBnYXNfY29uc3VtZWQIGHJlc3VsdF0FBmEEAAgUaW5wdXT5ARBkYXRh+QEAQCxhY2Nlc3NfbGlzdGUFSGF1dGhvcml6YXRpb25fbGlzdGkEVGJsb2JfdmVyc2lvbmVkX2hhc2hlcwkCFGJsb2JzWQIgY2hhaW5faWRZBBBmcm9tfQQMZ2FzWQQkZ2FzX3ByaWNlWQQUaW5wdXRpBVBtYXhfZmVlX3Blcl9ibG9iX2dhc1kEPG1heF9mZWVfcGVyX2dhc1kEYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc1kEFG5vbmNlWQQIdG99BBhyI3R5cGXxARR2YWx1ZVkEABQ8d2VpZ2h0X3JlcXVpcmVkGDxzdG9yYWdlX2RlcG9zaXQITG1heF9zdG9yYWdlX2RlcG9zaXQIHGV0aF9nYXOdAxBkYXRhJAIIEERhdGEBJBxNZXNzYWdlASUCB3EFdQUACEh0aW1lc3RhbXBfb3ZlcnJpZGXFASByZXNlcnZlZBQACCRjb2RlX2hhc2ggHGRlcG9zaXQIB4EFiAIMLERvZXNudEV4aXN0AAEFREtleURlY29kaW5nRmFpbGVkAAEFSFN0b3JhZ2VXcml0ZUZhaWxlZAGIB/kBiQUACCR3aXRoX2xvZ3MUNG9ubHlfdG9wX2NhbGwUBpEFAAwkZGlmZl9tb2RlFDxkaXNhYmxlX3N0b3JhZ2UUMGRpc2FibGVfY29kZRQGmQUCCChDYWxsVHJhY2VyAZUFOFByZXN0YXRlVHJhY2VyAZ0FBLUFAAAQHGFkZHJlc3PsGHRvcGljcwkCEGRhdGEkIHBvc2l0aW9uBASpBQACGBBDYWxsAAEFKFN0YXRpY0NhbGwAAQUwRGVsZWdhdGVDYWxsAAEFGENyZWF0ZQABBRxDcmVhdGUyAAEFMFNlbGZkZXN0cnVjdAABBQA0EGZyb23sDGdhc50DIGdhc191c2VknQMIdG/sFGlucHV0JBhvdXRwdXQkFGVycm9yPQU0cmV2ZXJ0X3JlYXNvbj0FFGNhbGxzpQUQbG9nc60FFHZhbHVlWQQkY2FsbF90eXBlsQVAY2hpbGRfY2FsbF9jb3VudAQDCCT5AQS5BQAAEBxiYWxhbmNlWQQUbm9uY2XxARBjb2Rl+QEcc3RvcmFnZb0FAwjswQUExQUAAgggUHJlc3RhdGUByQUgRGlmZk1vZGUAAAgMcHJlyQUQcG9zdMkFAggQQ2FsbAG1BSBQcmVzdGF0ZQHNBQMIBNEFBNUFAAbRBQfRBXUFAggUVmFsdWUAAQUQRHVzdAABBQe9A+UFAgQwVG9vTWFueUNhbGxzAAEFAjgoQmFkQ29udGV4dAABBSxCYWREYXRhU2l6ZQABBUxUb29NYW55VHJhbnNhY3Rpb25zAAEFNE5vdENvbmZpZ3VyZWQAAQU8UmVuZXdlZE5vdEZvdW5kAAEFPFVuZXhwZWN0ZWRQcm9vZgABBTBJbnZhbGlkUHJvb2YAAQUwTWlzc2luZ1Byb29mAAEFQE1pc3NpbmdTdGF0ZURhdGEAAQUsRG91YmxlQ2hlY2sAAQU8UHJvb2ZOb3RDaGVja2VkAAEFVEF1dGhvcml6YXRpb25Ob3RGb3VuZAABBVxBdXRob3JpemF0aW9uTm90RXhwaXJlZAABBUhJbnZhbGlkQ29udGVudEhhc2gAAQUCUBhTeXN0ZW0BRDxQYXJhY2hhaW5TeXN0ZW0BSCRUaW1lc3RhbXAAAQU0UGFyYWNoYWluSW5mbwABBTRXZWlnaHRSZWNsYWltAAEFHFV0aWxpdHkB7QUgQmFsYW5jZXMBTEhUcmFuc2FjdGlvblBheW1lbnQAAQVIU2tpcEZlZWxlc3NQYXltZW50AAEFSFRyYW5zYWN0aW9uU3RvcmFnZQHxBShBdXRob3JzaGlwAAEFRENvbGxhdG9yU2VsZWN0aW9uAVQcU2Vzc2lvbgFYEEF1cmEAAQUcQXVyYUV4dAABBSRYY21wUXVldWUBXCxQb2xrYWRvdFhjbQFkKEN1bXVsdXNYY20AAQUwTWVzc2FnZVF1ZXVlAWgQU3VkbwFQAjwUT3RoZXIAAQUwQ2Fubm90TG9va3VwAAEFJEJhZE9yaWdpbgABBRhNb2R1bGUB9QVEQ29uc3VtZXJSZW1haW5pbmcAAQUsTm9Qcm92aWRlcnMAAQVAVG9vTWFueUNvbnN1bWVycwABBRRUb2tlbgF4KEFyaXRobWV0aWMBfDRUcmFuc2FjdGlvbmFsAYAkRXhoYXVzdGVkAAEFKENvcnJ1cHRpb24AAQUsVW5hdmFpbGFibGUAAQU4Um9vdE5vdEFsbG93ZWQAAQUQVHJpZQGEAiBARXh0cmluc2ljU3VjY2VzcwAABDRkaXNwYXRjaF9pbmZvQDxFeHRyaW5zaWNGYWlsZWQAAAg4ZGlzcGF0Y2hfZXJyb3L5BTRkaXNwYXRjaF9pbmZvQCxDb2RlVXBkYXRlZAABBShOZXdBY2NvdW50AAAEHGFjY291bnQANEtpbGxlZEFjY291bnQAAAQcYWNjb3VudAAgUmVtYXJrZWQAAAgYc2VuZGVyABBoYXNoIERVcGdyYWRlQXV0aG9yaXplZAAACCRjb2RlX2hhc2ggNGNoZWNrX3ZlcnNpb24UgFJlamVjdGVkSW52YWxpZEF1dGhvcml6ZWRVcGdyYWRlAAAIJGNvZGVfaGFzaCAUZXJyb3L5BQe4+QUCIEBCYXRjaEludGVycnVwdGVkAAAIFGluZGV4BBRlcnJvcvkFOEJhdGNoQ29tcGxldGVkAAEFYEJhdGNoQ29tcGxldGVkV2l0aEVycm9ycwABBTRJdGVtQ29tcGxldGVkAAEFKEl0ZW1GYWlsZWQAAAQUZXJyb3L5BTBEaXNwYXRjaGVkQXMAAAQYcmVzdWx0AQZESWZFbHNlTWFpblN1Y2Nlc3MAAQVQSWZFbHNlRmFsbGJhY2tDYWxsZWQAAAQobWFpbl9lcnJvcvkFAgQ4U3RvcmFnZUZlZUhvbGQAAQUCDEhUcmFuc2FjdGlvblN0b3JhZ2UBCQYcU2Vzc2lvbgGcLFBvbGthZG90WGNtAaACeBxFbmRvd2VkAAAIHGFjY291bnQAMGZyZWVfYmFsYW5jZQggRHVzdExvc3QAAAgcYWNjb3VudAAYYW1vdW50CCBUcmFuc2ZlcgAADBBmcm9tAAh0bwAYYW1vdW50CChCYWxhbmNlU2V0AAAIDHdobwAQZnJlZQggUmVzZXJ2ZWQAAAgMd2hvABhhbW91bnQIKFVucmVzZXJ2ZWQAAAgMd2hvABhhbW91bnQISFJlc2VydmVSZXBhdHJpYXRlZAAAEBBmcm9tAAh0bwAYYW1vdW50CEhkZXN0aW5hdGlvbl9zdGF0dXOYHERlcG9zaXQAAAgMd2hvABhhbW91bnQIIFdpdGhkcmF3AAAIDHdobwAYYW1vdW50CBxTbGFzaGVkAAAIDHdobwAYYW1vdW50CBhNaW50ZWQAAAgMd2hvABhhbW91bnQIME1pbnRlZENyZWRpdAAABBhhbW91bnQIGEJ1cm5lZAAACAx3aG8AGGFtb3VudAgoQnVybmVkRGVidAAABBhhbW91bnQIJFN1c3BlbmRlZAAACAx3aG8AGGFtb3VudAggUmVzdG9yZWQAAAgMd2hvABhhbW91bnQIIFVwZ3JhZGVkAAAEDHdobwAYSXNzdWVkAAAEGGFtb3VudAgkUmVzY2luZGVkAAAEGGFtb3VudAgYTG9ja2VkAAAIDHdobwAYYW1vdW50CCBVbmxvY2tlZAAACAx3aG8AGGFtb3VudAgYRnJvemVuAAAIDHdobwAYYW1vdW50CBhUaGF3ZWQAAAgMd2hvABhhbW91bnQITFRvdGFsSXNzdWFuY2VGb3JjZWQAAAgMb2xkCAxuZXcIEEhlbGQAAAwYcmVhc29uDQYMd2hvABhhbW91bnQIKEJ1cm5lZEhlbGQAAAwYcmVhc29uDQYMd2hvABhhbW91bnQIOFRyYW5zZmVyT25Ib2xkAAAQGHJlYXNvbg0GGHNvdXJjZQAQZGVzdAAYYW1vdW50CDxUcmFuc2ZlckFuZEhvbGQAABAYcmVhc29uDQYYc291cmNlABBkZXN0ACx0cmFuc2ZlcnJlZAggUmVsZWFzZWQAAAwYcmVhc29uDQYMd2hvABhhbW91bnQIKFVuZXhwZWN0ZWQBrAIQEFJvb3QAAQUYU2lnbmVkAQAQTm9uZQABBShBdXRob3JpemVkAAEFAggcQWNjb3VudAEAIFByZWltYWdlASACBChBdXRob3JpemVkAAAIDHdobwAUc2NvcGUZBgIIDFhjbQEdASBSZXNwb25zZQEdAQIIFFJlbGF5AAEFQFNpYmxpbmdQYXJhY2hhaW4BBAIQGHN5c3RlbQEVBkhUcmFuc2FjdGlvblN0b3JhZ2UBHQYsUG9sa2Fkb3RYY20BIQYoQ3VtdWx1c1hjbQElBgIEKEZlZVNraXBwZWQAAAQYb3JpZ2luKQYCJBhTdG9yZWQAAAwUaW5kZXgEMGNvbnRlbnRfaGFzaCAMY2lk+QEcUmVuZXdlZAAACBRpbmRleAQwY29udGVudF9oYXNoIDBQcm9vZkNoZWNrZWQAAQVEQWNjb3VudEF1dGhvcml6ZWQAAAwMd2hvADB0cmFuc2FjdGlvbnMEFGJ5dGVzCHRBY2NvdW50QXV0aG9yaXphdGlvblJlZnJlc2hlZAAABAx3aG8ASFByZWltYWdlQXV0aG9yaXplZAAACDBjb250ZW50X2hhc2ggIG1heF9zaXplCHhQcmVpbWFnZUF1dGhvcml6YXRpb25SZWZyZXNoZWQAAAQwY29udGVudF9oYXNoIIhFeHBpcmVkQWNjb3VudEF1dGhvcml6YXRpb25SZW1vdmVkAAAEDHdobwCMRXhwaXJlZFByZWltYWdlQXV0aG9yaXphdGlvblJlbW92ZWQAAAQwY29udGVudF9oYXNoIAIQFFN1ZGlkAAAELHN1ZG9fcmVzdWx0AQYoS2V5Q2hhbmdlZAAACAxvbGTADG5ldwAoS2V5UmVtb3ZlZAABBShTdWRvQXNEb25lAAAELHN1ZG9fcmVzdWx0AQYCOBhTeXN0ZW0B/QU8UGFyYWNoYWluU3lzdGVtAZQcVXRpbGl0eQEFBiBCYWxhbmNlcwERBkhUcmFuc2FjdGlvblBheW1lbnQBtEhTa2lwRmVlbGVzc1BheW1lbnQBLQZIVHJhbnNhY3Rpb25TdG9yYWdlATEGRENvbGxhdG9yU2VsZWN0aW9uAcwcU2Vzc2lvbgHQJFhjbXBRdWV1ZQHULFBvbGthZG90WGNtAckBKEN1bXVsdXNYY20BzQEwTWVzc2FnZVF1ZXVlAdkBEFN1ZG8BNQYADBRwaGFzZTQUZXZlbnQ5Bhh0b3BpY3MJAgQ9BgAACAxtYXg9AjxtYXhfaGVhZGVyX3NpemXxAQIgFGJhdGNoAAAEFGNhbGxzZQY0YXNfZGVyaXZhdGl2ZQAACBRpbmRleAQQY2FsbGEGJGJhdGNoX2FsbAAABBRjYWxsc2UGLGRpc3BhdGNoX2FzAAAIJGFzX29yaWdpbikGEGNhbGxhBixmb3JjZV9iYXRjaAAABBRjYWxsc2UGLHdpdGhfd2VpZ2h0AAAIEGNhbGxhBhh3ZWlnaHQYHGlmX2Vsc2UAAAgQbWFpbmEGIGZhbGxiYWNrYQZQZGlzcGF0Y2hfYXNfZmFsbGlibGUAAAgkYXNfb3JpZ2luKQYQY2FsbGEGAgwoQmxha2UyYjI1NgABBSBTaGEyXzI1NgABBSRLZWNjYWsyNTYAAQUACBRjb2RlYwgcaGFzaGluZ00GAAgUY2h1bmskFHByb29mWQICKBRzdG9yZQAABBBkYXRhJFRzdG9yZV93aXRoX2NpZF9jb25maWcAAAgMY2lkUQYQZGF0YSQUcmVuZXcAAAgUYmxvY2sEFGluZGV4BCxjaGVja19wcm9vZgAABBRwcm9vZlUGRGF1dGhvcml6ZV9hY2NvdW50AAAMDHdobwAwdHJhbnNhY3Rpb25zBBRieXRlcwhIYXV0aG9yaXplX3ByZWltYWdlAAAIMGNvbnRlbnRfaGFzaCAgbWF4X3NpemUIkHJlbW92ZV9leHBpcmVkX2FjY291bnRfYXV0aG9yaXphdGlvbgAABAx3aG8AlHJlbW92ZV9leHBpcmVkX3ByZWltYWdlX2F1dGhvcml6YXRpb24AAAQwY29udGVudF9oYXNoIHRyZWZyZXNoX2FjY291bnRfYXV0aG9yaXphdGlvbgAABAx3aG8AeHJlZnJlc2hfcHJlaW1hZ2VfYXV0aG9yaXphdGlvbgAABDBjb250ZW50X2hhc2ggAhQQc3VkbwAABBBjYWxsYQZUc3Vkb191bmNoZWNrZWRfd2VpZ2h0AAAIEGNhbGxhBhh3ZWlnaHQYHHNldF9rZXkAAAQMbmV3HQMcc3Vkb19hcwAACAx3aG8dAxBjYWxsYQYocmVtb3ZlX2tleQABBQI4GFN5c3RlbQEpAzxQYXJhY2hhaW5TeXN0ZW0BLQMkVGltZXN0YW1wATEDNFBhcmFjaGFpbkluZm8BuBxVdGlsaXR5AUkGIEJhbGFuY2VzATUDSFRyYW5zYWN0aW9uU3RvcmFnZQFZBkRDb2xsYXRvclNlbGVjdGlvbgE9AxxTZXNzaW9uAUEDJFhjbXBRdWV1ZQFFAyxQb2xrYWRvdFhjbQGRAyhDdW11bHVzWGNtAbgwTWVzc2FnZVF1ZXVlAZUDEFN1ZG8BXQYEYQYAAAgIaWQNBhhhbW91bnQIBGkGAAAIMHRyYW5zYWN0aW9ucwQUYnl0ZXMIAAgYZXh0ZW50cQYoZXhwaXJhdGlvbgQAGChjaHVua19yb290IDBjb250ZW50X2hhc2ggHGhhc2hpbmdNBiRjaWRfY29kZWMIEHNpemUEMGJsb2NrX2NodW5rcwQEeQYAAAggYWxpYXNlcnMdBBh0aWNrZXQIBwEG6QQACBBrZXlzJBRwcm9vZiQEjQMAAhg0VW5pbXBsZW1lbnRlZAABBWRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEFTFdlaWdodE5vdENvbXB1dGFibGUAAQVMVW5oYW5kbGVkWGNtVmVyc2lvbgABBTRBc3NldE5vdEZvdW5kAAEFKFVucm91dGFibGUAAQUHjQaRBgcYkQYHCJEGB70BkQYACDRhY3R1YWxfd2VpZ2h0WQEgcGF5c19mZWU8AAgkcG9zdF9pbmZvpQYUZXJyb3L5BQelBqkGBDkGAAaFAwSFAwADCMEBuQYEvQYAABBAZXhlY3V0aW9uX3Jlc3VsdK0GOGVtaXR0ZWRfZXZlbnRzsQYkbG9jYWxfeGNttQY4Zm9yd2FyZGVkX3hjbXPBBgIINFVuaW1wbGVtZW50ZWQAAQVkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABBQfFBskGAAxAZXhlY3V0aW9uX3Jlc3VsdOA4ZW1pdHRlZF9ldmVudHOxBjhmb3J3YXJkZWRfeGNtc8EGB9EGyQYCCCxVbnN1cHBvcnRlZAABBWRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEFBwDZBgIMCFYzAa0BCFY0AbUBCFY1ATEBAgh4VmVyc2lvbmVkQXNzZXRDb252ZXJzaW9uRmFpbGVkAAEFhFZlcnNpb25lZExvY2F0aW9uQ29udmVyc2lvbkZhaWxlZAABBQcU5QYCBHxMb2NhdGlvblZlcnNpb25Db252ZXJzaW9uRmFpbGVkAAEFBx0E7QYHFO0G"; +declare const content = "dQUAAAAQAQEFAAQBAQUAFAEBBQAcAAQAIAAEACQBAQUAIAEBBQAwAQEFABkCACAAIQIBAQUAKQIBAQUANAEBBQAtAgEBBQAYAQEFADkCAQEFAD0CAQEFAEECAQEFAE0CAQAEGHJlbWFyayQBAQUBAAQUcGFnZXMIAQEFAQAEEGNvZGUkAQEFAQAEFGl0ZW1zVQIBAQUBAAQQa2V5c1kCAQEFAQAIGHByZWZpeCQcc3Via2V5cwQBAQUBAAQkY29kZV9oYXNoIAEBBQEBBQEABDRkaXNwYXRjaF9pbmZvQAEBBQEACDhkaXNwYXRjaF9lcnJvcog0ZGlzcGF0Y2hfaW5mb0ABAQUBAQUBAQUBAAQcYWNjb3VudAABAQUBAAgYc2VuZGVyABBoYXNoIAEBBQEACCRjb2RlX2hhc2ggNGNoZWNrX3ZlcnNpb24UAQEFAQAIJGNvZGVfaGFzaCAUZXJyb3KIAQEFAQEFAQEFAHkCAQEFAH0CAQEFACQBAQUAgQIBAQUAiQIBAQUAcQIBAQUAWQIBAQUAnQIBAQUApQIBAQUArQIBAQUAsQIBAQUAuQIBAQUACAEACBBkYXRhxQJUaW5ib3VuZF9tZXNzYWdlc19kYXRh9QIBAQUBAAQcbWVzc2FnZSQBAQUBAQUBAARUcmVsYXlfY2hhaW5fYmxvY2tfbnVtBAEBBQEABBRjb3VudAQBAQUBAAgsd2VpZ2h0X3VzZWQYIGRtcV9oZWFkIAEBBQEABDBtZXNzYWdlX2hhc2iQAQAEDG5vdwgBAQUAAAAMAAAAAQMAAAAJAwAAABEDAAAAGQMBAAgQZGVzdB0DFHZhbHVlCAEBBQEADBhzb3VyY2UdAxBkZXN0HQMUdmFsdWUIAQEFAQAIEGRlc3QdAyhrZWVwX2FsaXZlFAEBBQEACAx3aG8dAxhhbW91bnQIAQEFAQAEDHdob8gBAQUBAAgMd2hvHQMgbmV3X2ZyZWUIAQEFAQAIJGRpcmVjdGlvbiEDFGRlbHRhCAEBBQEACBR2YWx1ZQgoa2VlcF9hbGl2ZRQBAQUBAQUBAAgcYWNjb3VudAAwZnJlZV9iYWxhbmNlCAEBBQEACBxhY2NvdW50ABhhbW91bnQIAQEFAQAMEGZyb20ACHRvABhhbW91bnQIAQEFAQAIDHdobwAQZnJlZQgBAQUBAAgMd2hvABhhbW91bnQIAQEFAQAQEGZyb20ACHRvABhhbW91bnQISGRlc3RpbmF0aW9uX3N0YXR1c5gBAQUBAAQYYW1vdW50CAEBBQEABAx3aG8AAQEFAQAIDG9sZAgMbmV3CAEBBQEADBhyZWFzb26oDHdobwAYYW1vdW50CAEBBQEAEBhyZWFzb26oGHNvdXJjZQAQZGVzdAAYYW1vdW50CAEBBQEAEBhyZWFzb26oGHNvdXJjZQAQZGVzdAAsdHJhbnNmZXJyZWQIAQEFAKwBAQUAJQMBAQUBAAwMd2hvAChhY3R1YWxfZmVlCAx0aXAIAQEFAAABAAQQY2FsbKUDAQEFAQAIEGNhbGylAxh3ZWlnaHQYAQEFAQAEDG5ldx0DAQEFAQAIDHdobx0DEGNhbGylAwEBBQEBBQEBBQEBBQEABCxzdWRvX3Jlc3VsdLwBAQUBAAgMb2xkwAxuZXcAAQEFAMgBAQUArQMAAAAEAQEFACEBAQAEDG5ld8gBAQUBAAQMbWF4BAEBBQEABBBib25kCAEBBQEABAx3aG8AAQEFAQAELG5ld19kZXBvc2l0CAEBBQEACBxkZXBvc2l0CBh0YXJnZXQAAQEFAQEFAQAENGludnVsbmVyYWJsZXPIAQEFAQAEKGFjY291bnRfaWQAAQEFAQAESGRlc2lyZWRfY2FuZGlkYXRlcwQBAQUBAAQsYm9uZF9hbW91bnQIAQEFAQAIKGFjY291bnRfaWQAHGRlcG9zaXQIAQEFAQAMDG9sZAAMbmV3ABxkZXBvc2l0CAEBBQC1AwEBBQAhAgAAACAAuQMAAAAAALgBAAgQa2V5cyAUcHJvb2YkAQEFAQEFAQAENHNlc3Npb25faW5kZXgEAQEFAQAEJHZhbGlkYXRvcgABAQUACQIBAQUAvQMBAQUAwQMBAQUAzQMA0QMAJAEBBQDVAwAEAAgBAAQMbmV3BAEBBQEBBQEABDBtZXNzYWdlX2hhc2ggAAgA6QMAIAAEAO0DAAQA7QMACADtAwDxAwEBBQD5AwEBBQD9AwABBAANBAAAABUEAQEFAI0BAMEBACEEAQEFABkBAQAIEGRlc3TBARxtZXNzYWdlhQMBAQUBABAQZGVzdMEBLGJlbmVmaWNpYXJ5wQEYYXNzZXRzvQE4ZmVlX2Fzc2V0X2l0ZW0EAQEFAQAIHG1lc3NhZ2WFAyhtYXhfd2VpZ2h0GAEBBQEACCBsb2NhdGlvbh0BHHZlcnNpb24EAQEFAQAERG1heWJlX3hjbV92ZXJzaW9u8QEBAQUBAAQgbG9jYXRpb27BAQEBBQEAFBBkZXN0wQEsYmVuZWZpY2lhcnnBARhhc3NldHO9AThmZWVfYXNzZXRfaXRlbQQwd2VpZ2h0X2xpbWl0bQEBAQUBAAQkc3VzcGVuZGVkFAEBBQEACBhhc3NldHO9ASxiZW5lZmljaWFyecEBAQEFAQAcEGRlc3TBARhhc3NldHO9AVBhc3NldHNfdHJhbnNmZXJfdHlwZYkDOHJlbW90ZV9mZWVzX2lkjQNIZmVlc190cmFuc2Zlcl90eXBliQNIY3VzdG9tX3hjbV9vbl9kZXN0hQMwd2VpZ2h0X2xpbWl0bQEBAQUBAAgcYWxpYXNlcsEBHGV4cGlyZXPFAQEBBQEABBxhbGlhc2VywQEBAQUBAQUBAAQcb3V0Y29tZeABAQUBABAYb3JpZ2luHQEsZGVzdGluYXRpb24dARxtZXNzYWdljQEobWVzc2FnZV9pZCABAQUBABAYb3JpZ2luHQEsZGVzdGluYXRpb24dARRlcnJvcpEBKG1lc3NhZ2VfaWQgAQEFAQAMGG9yaWdpbh0BFGVycm9y2ChtZXNzYWdlX2lkIAEBBQEACBhvcmlnaW4dASBxdWVyeV9pZAgBAQUBAAggcXVlcnlfaWQIIHJlc3BvbnNlTQEBAQUBAAwgcXVlcnlfaWQIMHBhbGxldF9pbmRleAQoY2FsbF9pbmRleAQBAQUBABQgcXVlcnlfaWQIMHBhbGxldF9pbmRleAQoY2FsbF9pbmRleAQ0YWN0dWFsX3dlaWdodBhMbWF4X2J1ZGdldGVkX3dlaWdodBgBAQUBAAwYb3JpZ2luHQEgcXVlcnlfaWQIRGV4cGVjdGVkX2xvY2F0aW9uUQEBAQUBAAQgcXVlcnlfaWQIAQEFAQAMEGhhc2ggGG9yaWdpbh0BGGFzc2V0c70BAQEFAQAQLGRlc3RpbmF0aW9uHQEYcmVzdWx0BBBjb3N0NQEobWVzc2FnZV9pZCABAQUBAAggbG9jYXRpb24dARx2ZXJzaW9uBAEBBQEADCBsb2NhdGlvbh0BIHF1ZXJ5X2lkCBRlcnJvctgBAQUBAAggbG9jYXRpb27BASBxdWVyeV9pZAgBAQUBABAYb3JpZ2luHQEgcXVlcnlfaWQIQGV4cGVjdGVkX3F1ZXJpZXIdAVBtYXliZV9hY3R1YWxfcXVlcmllclEBAQEFAQAMLGRlc3RpbmF0aW9uHQEQY29zdDUBKG1lc3NhZ2VfaWQgAQEFAQAIGHBheWluZx0BEGZlZXM1AQEBBQEABBx2ZXJzaW9uBAEBBQEADBxhbGlhc2VyHQEYdGFyZ2V0HQEYZXhwaXJ5xQEBAQUBAAgcYWxpYXNlch0BGHRhcmdldB0BAQEFAQAEGHRhcmdldB0BAQEFAQAIFGluZGV4BBRlcnJvcmABAQUAIAEBBQEDCCDgANEBAC0EAQEFANEBADEEADUEAQEFAFkBAQAIOG1lc3NhZ2Vfb3JpZ2lu0QEocGFnZV9pbmRleAQBAQUBABA4bWVzc2FnZV9vcmlnaW7RARBwYWdlBBRpbmRleAQwd2VpZ2h0X2xpbWl0GAEBBQEBBQEADAhpZCAYb3JpZ2lu0QEUZXJyb3LVAQEBBQEAEAhpZCAYb3JpZ2lu0QEsd2VpZ2h0X3VzZWQYHHN1Y2Nlc3MUAQEFAQAQCGlkIBhvcmlnaW7RAShwYWdlX2luZGV4BDRtZXNzYWdlX2luZGV4BAEBBQEACBhvcmlnaW7RARRpbmRleAQBAQUBAAgcYWNjb3VudAAkc3RhdGVtZW50/QEAIAA5BAEABBBoYXNoIAEBBQEBBQEACAx3aG8AEGhhc2ggACAAJAAgAEEEAOwATQQA7AAkAQEFAFEEAOwAAAEBBQCxBAEBBQC5BAEBBQDBBAEBBQDFBAEBBQDJBAEABBxwYXlsb2FkJAEBBQEAFBBkZXN07BR2YWx1ZQgwd2VpZ2h0X2xpbWl0GFRzdG9yYWdlX2RlcG9zaXRfbGltaXQIEGRhdGEkAQEFAQAYFHZhbHVlCDB3ZWlnaHRfbGltaXQYVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgkY29kZV9oYXNoIBBkYXRhJBBzYWx0kAEBBQEAGBR2YWx1ZQgwd2VpZ2h0X2xpbWl0GFRzdG9yYWdlX2RlcG9zaXRfbGltaXQIEGNvZGUkEGRhdGEkEHNhbHSQAQEFAQAgFHZhbHVlnQMwd2VpZ2h0X2xpbWl0GDRldGhfZ2FzX2xpbWl0nQMQY29kZSQQZGF0YSRMdHJhbnNhY3Rpb25fZW5jb2RlZCRMZWZmZWN0aXZlX2dhc19wcmljZZ0DLGVuY29kZWRfbGVuBAEBBQEAIBBkZXN07BR2YWx1ZZ0DMHdlaWdodF9saW1pdBg0ZXRoX2dhc19saW1pdJ0DEGRhdGEkTHRyYW5zYWN0aW9uX2VuY29kZWQkTGVmZmVjdGl2ZV9nYXNfcHJpY2WdAyxlbmNvZGVkX2xlbgQBAQUBAAgQY2FsbKUDTHRyYW5zYWN0aW9uX2VuY29kZWQkAQEFAQAIEGNvZGUkVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgBAQUBAAgQZGVzdOwkY29kZV9oYXNoIAEBBQEBBQEADCBjb250cmFjdOwQZGF0YSQYdG9waWNzCQIBAQUBAAggZGVwbG95ZXLsIGNvbnRyYWN07AEBBQEABDhkaXNwYXRjaF9lcnJvcogBAwAACAEDAAAJAgEDCCAIABQBAwAATQIBAwTNBAC4AQMEvQIA0QQBAwAAJAEDBAQA+QEBAwAAwQMBAwjVBCQA3QQBAwQkAO0EAQMAAL0CAQME9QQAWQIBAwjNBPUEAPkEAQMM/QQkIAAFBQEDBL0CALgBAwT5AQAkAQMEJAARBQEDBAAABAEDCCQEABUFAQMIJAQAIQUBAwQYAAgBAwQEAAgBAwilAwQAFQUBAwilAwQAIQUBAwS9AgAlBQEDCCkF/QEANQUBAwQkADkFAQMEPQUA+QEBAwAAQQUBAwAAsQQBAwSdAwCQAQMAALkEAQMAAJ0DAQME7ACdAwEDBOwABAEDGADsCFkBxQEkAFEFAQMcAAhZAcUBVQUkkABhBQEDBG0FAHkFAQMIbQV9BQB5BQEDDAAkxQEAhQUBAwjsIACNBQEDCOwkAI0FAQMIzQShBQDZBQEDDM0EBKEFAN0FAQMIbQWhBQDhBQEDAADsAQMEAADsAQME7AAAAQME7AAkAQMEnQMA6QUBAQUAUQYBAQUAVQYBAQUBAAg4ZGlzcGF0Y2hfZXJyb3IBBjRkaXNwYXRjaF9pbmZvQAEBBQEABBBoYXNoIAEBBQEACCRjb2RlX2hhc2ggFGVycm9yAQYBAQUAWQYBAQUAXQYBAAQUY2FsbHO1BgEBBQEACBRpbmRleAQQY2FsbLEGAQEFAQAIJGFzX29yaWdpbjUGEGNhbGyxBgEBBQEACBBjYWxssQYYd2VpZ2h0GAEBBQEACBBtYWlusQYgZmFsbGJhY2uxBgEBBQEBBQEACBRpbmRleAQUZXJyb3IBBgEBBQEABBRlcnJvcgEGAQEFAQAEGHJlc3VsdAkGAQEFAQAEKG1haW5fZXJyb3IBBgEBBQBpBgAkALgBAwAAuQYBAwAAwQYBAwAAWQIBAwAAxQYBAAQYY3Vyc29ybQYBAQUBAAwUaW5kZXgEMGlubmVyX2N1cnNvcvkBKHN0YXJ0ZWRfYXTxAQEBBQEABCBzZWxlY3RvcnEGAQEFAQEFAQAEKG1pZ3JhdGlvbnMEAQEFAQAEFGluZGV4BAEBBQEACBRpbmRleAQQdG9vawQBAQUBAAQsbmV4dF9jdXJzb3L5AQAAAM0GAQEFAQAMGHJlYXNvbhkGDHdobwAYYW1vdW50CAEBBQEAEBhyZWFzb24ZBhhzb3VyY2UAEGRlc3QAGGFtb3VudAgBAQUBABAYcmVhc29uGQYYc291cmNlABBkZXN0ACx0cmFuc2ZlcnJlZAgBAQUBAAQYb3JpZ2luNQYAJQYA1QYAAACRBgAEAOEGAQEFAOEGACAAHQIBAQUA5QYBAAQQZGF0YSQBAQUBAAgMY2lkfQYQZGF0YSQBAQUBAAwMd2hvADB0cmFuc2FjdGlvbnMEFGJ5dGVzCAEBBQEACDBjb250ZW50X2hhc2ggIG1heF9zaXplCAEBBQEABDBjb250ZW50X2hhc2ggAQEFAQAEFHByb29mhQYBAQUBAAgMd2hvABhidWRnZXSRBgEBBQEBBQEADBRpbmRleAQwY29udGVudF9oYXNoIAxjaWT5AQEBBQEADAx3aG8AMHRyYW5zYWN0aW9ucwQUYnl0ZXMIAQEFAQAIMGNvbnRlbnRfaGFzaCAgbWF4X3NpemUIAQEFAQAEMGNvbnRlbnRfaGFzaCABABAYc2lnbmVymQYkc2lnbmF0dXJlnQZAc3VibWl0X3RpbWVzdGFtcAgQZGF0YSQBAQUBABQYc2lnbmVymQYkc2lnbmF0dXJlnQZAc3VibWl0X3RpbWVzdGFtcAg8cmVjaXBpZW50c19oYXNoIBBkYXRhJAEBBQAgAOkGAQEFAPEGAQAEFGVudHJ5pQYBAQUBAQUBAAgUaW5kZXgEMGNvbnRlbnRfaGFzaCABAQUBAAwwY29udGVudF9oYXNoIAx3aG8AJHJlY3VycmluZxQBAQUBAAgwY29udGVudF9oYXNoIAx3aG8AAQEFAQAMFGluZGV4BDBjb250ZW50X2hhc2ggHGFjY291bnQAAQEFAQAIMGNvbnRlbnRfaGFzaCAcYWNjb3VudAABAQUBAAQQdXNlZAgBAQUBAAgQdXNlZAgMY2FwCAEBBQD5BgDBAQD9BgEABBBjYWxssQYBAQUBAAgMd2hvHQMQY2FsbLEGAQEFAQEFAQAELHN1ZG9fcmVzdWx0CQYBAwAABAEDBCQAAQcBAwgk+QEABQcBAwixBgQAFQUBAwixBgQAIQUBAwQEABEHAQMEhQMAFQcBAwgYjQMAGQcBAwzBAYUDjQMAHQcBAww1BrEGBABJBwEDCMEBhQMAUQcBAwTBAQBZBwEDCF0HwQEAZQcBAwTBAQBtBwEDCMEBwQEAcQcBAwQEAHkHAQMIAAQAFAEDECSZBp0GCAAkAQMEIAAUAQMEAACBBwEDCAAEABQBAwgApQYAFIUHAQEBAgEDABAQZnJlZQggcmVzZXJ2ZWQIGGZyb3plbggUZmxhZ3MIABQUbm9uY2UEJGNvbnN1bWVycwQkcHJvdmlkZXJzBCxzdWZmaWNpZW50cwQQZGF0YQwBAAAIIHJlZl90aW1lCChwcm9vZl9zaXplCAAMGG5vcm1hbBgsb3BlcmF0aW9uYWwYJG1hbmRhdG9yeRgFAYAFAAUBEAIUKFByZVJ1bnRpbWUAAwgoJCRDb25zZW5zdXMAAwgoJBBTZWFsAAMIKCQUT3RoZXIBJGRSdW50aW1lRW52aXJvbm1lbnRVcGRhdGVkAAEFBCwAAgw4QXBwbHlFeHRyaW5zaWMBBDBGaW5hbGl6YXRpb24AAQU4SW5pdGlhbGl6YXRpb24AAQUCDBhOb3JtYWwAAQUsT3BlcmF0aW9uYWwAAQUkTWFuZGF0b3J5AAEFAggMWWVzAAEFCE5vAAEFAAwYd2VpZ2h0GBRjbGFzczggcGF5c19mZWU8AiQ8SW52YWxpZFNwZWNOYW1lAAEFaFNwZWNWZXJzaW9uTmVlZHNUb0luY3JlYXNlAAEFdEZhaWxlZFRvRXh0cmFjdFJ1bnRpbWVWZXJzaW9uAAEFTE5vbkRlZmF1bHRDb21wb3NpdGUAAQU8Tm9uWmVyb1JlZkNvdW50AAEFMENhbGxGaWx0ZXJlZAABBWxNdWx0aUJsb2NrTWlncmF0aW9uc09uZ29pbmcAAQVETm90aGluZ0F1dGhvcml6ZWQAAQUwVW5hdXRob3JpemVkAAEFAhhMT3ZlcmxhcHBpbmdVcGdyYWRlcwABBVBQcm9oaWJpdGVkQnlQb2xrYWRvdAABBRhUb29CaWcAAQVoVmFsaWRhdGlvbkRhdGFOb3RBdmFpbGFibGUAAQV0SG9zdENvbmZpZ3VyYXRpb25Ob3RBdmFpbGFibGUAAQUwTm90U2NoZWR1bGVkAAEFAjA4VmVzdGluZ0JhbGFuY2UAAQVUTGlxdWlkaXR5UmVzdHJpY3Rpb25zAAEFTEluc3VmZmljaWVudEJhbGFuY2UAAQVIRXhpc3RlbnRpYWxEZXBvc2l0AAEFNEV4cGVuZGFiaWxpdHkAAQVcRXhpc3RpbmdWZXN0aW5nU2NoZWR1bGUAAQUsRGVhZEFjY291bnQAAQU8VG9vTWFueVJlc2VydmVzAAEFMFRvb01hbnlIb2xkcwABBThUb29NYW55RnJlZXplcwABBUxJc3N1YW5jZURlYWN0aXZhdGVkAAEFJERlbHRhWmVybwABBQIELFJlcXVpcmVTdWRvAAEFAkREVG9vTWFueUNhbmRpZGF0ZXMAAQVcVG9vRmV3RWxpZ2libGVDb2xsYXRvcnMAAQVAQWxyZWFkeUNhbmRpZGF0ZQABBTBOb3RDYW5kaWRhdGUAAQVQVG9vTWFueUludnVsbmVyYWJsZXMAAQVMQWxyZWFkeUludnVsbmVyYWJsZQABBTxOb3RJbnZ1bG5lcmFibGUAAQVcTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQAAQVYVmFsaWRhdG9yTm90UmVnaXN0ZXJlZAABBWxJbnNlcnRUb0NhbmRpZGF0ZUxpc3RGYWlsZWQAAQV0UmVtb3ZlRnJvbUNhbmRpZGF0ZUxpc3RGYWlsZWQAAQU0RGVwb3NpdFRvb0xvdwABBWRVcGRhdGVDYW5kaWRhdGVMaXN0RmFpbGVkAAEFQEluc3VmZmljaWVudEJvbmQAAQVQVGFyZ2V0SXNOb3RDYW5kaWRhdGUAAQVASWRlbnRpY2FsRGVwb3NpdAABBUBJbnZhbGlkVW5yZXNlcnZlAAEFAhQwSW52YWxpZFByb29mAAEFXE5vQXNzb2NpYXRlZFZhbGlkYXRvcklkAAEFNER1cGxpY2F0ZWRLZXkAAQUYTm9LZXlzAAEFJE5vQWNjb3VudAABBQIUOEJhZFF1ZXVlQ29uZmlnAAEFQEFscmVhZHlTdXNwZW5kZWQAAQU4QWxyZWFkeVJlc3VtZWQAAQV0VG9vTWFueUFjdGl2ZU91dGJvdW5kQ2hhbm5lbHMAAQUYVG9vQmlnAAEFAqQgT3ZlcmZsb3cAAQU0VW5pbXBsZW1lbnRlZAABBWBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAQVkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgABBTBMb2NhdGlvbkZ1bGwAAQVUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAEFJEJhZE9yaWdpbgABBTxJbnZhbGlkTG9jYXRpb24AAQU0QXNzZXROb3RGb3VuZAABBVRGYWlsZWRUb1RyYW5zYWN0QXNzZXQAAQU8Tm90V2l0aGRyYXdhYmxlAAEFSExvY2F0aW9uQ2Fubm90SG9sZAABBVRFeGNlZWRzTWF4TWVzc2FnZVNpemUAAQVYRGVzdGluYXRpb25VbnN1cHBvcnRlZAABBSRUcmFuc3BvcnQAAQUoVW5yb3V0YWJsZQABBTBVbmtub3duQ2xhaW0AAQU4RmFpbGVkVG9EZWNvZGUAAQVATWF4V2VpZ2h0SW52YWxpZAABBThOb3RIb2xkaW5nRmVlcwABBTBUb29FeHBlbnNpdmUAAQUQVHJhcAABBUBFeHBlY3RhdGlvbkZhbHNlAAEFOFBhbGxldE5vdEZvdW5kAAEFME5hbWVNaXNtYXRjaAABBUxWZXJzaW9uSW5jb21wYXRpYmxlAAEFUEhvbGRpbmdXb3VsZE92ZXJmbG93AAEFLEV4cG9ydEVycm9yAAEFOFJlYW5jaG9yRmFpbGVkAAEFGE5vRGVhbAABBShGZWVzTm90TWV0AAEFJExvY2tFcnJvcgABBTBOb1Blcm1pc3Npb24AAQUoVW5hbmNob3JlZAABBThOb3REZXBvc2l0YWJsZQABBTRUb29NYW55QXNzZXRzAAEFTFVuaGFuZGxlZFhjbVZlcnNpb24AAQVIV2VpZ2h0TGltaXRSZWFjaGVkAAEFHEJhcnJpZXIAAQVMV2VpZ2h0Tm90Q29tcHV0YWJsZQABBURFeGNlZWRzU3RhY2tMaW1pdAABBQJwLFVucmVhY2hhYmxlAAEFLFNlbmRGYWlsdXJlAAEFIEZpbHRlcmVkAAEFSFVud2VpZ2hhYmxlTWVzc2FnZQABBWBEZXN0aW5hdGlvbk5vdEludmVydGlibGUAAQUURW1wdHkAAQU4Q2Fubm90UmVhbmNob3IAAQU0VG9vTWFueUFzc2V0cwABBTRJbnZhbGlkT3JpZ2luAAEFKEJhZFZlcnNpb24AAQUsQmFkTG9jYXRpb24AAQU4Tm9TdWJzY3JpcHRpb24AAQVEQWxyZWFkeVN1YnNjcmliZWQAAQVYQ2Fubm90Q2hlY2tPdXRUZWxlcG9ydAABBShMb3dCYWxhbmNlAAEFMFRvb01hbnlMb2NrcwABBUxBY2NvdW50Tm90U292ZXJlaWduAAEFKEZlZXNOb3RNZXQAAQUwTG9ja05vdEZvdW5kAAEFFEluVXNlAAEFaEludmFsaWRBc3NldFVua25vd25SZXNlcnZlAAEFeEludmFsaWRBc3NldFVuc3VwcG9ydGVkUmVzZXJ2ZQABBTxUb29NYW55UmVzZXJ2ZXMAAQVgTG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlAAEFYFRvb01hbnlBdXRob3JpemVkQWxpYXNlcwABBTRFeHBpcmVzSW5QYXN0AAEFNEFsaWFzTm90Rm91bmQAAQWETG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlV2l0aEVycm9yAAAIFGluZGV4BBRlcnJvcmACJCxOb3RSZWFwYWJsZQABBRhOb1BhZ2UAAQUkTm9NZXNzYWdlAAEFQEFscmVhZHlQcm9jZXNzZWQAAQUYUXVldWVkAAEFSEluc3VmZmljaWVudFdlaWdodAABBWBUZW1wb3JhcmlseVVucHJvY2Vzc2FibGUAAQUsUXVldWVQYXVzZWQAAQVMUmVjdXJzaXZlRGlzYWxsb3dlZAABBQIMOEFscmVhZHlDbGFpbWVkAAEFNE5vdENsYWltT3duZXIAAQU0Q2xhaW1Ob3RGb3VuZAABBQLgPEludmFsaWRTY2hlZHVsZQABBUBJbnZhbGlkQ2FsbEZsYWdzAAEFIE91dE9mR2FzAAEFOFRyYW5zZmVyRmFpbGVkAAEFTE1heENhbGxEZXB0aFJlYWNoZWQAAQVAQ29udHJhY3ROb3RGb3VuZAABBTBDb2RlTm90Rm91bmQAAQVAQ29kZUluZm9Ob3RGb3VuZAABBSxPdXRPZkJvdW5kcwABBThEZWNvZGluZ0ZhaWxlZAABBTxDb250cmFjdFRyYXBwZWQAAQU0VmFsdWVUb29MYXJnZQABBWBUZXJtaW5hdGVkV2hpbGVSZWVudHJhbnQAAQU4SW5wdXRGb3J3YXJkZWQAAQU0VG9vTWFueVRvcGljcwABBUREdXBsaWNhdGVDb250cmFjdAABBVxUZXJtaW5hdGVkSW5Db25zdHJ1Y3RvcgABBUBSZWVudHJhbmNlRGVuaWVkAAEFPFJlZW50ZXJlZFBhbGxldAABBURTdGF0ZUNoYW5nZURlbmllZAABBXBTdG9yYWdlRGVwb3NpdE5vdEVub3VnaEZ1bmRzAAEFcFN0b3JhZ2VEZXBvc2l0TGltaXRFeGhhdXN0ZWQAAQUkQ29kZUluVXNlAAEFQENvbnRyYWN0UmV2ZXJ0ZWQAAQUwQ29kZVJlamVjdGVkAAEFMEJsb2JUb29MYXJnZQABBVBTdGF0aWNNZW1vcnlUb29MYXJnZQABBUhCYXNpY0Jsb2NrVG9vTGFyZ2UAAQVISW52YWxpZEluc3RydWN0aW9uAAEFeE1heERlbGVnYXRlRGVwZW5kZW5jaWVzUmVhY2hlZAABBWhEZWxlZ2F0ZURlcGVuZGVuY3lOb3RGb3VuZAABBXxEZWxlZ2F0ZURlcGVuZGVuY3lBbHJlYWR5RXhpc3RzAAEFhENhbm5vdEFkZFNlbGZBc0RlbGVnYXRlRGVwZW5kZW5jeQABBVRPdXRPZlRyYW5zaWVudFN0b3JhZ2UAAQU4SW52YWxpZFN5c2NhbGwAAQVMSW52YWxpZFN0b3JhZ2VGbGFncwABBTxFeGVjdXRpb25GYWlsZWQAAQVcQmFsYW5jZUNvbnZlcnNpb25GYWlsZWQAAQVYSW52YWxpZEltbXV0YWJsZUFjY2VzcwABBTxBY2NvdW50VW5tYXBwZWQAAQVQQWNjb3VudEFscmVhZHlNYXBwZWQAAQVkSW52YWxpZEdlbmVyaWNUcmFuc2FjdGlvbgABBVxSZWZjb3VudE92ZXJPclVuZGVyZmxvdwABBXBVbnN1cHBvcnRlZFByZWNvbXBpbGVBZGRyZXNzAAEFQENhbGxEYXRhVG9vTGFyZ2UAAQVIUmV0dXJuRGF0YVRvb0xhcmdlAAEFLEludmFsaWRKdW1wAAEFOFN0YWNrVW5kZXJmbG93AAEFNFN0YWNrT3ZlcmZsb3cAAQU0VHhGZWVPdmVyZHJhdwABBWhFdm1Db25zdHJ1Y3Rvck5vbkVtcHR5RGF0YQABBVhFdm1Db25zdHJ1Y3RlZEZyb21IYXNoAAEFbFN0b3JhZ2VSZWZ1bmROb3RFbm91Z2hGdW5kcwABBUxTdG9yYWdlUmVmdW5kTG9ja2VkAAEFYFByZWNvbXBpbGVEZWxlZ2F0ZURlbmllZAABBUxFY2RzYVJlY292ZXJ5RmFpbGVkAAEFAlAYU3lzdGVtAUQ8UGFyYWNoYWluU3lzdGVtAUgkVGltZXN0YW1wAAEFNFBhcmFjaGFpbkluZm8AAQU0V2VpZ2h0UmVjbGFpbQABBSBCYWxhbmNlcwFMSFRyYW5zYWN0aW9uUGF5bWVudAABBRBTdWRvAVAoQXV0aG9yc2hpcAABBURDb2xsYXRvclNlbGVjdGlvbgFUHFNlc3Npb24BWBBBdXJhAAEFHEF1cmFFeHQAAQUkWGNtcFF1ZXVlAVwsUG9sa2Fkb3RYY20BZChDdW11bHVzWGNtAAEFME1lc3NhZ2VRdWV1ZQFoJFN0YXRlbWVudAABBThUZW1wbGF0ZVBhbGxldAFsGFJldml2ZQFwAihARnVuZHNVbmF2YWlsYWJsZQABBTBPbmx5UHJvdmlkZXIAAQUwQmVsb3dNaW5pbXVtAAEFMENhbm5vdENyZWF0ZQABBTBVbmtub3duQXNzZXQAAQUYRnJvemVuAAEFLFVuc3VwcG9ydGVkAAEFQENhbm5vdENyZWF0ZUhvbGQAAQU0Tm90RXhwZW5kYWJsZQABBRxCbG9ja2VkAAEFAgwkVW5kZXJmbG93AAEFIE92ZXJmbG93AAEFOERpdmlzaW9uQnlaZXJvAAEFAggwTGltaXRSZWFjaGVkAAEFHE5vTGF5ZXIAAQUCOEBJbnZhbGlkU3RhdGVSb290AAEFSEluY29tcGxldGVEYXRhYmFzZQABBVBWYWx1ZUF0SW5jb21wbGV0ZUtleQABBTBEZWNvZGVyRXJyb3IAAQUsSW52YWxpZEhhc2gAAQUwRHVwbGljYXRlS2V5AAEFOEV4dHJhbmVvdXNOb2RlAAEFPEV4dHJhbmVvdXNWYWx1ZQABBVxFeHRyYW5lb3VzSGFzaFJlZmVyZW5jZQABBVRJbnZhbGlkQ2hpbGRSZWZlcmVuY2UAAQU0VmFsdWVNaXNtYXRjaAABBTxJbmNvbXBsZXRlUHJvb2YAAQUwUm9vdE1pc21hdGNoAAEFLERlY29kZUVycm9yAAEFAjwUT3RoZXIAAQUwQ2Fubm90TG9va3VwAAEFJEJhZE9yaWdpbgABBRhNb2R1bGUBdERDb25zdW1lclJlbWFpbmluZwABBSxOb1Byb3ZpZGVycwABBUBUb29NYW55Q29uc3VtZXJzAAEFFFRva2VuAXgoQXJpdGhtZXRpYwF8NFRyYW5zYWN0aW9uYWwBgCRFeGhhdXN0ZWQAAQUoQ29ycnVwdGlvbgABBSxVbmF2YWlsYWJsZQABBThSb290Tm90QWxsb3dlZAABBRBUcmllAYQCIEBFeHRyaW5zaWNTdWNjZXNzAAAENGRpc3BhdGNoX2luZm9APEV4dHJpbnNpY0ZhaWxlZAAACDhkaXNwYXRjaF9lcnJvcog0ZGlzcGF0Y2hfaW5mb0AsQ29kZVVwZGF0ZWQAAQUoTmV3QWNjb3VudAAABBxhY2NvdW50ADRLaWxsZWRBY2NvdW50AAAEHGFjY291bnQAIFJlbWFya2VkAAAIGHNlbmRlcgAQaGFzaCBEVXBncmFkZUF1dGhvcml6ZWQAAAgkY29kZV9oYXNoIDRjaGVja192ZXJzaW9uFIBSZWplY3RlZEludmFsaWRBdXRob3JpemVkVXBncmFkZQAACCRjb2RlX2hhc2ggFGVycm9yiAYgAhhgVmFsaWRhdGlvbkZ1bmN0aW9uU3RvcmVkAAEFZFZhbGlkYXRpb25GdW5jdGlvbkFwcGxpZWQAAARUcmVsYXlfY2hhaW5fYmxvY2tfbnVtBGxWYWxpZGF0aW9uRnVuY3Rpb25EaXNjYXJkZWQAAQVgRG93bndhcmRNZXNzYWdlc1JlY2VpdmVkAAAEFGNvdW50BGREb3dud2FyZE1lc3NhZ2VzUHJvY2Vzc2VkAAAILHdlaWdodF91c2VkGCBkbXFfaGVhZCBEVXB3YXJkTWVzc2FnZVNlbnQAAAQwbWVzc2FnZV9oYXNokAIIEEZyZWUAAQUgUmVzZXJ2ZWQAAQUCBBBLZXlzAAEFAgQ4QXV0aG9yaXplQWxpYXMAAQUCDGBDb2RlVXBsb2FkRGVwb3NpdFJlc2VydmUAAQVUU3RvcmFnZURlcG9zaXRSZXNlcnZlAAEFOEFkZHJlc3NNYXBwaW5nAAEFAgwcU2Vzc2lvbgGcLFBvbGthZG90WGNtAaAYUmV2aXZlAaQCCDhCYWxhbmNlVXBkYXRlZAABBVRGYWlsZWRUb011dGF0ZUFjY291bnQAAQUCeBxFbmRvd2VkAAAIHGFjY291bnQAMGZyZWVfYmFsYW5jZQggRHVzdExvc3QAAAgcYWNjb3VudAAYYW1vdW50CCBUcmFuc2ZlcgAADBBmcm9tAAh0bwAYYW1vdW50CChCYWxhbmNlU2V0AAAIDHdobwAQZnJlZQggUmVzZXJ2ZWQAAAgMd2hvABhhbW91bnQIKFVucmVzZXJ2ZWQAAAgMd2hvABhhbW91bnQISFJlc2VydmVSZXBhdHJpYXRlZAAAEBBmcm9tAAh0bwAYYW1vdW50CEhkZXN0aW5hdGlvbl9zdGF0dXOYHERlcG9zaXQAAAgMd2hvABhhbW91bnQIIFdpdGhkcmF3AAAIDHdobwAYYW1vdW50CBxTbGFzaGVkAAAIDHdobwAYYW1vdW50CBhNaW50ZWQAAAgMd2hvABhhbW91bnQIME1pbnRlZENyZWRpdAAABBhhbW91bnQIGEJ1cm5lZAAACAx3aG8AGGFtb3VudAgoQnVybmVkRGVidAAABBhhbW91bnQIJFN1c3BlbmRlZAAACAx3aG8AGGFtb3VudAggUmVzdG9yZWQAAAgMd2hvABhhbW91bnQIIFVwZ3JhZGVkAAAEDHdobwAYSXNzdWVkAAAEGGFtb3VudAgkUmVzY2luZGVkAAAEGGFtb3VudAgYTG9ja2VkAAAIDHdobwAYYW1vdW50CCBVbmxvY2tlZAAACAx3aG8AGGFtb3VudAgYRnJvemVuAAAIDHdobwAYYW1vdW50CBhUaGF3ZWQAAAgMd2hvABhhbW91bnQITFRvdGFsSXNzdWFuY2VGb3JjZWQAAAgMb2xkCAxuZXcIEEhlbGQAAAwYcmVhc29uqAx3aG8AGGFtb3VudAgoQnVybmVkSGVsZAAADBhyZWFzb26oDHdobwAYYW1vdW50CDhUcmFuc2Zlck9uSG9sZAAAEBhyZWFzb26oGHNvdXJjZQAQZGVzdAAYYW1vdW50CDxUcmFuc2ZlckFuZEhvbGQAABAYcmVhc29uqBhzb3VyY2UAEGRlc3QALHRyYW5zZmVycmVkCCBSZWxlYXNlZAAADBhyZWFzb26oDHdobwAYYW1vdW50CChVbmV4cGVjdGVkAawCBEhUcmFuc2FjdGlvbkZlZVBhaWQAAAwMd2hvAChhY3R1YWxfZmVlCAx0aXAIAQUHuIgGAAIQFFN1ZGlkAAAELHN1ZG9fcmVzdWx0vChLZXlDaGFuZ2VkAAAIDG9sZMAMbmV3AChLZXlSZW1vdmVkAAEFKFN1ZG9Bc0RvbmUAAAQsc3Vkb19yZXN1bHS8BAAAAihATmV3SW52dWxuZXJhYmxlcwAABDRpbnZ1bG5lcmFibGVzyERJbnZ1bG5lcmFibGVBZGRlZAAABChhY2NvdW50X2lkAExJbnZ1bG5lcmFibGVSZW1vdmVkAAAEKGFjY291bnRfaWQAUE5ld0Rlc2lyZWRDYW5kaWRhdGVzAAAESGRlc2lyZWRfY2FuZGlkYXRlcwRATmV3Q2FuZGlkYWN5Qm9uZAAABCxib25kX2Ftb3VudAg4Q2FuZGlkYXRlQWRkZWQAAAgoYWNjb3VudF9pZAAcZGVwb3NpdAhQQ2FuZGlkYXRlQm9uZFVwZGF0ZWQAAAgoYWNjb3VudF9pZAAcZGVwb3NpdAhAQ2FuZGlkYXRlUmVtb3ZlZAAABChhY2NvdW50X2lkAERDYW5kaWRhdGVSZXBsYWNlZAAADAxvbGQADG5ldwAcZGVwb3NpdAhoSW52YWxpZEludnVsbmVyYWJsZVNraXBwZWQAAAQoYWNjb3VudF9pZAACEChOZXdTZXNzaW9uAAAENHNlc3Npb25faW5kZXgEJE5ld1F1ZXVlZAABBURWYWxpZGF0b3JEaXNhYmxlZAAABCR2YWxpZGF0b3IASFZhbGlkYXRvclJlZW5hYmxlZAAABCR2YWxpZGF0b3IAAgQ8WGNtcE1lc3NhZ2VTZW50AAAEMG1lc3NhZ2VfaGFzaCACpCBPdmVyZmxvdwABBTRVbmltcGxlbWVudGVkAAEFYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgABBWRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAEFMExvY2F0aW9uRnVsbAABBVRMb2NhdGlvbk5vdEludmVydGlibGUAAQUkQmFkT3JpZ2luAAEFPEludmFsaWRMb2NhdGlvbgABBTRBc3NldE5vdEZvdW5kAAEFVEZhaWxlZFRvVHJhbnNhY3RBc3NldAABBTxOb3RXaXRoZHJhd2FibGUAAQVITG9jYXRpb25DYW5ub3RIb2xkAAEFVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQABBVhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAAEFJFRyYW5zcG9ydAABBShVbnJvdXRhYmxlAAEFMFVua25vd25DbGFpbQABBThGYWlsZWRUb0RlY29kZQABBUBNYXhXZWlnaHRJbnZhbGlkAAEFOE5vdEhvbGRpbmdGZWVzAAEFMFRvb0V4cGVuc2l2ZQABBRBUcmFwAQhARXhwZWN0YXRpb25GYWxzZQABBThQYWxsZXROb3RGb3VuZAABBTBOYW1lTWlzbWF0Y2gAAQVMVmVyc2lvbkluY29tcGF0aWJsZQABBVBIb2xkaW5nV291bGRPdmVyZmxvdwABBSxFeHBvcnRFcnJvcgABBThSZWFuY2hvckZhaWxlZAABBRhOb0RlYWwAAQUoRmVlc05vdE1ldAABBSRMb2NrRXJyb3IAAQUwTm9QZXJtaXNzaW9uAAEFKFVuYW5jaG9yZWQAAQU4Tm90RGVwb3NpdGFibGUAAQU0VG9vTWFueUFzc2V0cwABBUxVbmhhbmRsZWRYY21WZXJzaW9uAAEFSFdlaWdodExpbWl0UmVhY2hlZAEYHEJhcnJpZXIAAQVMV2VpZ2h0Tm90Q29tcHV0YWJsZQABBURFeGNlZWRzU3RhY2tMaW1pdAABBQAIFGluZGV4BBRlcnJvctgCDCBDb21wbGV0ZQAABBB1c2VkGChJbmNvbXBsZXRlAAAIEHVzZWQYFGVycm9y3BRFcnJvcgHcAiAkQnlHZW5lc2lzASAYQnlGb3JrAAAIMGJsb2NrX251bWJlcggoYmxvY2tfaGFzaCAgUG9sa2Fkb3QAAQUYS3VzYW1hAAEFIEV0aGVyZXVtAAAEIGNoYWluX2lkCCxCaXRjb2luQ29yZQABBSxCaXRjb2luQ2FzaAABBUBQb2xrYWRvdEJ1bGxldGluAAEFBuQFAVACKBBVbml0AAEFHE1vbmlrZXIBKBRJbmRleAEEJEV4ZWN1dGl2ZQABBSRUZWNobmljYWwAAQUsTGVnaXNsYXRpdmUAAQUgSnVkaWNpYWwAAQUcRGVmZW5zZQABBThBZG1pbmlzdHJhdGlvbgABBSBUcmVhc3VyeQABBQIUFFZvaWNlAAEFHE1lbWJlcnMAAAQUY291bnQEIEZyYWN0aW9uAAAIDG5vbQQUZGVub20EREF0TGVhc3RQcm9wb3J0aW9uAAAIDG5vbQQUZGVub20ESE1vcmVUaGFuUHJvcG9ydGlvbgAACAxub20EFGRlbm9tBAIoJFBhcmFjaGFpbgEELEFjY291bnRJZDMyAAAIHG5ldHdvcmvoCGlkIDhBY2NvdW50SW5kZXg2NAAACBxuZXR3b3Jr6BRpbmRleAgwQWNjb3VudEtleTIwAAAIHG5ldHdvcmvoDGtleew4UGFsbGV0SW5zdGFuY2UBBDBHZW5lcmFsSW5kZXgBCChHZW5lcmFsS2V5AAAIGGxlbmd0aAQQZGF0YSAkT25seUNoaWxkAAEFJFBsdXJhbGl0eQAACAhpZPAQcGFydPQ8R2xvYmFsQ29uc2Vuc3VzAeQE+AEIBPgBDAT4ARAE+AEUBPgBGAT4ARwE+AEgAiQQSGVyZQABBQhYMQH4CFgyAfwIWDMBAQEIWDQBBQEIWDUBCQEIWDYBDQEIWDcBEQEIWDgBFQEACBxwYXJlbnRzBCBpbnRlcmlvchkBBQEgBQFAAhgkVW5kZWZpbmVkAAEFFEluZGV4AQgYQXJyYXk0ASgYQXJyYXk4ASEBHEFycmF5MTYBJQEcQXJyYXkzMgEgAgggRnVuZ2libGUBCCxOb25GdW5naWJsZQEpAQAICGlkHQEMZnVuLQEEMQEAAwgE2AY5AQAYFGluZGV4BBBuYW1lJCxtb2R1bGVfbmFtZSQUbWFqb3IEFG1pbm9yBBRwYXRjaAQEQQEAAgwcU3VjY2VzcwABBRRFcnJvcgEkOFRydW5jYXRlZEVycm9yASQCGBBOdWxsAAEFGEFzc2V0cwE1ATxFeGVjdXRpb25SZXN1bHQBPQEcVmVyc2lvbgEELFBhbGxldHNJbmZvAUUBOERpc3BhdGNoUmVzdWx0AUkBBh0BAhAYTmF0aXZlAAEFQFNvdmVyZWlnbkFjY291bnQAAQUkU3VwZXJ1c2VyAAEFDFhjbQABBQYYAAwsZGVzdGluYXRpb24dASBxdWVyeV9pZAgobWF4X3dlaWdodBgCCCBGdW5naWJsZQABBSxOb25GdW5naWJsZQABBQIQDEFsbAABBRRBbGxPZgAACAhpZB0BDGZ1bmEBKEFsbENvdW50ZWQBBDBBbGxPZkNvdW50ZWQAAAwIaWQdAQxmdW5hARRjb3VudAQCCCBEZWZpbml0ZQE1ARBXaWxkAWUBAggkVW5saW1pdGVkAAEFHExpbWl0ZWQBGAIMIFRlbGVwb3J0AWkBOFJlc2VydmVEZXBvc2l0AWkBPFJlc2VydmVXaXRoZHJhdwFpAQZxAQRxAQAGGQECBDBBc3NldENsYWltZXIAAAQgbG9jYXRpb24dAQSBAQAC0DRXaXRoZHJhd0Fzc2V0ATUBVFJlc2VydmVBc3NldERlcG9zaXRlZAE1AVhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0ATUBNFF1ZXJ5UmVzcG9uc2UAABAgcXVlcnlfaWQIIHJlc3BvbnNlTQEobWF4X3dlaWdodBgccXVlcmllclEBNFRyYW5zZmVyQXNzZXQAAAgYYXNzZXRzNQEsYmVuZWZpY2lhcnkdAVBUcmFuc2ZlclJlc2VydmVBc3NldAAADBhhc3NldHM1ARBkZXN0HQEMeGNtjQEgVHJhbnNhY3QAAAwsb3JpZ2luX2tpbmRVAUxmYWxsYmFja19tYXhfd2VpZ2h0WQEQY2FsbCRkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAAADBhzZW5kZXIEQG1heF9tZXNzYWdlX3NpemUEMG1heF9jYXBhY2l0eQRMSHJtcENoYW5uZWxBY2NlcHRlZAAABCRyZWNpcGllbnQESEhybXBDaGFubmVsQ2xvc2luZwAADCRpbml0aWF0b3IEGHNlbmRlcgQkcmVjaXBpZW50BCxDbGVhck9yaWdpbgABBTREZXNjZW5kT3JpZ2luARkBLFJlcG9ydEVycm9yAV0BMERlcG9zaXRBc3NldAAACBhhc3NldHNpASxiZW5lZmljaWFyeR0BTERlcG9zaXRSZXNlcnZlQXNzZXQAAAwYYXNzZXRzaQEQZGVzdB0BDHhjbY0BNEV4Y2hhbmdlQXNzZXQAAAwQZ2l2ZWkBEHdhbnQ1ARxtYXhpbWFsFFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwAADBhhc3NldHNpARxyZXNlcnZlHQEMeGNtjQFASW5pdGlhdGVUZWxlcG9ydAAADBhhc3NldHNpARBkZXN0HQEMeGNtjQE0UmVwb3J0SG9sZGluZwAACDRyZXNwb25zZV9pbmZvXQEYYXNzZXRzaQEwQnV5RXhlY3V0aW9uAAAIEGZlZXMxATB3ZWlnaHRfbGltaXRtATRSZWZ1bmRTdXJwbHVzAAEFPFNldEVycm9ySGFuZGxlcgGNASxTZXRBcHBlbmRpeAGNAShDbGVhckVycm9yAAEFKENsYWltQXNzZXQAAAgYYXNzZXRzNQEYdGlja2V0HQEQVHJhcAEIQFN1YnNjcmliZVZlcnNpb24AAAggcXVlcnlfaWQITG1heF9yZXNwb25zZV93ZWlnaHQYSFVuc3Vic2NyaWJlVmVyc2lvbgABBSRCdXJuQXNzZXQBNQEsRXhwZWN0QXNzZXQBNQEwRXhwZWN0T3JpZ2luAVEBLEV4cGVjdEVycm9yAT0BUEV4cGVjdFRyYW5zYWN0U3RhdHVzAUkBLFF1ZXJ5UGFsbGV0AAAILG1vZHVsZV9uYW1lJDRyZXNwb25zZV9pbmZvXQEwRXhwZWN0UGFsbGV0AAAUFGluZGV4BBBuYW1lJCxtb2R1bGVfbmFtZSQsY3JhdGVfbWFqb3IEPG1pbl9jcmF0ZV9taW5vcgRQUmVwb3J0VHJhbnNhY3RTdGF0dXMBXQFMQ2xlYXJUcmFuc2FjdFN0YXR1cwABBTxVbml2ZXJzYWxPcmlnaW4B+DRFeHBvcnRNZXNzYWdlAAAMHG5ldHdvcmvkLGRlc3RpbmF0aW9uGQEMeGNtjQEkTG9ja0Fzc2V0AAAIFGFzc2V0MQEgdW5sb2NrZXIdASxVbmxvY2tBc3NldAAACBRhc3NldDEBGHRhcmdldB0BOE5vdGVVbmxvY2thYmxlAAAIFGFzc2V0MQEUb3duZXIdATRSZXF1ZXN0VW5sb2NrAAAIFGFzc2V0MQEYbG9ja2VyHQEsU2V0RmVlc01vZGUAAAQwaml0X3dpdGhkcmF3FCBTZXRUb3BpYwEgKENsZWFyVG9waWMAAQUsQWxpYXNPcmlnaW4BHQE8VW5wYWlkRXhlY3V0aW9uAAAIMHdlaWdodF9saW1pdG0BMGNoZWNrX29yaWdpblEBHFBheUZlZXMAAAQUYXNzZXQxAUBJbml0aWF0ZVRyYW5zZmVyAAAULGRlc3RpbmF0aW9uHQEscmVtb3RlX2ZlZXN1ATxwcmVzZXJ2ZV9vcmlnaW4UGGFzc2V0c3kBKHJlbW90ZV94Y22NAURFeGVjdXRlV2l0aE9yaWdpbgAACERkZXNjZW5kYW50X29yaWdpbn0BDHhjbY0BIFNldEhpbnRzAAAEFGhpbnRzhQEEiQEAAhw0Tm90QXBwbGljYWJsZQABBSRUcmFuc3BvcnQAAQUoVW5yb3V0YWJsZQABBVhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAAEFVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQABBTxNaXNzaW5nQXJndW1lbnQAAQUQRmVlcwABBQIsJEJ5R2VuZXNpcwEgGEJ5Rm9yawAACDBibG9ja19udW1iZXIIKGJsb2NrX2hhc2ggIFBvbGthZG90AAEFGEt1c2FtYQABBRxXZXN0ZW5kAAEFGFJvY29jbwABBRhXb2NvY28AAQUgRXRoZXJldW0AAAQgY2hhaW5faWQILEJpdGNvaW5Db3JlAAEFLEJpdGNvaW5DYXNoAAEFQFBvbGthZG90QnVsbGV0aW4AAQUGlQECKCRQYXJhY2hhaW4BBCxBY2NvdW50SWQzMgAACBxuZXR3b3JrmQEIaWQgOEFjY291bnRJbmRleDY0AAAIHG5ldHdvcmuZARRpbmRleAgwQWNjb3VudEtleTIwAAAIHG5ldHdvcmuZAQxrZXnsOFBhbGxldEluc3RhbmNlAQQwR2VuZXJhbEluZGV4AQgoR2VuZXJhbEtleQAACBhsZW5ndGgEEGRhdGEgJE9ubHlDaGlsZAABBSRQbHVyYWxpdHkAAAgIaWTwEHBhcnT0PEdsb2JhbENvbnNlbnN1cwGVAQIkEEhlcmUAAQUIWDEBnQEIWDIABJ0BAQgIWDMABJ0BAQwIWDQABJ0BARAIWDUABJ0BARQIWDYABJ0BARgIWDcABJ0BARwIWDgABJ0BASAACBxwYXJlbnRzBCBpbnRlcmlvcqEBAgggQ29uY3JldGUBpQEgQWJzdHJhY3QBIAAICGlkqQEMZnVuLQEErQEAAAgIaWSlAQxmdW4tAQS1AQACDAhWMwGxAQhWNAG5AQhWNQE1AQIMCFYzAaUBCFY0AaUBCFY1AR0BBggCdCRBdHRlbXB0ZWQAAAQcb3V0Y29tZeAQU2VudAAAEBhvcmlnaW4dASxkZXN0aW5hdGlvbh0BHG1lc3NhZ2WNAShtZXNzYWdlX2lkIChTZW5kRmFpbGVkAAAQGG9yaWdpbh0BLGRlc3RpbmF0aW9uHQEUZXJyb3KRAShtZXNzYWdlX2lkIDxQcm9jZXNzWGNtRXJyb3IAAAwYb3JpZ2luHQEUZXJyb3LYKG1lc3NhZ2VfaWQgSFVuZXhwZWN0ZWRSZXNwb25zZQAACBhvcmlnaW4dASBxdWVyeV9pZAg0UmVzcG9uc2VSZWFkeQAACCBxdWVyeV9pZAggcmVzcG9uc2VNASBOb3RpZmllZAAADCBxdWVyeV9pZAgwcGFsbGV0X2luZGV4BChjYWxsX2luZGV4BEBOb3RpZnlPdmVyd2VpZ2h0AAAUIHF1ZXJ5X2lkCDBwYWxsZXRfaW5kZXgEKGNhbGxfaW5kZXgENGFjdHVhbF93ZWlnaHQYTG1heF9idWRnZXRlZF93ZWlnaHQYTE5vdGlmeURpc3BhdGNoRXJyb3IAAAwgcXVlcnlfaWQIMHBhbGxldF9pbmRleAQoY2FsbF9pbmRleARITm90aWZ5RGVjb2RlRmFpbGVkAAAMIHF1ZXJ5X2lkCDBwYWxsZXRfaW5kZXgEKGNhbGxfaW5kZXgEQEludmFsaWRSZXNwb25kZXIAAAwYb3JpZ2luHQEgcXVlcnlfaWQIRGV4cGVjdGVkX2xvY2F0aW9uUQFcSW52YWxpZFJlc3BvbmRlclZlcnNpb24AAAgYb3JpZ2luHQEgcXVlcnlfaWQINFJlc3BvbnNlVGFrZW4AAAQgcXVlcnlfaWQINEFzc2V0c1RyYXBwZWQAAAwQaGFzaCAYb3JpZ2luHQEYYXNzZXRzvQFUVmVyc2lvbkNoYW5nZU5vdGlmaWVkAAAQLGRlc3RpbmF0aW9uHQEYcmVzdWx0BBBjb3N0NQEobWVzc2FnZV9pZCBcU3VwcG9ydGVkVmVyc2lvbkNoYW5nZWQAAAggbG9jYXRpb24dARx2ZXJzaW9uBFBOb3RpZnlUYXJnZXRTZW5kRmFpbAAADCBsb2NhdGlvbh0BIHF1ZXJ5X2lkCBRlcnJvcthkTm90aWZ5VGFyZ2V0TWlncmF0aW9uRmFpbAAACCBsb2NhdGlvbsEBIHF1ZXJ5X2lkCFRJbnZhbGlkUXVlcmllclZlcnNpb24AAAgYb3JpZ2luHQEgcXVlcnlfaWQIOEludmFsaWRRdWVyaWVyAAAQGG9yaWdpbh0BIHF1ZXJ5X2lkCEBleHBlY3RlZF9xdWVyaWVyHQFQbWF5YmVfYWN0dWFsX3F1ZXJpZXJRAVBWZXJzaW9uTm90aWZ5U3RhcnRlZAAADCxkZXN0aW5hdGlvbh0BEGNvc3Q1AShtZXNzYWdlX2lkIFhWZXJzaW9uTm90aWZ5UmVxdWVzdGVkAAAMLGRlc3RpbmF0aW9uHQEQY29zdDUBKG1lc3NhZ2VfaWQgYFZlcnNpb25Ob3RpZnlVbnJlcXVlc3RlZAAADCxkZXN0aW5hdGlvbh0BEGNvc3Q1AShtZXNzYWdlX2lkICBGZWVzUGFpZAAACBhwYXlpbmcdARBmZWVzNQE0QXNzZXRzQ2xhaW1lZAAADBBoYXNoIBhvcmlnaW4dARhhc3NldHO9AWBWZXJzaW9uTWlncmF0aW9uRmluaXNoZWQAAAQcdmVyc2lvbgQ8QWxpYXNBdXRob3JpemVkAAAMHGFsaWFzZXIdARh0YXJnZXQdARhleHBpcnnFAWRBbGlhc0F1dGhvcml6YXRpb25SZW1vdmVkAAAIHGFsaWFzZXIdARh0YXJnZXQdAXBBbGlhc2VzQXV0aG9yaXphdGlvbnNSZW1vdmVkAAAEGHRhcmdldB0BAgw0SW52YWxpZEZvcm1hdAEgSFVuc3VwcG9ydGVkVmVyc2lvbgEgQEV4ZWN1dGVkRG93bndhcmQAAwgg4AIMEEhlcmUAAQUYUGFyZW50AAEFHFNpYmxpbmcBBAIYJEJhZEZvcm1hdAABBRxDb3JydXB0AAEFLFVuc3VwcG9ydGVkAAEFKE92ZXJ3ZWlnaHQBGBRZaWVsZAABBURTdGFja0xpbWl0UmVhY2hlZAABBQIQQFByb2Nlc3NpbmdGYWlsZWQAAAwIaWQgGG9yaWdpbtEBFGVycm9y1QEkUHJvY2Vzc2VkAAAQCGlkIBhvcmlnaW7RASx3ZWlnaHRfdXNlZBgcc3VjY2VzcxRIT3ZlcndlaWdodEVucXVldWVkAAAQCGlkIBhvcmlnaW7RAShwYWdlX2luZGV4BDRtZXNzYWdlX2luZGV4BChQYWdlUmVhcGVkAAAIGG9yaWdpbtEBFGluZGV4BAUBAQEFAQUBBQGEAhAcU3IyNTUxOQAACCRzaWduYXR1cmXdARhzaWduZXIgHEVkMjU1MTkAAAgkc2lnbmF0dXJl3QEYc2lnbmVyIDhTZWNwMjU2azFFY2RzYQAACCRzaWduYXR1cmXhARhzaWduZXLlARxPbkNoYWluAAAMDHdobyAoYmxvY2tfaGFzaCAsZXZlbnRfaW5kZXgIBukBBgQEIAEQBiQAHBRwcm9vZu0BOGRlY3J5cHRpb25fa2V5kBxjaGFubmVskCBwcmlvcml0efEBKG51bV90b3BpY3MEGHRvcGljc/UBEGRhdGH5AQIEME5ld1N0YXRlbWVudAAACBxhY2NvdW50ACRzdGF0ZW1lbnT9AQIIMENsYWltQ3JlYXRlZAAACAx3aG8AEGhhc2ggMENsYWltUmV2b2tlZAAACAx3aG8AEGhhc2ggBCAAAgw8Q29udHJhY3RFbWl0dGVkAAAMIGNvbnRyYWN07BBkYXRhJBh0b3BpY3MJAjBJbnN0YW50aWF0ZWQAAAggZGVwbG95ZXLsIGNvbnRyYWN07EhFdGhFeHRyaW5zaWNSZXZlcnQAAAQ4ZGlzcGF0Y2hfZXJyb3KIAjgYU3lzdGVtAYw8UGFyYWNoYWluU3lzdGVtAZQgQmFsYW5jZXMBsEhUcmFuc2FjdGlvblBheW1lbnQBtBBTdWRvAcREQ29sbGF0b3JTZWxlY3Rpb24BzBxTZXNzaW9uAdAkWGNtcFF1ZXVlAdQsUG9sa2Fkb3RYY20ByQEoQ3VtdWx1c1hjbQHNATBNZXNzYWdlUXVldWUB2QEkU3RhdGVtZW50AQECOFRlbXBsYXRlUGFsbGV0AQUCGFJldml2ZQENAgAMFHBoYXNlNBRldmVudBECGHRvcGljcwkCBBUCAAQEAQgEHQIAAQEACDBzcGVjX3ZlcnNpb24EJHNwZWNfbmFtZSUCAAgkY29kZV9oYXNoIDRjaGVja192ZXJzaW9uFAAQOGJhc2VfZXh0cmluc2ljGDRtYXhfZXh0cmluc2ljWQEkbWF4X3RvdGFsWQEgcmVzZXJ2ZWRZAQAMGG5vcm1hbDECLG9wZXJhdGlvbmFsMQIkbWFuZGF0b3J5MQIADChiYXNlX2Jsb2NrGCRtYXhfYmxvY2sYJHBlcl9jbGFzczUCAAwYbm9ybWFsBCxvcGVyYXRpb25hbAQkbWFuZGF0b3J5BAAIEHJlYWQIFHdyaXRlCAMIIQEEBEUCAAAgJHNwZWNfbmFtZSUCJGltcGxfbmFtZSUCRGF1dGhvcmluZ192ZXJzaW9uBDBzcGVjX3ZlcnNpb24EMGltcGxfdmVyc2lvbgQQYXBpc0kCTHRyYW5zYWN0aW9uX3ZlcnNpb24EOHN5c3RlbV92ZXJzaW9uBAQkAQgEUQIABCQAAAgkbXNnX2NvdW50BCx0b3RhbF9ieXRlcwQDCARdAgRhAgAADDR1bXBfbXNnX2NvdW50BDx1bXBfdG90YWxfYnl0ZXMENGhybXBfb3V0Z29pbmdlAgIIFEFib3J0AAEFHEdvQWhlYWQAAQUGbQIADDh1c2VkX2JhbmR3aWR0aGkCOHBhcmFfaGVhZF9oYXNokGBjb25zdW1lZF9nb19haGVhZF9zaWduYWxxAgR1AgAADDh1c2VkX2JhbmR3aWR0aGkCOGhybXBfd2F0ZXJtYXJr8QFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFscQIAECxwYXJlbnRfaGVhZCRMcmVsYXlfcGFyZW50X251bWJlcgRkcmVsYXlfcGFyZW50X3N0b3JhZ2Vfcm9vdCAwbWF4X3Bvdl9zaXplBAIEHFByZXNlbnQAAQUGhQIACDxyZW1haW5pbmdfY291bnQEOHJlbWFpbmluZ19zaXplBAAYMG1heF9jYXBhY2l0eQQ4bWF4X3RvdGFsX3NpemUEQG1heF9tZXNzYWdlX3NpemUEJG1zZ19jb3VudAQodG90YWxfc2l6ZQQgbXFjX2hlYWSQAwgEkQIElQIAABAwZG1xX21xY19oZWFkIJxyZWxheV9kaXNwYXRjaF9xdWV1ZV9yZW1haW5pbmdfY2FwYWNpdHmNAkBpbmdyZXNzX2NoYW5uZWxzmQI8ZWdyZXNzX2NoYW5uZWxzmQIACExtYXhfY2FuZGlkYXRlX2RlcHRoBFBhbGxvd2VkX2FuY2VzdHJ5X2xlbgQAKDRtYXhfY29kZV9zaXplBEhtYXhfaGVhZF9kYXRhX3NpemUEWG1heF91cHdhcmRfcXVldWVfY291bnQEVG1heF91cHdhcmRfcXVldWVfc2l6ZQRcbWF4X3Vwd2FyZF9tZXNzYWdlX3NpemUEkG1heF91cHdhcmRfbWVzc2FnZV9udW1fcGVyX2NhbmRpZGF0ZQSIaHJtcF9tYXhfbWVzc2FnZV9udW1fcGVyX2NhbmRpZGF0ZQRsdmFsaWRhdGlvbl91cGdyYWRlX2Nvb2xkb3duBGB2YWxpZGF0aW9uX3VwZ3JhZGVfZGVsYXkEUGFzeW5jX2JhY2tpbmdfcGFyYW1zoQIDCAQgBKkCAAAIHHNlbnRfYXQELHJldmVyc2VfaWR4BAAIJHJlY2lwaWVudAQQZGF0YSQEtQIAABQscGFyZW50X2hhc2ggGG51bWJlcgQoc3RhdGVfcm9vdCA8ZXh0cmluc2ljc19yb290IBhkaWdlc3QwBL0CAAAQPHZhbGlkYXRpb25fZGF0YYECRHJlbGF5X2NoYWluX3N0YXRlWQJgcmVsYXlfcGFyZW50X2Rlc2NlbmRhbnRzwQJAY29sbGF0b3JfcGVlcl9pZPkBAAgcc2VudF9hdAQMbXNnJATJAgAACBxzZW50X2F0BCBtc2dfaGFzaCAE0QIAAAg0ZnVsbF9tZXNzYWdlc80CPGhhc2hlZF9tZXNzYWdlc9UCAAgcc2VudF9hdAQQZGF0YSQDCATdAgThAgADCATRAgTpAgAACDRmdWxsX21lc3NhZ2Vz5QI8aGFzaGVkX21lc3NhZ2Vz7QIACERkb3dud2FyZF9tZXNzYWdlc9kCTGhvcml6b250YWxfbWVzc2FnZXPxAgIMDEZlZQABBRBNaXNjAAEFDEFsbAABBQAMCGlkIQEYYW1vdW50CBxyZWFzb25z+QIE/QIAAAgIaWQhARhhbW91bnQIBAUDAAAICGlkqBhhbW91bnQIBA0DAAAEGGFtb3VudAgEFQMAAhQISWQBABRJbmRleAG4DFJhdwEkJEFkZHJlc3MzMgEgJEFkZHJlc3MyMAHsAgggSW5jcmVhc2UAAQUgRGVjcmVhc2UAAQUCCCRWMUFuY2llbnQAAQUIVjIAAQUCLBhyZW1hcmsAAAQYcmVtYXJrJDhzZXRfaGVhcF9wYWdlcwAABBRwYWdlcwggc2V0X2NvZGUAAAQQY29kZSRcc2V0X2NvZGVfd2l0aG91dF9jaGVja3MAAAQQY29kZSQsc2V0X3N0b3JhZ2UAAAQUaXRlbXNVAjBraWxsX3N0b3JhZ2UAAAQQa2V5c1kCLGtpbGxfcHJlZml4AAAIGHByZWZpeCQcc3Via2V5cwREcmVtYXJrX3dpdGhfZXZlbnQAAAQYcmVtYXJrJERhdXRob3JpemVfdXBncmFkZQAABCRjb2RlX2hhc2gggGF1dGhvcml6ZV91cGdyYWRlX3dpdGhvdXRfY2hlY2tzAAAEJGNvZGVfaGFzaCBgYXBwbHlfYXV0aG9yaXplZF91cGdyYWRlAAAEEGNvZGUkAghMc2V0X3ZhbGlkYXRpb25fZGF0YQAACBBkYXRhxQJUaW5ib3VuZF9tZXNzYWdlc19kYXRh9QJgc3Vkb19zZW5kX3Vwd2FyZF9tZXNzYWdlAAAEHG1lc3NhZ2UkAgQMc2V0AAAEDG5vdwgCJFB0cmFuc2Zlcl9hbGxvd19kZWF0aAAACBBkZXN0HQMUdmFsdWUIOGZvcmNlX3RyYW5zZmVyAAAMGHNvdXJjZR0DEGRlc3QdAxR2YWx1ZQhMdHJhbnNmZXJfa2VlcF9hbGl2ZQAACBBkZXN0HQMUdmFsdWUIMHRyYW5zZmVyX2FsbAAACBBkZXN0HQMoa2VlcF9hbGl2ZRQ8Zm9yY2VfdW5yZXNlcnZlAAAIDHdobx0DGGFtb3VudAhAdXBncmFkZV9hY2NvdW50cwAABAx3aG/IRGZvcmNlX3NldF9iYWxhbmNlAAAIDHdobx0DIG5ld19mcmVlCGxmb3JjZV9hZGp1c3RfdG90YWxfaXNzdWFuY2UAAAgkZGlyZWN0aW9uIQMUZGVsdGEIEGJ1cm4AAAgUdmFsdWUIKGtlZXBfYWxpdmUUAhQQc3VkbwAABBBjYWxspQNUc3Vkb191bmNoZWNrZWRfd2VpZ2h0AAAIEGNhbGylAxh3ZWlnaHQYHHNldF9rZXkAAAQMbmV3HQMcc3Vkb19hcwAACAx3aG8dAxBjYWxspQMocmVtb3ZlX2tleQABBQIkRHNldF9pbnZ1bG5lcmFibGVzAAAEDG5ld8hYc2V0X2Rlc2lyZWRfY2FuZGlkYXRlcwAABAxtYXgESHNldF9jYW5kaWRhY3lfYm9uZAAABBBib25kCFRyZWdpc3Rlcl9hc19jYW5kaWRhdGUAAQUwbGVhdmVfaW50ZW50AAEFQGFkZF9pbnZ1bG5lcmFibGUAAAQMd2hvAExyZW1vdmVfaW52dWxuZXJhYmxlAAAEDHdobwAsdXBkYXRlX2JvbmQAAAQsbmV3X2RlcG9zaXQITHRha2VfY2FuZGlkYXRlX3Nsb3QAAAgcZGVwb3NpdAgYdGFyZ2V0AAIIIHNldF9rZXlzAAAIEGtleXMgFHByb29mJChwdXJnZV9rZXlzAAEFAhRUc3VzcGVuZF94Y21fZXhlY3V0aW9uAAEFUHJlc3VtZV94Y21fZXhlY3V0aW9uAAEFYHVwZGF0ZV9zdXNwZW5kX3RocmVzaG9sZAAABAxuZXcEVHVwZGF0ZV9kcm9wX3RocmVzaG9sZAAABAxuZXcEXHVwZGF0ZV9yZXN1bWVfdGhyZXNob2xkAAAEDG5ldwQCoCBPdmVyZmxvdwABBTRVbmltcGxlbWVudGVkAAEFYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgABBWRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAEFMExvY2F0aW9uRnVsbAABBVRMb2NhdGlvbk5vdEludmVydGlibGUAAQUkQmFkT3JpZ2luAAEFPEludmFsaWRMb2NhdGlvbgABBTRBc3NldE5vdEZvdW5kAAEFVEZhaWxlZFRvVHJhbnNhY3RBc3NldAABBTxOb3RXaXRoZHJhd2FibGUAAQVITG9jYXRpb25DYW5ub3RIb2xkAAEFVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQABBVhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAAEFJFRyYW5zcG9ydAABBShVbnJvdXRhYmxlAAEFMFVua25vd25DbGFpbQABBThGYWlsZWRUb0RlY29kZQABBUBNYXhXZWlnaHRJbnZhbGlkAAEFOE5vdEhvbGRpbmdGZWVzAAEFMFRvb0V4cGVuc2l2ZQABBRBUcmFwAQhARXhwZWN0YXRpb25GYWxzZQABBThQYWxsZXROb3RGb3VuZAABBTBOYW1lTWlzbWF0Y2gAAQVMVmVyc2lvbkluY29tcGF0aWJsZQABBVBIb2xkaW5nV291bGRPdmVyZmxvdwABBSxFeHBvcnRFcnJvcgABBThSZWFuY2hvckZhaWxlZAABBRhOb0RlYWwAAQUoRmVlc05vdE1ldAABBSRMb2NrRXJyb3IAAQUwTm9QZXJtaXNzaW9uAAEFKFVuYW5jaG9yZWQAAQU4Tm90RGVwb3NpdGFibGUAAQVMVW5oYW5kbGVkWGNtVmVyc2lvbgABBUhXZWlnaHRMaW1pdFJlYWNoZWQBGBxCYXJyaWVyAAEFTFdlaWdodE5vdENvbXB1dGFibGUAAQVERXhjZWVkc1N0YWNrTGltaXQAAQUDCARJAwZNAwIYEE51bGwAAQUYQXNzZXRzAbEBPEV4ZWN1dGlvblJlc3VsdAFRAxxWZXJzaW9uAQQsUGFsbGV0c0luZm8BRQE4RGlzcGF0Y2hSZXN1bHQBSQEGpQEADCxkZXN0aW5hdGlvbqUBIHF1ZXJ5X2lkCChtYXhfd2VpZ2h0GAIQDEFsbAABBRRBbGxPZgAACAhpZKkBDGZ1bmEBKEFsbENvdW50ZWQBBDBBbGxPZkNvdW50ZWQAAAwIaWSpAQxmdW5hARRjb3VudAQCCCBEZWZpbml0ZQGxARBXaWxkAWEDAsA0V2l0aGRyYXdBc3NldAGxAVRSZXNlcnZlQXNzZXREZXBvc2l0ZWQBsQFYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAGxATRRdWVyeVJlc3BvbnNlAAAQIHF1ZXJ5X2lkCCByZXNwb25zZVUDKG1heF93ZWlnaHQYHHF1ZXJpZXJZAzRUcmFuc2ZlckFzc2V0AAAIGGFzc2V0c7EBLGJlbmVmaWNpYXJ5pQFQVHJhbnNmZXJSZXNlcnZlQXNzZXQAAAwYYXNzZXRzsQEQZGVzdKUBDHhjbW0DIFRyYW5zYWN0AAAMLG9yaWdpbl9raW5kVQFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdBgQY2FsbCRkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAAADBhzZW5kZXIEQG1heF9tZXNzYWdlX3NpemUEMG1heF9jYXBhY2l0eQRMSHJtcENoYW5uZWxBY2NlcHRlZAAABCRyZWNpcGllbnQESEhybXBDaGFubmVsQ2xvc2luZwAADCRpbml0aWF0b3IEGHNlbmRlcgQkcmVjaXBpZW50BCxDbGVhck9yaWdpbgABBTREZXNjZW5kT3JpZ2luAaEBLFJlcG9ydEVycm9yAV0DMERlcG9zaXRBc3NldAAACBhhc3NldHNlAyxiZW5lZmljaWFyeaUBTERlcG9zaXRSZXNlcnZlQXNzZXQAAAwYYXNzZXRzZQMQZGVzdKUBDHhjbW0DNEV4Y2hhbmdlQXNzZXQAAAwQZ2l2ZWUDEHdhbnSxARxtYXhpbWFsFFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwAADBhhc3NldHNlAxxyZXNlcnZlpQEMeGNtbQNASW5pdGlhdGVUZWxlcG9ydAAADBhhc3NldHNlAxBkZXN0pQEMeGNtbQM0UmVwb3J0SG9sZGluZwAACDRyZXNwb25zZV9pbmZvXQMYYXNzZXRzZQMwQnV5RXhlY3V0aW9uAAAIEGZlZXOtATB3ZWlnaHRfbGltaXRtATRSZWZ1bmRTdXJwbHVzAAEFPFNldEVycm9ySGFuZGxlcgFtAyxTZXRBcHBlbmRpeAFtAyhDbGVhckVycm9yAAEFKENsYWltQXNzZXQAAAgYYXNzZXRzsQEYdGlja2V0pQEQVHJhcAEIQFN1YnNjcmliZVZlcnNpb24AAAggcXVlcnlfaWQITG1heF9yZXNwb25zZV93ZWlnaHQYSFVuc3Vic2NyaWJlVmVyc2lvbgABBSRCdXJuQXNzZXQBsQEsRXhwZWN0QXNzZXQBsQEwRXhwZWN0T3JpZ2luAVkDLEV4cGVjdEVycm9yAVEDUEV4cGVjdFRyYW5zYWN0U3RhdHVzAUkBLFF1ZXJ5UGFsbGV0AAAILG1vZHVsZV9uYW1lJDRyZXNwb25zZV9pbmZvXQMwRXhwZWN0UGFsbGV0AAAUFGluZGV4BBBuYW1lJCxtb2R1bGVfbmFtZSQsY3JhdGVfbWFqb3IEPG1pbl9jcmF0ZV9taW5vcgRQUmVwb3J0VHJhbnNhY3RTdGF0dXMBXQNMQ2xlYXJUcmFuc2FjdFN0YXR1cwABBTxVbml2ZXJzYWxPcmlnaW4BnQE0RXhwb3J0TWVzc2FnZQAADBxuZXR3b3JrlQEsZGVzdGluYXRpb26hAQx4Y21tAyRMb2NrQXNzZXQAAAgUYXNzZXStASB1bmxvY2tlcqUBLFVubG9ja0Fzc2V0AAAIFGFzc2V0rQEYdGFyZ2V0pQE4Tm90ZVVubG9ja2FibGUAAAgUYXNzZXStARRvd25lcqUBNFJlcXVlc3RVbmxvY2sAAAgUYXNzZXStARhsb2NrZXKlASxTZXRGZWVzTW9kZQAABDBqaXRfd2l0aGRyYXcUIFNldFRvcGljASAoQ2xlYXJUb3BpYwABBSxBbGlhc09yaWdpbgGlATxVbnBhaWRFeGVjdXRpb24AAAgwd2VpZ2h0X2xpbWl0bQEwY2hlY2tfb3JpZ2luWQMEaQMAAhgQTnVsbAABBRhBc3NldHMBuQE8RXhlY3V0aW9uUmVzdWx0AVEDHFZlcnNpb24BBCxQYWxsZXRzSW5mbwFFAThEaXNwYXRjaFJlc3VsdAFJAQIQDEFsbAABBRRBbGxPZgAACAhpZKUBDGZ1bmEBKEFsbENvdW50ZWQBBDBBbGxPZkNvdW50ZWQAAAwIaWSlAQxmdW5hARRjb3VudAQCCCBEZWZpbml0ZQG5ARBXaWxkAXUDAsA0V2l0aGRyYXdBc3NldAG5AVRSZXNlcnZlQXNzZXREZXBvc2l0ZWQBuQFYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAG5ATRRdWVyeVJlc3BvbnNlAAAQIHF1ZXJ5X2lkCCByZXNwb25zZXEDKG1heF93ZWlnaHQYHHF1ZXJpZXJZAzRUcmFuc2ZlckFzc2V0AAAIGGFzc2V0c7kBLGJlbmVmaWNpYXJ5pQFQVHJhbnNmZXJSZXNlcnZlQXNzZXQAAAwYYXNzZXRzuQEQZGVzdKUBDHhjbYEDIFRyYW5zYWN0AAAMLG9yaWdpbl9raW5kVQFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdBgQY2FsbCRkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAAADBhzZW5kZXIEQG1heF9tZXNzYWdlX3NpemUEMG1heF9jYXBhY2l0eQRMSHJtcENoYW5uZWxBY2NlcHRlZAAABCRyZWNpcGllbnQESEhybXBDaGFubmVsQ2xvc2luZwAADCRpbml0aWF0b3IEGHNlbmRlcgQkcmVjaXBpZW50BCxDbGVhck9yaWdpbgABBTREZXNjZW5kT3JpZ2luAaEBLFJlcG9ydEVycm9yAV0DMERlcG9zaXRBc3NldAAACBhhc3NldHN5AyxiZW5lZmljaWFyeaUBTERlcG9zaXRSZXNlcnZlQXNzZXQAAAwYYXNzZXRzeQMQZGVzdKUBDHhjbYEDNEV4Y2hhbmdlQXNzZXQAAAwQZ2l2ZXkDEHdhbnS5ARxtYXhpbWFsFFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwAADBhhc3NldHN5AxxyZXNlcnZlpQEMeGNtgQNASW5pdGlhdGVUZWxlcG9ydAAADBhhc3NldHN5AxBkZXN0pQEMeGNtgQM0UmVwb3J0SG9sZGluZwAACDRyZXNwb25zZV9pbmZvXQMYYXNzZXRzeQMwQnV5RXhlY3V0aW9uAAAIEGZlZXO1ATB3ZWlnaHRfbGltaXRtATRSZWZ1bmRTdXJwbHVzAAEFPFNldEVycm9ySGFuZGxlcgGBAyxTZXRBcHBlbmRpeAGBAyhDbGVhckVycm9yAAEFKENsYWltQXNzZXQAAAgYYXNzZXRzuQEYdGlja2V0pQEQVHJhcAEIQFN1YnNjcmliZVZlcnNpb24AAAggcXVlcnlfaWQITG1heF9yZXNwb25zZV93ZWlnaHQYSFVuc3Vic2NyaWJlVmVyc2lvbgABBSRCdXJuQXNzZXQBuQEsRXhwZWN0QXNzZXQBuQEwRXhwZWN0T3JpZ2luAVkDLEV4cGVjdEVycm9yAVEDUEV4cGVjdFRyYW5zYWN0U3RhdHVzAUkBLFF1ZXJ5UGFsbGV0AAAILG1vZHVsZV9uYW1lJDRyZXNwb25zZV9pbmZvXQMwRXhwZWN0UGFsbGV0AAAUFGluZGV4BBBuYW1lJCxtb2R1bGVfbmFtZSQsY3JhdGVfbWFqb3IEPG1pbl9jcmF0ZV9taW5vcgRQUmVwb3J0VHJhbnNhY3RTdGF0dXMBXQNMQ2xlYXJUcmFuc2FjdFN0YXR1cwABBTxVbml2ZXJzYWxPcmlnaW4BnQE0RXhwb3J0TWVzc2FnZQAADBxuZXR3b3JrlQEsZGVzdGluYXRpb26hAQx4Y22BAyRMb2NrQXNzZXQAAAgUYXNzZXS1ASB1bmxvY2tlcqUBLFVubG9ja0Fzc2V0AAAIFGFzc2V0tQEYdGFyZ2V0pQE4Tm90ZVVubG9ja2FibGUAAAgUYXNzZXS1ARRvd25lcqUBNFJlcXVlc3RVbmxvY2sAAAgUYXNzZXS1ARhsb2NrZXKlASxTZXRGZWVzTW9kZQAABDBqaXRfd2l0aGRyYXcUIFNldFRvcGljASAoQ2xlYXJUb3BpYwABBSxBbGlhc09yaWdpbgGlATxVbnBhaWRFeGVjdXRpb24AAAgwd2VpZ2h0X2xpbWl0bQEwY2hlY2tfb3JpZ2luWQMEfQMAAgwIVjMBbQMIVjQBgQMIVjUBjQECECBUZWxlcG9ydAABBTBMb2NhbFJlc2VydmUAAQVIRGVzdGluYXRpb25SZXNlcnZlAAEFNFJlbW90ZVJlc2VydmUBwQECDAhWMwGpAQhWNAGlAQhWNQEdAQJEEHNlbmQAAAgQZGVzdMEBHG1lc3NhZ2WFAzx0ZWxlcG9ydF9hc3NldHMAABAQZGVzdMEBLGJlbmVmaWNpYXJ5wQEYYXNzZXRzvQE4ZmVlX2Fzc2V0X2l0ZW0EXHJlc2VydmVfdHJhbnNmZXJfYXNzZXRzAAAQEGRlc3TBASxiZW5lZmljaWFyecEBGGFzc2V0c70BOGZlZV9hc3NldF9pdGVtBBxleGVjdXRlAAAIHG1lc3NhZ2WFAyhtYXhfd2VpZ2h0GERmb3JjZV94Y21fdmVyc2lvbgAACCBsb2NhdGlvbh0BHHZlcnNpb24EZGZvcmNlX2RlZmF1bHRfeGNtX3ZlcnNpb24AAAREbWF5YmVfeGNtX3ZlcnNpb27xAXhmb3JjZV9zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkAAAQgbG9jYXRpb27BAYBmb3JjZV91bnN1YnNjcmliZV92ZXJzaW9uX25vdGlmeQAABCBsb2NhdGlvbsEBfGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMAABQQZGVzdMEBLGJlbmVmaWNpYXJ5wQEYYXNzZXRzvQE4ZmVlX2Fzc2V0X2l0ZW0EMHdlaWdodF9saW1pdG0BXGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzAAAUEGRlc3TBASxiZW5lZmljaWFyecEBGGFzc2V0c70BOGZlZV9hc3NldF9pdGVtBDB3ZWlnaHRfbGltaXRtAUBmb3JjZV9zdXNwZW5zaW9uAAAEJHN1c3BlbmRlZBQ8dHJhbnNmZXJfYXNzZXRzAAAUEGRlc3TBASxiZW5lZmljaWFyecEBGGFzc2V0c70BOGZlZV9hc3NldF9pdGVtBDB3ZWlnaHRfbGltaXRtATBjbGFpbV9hc3NldHMAAAgYYXNzZXRzvQEsYmVuZWZpY2lhcnnBAYx0cmFuc2Zlcl9hc3NldHNfdXNpbmdfdHlwZV9hbmRfdGhlbgAAHBBkZXN0wQEYYXNzZXRzvQFQYXNzZXRzX3RyYW5zZmVyX3R5cGWJAzhyZW1vdGVfZmVlc19pZI0DSGZlZXNfdHJhbnNmZXJfdHlwZYkDSGN1c3RvbV94Y21fb25fZGVzdIUDMHdlaWdodF9saW1pdG0BUGFkZF9hdXRob3JpemVkX2FsaWFzAAAIHGFsaWFzZXLBARxleHBpcmVzxQFccmVtb3ZlX2F1dGhvcml6ZWRfYWxpYXMAAAQcYWxpYXNlcsEBdHJlbW92ZV9hbGxfYXV0aG9yaXplZF9hbGlhc2VzAAEFAggkcmVhcF9wYWdlAAAIOG1lc3NhZ2Vfb3JpZ2lu0QEocGFnZV9pbmRleARIZXhlY3V0ZV9vdmVyd2VpZ2h0AAAQOG1lc3NhZ2Vfb3JpZ2lu0QEQcGFnZQQUaW5kZXgEMHdlaWdodF9saW1pdBgCCDBjcmVhdGVfY2xhaW0AAAQQaGFzaCAwcmV2b2tlX2NsYWltAAAEEGhhc2ggBAgBEAI0MGV0aF90cmFuc2FjdAAABBxwYXlsb2FkJBBjYWxsAAAUEGRlc3TsFHZhbHVlCDB3ZWlnaHRfbGltaXQYVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgQZGF0YSQsaW5zdGFudGlhdGUAABgUdmFsdWUIMHdlaWdodF9saW1pdBhUc3RvcmFnZV9kZXBvc2l0X2xpbWl0CCRjb2RlX2hhc2ggEGRhdGEkEHNhbHSQVGluc3RhbnRpYXRlX3dpdGhfY29kZQAAGBR2YWx1ZQgwd2VpZ2h0X2xpbWl0GFRzdG9yYWdlX2RlcG9zaXRfbGltaXQIEGNvZGUkEGRhdGEkEHNhbHSQZGV0aF9pbnN0YW50aWF0ZV93aXRoX2NvZGUAACAUdmFsdWWdAzB3ZWlnaHRfbGltaXQYNGV0aF9nYXNfbGltaXSdAxBjb2RlJBBkYXRhJEx0cmFuc2FjdGlvbl9lbmNvZGVkJExlZmZlY3RpdmVfZ2FzX3ByaWNlnQMsZW5jb2RlZF9sZW4EIGV0aF9jYWxsAAAgEGRlc3TsFHZhbHVlnQMwd2VpZ2h0X2xpbWl0GDRldGhfZ2FzX2xpbWl0nQMQZGF0YSRMdHJhbnNhY3Rpb25fZW5jb2RlZCRMZWZmZWN0aXZlX2dhc19wcmljZZ0DLGVuY29kZWRfbGVuBEhldGhfc3Vic3RyYXRlX2NhbGwAAAgQY2FsbKUDTHRyYW5zYWN0aW9uX2VuY29kZWQkLHVwbG9hZF9jb2RlAAAIEGNvZGUkVHN0b3JhZ2VfZGVwb3NpdF9saW1pdAgscmVtb3ZlX2NvZGUAAAQkY29kZV9oYXNoICBzZXRfY29kZQAACBBkZXN07CRjb2RlX2hhc2ggLG1hcF9hY2NvdW50AAEFNHVubWFwX2FjY291bnQAAQVwZGlzcGF0Y2hfYXNfZmFsbGJhY2tfYWNjb3VudAAABBBjYWxspQMCOBhTeXN0ZW0BKQM8UGFyYWNoYWluU3lzdGVtAS0DJFRpbWVzdGFtcAExAzRQYXJhY2hhaW5JbmZvAbggQmFsYW5jZXMBNQMQU3VkbwE5A0RDb2xsYXRvclNlbGVjdGlvbgE9AxxTZXNzaW9uAUEDJFhjbXBRdWV1ZQFFAyxQb2xrYWRvdFhjbQGRAyhDdW11bHVzWGNtAbgwTWVzc2FnZVF1ZXVlAZUDOFRlbXBsYXRlUGFsbGV0AZkDGFJldml2ZQGhAwAIDHdobwAcZGVwb3NpdAgEqQMAAwgAIASxAwADCCgkAwgIBAQEAAIICE9rAAEFJFN1c3BlbmRlZAABBQAUJHJlY2lwaWVudAQUc3RhdGXFAzRzaWduYWxzX2V4aXN0FCxmaXJzdF9pbmRleAQobGFzdF9pbmRleAQEyQMAAwgEBAAMRHN1c3BlbmRfdGhyZXNob2xkBDhkcm9wX3RocmVzaG9sZARAcmVzdW1lX3RocmVzaG9sZAQGwQEFAQgG3QMCDAhWMwFVAwhWNAFxAwhWNQFNAQIMHFBlbmRpbmcAABAkcmVzcG9uZGVywQFMbWF5YmVfbWF0Y2hfcXVlcmllctkDMG1heWJlX25vdGlmeeEDHHRpbWVvdXQEPFZlcnNpb25Ob3RpZmllcgAACBhvcmlnaW7BASRpc19hY3RpdmUUFFJlYWR5AAAIIHJlc3BvbnNl5QMIYXQEAwgEwQEDDAgYBAMIwQEEBPUDAAIQXE1pZ3JhdGVTdXBwb3J0ZWRWZXJzaW9uAAEFXE1pZ3JhdGVWZXJzaW9uTm90aWZpZXJzAAEFUE5vdGlmeUN1cnJlbnRUYXJnZXRzAfkBaE1pZ3JhdGVBbmROb3RpZnlPbGRUYXJnZXRzAAEFAwwEAI0DAwi4CAQFBAAAEBhhbW91bnQIFG93bmVywQEYbG9ja2VywQEkY29uc3VtZXJzCQQDCAjBAQQRBAAACCBsb2NhdGlvbsEBGGV4cGlyecUBBBkEAAAEIGFsaWFzZXJzHQQACBBwcmV20QEQbmV4dNEBBiUEABgUYmVnaW4EDGVuZAQUY291bnQEQHJlYWR5X25laWdoYm91cnMpBDRtZXNzYWdlX2NvdW50CBBzaXplCAMI0QEEABgkcmVtYWluaW5nBDhyZW1haW5pbmdfc2l6ZQQsZmlyc3RfaW5kZXgEFGZpcnN0BBBsYXN0BBBoZWFwJAAIFG93bmVyADBibG9ja19udW1iZXIEAggMUHZtAAEFDEV2bQABBQAYFG93bmVyABxkZXBvc2l0CCByZWZjb3VudAggY29kZV9sZW4EJGNvZGVfdHlwZT0ERGJlaGF2aW91cl92ZXJzaW9uBAAgHHRyaWVfaWQkJGNvZGVfaGFzaCA0c3RvcmFnZV9ieXRlcwQ0c3RvcmFnZV9pdGVtcwRQc3RvcmFnZV9ieXRlX2RlcG9zaXQIUHN0b3JhZ2VfaXRlbV9kZXBvc2l0CFBzdG9yYWdlX2Jhc2VfZGVwb3NpdAhIaW1tdXRhYmxlX2RhdGFfbGVuBAIIIENvbnRyYWN0AUUEDEVPQQABBQAIMGFjY291bnRfdHlwZUkEEGR1c3QEAAg4aW5zZXJ0X2NvdW50ZXIEOGRlbGV0ZV9jb3VudGVyBAUBAQQGnQMACBxhZGRyZXNz7DBzdG9yYWdlX2tleXMJAgRdBAAAGCBjaGFpbl9pZJ0DHGFkZHJlc3PsFG5vbmNlnQMgeV9wYXJpdHmdAwRynQMEc50DBGUEAAAwLGFjY2Vzc19saXN0YQRIYXV0aG9yaXphdGlvbl9saXN0aQQgY2hhaW5faWSdAwxnYXOdAyRnYXNfcHJpY2WdAxRpbnB1dCQ8bWF4X2ZlZV9wZXJfZ2FznQNgbWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FznQMUbm9uY2WdAwh0b+wYciN0eXBlBBR2YWx1ZZ0DABRkdHJhbnNhY3Rpb25fNzcwMl91bnNpZ25lZG0EBHKdAwRznQMEdlkEIHlfcGFyaXR5nQMAMCxhY2Nlc3NfbGlzdGEEVGJsb2JfdmVyc2lvbmVkX2hhc2hlcwkCIGNoYWluX2lknQMMZ2FznQMUaW5wdXQkUG1heF9mZWVfcGVyX2Jsb2JfZ2FznQM8bWF4X2ZlZV9wZXJfZ2FznQNgbWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FznQMUbm9uY2WdAwh0b+wYciN0eXBlBBR2YWx1ZZ0DABBkdHJhbnNhY3Rpb25fNDg0NF91bnNpZ25lZHUEBHKdAwRznQMgeV9wYXJpdHmdAwbsACwsYWNjZXNzX2xpc3RhBCBjaGFpbl9pZJ0DDGdhc50DJGdhc19wcmljZZ0DFGlucHV0JDxtYXhfZmVlX3Blcl9nYXOdA2BtYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXOdAxRub25jZZ0DCHRvfQQYciN0eXBlBBR2YWx1ZZ0DABRkdHJhbnNhY3Rpb25fMTU1OV91bnNpZ25lZIEEBHKdAwRznQMEdlkEIHlfcGFyaXR5nQMAJCxhY2Nlc3NfbGlzdGEEIGNoYWluX2lknQMMZ2FznQMkZ2FzX3ByaWNlnQMUaW5wdXQkFG5vbmNlnQMIdG99BBhyI3R5cGUEFHZhbHVlnQMAFGR0cmFuc2FjdGlvbl8yOTMwX3Vuc2lnbmVkiQQEcp0DBHOdAwR2WQQgeV9wYXJpdHmdAwAgIGNoYWluX2lkWQQMZ2FznQMkZ2FzX3ByaWNlnQMUaW5wdXQkFG5vbmNlnQMIdG99BBhyI3R5cGUEFHZhbHVlnQMAEGx0cmFuc2FjdGlvbl9sZWdhY3lfdW5zaWduZWSRBARynQMEc50DBHadAwIUVFRyYW5zYWN0aW9uNzcwMlNpZ25lZAFxBFRUcmFuc2FjdGlvbjQ4NDRTaWduZWQBeQRUVHJhbnNhY3Rpb24xNTU5U2lnbmVkAYUEVFRyYW5zYWN0aW9uMjkzMFNpZ25lZAGNBFxUcmFuc2FjdGlvbkxlZ2FjeVNpZ25lZAGVBAAYKGJsb2NrX2hhc2ggMGJsb2NrX251bWJlcp0DEGZyb23sEGhhc2ggRHRyYW5zYWN0aW9uX2luZGV4nQNIdHJhbnNhY3Rpb25fc2lnbmVkmQQEnQQAAggYSGFzaGVzAQkCQFRyYW5zYWN0aW9uSW5mb3MBoQQAEBxhZGRyZXNz7BhhbW91bnSdAxRpbmRleJ0DPHZhbGlkYXRvcl9pbmRleJ0DBKkEAABsQGJhc2VfZmVlX3Blcl9nYXOdAzRibG9iX2dhc191c2VknQMoZGlmZmljdWx0eZ0DPGV4Y2Vzc19ibG9iX2dhc50DKGV4dHJhX2RhdGEkJGdhc19saW1pdJ0DIGdhc191c2VknQMQaGFzaCAobG9nc19ibG9vbVUEFG1pbmVy7CBtaXhfaGFzaCAUbm9uY2UhARhudW1iZXKdA2BwYXJlbnRfYmVhY29uX2Jsb2NrX3Jvb3SQLHBhcmVudF9oYXNoIDRyZWNlaXB0c19yb290IDRyZXF1ZXN0c19oYXNokDBzaGFfM191bmNsZXMgEHNpemWdAyhzdGF0ZV9yb290ICR0aW1lc3RhbXCdA0B0b3RhbF9kaWZmaWN1bHR5WQQwdHJhbnNhY3Rpb25zpQREdHJhbnNhY3Rpb25zX3Jvb3QgGHVuY2xlcwkCLHdpdGhkcmF3YWxzrQRAd2l0aGRyYXdhbHNfcm9vdCAACCBnYXNfdXNlZJ0DTGVmZmVjdGl2ZV9nYXNfcHJpY2WdAwS1BAAAKAxrZXkkKHZhbHVlX3R5cGUENGJ1aWxkZXJfdmFsdWUkFHN0YWNrWQIsc3RhdGVfbWFza3PBAyh0cmVlX21hc2tzwQMoaGFzaF9tYXNrc8EDSHN0b3JlZF9pbl9kYXRhYmFzZRQccmxwX2J1ZiQUaW5kZXgIACBgdHJhbnNhY3Rpb25fcm9vdF9idWlsZGVyvQRUcmVjZWlwdHNfcm9vdF9idWlsZGVyvQRAYmFzZV9mZWVfcGVyX2dhc50DPGJsb2NrX2dhc19saW1pdJ0DIGdhc191c2VknQMobG9nc19ibG9vbVUEJHR4X2hhc2hlcwkCIGdhc19pbmZvuQQGUQIADHRhbGxvd191bmxpbWl0ZWRfY29udHJhY3Rfc2l6ZRQ8YnlwYXNzX2VpcF8zNjA3FCBwdm1fbG9ncxQACBhoZWFkZXK9AihleHRyaW5zaWNzWQICCDRBbGxFeHRyaW5zaWNzAAEFNE9ubHlJbmhlcmVudHMAAQUACBhwcmVmaXglARhzdWZmaXglAQIMOE5vdEltcGxlbWVudGVkAAEFIE5vdEZvdW5kAdUEFENvZGVjAAEFByTZBAI0EENhbGwAAQUcUGF5bWVudAABBRhGdXR1cmUAAQUUU3RhbGUAAQUgQmFkUHJvb2YAAQVEQW5jaWVudEJpcnRoQmxvY2sAAQVERXhoYXVzdHNSZXNvdXJjZXMAAQUYQ3VzdG9tAQQwQmFkTWFuZGF0b3J5AAEFTE1hbmRhdG9yeVZhbGlkYXRpb24AAQUkQmFkU2lnbmVyAAEFVEluZGV0ZXJtaW5hdGVJbXBsaWNpdAABBTRVbmtub3duT3JpZ2luAAEFAgwwQ2Fubm90TG9va3VwAAEFTE5vVW5zaWduZWRWYWxpZGF0b3IAAQUYQ3VzdG9tAQQCCBxJbnZhbGlkAeEEHFVua25vd24B5QQHvOkEAwghASQE8QQAAAwQb2theRQsZmF0YWxfZXJyb3IUGGVycm9yc/UEAgwcSW5CbG9jawABBRRMb2NhbAABBSBFeHRlcm5hbAABBQAUIHByaW9yaXR5CCByZXF1aXJlc1kCIHByb3ZpZGVzWQIkbG9uZ2V2aXR5CCRwcm9wYWdhdGUUBwEF6QQDCCQoBAkFAAYNBQAMGHdlaWdodBgUY2xhc3M4LHBhcnRpYWxfZmVlCAAMIGJhc2VfZmVlCBxsZW5fZmVlCExhZGp1c3RlZF93ZWlnaHRfZmVlCAYZBQAINGluY2x1c2lvbl9mZWUdBQx0aXAIABg8dXB3YXJkX21lc3NhZ2VzWQJMaG9yaXpvbnRhbF9tZXNzYWdlc7kCTG5ld192YWxpZGF0aW9uX2NvZGX5AWxwcm9jZXNzZWRfZG93bndhcmRfbWVzc2FnZXMEOGhybXBfd2F0ZXJtYXJrBCRoZWFkX2RhdGEkAgwUQ2hhaW4AAQUcTmV0d29yawABBRRMb2NhbAABBQAIJG1heF9jb3VudAQgbWF4X3NpemUEAgwgQmFkUHJvb2YAAQUcTm9Qcm9vZgABBTRJbnRlcm5hbEVycm9yAAEFBy0FMQUHuCUCBiUCBCUCAAIIGFJlZnVuZAEIGENoYXJnZQEIAAgUZmxhZ3MEEGRhdGEkB0kFiAAYPHdlaWdodF9jb25zdW1lZBg8d2VpZ2h0X3JlcXVpcmVkGDxzdG9yYWdlX2RlcG9zaXRFBUxtYXhfc3RvcmFnZV9kZXBvc2l0RQUwZ2FzX2NvbnN1bWVkCBhyZXN1bHRNBQIIGFVwbG9hZAEkIEV4aXN0aW5nASAACBhyZXN1bHRJBRBhZGRy7AdZBYgAGDx3ZWlnaHRfY29uc3VtZWQYPHdlaWdodF9yZXF1aXJlZBg8c3RvcmFnZV9kZXBvc2l0RQVMbWF4X3N0b3JhZ2VfZGVwb3NpdEUFMGdhc19jb25zdW1lZAgYcmVzdWx0XQUGYQQACBRpbnB1dPkBEGRhdGH5AQBALGFjY2Vzc19saXN0ZQVIYXV0aG9yaXphdGlvbl9saXN0aQRUYmxvYl92ZXJzaW9uZWRfaGFzaGVzCQIUYmxvYnNZAiBjaGFpbl9pZFkEEGZyb219BAxnYXNZBCRnYXNfcHJpY2VZBBRpbnB1dGkFUG1heF9mZWVfcGVyX2Jsb2JfZ2FzWQQ8bWF4X2ZlZV9wZXJfZ2FzWQRgbWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FzWQQUbm9uY2VZBAh0b30EGHIjdHlwZfEBFHZhbHVlWQQAFDx3ZWlnaHRfcmVxdWlyZWQYPHN0b3JhZ2VfZGVwb3NpdAhMbWF4X3N0b3JhZ2VfZGVwb3NpdAgcZXRoX2dhc50DEGRhdGEkAggQRGF0YQEkHE1lc3NhZ2UBJQIHcQV1BQAISHRpbWVzdGFtcF9vdmVycmlkZcUBIHJlc2VydmVkFAAIJGNvZGVfaGFzaCAcZGVwb3NpdAgHgQWIAgwsRG9lc250RXhpc3QAAQVES2V5RGVjb2RpbmdGYWlsZWQAAQVIU3RvcmFnZVdyaXRlRmFpbGVkAYgH+QGJBQAIJHdpdGhfbG9ncxQ0b25seV90b3BfY2FsbBQGkQUADCRkaWZmX21vZGUUPGRpc2FibGVfc3RvcmFnZRQwZGlzYWJsZV9jb2RlFAaZBQIIKENhbGxUcmFjZXIBlQU4UHJlc3RhdGVUcmFjZXIBnQUEtQUAABAcYWRkcmVzc+wYdG9waWNzCQIQZGF0YSQgcG9zaXRpb24EBKkFAAIYEENhbGwAAQUoU3RhdGljQ2FsbAABBTBEZWxlZ2F0ZUNhbGwAAQUYQ3JlYXRlAAEFHENyZWF0ZTIAAQUwU2VsZmRlc3RydWN0AAEFADQQZnJvbewMZ2FznQMgZ2FzX3VzZWSdAwh0b+wUaW5wdXQkGG91dHB1dCQUZXJyb3I9BTRyZXZlcnRfcmVhc29uPQUUY2FsbHOlBRBsb2dzrQUUdmFsdWVZBCRjYWxsX3R5cGWxBUBjaGlsZF9jYWxsX2NvdW50BAMIJPkBBLkFAAAQHGJhbGFuY2VZBBRub25jZfEBEGNvZGX5ARxzdG9yYWdlvQUDCOzBBQTFBQACCCBQcmVzdGF0ZQHJBSBEaWZmTW9kZQAACAxwcmXJBRBwb3N0yQUCCBBDYWxsAbUFIFByZXN0YXRlAc0FAwgE0QUE1QUABtEFB9EFdQUCCBRWYWx1ZQABBRBEdXN0AAEFB70D5QUCBDBUb29NYW55Q2FsbHMAAQUCBBxPbmdvaW5nAAEFAkgoQmFkQ29udGV4dAABBSxCYWREYXRhU2l6ZQABBUxUb29NYW55VHJhbnNhY3Rpb25zAAEFNE5vdENvbmZpZ3VyZWQAAQU8UmVuZXdlZE5vdEZvdW5kAAEFPFVuZXhwZWN0ZWRQcm9vZgABBTBJbnZhbGlkUHJvb2YAAQUwTWlzc2luZ1Byb29mAAEFQE1pc3NpbmdTdGF0ZURhdGEAAQUsRG91YmxlQ2hlY2sAAQU8UHJvb2ZOb3RDaGVja2VkAAEFVEF1dGhvcml6YXRpb25Ob3RGb3VuZAABBVxBdXRob3JpemF0aW9uTm90RXhwaXJlZAABBUhJbnZhbGlkQ29udGVudEhhc2gAAQVIQXV0aG9yaXplck5vdEZvdW5kAAEFcEF1dGhvcml6ZXJCdWRnZXROb3RFeGhhdXN0ZWQAAQVESW52YWxpZFZhbGlkVW50aWwAAQVwSW5zdWZmaWNpZW50QXV0aG9yaXplckJ1ZGdldAABBQIgKEJhZENvbnRleHQAAQU8UmVuZXdlZE5vdEZvdW5kAAEFTFRvb01hbnlUcmFuc2FjdGlvbnMAAQVUUmVuZXdhbEFscmVhZHlFbmFibGVkAAEFVEF1dG9SZW5ld2FsTm90RW5hYmxlZAABBUxOb3RBdXRvUmVuZXdhbE93bmVyAAEFfENhbm5vdERpc2FibGVQcmVwYWlkQXV0b1JlbmV3YWwAAQUsQmFkRGF0YVNpemUAAQUCXBhTeXN0ZW0BRDxQYXJhY2hhaW5TeXN0ZW0BSCRUaW1lc3RhbXAAAQU0UGFyYWNoYWluSW5mbwABBTRXZWlnaHRSZWNsYWltAAEFHFV0aWxpdHkB7QVQTXVsdGlCbG9ja01pZ3JhdGlvbnMB8QUgQmFsYW5jZXMBTEhUcmFuc2FjdGlvblBheW1lbnQAAQVIU2tpcEZlZWxlc3NQYXltZW50AAEFSFRyYW5zYWN0aW9uU3RvcmFnZQH1BTBIb3BQcm9tb3Rpb24AAQUsRGF0YVJlbmV3YWwB+QUoQXV0aG9yc2hpcAABBURDb2xsYXRvclNlbGVjdGlvbgFUHFNlc3Npb24BWBBBdXJhAAEFHEF1cmFFeHQAAQUkWGNtcFF1ZXVlAVwsUG9sa2Fkb3RYY20BZChDdW11bHVzWGNtAAEFME1lc3NhZ2VRdWV1ZQFoEFN1ZG8BUAI8FE90aGVyAAEFMENhbm5vdExvb2t1cAABBSRCYWRPcmlnaW4AAQUYTW9kdWxlAf0FRENvbnN1bWVyUmVtYWluaW5nAAEFLE5vUHJvdmlkZXJzAAEFQFRvb01hbnlDb25zdW1lcnMAAQUUVG9rZW4BeChBcml0aG1ldGljAXw0VHJhbnNhY3Rpb25hbAGAJEV4aGF1c3RlZAABBShDb3JydXB0aW9uAAEFLFVuYXZhaWxhYmxlAAEFOFJvb3ROb3RBbGxvd2VkAAEFEFRyaWUBhAIgQEV4dHJpbnNpY1N1Y2Nlc3MAAAQ0ZGlzcGF0Y2hfaW5mb0A8RXh0cmluc2ljRmFpbGVkAAAIOGRpc3BhdGNoX2Vycm9yAQY0ZGlzcGF0Y2hfaW5mb0AsQ29kZVVwZGF0ZWQAAAQQaGFzaCAoTmV3QWNjb3VudAAABBxhY2NvdW50ADRLaWxsZWRBY2NvdW50AAAEHGFjY291bnQAIFJlbWFya2VkAAAIGHNlbmRlcgAQaGFzaCBEVXBncmFkZUF1dGhvcml6ZWQAAAgkY29kZV9oYXNoIDRjaGVja192ZXJzaW9uFIBSZWplY3RlZEludmFsaWRBdXRob3JpemVkVXBncmFkZQAACCRjb2RlX2hhc2ggFGVycm9yAQYHuAEGAiBAQmF0Y2hJbnRlcnJ1cHRlZAAACBRpbmRleAQUZXJyb3IBBjhCYXRjaENvbXBsZXRlZAABBWBCYXRjaENvbXBsZXRlZFdpdGhFcnJvcnMAAQU0SXRlbUNvbXBsZXRlZAABBShJdGVtRmFpbGVkAAAEFGVycm9yAQYwRGlzcGF0Y2hlZEFzAAAEGHJlc3VsdAkGRElmRWxzZU1haW5TdWNjZXNzAAEFUElmRWxzZUZhbGxiYWNrQ2FsbGVkAAAEKG1haW5fZXJyb3IBBgIgOFVwZ3JhZGVTdGFydGVkAAAEKG1pZ3JhdGlvbnMEQFVwZ3JhZGVDb21wbGV0ZWQAAQU0VXBncmFkZUZhaWxlZAABBUBNaWdyYXRpb25Ta2lwcGVkAAAEFGluZGV4BERNaWdyYXRpb25BZHZhbmNlZAAACBRpbmRleAQQdG9vawRITWlncmF0aW9uQ29tcGxldGVkAAAIFGluZGV4BBB0b29rBDxNaWdyYXRpb25GYWlsZWQAAAgUaW5kZXgEEHRvb2sEPEhpc3RvcmljQ2xlYXJlZAAABCxuZXh0X2N1cnNvcvkBAgQ4U3RvcmFnZUZlZUhvbGQAAQUCDEhUcmFuc2FjdGlvblN0b3JhZ2UBFQYcU2Vzc2lvbgGcLFBvbGthZG90WGNtAaACeBxFbmRvd2VkAAAIHGFjY291bnQAMGZyZWVfYmFsYW5jZQggRHVzdExvc3QAAAgcYWNjb3VudAAYYW1vdW50CCBUcmFuc2ZlcgAADBBmcm9tAAh0bwAYYW1vdW50CChCYWxhbmNlU2V0AAAIDHdobwAQZnJlZQggUmVzZXJ2ZWQAAAgMd2hvABhhbW91bnQIKFVucmVzZXJ2ZWQAAAgMd2hvABhhbW91bnQISFJlc2VydmVSZXBhdHJpYXRlZAAAEBBmcm9tAAh0bwAYYW1vdW50CEhkZXN0aW5hdGlvbl9zdGF0dXOYHERlcG9zaXQAAAgMd2hvABhhbW91bnQIIFdpdGhkcmF3AAAIDHdobwAYYW1vdW50CBxTbGFzaGVkAAAIDHdobwAYYW1vdW50CBhNaW50ZWQAAAgMd2hvABhhbW91bnQIME1pbnRlZENyZWRpdAAABBhhbW91bnQIGEJ1cm5lZAAACAx3aG8AGGFtb3VudAgoQnVybmVkRGVidAAABBhhbW91bnQIJFN1c3BlbmRlZAAACAx3aG8AGGFtb3VudAggUmVzdG9yZWQAAAgMd2hvABhhbW91bnQIIFVwZ3JhZGVkAAAEDHdobwAYSXNzdWVkAAAEGGFtb3VudAgkUmVzY2luZGVkAAAEGGFtb3VudAgYTG9ja2VkAAAIDHdobwAYYW1vdW50CCBVbmxvY2tlZAAACAx3aG8AGGFtb3VudAgYRnJvemVuAAAIDHdobwAYYW1vdW50CBhUaGF3ZWQAAAgMd2hvABhhbW91bnQITFRvdGFsSXNzdWFuY2VGb3JjZWQAAAgMb2xkCAxuZXcIEEhlbGQAAAwYcmVhc29uGQYMd2hvABhhbW91bnQIKEJ1cm5lZEhlbGQAAAwYcmVhc29uGQYMd2hvABhhbW91bnQIOFRyYW5zZmVyT25Ib2xkAAAQGHJlYXNvbhkGGHNvdXJjZQAQZGVzdAAYYW1vdW50CDxUcmFuc2ZlckFuZEhvbGQAABAYcmVhc29uGQYYc291cmNlABBkZXN0ACx0cmFuc2ZlcnJlZAggUmVsZWFzZWQAAAwYcmVhc29uGQYMd2hvABhhbW91bnQIKFVuZXhwZWN0ZWQBrAIQEFJvb3QAAQUYU2lnbmVkAQAQTm9uZQABBShBdXRob3JpemVkAAEFAggcQWNjb3VudAEAIFByZWltYWdlASACBChBdXRob3JpemVkAAAIDHdobwAUc2NvcGUlBgIIDFhjbQEdASBSZXNwb25zZQEdAQIIFFJlbGF5AAEFQFNpYmxpbmdQYXJhY2hhaW4BBAIQGHN5c3RlbQEhBkhUcmFuc2FjdGlvblN0b3JhZ2UBKQYsUG9sa2Fkb3RYY20BLQYoQ3VtdWx1c1hjbQExBgIEKEZlZVNraXBwZWQAAAQYb3JpZ2luNQYCLBhTdG9yZWQAAAwUaW5kZXgEMGNvbnRlbnRfaGFzaCAMY2lk+QEwUHJvb2ZDaGVja2VkAAEFREFjY291bnRBdXRob3JpemVkAAAMDHdobwAwdHJhbnNhY3Rpb25zBBRieXRlcwh0QWNjb3VudEF1dGhvcml6YXRpb25SZWZyZXNoZWQAAAQMd2hvAEhQcmVpbWFnZUF1dGhvcml6ZWQAAAgwY29udGVudF9oYXNoICBtYXhfc2l6ZQh4UHJlaW1hZ2VBdXRob3JpemF0aW9uUmVmcmVzaGVkAAAEMGNvbnRlbnRfaGFzaCCIRXhwaXJlZEFjY291bnRBdXRob3JpemF0aW9uUmVtb3ZlZAAABAx3aG8AjEV4cGlyZWRQcmVpbWFnZUF1dGhvcml6YXRpb25SZW1vdmVkAAAEMGNvbnRlbnRfaGFzaCA8QXV0aG9yaXplckFkZGVkAAAEDHdobwBEQXV0aG9yaXplclJlbW92ZWQAAAQMd2hvAGhFeGhhdXN0ZWRBdXRob3JpemVyUmVtb3ZlZAAABAx3aG8AAhwcUmVuZXdlZAAACBRpbmRleAQwY29udGVudF9oYXNoIDhSZW5ld2FsRW5hYmxlZAAADDBjb250ZW50X2hhc2ggDHdobwAkcmVjdXJyaW5nFExBdXRvUmVuZXdhbERpc2FibGVkAAAIMGNvbnRlbnRfaGFzaCAMd2hvACxEYXRhUmVuZXdlZAAADBRpbmRleAQwY29udGVudF9oYXNoIBxhY2NvdW50ADRSZW5ld2FsRmFpbGVkAAAIMGNvbnRlbnRfaGFzaCAcYWNjb3VudABsUGVybWFuZW50U3RvcmFnZVVzZWRVcGRhdGVkAAAEEHVzZWQIXFBlcm1hbmVudFN0b3JhZ2VOZWFyQ2FwAAAIEHVzZWQIDGNhcAgCEBRTdWRpZAAABCxzdWRvX3Jlc3VsdAkGKEtleUNoYW5nZWQAAAgMb2xkwAxuZXcAKEtleVJlbW92ZWQAAQUoU3Vkb0FzRG9uZQAABCxzdWRvX3Jlc3VsdAkGAkAYU3lzdGVtAQUGPFBhcmFjaGFpblN5c3RlbQGUHFV0aWxpdHkBDQZQTXVsdGlCbG9ja01pZ3JhdGlvbnMBEQYgQmFsYW5jZXMBHQZIVHJhbnNhY3Rpb25QYXltZW50AbRIU2tpcEZlZWxlc3NQYXltZW50ATkGSFRyYW5zYWN0aW9uU3RvcmFnZQE9BixEYXRhUmVuZXdhbAFBBkRDb2xsYXRvclNlbGVjdGlvbgHMHFNlc3Npb24B0CRYY21wUXVldWUB1CxQb2xrYWRvdFhjbQHJAShDdW11bHVzWGNtAc0BME1lc3NhZ2VRdWV1ZQHZARBTdWRvAUUGAAwUcGhhc2U0FGV2ZW50SQYYdG9waWNzCQIETQYAAAgMbWF4PQI8bWF4X2hlYWRlcl9zaXpl8QECDCBGdWxsQ29yZQAABBxjb250ZXh0BERQb3RlbnRpYWxGdWxsQ29yZQAADBxjb250ZXh0BFxmaXJzdF90cmFuc2FjdGlvbl9pbmRlePEBNHRhcmdldF93ZWlnaHQYOEZyYWN0aW9uT2ZDb3JlAAAIHGNvbnRleHQEXGZpcnN0X3RyYW5zYWN0aW9uX2luZGV48QEAGGhyZWxheV9zdG9yYWdlX3Jvb3Rfb3JfaGFzaCA0Y29yZV9zZWxlY3RvcgQwYnVuZGxlX2luZGV4BDR1bXBfbXNnX2NvdW50BExocm1wX291dGJvdW5kX2NvdW50BGBocm1wX291dGJvdW5kX3JlY2lwaWVudHPBAwIgFGJhdGNoAAAEFGNhbGxztQY0YXNfZGVyaXZhdGl2ZQAACBRpbmRleAQQY2FsbLEGJGJhdGNoX2FsbAAABBRjYWxsc7UGLGRpc3BhdGNoX2FzAAAIJGFzX29yaWdpbjUGEGNhbGyxBixmb3JjZV9iYXRjaAAABBRjYWxsc7UGLHdpdGhfd2VpZ2h0AAAIEGNhbGyxBhh3ZWlnaHQYHGlmX2Vsc2UAAAgQbWFpbrEGIGZhbGxiYWNrsQZQZGlzcGF0Y2hfYXNfZmFsbGlibGUAAAgkYXNfb3JpZ2luNQYQY2FsbLEGAAwUaW5kZXgEMGlubmVyX2N1cnNvcvkBKHN0YXJ0ZWRfYXQEAggYQWN0aXZlAWUGFFN0dWNrAAEFBmkGAgggU3BlY2lmaWMBWQIgV2lsZGNhcmQAAAgUbGltaXTxATxwcmV2aW91c19jdXJzb3L5AQIQQGZvcmNlX3NldF9jdXJzb3IAAAQYY3Vyc29ybQZcZm9yY2Vfc2V0X2FjdGl2ZV9jdXJzb3IAAAwUaW5kZXgEMGlubmVyX2N1cnNvcvkBKHN0YXJ0ZWRfYXTxAUhmb3JjZV9vbmJvYXJkX21ibXMAAQU4Y2xlYXJfaGlzdG9yaWMAAAQgc2VsZWN0b3JxBgIMKEJsYWtlMmIyNTYAAQUgU2hhMl8yNTYAAQUkS2VjY2FrMjU2AAEFAAgUY29kZWMIHGhhc2hpbmd5BgAIFGNodW5rJBRwcm9vZlkCBoEGAAgwdHJhbnNhY3Rpb25zBBRieXRlcwgGiQYADBRxdW90YY0GLHZhbGlkX3VudGls8QEcZmVlbGVzcxQCMBRzdG9yZQAABBBkYXRhJFRzdG9yZV93aXRoX2NpZF9jb25maWcAAAgMY2lkfQYQZGF0YSREYXV0aG9yaXplX2FjY291bnQAAAwMd2hvADB0cmFuc2FjdGlvbnMEFGJ5dGVzCEhhdXRob3JpemVfcHJlaW1hZ2UAAAgwY29udGVudF9oYXNoICBtYXhfc2l6ZQiQcmVtb3ZlX2V4cGlyZWRfYWNjb3VudF9hdXRob3JpemF0aW9uAAAEDHdobwCUcmVtb3ZlX2V4cGlyZWRfcHJlaW1hZ2VfYXV0aG9yaXphdGlvbgAABDBjb250ZW50X2hhc2ggdHJlZnJlc2hfYWNjb3VudF9hdXRob3JpemF0aW9uAAAEDHdobwB4cmVmcmVzaF9wcmVpbWFnZV9hdXRob3JpemF0aW9uAAAEMGNvbnRlbnRfaGFzaCBUYXBwbHlfYmxvY2tfaW5oZXJlbnRzAAAEFHByb29mhQY4YWRkX2F1dGhvcml6ZXIAAAgMd2hvABhidWRnZXSRBkRyZW1vdmVfYXV0aG9yaXplcgAABAx3aG8AbHJlbW92ZV9leGhhdXN0ZWRfYXV0aG9yaXplcgAABAx3aG8AAhAcRWQyNTUxOQEgHFNyMjU1MTkBIBRFY2RzYQHlAQxFdGgB5QECEBxFZDI1NTE5Ad0BHFNyMjU1MTkB3QEURWNkc2EB4QEMRXRoAeEBAggccHJvbW90ZQAAEBhzaWduZXKZBiRzaWduYXR1cmWdBkBzdWJtaXRfdGltZXN0YW1wCBBkYXRhJChwcm9tb3RlX3YyAAAUGHNpZ25lcpkGJHNpZ25hdHVyZZ0GQHN1Ym1pdF90aW1lc3RhbXAIPHJlY2lwaWVudHNfaGFzaCAQZGF0YSQCCCBQb3NpdGlvbgAACBRibG9jawQUaW5kZXgELENvbnRlbnRIYXNoASACFBRyZW5ldwAABBRlbnRyeaUGLGZvcmNlX3JlbmV3AAAEFGVudHJ5pQZEZW5hYmxlX2F1dG9fcmVuZXcAAAQwY29udGVudF9oYXNoIEhkaXNhYmxlX2F1dG9fcmVuZXcAAAQwY29udGVudF9oYXNoIGBwcm9jZXNzX3BlbmRpbmdfcmVuZXdhbHMAAQUCFBBzdWRvAAAEEGNhbGyxBlRzdWRvX3VuY2hlY2tlZF93ZWlnaHQAAAgQY2FsbLEGGHdlaWdodBgcc2V0X2tleQAABAxuZXcdAxxzdWRvX2FzAAAIDHdobx0DEGNhbGyxBihyZW1vdmVfa2V5AAEFAkQYU3lzdGVtASkDPFBhcmFjaGFpblN5c3RlbQEtAyRUaW1lc3RhbXABMQM0UGFyYWNoYWluSW5mbwG4HFV0aWxpdHkBYQZQTXVsdGlCbG9ja01pZ3JhdGlvbnMBdQYgQmFsYW5jZXMBNQNIVHJhbnNhY3Rpb25TdG9yYWdlAZUGMEhvcFByb21vdGlvbgGhBixEYXRhUmVuZXdhbAGpBkRDb2xsYXRvclNlbGVjdGlvbgE9AxxTZXNzaW9uAUEDJFhjbXBRdWV1ZQFFAyxQb2xrYWRvdFhjbQGRAyhDdW11bHVzWGNtAbgwTWVzc2FnZVF1ZXVlAZUDEFN1ZG8BrQYEsQYAAgwMWWVzAAEFCE5vAAEFFFN0dWNrAAEFABBEY3VycmVudF9taWdyYXRpb24EQHRvdGFsX21pZ3JhdGlvbnMEXGN1cnJlbnRfbWlncmF0aW9uX3N0ZXBzBGxjdXJyZW50X21pZ3JhdGlvbl9tYXhfc3RlcHPxAQa9BgAMHG9uZ29pbme5BiBwcm9ncmVzc8EGIHByZWZpeGVzWQIACAhpZBkGGGFtb3VudAgEyQYAABQwdHJhbnNhY3Rpb25zBFh0cmFuc2FjdGlvbnNfYWxsb3dhbmNlBBRieXRlcwgUZXh0cmEIPGJ5dGVzX2FsbG93YW5jZQgACBhleHRlbnTRBihleHBpcmF0aW9uBAIIFFN0b3JlAAEFFFJlbmV3AAEFACAoY2h1bmtfcm9vdCAwY29udGVudF9oYXNoIBxoYXNoaW5neQYkY2lkX2NvZGVjCBBzaXplBDxleHRyaW5zaWNfaW5kZXgEMGJsb2NrX2NodW5rcwQQbWV0YdkGBN0GAAAMKHRhZ19wcmVmaXglAiBwcmlvcml0eQgkbG9uZ2V2aXR5CAAMHGFjY291bnQAJHJlY3VycmluZxQQcGFpZBQDDCDdBukGBO0GAAAcJHJlY2lwaWVudAQUc3RhdGXFAzRzaWduYWxzX2V4aXN0FCxmaXJzdF9pbmRleAQobGFzdF9pbmRleAQUZmxhZ3MEMHF1ZXVlZF9ieXRlcwQE9QYAAAggYWxpYXNlcnMdBBh0aWNrZXQIBwkG6QQACBBrZXlzJBRwcm9vZiQEjQMAAhg0VW5pbXBsZW1lbnRlZAABBWRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEFTFdlaWdodE5vdENvbXB1dGFibGUAAQVMVW5oYW5kbGVkWGNtVmVyc2lvbgABBTRBc3NldE5vdEZvdW5kAAEFKFVucm91dGFibGUAAQUHCQcNBwcYDQcHCA0HB70BDQcACDRhY3R1YWxfd2VpZ2h0WQEgcGF5c19mZWU8AAgkcG9zdF9pbmZvIQcUZXJyb3IBBgchByUHBEkGAAaFAwSFAwADCMEBNQcEOQcAABBAZXhlY3V0aW9uX3Jlc3VsdCkHOGVtaXR0ZWRfZXZlbnRzLQckbG9jYWxfeGNtMQc4Zm9yd2FyZGVkX3hjbXM9BwIINFVuaW1wbGVtZW50ZWQAAQVkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABBQdBB0UHAAxAZXhlY3V0aW9uX3Jlc3VsdOA4ZW1pdHRlZF9ldmVudHMtBzhmb3J3YXJkZWRfeGNtcz0HB00HRQcCCCxVbnN1cHBvcnRlZAABBWRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEFBwBVBwIMCFYzAa0BCFY0AbUBCFY1ATEBAgh4VmVyc2lvbmVkQXNzZXRDb252ZXJzaW9uRmFpbGVkAAEFhFZlcnNpb25lZExvY2F0aW9uQ29udmVyc2lvbkZhaWxlZAABBQcUYQcCBHxMb2NhdGlvblZlcnNpb25Db252ZXJzaW9uRmFpbGVkAAEFBx0EaQcHFGkHABQwY29udGVudF9oYXNoIBBzaXplBBxoYXNoaW5neQYkY2lkX2NvZGVjCDxleHRyaW5zaWNfaW5kZXgEBHUHAAAYKGV4cGlyZXNfYXQEPGJ5dGVzX2FsbG93YW5jZQgoYnl0ZXNfdXNlZAhQYnl0ZXNfcGVybWFuZW50X3VzZWQIWHRyYW5zYWN0aW9uc19hbGxvd2FuY2UERHRyYW5zYWN0aW9uc191c2VkBAZ9Bw=="; export default content; diff --git a/web/.papi/descriptors/generated.json b/web/.papi/descriptors/generated.json index 8c2c0b92..8d417500 100644 --- a/web/.papi/descriptors/generated.json +++ b/web/.papi/descriptors/generated.json @@ -1 +1 @@ -{"cliVersion":"0.18.1","whitelist":null,"chains":{"stack_template":"0xfef41578bb25d6930df9e56aae443424","bulletin":"0x5c7968c489c7a9fdf8a9e25bec077512"},"contracts":{"ink":{},"sol":{}}} \ No newline at end of file +{"cliVersion":"0.18.1","whitelist":null,"chains":{"stack_template":"0xfef41578bb25d6930df9e56aae443424","bulletin":"0xe662048ff525485b25e317f3b4394102"},"contracts":{"ink":{},"sol":{}}} \ No newline at end of file diff --git a/web/.papi/descriptors/package.json b/web/.papi/descriptors/package.json index e64817c4..b8318579 100644 --- a/web/.papi/descriptors/package.json +++ b/web/.papi/descriptors/package.json @@ -1,5 +1,5 @@ { - "version": "0.1.0-autogenerated.13107387519518407957", + "version": "0.1.0-autogenerated.4661397993146140695", "name": "@polkadot-api/descriptors", "files": [ "dist" diff --git a/web/.papi/metadata/bulletin.scale b/web/.papi/metadata/bulletin.scale index ccebafea..d272277b 100644 Binary files a/web/.papi/metadata/bulletin.scale and b/web/.papi/metadata/bulletin.scale differ diff --git a/web/.papi/polkadot-api.json b/web/.papi/polkadot-api.json index c6d587e7..86fde857 100644 --- a/web/.papi/polkadot-api.json +++ b/web/.papi/polkadot-api.json @@ -9,10 +9,10 @@ "codeHash": "0x5d82548ee8362ca123514269ea6df6f1ad252e4f120516b810bcb2cb29957eb8" }, "bulletin": { - "wsUrl": "wss://paseo-bulletin-rpc.polkadot.io", + "wsUrl": "wss://bulletin-paseo.tservices.es:8443", "metadata": ".papi/metadata/bulletin.scale", - "genesis": "0x744960c32e3a3df5440e1ecd4d34096f1ce2230d7016a5ada8a765d5a622b4ea", - "codeHash": "0x1a82e5143be3211ded412b0368b486ce83bd41a80ec95eb267f6c204adda8365" + "genesis": "0xe101f0fa4627d29a257645e02be86d80378fea1a2bf8fa6a918d150ebc760a59", + "codeHash": "0xcfc45b6f601f6e2971053639331432857feea30c7668279df079b33eed7e01dc" } } } diff --git a/web/README.md b/web/README.md index 6b69e835..a2b38f23 100644 --- a/web/README.md +++ b/web/README.md @@ -39,7 +39,7 @@ Useful environment variables: `VITE_PUBLIC_APP_URL`: Product-host detection, app-scoped account identifier, and canonical room-link origin. - `VITE_LOCAL_WS_URL` / `VITE_LOCAL_ETH_RPC_URL`: local development endpoints. -- `VITE_BULLETIN_WS_URL`: Paseo Bulletin Chain RPC. +- `VITE_BULLETIN_WS_URL`: Product DevNet Bulletin Chain RPC. - `VITE_PINATA_JWT`: restricted browser-exposed Pinata JWT for demo uploads when `VITE_DOTIFY_API_URL` is unset. - `VITE_PINATA_GATEWAY`: primary gateway used when rendering IPFS assets. @@ -173,13 +173,14 @@ can be distributed from a flat IPFS CID / DotNS record. `build:product-devnet` produces `dist-product` with the checked-in `.env.product-devnet` profile. `deploy:product-devnet` uses -`@polkadot-community-foundation/polkadot-app-deploy@0.13.1` through `npx`, uploads static chunks to -Product DevNet Bulletin, and binds `dotify-test01.dot`. Browse listing is a separate -operator step because it has its own signer/personhood boundary. The Product account currently -provides app-scoped identity for presence and rooms in the shipped UI. The API -can verify `product-sr25519-v1` key/session requests, but the frontend still -uses the existing passkey/EVM signer until host-signed request wiring lands. -Contract writes also remain on the passkey/EVM path. +`@polkadot-community-foundation/polkadot-app-deploy@0.16.2` through `npx`, +uploads static chunks to Product DevNet Bulletin, and binds `dotify-test01.dot` +through the post-September 2026 DotNS tooling. Browse listing is a separate +operator step because it has its own signer/personhood boundary. The Product +account currently provides app-scoped identity for presence and rooms in the +shipped UI. The API can verify `product-sr25519-v1` key/session requests, but +native Product contract writes remain opt-in behind `VITE_DOTIFY_RUNTIME_ADAPTER=product-cdm` +until live host payment evidence is recorded. See [`docs/explanation/product-devnet-architecture.md`](../docs/explanation/product-devnet-architecture.md) diff --git a/web/fixtures/product-devnet-catalog.json b/web/fixtures/product-devnet-catalog.json index 599331db..5d7da5e8 100644 --- a/web/fixtures/product-devnet-catalog.json +++ b/web/fixtures/product-devnet-catalog.json @@ -301,9 +301,9 @@ "meta": { "state": "stale-cache", "cacheAvailable": true, - "indexedAt": "2026-09-07T23:39:01.906Z", - "lastIndexedBlock": 13134392, - "chainHeadBlock": 13134394, + "indexedAt": "2026-09-12T05:31:46.695Z", + "lastIndexedBlock": 13214871, + "chainHeadBlock": 13214873, "blockLag": 2, "staleAfterMs": 60000, "lastErrorCode": null diff --git a/web/package-lock.json b/web/package-lock.json index ae48a9c3..b64fd346 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -8,10 +8,10 @@ "name": "dotify-web", "version": "0.1.0", "dependencies": { - "@parity/product-sdk": "0.23.0", - "@parity/product-sdk-descriptors": "0.10.0", - "@parity/product-sdk-host": "0.16.0", - "@parity/product-sdk-statement-store": "0.6.5", + "@parity/product-sdk": "0.27.0", + "@parity/product-sdk-descriptors": "0.11.0", + "@parity/product-sdk-host": "0.19.1", + "@parity/product-sdk-statement-store": "0.6.9", "@polkadot-api/descriptors": "file:.papi/descriptors", "@polkadot-apps/chain-client": "^2.0.5", "@polkadot-apps/descriptors": "^1.0.1", @@ -57,7 +57,7 @@ }, ".papi/descriptors": { "name": "@polkadot-api/descriptors", - "version": "0.1.0-autogenerated.13107387519518407957", + "version": "0.1.0-autogenerated.4661397993146140695", "peerDependencies": { "polkadot-api": ">=1.21.0" } @@ -980,9 +980,9 @@ } }, "node_modules/@ipld/dag-pb": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-4.1.7.tgz", - "integrity": "sha512-/i/13trFihjWfDyXlylRwhuYjtzYjvOFw0vlRjYGnZuv7d7MOgA2lV/vRuL5RfeUajM03aZfFLdq4S7cTbbTRg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-4.2.0.tgz", + "integrity": "sha512-T2hsy18NNAUkIiQgvtrhKJXIkTjKcGHPJzp6mYp/tx4x0X9wedUTrCNADEP4hAS7Vy4/bJtc37eX4GSDFiKLhw==", "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^14.0.0" @@ -1185,24 +1185,24 @@ } }, "node_modules/@parity/product-sdk": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@parity/product-sdk/-/product-sdk-0.23.0.tgz", - "integrity": "sha512-6vOI2kvB94XXYcICR/D8+2w70fvc5SNZ7P92fQ7MZPCChTkd65R5KiEXt+N1FFCLnXFC5LVWKMZgeFXEw79mxw==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@parity/product-sdk/-/product-sdk-0.27.0.tgz", + "integrity": "sha512-0hYEO7yrtw4L+7d99d3yfkVBmtYBonRto5usLQoKr2yW2BKBP6cYr0qaE6wr2LVsOSj3fdYJZbNsbsdwJw9RUg==", "license": "Apache-2.0", "dependencies": { "@parity/product-sdk-address": "0.2.0", - "@parity/product-sdk-chain-client": "0.11.0", - "@parity/product-sdk-cloud-storage": "0.10.2", - "@parity/product-sdk-contracts": "0.10.3", + "@parity/product-sdk-chain-client": "0.12.3", + "@parity/product-sdk-cloud-storage": "0.11.3", + "@parity/product-sdk-contracts": "0.10.7", "@parity/product-sdk-crypto": "0.1.1", "@parity/product-sdk-errors": "0.2.0", - "@parity/product-sdk-host": "0.16.0", - "@parity/product-sdk-individuality": "0.2.0", - "@parity/product-sdk-keys": "0.3.20", - "@parity/product-sdk-local-storage": "0.3.5", + "@parity/product-sdk-host": "0.19.1", + "@parity/product-sdk-individuality": "0.4.0", + "@parity/product-sdk-keys": "0.3.24", + "@parity/product-sdk-local-storage": "0.3.9", "@parity/product-sdk-logger": "0.1.1", - "@parity/product-sdk-signer": "0.14.0", - "@parity/product-sdk-tx": "0.4.3", + "@parity/product-sdk-signer": "0.14.4", + "@parity/product-sdk-tx": "0.4.7", "@parity/result": "0.2.0", "polkadot-api": "^2.1.6" }, @@ -1244,13 +1244,13 @@ "license": "MIT" }, "node_modules/@parity/product-sdk-chain-client": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@parity/product-sdk-chain-client/-/product-sdk-chain-client-0.11.0.tgz", - "integrity": "sha512-whIMyAXuJ8NdhOSXHFwtF5NXrT3JH3Kp/fgsp9dcoFctQF3lUDOnKDZZgmWHXZsYpZt4iSBQ93RzoQMfkjVfmA==", + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/@parity/product-sdk-chain-client/-/product-sdk-chain-client-0.12.3.tgz", + "integrity": "sha512-ObFl2vVNKQFNjUhXqhmU8fTr6XC7mbazAWlG2xZVz0q7oeoNqC5zSNw8srUb9tRy4wa5e8hMXZtxwt4MDFfZQA==", "license": "Apache-2.0", "dependencies": { - "@parity/product-sdk-descriptors": "0.10.0", - "@parity/product-sdk-host": "0.16.0", + "@parity/product-sdk-descriptors": "0.11.0", + "@parity/product-sdk-host": "0.19.1", "@parity/product-sdk-logger": "0.1.1", "polkadot-api": "^2.1.6" } @@ -1459,18 +1459,18 @@ } }, "node_modules/@parity/product-sdk-cloud-storage": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@parity/product-sdk-cloud-storage/-/product-sdk-cloud-storage-0.10.2.tgz", - "integrity": "sha512-1m9d/6k2tSqn8zr2/wiSs6Q+pv6Ju+m3MjdR7EwLG/6Oo15gBqQs2vi1N3XGceLFQL0M/J/+TNJ2ylMufRXgsQ==", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@parity/product-sdk-cloud-storage/-/product-sdk-cloud-storage-0.11.3.tgz", + "integrity": "sha512-zE05F7cbXYwmoltn17xVvAZSa4uI3dqmDSnBA+LQ+Y6EOX5h/9uoM4tflaIC82mnHmLGaTlmsOmFxu9Mr81IKA==", "license": "Apache-2.0", "dependencies": { "@parity/bulletin-sdk": "^0.3.0", - "@parity/product-sdk-chain-client": "0.11.0", - "@parity/product-sdk-descriptors": "0.10.0", + "@parity/product-sdk-chain-client": "0.12.3", + "@parity/product-sdk-descriptors": "0.11.0", "@parity/product-sdk-errors": "0.2.0", - "@parity/product-sdk-host": "0.16.0", + "@parity/product-sdk-host": "0.19.1", "@parity/product-sdk-logger": "0.1.1", - "@parity/product-sdk-tx": "0.4.3", + "@parity/product-sdk-tx": "0.4.7", "@parity/result": "0.2.0", "multiformats": "^13.3.0", "polkadot-api": "^2.1.6" @@ -1712,17 +1712,17 @@ } }, "node_modules/@parity/product-sdk-contracts": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@parity/product-sdk-contracts/-/product-sdk-contracts-0.10.3.tgz", - "integrity": "sha512-0efpE8NS3Ej0HU1b1Qs5ZdiaBCV0b1oKvF3LKqGWsLRGi3kHWMDSJv6ZlXc+cUM05BNJ2NBAy/IXjI3D875xuA==", + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/@parity/product-sdk-contracts/-/product-sdk-contracts-0.10.7.tgz", + "integrity": "sha512-Ab8jFxbqKYFzDapxS1wYMdZdsjxKougQg3tZdfS6+q2EQccKZjBeRo3fCG4V6FjKhosSHHPCfc+L9uxCFv0c0Q==", "license": "Apache-2.0", "dependencies": { "@parity/product-sdk-address": "0.2.0", "@parity/product-sdk-errors": "0.2.0", - "@parity/product-sdk-keys": "0.3.20", + "@parity/product-sdk-keys": "0.3.24", "@parity/product-sdk-logger": "0.1.1", - "@parity/product-sdk-signer": "0.14.0", - "@parity/product-sdk-tx": "0.4.3", + "@parity/product-sdk-signer": "0.14.4", + "@parity/product-sdk-tx": "0.4.7", "@parity/result": "0.2.0", "@polkadot-labs/hdkd-helpers": "^0.0.30", "polkadot-api": "^2.1.6", @@ -1985,9 +1985,9 @@ } }, "node_modules/@parity/product-sdk-descriptors": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@parity/product-sdk-descriptors/-/product-sdk-descriptors-0.10.0.tgz", - "integrity": "sha512-+dhbZQqiBQYaKot8loFeX8Km8cBl4qLPjBfYiS1mBk5iY19/C1JIymAHl/1l28C9YmT8pY92IDCyPPoc8wHgew==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@parity/product-sdk-descriptors/-/product-sdk-descriptors-0.11.0.tgz", + "integrity": "sha512-YZMphXXVs6BXJjItqkfo7APgwdPBbtVrgEwaPAzg6HNCTV/+yTFVucCE+eteE/h5f0H4vUFEPtgILB8CSFhlkg==", "license": "Apache-2.0", "dependencies": { "polkadot-api": "^2.1.6" @@ -2203,15 +2203,15 @@ "license": "Apache-2.0" }, "node_modules/@parity/product-sdk-host": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@parity/product-sdk-host/-/product-sdk-host-0.16.0.tgz", - "integrity": "sha512-kGwN1XpAAJ+T0WCNnmI3G88zbiNIMUnW9LBbG9xuhugtzALVqzV8n77pnVIpsJb68EKHnyZHZbNmYa81vFMGtg==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@parity/product-sdk-host/-/product-sdk-host-0.19.1.tgz", + "integrity": "sha512-6WlyC4rMoIOyFxBS+zlfMCQicPeWwp7c8G6hStBbynqDdhhEDJZX+1CNHcjpddRMj8zrE2qY5Lnxb8Wsmy9WMA==", "license": "Apache-2.0", "dependencies": { "@parity/product-sdk-errors": "0.2.0", "@parity/product-sdk-logger": "0.1.1", "@parity/result": "0.2.0", - "@parity/truapi": "^0.9.0", + "@parity/truapi": "^0.13.1", "@polkadot-api/json-rpc-provider": "^0.2.0", "@polkadot-api/substrate-bindings": "^0.20.3", "neverthrow": "^8.2.0", @@ -2422,9 +2422,9 @@ } }, "node_modules/@parity/product-sdk-individuality": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@parity/product-sdk-individuality/-/product-sdk-individuality-0.2.0.tgz", - "integrity": "sha512-LVitI4ddTNCv1dJFy26LxzUpxmv3nVGmdEKnDq2Fk9w5Z9VLX6iyWvRqmjlnqHrCaK+rNb174e2IQLwWrOZocA==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@parity/product-sdk-individuality/-/product-sdk-individuality-0.4.0.tgz", + "integrity": "sha512-P54KldT7A0hMBQ2ZLVtTiG7QDcG0WECnOzmcw0clbSBIPLYuEt4kyJjlCWDM5HZ1oZwkJJCQKBt1Zj+Bp4xYig==", "license": "Apache-2.0", "dependencies": { "@parity/product-sdk-errors": "0.2.0", @@ -2639,14 +2639,14 @@ } }, "node_modules/@parity/product-sdk-keys": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@parity/product-sdk-keys/-/product-sdk-keys-0.3.20.tgz", - "integrity": "sha512-Wym46ka1AaLRZr/ZnTw2R0cIZcUrxcY30S86ebj22GTlc3i2gjbGhr9mnL5HyiFQFXVIDxyIMf0Y4c7NgioHew==", + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/@parity/product-sdk-keys/-/product-sdk-keys-0.3.24.tgz", + "integrity": "sha512-f5P7TCWWwTm7p26wtITewtGEaKTMftxwIW0S7oQRzxOEqycUAhSid/Zr7eUp8xKADZZz9EyrcGNBhjWMN1LIww==", "license": "Apache-2.0", "dependencies": { "@parity/product-sdk-address": "0.2.0", "@parity/product-sdk-crypto": "0.1.1", - "@parity/product-sdk-local-storage": "0.3.5", + "@parity/product-sdk-local-storage": "0.3.9", "@polkadot-labs/hdkd": "^0.0.28", "@polkadot-labs/hdkd-helpers": "^0.0.30", "@scure/sr25519": "^2.2.0", @@ -2655,12 +2655,12 @@ } }, "node_modules/@parity/product-sdk-keys/node_modules/@noble/curves": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.3.0.tgz", - "integrity": "sha512-v7cY+4oWYPQszRj6ZFGzTVL7uP2TaLo1xMhWHzYC5wj0ZhOXQ5x+sBre8rF3hi8cAoi0bh1qXoovoOkdFtvqEg==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.4.0.tgz", + "integrity": "sha512-P4/62zrgfH33CneE3Dn4WhJVA22YUU0eR51wKIan4NVRvwsA0YnPTwWGpNbpuacSujmSFLvyzpyuR30+fbq2Ew==", "license": "MIT", "dependencies": { - "@noble/hashes": "2.3.0" + "@noble/hashes": "2.4.0" }, "engines": { "node": ">= 20.19.0" @@ -2670,9 +2670,9 @@ } }, "node_modules/@parity/product-sdk-keys/node_modules/@noble/hashes": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.3.0.tgz", - "integrity": "sha512-oN+QwyX7VSHotibwubG3kpzbwKrfnyR6OOO+3Nk/53ADL7FmgHHz4TgrbaYKvvOw09u6QTx0oiH1cNCIOuN0CQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.4.0.tgz", + "integrity": "sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==", "license": "MIT", "engines": { "node": ">= 20.19.0" @@ -2894,13 +2894,13 @@ } }, "node_modules/@parity/product-sdk-keys/node_modules/@scure/sr25519": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@scure/sr25519/-/sr25519-2.3.0.tgz", - "integrity": "sha512-BVXcSoPYjt16qPn3JZVDiIxYBnjJ8Vh6w/E8rVAlsjCmU8lw41YwbHLT85dkUqQdX7H6dMybF0cMv70uHcwJPA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@scure/sr25519/-/sr25519-2.4.0.tgz", + "integrity": "sha512-Xzpy/MuVqR8wNHrXrz6HHLqCI8nPirQmJEhOMabZ8jSrM6bQiDg+1xkUgw4+Kr7857u3xxQL/PfKFeav9rodZg==", "license": "MIT", "dependencies": { - "@noble/curves": "~2.3.0", - "@noble/hashes": "~2.3.0" + "@noble/curves": "2.4.0", + "@noble/hashes": "2.4.0" }, "engines": { "node": ">= 20.19.0" @@ -2966,12 +2966,12 @@ } }, "node_modules/@parity/product-sdk-local-storage": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@parity/product-sdk-local-storage/-/product-sdk-local-storage-0.3.5.tgz", - "integrity": "sha512-cHW5HlYbtBZpHMbhF8QIWpYKvVNxRZtyjC1wKj01tXvNibg16vrhtg9MyAWUrl5cbzMDlRKIkyr4lP37kDHo2A==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@parity/product-sdk-local-storage/-/product-sdk-local-storage-0.3.9.tgz", + "integrity": "sha512-xHQq97Mfjb9XWdaQFCSu8lowXGFpqbtM2SCVavhiYUM7UREUiqcV9UDcSnbB3TrXFu8kF6uzmAbxnA/ZTn/urQ==", "license": "Apache-2.0", "dependencies": { - "@parity/product-sdk-host": "0.16.0", + "@parity/product-sdk-host": "0.19.1", "@parity/product-sdk-logger": "0.1.1" } }, @@ -2982,15 +2982,15 @@ "license": "Apache-2.0" }, "node_modules/@parity/product-sdk-signer": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@parity/product-sdk-signer/-/product-sdk-signer-0.14.0.tgz", - "integrity": "sha512-ibmv1hThYB6qvkacoH/CuCpvetqhdC/alJnZVTCmjUE3qj/rWqKlDmDuuXlZu+4Zlf2eV3EGcxyddb74dHo84A==", + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/@parity/product-sdk-signer/-/product-sdk-signer-0.14.4.tgz", + "integrity": "sha512-9RE4Nff9Bzxo9uoxX/ZLdqyIksKZ75iwEmE/mpjsCQEhVK8g5DXK/trXc7MvqlaXTnfkYU+M/zORfqi97xJ7zQ==", "license": "Apache-2.0", "dependencies": { "@parity/product-sdk-address": "0.2.0", "@parity/product-sdk-errors": "0.2.0", - "@parity/product-sdk-host": "0.16.0", - "@parity/product-sdk-keys": "0.3.20", + "@parity/product-sdk-host": "0.19.1", + "@parity/product-sdk-keys": "0.3.24", "@parity/product-sdk-logger": "0.1.1", "@parity/result": "0.2.0", "polkadot-api": "^2.1.6" @@ -3200,13 +3200,13 @@ } }, "node_modules/@parity/product-sdk-statement-store": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@parity/product-sdk-statement-store/-/product-sdk-statement-store-0.6.5.tgz", - "integrity": "sha512-wlf3zzhp6dK8HP7gBrOlGsuBdCYPQ6jgI4ESprDHDqbUOeSpPoNv0hUEC/aMzgIEgl86JH7X/PxZnLupWFnugg==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/@parity/product-sdk-statement-store/-/product-sdk-statement-store-0.6.9.tgz", + "integrity": "sha512-BS0ISWS6qFgUBrM2vAuKgLmgN+ZhNxL+5jDzubklSaJTuM7ew+w5HJHS7s64oVd063uZHYi7LGt7viLc+ZJg0g==", "license": "Apache-2.0", "dependencies": { "@parity/product-sdk-errors": "0.2.0", - "@parity/product-sdk-host": "0.16.0", + "@parity/product-sdk-host": "0.19.1", "@parity/product-sdk-logger": "0.1.1", "@parity/product-sdk-utils": "0.1.1", "@parity/result": "0.2.0", @@ -3418,13 +3418,13 @@ } }, "node_modules/@parity/product-sdk-tx": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@parity/product-sdk-tx/-/product-sdk-tx-0.4.3.tgz", - "integrity": "sha512-CIDV7LH/JPechGDFjg2qyB/kUo3ZizQAM24mFDbGS+Yj7rRLMwtasQ/pUDWohJzMN790eqJmaXHWt6vuTQWtVw==", + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/@parity/product-sdk-tx/-/product-sdk-tx-0.4.7.tgz", + "integrity": "sha512-8kz0+rUG1HcZq+XPc5DTIsKOevylEPIBo3jYHvfcwC1ME2HawDr8fRNb3NvfpD766fbc7a7xPcI1Flc71Z76fA==", "license": "Apache-2.0", "dependencies": { "@parity/product-sdk-errors": "0.2.0", - "@parity/product-sdk-keys": "0.3.20", + "@parity/product-sdk-keys": "0.3.24", "@parity/product-sdk-logger": "0.1.1", "@parity/result": "0.2.0", "@polkadot-labs/hdkd-helpers": "^0.0.30", @@ -3878,9 +3878,9 @@ "license": "Apache-2.0" }, "node_modules/@parity/truapi": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@parity/truapi/-/truapi-0.9.0.tgz", - "integrity": "sha512-mndLyirfLFGYhlMKj10kMvovUk8v5h58z3f4u47yDb6bn5cmYlkf37fIsXC3rXEBGRL78yMv83O0xWrS3K2RVA==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@parity/truapi/-/truapi-0.13.1.tgz", + "integrity": "sha512-6gkfHskN8I7H5DwB7j96wRusVx7xuGzu1YGWLBLPCD1RtBSnkPaQq/8Ac3MwudNz8kYqKZ5kZao3EkJ4PN4nCg==", "license": "MIT", "dependencies": { "@noble/hashes": "^2.2.0", diff --git a/web/package.json b/web/package.json index 0795d237..b401ddaf 100644 --- a/web/package.json +++ b/web/package.json @@ -20,7 +20,7 @@ "build:product-devnet:beacons": "VITE_DOTIFY_ROOM_BEACONS=on npm run build:product-devnet", "deploy:bulletin": "node scripts/deploy-bulletin.cjs", "deploy:product-devnet:check-mnemonic": "node -e \"if (!process.env.MNEMONIC?.trim()) { console.error('MNEMONIC is required for Product DevNet deploy. Export the DotNS owner mnemonic before running npm run deploy:product-devnet.'); process.exit(1); }\"", - "deploy:product-devnet": "npm run deploy:product-devnet:check-mnemonic && npm run build:product-devnet && npx --yes --package @polkadot-community-foundation/polkadot-app-deploy@0.13.1 pad ./dist-product dotify-test01.dot --env devnet --js-merkle --config ./polkadot-app-deploy.config.ts --mnemonic \"$MNEMONIC\" --no-transfer-to-signedin-user", + "deploy:product-devnet": "npm run deploy:product-devnet:check-mnemonic && npm run build:product-devnet && npx --yes --package @polkadot-community-foundation/polkadot-app-deploy@0.16.2 pad ./dist-product dotify-test01.dot --env devnet --js-merkle --config ./polkadot-app-deploy.config.ts --mnemonic \"$MNEMONIC\" --no-transfer-to-signedin-user", "deploy:product-devnet:beacons": "VITE_DOTIFY_ROOM_BEACONS=on npm run deploy:product-devnet", "smoke:production-env": "node scripts/production-env-smoke.mjs", "smoke:devnet": "node scripts/devnet-endpoint-smoke.mjs", @@ -38,10 +38,10 @@ "preview": "vite preview --host 0.0.0.0 --port 4273" }, "dependencies": { - "@parity/product-sdk": "0.23.0", - "@parity/product-sdk-descriptors": "0.10.0", - "@parity/product-sdk-host": "0.16.0", - "@parity/product-sdk-statement-store": "0.6.5", + "@parity/product-sdk": "0.27.0", + "@parity/product-sdk-descriptors": "0.11.0", + "@parity/product-sdk-host": "0.19.1", + "@parity/product-sdk-statement-store": "0.6.9", "@polkadot-api/descriptors": "file:.papi/descriptors", "@polkadot-apps/chain-client": "^2.0.5", "@polkadot-apps/descriptors": "^1.0.1", diff --git a/web/polkadot-app-deploy.config.ts b/web/polkadot-app-deploy.config.ts index 8238d5e4..77d9a500 100644 --- a/web/polkadot-app-deploy.config.ts +++ b/web/polkadot-app-deploy.config.ts @@ -10,7 +10,7 @@ export default { { kind: 'app', path: './dist-product', - appVersion: [0, 1, 14] + appVersion: [0, 1, 15] } ] }; diff --git a/web/scripts/deploy-bulletin.cjs b/web/scripts/deploy-bulletin.cjs index ba52aa15..b3973942 100644 --- a/web/scripts/deploy-bulletin.cjs +++ b/web/scripts/deploy-bulletin.cjs @@ -22,8 +22,9 @@ const { sr25519CreateDerive } = require(path.join(nm, '@polkadot-labs/hdkd')); const { DEV_PHRASE, entropyToMiniSecret, mnemonicToEntropy, ss58Address } = require(path.join(nm, '@polkadot-labs/hdkd-helpers')); const { getPolkadotSigner } = require(path.join(nm, 'polkadot-api/dist/reexports/signer.js')); -const BULLETIN_WS = process.env.VITE_BULLETIN_WS_URL || 'wss://paseo-bulletin-rpc.polkadot.io'; -const GATEWAY = 'https://paseo-ipfs.polkadot.io/ipfs/'; +// Product DevNet Bulletin (Paseo Bulletin, para 1010). +const BULLETIN_WS = process.env.VITE_BULLETIN_WS_URL || 'wss://bulletin-paseo.tservices.es:8443'; +const GATEWAY = process.env.BULLETIN_GATEWAY_URL || 'https://bulletin-kubo.tservices.es:9443/ipfs/'; const UPLOAD_TIMEOUT_MS = 120_000; const HTML_PATH = path.resolve(__dirname, '../dist-bulletin/index.html'); diff --git a/web/src/services/pinata.test.ts b/web/src/services/pinata.test.ts index 8f5aa34b..24e5e37d 100644 --- a/web/src/services/pinata.test.ts +++ b/web/src/services/pinata.test.ts @@ -37,17 +37,19 @@ describe('getGatewayUrlsForAssetRef', () => { 'https://gateway.pinata.cloud/ipfs/QmCoverCid', 'https://ipfs.io/ipfs/QmCoverCid', 'https://dweb.link/ipfs/QmCoverCid', - 'https://paseo-ipfs.polkadot.io/ipfs/QmCoverCid' + 'https://devnet-ipfs.api.polkadotcommunity.foundation/ipfs/QmCoverCid', + 'https://bulletin-kubo.tservices.es:9443/ipfs/QmCoverCid' ]); }); it('keeps an existing gateway URL first and appends other gateway fallbacks', async () => { const { getGatewayUrlsForAssetRef } = await loadPinataService(); - expect(getGatewayUrlsForAssetRef('https://paseo-ipfs.polkadot.io/ipfs/QmCoverCid')).toEqual([ - 'https://paseo-ipfs.polkadot.io/ipfs/QmCoverCid', + expect(getGatewayUrlsForAssetRef('https://bulletin-kubo.tservices.es:9443/ipfs/QmCoverCid')).toEqual([ + 'https://bulletin-kubo.tservices.es:9443/ipfs/QmCoverCid', 'https://gateway.pinata.cloud/ipfs/QmCoverCid', 'https://ipfs.io/ipfs/QmCoverCid', - 'https://dweb.link/ipfs/QmCoverCid' + 'https://dweb.link/ipfs/QmCoverCid', + 'https://devnet-ipfs.api.polkadotcommunity.foundation/ipfs/QmCoverCid' ]); }); @@ -66,7 +68,8 @@ describe('getGatewayUrlsForAssetRef', () => { 'https://ipfs.io/ipfs/QmCoverCid', 'https://gateway.pinata.cloud/ipfs/QmCoverCid', 'https://dweb.link/ipfs/QmCoverCid', - 'https://paseo-ipfs.polkadot.io/ipfs/QmCoverCid' + 'https://devnet-ipfs.api.polkadotcommunity.foundation/ipfs/QmCoverCid', + 'https://bulletin-kubo.tservices.es:9443/ipfs/QmCoverCid' ]); }); }); @@ -93,11 +96,11 @@ describe('fetchAssetRef', () => { const { fetchAssetRef } = await loadPinataService(); const fetchMock = vi.spyOn(globalThis, 'fetch').mockRejectedValueOnce(new TypeError('Failed to fetch')).mockResolvedValueOnce(new Response('ok')); - const response = await fetchAssetRef('https://paseo-ipfs.polkadot.io/ipfs/QmAudioCid'); + const response = await fetchAssetRef('https://bulletin-kubo.tservices.es:9443/ipfs/QmAudioCid'); expect(await response.text()).toBe('ok'); expect(fetchMock.mock.calls.map(([url]) => url)).toEqual([ - 'https://paseo-ipfs.polkadot.io/ipfs/QmAudioCid', + 'https://bulletin-kubo.tservices.es:9443/ipfs/QmAudioCid', 'https://gateway.pinata.cloud/ipfs/QmAudioCid' ]); }); diff --git a/web/src/services/pinata.ts b/web/src/services/pinata.ts index 3c29fb0e..8466be78 100644 --- a/web/src/services/pinata.ts +++ b/web/src/services/pinata.ts @@ -35,7 +35,12 @@ const READ_GATEWAYS = (import.meta.env.VITE_IPFS_READ_GATEWAYS as string | undef ?.split(',') .map(gateway => gateway.trim()) .filter(Boolean); -const FALLBACK_GATEWAYS = ['https://ipfs.io', 'https://dweb.link', 'https://paseo-ipfs.polkadot.io']; +const FALLBACK_GATEWAYS = [ + 'https://ipfs.io', + 'https://dweb.link', + 'https://devnet-ipfs.api.polkadotcommunity.foundation', + 'https://bulletin-kubo.tservices.es:9443' +]; const AUDIO_READ_TIMEOUT_MS = 20_000; const AUDIO_READ_HEDGE_DELAY_MS = 8_000; diff --git a/web/src/services/productDevnetCatalogBootstrap.ts b/web/src/services/productDevnetCatalogBootstrap.ts index fd7851e9..222d7c0d 100644 --- a/web/src/services/productDevnetCatalogBootstrap.ts +++ b/web/src/services/productDevnetCatalogBootstrap.ts @@ -298,9 +298,9 @@ export const PRODUCT_DEVNET_BOOTSTRAP_CATALOG: CatalogApiResponse = { meta: { state: 'stale-cache', cacheAvailable: true, - indexedAt: '2026-09-07T23:39:01.906Z', - lastIndexedBlock: 13134392, - chainHeadBlock: 13134394, + indexedAt: '2026-09-12T05:31:46.695Z', + lastIndexedBlock: 13214871, + chainHeadBlock: 13214873, blockLag: 2, staleAfterMs: 60000, lastErrorCode: null diff --git a/web/src/shared/config/network.ts b/web/src/shared/config/network.ts index 8141f403..2b1110f5 100644 --- a/web/src/shared/config/network.ts +++ b/web/src/shared/config/network.ts @@ -4,7 +4,7 @@ export const LOCAL_WS_URL = import.meta.env.VITE_LOCAL_WS_URL || 'ws://localhost export const LOCAL_ETH_RPC_URL = import.meta.env.VITE_LOCAL_ETH_RPC_URL || 'http://localhost:8545'; export const TESTNET_WS_URL = 'wss://services.polkadothub-rpc.com/testnet'; export const TESTNET_ETH_RPC_URL = 'https://eth-rpc-testnet.polkadot.io/'; -export const BULLETIN_WS_URL = import.meta.env.VITE_BULLETIN_WS_URL || 'wss://paseo-bulletin-rpc.polkadot.io'; +export const BULLETIN_WS_URL = import.meta.env.VITE_BULLETIN_WS_URL || 'wss://bulletin-paseo.tservices.es:8443'; export type NetworkPreset = 'local' | 'testnet';