From c65010a06787f3cb9c63b669220f373c578dd8f4 Mon Sep 17 00:00:00 2001 From: Imod7 Date: Tue, 4 Jun 2024 13:38:05 +0200 Subject: [PATCH 01/26] fix: claimed in staking info endpoint --- .../accounts/AccountsStakingInfoService.ts | 40 +++++++++++++++++-- src/types/responses/AccountStakingInfo.ts | 15 +++++-- 2 files changed, 49 insertions(+), 6 deletions(-) diff --git a/src/services/accounts/AccountsStakingInfoService.ts b/src/services/accounts/AccountsStakingInfoService.ts index 49b2c8aa8..95d489a05 100644 --- a/src/services/accounts/AccountsStakingInfoService.ts +++ b/src/services/accounts/AccountsStakingInfoService.ts @@ -1,4 +1,4 @@ -// Copyright 2017-2022 Parity Technologies (UK) Ltd. +// Copyright 2017-2024 Parity Technologies (UK) Ltd. // This file is part of Substrate API Sidecar. // // Substrate API Sidecar is free software: you can redistribute it and/or modify @@ -14,9 +14,10 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +import type { u32, Vec } from '@polkadot/types'; import { BlockHash } from '@polkadot/types/interfaces'; import { BadRequest, InternalServerError } from 'http-errors'; -import { IAccountStakingInfo } from 'src/types/responses'; +import { IAccountStakingInfo, IStakingLedger } from 'src/types/responses'; import { AbstractService } from '../AbstractService'; @@ -59,6 +60,33 @@ export class AccountsStakingInfoService extends AbstractService { const stakingLedger = stakingLedgerOption.unwrapOr(null); + const currentEraMaybeOption = await historicApi.query.staking.currentEra(); + const currentEra = currentEraMaybeOption.unwrap().toNumber(); + let claimedRewards = []; + if (stakingLedger?.legacyClaimedRewards) { + claimedRewards = stakingLedger?.legacyClaimedRewards; + } else { + claimedRewards = (stakingLedger as unknown as IStakingLedger)?.claimedRewards as Vec; + } + if (historicApi.query.staking?.claimedRewards) { + let depth = Number(api.consts.staking.historyDepth.toNumber()); + if (claimedRewards.length > 0) { + depth = currentEra - claimedRewards[claimedRewards.length - 1].toNumber(); + } + const eraStart = currentEra - depth; + for (let e = eraStart; e <= currentEra; e++) { + const claimedRewardsPerEra = await historicApi.query.staking.claimedRewards(e, stash); + const erasStakersOverview = await historicApi.query.staking.erasStakersOverview(e, stash); + if ( + claimedRewardsPerEra.length > 0 && + erasStakersOverview.toHuman() != null && + erasStakersOverview?.unwrap().pageCount.toNumber() === claimedRewardsPerEra.length + ) { + claimedRewards.push(e as unknown as u32); + } + } + } + if (stakingLedger === null) { // should never throw because by time we get here we know we have a bonded pair throw new InternalServerError( @@ -73,7 +101,13 @@ export class AccountsStakingInfoService extends AbstractService { controller, rewardDestination, numSlashingSpans, - staking: stakingLedger, + staking: { + stash: stakingLedger.stash, + total: stakingLedger.total, + active: stakingLedger.active, + unlocking: stakingLedger.unlocking, + claimedRewards: claimedRewards, + }, }; } } diff --git a/src/types/responses/AccountStakingInfo.ts b/src/types/responses/AccountStakingInfo.ts index ec64f4e05..bfc567d3f 100644 --- a/src/types/responses/AccountStakingInfo.ts +++ b/src/types/responses/AccountStakingInfo.ts @@ -14,16 +14,25 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -import type { Option } from '@polkadot/types/codec'; +import type { u32, u128, Vec } from '@polkadot/types'; +import type { Compact, Option } from '@polkadot/types/codec'; import type { AccountId } from '@polkadot/types/interfaces/runtime'; -import type { PalletStakingRewardDestination, PalletStakingStakingLedger } from '@polkadot/types/lookup'; +import type { PalletStakingRewardDestination, PalletStakingUnlockChunk } from '@polkadot/types/lookup'; import { IAt } from '.'; +export interface IStakingLedger { + stash: AccountId; + total: Compact; + active: Compact; + unlocking: Vec; + claimedRewards?: u32[]; +} + export interface IAccountStakingInfo { at: IAt; controller: AccountId; rewardDestination: Option; numSlashingSpans: number; - staking: PalletStakingStakingLedger; + staking: IStakingLedger | null; } From 50943e1a816a5a536b104484e5e325e7602e793d Mon Sep 17 00:00:00 2001 From: Imod7 Date: Tue, 4 Jun 2024 17:04:12 +0200 Subject: [PATCH 02/26] fix existing tests --- .../accounts/AccountsStakingInfoService.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/services/accounts/AccountsStakingInfoService.ts b/src/services/accounts/AccountsStakingInfoService.ts index 95d489a05..a1f83ccd9 100644 --- a/src/services/accounts/AccountsStakingInfoService.ts +++ b/src/services/accounts/AccountsStakingInfoService.ts @@ -60,8 +60,12 @@ export class AccountsStakingInfoService extends AbstractService { const stakingLedger = stakingLedgerOption.unwrapOr(null); - const currentEraMaybeOption = await historicApi.query.staking.currentEra(); - const currentEra = currentEraMaybeOption.unwrap().toNumber(); + if (stakingLedger === null) { + // should never throw because by time we get here we know we have a bonded pair + throw new InternalServerError( + `Staking ledger could not be found for controller address "${controller.toString()}"`, + ); + } let claimedRewards = []; if (stakingLedger?.legacyClaimedRewards) { claimedRewards = stakingLedger?.legacyClaimedRewards; @@ -69,6 +73,9 @@ export class AccountsStakingInfoService extends AbstractService { claimedRewards = (stakingLedger as unknown as IStakingLedger)?.claimedRewards as Vec; } if (historicApi.query.staking?.claimedRewards) { + const currentEraMaybeOption = await historicApi.query.staking.currentEra(); + const currentEra = currentEraMaybeOption.unwrap().toNumber(); + let depth = Number(api.consts.staking.historyDepth.toNumber()); if (claimedRewards.length > 0) { depth = currentEra - claimedRewards[claimedRewards.length - 1].toNumber(); @@ -87,13 +94,6 @@ export class AccountsStakingInfoService extends AbstractService { } } - if (stakingLedger === null) { - // should never throw because by time we get here we know we have a bonded pair - throw new InternalServerError( - `Staking ledger could not be found for controller address "${controller.toString()}"`, - ); - } - const numSlashingSpans = slashingSpansOption.isSome ? slashingSpansOption.unwrap().prior.length + 1 : 0; return { From 82457aaae3e3bbbe2691c0ea16b3e2fe199b83ab Mon Sep 17 00:00:00 2001 From: Imod7 Date: Fri, 7 Jun 2024 21:09:43 +0200 Subject: [PATCH 03/26] add test for kusama (includes era 6508) --- .../AccountsStakingInfoService.spec.ts | 69 +++- .../test-helpers/mock/accounts/index.ts | 3 +- .../test-helpers/mock/accounts/stakingInfo.ts | 71 +++++ src/services/test-helpers/mock/addresses.ts | 17 +- .../test-helpers/mock/data/block22939322.json | 69 ++++ src/services/test-helpers/mock/index.ts | 2 + .../mock/mockApiKusamaBlock22939322.ts | 296 ++++++++++++++++++ .../test-helpers/mock/mockBlock22939322.ts | 31 ++ .../accounts/stakingInfo22939322.json | 102 ++++++ .../metadata/kusamaV1002000Metadata.ts | 18 ++ src/test-helpers/registries/kusamaRegistry.ts | 15 +- 11 files changed, 683 insertions(+), 10 deletions(-) create mode 100644 src/services/test-helpers/mock/accounts/stakingInfo.ts create mode 100644 src/services/test-helpers/mock/data/block22939322.json create mode 100644 src/services/test-helpers/mock/mockApiKusamaBlock22939322.ts create mode 100644 src/services/test-helpers/mock/mockBlock22939322.ts create mode 100644 src/services/test-helpers/responses/accounts/stakingInfo22939322.json create mode 100644 src/test-helpers/metadata/kusamaV1002000Metadata.ts diff --git a/src/services/accounts/AccountsStakingInfoService.spec.ts b/src/services/accounts/AccountsStakingInfoService.spec.ts index c2d4a4264..8a670d698 100644 --- a/src/services/accounts/AccountsStakingInfoService.spec.ts +++ b/src/services/accounts/AccountsStakingInfoService.spec.ts @@ -1,4 +1,4 @@ -// Copyright 2017-2022 Parity Technologies (UK) Ltd. +// Copyright 2017-2024 Parity Technologies (UK) Ltd. // This file is part of Substrate API Sidecar. // // Substrate API Sidecar is free software: you can redistribute it and/or modify @@ -23,9 +23,28 @@ import { AccountId, Hash, StakingLedger } from '@polkadot/types/interfaces'; import { BadRequest, InternalServerError } from 'http-errors'; import { sanitizeNumbers } from '../../sanitize/sanitizeNumbers'; -import { polkadotRegistry } from '../../test-helpers/registries'; -import { blockHash789629, defaultMockApi, testAddress, testAddressController } from '../test-helpers/mock'; +import { kusamRegistryV1002000, polkadotRegistry } from '../../test-helpers/registries'; +import { + activeEraAt22939322, + blockHash789629, + blockHash22939322, + currentEraAt22939322, + defaultMockApi, + defaultMockApi22939322, + testAddress, + testAddressController, + testAddressControllerKusama, + testAddressKusama, + testAddressPayeeKusama, +} from '../test-helpers/mock'; +import { + stakingClaimedRewardsMockedCall, + stakingerasStakersOverviewMockedCall, + stakingPayeeMockedCall, + stakingslashingSpansMockedCall, +} from '../test-helpers/mock/accounts/stakingInfo'; import response789629 from '../test-helpers/responses/accounts/stakingInfo789629.json'; +import response22939322 from '../test-helpers/responses/accounts/stakingInfo22939322.json'; import { AccountsStakingInfoService } from './AccountsStakingInfoService'; export const bondedAt = (_hash: Hash, _address: string): Promise> => @@ -63,6 +82,42 @@ const mockApi = { const accountStakingInfoService = new AccountsStakingInfoService(mockApi); +export const bondedAt22939322 = (_hash: Hash, _address: string): Promise> => + Promise.resolve().then(() => kusamRegistryV1002000.createType('Option', testAddressControllerKusama)); + +export const ledgerAt22939322 = (_hash: Hash, _address: string): Promise> => + Promise.resolve().then(() => + kusamRegistryV1002000.createType( + 'Option', + '0x6c6ed8531e6c0b882af0a42f2f23ef0a102b5d49cb5f5a24ede72d53ffce83170b7962e569db040b7962e569db0400a84719000048190000491900004a1900004b1900004c1900004d1900004e1900004f190000501900005119000052190000531900005419000055190000561900005719000058190000591900005a1900005b1900005c1900005d1900005e1900005f190000601900006119000062190000631900006419000065190000661900006719000068190000691900006a1900006b1900006c1900006d1900006e1900006f19000070190000', + ), + ); + +export const payee22939322 = (_hash: Hash, _address: string): Promise> => + Promise.resolve().then(() => kusamRegistryV1002000.createType('Option', testAddressPayeeKusama)); + +const historicApi22939322 = { + query: { + staking: { + bonded: bondedAt22939322, + ledger: ledgerAt22939322, + payee: stakingPayeeMockedCall, + slashingSpans: stakingslashingSpansMockedCall, + claimedRewards: stakingClaimedRewardsMockedCall, + activeEra: activeEraAt22939322, + currentEra: currentEraAt22939322, + erasStakersOverview: stakingerasStakersOverviewMockedCall, + }, + }, +} as unknown as ApiDecoration<'promise'>; + +const mockApiKusama22939322 = { + ...defaultMockApi22939322, + at: (_hash: Hash) => historicApi22939322, +} as unknown as ApiPromise; + +const accountStakingInfoService22939322 = new AccountsStakingInfoService(mockApiKusama22939322); + describe('AccountsStakingInfoService', () => { describe('fetchAccountStakingInfo', () => { it('works with a valid stash address (block 789629)', async () => { @@ -96,5 +151,13 @@ describe('AccountsStakingInfoService', () => { (historicApi.query.staking.ledger as any) = ledgerAt; }); + + it('works with a valid stash account (block 22939322) and returns an array of claimed eras that include era 6508 (when the migration occurred in Kusama)', async () => { + expect( + sanitizeNumbers( + await accountStakingInfoService22939322.fetchAccountStakingInfo(blockHash22939322, testAddressKusama), + ), + ).toStrictEqual(response22939322); + }); }); }); diff --git a/src/services/test-helpers/mock/accounts/index.ts b/src/services/test-helpers/mock/accounts/index.ts index 372893eeb..ae2efc51f 100644 --- a/src/services/test-helpers/mock/accounts/index.ts +++ b/src/services/test-helpers/mock/accounts/index.ts @@ -1,4 +1,4 @@ -// Copyright 2017-2022 Parity Technologies (UK) Ltd. +// Copyright 2017-2024 Parity Technologies (UK) Ltd. // This file is part of Substrate API Sidecar. // // Substrate API Sidecar is free software: you can redistribute it and/or modify @@ -14,4 +14,5 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +export * from './stakingInfo'; export * from './stakingPayouts'; diff --git a/src/services/test-helpers/mock/accounts/stakingInfo.ts b/src/services/test-helpers/mock/accounts/stakingInfo.ts new file mode 100644 index 000000000..fdc1e442a --- /dev/null +++ b/src/services/test-helpers/mock/accounts/stakingInfo.ts @@ -0,0 +1,71 @@ +// Copyright 2017-2024 Parity Technologies (UK) Ltd. +// This file is part of Substrate API Sidecar. +// +// Substrate API Sidecar is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +import { Option } from '@polkadot/types'; +import { Hash } from '@polkadot/types/interfaces'; +import type { + PalletStakingRewardDestination, + PalletStakingSlashingSlashingSpans, + SpStakingPagedExposureMetadata, +} from '@polkadot/types/lookup'; + +import { kusamRegistryV1002000 } from '../../../../test-helpers/registries'; + +export const stakingClaimedRewardsMockedCall = (era: number): string[] => { + if (era === 6512 || era === 6555) { + return []; + } else { + return ['0']; + } +}; + +export const stakingerasStakersOverviewMockedCall = (era: number): Promise> => { + return Promise.resolve().then(() => { + if (era === 6512 || era === 6513) { + return kusamRegistryV1002000.createType('Option', null); + } else { + return kusamRegistryV1002000.createType('Option', { + total: 140425643066389, + own: 5340420989561, + nominatorCount: 187, + pageCount: 1, + }); + } + }); +}; + +export const stakingslashingSpansMockedCall = ( + _hash: Hash, + _address: string, +): Promise> => + Promise.resolve().then(() => + kusamRegistryV1002000.createType('Option', { + spanIndex: 9, + lastStart: 2251, + lastNonzeroSlash: 2249, + prior: [1, 750], + }), + ); + +export const stakingPayeeMockedCall = ( + _hash: Hash, + _address: string, +): Promise> => + Promise.resolve().then(() => + kusamRegistryV1002000.createType('Option', { + Account: 'GLEJRAEdGxLhNEH2AWAtjhUYVrcRWxbYSemvVv2JwxBG2fg', + }), + ); diff --git a/src/services/test-helpers/mock/addresses.ts b/src/services/test-helpers/mock/addresses.ts index 9d38bd6ce..92dda0fcd 100644 --- a/src/services/test-helpers/mock/addresses.ts +++ b/src/services/test-helpers/mock/addresses.ts @@ -1,4 +1,4 @@ -// Copyright 2017-2022 Parity Technologies (UK) Ltd. +// Copyright 2017-2024 Parity Technologies (UK) Ltd. // This file is part of Substrate API Sidecar. // // Substrate API Sidecar is free software: you can redistribute it and/or modify @@ -23,3 +23,18 @@ export const testAddress = '1zugcapKRuHy2C1PceJxTvXWiq6FHEDm2xa5XSU7KYP3rJE'; * Controller address to use with tests. */ export const testAddressController = '1zugcapKRuHy2C1PceJxTvXWiq6FHEDm2xa5XSU7KYP3rJE'; + +/** + * Stash address to use with tests. + */ +export const testAddressKusama = 'F2VckTExmProzJnwNaN3YVqDoBPS1LyNVmyG8HUAygtDV3T'; + +/** + * Controller address to use with tests. + */ +export const testAddressControllerKusama = 'F2VckTExmProzJnwNaN3YVqDoBPS1LyNVmyG8HUAygtDV3T'; + +/** + * Payee address to use with tests. + */ +export const testAddressPayeeKusama = 'GLEJRAEdGxLhNEH2AWAtjhUYVrcRWxbYSemvVv2JwxBG2fg'; diff --git a/src/services/test-helpers/mock/data/block22939322.json b/src/services/test-helpers/mock/data/block22939322.json new file mode 100644 index 000000000..44f2a1f64 --- /dev/null +++ b/src/services/test-helpers/mock/data/block22939322.json @@ -0,0 +1,69 @@ +{ + "header": { + "parentHash": "0x71e47b416463a606f2a694acff0bd4029f7e5e6d83fa6fee5fc9b16b03763baa", + "number": 22939322, + "stateRoot": "0x392022f9ec739d76522adc9adebdd10274d90424bfe46e7c95469c215dcc8267", + "extrinsicsRoot": "0xada37112b816e9b40a44b9df622563f959fe01e608f740377caafdc17305f877", + "logs": [ + { + "type": "PreRuntime", + "index": "6", + "value": [ + "0x42414245", + "0x03fc010000a2c30711000000007021d1485ce24d636960e39672764b789ef1bf0297fdf43669e5d1b5c28a9a6249e3c7ee25c75c8ee9b6be80f50617709078cdf283945a346d93e130d7eefc07c5580dd20f49f71cd96860be8e91c71028d64e14e8e4b0c9300d59e9c9285d00" + ] + }, + { + "type": "Consensus", + "index": "4", + "value": [ + "0x42454546", + "0x035af31c3563ce6fb3e80a7d62b7be024e5fcdee2628d8f4a11b65c2778a36b256" + ] + }, + { + "type": "Seal", + "index": "5", + "value": [ + "0x42414245", + "0x0abd68adb716e84de17e176e48521663e3eb466d71953cbc7e2afc8780747210f6b7cb58e741b201b0772ded224797a262300972df51e315420a60c3f3f5498d" + ] + } + ] + }, + "onInitialize": { + "events": [ + { + "method": { + "pallet": "treasury", + "method": "UpdatedInactive" + }, + "data": [ + "246024933271280834", + "246024947019987644" + ] + } + ] + }, + "extrinsics": [ + "0x280402000be024f9258f01", + "0xb6c90100043600a5049101feed3f0db9460400000000000000000000fa2d927adb1b06230a298abcd768a93bf20b02aa9061c1825fbd15cdc2ce5202cef97e318447040f8b8e88a991ed5ccd74677eea6b8c0f36c7496df556f4918b9101feed3f0db9460400000000000001000000a629109693ea4749689c0ebff3a0216ef90aa94da934e844a1699c45cd2c9e0f02bb830d95e7fca5bb9e3fe6d1165f37d233b3ec0e1832ba0da8efd6c0a87b809101feed3f0db94604000000000000020000004665a96c318d8a634fb1019981706fab4fae61a186d39c8b0d334a3d6672702bcc8036bbe54a1898983c13f649e056c2d19706443a56f4c3fc649b74943f15879101feed3f0db946040000000000000300000098caf9c898f50250e0792f6a1660a0e7cbd9014ca743d37342aced91dd558d1430d5c405fa159ef16ac3e614f8596b616156cc5a7f52ec43460b12d2f9661d8c9101feed3f0db946040000000000000400000052c84f5f1b4015dc9cf55a584dd12a723bb7312d8d5f984bc2a4151ce97d9b697661197c899f55338435de03d161adf8ffc6e72193eead8ad28a4d813eafb58f9101feed3f0db9460400000000000005000000cce93f0817ca0510fba7d138943333be5632faf19a32d07af8142ffc37019e4b2f82073b0fa956e768f3db1d56dc0cb8fd3f53e8dd861d67b1fef27851fa9d829101feed3f0db9460400000000000006000000a88b1261fb8ae41345108534464320f6212a5cfb30f0e811cac708f2da3ccb6832e32a210a61b68bf8276f77d8e68758dedc7ce09aed2168e9ef7dafa15f1a889101feed3f0db946040000000000000700000072e649ec5b8813373f245a6cb842b4bebda7185a74258ef20326cb8f46ff6b004fa9dffd270c29a78e52de2c1c502bc63101f4e34e2098c7ebe9becbef7d7c879101feed3f0db94604000000000000080000003e60ac9cc0ccb763542f0a71a85626f546e0ac03948ed592c8a667a5aab62e2131ea006f3526b79835970574aa38ab50dff18fc29562f7a09e51577d086e56859101feed3f0db946040000000000000900000056fa3d358f25dcdefc40be18de83af7d9a5931a47b1d413c93d3ed88acdc97602ddc6cbcde7421730e7d04ac42dfc5c151124426d085ae2bf717d1eb3475e08d9101feed3f0db946040000000000000a000000580bd7ee24ee8644c658520e410533c0cbab05a2ce287e8720999157516ad87c51f5297d83dd764608d4aa37cb741ba300419215ee8a7ef2050d23934887e38c9101feed3f0db946040000000000000b000000048cddae8604b7388a9c4be04166621ea30fae9f840ea406ebe6c9bcb325ed0e6fd5f5dd0c3957a7a12eecd9f0364bc2bd715537a760554ffa1086ccc824ef8a9101feed3f0db946040000000000000c00000036e2a72560ea2750d57549db67347355edbafe7bf7107d9a171b4711651228500e31d32da7423f70bd244f8b29ad10f157bfe665374d0fd835f865eee64957849101feed3f0db946040000000000000d000000da2194a7582f3c7660b1d1a7db9c9116906353a052e262188115df9b7d335262d8ec440595c13b212e59ed7160ee87987c09254d9f9bc410426ea152ad146d829101feed3f0db946040000000000000e000000205203c493f9890bdf4f390e75932c743ab5aef3ffa4392a9a707d21c28d305dba675bbc17cf218cbb00a9883c0d7dbad43d569abcb88caae6767be2389eb48a9101feed3f0db946040000000000000f0000003671614be8cbaccc5af43894cd57f67152f9fa834417df596a116663d1b489422b5e5bcd0a68bc4191294508b7aa80e83453c9afe4c75b470ab2d48e4d59338b9101feed3f0db9460400000000000010000000b24179d76abafa5b9b7270e15825cb0823aad5cf325d638e7cf136da2e5e9142e4a9f4c152ad6851ff27ff0629a24dc6963b0df96eedbe51a94c412093922b8c9101feed3f0db94604000000000000110000004e7bed1ad0c695003136f320995441efb7b62da873be9f1912e4afbd96185835ffb73bd3f1f87cff9ad98452055e3804335134053bc6d5fbb3abc613899c1e839101feed3f0db94604000000000000120000004ac2bf94d437d233aa75b1438907dcc2f273dad3f9acca2d7c6091df67a0220755c6f836411d4d6b8bdb474ccd93c5a2510ee57f4faeb748070a21774b1d1e869101feed3f0db94604000000000000130000002a5b21b2d8678cb72dafd63a27ef79d6e9d122c620841cd51c9448b220e3bb03137e2f73124e787b6f8617236ee5369a302b180422938e4de0fda3d9ad1200809101feed3f0db94604000000000000140000008837594bb7c3a634cb84a0a90c5f227a5275b40f06c2f9f978334f50e8cb754eb91364c9ffd44c27feba3c52a268f877c64776f8b864e42cdd9a3889fb4882839101200000000000000000000000001500000082d685b3cb59a88849c0bc4f126fd28281830d200a662379a7bab5370bd74e71e8acd594855aefb60f336bdf68bf3461e725ce60173c5e262b0d428b0200c68b9101feed3f0db94604000000000000160000002a12af790579cbc722c99e6b093440f4af98f7314954f57feeddd1301e157121b4b237415d25ca0da5af04d98ca8585ccc4583196da9329b14297f19f5a7508f9101feed3f0db9460400000000000017000000b6645c2f89327ff6f4ed77656e46be5b66291bebd21f0a845307c0ca315d786b89b1f5ef2e87323abff8445a01227ca33fb1784ba6feff665653fbcc0e3c50829101feed3f0db9460400000000000018000000a283c579755ca15d8d9236efd33f4444f0a5da15dd786db20146e05e9d84d36ee9f9b5e34f9b36190d8646ae34eefbda9b8896bc4aff435276f85efa66fd5b839101feed3f0db94604000000000000190000007898dbed8148b7f6e29b807c9f66c09389dbc8dd46d8dbee26014b6f629c5f50fb00ea30d043b167425d30be26225b25cbfda24dbe8714675e6487a8247940859101feed3f0db946040000000000001a0000005e99e66576ecc1c72280b96d39fbb5c518e2a160717ed4cf07e4d76cebedbb71f351fc9081bb3b9fef4ff83fd2c691afec4dc0397141ad59be469d8a4c76e9849101feed3f0db946040000000000001b000000be09cd5a298b3ed3150d3f4b1d61ebcd5d2f650121cc0e87157bdf6d2f6ea31ff95a8235e67987d534ec004107b266497e5d59aea280bd0545c3773f33504a8e9101feed3f0db946040000000000001c000000ea80c92ef6c3f58f31bf152663d7af7c5065c8f5f2ac7a3973c93033b8745029dcb44cfbfc5b0709f27a9d65d5df5299fce06a59bfd7b4786b32fbfca73d66879101feed3f0db946040000000000001d0000003e33446c20fa47a167dcb75e887037c61d031901982969efdf0dee0a12f33f165632ddb28f975fb525bcf1b5b1304978030fc648b043d799d458e2b18522e0809101feed3f0db946040000000000001e000000faf6edcf0860b672af55bba4ef508ffec4883bd04a5401bfd338599ec7d27c393c8297616c4034d8315d7fa68bab511f135df9f04a1e632b9b04eb2c6d6bca8f9101feed3f0db946040000000000001f000000c480567112a9454304a413816979716cc9bedceec542d47e29c2aef34f1134144ddfae78e02b85637bbb0df61b45f578bc78ef15ef39d7fe6ba64a75ec2dc98c9101feed3f0db94604000000000000200000006a23456e4cae2a7a848a9aacd64348e5a0687aaed22687f69e606e923e39a27423065d9af96d3d6b1bc1790863a8ec2a9de40226169be063b2fb4cd27510888d9101feed3f0db9460400000000000021000000f8e0d28536c1e45e2b414ab04b1ce77c03b4b1e69a568326ffdcf6e24131f878f6f1a5746e2a966cc25cf85c5a05edb58222eff836dd37f47d5a78eee8cb5e8f9101feed3f0db9460400000000000022000000f27f43a62ff2fbda384204394b1b676bee13536de48cd2a518060d5b1cc308523b0d202183403f1e1005c047f387773eebeed76d1eab48f01d85f93499c5718a9101feed3f0db94604000000000000230000008cdfbf0d18925b038ea1d80b65d02a231714357130522cb22948294775d04f1ccd963a07029314e96ecbb052a8d86adc2cf551871989ad03fe63d8413481a9839101feed3f0db9460400000000000024000000a0730a8eccd80d5a84b5d1a63945833a6bee8acfb71534f10df39a72d82dae1bc033f901a0feeb8fd53db02123cb764c0679ba9e91be51208a998a4dc3c2dc8a9101feed3f0db9460400000000000025000000a4da769ae649cd2ac0fe1229ff8407196d7c2f9917e88209988fdeae9f16f57b2c0d9e6d7092a79fb51eb1e3c83ba56c85bb3a5c2f8c0a90c58777ef48464c8c9101feed3f0db9460400000000000026000000a22b809e913836ffc84b5925e133c843693058131f15796d6f8782a398858407701d4be3891147a32d5e9ff97e08af95a6db8067885bfa8b78bcd4aae7e1c68c9101feed3f0db9460400000000000027000000364e0c95b0fa134ad702046a4177630da2bc1b2e1df39504a80368f5b2c5354ac6847cca6572f2fe1ea45e5f2dcd40a156b758d91543f1860b70993777a7618d9101feed3f0db94604000000000000280000000eead3171fb654ebd2ed53450628041ef3a891574f7cc260ce24705e741f800f43e2720cddfa84ebc00b1be7b0ab410b57a0cd110d0e85677ea6aff36926c5809101feed3f0db94604000000000000290000008895ebc0655b8de21702bd6c1d920b820aed665d2276f921a8c5a1001657412ea8cf910989bdea346796a22ba4e125f8d749f5573733e0bc0ada5839acdd03859101feed3f0db946040000000000002a000000c03ac1aad6992c23ffd383512bbe7a6138d215b97284fb8a9b28cda6a3f7ad3c7813bb2b18c40068785a35a796212039f568af733a778e78d228c72dfdb6788f9101feed3f0db946040000000000002b000000dc685b24418594be94f7225a9c7394b582a23b01a1a323c96f955da7ab48d27b30f79d7184bd7f8fda4e10301295d1be76d9bd6577107ad7b51902b97d3a408e9101feed3f0db946040000000000002c00000084b3b75db478f95105e7eb07e63eae29aa8f8f4b8fb133c96df85c2022a5c565996e0ed440b098b00a3e83727bb3871b7a269c4b7a75499cf09cfdc2ef4c38899101feed3f0db946040000000000002d000000182b04bc9a0b890a09b72d7c90c986725c109c5ef1de99b58ed7b130796ada09128e894d764ead8dbe3a3ad3c5a70c478899843516d98e95e004387c17941f8d9101feed3f0db946040000000000002e00000058122a691fa481e1c3ff41b7a2929e2abdbe45af3fb783b4108b8ee49410534945363525c75b434af251f00cdc8cb37a151aa7766d8e98ea2e4a6926bb6665869101feed3f0db946040000000000002f000000da3605f221a52d68785d92d619da9401f3a0cb6f60c4def6264a5cf779758758d7f206b5a1273dc0afc374b21f57eeae25525fe0c066c4b54099a8d13a28d78a9101feed3f0db946040000000000003000000064b5f0e91e4952dfe257c4b6dacc38aa2315ff2d06bed6e47710673c4d5b1c11ceb3490a15ca6b1d5e452f508e2f500dd1645c9c2fb6ce813e00f90717137f8d9101feed3f0db9460400000000000031000000f243720beeff3d6c774bd5dd8baf45b54aa8f4c96b5da910ab4730b5a31fa16431ff34f09358600f4b95d58dfbea4fb88a22122a308c51cfcce882df25c1a8829101feed3f0db9460400000000000032000000d61d3991ab1d1d0f7f74202a6f59c1b04c6e8a0e664ac4ed29c712175268491641ec14d9649c9824e40c1ce82273507965e775bd6a7c44a6d02de89e365410819101feed3f0db9460400000000000033000000d2777506529e4dce75032aa1ef324f287901e6ded7eaeced1e45c58f16039a061be41ecbca794cc1b93d9382325aba8187bb7671e6a13cb91cf4b825eb65b58f9101feed3f0db94604000000000000340000002610f285cac33febaf2aaf9c22ddca4b9a0c04918f6c49d4020d7f8060e8617a9271b61dc1b8b3a25b9e46205344c559deacaa914331cd01e444d31593bf8c809101feed3f0db94604000000000000350000009e2952aee857deecdbf8f2e6cdd2bc66d6270663bc47e190662af5ccd07be71a220fb6307a447ec7f8afd8e5314104a7835561b117082784f9c1b67b84b1e9859101feed3f0db946040000000000003600000054815de8dc03b528d4f0e8df6c9c5794c4b76553cd38e720e43b066b64e8c344a52240dfcff50aff4db9b6487f73f1729b3ce0b6194f1acd18cf8171ae37a9879101feed3f0db946040000000000003700000044e8b7a4684ae3a99013b52d1e28da999f8f5e05470b69dfbdfe0f4a75225d3c9852f4e861ab2b114c322e7853189d13f6075f2cc390313a06dba252c02b9e819101feed3f0db9460400000000000038000000881dd323d5b4129579d24a3b786bcd4946c262891b5b080e0571705769935c3c321cfd4ceb2830ea2d78ecd1620c5eb9b85694450df0f0989df1c28acf8a4a839101feed3f0db94604000000000000390000001cf786b5560fa93303b304092680946672b86da4041a722fa6ae727b10d640569fccd2dd4d049d35d92a1ef9d391591f27fa35768e56f64e82c9d625dc41a48c9101feed3f0db946040000000000003a000000364056778dde509f5e488c2a35187308f65dac8ceea64eed2a2eb14d09c6714b5b94f342a644145c4374cbf736e7676380cdcda3a36edf8ba77954e43b679a849101feed3f0db946040000000000003b00000094a2c9790da9080d9d8d5d6d3b7ce8e1237ac4bbb4c9ed253039648bd655617f87d31abda1a3997c1db47b4d481be424ec12a767e04eee6a3f33d1230ea44f809101feed3f0db946040000000000003c00000032f2883fb55b1705a00a9ca85639fe007075fe6f785ec8f767b5ac19fd2ec0039c9454cfb8ae18c381c285d4211bc17f68b18472bca8994822e32482793f22869101feed3f0db946040000000000003d0000000032746360c47939807e45328a37ba770c8aec58fb803f3bde1743c43440c62812cfe1240f4bd4cb3b396d7fc149636b9a25aa283590f63fd62bb8616b4deb899101feed3f0db946040000000000003e000000c413b46aeedb47104ec9050f7f43769ff0b7092f7b0e1aa58ed8e13d9e998514070ba1c8664b5588285e2b294a1d27e0981ade8ddfc05d297f28183f88def6839101feed3f0db946040000000000003f000000c6ee5ea0eb290418e0f42209e4cb1ff5f13af8b5fd0d4e281907ef38e30e3b168392b6c7efac27c06086138c59930193d057a9aa125b7a27d0eca89adcf3118d9101feed3f0db94604000000000000400000000004f7fcc0c0f33fd9c97b058c897cf67ad9d62ad79e934c986d246106fb74599195ec6dbfe8981a5a6d0caa685b84bdcb6f0351dc781d4f9c50458278feb1839101feed3f0db94604000000000000410000001015ca8a4e1a290a9eb5d75813c258249f5b236b2311214b04e90327bbaa6e01d49e4ad87f7a4996e166b7dba73ebfeb78f7de99b78cb28ae4ed0ce97d7190879101feed3f0db94604000000000000420000009aaa6e64d1f9af4e7a610b64d8767b8fc8a48b503f1206ef56274a7e2036b820e7be0a6b392935b2688c88b29146e56a6744176155f7a571085acc6a7466f48b9101feed3f0db9460400000000000043000000e68eac0d5495ef137d712d2a11b4d04dce6d0fbd2b3d39adb8d6068a0e4bec22b9bb2cce8aa822c08f827469d879304a049c24ad3279fbdde1f6a01675c0d48d9101feed3f0db9460400000000000044000000225d6f939387013649148855586090c5a70f2c4fab0cbddeadd490c038787877ca83f5822aa233060e9d27bad465f7e8b46a72227769caa8c9f7f46d2fb1ca8e9101feed3f0d39460400000000000045000000e8f4a0700244e3297c73b4af85dbcc577be0d1efde853bb014a94f3d0f57e47be2837405ab0c7c67e88b68534d6c5727b36a0daa3cc6cc040f695cbddc18eb889101feed3f0db9460400000000000046000000569266619d69f510274576f412bb447fc03499a43ec38fcd6179f2436b235f5194a42a9b81b85303c9dfd4cd0bc07a95f96ae43ba0bcce941c8f8a4f19648b899101feed3f0db94604000000000000470000007a3b8cb75037df6e9278c4f8e780b8d1e1b2847270906d1aa9bc89835d63205de50f3901aedb56b2090b48ef4c8190ccdbc2c84cc4353e93a2e3b4c9da7c58849101feed3f0db94604000000000000480000000840dc99a52277dba113c201107ed796ff608d2a536c31478c3b541268c4d859f648e188a40fec9ee1fda9b723af5b6d616ee13fcf3ddf50f8f2eaeb1470eb8f9101feed3f0db9460400000000000049000000ae5d71fa384132eac45335ceb5da8a65216f395044066de7a43a47dffdcd8140d05214d21564a09818e4958f1f4317bf90e642a2765eeb119d493cb090e58e839101feed3f0db946040000000000004a000000425a7037c0a2df452f8ea15f95a9bc27a1ad27cb3637eee7b4cb43d8330a376bd275725bca5325e0a34adbf470a53ff023f98da53b8a7578ecd33f73257bc3809101feed3f0db946040000000000004b0000000a24ee95b4ec09b45f9d3ca2bc1536f5a2e8b891d1c31359b5aa74d99780ae17d5800507cf85907f5ec0cd25f3828a9e4ecd9fb44220a19b39d57ade93d9998a9101feed3f0db946040000000000004c0000004a4a2734275e9cfb7ad0c6e8cc50e17325700b381c64d72c9040c02302676341657ec863bfa8fc024a5a411fee83287ab5055ef15098b0892068e674f7c6ab8c9101feed3f0db946040000000000004d0000000a6316f2cae52b530a12045f06c46126b3c3d043855d1db1f5005cc50b074353a582115cc0306b694b62651903b7142fb87bc98b53f00f68bbba42762d920f809101feed3f0db946040000000000004e00000016f55249253655976b6f4f3ad8815e69a04fe509e57985dd55fe63a93a86e739e77bb9f3198fce8a88f643fd19a4c26c56a029e8a566b460876ec89f500a448f9101feed3f0db946040000000000004f000000e43faeb1e25d108678d01da12e6adc77e320f6a8a22b03bc48a1c5ad2f0e1c7e914f19aa0da723459a53c94185a2e19b976c2a34b4b4774b89e4ad04a711d2839101feed3f0db946040000000000005000000076ef409ce2b5aa942a1682a594d2324c9b4bcd1837ed2181dc94c34f221a3b6990aea5b10ef2cc3249743090856dc66281ee9d0c10942f14dd3a7ca107b048809101feed3f0db9460400000000000051000000925e00ecbb7019eb708714e1e3da3ecb28b7609259dfc24ec537624b5a58fb5c3006063925581e5d62fe0ed55052f64e99c85413724eb44b01eb9cc9f7fcce809101feed3f0db94604000000000000520000009ec49f6d7bc2dc8d0e2f6b072132f4214e48778a929750e092c65bd11c7b977217b5ff772a0d0ff810e81c498abe065c3db618a517dc26ea535dd9b5cc79dc849101feed3f0db946040000000000005300000038d5148798450b4f8f57b39158cff214899727dfe16044637a23d08f651fd0174f9c96bbdafa2e9222ea498e25b07e218636fd0484f3885b3d653ea13e147c8b9101feed3f0db946040000000000005400000060680af415409f80020fa9a8806d613ee106825be3ec90771269dbb0f10ad56577fe9a4ffbf91fb73a7364313b0aefe8395691ee246fdf253242f274bf3267809101feed3f0db94604000000000000550000002896a0046e9aaa49842ac9344771fb61c5c955e15047a8c9e7665fc631f1e35d9d6db3859305bfd7ff35c901a2034d71847e25019296347b00db2b17dc7ff1819101feed3f0db9460400000000000056000000ea7efbb854e5b2e37a913e9af603f94e00505a0a0eefd4f08709f715bc5e2c3ed25f53b19a537e644376216b2f3c4b138ab855171b4ffc290f89d38f348bcc889101feed3f0db94604000000000000570000004a2d7034f91471fdd155460660d896629d67dcca2d79e8a24191d94afeaa440870b7610680f702b06201fb5ec3dec2d381e3e8bd404ae383a91607d8ad75308e9101feed3f0db946040000000000005800000094097dccd7960c426353520630b4e5e9fa2965ce359d5c935160a0a3d74d432d66b10dd9634204111592524077ad5b3a2ea99db213c71584213ebded779fb68b9101feed3f0db94604000000000000590000008015c80394eb1c885cc975f1c5b6c03d84ca1269a4de138b5e3f1b61527f4b2c800a415a5f0e1b7fd97565eb586cc0c6fe0783c92884f34d89aeb9340d6ff88b9101feed3f0db946040000000000005a000000b2243b69cada675365a404133edb615dedad0799d4d8e969f60a43fd9e620c693e0a984b11d508ad4b827d15b34fba00158be277234ef3dfff301128b0347d8b9101000000000000000000000000005b000000e82b7eb2053b3c20f2030b3a825b412f285c2e786d9748dd8fc4079028ad864ca151f712e79c395971d7c10eda0c919b1d582099079e24a0f4b87193b3a62a899101feed3f0db946040000000000005c000000668dad47a07d830261741fc2730fc09415717f6ff908000a9e7e9d316630d6051e8ee4125f1b858c05fbe8fac38744a1e5db8dbdc3e1b8c68bf8d858206af78c9101feed3f0db946040000000000005d0000008aae97dcb0359ce5a2122781c0e548a6fbfea5c1fe0193d60ebdc78a6486ae6df26a467d675bb0a16a0dc8fb2564e7ea4f148b649016dcb7d1db7b7c5e21b3809101feed3f0db946040000000000005e0000006c3d141e462c8909331c7068b5057247b3024f8a2984898f9502877e8abc4f018ca7c447f2defc6ec896b637a9736a90283f2c24e240b13553233bd53f8a42869101feed3f0db946040000000000005f00000052ffe89a2ea47d6f2014a4093806d546e030547c17e7b3aaa3950ee691fb7c5e986c82d0355aec851e2ad282582a0c9bf0ada1d79ba5f01104b195b9e852ba819101feed3f0db9460400000000000060000000544c84dfd89de4d2aed608b7774f1bccccf6a658566413df5c2cd0b3e7982e23301a62586c0d74871ecf965def2ffacc810ed3c7eb2d15dfde16f98ed8873b859101feed3f0db94604000000000000610000005a6d5bd09455b2ac19f8830d5517de561a43a96955418016f310dfe016a6144f73a4c08efcaa4ad4dd99729d14017fdd90ab9e9f7640db8ed0ff1e3ea8bdc78a9101feed3f0db9460400000000000062000000f6c1f52b62850d8058d9d5ce3b0cdedc3b1b6836852908807e1c9d3598911a052f8b23cc74b7a322a6779d34acb246e667068450b915d1d3bb445651964e16889101feed3f0db9460400000000000063000000382265fc171f6971caf1366812ad1921f7b4a2ac49548fcd74f4bacb8d2eae2a6b063a435188a64b06f8814ee67d23feb605c2d5671a740cf2ea01863a1fba8d9101feed3f0db9460400000000000064000000265c7dd263044489be540cb9495c948854e917e41658087ee5cc0f0ee6be373a5c45a984957b23109b69bd5a9b1f50759b925f0a8cfb453d1e4b7681056f2d819101feed3f0db946040000000000006500000068396fed5e10765e48451e393bd0970881bd6bf6e75070e417cae4274507456ab659265ef056d284c23e0c68840dc4457b657e588fa3ff03cc32a646a2dbcd899101feed3f0db9460400000000000066000000d4d1992bbf784d466f90f638e8bf3bf7026044537cb16e720c74dbe9ee13fe4e8c625b3398425a32ec41f3f0d1a025bd05aa6fb14840c02edb7b816c846431829101feed3f0db9460400000000000067000000e4e6c1959febda2cff1ac8a5428ec3d10401ca63ceedae8ae45c6000f2db89649413efdf94082afa98e258406ea7cf5291f132e36dd0843fff06cd8fa9d648819101feed3f0db9460400000000000068000000ccfb64b9596a6641157bb7be0494634b97decd0f5a1c7e66f34c84153c2b0e2bdf5b56975c748c1d5ce9abc0b824ec97fd6e52e56418035196fe451cd4accf8f9101feed3f0db9460400000000000069000000f0069975bc45801169d7c81c3a8c6e53d6f09ffc229ee35d4664d221b29b5a2b6a53332ca91af62a0bf3b1b239fc7fadaf5a2c517f2edc00090a4ec4d99466889101feed3f0db946040000000000006a000000ce658955cf81e5502aaa652730903f43e9198be5cde13863f64f8428c5847f17e3db4c2e495835f825aff4269b35808b1995b5b5cce196102a67f20b372bda8b9101feed3f0db946040000000000006b000000364179afa1819c06250b510c8392b1fa7f1926e13c6222a94297a418f58e445f466e8459c1cab723925f6ea92dc61bdbb54697a36bdc6ce3d9424204c5eb9f889101feed3f0db946040000000000006c000000c0787b452fed4ea0abeb4572ad4f5df8e75fe27d336f97b11dd247bd0e33235b8aacdb96fd2e8ee0002839d1bb3c2b9c7ed4c56dcc37e18abb7b283cf0d609899101feed3f0db946040000000000006d000000f44c8cb1dd11334c677b53c5f9d1ebb3787f52cb86594652469a2287f8795532e8e1a79c83558e17b206131bc80c21628856e212d48c740657c97da3bb00a4859101feed3f0db946040000000000006e0000000e38c1f04ee70568bb64001a51f11fcd51c955127a00299e3a1a870ff6361b2a10dad7410f1260405bdaff1cc918ed95014fcc99bbf044a5948a069914231f8e9101feed3f0db946040000000000006f000000f8db4906e98e9cc8d462f8bd8213db1db7c2c86c789db19c4b6f0ed3525b850df85cbd54d09cb9120465b38b32e1d2dc086a98212e57a238137525152196d4819101feed3f0db946040000000000007000000040011c0903f2068ed0463c7e799985503b1154a8b99ae6503cacf55a093d011ab0236124fcaf75a4a74874fbecb12b7c41a62199f7053264f7bf1f1980ee798d9101feed3f0db14604000000000000710000004672cf1df374b1a62af4f201551648b35e41285d3ee5dab2a64b59b4548a13245eb17cdb5c73b68b3898feb9b073ff713d5545433e768d4b888bed47826ed7839101feed3f0db9460400000000000072000000d84603fa4d96afb8a77a1505c52f321b0ed97167365455563dd89bbabcf6013cb076458934b05a3c1a820b4901a808e6cecc375bb75232951d911e09f06778899101feed3f0db94604000000000000730000001ca8add204f5e9187591e8ff8cd386cc5a8e10811f951d0d40f854b127ac891362708657a5ffd965575f515cf8912d814ed903abde15c969c95ed855f95deb829101feed3f0db9460400000000000074000000907f46b1d8ceb3ca126aecd1e2e46aac7344a30075b44238251af7191db6134d0579c82e6755a1dd52de18177136127ea20c40b8cf93a82d6c131434e8782c899101feed3f0db94604000000000000750000004a064a8f134ffdd7a2699586c4a72cecb307be3f1c55973f8e4d7055b8de75090d5dd28fca396eae0b1d9c2aa555c6f28c0fc76369b98f02fcad878db88cd58e9101feed3f0db9460400000000000076000000fc24acd3dc57ecab2319196ac9b65de1d432fe6db58515ff136001e0e2a2db14e4283dfb1d344caaea84e2a8ed0d9466202186eb4b235c3873f721770b1b658c9101feed3f0db946040000000000007700000014f01fd4b37edaa9520ded06c2bb29ec0f5efa2ff28a07116b44848ee13d9a2dc034ebf02daae6d97af332c322a286dc5b856bce56900860b9d35ca317a16a859101feed3f0db9460400000000000078000000ecd3ce0a6a21c4d3c47f6bcdaf030b5b17c637d8e8e1fe23947f0cdd6eec0e7fba2c88554a484674d29a7c892564607a0d2031e603a211f4261b4e7bbae543819101feed3f0db94604000000000000790000001451a7e2c1a6d83d74c8faf591638a2c8e562b24e2616459e00beef17ef1976f224c393ca5a46e933e7162f0c26c9e26840477cd232a08f90a54188e3f538b8c9101feed3f0db946040000000000007a000000303cd433df498aad1d7fb05c87178ef2f6936de9748234bd4699fb2d9e094950ad58dc0ffde9e94b0696ce135903afebd334282b12a3da89350bacf5e7fd408c9101feed3f0db946040000000000007b000000d4a827d1c8fc2481fd7629b479f1ee7f5ca6751866fcc2a6f130df0c362b2a35ed4d62698296fc3365dee867e87c3f114b991aa62053424603652b5e1b6ec4849101feed3f0db946040000000000007c000000f43c0072d9968a172df01fef97a430405a6ba5a90714120a860c0a80f8bcd254ca9b063dc677164fe32726d23f3458c15ccf745da6185c169549c4bd31b8bb809101feed3f0db946040000000000007d0000009ebadad6971ec1a48817f153d5e9198418fd55c3742db2bb0c0358976b27e94865271dff3089c2b64d9b3de15fe9f4b63f256e71141e40b752db9477ec08c1889101feed3f0db946040000000000007e000000ee4ac8049149ac084bf73bc74e20a2e233d55ee6283bde63330914466924b461f3c5f820813d835f2c8f6d270aa85360395af2761c5e5ce71b2b1f031182aa8a9101feed3f0db946040000000000007f000000008311c9704f24d70fdac69bfc53159eb2830efbc5ab9e00eb18022354a7367e9f6f8bfe33823963fe612453ea6579d209676f43a7d8f511b5a9d37c33cc34809101feed3f0db94604000000000000800000002845003bf04818a3f16bb1283eccf60dcc6376c4ba4af922419a77544bb565345eb61d53b6617ffc809d3d169b718c2e4648bbe8adecd0dc7f2b8f0fe1d2a28b9101feed3f0db9460400000000000081000000047d6c13f430c1d6549895e17ba3473444df70a67a75df91cddfa16d5ca4bf6a333058f8b031fe83dede3847feb743349245ff18871d689dd8de15ab216f7c879101feed3f0db9460400000000000082000000a61393393aa3dd758a7141c6812e7b23aa4e66ee0dcb0d6eed5bc82bfe7b9625c232c40f0622dd2ad59fd9eff6af3d61aefa491e72c589f489209cfff38349859101feed3f0db94604000000000000830000007450e5bf19e0f2e3b3cbea5d2f91d2d02166c0e6237c9bffcb2b73df579b5c06703db078f414ffda964cea6f7bf016195fc35cadc1363f39a19315933b7c61819101feed3f0db9460400000000000084000000aea80b3e3a5eee67f9e9e6a02d479bc23017d6cce7401e70a7f5c503825ee06061b8aad03661d27a255d9fab5b68e9a643aab375f528696efad0ee56cfc0a28b9101feed3f0db9460400000000000085000000666bb7e2327ab36850d1f4d5d9992f35991e4169dad1c5b7821c2c7d585f2022b8ba321997b7d552527a88df0078a34a1ca47bf756f0039c13219f3e51959b8e9101feed3f0db946040000000000008600000062220c250b093de0183ed4ddc7097636965da406623413bbf815d6030001d6434bb4370e9c33bf2f8c0bd84bd3b68c4616980ca6da653437036d9448565b05899101feed3f0db94604000000000000870000005ac87150efc86a85a164e20facaa8ed6ab91dbf9a03485b58f3e5e730bfc042780304851c3745d65a15ddbb18973c77981dd03595c115fbba6ddaeaa996a108c9101feed3f0db946040000000000008800000074178e429e5588ddf798f6d4021fea5d0d54fbd8b26e32cae564059906c03148e5858e1c60b544bda30e5eba631bcb7d3e37fc6d8f3d521d5bdbac990f31858e9101feed3f0db946040000000000008900000034c50c66e5d68d62ffa388a1be4848e781779dbdb7fdd2533724ec02e92197432754b21c3c66168de0d9add1d423cbd30c109c8e351f85d49049b4645c31ff849101feed3f0db946040000000000008a00000086549b46d18ecd034473f9763e5f4353174cd5f2d64e3ab362bdd6e4467f91004d5a651b4fba4871344b815cf0a61ee05f7f20d0956250bcead0f9d9cf0b89889101feed3f0db946040000000000008b000000aa23b8c7befc61649e8f06d48736bb6b1912dde06bed5862c7ab80a4c6451f0a12b167191dd9e7aaf3cb176fedcf9e6042fb09df5fe8dd685fd212ffe017e2819101feed3f0db946040000000000008c00000046d341a34fe0b84f5529fc74542febb8d2a5c6936610d471e439932a4fa5e95656d305e054f5e7cb211c73d705f35b96e405dd1d40843007c86ccf6a554416869101feed3f0db946040000000000008d0000005052b27b4094a4a8375149d0f1d0eda825477e99b56554215b53511a84108e0a410ae91655af1aa1f0407791a2650adb96fa5c3167be71fb92735c2113e5898f9101feed3f0db946040000000000008e0000001eeaa1f0633a8071de717df0c437beb8356a5a6ff1a6e93b9678904ad940025379fc4431b5bbe000d70e1804170b4d76ae38990c4368cf22619e489684069c889101feed3f0db946040000000000008f00000098f307c3d86643986ada370d883b5b6f72c79d26468315753517977b71e19e3446164d342bdf4db3479c6f07e930c9bfcc748390f4d72e7b41423abc7cfc0d869101feed3f0db9460400000000000090000000b6d78b72345f0a570b4caf4cb6e1478a99cd605134c3698c8197619f6f1d9c1a980173382b0ee5fcd4e8a3dac7f3411683c6926738d7a4694aae6dd207bb9a8c9101feed3f0db94604000000000000910000000ecc34d701953f2854e7971a4fe2c0ea86f5b1f308fec537ddbd37cae573b00d76dc511c1ab600e10ce14b7aa73fc436ab9780f40a00fe92d6f7f21f2dbe4c849101feed3f0db9460400000000000092000000e0741717822b5d5fa7bd2efc11f27e0758658a8316b52bc9c96411751034f35a02c4366e610f5c08ae056dc5ef7e2286211dc67d07b17b2640e32c085f2598849101feed3f0db946040000000000009300000098535e3505aaa18377120d0c2203e1d6d4b04e03dfd29127c8290a0f8c221e5e4e29077da00575a0dc23e9ce925d39cc0b32d23a334630877a5c36e1d6c04e8a9101feed3f0db94604000000000000940000008c6aeafe1f500f60eb99f977a8ba297ff413866f08c9fcffbe209af1feb9e954cb650606512303b4935c0333fb85f61feaf26f6db7f5a09debd22f4a2265b58a9101feed3f0db94604000000000000950000008c3fd705310067c1b3cf1a24ac5ddc579ebc80628628679aa87249e55eb5e8254b9b637367e6cb6f42d50a47d2d10616f6dcf197772ab8f0a8d80eb8f22a4e839101feed3f0db9460400000000000096000000f22e3129cda62b2a999d3b3ccdf143d8d3b44aae5c61ea7218f1c2c5b94df82e3e75a94d4d0911ba9c81306e7c31ebc002165741284eea182f28722e716bbe8b9101feed3f0db94604000000000000970000009a346fae2a4722d8974b40e3f444913dc1d72c07de46c70e2b5e701efee2d7017b089a983dab08595b80497776b4ed899f7d312eb3a3fc7cf4e76607222d4b8e91010000000000000000000000000098000000ae2e8739eae1fc657d277e2e753164d50b69c12b925d43f1516a9aa3b5a5aa637bab00d33e8fe95c21a75980d96114f90a43174fc3762f303f3057c97c01ff8a9101feed3f0db94604000000000000990000004232528a15afe44bd9c16272ef28cf996ad0efae8122330abefa9bfc0ab79759a68673b4ef4df37b4d48c6a7adfce5812ec0ae3e298124f35a7dca4cd4827d8b9101feed3f0db946040000000000009a000000429798ad5f7c616e36ab883db78fc2c8d5d2d35a1ef61f7717123a5dd6baf277ebda604a02bc45b82fa08675aa05d8c5355535490b0ce91fa472fb37dd9c2e869101feed3f0db946040000000000009b000000202c971d60ab12ac74609dd8861dea976ae3ed1ac22116ee20bf99fe68777a47ffceecf46d7f6d82aeaae7e83c6c76c6a6e30dfaca5847246ab26dcede8704819101feed3f0db946040000000000009c0000002663793b9b0d9c7bfb9a68bf2eb3e73dbac4c3ee412efcbf7ea1c74d21b25f02442ede0403abcd36a57285352b000d1d038dcf93294786c8022c40e51c59f28c9101f66d0f001940040000000000009d00000040826e7f9cacc43d32c8aa374e6f4f1d09fe87a60a576d89e083bd3b6d7bc0448a68272f62ec74e722e6932afbdbff194c18948a470c41e38fdd2bdfb081ce8c9101feed3f0db946040000000000009e0000009c2232d306b638b26b53c0977b44d34799e4ee02da0054626958b512142a605aee5e45cfd3bceba39464b924c17725dd223c5ea9c8ec064259d49931cfcb4d8f9101feed3f0db946040000000000009f000000949e3b689456edcc04fa101bbae864964e6eeb4660fe38fa9503123df6db1c42d7b2ed249157cd2b8407fd468f14c24469b95ef21a42a2c86c497c2f63a5408c9101feed3f0db94604000000000000a0000000e6e35b96decf4dd035601cdbe4e3e59b63e8fd9e4df58aa26e4de162e7691e5831ba4f3beb72d73f4f71dc94df16e2df415451503426fadf35a09eaf53ad4b879101feed3f0db94604000000000000a1000000f83f9ba762f7b820f25012c413ace4de4308d93e8b4af9d2b94450461f0324634140d5d30d530e762ebad6ba4ff9bde0e8added73a7bba2de3e13d447834b5889101feed3f0db94604000000000000a2000000aec910676ed12d59e925af41a4e8256de4008b4b3a11b3584f675ffcf5357c6bbc0914698b68d409d9a61e8d076e7543398034601c5618febef44162542223839101feed3f0db94604000000000000a3000000e0d49746a94c7ad886e8d75bfc2ab14f57c30fbdbda4618ef29293d80c6218209305bdb02c73d1c5258cf17df00beb601aff787fb9fda737097bf4a263174e84910100000000000000000000000000a50000002e7112099e051a2efd3454021b8d5226145e9099f07802eff036b5758e93ca3526424bf363283de74549cce67fce680f9fe546e51f747e3168d380a7596b448c9101feed3f0db94604000000000000a6000000cef6de61af89a47f83d5429a345847e92df67102e669955c1e989dfc232ad81c7116c27be01f38795838aeaa5dc652b129f0eb7b94c1014cc4e3915a35e792869101feed3f0db94604000000000000a7000000a8e9a6f2d919f177a76c7d06cc6b05a7a2c1cca46d470ac670f8afb4ac60c1385a8857a62cbbc552a264ca75fee36cf3ac21f2021d6d06f338b32a9949ffd58b9101feed3f0db94604000000000000a80000003864ea65df8fe5d12b8f3b7c1628b12d65c45c1a33f533702388d0b0466c381acc5281743f50247f218f5907e7732fb4c74b13bdfe92a10f77768e46f42653819101feed3f0db94604000000000000a90000004c3d0a95dcc96e9dc47b0f14eda2f3d7a6fa0782b8a059f29b0b60d6a814ca0e90cd659c416a0c0fafc2d47964b2129cdb31597d5c6482a7a39c7bae3006788c9101feed3f0db94604000000000000aa000000ea2820d6470eebedaf2426b94d8b5566e45705187049401d9c6c311e27125b010773ccdd0edef23371a47b7c999015d3ad60e7a544e83a98a2ce6fc5030dbf859101feed3f0db94604000000000000ab0000001214a6494951846ec9c97b7956083de9ef32932f19740022d41103c04b237b40b52b2e2263fe7f72518d98e161aa1a61044ed6d12b8f251b33c7780406a4338c9101feed3f0db94604000000000000ac0000000230ef5a0e6ec6b92b7cd1d578233229ed58767e9c1cda5bdf6bf0e18d6cc358a30d178f2c9dc0ff091e826c0de982b3e771c3ab8fb19e288bf0dd35ab84938a9101feed3f0db94604000000000000ad000000360997c293f93cc71897658e5609aed11da20e42ec3aeeb0f21cbaa7efdc8e213743d7441be1f39db65650842512c519230a68db6ff80ab65fae7cdd5d785b8e9101feed3f0db94604000000000000ae0000002201ceb2dcb20b5f0aab5ee6a881ca1e712cc6929b48e765c7f14bf86a1ba446b3cbc2689f1095b04eb941e05d7c7c756d6f27701ac40627287b895dcf3ad58d9101feed3f0db94604000000000000af000000fc8d37aedc5db2b060a3da2e82f4a62cca41b9b77f9ad995b673148058f1dc27c8d19b8eeeb0e4876dd69fa820b8459c58f32ccfb7de65808f234831c32ca0849101feed3f0db94604000000000000b0000000c8b66d6d2898da84c1c7745d757d7e1c40cc18ceab5556c66a42235a8154655dc7c4327107a184d6e5782fb4df8751ebf42b2820ddc151ac020cfa5c73a3e68a9101feed3f0db94604000000000000b1000000b69059eae35e873e2d85f24df3f871e752b50abd32fb61919290c15460f4824e9c2cd31b5ce664c5d17db93bd0653878c497c9f6aaf948b099238fb133dcd6879101feed3f0db94604000000000000b200000030e4be22ff72bad663d1c6652d883e2cf062a99ca80b19c4547b5a464129e06bd4762d4a465f36b2f1f891f5b7a3d35978a723a7e3ca872054a1934a2bc6d6809101feed3f0db94604000000000000b3000000eeaed470bd25649caca05ce8ecd07e98dd6a8e611524311717afcf2f933096203bca9c42ba54ae2f03c8f9c426e8e133be0b1fa4c4323c95a86b179d09caed899101feed3f0db94604000000000000b400000038c489b7637ddc2ff7f054d36993710dea712b6da0b92eb952f48f9f096f3b77a3bf421fc2923de18725043a0fe5de5288bb3d5f0154cdbacf5a28cca81e18809101feed3f0db94604000000000000b6000000c8b754c394c445827f8a37217ddfa2189df1b4dfde33f7b786da39733960374a8a6f02d6e4aac2f6efdd4711a6a7b39f87ec6503fbe1e7fe03d65cc771e8118b9101feed3f0db94604000000000000b700000036eedb468f597e4337746ef2fe412197f14c3e95a1e6196d2452912e42f79067b6620780427fec906d56efcce5be588aef2f93204de206d75cb8f7f5778b078f9101feed3f0db94604000000000000b8000000def9200e7bde1a722aa43f7b14b5f69144f8da7fa305e5a64292d12611474d5ae13b5f6147b9d3b3cca41ba5e6e501a8eddd07a054c08d40914efa779cdd79879101feed3f0db94604000000000000b900000026a68cf37794241e45bb23ada6720df7d5e2a5ddcb8d44bbc0627cbcd30b7407129b04bbc4315526a7f4616a755764e2c3d22b15fb22095c5e14c3e18040628a9101feed3f0db94604000000000000ba000000f2e219da8cc0e4f57adcd1fa7f9adc0a94c372065a8d4cf4775979955c194d0b97b535729a610145f44ac67f86d381ae30bd4f8a4f44d9d49c80c5d5d97686859101feed3f0db94604000000000000bb0000002cd3c4c49fdae5e26ac5368cd9dbc58ea92e91d8b3a8636885f19d800159b86b346b20420892e538b6b9db7cbf460f30c1110629437af6757e47e04cddef35869101feed3f0db94604000000000000bc00000090e449fc3b46202c490b80a6b804ff073899c185b18cf9031732efb253b31829dfe541fe9607593428f9b90cfad334c15d34053f9737bcbb5341a388f0673f8d9101feed3f0db94604000000000000bd00000064f279bc49323254a33843b7de1e3cc11710572ed2f4e3d9822cbaf89ef1ee165a634a0ed0dbe3d1431d51e038c06ec0f03abeb5a975a66ffb3be3dcb23c87809101feed3f0db94604000000000000be0000008aa6d61c2c1c614d1252065627886e5c93a2f8711b01cd49037009fd0adc5d67db55fbcd116095b83e42891bf230b623e799881fd7a881799e3d10762211d1889101feed3f0db94604000000000000bf0000002ea9b37a67d884703054564c529cecd50533072760e8a998b7f8b0cbaf56da189d3ed49ab8e2a55015306bcc73de91324b410e1285527f8c6cec1432883c29849101feed3f0db94604000000000000c000000042dba95b552fd15d0b6299f977e45f22818ed0523c04d5d50647afa6e485c8657ba9fc91f25dab6b89762928a5a4c6a1b2efa5b1db3ba9940d553d924ceaa48f9101feed3f0db94604000000000000c100000034b228fd2f88e450cede67f2d52350b0cc82fff20e7d24cd466a2f4aa6683733e413be82ac59eb6722006c2ce6c05880a2c25f203e7d3aa40baed6f92eb157859101feed3f09994604000000000000c200000072c5068b55015d412bf4444c7f66e6413e8376235c61b1faf30ce0f1906a993d18193ef852bc843d70ca3b4a68db4f50af4062c01682bebcf0d3084d0cf44a859101feed3f0db94604000000000000c30000002c5f847d5c9b4bbe5bf7ce17e76544e5392c27ce15d378df704dcc14c820824d53b8c862ae3812423ed2fd95111de77e4cf4e24d34d6e8acc13ebe3347170f869101feed3f0db94604000000000000c40000000a183e72056e0c1cf0e97dd30d314fe66c59680b7aae5625293fe82d03a9e11f76ff551010ca91d1f46d331a7f8b88c27f05c358355cdee7adf77d03d0e41c819101feed3f0db94604000000000000c50000002233020aeac05c84c3b6d94cda10db53887ff4c425511ba855667b77445a8452d68a88f5d316a44acf46a50a26cbd9585fa8c9b94953e994ed599ac17aac7d8a9101feed3f0db94604000000000000c6000000b62df77d8fb80fa74a402af555ce5ba455eb2a8da0f0d6ff176344a57bcbfc4d167d66e984bb6786feed0ddbeb9ec5481da00562af91821c95c724ba145d58889101feed3f0db94604000000000000c70000001ca3d9872633cf6a850bb66711b996286874c88fef6b3548e3e91c04a18cd10a808d8f6a18fbe358e7d85a60b60de11994c45042e2713718471599091c11508e9101feed3f0db94604000000000000c80000008cc5c995252075574dd620c220dec542664af9f0829f1e1804856b084b68892387bc8367c7351804cf24434d8ed85bcc1c2bf6545b4d47b9604b773b850355819101feed3f0db94604000000000000c9000000d8f3dfab0c956b79814c3c7ab971b78b9b9c8df0dd937f1218e8d90fe8b4a34df17ecdb2c0cec92e102606bca3b6559e2da64268674d26ec21bd64f6f463568d9101feed3f0db94604000000000000ca000000d8f9b5344d97941d281aad2fa2ced92b9e449fe2a12952bf7154801c9d783529071a7589bf52782ef62a5ef6b457dc5abd2c9207b72a80d98a1e7e17a7ed888f9101feed3f0db94604000000000000cb0000001adfd2e2ee6457e3dfc4d47964f0271cace2f5452be6492abc91cd31fdef832475133e8eef2fdb1aede680b93c7bcfbf4ae4c8eadd0ef01a9dd1c870323316859101feed3f0db94604000000000000cc000000ce9c7ba7fbb499f0d77862f065fd1b908a6aaf5b819c80b6f99f9e887349943727e1ee72be958295bbd6fe082df615d42371c3c54a51fae0cd10858eb70221809101feed3f0db94604000000000000cd000000d0ff4d4e7a20e8253f9115d8799a768c289cd9bcd5924e96cfb011505b10195bf61aed724b56ccbe34b82c819d49940778479bdcadcffeabe81c5671f5ffd5869101feed3f0db94604000000000000ce00000016031ab90f15d0267808a67301255c394a2f0f20280be5d8b12ab95941e506515dab36745e9276362851046064c9573771a819e7c655577b7818f351174bfe8e9101feed3f0db94604000000000000cf000000a665e6c6761b0e269526757a476e379962433a791185e752fb001a3065f43733ad261a4aaac894a6571990500728a3baace0abfaebe892db9df25169b293978c9101feed3f0db94604000000000000d0000000167f6e22f4c56da0c0e902b1a3ca54e539f34bd696d039071f47b87d746d7b54b010eaff3a3be272c4195b8f5e4fd55094ce233db98bdd781035f2710004638d9101feed3f0db94604000000000000d100000054c74bd73587877e57bb72fcecbca83a55d6ed6550dc86f47e9d968db9d1e3537aa7edab53edc288ca5f3c720549f46bb7e8c5cba8ded9835bf0f5cea4ef598a9101feed3f0db94604000000000000d2000000b047955ad6fe1f58ed21fb4acfb8e15ec422cc58c2efadedd119595f08ded07b5901f2da96695acec86ab48de0e90e6663d7ec7c4ad18e1b474b1fb234af0f8091019aec3d0d290404000000000000d300000020912d75f7b4a164f315ff396bc37d50ebc1a23bb739c172a0f5033448ea87108a233133a625647c37a2cfff46e55cb6e3ee8484620fdc44025b123891950d819101feed3f0db94604000000000000d400000002dd2b1e6581af0071ec4eaefb811ce6b7e720ab60595def4bed45ab544abe77030b9e23f154ffcce078a7f062a990c6833fc39be09f7f6cbf5cd15d081082899101feed3f0db94604000000000000d500000070e7aef45c1dcb39470783fcaed8c8609fe5acf62c47949a7f6b469653124b76901fedf7dc59f8b888b8a49ac607077ad804c23fc4d541a78bf4d612330eb2869101feed3f0db94604000000000000d6000000b22b91f8c9763bd91604cd8a5323ea06fb3d83ced89092e6371a0ff8181d145f857d4749281e03d211191c4dfce4378b49e8e96bec8bac2815df5e6846da158e9101feed3f0db94604000000000000d70000001ada1a5eb7b8ed6423bf391ab5e4113eca01050ccc175021be4de964bcb4dd1b62c5bba79a9067e16e3f2b7d12b8f5f22b2720089f3d069ecfb12c97403fb38c9101feed3f0db94604000000000000d8000000220e1741a0723b9eacfe0b096868e3eebd7cbdf24f42a88b5dbc03d38b2a492f7127f5c01edf5d1a6f8576fcef26032673ec3d289bf4f48449c37fd49d8d6a899101feed3f0db94604000000000000d9000000f410200aff05efee79291ee455e932c84a3b3d5769d35721034afb15ccb2af7e0e91446664615d43a6eeb602d530f2258f7ef366ab411fa615fe6e5014026d839101feed3f0db94604000000000000da000000fce5f1a32c163b1f3bd4228f32d5500149314a84eb7f87b7087ff91eefce0664ad71d72808069afefedff6da10691e3f3a0c4fc0961562b316cceb6454c3d3859101feed3f0db94604000000000000db0000000800d6228b21fe80efddef693afc1e83fc9d220ff12c5e9ece3e3054a8e16a4670f0e78f93f39b2b439d1cf4c9a47835a4805473316f281d3b7f4382808f68819101feed3f0db94604000000000000dc00000040f09362b38e71866c8bf7fe4f901f9df4ceba575ae5893f348be92855c80e79fa82d521b131faada079446cbbc6e853fe0e7680c9ab95c315e3914e2d38ab8b9101feed3f0db94604000000000000dd000000129a18aef70fb794a705d9235418e146dd118ac5dd029428ad3ee69b45f6a47445c04751843f621c039ef920a1e6c25fdab52a6a1fa0ab57cfd5cb8eb556318c9101feed3f0db94604000000000000de000000d25a94abc65b14fd3e286caaa4c53345e45cbc527b80c6c7be69386a1da97f1ff30fb3ef275d3526f10934266f44ad132dc98fc2dabb9144d84bdf77e696d38b9101feed3f0db94604000000000000df000000f20dd8ab128685730cf0e33d4e59cde3c2babe9e96e189dc0dc106f46460316fb0de08dbe18c58cf6c1e02b7a2a5138a375b75e78343c86faa9597eb4ab58d8f9101feed3f0db94604000000000000e00000000cf59c62aae6cfc2008e70dcf7f15a7cdc81227f4f4f1ba6076fe0169eb2e1488f3dbd6cba9499fd6c33e90e2f2d23d580a45bd0cb9ad8f09e56d06de65c12889101feed3f0db94604000000000000e10000003cf61fa05be5e9cbb9bd4b2a394f47cee844ff2675f046c3329e839f11bef329b9654cbf47bb9dbab6df9244be2288a164dffa6e263034ddddf9e39117dc59849101feed3f0db94604000000000000e2000000e4b958b919602dea68df3c4d19c38b9b4f217b7c1b225a621c69e5fcda27054a6d989a2a91b82afa07550752a56736534a9cffce36b0cf379f0dce09c1ff66809101feed3f0db94604000000000000e30000005492d4323e7f02b424fbf9cdcf71dd271fd76c471d333943729242d8d37fa05afc80ed9dc251060447f7055d0ff423ba45a01f239dbe7120cc40a3eb25dc548f9101feed3f0db94604000000000000e400000094c8afe5d9d763c12db88e8364a093e2e137cd8b25f70d1f87dbe3762489292333a5a16f4e585d50bc6f88c332d99bf59af1bf1414be104ba86016edf7fe848d9101feed3f0db94604000000000000e5000000b04c97fc18877a4800d48405096aaf0288a7bd124692ce3148abf6e46dfb1d54965e756952f970a6eef19c5d6be7d968eb265e9aaf1a34517203095233b9b2879101feed3f0db94604000000000000e6000000b075d9ea25d16d9f261662dd10285482bdb4b06deee2cf99800ec3318ade532e688bf8a1ca7cf713869c26ecb7eca1cf17a086cf572a1271ed36ef295de5b7899101fced1f0db94604000000000000e700000048dc479599999666c95f753415a04964b6779b6b6ed70cdda4811cee748dcc5fae9b2363edfaebd4b0a69b7727d3fd6dfe80d9b14288a4277623e6cc3fd589809101feed3f0db94604000000000000e80000007c907168f369fa651754276a41004a914f6e659ec40e705db902976e83e96f05cb4f40a2b254cb9046b20a0cae8bef1be0cae2485e2be7081c3416f3c8e9c6809101feed3f0db94604000000000000e9000000a02fa90a6cc977abc29e4f3cbbf80cd06a0c45c48ec01629dac77ad77a88216e525999961e0b7cbecc871c67a17094a209fc6f8b2a6855eed177494cdf98a6879101feed3f0db94604000000000000ea000000f6efa660a3db4db51784d923067b6294647d5e0c6cb99d9b07ba839c6e639327296127f77c0c82e6b4a9367d3fea949cebb81616016cc35110a52b8445f12b8f9101feed3f0db94604000000000000eb0000002a2136659e6f66cea8e0ac3d23aae5b35446493e8118ef150e3dbde497a35b2b73c05e6d0e73433cdb26171ac0d302e5e01ce4d510870c08c38f9802b06fd98d9101feed3f0db94604000000000000ec000000bce57209659affcbd7a901db5b1ae55bd8d2eacba20f4311a053e917de74bf1ea1e3aab25a02321b1ed35aefef6e394bc2b496ff39cb1d5a1aefa8ccd3048d829101feed3f0db94604000000000000ed000000584a5d55cb20061e04d6d6e0411cb5c7de90dac74964b4fc1babdf5b11f0b07977939d2e1fe7836ad324d0942d589158a41d94118fc991bdabbd2ece5a45278b9101feed3f0db94604000000000000ee000000a89e7c3bad1e1f1fa7a7f5565bf8c522320b49b74a0017e608b4e1594f4e770b69bc8b19563ecf9345c382bcfaca52cd90378958d7defe3413eb48c1c465338f9101feed3f0db94604000000000000ef0000005e78900fa5b286347e54d8a5e83ceb2bad2b1bc01efe1d0d9b9de0e58280f06888e30b6bedb35b0871a6f5d6e1d264bca5e5ae1fe8a911540c26404b744aaf899101feed3f0db94604000000000000f0000000b4825f18e22f52876b90ff1670ab305d6f17c5431a950bfbbb3be24e34d09d3db1307876cf89b649b2994c565c7c0cacb0aadecce64902e1321b3806cf9b1e889101feed3f0db94604000000000000f10000007ef4d9446891cffc57dd69a27fbaa9cb27b812bc42ca651709d0f78f35fdd24dd163e1f90302dc9c9ad8813259d01fe311a4c6a84e13ce6735afed077d5536889101feed3f0db94604000000000000f20000007ce3174f08122864ad8c05f543ea96b1d3795d4e9862f1f0f0ab7a7be92a4f406e665879be7f9c8ecdeb8f23bfed12947a4f1fafe1571233ea94f3e5c5c97a889101feed3f0db94604000000000000f3000000e2fc4d2c30ffa7d127dbc218c4ac4a0d85dd92bf817d897f8acbb28f6de346403fb34933daab5fffbc37a49636b6684c5263693c57e26f296abfb7373be7f7809101feed3f0db94604000000000000f40000002acbc2b467b63890dfbebeffcbf2fc4ef00a1ab24e175badf399a60bc1bc06256c7ac8eb3f58febd4bdd3dd85bc80fe28888e160e168e3ea514fafef2a14408b910100000000000000000000000000f50000000c8e940a8a9acd3af5106e43238dffb1f3fdbb36ffb436cfd0eed6890703393730534128df1bcd33c80106e4d8cda454b9128cc455699c9c5949a6c08c4af2829101feed3f0db94604000000000000f600000040fc115c199f40fea44de6733987029766945a5e30b4304ca72514098140a14cbfd20c676277456be8940cf41bcaf62ffadcf70d9986b9ea41d7344dd1bf43879101feed3f0db94604000000000000f70000004ea5fdc9ab51b8bbe7eeaf70f9d2f7405f16fc9ad064930afcabf0c21b8fbb68b6d6edb7815fc13c541f3bd0e86469b7ea554a16697ca16f97506a155f246e83910100000000000000000000000000f8000000c8f8ef77d1a40752eebb2f4f0f3bf5b16232d06837af2e2e209e2330c2f57e610b01bc20ac44540974501bfd40bd9078a487cc80c6ad22fca90a547526280d809101feed3f0db94604000000000000f90000002837a8334ac888c131187e53c200bcac41eecc4d322d30382ca17ecbe51d2a389b2badbb5e8079ffcb2db93aba2df150a59e370ddac3510d4d885d0aed800f8e9101feed3f0db94604000000000000fa0000005a853387902606a8a023d7c1fb8f0187d0abe3f2cfb700e3b899ee22e0fafa7237b63291cbd052b55da4b2f8322c36485181cc6bc0a03c68b5b1682d7967ab839101feed3f0db94604000000000000fb000000fce943b6823411ed974ce049934cadf152f60dd5b1d5b0ac7c255fe44ac77028d5adfe70790dd441a4b80ea2006b318669b3e3b21b755257c57a3952788ae28e9101feed3f0db94604000000000000fc000000a0085832f78b138719b8bc3a8b4a22ba4dbf45869aeec0ca07587139ab3cd5554eee127cee5f094b4168b7cb0395c5ca2dbdd46f63468e9da8e2502250163c879101feed3f0db94604000000000000fd0000003246a808e84cea24fce13d4aa12275172b864713d756943c0de77ca9997d702cf36e62439817ba23e1becf3ea1e18bffb97bd6c1859feeb42d1041cfe1240e8b9101feed3f0db94604000000000000fe00000072397a042b45ff904ea988f428858bab243c5a324ec55b2dacbd99bf59c0845e1c4f5e59658c8d05b31582927fc45ea90f6f4bdf88e585ba4522d2384cbb22849101feed3f0db94604000000000000ff000000862d4f7bb9ad4bf54644ba97e3ab96678bb4336dcc620dcddcb0c3a8444fe6156d117228f324e7b9bc0bbbcc89f36615b9e16436727161dbe671e804e4cb65809101feed3f0db9460400000000000000010000ea29c34414e4e4baf3d115d467c294a5549e895ab89a847a594a870af10c5d4333bd3b588c14da7d79b7a229b06d6ea9d5fb02f2c6b30af26e5815ef28bb45829101feed3f0db9460400000000000001010000b2edf97dbf73f82db3db98107e61ced2331d09213bc8512c79a6d01e3ff1e52743f01a6c0860b38748365ec9f4fd6cdda17cd1ba21ad802e1e303d45bd0eab819101feed3f0db94604000000000000020100005e78c4b5839bf5805e4cd1a54df98d721b56b7accef475d39db91b91707b567ca24e1ff5e3824cea4b47fcfc4ac535135a8391cc1f6dc3a0ca3d76e050bcc98f9101feed3f0db9460400000000000003010000a6fe9988011882b01bc348311640f92ed67cf7b91e000a0fecfa7d271d1fe04ccd9e42a6b0bc412b5fbaca889ad864dcf8e5096a2f05cd9de70686b475f645829101feed3f0db94604000000000000040100006ec2b28a687fb65b2f0e37817a4a69e1016e9f9c61620ad0f3fefdaa9c0b03720e71a2de177cfbd6f5c43a1229a318e2cfcbbdba8869a16ac8f5ca61486a7c829101feed3f0db94604000000000000050100003cb103441f0887663eeecfe55325c422feb4c168a59c204d1c83f643a50c18403be003a0d24afcf0395f0167c35f06cd601b24b1d08e5a879e4115f196f50e8f9101feed3f0db94604000000000000060100007083c14060dd5c9ba933889b0106a6193dd647e36df84d71b53c685a289ef211bc1e9ff8c89adf0c9ff8659d5474ce827acf36c5b4bb3acc13354d451cc3ed829101feed3f0db9460400000000000007010000a2598dbacff24e7c5bad892a8c56085a4a1c151df91e3de5446e8a8a68c78278dd1c42e103a2a341659b3a79affe33e827d3a5892dacf31099e252deb079868c9101feed3f0db9460400000000000008010000d2be3d798b7ab26158f489f606a87d6e39fb16f61442d491c64092323a2dfc08a04ecd3e24f8d937f14655801805a7cc2b6b5363d1fbf6a6eecc04814447658a9101feed3f0db94604000000000000090100009e0b8ec58bf228e15511587b052ce6a3e5aa7a67cdae3227301c4fd3da80ca4a6cd0b14dc6b29eb9762a5d77620e46bcecdda2d6ec9fdf98d463e5c49cf5e6889101feed3f0db946040000000000000a010000b6a7804d81c08ca6db66cba67d939041412695d9bfa1d931f0378eb6ca0fe85db69c3327b17d12c015fba65b420afbeea1dabd372483f334379d3b94c3e3c4849101feed3f0db946040000000000000b010000f627735de65b0d64db2d6fe4817dd8cf7a92b1dd401cf5e8932765b41dba31177dbdcd6ce347cf3d27ef036ed387ff7d43321b784dbfed8cad867741f73f968a9101feed3f0db946040000000000000c01000064816400c7da6d7b5db9561413449a05b75817caab0b62d00aa59b8de196d807220921b51e1f4ff8d8e1d7df7a3897091297387546a158e26d3d938baecf81879101feed3f0db946040000000000000d010000dc06c52c189254846bd5b6616b42e90819bba344c675f6631f9e3a929227e560e4f590db085b6feb28f6abb9fd91d827a755acd07a87a4d77f446f8d3ce978839101feed3f0db946040000000000000e010000be308a8be532fb1361de3d242eea0557d0d93947fad6f27c67576a07613282134f1fc2795f7a8babc20499af7868819dab2f2f58520e3ea2cc780e7c61c4ef829101feed3f0db946040000000000000f0100007c084302b243d0ceb298cdc94a9cddc6dc7d0e7669ae174d4437902b53ac8e23bc12656f2735bc4e9afb0ee84a99343d8c12b9b25acaad4c54c7a5b9a67f378d9101feed3f0db9460400000000000010010000a02b3d5bbe8b43c7ead7e4885a69caa912de5d8284d80fd0f38326b965da8717710434dde33f31dad7b85e98e3fccd3498928ac046bb747a50d2e6b9562dc98d9101feed3f0db9460400000000000012010000d085eac324564fc651c1fe23b8b0882efb9fa08784800a7d992c2c3acb8724017c2c9582b9c8842d8c6f061080f6e103fe90c0cf4f20696ec104e8e2933fb9829101feed3f0db9460400000000000013010000c0cf2af4427b4415d6e753488e89a0645bd1441a7654f702fe34a5cb7a885f468e5439a4d8fb79cb4908b554dc1b838722e27e30d0b81bdd1b066435003a988c9101feed3f0db9460400000000000014010000f88cd09a28e7cdacc7d73b9c3974a105323b4025c2c9327adc925f6ba7717c19e2185cd9f4d1c40c0f3a2bee325c99a6e05491806a4d26213928616bcb519c889101feed3f0db946040000000000001501000054ea7750a8dd683515f48bfb98d330cbcf3cde3bb39608870b34294d28c7ee39e6f5238e285efca6e62ece6c645fe7cb85eb58fa2de1c1c4a6306207cad86c8e9101feed3f0db94604000000000000160100009055885a8fb964d29b2ac768a4a900e08f79510161c097443aa501658a9e354b32481d17a3ffe9a4dfae1255ab786c8d20912e64d166d86dcca993b090afaa8a9101feed3f0db94604000000000000170100003818e8c414765a289191e96811de72e2eeee777a098d1484139dbe888ce5431f4b589b5bb1c6b809506e17e4e38f96142c70edcb389ac53807d98a681637e28d9101feed3f0db9460400000000000018010000bac9bc44eb3bc4f3337ec595e1d2b70fe0055b4f391ff8594d34309d6ddc3620ece8f98f603d69c9339485725d4ff02cc2cfc97cba9f5caa19915d2c1b6f1e8e9101feed3f0db9460400000000000019010000fcf63dd0ef71b3831a84aad66f6f96e07b98f59e7360172ca1b89dbf1610360a21c9df11ac690b49d5a1ae3002ad820da18156fcdc66ad9e7c4a67095e4561889101feed3f0db946040000000000001a0100009698137c69cbbbe03282a6f1ec0cb47c537819c0af0fe9ddcb7cd2851118913fb0daf5c9d089b6e05242cd9b922defd55ae3cfa627bef52deb424bfa3bf4958c9101feed3f0db946040000000000001b01000076486e42d03834ffdaf536530ad281ca3e45f1e873422bc1f33c35c92200f133e532756cb0511c620d1811ff2c0af4bbc0aff8cd1c1226bc60bc567903e1a9859101feed3f0db946040000000000001c0100005ada54acc19988d790337418657fab8d2df3bc33f01b6b37739d52663f2b190d53058d8cfbb9e616ca61bda536bd697c9775eab39365d211b5dc756716c0ce859101feed3f0db946040000000000001d0100004cd0debec261a7544e8694c35cb1fc9be6c430d6935d4a80c36cdf6330a07651ff11112a7b0eef8f1b8c5f28885ce2bde172f9ad74b6f4f1be8ec323e9ad74869101feed3f0db946040000000000001e0100003cd31b073ce178dbb31d1751d45d6ecaf655310b84c40c8c0837b99da6736f5acc61be4cb8f3d450ca5babb930ed3b9722e1253a7663d34fbf9fc199125527899101feed3f0db946040000000000001f010000a8d234373361660de2589a9af3fc66c7313198686abd29ab1dd26b2149be21007b94cc28e546fd042c6a4d025638937cebd00d97aa4c4cf7be24fc599e3bbd8a9101feed3f0db946040000000000002001000060f514aba19ca6ec0f2f35f9f8bfc975ed4b6f53167e321f795d48f6d47e3445551580f68874f2742aa7a778c82764a34b4652501311a481e320b4905b6bf9829101feed3f0db9460400000000000021010000f20f3d1c89feb4e2b49d1e5e8fb6a9534283c193aefbacea3ba78c05668e687f3916aabbeada5e2ecd95928d4fd3c50685753127713828ffe6ff63032046d4899101feed3f0db94604000000000000220100007442bb6deb1b422c0fc6d6f5a45423cf2b271906238cc620d80c01374871fa6511317df4db539755158df71074d226346278b4d41f7b31e89fc2fc36eb8c53869101feed3f0db9460400000000000023010000fe7a80e7e194aecaab6d0c05a143cd804ae7372a7b25b4545e7010ca4aa1bc10fd0ab6d26f030a78dce3e9631a7736d8f9f7cdb12546efb4816cf9ca71d588889101feed3f0db9460400000000000024010000962a8923f2914d6f5f8643b31e3d31bf8997e9bf13a9cc35feba2a8694bdeb672942f3a3220d966eab3dc42136adcbbf12da8d7df63e314f3842f2ec1fef648d9101feed3f0db94604000000000000250100002ab6c4780876f0d9ebf4e6749b0f80b373977e994bdf89cadb1df09bb9b53b42cfd4f3ee06e9066031eba107d42aede6d244f07876bd36e9732c540d5be2b0849101feed3f0db9460400000000000026010000385b1ac08716dc9729d39f846c9b3ef638ee05a2ef70c390461d444888559849ef6dd433f94b5b50142f95de375e71968834a2e05399d9dcdc22936312a144889101feed3f0db9460400000000000027010000c4ea9c3d4dad9a3af79d732d7741334336cdc2b8cf865a8f145c88ea0cc4442401a76d933ddb83163de211b7dc8cbb666f0e65b7e4da212a15246b750fbe19829101feed3f0db94604000000000000280100002c9198e45937df03ccc3379cbfbeebb47a8cf001fe2f8725fb53f1549169d91157e41227036c7d9c45cb185a9e631e6c914b6c4ed433c25928ff56b65cf970859101feed3f0db946040000000000002901000064135fc19cd093156493ce2d74cc0400d4ea1d6b99b5016336a6a7619f73f3602f9376e2ad0cd36e02ebea6a5da2c2fe18eaa3fe9f149f6133740a45d5ba5e8a9101feed3f0db946040000000000002a010000662a85e8ad2232ba39c5a6bc2e8a1e38a9c3574d43441a373e4e415dc8e92e5ca98b26788a75d962b6dcee04f65e623f42bd1300171b39ca285a38a503565a809101feed3f0db946040000000000002b010000ca0e6a0baafe6a86d70a21fa6e32788ad74590cf67802594f522a6f3247b6141ce8f402cde27649d2cd63e60c854ce950960ed17d98b3292264b65ecb4c3b98518e803000071e47b416463a606f2a694acff0bd4029f7e5e6d83fa6fee5fc9b16b03763baaf498c96dbd9ef4eb27e5ab98c7722e2aec785acd8bb534b5c2d4589496812b13d3c0fae7cb032f3c0ece304312db443f680f5ab4131cfd7276b3ac8a3bc07e0571006a2c03db1e7bdf1eacbd9ba7130c88e3cf9f9eb9528b7e5c8e69de123c3e4b7d37cc29502f21eb1e66ac4ad61de16cbc008a9fd738db42ef5b6ef8c6f3dba45055cf16d93cfb8ad679f2655aa1e5c59b4492043dda58cb5f410d1d84943122d56a67f39b565a4a4b0244329e07dd952893bc8a93a6285739da95a15d988ee87aa96a2fbffb3755c60533240cfe36ee64cc73e790594434b5dfc57e53ec84876fe4389034a36b833531c170ce1e877f9832c7a3b9096f0098a3645106b2c70000009103afe73e13a268856b5651df2c3abe014a353dd53ce611f041168a4900a90bf120864da301419b0d8075732032a96f689d5d5439593d7854e79f2bef6323901d801a7aa12f2b748c6184be3d9d03cabe59d0a14d6578df15acb387bbce4e7966f4115d7ce30c066175726120d0e183080000000004525053529075b041de9c8b4a1c643268c33337ac474bab6674049204a2f1defe82e8ff6744e61a7805056175726101011ee36c7c4307a51c1084bbdb056e7dcb593a40b1f741b8d8210b1049017b47015a602ab21ce6fce30144eae5685d84785a684f9d36009b43e4719318293f108b00000000b9065e010c02ac0b039bbe0e15366d4321f83d0146e40feb4651d52ecb66e160cbb7ac90046326c8609d2859ce1e9755bc2ff193bb71f65daa36dc093d606973e4ab41bd038801e80a686790c9e5e60668950a8aac82f3ee0f29a11b2b9ea9fe950dcf44187456dfb3b1d2feeae799c2f14cebcc8ea3541e483ce0bc9e854bcb391bbd2669a7830212153cc0a063cacc577a4ef169b428364390075677a29f36cc58ed97c2f4e2345ed35c471a8e403b6db864105931854d6aaa6a082bdd2724bc7e1f2be01cac8c2c0700dc07000071e47b416463a606f2a694acff0bd4029f7e5e6d83fa6fee5fc9b16b03763baa262972c46add9e0839a65c75928f7e3bf2a1d40eed8e87debabfa955d049482e31b154a3f2776cb722a50477a0116db5c66dc8d6a3f1c7090300f5860869d2f913faf4ff761f1ebd688dc1dbf78f7d8b290ec529255cfd4ba939d97e86c4dd2654b4c644bec3154e04d8d3f7dc09fc78ab7f82207e52f5be6703f68ce2c94ece9c75652ad966f8a8d5fa22037270d589ed524291ee844635ae25ef3d87bb87793ea880483570dfb5319c7189cccc2b9d5f435b7121a8eb978f2e2712a3e927847ec4552e70264338ebe2f9e49c6b3d839d402f3a3d3bd22ac0e0357620beb7588a3f56205224b1b9f63c9d1fadcca840d6490779853514c0f4bd35aa8dc42a9300000091035a110fb6bfb694582a7a3d86599132733dd299336fed2f3736768443215939fba25e4101d17ef6a0014e41e0ba818884268b01a534a6af90e655de7eb6eab71777d8bbdb3ffd0850002eae96e58249efaaaea5f2d3543d0442ae90756479245bc4dca5c40c066175726120a1c307110000000004525053529075b041de9c8b4a1c643268c33337ac474bab6674049204a2f1defe82e8ff6744e61a780505617572610101502f60932320a8215885a149c350a139be972180d269ff832903b9719ffdc56bc5b44ba52131e825962234725eb4b144062294cc45a4d94dfd44c1c502546c8e00000000b9065e010c01cc7b5b02a09ef61647ea3eaeabc3a18feee4f091c3da8bea1debacb989ff105e89d70a35cfef00729d8dcf2ecbfba0216569323aa7aca6dbe8c63c02bf33488a0212d7c53a250179119cc5b3df032e76fce535d3e5a9eb355b8433927bf8268a2872635a2152afaa0f30efde08baafc4e3489419306939977b63523e720e6bfb8f01a097092feef905f6f87ddf78bf4fdd826fd79dcfd3c9342d670bb67e6a740c4e7f6d34b6088891401e7d3a802c06f4949b31473b28cf64d9bef1c8483469018e2c4f003a08000071e47b416463a606f2a694acff0bd4029f7e5e6d83fa6fee5fc9b16b03763baab82134859fce592aad7c4f209604db09a81c730ba67b51b9d06184e405a60c5c6083d834098d3903a5b8fe71360b17d8b52df3bc3f543d362d4679a4d86a5e2c78ff1c436df30baad3634f217a9f202ca787128e4e9619537b8ea79060fba5fab90a8eb5a0d32e5e7f80d575cd8a401896d9acff6ab078c4b3c3027f6928726c3e8c40f44fa964068e12242110763f333edf62cbb4338898f75a6094af69fc3ffd728d5a5d8d8f4756f934cf10f13c380115081145c560f0dd68e1f697e7c989a5088df5b9615d06f702b8af1322e3f63e2879747702ed07bf4276ab2214dd37748cff124604a12694cbf022d24e2c1fe35ed6a29ac3e2429a910c6f72d3a56d000000e902c33c596e19beecef89b214b46d9c2c161a3d75b1d86f764f950178588b529cfbaeda31010f71ebffd18c16d5d307ccafaf4521b7d5501f7126cf8805a1ab82cdc6491798773b596f8a6959007d16f2ef630d1ad0b48b273d394f827c54810f8fc1ff70ea08066175726120d0e18308000000000561757261010108d0b79faf2ef97a4e4705638101fb1e50881ce075fb49678bc0910b07c767052fc58b046319f8b153092c1092d527695e15169199a49eeba11672fd6fdcee8300000000b9065e010c01904d7add24388362891f22c94e32dccd275f1caab1f99bd7a6c486350780b33d3b3ea459b339476d1c31fdf4d5d71aaf23307be56431d6fec6c3d62cdee3ce8201d414617c2b042cb7a56f2f6e9bf165e1eb8e411a535be7cf469ff8bc18ea3425a564e6bb11fd9b7269c420fc6392e74bcb92a778ed1e73c8b33d27bb7825938901cc6dd449acc69d6f851f4cc780ccd60d6fb02adf0dfd9b57eb1903b762e2115e8fd3545524c4f12f1577e2e34602da54b870d382882edc69f9e3f7ae6650b6802cbf004b08000071e47b416463a606f2a694acff0bd4029f7e5e6d83fa6fee5fc9b16b03763baa6aecbe852cb7f98cab7c283d24ea2825064abf1c7d2a783d9e1e7e6e4045b2755b7e18a1609488d8fb80ceefda976ccef3b70db2c3ab2ce66476d4d97c0b34f9988fcbbb16f693edf3a41a27537fd1a864804b756f1125fa938f228e68d2f58b177dea6b11cdd8469d5e7be12eadaf535750c2e5ad15c8cb8e5910f285272007baacb04a5a5329c452b035eb9a488658ac94c2097d360e6cea7953220812844050f39983b655fdbfeb6366315fd8fa4000686a857cd12cfc060e7155f97e3d856bc023932cb94dd4defd1fff432578360eef16e571f743151a416658e3b2c7cbcaefe2873da003b164dadef024fc1f811b1d4267c5bf05abda93c455bba7cf79000000e90209210ea628e6a8077b0ef73162887f59c286edcb498418643e1e5ccee988e1d8ce1e9000df6b4529bfd400ff9f162dda8555b7021b7382764e5e7190003efcba30a96a4522ef0e32f908447d097650501b1d26ce442a4f536aa6c3daae15d902e1d4af24080661757261206b825a0b0000000005617572610101c6325be42eaec1575783ea2f0757ca9151e9526a981cca1e8fc009344648bd4c2b2a8f822e3a5b7c7fcc629324d208b4707ec94db99cb801700e6255e944d38400000000b9065e010c01348ac4e1ba146d3bc5e38c7f46eacb305c8b2f1bc040676cf0862c93cd46bd1fa889ee614a0063bfe3f35f530d605f796d78faca5b4f4d5d72fca70e72f1288302e646567e367217374df1a9ca3211999b7d4e31d2d196e28a6bca09c25e5fbc21581e7d0d970070318350d1685576c08b3e8cb586e8e2ed782c77db26305c768601802106f8eafd85694c1e8c65ec470d4e3e9206db2ba0d554dc3e1bf61882c63b1773bfb66c8f7f3a33e677d4912e9d8e64e55b25b15db3f1ce6b15aa22eb098e2cef004d08000071e47b416463a606f2a694acff0bd4029f7e5e6d83fa6fee5fc9b16b03763baa1a7242ccb4a0ba5a604b0fa784e7db0e683fbef65cf47be441f0fade4a5af363100740522e43b31066972e610044a4fe7bba449f5ea661f39a2cbd43a35988f2fbd53311dc69757d53445761e4a95ad21652fc073eaf7d527f65660ff91549a40c5f2e9e49a31104d3151c5a61c2b99985b1cc1ae1554e52299b80e3c4b98274cc2955f4732720c23e648b2e0031c3493a37231e0e4afbffd44e1b946d7bba7f970f01b0796d9cf90e98159a0381a62e2ffa5f22646acd12d3c10d2483716b81ec7a1d90797fc1e1b55e0510585fe622e82f89add57f161e52235cef01d16e06f9054b9d347c80569121cd249932684bcecbfc2173c04bff13acf65eb94ed14b00000091030526689cb84af74862e92c5b7480438cd8c3ee1f0abcad911c824d016b3e58d3de9ef20051e8bf4946d338059ce90acf61a1d5a5842034d2f70da0dc4a9c2166d0dd9833f6072c07147a0e5876a58c5ec483f10035de9d448223e99749bbea47da61b3fa0c066175726120d0e183080000000004525053529075b041de9c8b4a1c643268c33337ac474bab6674049204a2f1defe82e8ff6744e61a78050561757261010128c2f054085f76be6ca2254fcf0bd18a2bda267060dfbfe42308931f00618c388f93e53efd38d2877e9130f81d0ec4efd236225b9f8bde9f03f4b5185ed9098000000000b9065e010c0290bd44e709d4161954e55f12f9a754bda938b5451610d03d85aad7614f8df573ed46f81edb96410b3f250283c9e53a0be2b0409d659bd647fff7c0bdb59e218c02be2734a578a3407ce4a8b14888ca95f281dbdd64e9d7eb7dc650989e91c7bb41614acefadbe679dfe8f9b333e1216ae1f7ff84d1bf4d028659607910200ba18501c8ab98e1909d461780e11574db871bd3c2120ffcf9180315567989280c66183bdc3adfe3991910b9be988f10f67ecb34368d6f862b8a998207e1508323557e8f2cff000b0d000071e47b416463a606f2a694acff0bd4029f7e5e6d83fa6fee5fc9b16b03763baab6f4f31c64708e2283e992c87a54c98e079798275b173e100a792fc02c1345405aba053d8baf96a76625a0692bb5ee1808e666066a79d2ea1ff5ba22e75b06ce19605d7fc296b26f037fb47bf073669039630d9cf571fcf1859b3f0e86b8c87270e3aceadc820c988710be822d4fe12610cd2a4b736ce3c683896ce0d90ecfdfd866723da119d2a016f90dfd9b037ca47f1fcaded17a14ec23181bdbbf0cfb2fd87e3c7b77d06bb0a1c2df42ada79d8ffd23143f5e3d5144e1c0e706fe7a9f80ef3ffab41dd7fd0db7a5f4661649fe4a17b0b634180d1004597390914dcde11dd765448cf2d6bd1850d0ff2185faee882aab4ce983488035d64171e5c32c79a700000091030b0bc321e0cda09e360e49cdeb7a1a36d4b6d76d2fab2f6d0c1b66579d195c6f16a11f00d088ac1d17ea838635f275a4bac701973c861d36c12841dc1d0837f84b752f14c09ba685adb1505cd0f10732b2c1223cfde750802fdfba4777711402e76b79850c066175726120d0e183080000000004525053529075b041de9c8b4a1c643268c33337ac474bab6674049204a2f1defe82e8ff6744e61a780505617572610101f858c3254f97cad729c67bad60dd2de71448776efdc1069de7dcfacc55434b45ab97e25f473d657da0a36eb918813137db41074da6616c08bd3854209a05ed8400000000b9065e010c01d8c1bf7e6e09761d0aa319717216753763d67e6ccf3f4de6e41a87383eacf2573d00390a9a7cd4dfe5280cacda6767a46b83132c0f5be91b7387ff6a4eecae8b0272e19eedd08af2d5486a7eda03bdc45d4640a33b550af4d49f4a55ba59099439e8383deca67656605b642cccc15ebc3a50ed2498ffc70b606123f5877866ed8d018a2e0f41277aaf6d5166fa7ef3b597d2860ec308e3d3d68749e08fb06806163c660adeb410ce1cb255663277fe3767e5655831922d654502a903b10ca769128d2c5f0100f0da2c70b4c4cd6787c10f57a6eae432eb7b060f6043c8f953a589c81d3020d8e61a780575b041de9c8b4a1c643268c33337ac474bab6674049204a2f1defe82e8ff67441c1502181776852c72fa32b94d13fb09b824589c5e0490fb5f7d119e90e860b20c0642414245b501036a020000a1c3071100000000de74a2617118f4f2b82fb3a2a1ab3a048bb64048c5d4ab183e14936ccf2c5516d3586814881aa8dba2c64c067cab2e220ecbc9c38b70843c75d528ed73341c021897d46a0571449d2ccba300d3a5d15f8edf400cae30b7e8a211a645f08cef0904424545468403adefbb4f25f95d648197109f675eecd68775d1f7a77fbe833ab5ff3b18fc6404054241424501012e206de5058d08e4eaa3523251f6892564cf3bb0022a49f2e51e3976f1c5806d2a4ef2bc9123f09703c4572c427b6a4aee5283adaf256af57c6fc33a06a3768b", + "0x950284000ef0d788236bf114d49d4ecada710028f477eaf03b024bcc8a1b0d74524b47600194ff54b831fb89e7f2c28b8e9bb4a71874a36280af7dbd1bb5020b2efebcdd39185edbe78f9aa7575f9946fb9633a66890ce8884749cce72c2da3a4dab427a8b55030000630801000100a92001000101000ef0d788236bf114d49d4ecada710028f477eaf03b024bcc8a1b0d74524b476001040000000007ddc0d5ea4b0000000000", + "0x9902840062ce202b7f09dc2b212f263d26cad55bc47df90d76f496cb781c86361a2f33510182c68dc2c8fa4793e9973ca513b62d2ce4df9467c747f6b57fb0a80dce7b0765375fb7b4822d597d34f1715a07049eb7f8962971b7d6bea034f84bfd3861fa804503050100630901000100a10f010001010062ce202b7f09dc2b212f263d26cad55bc47df90d76f496cb781c86361a2f3351010400000000078b669a4f170000000000", + "0x5d028400bc47b8533fad2cfb34d99913a4092a4270bd01b428951fa05ade01a21bf0c40f01be0e0555eae09f2ffdc5aa012066371ac05445fc4c588467489908f28a0d830261b6aa047f0e702290bc7fd04ed4416081e63e77e8369d957b8a5b34a4d5368855039aea0b0000180404061abe78a8a56ca63c88f3035d0dadea57cf12d42c7d8ef61795deec2dd98ca0393e7719000000000000", + "0x7d038400d293a8744574f9030151399837bf978d26bc02deb80297f09e3100170cc9dd2a01ac8ade5316378039c2001027ef5b20c3be73ad5c9904d2c9054bbccf470b095cf5e1d524baee17a22d6a6fa270c1052ae13eaa882efcecaa7fa430dc7e03cd8e4503a67e0a000018020c061248060364b3d2a776ec3a9723dfd732ea49e0e2e988f73d08a6b843425e0f50729a190000061248636a9fc435413c12d7c7524f6c12110ff15938dff2da4dd92cbc87696c721a9a19000006124a8e33a80bd250803d2d61e29ecaeee883519eef3f32b9124faa5ddf803ee2149a190000", + "0x7d038400d293a8744574f9030151399837bf978d26bc02deb80297f09e3100170cc9dd2a010a607f9620256fa4a949c1a3516f6f270d8f4a63f4ca9bc083316bfbe83ba56a225e2000a7cefdb2f7138c4d600acb6658b12e22574bbd16149e7731982b3d874503aa7e0a000018020c06124c08de8a66557f63521d871087a9290cf8032705cab1ece83bc4e5a230f130209a1900000612526810e13085a5e34c6c834d217810ac41da14f3e4460aa3c3b65fa273b8065a9a19000006125310358d8c95776780125c299cda8744c9294e7541e2ffde38fc630ed8259cdd9a190000", + "0x7d038400d293a8744574f9030151399837bf978d26bc02deb80297f09e3100170cc9dd2a013c7a5fed2db57e9d08ebceb9f4d09be9e8043d49a0c863c4172519a989318d36b8f4db3d91c0195b24b829416f6f07b468cd39048c52e57a97f76d3fc77f03884503ae7e0a000018020c061258758a7188e3b24588ecbf10c9c77d99b7d3ff81877e6da49a66980a0fb569409a19000006125e4a7f6fd9a8525d277f96f3e758e51fb673c6c28a7203b1a57f6e90c9f813499a1900000612603d8b10a42a8be5f7e755820b0c4241732614384e039536c8e43d3b414430569a190000", + "0x7d038400d293a8744574f9030151399837bf978d26bc02deb80297f09e3100170cc9dd2a011cdf6125b88f3f1fadbb47ae91284e3f7747d37aba5c15d9727b6de667529572c1e9e493cffd276d38ffe2a945683c776ca5ecb154b3fb565a668cda8b39438b4503b27e0a000018020c061266ac043ad9e8d8051cd84cbac5d3971978b80a02be9c9ff616e216e1ccb82d1f9a19000006126c6ed8531e6c0b882af0a42f2f23ef0a102b5d49cb5f5a24ede72d53ffce83179a19000006126ec238210f082cca5552aa2ce9a0d1c4be9c7bf44c04f4524ded21f8cbcc611d9a190000", + "0x7d038400d293a8744574f9030151399837bf978d26bc02deb80297f09e3100170cc9dd2a0126ff6bfca300b703b5356a307db2bc859d51cd873ecfb3956e532651d2ecc9493a1c59d6569bcdabd964a529b234fa196ecf1a159125e09e155f08e8f8d1488d4503b67e0a000018020c061271be4c928197879bb5e5d2a373535cdbfe47dde173b647386eb0444ecedbeec89a19000006127e91f2c936482460b397eea5923867efeb2635679ca776cdfdc62bcea000250d9a19000006127fc61bf61f7088fdbc534c9447d2ae3e12dcdb618de2dc25f85ed149c444a8a59a190000", + "0x7d038400d293a8744574f9030151399837bf978d26bc02deb80297f09e3100170cc9dd2a01282cbf853f7ddae9bb003351fa255b945d02ede172d4a812d2158498faf17958d20b78ef42685be131d5a744994b31baed1f017ec1489acb9aecd1f5d8607c814503ba7e0a000018020c06128b7eb4a45589bdc595ec6a24d2657a44a0859fa939e42e380c97ba42b56613569a1900000612940be222a0d2281187cb7ae5678887bb29b80f95433d15c4e695b7dc1f0fb2429a1900000612946d008eb4453db3f1a0165b053c077828fb0074ba920fe157cad536c02eab1c9a190000", + "0x7d038400d293a8744574f9030151399837bf978d26bc02deb80297f09e3100170cc9dd2a010c065ebbce176cb7e0a4a9d06bb7ae2905e4e3090346d21bc39917d69ae037087fd90bad3385943f37b72fb7c7db48ed02b17e9e608484adcebe6d86654bda8c4503be7e0a000018020c0612a37a3ffb035af09835ef668a37204d1016819ac4d5e24889afb991f0e46836d09a1900000612a3b9d8008b2434511e9308b7c8acc758337a81c8858c5a44efb76d02f16bdbbb9a1900000612a42184be9cd7657a019c2624c045f4ef80df884576b0f2e1eece434410537a379a190000", + "0x7d038400d293a8744574f9030151399837bf978d26bc02deb80297f09e3100170cc9dd2a0152e38ee1c233d690aa51bcb52752de1e1e16cc557385b726ced427c570def5068f9fadaad37f26353cebbd47e923eb99abf4f83f6585069e1a1cecf9d464cb884503c27e0a000018020c0612a49024c1255ae218f2e482ce9f429a95ecc2e1551428d875d0b42176ea34ef399a1900000612a6e5748915493258986746cb3e58f9e76c69bd65bab4fc620dc649c102baf7169a1900000612ac62bbbf51a7449419558b264d9bb213d2cc5947ce45a37870a310d414b37f2b9a190000", + "0x7d038400d293a8744574f9030151399837bf978d26bc02deb80297f09e3100170cc9dd2a01aa84a2f8dd4d3de062fe29102ec9b98c1c094454704f822edd5988d51cc82f4a2dfd0782667855e424c5fb0de126e498fc42b1e8a6b01eb8fce8f12ac3d9218c4503c67e0a000018020c0612aec16460ec51be05e01406f39af4e8adc9d400e511cac7aebc10c31d42540f469a1900000612b774e8b543aaa5260ce6aeeff8e4428ba8de6767d53ff634190e86a6240161759a1900000612b89cb11f3766e2b8554874e37614fd76334ec14ab040572119de0a14b85422799a190000", + "0x7d038400d293a8744574f9030151399837bf978d26bc02deb80297f09e3100170cc9dd2a0194cd709b4fce18633e4d361a72e8fb286b64ccbe64835682dd1d5130b4442a58c6bd8a5057349efd042429fc52b0f9084684034c2d72cbdf71302e2d83ed538f4503ca7e0a000018020c0612bee52eddafc82ea6226864dcf0583e034f6510d2b390ed60129b6855fc020c069a1900000612c29119217012c058b61ce8e44c9b374f96b1a2f638e91b84406e91cb9a2d38c59a1900000612c2b6ceda4a153b7204176c9b67bbc508e12ff156b716374ac591fbc2db6dba5b9a190000", + "0x7d038400d293a8744574f9030151399837bf978d26bc02deb80297f09e3100170cc9dd2a01f490059c6eea76dff4f8d1dbbef292e29c933b5b84ac4b8a4a9837bc177b440279d2b9fd2b8fdc9590f6991fd5438d3125992cc232f916bfa3593564fc9c98874503ce7e0a000018020c0612c4393198b779fe113f35f58a900ae6bf49db2916f42b665d28efa5c233cddf399a1900000612ccc10f47daf388814d58209cad72e4c07dd9131ffb7b2b909d39746577a971789a1900000612dc89c6865c029c1088fb27b41c1a715b0bb611b94e1d625fa0bb8a12941874549a190000", + "0x7d038400d293a8744574f9030151399837bf978d26bc02deb80297f09e3100170cc9dd2a013c16dcb8660498f481e6a9f5eed80949b4a7dd39f5bb1b9dba3400c812b29d689c207f1077d25149c7589d490b2bf8fd9d15f5d2d099498ca2509802a1ee54884503d27e0a000018020c0612e054c49795812be9a853e3d2351a9082c93bc93ad618e745cf5e4ae82ce3d5519a1900000612e293a27231ba1550c3767df641d03102ad153acf8b4bdb7db7f180fa9d544d659a1900000612e4caf691a36244d8af7391cd120945b4d65ad42d0fda5c4af5bc32e8dd25b1029a190000", + "0x7d038400d293a8744574f9030151399837bf978d26bc02deb80297f09e3100170cc9dd2a0106fabfd2fb0b861a65ef37cae529840fbd82c8b07aeccf5930aea25928f6f16f6d6d3a601b67c8006310e5dd2321b45af58d01fb9c2a27dfec9e07e55ca1098c4503d67e0a000018020c0612eaa00abd5e6449dd46d8882c6024f26cb5247d26becbfbb4f57314d342b96a659a1900000612eaf9465dbed932ceeebbe2e1affdbea923c005da57cb189dfa762b4db834691d9a1900000612f26dd23a13d9bd0962132acd337a205d87fa1a06d770fcf2c29b7a124db05b379a190000", + "0x4d028400d293a8744574f9030151399837bf978d26bc02deb80297f09e3100170cc9dd2a018c05652377fff2037407b4bbc2d4d42246c991d3443aaca9a64bb3497d95ca5d26b588e07372592b75c9181c714ba31524914ccadd1fbad45c77b42a5446b6854503da7e0a00001802040612fcbe9a213e9409c3c31f6eb6429c937ecf497e920f0a152afe12eada80f435be9a190000" + ] +} \ No newline at end of file diff --git a/src/services/test-helpers/mock/index.ts b/src/services/test-helpers/mock/index.ts index ed83ea732..29b1d8b10 100644 --- a/src/services/test-helpers/mock/index.ts +++ b/src/services/test-helpers/mock/index.ts @@ -18,6 +18,7 @@ export * from './addresses'; export * from './mockApi'; export * from './mockApiBlock18468942'; export * from './mockApiBlock19772575'; +export * from './mockApiKusamaBlock22939322'; export * from './mockAssetHubKusamaApi'; export * from './mockAssetHubKusamaApiBlock3356195'; export * from './mockAssetHubKusamaApiBlock6202603'; @@ -30,5 +31,6 @@ export * from './mockBlock6202603'; export * from './mockBlock13641102'; export * from './mockBlock18468942'; export * from './mockBlock19772575'; +export * from './mockBlock22939322'; export * from './mockBlockHashes'; export * from './transactions'; diff --git a/src/services/test-helpers/mock/mockApiKusamaBlock22939322.ts b/src/services/test-helpers/mock/mockApiKusamaBlock22939322.ts new file mode 100644 index 000000000..cf71fec90 --- /dev/null +++ b/src/services/test-helpers/mock/mockApiKusamaBlock22939322.ts @@ -0,0 +1,296 @@ +// Copyright 2017-2024 Parity Technologies (UK) Ltd. +// This file is part of Substrate API Sidecar. +// +// Substrate API Sidecar is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +import { ApiPromise } from '@polkadot/api'; +import { GenericExtrinsic, u32, Vec } from '@polkadot/types'; +import { Option } from '@polkadot/types/codec'; +import { + AccountId, + ActiveEraInfo, + Block, + EraIndex, + Extrinsic, + Hash, + RuntimeDispatchInfo, + SessionIndex, + StakingLedger, +} from '@polkadot/types/interfaces'; +import BN from 'bn.js'; + +import { kusamaMetadataV1002000 } from '../../../test-helpers/metadata/kusamaV1002000Metadata'; +import { kusamRegistryV1002000 } from '../../../test-helpers/registries'; +import { balancesTransferValid, blockHash22939322, mockBlock22939322, testAddressControllerKusama } from '.'; +import { localListenAddressesHex } from './data/localListenAddresses'; +import { getPalletDispatchables } from './data/mockDispatchablesData'; +import { getMetadata as mockMetaData } from './data/mockNonimationPoolResponseData'; +import traceBlockRPC from './data/traceBlock.json'; + +const chain = () => + Promise.resolve().then(() => { + return kusamRegistryV1002000.createType('Text', 'Kusama'); + }); + +export const getBlock22939322 = (_hash: Hash): Promise<{ block: Block }> => + Promise.resolve().then(() => { + return { + block: mockBlock22939322, + }; + }); + +export const deriveGetBlock22939322 = (_hash: Hash): Promise<{ block: Block; author: AccountId }> => + Promise.resolve().then(() => { + return { + author: kusamRegistryV1002000.createType('AccountId', '1zugcajGg5yDD9TEqKKzGx7iKuGWZMkRbYcyaFnaUaEkwMK'), + block: mockBlock22939322, + }; + }); + +const getHeader = (_hash: Hash) => Promise.resolve().then(() => mockBlock22939322.header); + +const runtimeVersion = { + specName: kusamRegistryV1002000.createType('Text', 'kusama'), + specVersion: kusamRegistryV1002000.createType('u32', 1002000), + transactionVersion: kusamRegistryV1002000.createType('u32', 25), + implVersion: kusamRegistryV1002000.createType('u32', 0), + implName: kusamRegistryV1002000.createType('Text', 'parity-kusama'), + authoringVersion: kusamRegistryV1002000.createType('u32', 2), +}; + +const getRuntimeVersion = () => + Promise.resolve().then(() => { + return runtimeVersion; + }); + +const getMetadata = () => Promise.resolve().then(() => kusamaMetadataV1002000); + +const deriveGetHeader = () => + Promise.resolve().then(() => { + return { + author: kusamRegistryV1002000.createType('AccountId', '1zugcajGg5yDD9TEqKKzGx7iKuGWZMkRbYcyaFnaUaEkwMK'), + }; + }); + +const version = () => + Promise.resolve().then(() => kusamRegistryV1002000.createType('Text', '0.8.22-c6ee8675-x86_64-linux-gnu')); + +export const activeEraAt22939322 = (_hash: Hash): Promise> => + Promise.resolve().then(() => + kusamRegistryV1002000.createType('Option', { + index: 6555, + start: 1714328874000, + }), + ); + +export const currentEraAt22939322 = (_hash: Hash): Promise> => + Promise.resolve().then(() => kusamRegistryV1002000.createType('Option', 6555)); + +export const erasStartSessionIndexAt22939322 = (_hash: Hash, _activeEra: EraIndex): Promise> => + Promise.resolve().then(() => kusamRegistryV1002000.createType('Option', 38713)); + +export const bondedAt22939322 = (_hash: Hash, _address: string): Promise> => + Promise.resolve().then(() => kusamRegistryV1002000.createType('Option', testAddressControllerKusama)); + +export const ledgerAt22939322 = (_hash: Hash, _address: string): Promise> => + Promise.resolve().then(() => + kusamRegistryV1002000.createType( + 'Option', + '0x2c2a55b5e0d28cc772b47bb9b25981cbb69eca73f7c3388fb6464e7d24be470e0700e87648170700e8764817008c000000000100000002000000030000000400000005000000060000000700000008000000090000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000', + ), + ); + +// For getting the blockhash of the genesis block +const getBlockHashGenesis = (_zero: number) => + Promise.resolve().then(() => + kusamRegistryV1002000.createType('BlockHash', '0xc0096358534ec8d21d01d34b836eed476a1c343f8724fa2153dc0725ad797a90'), + ); + +const queryFeeDetails = () => + Promise.resolve().then(() => { + const inclusionFee = kusamRegistryV1002000.createType('Option', { + baseFee: 10000000, + lenFee: 143000000, + adjustedWeightFee: 20, + }); + return kusamRegistryV1002000.createType('FeeDetails', { + inclusionFee, + }); + }); + +const runtimeDispatchInfo = kusamRegistryV1002000.createType('RuntimeDispatchInfo', { + weight: { + refTime: 1200000000, + proofSize: 20000, + }, + class: 'Normal', + partialFee: 149000000, +}); + +export const queryInfoCall22939322 = ( + _extrinsic: GenericExtrinsic, + _length: Uint8Array, +): Promise => Promise.resolve().then(() => runtimeDispatchInfo); + +export const queryInfoAt22939322 = (_extrinsic: string, _hash: Hash): Promise => + Promise.resolve().then(() => runtimeDispatchInfo); + +export const submitExtrinsic22939322 = (_extrinsic: string): Promise => + Promise.resolve().then(() => kusamRegistryV1002000.createType('Hash')); + +const getStorage = () => Promise.resolve().then(() => kusamRegistryV1002000.createType('Option', '0x00')); + +const chainType = () => + Promise.resolve().then(() => + kusamRegistryV1002000.createType('ChainType', { + Live: null, + }), + ); + +const properties = () => + Promise.resolve().then(() => + kusamRegistryV1002000.createType('ChainProperties', { + ss58Format: '2', + tokenDecimals: '12', + tokenSymbol: 'KSM', + }), + ); + +const getFinalizedHead = () => Promise.resolve().then(() => blockHash22939322); + +const health = () => Promise.resolve().then(() => kusamRegistryV1002000.createType('Health', '0x7a000000000000000001')); + +const localListenAddresses = () => + Promise.resolve().then(() => kusamRegistryV1002000.createType('Vec', localListenAddressesHex)); + +const nodeRoles = () => Promise.resolve().then(() => kusamRegistryV1002000.createType('Vec', '0x0400')); + +const localPeerId = () => + Promise.resolve().then(() => + kusamRegistryV1002000.createType( + 'Text', + '0x313244334b6f6f57415a66686a79717a4674796435357665424a78545969516b5872614d584c704d4d6a355a6f3471756431485a', + ), + ); + +export const pendingExtrinsics22939322 = (): Promise> => + Promise.resolve().then(() => kusamRegistryV1002000.createType('Vec')); + +export const tx22939322 = (): Extrinsic => kusamRegistryV1002000.createType('Extrinsic', balancesTransferValid); + +const traceBlock = () => + Promise.resolve().then(() => kusamRegistryV1002000.createType('TraceBlockResponse', traceBlockRPC.result)); + +/** + * Deafult Mock polkadot-js ApiPromise. Values are largely meant to be accurate for block + * #22939322, which is what most Service unit tests are based on. + */ +export const defaultMockApi22939322 = { + runtimeVersion, + call: { + transactionPaymentApi: { + queryInfo: queryInfoCall22939322, + queryFeeDetails, + }, + }, + consts: { + system: { + blockLength: { + max: { + normal: new BN(3932160), + operational: new BN(5242880), + mandatory: new BN(5242880), + }, + }, + blockWeights: { + baseBlock: new BN(5481991000), + maxBlock: kusamRegistryV1002000.createType('u64', 15), + perClass: { + normal: { + baseExtrinsic: new BN(85212000), + maxExtrinsic: new BN(1479914788000), + maxTotal: new BN(1500000000000), + reserved: new BN(0), + }, + operational: { + baseExtrinsic: new BN(85212000), + maxExtrinsic: new BN(1979914788000), + maxTotal: new BN(2000000000000), + reserved: new BN(500000000000), + }, + mandatory: { + baseExtrinsic: new BN(85212000), + maxExtrinsic: null, + maxTotal: null, + reserved: null, + }, + }, + }, + }, + transactionPayment: { + operationalFeeMultiplier: new BN(5), + }, + staking: { + historyDepth: kusamRegistryV1002000.createType('u32', 84), + }, + }, + createType: kusamRegistryV1002000.createType.bind(kusamRegistryV1002000), + registry: kusamRegistryV1002000, + + tx: getPalletDispatchables, + runtimeMetadata: kusamRegistryV1002000, + rpc: { + chain: { + getHeader, + getBlock22939322, + getBlockHash: getBlockHashGenesis, + getFinalizedHead, + }, + state: { + getRuntimeVersion, + getMetadata, + getStorage, + traceBlock, + }, + system: { + chain, + health, + localListenAddresses, + nodeRoles, + localPeerId, + version, + chainType, + properties, + }, + payment: { + queryInfo: queryInfoAt22939322, + queryFeeDetails, + }, + author: { + submitExtrinsic22939322, + pendingExtrinsics22939322, + }, + }, + derive: { + chain: { + getHeader: deriveGetHeader, + getBlock: deriveGetBlock22939322, + }, + }, + query: { + nominationPools: { + metadata: mockMetaData, + }, + }, +} as unknown as ApiPromise; diff --git a/src/services/test-helpers/mock/mockBlock22939322.ts b/src/services/test-helpers/mock/mockBlock22939322.ts new file mode 100644 index 000000000..76f600e7e --- /dev/null +++ b/src/services/test-helpers/mock/mockBlock22939322.ts @@ -0,0 +1,31 @@ +// Copyright 2017-2024 Parity Technologies (UK) Ltd. +// This file is part of Substrate API Sidecar. +// +// Substrate API Sidecar is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +import { kusamRegistryV1002000 } from '../../../test-helpers/registries'; +import block22939322 from './data/block22939322.json'; + +/** + * Mock for Kusama block #22939322. + */ +export const mockBlock22939322 = kusamRegistryV1002000.createType('Block', block22939322); + +/** + * BlockHash for Kusama block #22939322. + */ +export const blockHash22939322 = kusamRegistryV1002000.createType( + 'BlockHash', + '0x1ef674fffb042c9016987e0e3995a36401a7e2b66e0b6c0bb111a0b049857098', +); diff --git a/src/services/test-helpers/responses/accounts/stakingInfo22939322.json b/src/services/test-helpers/responses/accounts/stakingInfo22939322.json new file mode 100644 index 000000000..a779ac200 --- /dev/null +++ b/src/services/test-helpers/responses/accounts/stakingInfo22939322.json @@ -0,0 +1,102 @@ +{ + "at": { + "hash": "0x1ef674fffb042c9016987e0e3995a36401a7e2b66e0b6c0bb111a0b049857098", + "height": "22939322" + }, + "controller": "F2VckTExmProzJnwNaN3YVqDoBPS1LyNVmyG8HUAygtDV3T", + "rewardDestination": { + "account": "GLEJRAEdGxLhNEH2AWAtjhUYVrcRWxbYSemvVv2JwxBG2fg" + }, + "numSlashingSpans": "3", + "staking": { + "stash": "F2VckTExmProzJnwNaN3YVqDoBPS1LyNVmyG8HUAygtDV3T", + "total": "5340420989561", + "active": "5340420989561", + "unlocking": [], + "claimedRewards": [ + "6471", + "6472", + "6473", + "6474", + "6475", + "6476", + "6477", + "6478", + "6479", + "6480", + "6481", + "6482", + "6483", + "6484", + "6485", + "6486", + "6487", + "6488", + "6489", + "6490", + "6491", + "6492", + "6493", + "6494", + "6495", + "6496", + "6497", + "6498", + "6499", + "6500", + "6501", + "6502", + "6503", + "6504", + "6505", + "6506", + "6507", + "6508", + "6509", + "6510", + "6511", + "6512", + "6514", + "6515", + "6516", + "6517", + "6518", + "6519", + "6520", + "6521", + "6522", + "6523", + "6524", + "6525", + "6526", + "6527", + "6528", + "6529", + "6530", + "6531", + "6532", + "6533", + "6534", + "6535", + "6536", + "6537", + "6538", + "6539", + "6540", + "6541", + "6542", + "6543", + "6544", + "6545", + "6546", + "6547", + "6548", + "6549", + "6550", + "6551", + "6552", + "6553", + "6554" + ] + } +} \ No newline at end of file diff --git a/src/test-helpers/metadata/kusamaV1002000Metadata.ts b/src/test-helpers/metadata/kusamaV1002000Metadata.ts new file mode 100644 index 000000000..286f17240 --- /dev/null +++ b/src/test-helpers/metadata/kusamaV1002000Metadata.ts @@ -0,0 +1,18 @@ +// Copyright 2017-2024 Parity Technologies (UK) Ltd. +// This file is part of Substrate API Sidecar. +// +// Substrate API Sidecar is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +export const kusamaMetadataV1002000 = + '0x6d6574610e250f000c1c73705f636f72651863727970746f2c4163636f756e7449643332000004000401205b75383b2033325d0000040000032000000008000800000503000c08306672616d655f73797374656d2c4163636f756e74496e666f08144e6f6e636501102c4163636f756e74446174610114001401146e6f6e63651001144e6f6e6365000124636f6e73756d657273100120526566436f756e7400012470726f766964657273100120526566436f756e7400012c73756666696369656e7473100120526566436f756e740001106461746114012c4163636f756e74446174610000100000050500140c3c70616c6c65745f62616c616e6365731474797065732c4163636f756e7444617461041c42616c616e63650118001001106672656518011c42616c616e6365000120726573657276656418011c42616c616e636500011866726f7a656e18011c42616c616e6365000114666c6167731c01284578747261466c61677300001800000507001c0c3c70616c6c65745f62616c616e636573147479706573284578747261466c61677300000400180110753132380000200c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540124000c01186e6f726d616c2401045400012c6f7065726174696f6e616c240104540001246d616e6461746f7279240104540000240c2873705f77656967687473247765696768745f76321857656967687400000801207265665f74696d6528010c75363400012870726f6f665f73697a6528010c7536340000280000062c002c000005060030083c7072696d69746976655f74797065731048323536000004000401205b75383b2033325d000034000002080038102873705f72756e74696d651c67656e65726963186469676573741844696765737400000401106c6f67733c013c5665633c4469676573744974656d3e00003c000002400040102873705f72756e74696d651c67656e6572696318646967657374284469676573744974656d0001142850726552756e74696d650800440144436f6e73656e737573456e67696e654964000034011c5665633c75383e00060024436f6e73656e7375730800440144436f6e73656e737573456e67696e654964000034011c5665633c75383e000400105365616c0800440144436f6e73656e737573456e67696e654964000034011c5665633c75383e000500144f74686572040034011c5665633c75383e0000006452756e74696d65456e7669726f6e6d656e74557064617465640008000044000003040000000800480000024c004c08306672616d655f73797374656d2c4576656e745265636f7264080445015004540130000c01147068617365c908011450686173650001146576656e7450010445000118746f70696373c50301185665633c543e000050085873746167696e675f6b7573616d615f72756e74696d653052756e74696d654576656e740001bc1853797374656d04005401706672616d655f73797374656d3a3a4576656e743c52756e74696d653e0000001c496e646963657304007c017870616c6c65745f696e64696365733a3a4576656e743c52756e74696d653e0003002042616c616e636573040080017c70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d653e000400485472616e73616374696f6e5061796d656e7404008801a870616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4576656e743c52756e74696d653e0021001c5374616b696e6704008c017870616c6c65745f7374616b696e673a3a4576656e743c52756e74696d653e000600204f6666656e6365730400a4015870616c6c65745f6f6666656e6365733a3a4576656e740007001c53657373696f6e0400ac015470616c6c65745f73657373696f6e3a3a4576656e740008001c4772616e6470610400b0015470616c6c65745f6772616e6470613a3a4576656e74000a0020496d4f6e6c696e650400c4018070616c6c65745f696d5f6f6e6c696e653a3a4576656e743c52756e74696d653e000b002054726561737572790400e8017c70616c6c65745f74726561737572793a3a4576656e743c52756e74696d653e00120040436f6e76696374696f6e566f74696e670400710101a070616c6c65745f636f6e76696374696f6e5f766f74696e673a3a4576656e743c52756e74696d653e001400245265666572656e646104007501018070616c6c65745f7265666572656e64613a3a4576656e743c52756e74696d653e0015005046656c6c6f7773686970436f6c6c6563746976650400f10701390170616c6c65745f72616e6b65645f636f6c6c6563746976653a3a4576656e743c52756e74696d652c2070616c6c65745f72616e6b65645f636f6c6c6563746976653a3a0a496e7374616e6365313e0016004c46656c6c6f77736869705265666572656e64610400fd0701f470616c6c65745f7265666572656e64613a3a4576656e743c52756e74696d652c2070616c6c65745f7265666572656e64613a3a496e7374616e6365323e0017002457686974656c69737404000108018070616c6c65745f77686974656c6973743a3a4576656e743c52756e74696d653e002c0018436c61696d73040015080158636c61696d733a3a4576656e743c52756e74696d653e0013001c5574696c69747904001908015470616c6c65745f7574696c6974793a3a4576656e74001800204964656e7469747904002108017c70616c6c65745f6964656e746974793a3a4576656e743c52756e74696d653e0019001c536f636965747904002508017870616c6c65745f736f63696574793a3a4576656e743c52756e74696d653e001a00205265636f7665727904002d08017c70616c6c65745f7265636f766572793a3a4576656e743c52756e74696d653e001b001c56657374696e6704003108017870616c6c65745f76657374696e673a3a4576656e743c52756e74696d653e001c00245363686564756c657204003508018070616c6c65745f7363686564756c65723a3a4576656e743c52756e74696d653e001d001450726f787904003d08017070616c6c65745f70726f78793a3a4576656e743c52756e74696d653e001e00204d756c746973696704004108017c70616c6c65745f6d756c74697369673a3a4576656e743c52756e74696d653e001f0020507265696d61676504004508017c70616c6c65745f707265696d6167653a3a4576656e743c52756e74696d653e00200020426f756e7469657304004908017c70616c6c65745f626f756e746965733a3a4576656e743c52756e74696d653e002300344368696c64426f756e7469657304004d08019470616c6c65745f6368696c645f626f756e746965733a3a4576656e743c52756e74696d653e00280068456c656374696f6e50726f76696465724d756c746950686173650400510801d070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173653a3a4576656e743c52756e74696d653e0025000c4e697304006108016870616c6c65745f6e69733a3a4576656e743c52756e74696d653e002600584e6973436f756e7465727061727442616c616e6365730400650801ec70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d652c2070616c6c65745f62616c616e6365733a3a496e7374616e6365323e002d0024566f7465724c6973740400690801f470616c6c65745f626167735f6c6973743a3a4576656e743c52756e74696d652c2070616c6c65745f626167735f6c6973743a3a496e7374616e6365313e0027003c4e6f6d696e6174696f6e506f6f6c7304006d08019c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c733a3a4576656e743c52756e74696d653e0029002c46617374556e7374616b6504007108018c70616c6c65745f666173745f756e7374616b653a3a4576656e743c52756e74696d653e002a003450617261496e636c7573696f6e04007508019070617261636861696e735f696e636c7573696f6e3a3a4576656e743c52756e74696d653e00350014506172617304008508015c70617261636861696e735f70617261733a3a4576656e740038001048726d7004008908017c70617261636861696e735f68726d703a3a4576656e743c52756e74696d653e003c00345061726173446973707574657304008d08018c70617261636861696e735f64697370757465733a3a4576656e743c52756e74696d653e003e00684f6e44656d616e6441737369676e6d656e7450726f76696465720400990801b470617261636861696e735f61737369676e65725f6f6e5f64656d616e643a3a4576656e743c52756e74696d653e0040002452656769737472617204009d08017c70617261735f7265676973747261723a3a4576656e743c52756e74696d653e00460014536c6f74730400a1080154736c6f74733a3a4576656e743c52756e74696d653e0047002041756374696f6e730400a508016061756374696f6e733a3a4576656e743c52756e74696d653e0048002443726f77646c6f616e0400a908016463726f77646c6f616e3a3a4576656e743c52756e74696d653e00490020436f726574696d650400ad080160636f726574696d653a3a4576656e743c52756e74696d653e004a002458636d50616c6c65740400b108016870616c6c65745f78636d3a3a4576656e743c52756e74696d653e006300304d65737361676551756575650400b908019070616c6c65745f6d6573736167655f71756575653a3a4576656e743c52756e74696d653e006400244173736574526174650400c108018470616c6c65745f61737365745f726174653a3a4576656e743c52756e74696d653e006500404964656e746974794d69677261746f720400c50801846964656e746974795f6d69677261746f723a3a4576656e743c52756e74696d653e00f80000540c306672616d655f73797374656d1870616c6c6574144576656e7404045400011c4045787472696e7369635375636365737304013464697370617463685f696e666f5801304469737061746368496e666f00000490416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e3c45787472696e7369634661696c656408013864697370617463685f6572726f7264013444697370617463684572726f7200013464697370617463685f696e666f5801304469737061746368496e666f00010450416e2065787472696e736963206661696c65642e2c436f64655570646174656400020450603a636f6465602077617320757064617465642e284e65774163636f756e7404011c6163636f756e74000130543a3a4163636f756e7449640003046841206e6577206163636f756e742077617320637265617465642e344b696c6c65644163636f756e7404011c6163636f756e74000130543a3a4163636f756e74496400040458416e206163636f756e7420776173207265617065642e2052656d61726b656408011873656e646572000130543a3a4163636f756e7449640001106861736830011c543a3a48617368000504704f6e206f6e2d636861696e2072656d61726b2068617070656e65642e4455706772616465417574686f72697a6564080124636f64655f6861736830011c543a3a48617368000134636865636b5f76657273696f6e780110626f6f6c00060468416e20757067726164652077617320617574686f72697a65642e04704576656e7420666f72207468652053797374656d2070616c6c65742e580c346672616d655f737570706f7274206469737061746368304469737061746368496e666f00000c0118776569676874240118576569676874000114636c6173735c01344469737061746368436c617373000120706179735f6665656001105061797300005c0c346672616d655f737570706f7274206469737061746368344469737061746368436c61737300010c184e6f726d616c0000002c4f7065726174696f6e616c000100244d616e6461746f727900020000600c346672616d655f737570706f727420646973706174636810506179730001080c596573000000084e6f0001000064082873705f72756e74696d653444697370617463684572726f72000138144f746865720000003043616e6e6f744c6f6f6b7570000100244261644f726967696e000200184d6f64756c65040068012c4d6f64756c654572726f7200030044436f6e73756d657252656d61696e696e670004002c4e6f50726f76696465727300050040546f6f4d616e79436f6e73756d65727300060014546f6b656e04006c0128546f6b656e4572726f720007002841726974686d65746963040070013c41726974686d657469634572726f72000800345472616e73616374696f6e616c04007401485472616e73616374696f6e616c4572726f7200090024457868617573746564000a0028436f7272757074696f6e000b002c556e617661696c61626c65000c0038526f6f744e6f74416c6c6f776564000d000068082873705f72756e74696d652c4d6f64756c654572726f720000080114696e64657808010875380001146572726f7244018c5b75383b204d41585f4d4f44554c455f4552524f525f454e434f4445445f53495a455d00006c082873705f72756e74696d6528546f6b656e4572726f720001284046756e6473556e617661696c61626c65000000304f6e6c7950726f76696465720001003042656c6f774d696e696d756d0002003043616e6e6f7443726561746500030030556e6b6e6f776e41737365740004001846726f7a656e0005002c556e737570706f727465640006004043616e6e6f74437265617465486f6c64000700344e6f74457870656e6461626c650008001c426c6f636b65640009000070083473705f61726974686d657469633c41726974686d657469634572726f7200010c24556e646572666c6f77000000204f766572666c6f77000100384469766973696f6e42795a65726f0002000074082873705f72756e74696d65485472616e73616374696f6e616c4572726f72000108304c696d6974526561636865640000001c4e6f4c61796572000100007800000500007c0c3870616c6c65745f696e64696365731870616c6c6574144576656e7404045400010c34496e64657841737369676e656408010c77686f000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e6465780000047441206163636f756e7420696e646578207761732061737369676e65642e28496e6465784672656564040114696e64657810013c543a3a4163636f756e74496e646578000104bc41206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e2c496e64657846726f7a656e080114696e64657810013c543a3a4163636f756e74496e64657800010c77686f000130543a3a4163636f756e744964000204e841206163636f756e7420696e64657820686173206265656e2066726f7a656e20746f206974732063757272656e74206163636f756e742049442e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574800c3c70616c6c65745f62616c616e6365731870616c6c6574144576656e740804540004490001581c456e646f77656408011c6163636f756e74000130543a3a4163636f756e744964000130667265655f62616c616e6365180128543a3a42616c616e6365000004b8416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e20447573744c6f737408011c6163636f756e74000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650001083d01416e206163636f756e74207761732072656d6f7665642077686f73652062616c616e636520776173206e6f6e2d7a65726f206275742062656c6f77204578697374656e7469616c4465706f7369742c78726573756c74696e6720696e20616e206f75747269676874206c6f73732e205472616e736665720c011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650002044c5472616e73666572207375636365656465642e2842616c616e636553657408010c77686f000130543a3a4163636f756e74496400011066726565180128543a3a42616c616e636500030468412062616c616e6365207761732073657420627920726f6f742e20526573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000404e0536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e28556e726573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000504e8536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e4852657365727665526570617472696174656410011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500014864657374696e6174696f6e5f7374617475738401185374617475730006084d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652e1c4465706f73697408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000704d8536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e20576974686472617708010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650008041d01536f6d6520616d6f756e74207761732077697468647261776e2066726f6d20746865206163636f756e742028652e672e20666f72207472616e73616374696f6e2066656573292e1c536c617368656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650009040101536f6d6520616d6f756e74207761732072656d6f7665642066726f6d20746865206163636f756e742028652e672e20666f72206d69736265686176696f72292e184d696e74656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000a049c536f6d6520616d6f756e7420776173206d696e74656420696e746f20616e206163636f756e742e184275726e656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000b049c536f6d6520616d6f756e7420776173206275726e65642066726f6d20616e206163636f756e742e2453757370656e64656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000c041501536f6d6520616d6f756e74207761732073757370656e6465642066726f6d20616e206163636f756e74202869742063616e20626520726573746f726564206c61746572292e20526573746f72656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000d04a4536f6d6520616d6f756e742077617320726573746f72656420696e746f20616e206163636f756e742e20557067726164656404010c77686f000130543a3a4163636f756e744964000e0460416e206163636f756e74207761732075706772616465642e18497373756564040118616d6f756e74180128543a3a42616c616e6365000f042d01546f74616c2069737375616e63652077617320696e637265617365642062792060616d6f756e74602c206372656174696e6720612063726564697420746f2062652062616c616e6365642e2452657363696e646564040118616d6f756e74180128543a3a42616c616e63650010042501546f74616c2069737375616e636520776173206465637265617365642062792060616d6f756e74602c206372656174696e672061206465627420746f2062652062616c616e6365642e184c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500110460536f6d652062616c616e636520776173206c6f636b65642e20556e6c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500120468536f6d652062616c616e63652077617320756e6c6f636b65642e1846726f7a656e08010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500130460536f6d652062616c616e6365207761732066726f7a656e2e1854686177656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500140460536f6d652062616c616e636520776173207468617765642e4c546f74616c49737375616e6365466f7263656408010c6f6c64180128543a3a42616c616e636500010c6e6577180128543a3a42616c616e6365001504ac5468652060546f74616c49737375616e6365602077617320666f72636566756c6c79206368616e6765642e047c54686520604576656e746020656e756d206f6620746869732070616c6c65748414346672616d655f737570706f72741874726169747318746f6b656e73106d6973633442616c616e6365537461747573000108104672656500000020526573657276656400010000880c6870616c6c65745f7472616e73616374696f6e5f7061796d656e741870616c6c6574144576656e74040454000104485472616e73616374696f6e466565506169640c010c77686f000130543a3a4163636f756e74496400012861637475616c5f66656518013042616c616e63654f663c543e00010c74697018013042616c616e63654f663c543e000008590141207472616e73616374696f6e20666565206061637475616c5f666565602c206f662077686963682060746970602077617320616464656420746f20746865206d696e696d756d20696e636c7573696f6e206665652c5c686173206265656e2070616964206279206077686f602e047c54686520604576656e746020656e756d206f6620746869732070616c6c65748c103870616c6c65745f7374616b696e671870616c6c65741870616c6c6574144576656e740404540001481c457261506169640c01246572615f696e646578100120457261496e64657800014076616c696461746f725f7061796f757418013042616c616e63654f663c543e00012472656d61696e64657218013042616c616e63654f663c543e000008550154686520657261207061796f757420686173206265656e207365743b207468652066697273742062616c616e6365206973207468652076616c696461746f722d7061796f75743b20746865207365636f6e64206973c07468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642e2052657761726465640c01147374617368000130543a3a4163636f756e7449640001106465737490017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000118616d6f756e7418013042616c616e63654f663c543e0001040d01546865206e6f6d696e61746f7220686173206265656e207265776172646564206279207468697320616d6f756e7420746f20746869732064657374696e6174696f6e2e1c536c61736865640801187374616b6572000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e0002041d0141207374616b6572202876616c696461746f72206f72206e6f6d696e61746f722920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e34536c6173685265706f727465640c012476616c696461746f72000130543a3a4163636f756e7449640001206672616374696f6e94011c50657262696c6c000124736c6173685f657261100120457261496e64657800030859014120736c61736820666f722074686520676976656e2076616c696461746f722c20666f722074686520676976656e2070657263656e74616765206f66207468656972207374616b652c2061742074686520676976656e54657261206173206265656e207265706f727465642e684f6c64536c617368696e675265706f727444697363617264656404013473657373696f6e5f696e64657810013053657373696f6e496e6465780004081901416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c64446e6f742062652070726f6365737365642e385374616b657273456c65637465640005048441206e657720736574206f66207374616b6572732077617320656c65637465642e18426f6e6465640801147374617368000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e000610d0416e206163636f756e742068617320626f6e646564207468697320616d6f756e742e205c5b73746173682c20616d6f756e745c5d004d014e4f54453a2054686973206576656e74206973206f6e6c7920656d6974746564207768656e2066756e64732061726520626f6e64656420766961206120646973706174636861626c652e204e6f7461626c792c210169742077696c6c206e6f7420626520656d697474656420666f72207374616b696e672072657761726473207768656e20746865792061726520616464656420746f207374616b652e20556e626f6e6465640801147374617368000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e00070490416e206163636f756e742068617320756e626f6e646564207468697320616d6f756e742e2457697468647261776e0801147374617368000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e0008085901416e206163636f756e74206861732063616c6c6564206077697468647261775f756e626f6e6465646020616e642072656d6f76656420756e626f6e64696e67206368756e6b7320776f727468206042616c616e6365606466726f6d2074686520756e6c6f636b696e672071756575652e184b69636b65640801246e6f6d696e61746f72000130543a3a4163636f756e7449640001147374617368000130543a3a4163636f756e744964000904b441206e6f6d696e61746f7220686173206265656e206b69636b65642066726f6d20612076616c696461746f722e545374616b696e67456c656374696f6e4661696c6564000a04ac54686520656c656374696f6e206661696c65642e204e6f206e65772065726120697320706c616e6e65642e1c4368696c6c65640401147374617368000130543a3a4163636f756e744964000b042101416e206163636f756e74206861732073746f707065642070617274696369706174696e672061732065697468657220612076616c696461746f72206f72206e6f6d696e61746f722e345061796f7574537461727465640801246572615f696e646578100120457261496e64657800013c76616c696461746f725f7374617368000130543a3a4163636f756e744964000c0498546865207374616b657273272072657761726473206172652067657474696e6720706169642e4456616c696461746f7250726566735365740801147374617368000130543a3a4163636f756e744964000114707265667398013856616c696461746f725072656673000d0498412076616c696461746f72206861732073657420746865697220707265666572656e6365732e68536e617073686f74566f7465727353697a65457863656564656404011073697a6510010c753332000e0468566f746572732073697a65206c696d697420726561636865642e6c536e617073686f745461726765747353697a65457863656564656404011073697a6510010c753332000f046c546172676574732073697a65206c696d697420726561636865642e20466f7263654572610401106d6f6465a0011c466f7263696e670010047441206e657720666f72636520657261206d6f646520776173207365742e64436f6e74726f6c6c65724261746368446570726563617465640401206661696c7572657310010c753332001104a45265706f7274206f66206120636f6e74726f6c6c6572206261746368206465707265636174696f6e2e047c54686520604576656e746020656e756d206f6620746869732070616c6c657490083870616c6c65745f7374616b696e674452657761726444657374696e6174696f6e04244163636f756e74496401000114185374616b656400000014537461736800010028436f6e74726f6c6c65720002001c4163636f756e7404000001244163636f756e744964000300104e6f6e6500040000940c3473705f61726974686d65746963287065725f7468696e67731c50657262696c6c0000040010010c753332000098083870616c6c65745f7374616b696e673856616c696461746f7250726566730000080128636f6d6d697373696f6e9c011c50657262696c6c00011c626c6f636b6564780110626f6f6c00009c0000069400a0083870616c6c65745f7374616b696e671c466f7263696e67000110284e6f74466f7263696e6700000020466f7263654e657700010024466f7263654e6f6e650002002c466f726365416c7761797300030000a40c3c70616c6c65745f6f6666656e6365731870616c6c6574144576656e740001041c4f6666656e63650801106b696e64a801104b696e6400012074696d65736c6f743401384f706171756554696d65536c6f7400000c5101546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e643501286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e4c5c5b6b696e642c2074696d65736c6f745c5d2e04304576656e747320747970652ea8000003100000000800ac0c3870616c6c65745f73657373696f6e1870616c6c6574144576656e74000104284e657753657373696f6e04013473657373696f6e5f696e64657810013053657373696f6e496e64657800000839014e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e74206973207468652073657373696f6e20696e6465782c206e6f74207468659c626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574b00c3870616c6c65745f6772616e6470611870616c6c6574144576656e7400010c384e6577417574686f726974696573040134617574686f726974795f736574b40134417574686f726974794c6973740000048c4e657720617574686f726974792073657420686173206265656e206170706c6965642e185061757365640001049843757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640002049c43757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574b4000002b800b800000408bc2c00bc0c5073705f636f6e73656e7375735f6772616e6470610c617070185075626c696300000400c0013c656432353531393a3a5075626c69630000c00c1c73705f636f72651c65643235353139185075626c6963000004000401205b75383b2033325d0000c4105873746167696e675f6b7573616d615f72756e74696d654070616c6c65745f696d5f6f6e6c696e651870616c6c6574144576656e7404045400010c444865617274626561745265636569766564040130617574686f726974795f6964c8016c73757065723a3a737232353531393a3a417574686f7269747949640000001c416c6c476f6f640001002c536f6d654f66666c696e6504011c6f66666c696e65d001a073705f7374643a3a7665633a3a5665633c4964656e74696669636174696f6e5475706c653c543e3e000200047c54686520604576656e746020656e756d206f6620746869732070616c6c6574c8145873746167696e675f6b7573616d615f72756e74696d654070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139185075626c696300000400cc013c737232353531393a3a5075626c69630000cc0c1c73705f636f72651c73723235353139185075626c6963000004000401205b75383b2033325d0000d0000002d400d40000040800d800d8082873705f7374616b696e67204578706f7375726508244163636f756e74496401001c42616c616e63650118000c0114746f74616cdc011c42616c616e636500010c6f776edc011c42616c616e63650001186f7468657273e001ac5665633c496e646976696475616c4578706f737572653c4163636f756e7449642c2042616c616e63653e3e0000dc0000061800e0000002e400e4082873705f7374616b696e6748496e646976696475616c4578706f7375726508244163636f756e74496401001c42616c616e636501180008010c77686f0001244163636f756e74496400011476616c7565dc011c42616c616e63650000e80c3c70616c6c65745f74726561737572791870616c6c6574144576656e740804540004490001382050726f706f73656404013870726f706f73616c5f696e64657810013450726f706f73616c496e646578000004344e65772070726f706f73616c2e205370656e64696e670401406275646765745f72656d61696e696e6718013c42616c616e63654f663c542c20493e000104e45765206861766520656e6465642061207370656e6420706572696f6420616e642077696c6c206e6f7720616c6c6f636174652066756e64732e1c417761726465640c013870726f706f73616c5f696e64657810013450726f706f73616c496e646578000114617761726418013c42616c616e63654f663c542c20493e00011c6163636f756e74000130543a3a4163636f756e7449640002047c536f6d652066756e64732068617665206265656e20616c6c6f63617465642e2052656a656374656408013870726f706f73616c5f696e64657810013450726f706f73616c496e64657800011c736c617368656418013c42616c616e63654f663c542c20493e000304b0412070726f706f73616c207761732072656a65637465643b2066756e6473207765726520736c61736865642e144275726e7404012c6275726e745f66756e647318013c42616c616e63654f663c542c20493e00040488536f6d65206f66206f75722066756e64732068617665206265656e206275726e742e20526f6c6c6f766572040140726f6c6c6f7665725f62616c616e636518013c42616c616e63654f663c542c20493e0005042d015370656e64696e67206861732066696e69736865643b20746869732069732074686520616d6f756e74207468617420726f6c6c73206f76657220756e74696c206e657874207370656e642e1c4465706f73697404011476616c756518013c42616c616e63654f663c542c20493e0006047c536f6d652066756e64732068617665206265656e206465706f73697465642e345370656e64417070726f7665640c013870726f706f73616c5f696e64657810013450726f706f73616c496e646578000118616d6f756e7418013c42616c616e63654f663c542c20493e00012c62656e6566696369617279000130543a3a4163636f756e7449640007049c41206e6577207370656e642070726f706f73616c20686173206265656e20617070726f7665642e3c55706461746564496e61637469766508012c726561637469766174656418013c42616c616e63654f663c542c20493e00012c646561637469766174656418013c42616c616e63654f663c542c20493e000804cc54686520696e6163746976652066756e6473206f66207468652070616c6c65742068617665206265656e20757064617465642e4841737365745370656e64417070726f766564180114696e6465781001285370656e64496e64657800012861737365745f6b696e64ec0130543a3a41737365744b696e64000118616d6f756e74180150417373657442616c616e63654f663c542c20493e00012c62656e656669636961727951010138543a3a42656e656669636961727900012876616c69645f66726f6d100144426c6f636b4e756d626572466f723c543e0001246578706972655f6174100144426c6f636b4e756d626572466f723c543e000904b441206e6577206173736574207370656e642070726f706f73616c20686173206265656e20617070726f7665642e4041737365745370656e64566f69646564040114696e6465781001285370656e64496e646578000a0474416e20617070726f766564207370656e642077617320766f696465642e1050616964080114696e6465781001285370656e64496e6465780001287061796d656e745f69642c01643c543a3a5061796d6173746572206173205061793e3a3a4964000b044c41207061796d656e742068617070656e65642e345061796d656e744661696c6564080114696e6465781001285370656e64496e6465780001287061796d656e745f69642c01643c543a3a5061796d6173746572206173205061793e3a3a4964000c049041207061796d656e74206661696c656420616e642063616e20626520726574726965642e385370656e6450726f636573736564040114696e6465781001285370656e64496e646578000d084d0141207370656e64207761732070726f63657373656420616e642072656d6f7665642066726f6d207468652073746f726167652e204974206d696768742068617665206265656e207375636365737366756c6c797070616964206f72206974206d6179206861766520657870697265642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574ec0c5c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e14696d706c735c56657273696f6e65644c6f63617461626c6541737365740001080856330801206c6f636174696f6ef0015878636d3a3a76333a3a4d756c74694c6f636174696f6e00012061737365745f69641501014078636d3a3a76333a3a417373657449640003000856340801206c6f636174696f6e1901014478636d3a3a76343a3a4c6f636174696f6e00012061737365745f69644d01014078636d3a3a76343a3a4173736574496400040000f0102c73746167696e675f78636d087633346d756c74696c6f636174696f6e344d756c74694c6f636174696f6e000008011c706172656e74730801087538000120696e746572696f72f401244a756e6374696f6e730000f4100c78636d087633246a756e6374696f6e73244a756e6374696f6e7300012410486572650000000858310400f801204a756e6374696f6e0001000858320800f801204a756e6374696f6e0000f801204a756e6374696f6e0002000858330c00f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e0003000858341000f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e0004000858351400f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e0005000858361800f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e0006000858371c00f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e0007000858382000f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e0000f801204a756e6374696f6e00080000f8100c78636d087633206a756e6374696f6e204a756e6374696f6e0001282450617261636861696e0400fc010c7533320000002c4163636f756e744964333208011c6e6574776f726b010101444f7074696f6e3c4e6574776f726b49643e00010869640401205b75383b2033325d000100384163636f756e74496e646578363408011c6e6574776f726b010101444f7074696f6e3c4e6574776f726b49643e000114696e64657828010c753634000200304163636f756e744b6579323008011c6e6574776f726b010101444f7074696f6e3c4e6574776f726b49643e00010c6b6579090101205b75383b2032305d0003003850616c6c6574496e7374616e6365040008010875380004003047656e6572616c496e6465780400dc0110753132380005002847656e6572616c4b65790801186c656e6774680801087538000110646174610401205b75383b2033325d000600244f6e6c794368696c6400070024506c7572616c69747908010869640d010118426f647949640001107061727411010120426f6479506172740008003c476c6f62616c436f6e73656e7375730400050101244e6574776f726b496400090000fc0000061000010104184f7074696f6e0404540105010108104e6f6e6500000010536f6d650400050100000100000501100c78636d087633206a756e6374696f6e244e6574776f726b496400012c24427947656e6573697304000401205b75383b2033325d000000184279466f726b080130626c6f636b5f6e756d6265722c010c753634000128626c6f636b5f686173680401205b75383b2033325d00010020506f6c6b61646f74000200184b7573616d610003001c57657374656e6400040018526f636f636f00050018576f636f636f00060020457468657265756d040120636861696e5f696428010c7536340007002c426974636f696e436f72650008002c426974636f696e4361736800090040506f6c6b61646f7442756c6c6574696e000a000009010000031400000008000d01100c78636d087633206a756e6374696f6e18426f6479496400012810556e69740000001c4d6f6e696b6572040044011c5b75383b20345d00010014496e6465780400fc010c7533320002002445786563757469766500030024546563686e6963616c0004002c4c656769736c6174697665000500204a7564696369616c0006001c446566656e73650007003841646d696e697374726174696f6e000800205472656173757279000900001101100c78636d087633206a756e6374696f6e20426f64795061727400011414566f6963650000001c4d656d62657273040114636f756e74fc010c753332000100204672616374696f6e08010c6e6f6dfc010c75333200011464656e6f6dfc010c7533320002004441744c6561737450726f706f7274696f6e08010c6e6f6dfc010c75333200011464656e6f6dfc010c753332000300484d6f72655468616e50726f706f7274696f6e08010c6e6f6dfc010c75333200011464656e6f6dfc010c753332000400001501100c78636d087633286d756c746961737365741c4173736574496400010820436f6e63726574650400f001344d756c74694c6f636174696f6e00000020416273747261637404000401205b75383b2033325d000100001901102c73746167696e675f78636d087634206c6f636174696f6e204c6f636174696f6e000008011c706172656e74730801087538000120696e746572696f721d0101244a756e6374696f6e7300001d01102c73746167696e675f78636d087634246a756e6374696f6e73244a756e6374696f6e7300012410486572650000000858310400210101484172633c5b4a756e6374696f6e3b20315d3e0001000858320400310101484172633c5b4a756e6374696f6e3b20325d3e0002000858330400350101484172633c5b4a756e6374696f6e3b20335d3e0003000858340400390101484172633c5b4a756e6374696f6e3b20345d3e00040008583504003d0101484172633c5b4a756e6374696f6e3b20355d3e0005000858360400410101484172633c5b4a756e6374696f6e3b20365d3e0006000858370400450101484172633c5b4a756e6374696f6e3b20375d3e0007000858380400490101484172633c5b4a756e6374696f6e3b20385d3e000800002101000003010000002501002501102c73746167696e675f78636d087634206a756e6374696f6e204a756e6374696f6e0001282450617261636861696e0400fc010c7533320000002c4163636f756e744964333208011c6e6574776f726b290101444f7074696f6e3c4e6574776f726b49643e00010869640401205b75383b2033325d000100384163636f756e74496e646578363408011c6e6574776f726b290101444f7074696f6e3c4e6574776f726b49643e000114696e64657828010c753634000200304163636f756e744b6579323008011c6e6574776f726b290101444f7074696f6e3c4e6574776f726b49643e00010c6b6579090101205b75383b2032305d0003003850616c6c6574496e7374616e6365040008010875380004003047656e6572616c496e6465780400dc0110753132380005002847656e6572616c4b65790801186c656e6774680801087538000110646174610401205b75383b2033325d000600244f6e6c794368696c6400070024506c7572616c69747908010869640d010118426f647949640001107061727411010120426f6479506172740008003c476c6f62616c436f6e73656e73757304002d0101244e6574776f726b496400090000290104184f7074696f6e040454012d010108104e6f6e6500000010536f6d6504002d0100000100002d01102c73746167696e675f78636d087634206a756e6374696f6e244e6574776f726b496400012c24427947656e6573697304000401205b75383b2033325d000000184279466f726b080130626c6f636b5f6e756d6265722c010c753634000128626c6f636b5f686173680401205b75383b2033325d00010020506f6c6b61646f74000200184b7573616d610003001c57657374656e6400040018526f636f636f00050018576f636f636f00060020457468657265756d040120636861696e5f696428010c7536340007002c426974636f696e436f72650008002c426974636f696e4361736800090040506f6c6b61646f7442756c6c6574696e000a00003101000003020000002501003501000003030000002501003901000003040000002501003d01000003050000002501004101000003060000002501004501000003070000002501004901000003080000002501004d01102c73746167696e675f78636d0876341461737365741c4173736574496400000400190101204c6f636174696f6e00005101080c78636d4456657273696f6e65644c6f636174696f6e00010c08563204005501014476323a3a4d756c74694c6f636174696f6e0001000856330400f0014476333a3a4d756c74694c6f636174696f6e00030008563404001901013076343a3a4c6f636174696f6e000400005501100c78636d087632346d756c74696c6f636174696f6e344d756c74694c6f636174696f6e000008011c706172656e74730801087538000120696e746572696f72590101244a756e6374696f6e7300005901100c78636d087632346d756c74696c6f636174696f6e244a756e6374696f6e73000124104865726500000008583104005d0101204a756e6374696f6e00010008583208005d0101204a756e6374696f6e00005d0101204a756e6374696f6e0002000858330c005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00030008583410005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00040008583514005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00050008583618005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e0006000858371c005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00070008583820005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e00005d0101204a756e6374696f6e000800005d01100c78636d087632206a756e6374696f6e204a756e6374696f6e0001242450617261636861696e0400fc010c7533320000002c4163636f756e744964333208011c6e6574776f726b610101244e6574776f726b496400010869640401205b75383b2033325d000100384163636f756e74496e646578363408011c6e6574776f726b610101244e6574776f726b4964000114696e64657828010c753634000200304163636f756e744b6579323008011c6e6574776f726b610101244e6574776f726b496400010c6b6579090101205b75383b2032305d0003003850616c6c6574496e7374616e6365040008010875380004003047656e6572616c496e6465780400dc0110753132380005002847656e6572616c4b65790400650101805765616b426f756e6465645665633c75382c20436f6e73745533323c33323e3e000600244f6e6c794368696c6400070024506c7572616c697479080108696469010118426f64794964000110706172746d010120426f6479506172740008000061010c0c78636d087632244e6574776f726b49640001100c416e79000000144e616d65640400650101805765616b426f756e6465645665633c75382c20436f6e73745533323c33323e3e00010020506f6c6b61646f74000200184b7573616d610003000065010c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401080453000004003401185665633c543e000069010c0c78636d08763218426f6479496400012810556e6974000000144e616d65640400650101805765616b426f756e6465645665633c75382c20436f6e73745533323c33323e3e00010014496e6465780400fc010c7533320002002445786563757469766500030024546563686e6963616c0004002c4c656769736c6174697665000500204a7564696369616c0006001c446566656e73650007003841646d696e697374726174696f6e000800205472656173757279000900006d010c0c78636d08763220426f64795061727400011414566f6963650000001c4d656d62657273040114636f756e74fc010c753332000100204672616374696f6e08010c6e6f6dfc010c75333200011464656e6f6dfc010c7533320002004441744c6561737450726f706f7274696f6e08010c6e6f6dfc010c75333200011464656e6f6dfc010c753332000300484d6f72655468616e50726f706f7274696f6e08010c6e6f6dfc010c75333200011464656e6f6dfc010c7533320004000071010c6070616c6c65745f636f6e76696374696f6e5f766f74696e671870616c6c6574144576656e740804540004490001082444656c6567617465640800000130543a3a4163636f756e7449640000000130543a3a4163636f756e7449640000041d01416e206163636f756e74206861732064656c65676174656420746865697220766f746520746f20616e6f74686572206163636f756e742e205c5b77686f2c207461726765745c5d2c556e64656c6567617465640400000130543a3a4163636f756e744964000104f4416e205c5b6163636f756e745c5d206861732063616e63656c6c656420612070726576696f75732064656c65676174696f6e206f7065726174696f6e2e047c54686520604576656e746020656e756d206f6620746869732070616c6c657475010c4070616c6c65745f7265666572656e64611870616c6c6574144576656e74080454000449000140245375626d69747465640c0114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e0114747261636b7901013c547261636b49644f663c542c20493e04250154686520747261636b2028616e6420627920657874656e73696f6e2070726f706f73616c206469737061746368206f726967696e29206f662074686973207265666572656e64756d2e012070726f706f73616c7d01014c426f756e64656443616c6c4f663c542c20493e04805468652070726f706f73616c20666f7220746865207265666572656e64756d2e00048041207265666572656e64756d20686173206265656e207375626d69747465642e544465636973696f6e4465706f736974506c616365640c0114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e010c77686f000130543a3a4163636f756e744964048c546865206163636f756e742077686f20706c6163656420746865206465706f7369742e0118616d6f756e7418013c42616c616e63654f663c542c20493e048454686520616d6f756e7420706c6163656420627920746865206163636f756e742e010494546865206465636973696f6e206465706f73697420686173206265656e20706c616365642e5c4465636973696f6e4465706f736974526566756e6465640c0114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e010c77686f000130543a3a4163636f756e744964048c546865206163636f756e742077686f20706c6163656420746865206465706f7369742e0118616d6f756e7418013c42616c616e63654f663c542c20493e048454686520616d6f756e7420706c6163656420627920746865206163636f756e742e02049c546865206465636973696f6e206465706f73697420686173206265656e20726566756e6465642e384465706f736974536c617368656408010c77686f000130543a3a4163636f756e744964048c546865206163636f756e742077686f20706c6163656420746865206465706f7369742e0118616d6f756e7418013c42616c616e63654f663c542c20493e048454686520616d6f756e7420706c6163656420627920746865206163636f756e742e03046c41206465706f73697420686173206265656e20736c61736865642e3c4465636973696f6e53746172746564100114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e0114747261636b7901013c547261636b49644f663c542c20493e04250154686520747261636b2028616e6420627920657874656e73696f6e2070726f706f73616c206469737061746368206f726967696e29206f662074686973207265666572656e64756d2e012070726f706f73616c7d01014c426f756e64656443616c6c4f663c542c20493e04805468652070726f706f73616c20666f7220746865207265666572656e64756d2e011474616c6c79ed070120543a3a54616c6c7904b85468652063757272656e742074616c6c79206f6620766f74657320696e2074686973207265666572656e64756d2e0404bc41207265666572656e64756d20686173206d6f76656420696e746f20746865206465636964696e672070686173652e38436f6e6669726d53746172746564040114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e050038436f6e6669726d41626f72746564040114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e060024436f6e6669726d6564080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e011474616c6c79ed070120543a3a54616c6c7904b05468652066696e616c2074616c6c79206f6620766f74657320696e2074686973207265666572656e64756d2e0704210141207265666572656e64756d2068617320656e6465642069747320636f6e6669726d6174696f6e20706861736520616e6420697320726561647920666f7220617070726f76616c2e20417070726f766564040114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e08040d0141207265666572656e64756d20686173206265656e20617070726f76656420616e64206974732070726f706f73616c20686173206265656e207363686564756c65642e2052656a6563746564080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e011474616c6c79ed070120543a3a54616c6c7904b05468652066696e616c2074616c6c79206f6620766f74657320696e2074686973207265666572656e64756d2e0904ac412070726f706f73616c20686173206265656e2072656a6563746564206279207265666572656e64756d2e2054696d65644f7574080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e011474616c6c79ed070120543a3a54616c6c7904b05468652066696e616c2074616c6c79206f6620766f74657320696e2074686973207265666572656e64756d2e0a04d841207265666572656e64756d20686173206265656e2074696d6564206f757420776974686f7574206265696e6720646563696465642e2443616e63656c6c6564080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e011474616c6c79ed070120543a3a54616c6c7904b05468652066696e616c2074616c6c79206f6620766f74657320696e2074686973207265666572656e64756d2e0b048041207265666572656e64756d20686173206265656e2063616e63656c6c65642e184b696c6c6564080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e011474616c6c79ed070120543a3a54616c6c7904b05468652066696e616c2074616c6c79206f6620766f74657320696e2074686973207265666572656e64756d2e0c047441207265666572656e64756d20686173206265656e206b696c6c65642e645375626d697373696f6e4465706f736974526566756e6465640c0114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e010c77686f000130543a3a4163636f756e744964048c546865206163636f756e742077686f20706c6163656420746865206465706f7369742e0118616d6f756e7418013c42616c616e63654f663c542c20493e048454686520616d6f756e7420706c6163656420627920746865206163636f756e742e0d04a4546865207375626d697373696f6e206465706f73697420686173206265656e20726566756e6465642e2c4d65746164617461536574080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e01106861736830011c543a3a486173680438507265696d61676520686173682e0e049c4d6574616461746120666f722061207265666572656e64756d20686173206265656e207365742e3c4d65746164617461436c6561726564080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e01106861736830011c543a3a486173680438507265696d61676520686173682e0f04ac4d6574616461746120666f722061207265666572656e64756d20686173206265656e20636c65617265642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574790100000504007d0110346672616d655f737570706f72741874726169747324707265696d616765731c426f756e646564080454018101044801e507010c184c656761637904011068617368300124483a3a4f757470757400000018496e6c696e650400e9070134426f756e646564496e6c696e65000100184c6f6f6b757008011068617368300124483a3a4f757470757400010c6c656e10010c753332000200008101085873746167696e675f6b7573616d615f72756e74696d652c52756e74696d6543616c6c0001d01853797374656d0400850101ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53797374656d2c2052756e74696d653e00000010426162650400950101a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426162652c2052756e74696d653e0001002454696d657374616d700400b90101b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54696d657374616d702c2052756e74696d653e0002001c496e64696365730400bd0101b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496e64696365732c2052756e74696d653e0003002042616c616e6365730400cd0101b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42616c616e6365732c2052756e74696d653e0004001c5374616b696e670400d90101b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5374616b696e672c2052756e74696d653e0006001c53657373696f6e0400150201b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53657373696f6e2c2052756e74696d653e0008001c4772616e6470610400350201b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4772616e6470612c2052756e74696d653e000a002054726561737572790400650201b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54726561737572792c2052756e74696d653e00120040436f6e76696374696f6e566f74696e6704006d0201d50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6e76696374696f6e566f74696e672c2052756e74696d653e001400245265666572656e64610400810201b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5265666572656e64612c2052756e74696d653e0015005046656c6c6f7773686970436f6c6c6563746976650400a90201e50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c46656c6c6f7773686970436f6c6c6563746976652c2052756e74696d653e0016004c46656c6c6f77736869705265666572656e64610400ad0201e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c46656c6c6f77736869705265666572656e64612c2052756e74696d653e0017002457686974656c6973740400b10201b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c57686974656c6973742c2052756e74696d653e002c0018436c61696d730400b50201ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436c61696d732c2052756e74696d653e0013001c5574696c6974790400d50201b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5574696c6974792c2052756e74696d653e001800204964656e746974790400dd0201b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4964656e746974792c2052756e74696d653e0019001c536f636965747904008d0301b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c536f63696574792c2052756e74696d653e001a00205265636f766572790400910301b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5265636f766572792c2052756e74696d653e001b001c56657374696e670400950301b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c56657374696e672c2052756e74696d653e001c00245363686564756c657204009d0301b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5363686564756c65722c2052756e74696d653e001d001450726f78790400a90301a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50726f78792c2052756e74696d653e001e00204d756c74697369670400b50301b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d756c74697369672c2052756e74696d653e001f0020507265696d6167650400c10301b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c507265696d6167652c2052756e74696d653e00200020426f756e746965730400c90301b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426f756e746965732c2052756e74696d653e002300344368696c64426f756e746965730400cd0301c90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4368696c64426f756e746965732c2052756e74696d653e00280068456c656374696f6e50726f76696465724d756c746950686173650400d10301fd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c456c656374696f6e50726f76696465724d756c746950686173652c2052756e74696d653e0025000c4e69730400250501a10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4e69732c2052756e74696d653e002600584e6973436f756e7465727061727442616c616e6365730400310501ed0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4e6973436f756e7465727061727442616c616e6365732c2052756e74696d653e002d0024566f7465724c6973740400350501b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c566f7465724c6973742c2052756e74696d653e0027003c4e6f6d696e6174696f6e506f6f6c730400390501d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4e6f6d696e6174696f6e506f6f6c732c2052756e74696d653e0029002c46617374556e7374616b6504006d0501c10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c46617374556e7374616b652c2052756e74696d653e002a0034436f6e66696775726174696f6e0400710501c90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6e66696775726174696f6e2c2052756e74696d653e0033002c50617261735368617265640400910501c10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50617261735368617265642c2052756e74696d653e0034003450617261496e636c7573696f6e0400950501c90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50617261496e636c7573696f6e2c2052756e74696d653e0035003050617261496e686572656e740400990501c50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50617261496e686572656e742c2052756e74696d653e0036001450617261730400250601a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50617261732c2052756e74696d653e0038002c496e697469616c697a657204002d0601c10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496e697469616c697a65722c2052756e74696d653e0039001048726d700400310601a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c48726d702c2052756e74696d653e003c0034506172617344697370757465730400390601c90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506172617344697370757465732c2052756e74696d653e003e00345061726173536c617368696e6704003d0601c90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5061726173536c617368696e672c2052756e74696d653e003f00684f6e44656d616e6441737369676e6d656e7450726f766964657204004d0601fd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4f6e44656d616e6441737369676e6d656e7450726f76696465722c2052756e74696d653e004000245265676973747261720400510601b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5265676973747261722c2052756e74696d653e00460014536c6f74730400550601a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c536c6f74732c2052756e74696d653e0047002041756374696f6e730400590601b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c41756374696f6e732c2052756e74696d653e0048002443726f77646c6f616e0400610601b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c43726f77646c6f616e2c2052756e74696d653e00490020436f726574696d6504006d0601b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f726574696d652c2052756e74696d653e004a002458636d50616c6c65740400810601b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c58636d50616c6c65742c2052756e74696d653e006300304d65737361676551756575650400ad0701c50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d65737361676551756575652c2052756e74696d653e006400244173736574526174650400b90701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4173736574526174652c2052756e74696d653e0065001442656566790400c10701a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42656566792c2052756e74696d653e00c800404964656e746974794d69677261746f720400e10701d50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4964656e746974794d69677261746f722c2052756e74696d653e00f8000085010c306672616d655f73797374656d1870616c6c65741043616c6c04045400012c1872656d61726b04011872656d61726b34011c5665633c75383e0000045c536565205b6050616c6c65743a3a72656d61726b605d2e387365745f686561705f706167657304011470616765732c010c7536340001047c536565205b6050616c6c65743a3a7365745f686561705f7061676573605d2e207365745f636f6465040110636f646534011c5665633c75383e00020464536565205b6050616c6c65743a3a7365745f636f6465605d2e5c7365745f636f64655f776974686f75745f636865636b73040110636f646534011c5665633c75383e000304a0536565205b6050616c6c65743a3a7365745f636f64655f776974686f75745f636865636b73605d2e2c7365745f73746f726167650401146974656d73890101345665633c4b657956616c75653e00040470536565205b6050616c6c65743a3a7365745f73746f72616765605d2e306b696c6c5f73746f726167650401106b657973910101205665633c4b65793e00050474536565205b6050616c6c65743a3a6b696c6c5f73746f72616765605d2e2c6b696c6c5f70726566697808011870726566697834010c4b657900011c7375626b65797310010c75333200060470536565205b6050616c6c65743a3a6b696c6c5f707265666978605d2e4472656d61726b5f776974685f6576656e7404011872656d61726b34011c5665633c75383e00070488536565205b6050616c6c65743a3a72656d61726b5f776974685f6576656e74605d2e44617574686f72697a655f75706772616465040124636f64655f6861736830011c543a3a4861736800090488536565205b6050616c6c65743a3a617574686f72697a655f75706772616465605d2e80617574686f72697a655f757067726164655f776974686f75745f636865636b73040124636f64655f6861736830011c543a3a48617368000a04c4536565205b6050616c6c65743a3a617574686f72697a655f757067726164655f776974686f75745f636865636b73605d2e606170706c795f617574686f72697a65645f75706772616465040110636f646534011c5665633c75383e000b04a4536565205b6050616c6c65743a3a6170706c795f617574686f72697a65645f75706772616465605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e89010000028d01008d01000004083434009101000002340095010c2c70616c6c65745f626162651870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f6699010190426f783c45717569766f636174696f6e50726f6f663c486561646572466f723c543e3e3e00013c6b65795f6f776e65725f70726f6f66a9010140543a3a4b65794f776e657250726f6f6600000490536565205b6050616c6c65743a3a7265706f72745f65717569766f636174696f6e605d2e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f6699010190426f783c45717569766f636174696f6e50726f6f663c486561646572466f723c543e3e3e00013c6b65795f6f776e65725f70726f6f66a9010140543a3a4b65794f776e657250726f6f66000104b4536565205b6050616c6c65743a3a7265706f72745f65717569766f636174696f6e5f756e7369676e6564605d2e48706c616e5f636f6e6669675f6368616e6765040118636f6e666967ad0101504e657874436f6e66696744657363726970746f720002048c536565205b6050616c6c65743a3a706c616e5f636f6e6669675f6368616e6765605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e9901084873705f636f6e73656e7375735f736c6f74734445717569766f636174696f6e50726f6f660818486561646572019d0108496401a101001001206f6666656e646572a10101084964000110736c6f74a5010110536c6f7400013066697273745f6865616465729d0101184865616465720001347365636f6e645f6865616465729d01011848656164657200009d01102873705f72756e74696d651c67656e65726963186865616465721848656164657208184e756d62657201101048617368000014012c706172656e745f68617368300130486173683a3a4f75747075740001186e756d626572fc01184e756d62657200012873746174655f726f6f74300130486173683a3a4f757470757400013c65787472696e736963735f726f6f74300130486173683a3a4f75747075740001186469676573743801184469676573740000a1010c4473705f636f6e73656e7375735f626162650c617070185075626c696300000400cc013c737232353531393a3a5075626c69630000a501084873705f636f6e73656e7375735f736c6f747310536c6f74000004002c010c7536340000a901082873705f73657373696f6e3c4d656d6265727368697050726f6f6600000c011c73657373696f6e10013053657373696f6e496e646578000128747269655f6e6f646573910101305665633c5665633c75383e3e00013c76616c696461746f725f636f756e7410013856616c696461746f72436f756e740000ad010c4473705f636f6e73656e7375735f626162651c64696765737473504e657874436f6e66696744657363726970746f7200010408563108010463b1010128287536342c2075363429000134616c6c6f7765645f736c6f7473b5010130416c6c6f776564536c6f747300010000b101000004082c2c00b501084473705f636f6e73656e7375735f6261626530416c6c6f776564536c6f747300010c305072696d617279536c6f7473000000745072696d617279416e645365636f6e64617279506c61696e536c6f74730001006c5072696d617279416e645365636f6e64617279565246536c6f747300020000b9010c4070616c6c65745f74696d657374616d701870616c6c65741043616c6c0404540001040c73657404010c6e6f77280124543a3a4d6f6d656e7400000450536565205b6050616c6c65743a3a736574605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ebd010c3870616c6c65745f696e64696365731870616c6c65741043616c6c04045400011414636c61696d040114696e64657810013c543a3a4163636f756e74496e64657800000458536565205b6050616c6c65743a3a636c61696d605d2e207472616e7366657208010c6e6577c10101504163636f756e7449644c6f6f6b75704f663c543e000114696e64657810013c543a3a4163636f756e74496e64657800010464536565205b6050616c6c65743a3a7472616e73666572605d2e1066726565040114696e64657810013c543a3a4163636f756e74496e64657800020454536565205b6050616c6c65743a3a66726565605d2e38666f7263655f7472616e736665720c010c6e6577c10101504163636f756e7449644c6f6f6b75704f663c543e000114696e64657810013c543a3a4163636f756e74496e646578000118667265657a65780110626f6f6c0003047c536565205b6050616c6c65743a3a666f7263655f7472616e73666572605d2e18667265657a65040114696e64657810013c543a3a4163636f756e74496e6465780004045c536565205b6050616c6c65743a3a667265657a65605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ec1010c2873705f72756e74696d65306d756c746961646472657373304d756c74694164647265737308244163636f756e7449640100304163636f756e74496e64657801c501011408496404000001244163636f756e74496400000014496e6465780400c90101304163636f756e74496e6465780001000c526177040034011c5665633c75383e0002002441646472657373333204000401205b75383b2033325d000300244164647265737332300400090101205b75383b2032305d00040000c5010000040000c901000006c50100cd010c3c70616c6c65745f62616c616e6365731870616c6c65741043616c6c080454000449000120507472616e736665725f616c6c6f775f646561746808011064657374c10101504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565dc0128543a3a42616c616e636500000494536565205b6050616c6c65743a3a7472616e736665725f616c6c6f775f6465617468605d2e38666f7263655f7472616e736665720c0118736f75726365c10101504163636f756e7449644c6f6f6b75704f663c543e00011064657374c10101504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565dc0128543a3a42616c616e63650002047c536565205b6050616c6c65743a3a666f7263655f7472616e73666572605d2e4c7472616e736665725f6b6565705f616c69766508011064657374c10101504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565dc0128543a3a42616c616e636500030490536565205b6050616c6c65743a3a7472616e736665725f6b6565705f616c697665605d2e307472616e736665725f616c6c08011064657374c10101504163636f756e7449644c6f6f6b75704f663c543e0001286b6565705f616c697665780110626f6f6c00040474536565205b6050616c6c65743a3a7472616e736665725f616c6c605d2e3c666f7263655f756e7265736572766508010c77686fc10101504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e74180128543a3a42616c616e636500050480536565205b6050616c6c65743a3a666f7263655f756e72657365727665605d2e40757067726164655f6163636f756e747304010c77686fd10101445665633c543a3a4163636f756e7449643e00060484536565205b6050616c6c65743a3a757067726164655f6163636f756e7473605d2e44666f7263655f7365745f62616c616e636508010c77686fc10101504163636f756e7449644c6f6f6b75704f663c543e0001206e65775f66726565dc0128543a3a42616c616e636500080488536565205b6050616c6c65743a3a666f7263655f7365745f62616c616e6365605d2e6c666f7263655f61646a7573745f746f74616c5f69737375616e6365080124646972656374696f6ed501014c41646a7573746d656e74446972656374696f6e00011464656c7461dc0128543a3a42616c616e6365000904b0536565205b6050616c6c65743a3a666f7263655f61646a7573745f746f74616c5f69737375616e6365605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ed1010000020000d5010c3c70616c6c65745f62616c616e6365731474797065734c41646a7573746d656e74446972656374696f6e00010820496e63726561736500000020446563726561736500010000d901103870616c6c65745f7374616b696e671870616c6c65741870616c6c65741043616c6c04045400017810626f6e6408011476616c7565dc013042616c616e63654f663c543e000114706179656590017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e00000454536565205b6050616c6c65743a3a626f6e64605d2e28626f6e645f65787472610401386d61785f6164646974696f6e616cdc013042616c616e63654f663c543e0001046c536565205b6050616c6c65743a3a626f6e645f6578747261605d2e18756e626f6e6404011476616c7565dc013042616c616e63654f663c543e0002045c536565205b6050616c6c65743a3a756e626f6e64605d2e4477697468647261775f756e626f6e6465640401486e756d5f736c617368696e675f7370616e7310010c75333200030488536565205b6050616c6c65743a3a77697468647261775f756e626f6e646564605d2e2076616c6964617465040114707265667398013856616c696461746f72507265667300040464536565205b6050616c6c65743a3a76616c6964617465605d2e206e6f6d696e61746504011c74617267657473dd0101645665633c4163636f756e7449644c6f6f6b75704f663c543e3e00050464536565205b6050616c6c65743a3a6e6f6d696e617465605d2e146368696c6c00060458536565205b6050616c6c65743a3a6368696c6c605d2e247365745f7061796565040114706179656590017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e00070468536565205b6050616c6c65743a3a7365745f7061796565605d2e387365745f636f6e74726f6c6c65720008047c536565205b6050616c6c65743a3a7365745f636f6e74726f6c6c6572605d2e4c7365745f76616c696461746f725f636f756e7404010c6e6577fc010c75333200090490536565205b6050616c6c65743a3a7365745f76616c696461746f725f636f756e74605d2e60696e6372656173655f76616c696461746f725f636f756e740401286164646974696f6e616cfc010c753332000a04a4536565205b6050616c6c65743a3a696e6372656173655f76616c696461746f725f636f756e74605d2e547363616c655f76616c696461746f725f636f756e74040118666163746f72e101011c50657263656e74000b0498536565205b6050616c6c65743a3a7363616c655f76616c696461746f725f636f756e74605d2e34666f7263655f6e6f5f65726173000c0478536565205b6050616c6c65743a3a666f7263655f6e6f5f65726173605d2e34666f7263655f6e65775f657261000d0478536565205b6050616c6c65743a3a666f7263655f6e65775f657261605d2e447365745f696e76756c6e657261626c6573040134696e76756c6e657261626c6573d10101445665633c543a3a4163636f756e7449643e000e0488536565205b6050616c6c65743a3a7365745f696e76756c6e657261626c6573605d2e34666f7263655f756e7374616b650801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c753332000f0478536565205b6050616c6c65743a3a666f7263655f756e7374616b65605d2e50666f7263655f6e65775f6572615f616c7761797300100494536565205b6050616c6c65743a3a666f7263655f6e65775f6572615f616c77617973605d2e5463616e63656c5f64656665727265645f736c61736808010c657261100120457261496e646578000134736c6173685f696e6469636573e50101205665633c7533323e00110498536565205b6050616c6c65743a3a63616e63656c5f64656665727265645f736c617368605d2e387061796f75745f7374616b65727308013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e6465780012047c536565205b6050616c6c65743a3a7061796f75745f7374616b657273605d2e187265626f6e6404011476616c7565dc013042616c616e63654f663c543e0013045c536565205b6050616c6c65743a3a7265626f6e64605d2e28726561705f73746173680801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c7533320014046c536565205b6050616c6c65743a3a726561705f7374617368605d2e106b69636b04010c77686fdd0101645665633c4163636f756e7449644c6f6f6b75704f663c543e3e00150454536565205b6050616c6c65743a3a6b69636b605d2e4c7365745f7374616b696e675f636f6e666967731801486d696e5f6e6f6d696e61746f725f626f6e64e9010158436f6e6669674f703c42616c616e63654f663c543e3e0001486d696e5f76616c696461746f725f626f6e64e9010158436f6e6669674f703c42616c616e63654f663c543e3e00014c6d61785f6e6f6d696e61746f725f636f756e74ed010134436f6e6669674f703c7533323e00014c6d61785f76616c696461746f725f636f756e74ed010134436f6e6669674f703c7533323e00013c6368696c6c5f7468726573686f6c64f1010144436f6e6669674f703c50657263656e743e0001386d696e5f636f6d6d697373696f6ef5010144436f6e6669674f703c50657262696c6c3e00160490536565205b6050616c6c65743a3a7365745f7374616b696e675f636f6e66696773605d2e2c6368696c6c5f6f746865720401147374617368000130543a3a4163636f756e74496400170470536565205b6050616c6c65743a3a6368696c6c5f6f74686572605d2e68666f7263655f6170706c795f6d696e5f636f6d6d697373696f6e04013c76616c696461746f725f7374617368000130543a3a4163636f756e744964001804ac536565205b6050616c6c65743a3a666f7263655f6170706c795f6d696e5f636f6d6d697373696f6e605d2e487365745f6d696e5f636f6d6d697373696f6e04010c6e657794011c50657262696c6c0019048c536565205b6050616c6c65743a3a7365745f6d696e5f636f6d6d697373696f6e605d2e587061796f75745f7374616b6572735f62795f706167650c013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e6465780001107061676510011050616765001a049c536565205b6050616c6c65743a3a7061796f75745f7374616b6572735f62795f70616765605d2e307570646174655f7061796565040128636f6e74726f6c6c6572000130543a3a4163636f756e744964001b0474536565205b6050616c6c65743a3a7570646174655f7061796565605d2e686465707265636174655f636f6e74726f6c6c65725f626174636804012c636f6e74726f6c6c657273f90101f4426f756e6465645665633c543a3a4163636f756e7449642c20543a3a4d6178436f6e74726f6c6c657273496e4465707265636174696f6e42617463683e001c04ac536565205b6050616c6c65743a3a6465707265636174655f636f6e74726f6c6c65725f6261746368605d2e38726573746f72655f6c65646765721001147374617368000130543a3a4163636f756e7449640001406d617962655f636f6e74726f6c6c6572fd0101504f7074696f6e3c543a3a4163636f756e7449643e00012c6d617962655f746f74616c010201504f7074696f6e3c42616c616e63654f663c543e3e00013c6d617962655f756e6c6f636b696e6705020115014f7074696f6e3c426f756e6465645665633c556e6c6f636b4368756e6b3c42616c616e63654f663c543e3e2c20543a3a4d6178556e6c6f636b696e674368756e6b730a3e3e001d047c536565205b6050616c6c65743a3a726573746f72655f6c6564676572605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732edd01000002c10100e1010c3473705f61726974686d65746963287065725f7468696e67731c50657263656e740000040008010875380000e5010000021000e901103870616c6c65745f7374616b696e671870616c6c65741870616c6c657420436f6e6669674f700404540118010c104e6f6f700000000c5365740400180104540001001852656d6f766500020000ed01103870616c6c65745f7374616b696e671870616c6c65741870616c6c657420436f6e6669674f700404540110010c104e6f6f700000000c5365740400100104540001001852656d6f766500020000f101103870616c6c65745f7374616b696e671870616c6c65741870616c6c657420436f6e6669674f7004045401e101010c104e6f6f700000000c5365740400e1010104540001001852656d6f766500020000f501103870616c6c65745f7374616b696e671870616c6c65741870616c6c657420436f6e6669674f700404540194010c104e6f6f700000000c5365740400940104540001001852656d6f766500020000f9010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400d10101185665633c543e0000fd0104184f7074696f6e04045401000108104e6f6e6500000010536f6d650400000000010000010204184f7074696f6e04045401180108104e6f6e6500000010536f6d650400180000010000050204184f7074696f6e0404540109020108104e6f6e6500000010536f6d6504000902000001000009020c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454010d02045300000400110201185665633c543e00000d02083870616c6c65745f7374616b696e672c556e6c6f636b4368756e6b041c42616c616e636501180008011476616c7565dc011c42616c616e636500010c657261fc0120457261496e646578000011020000020d020015020c3870616c6c65745f73657373696f6e1870616c6c65741043616c6c040454000108207365745f6b6579730801106b6579731902011c543a3a4b65797300011470726f6f6634011c5665633c75383e00000464536565205b6050616c6c65743a3a7365745f6b657973605d2e2870757267655f6b6579730001046c536565205b6050616c6c65743a3a70757267655f6b657973605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e1902085873746167696e675f6b7573616d615f72756e74696d652c53657373696f6e4b657973000018011c6772616e647061bc01d03c4772616e647061206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300011062616265a10101c43c42616265206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000138706172615f76616c696461746f721d0201e03c496e697469616c697a6572206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300013c706172615f61737369676e6d656e74210201f03c5061726153657373696f6e496e666f206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300014c617574686f726974795f646973636f76657279250201fc3c417574686f72697479446973636f76657279206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c69630001146265656679290201c83c4265656679206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300001d02104c706f6c6b61646f745f7072696d6974697665730876363476616c696461746f725f617070185075626c696300000400cc013c737232353531393a3a5075626c696300002102104c706f6c6b61646f745f7072696d6974697665730876363861737369676e6d656e745f617070185075626c696300000400cc013c737232353531393a3a5075626c6963000025020c5873705f617574686f726974795f646973636f766572790c617070185075626c696300000400cc013c737232353531393a3a5075626c6963000029020c4873705f636f6e73656e7375735f62656566793065636473615f63727970746f185075626c6963000004002d02013465636473613a3a5075626c696300002d020c1c73705f636f7265146563647361185075626c696300000400310201805b75383b205055424c49435f4b45595f53455249414c495a45445f53495a455d0000310200000321000000080035020c3870616c6c65745f6772616e6470611870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66390201c8426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20426c6f636b4e756d626572466f723c543e3e3e00013c6b65795f6f776e65725f70726f6f66a9010140543a3a4b65794f776e657250726f6f6600000490536565205b6050616c6c65743a3a7265706f72745f65717569766f636174696f6e605d2e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66390201c8426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20426c6f636b4e756d626572466f723c543e3e3e00013c6b65795f6f776e65725f70726f6f66a9010140543a3a4b65794f776e657250726f6f66000104b4536565205b6050616c6c65743a3a7265706f72745f65717569766f636174696f6e5f756e7369676e6564605d2e306e6f74655f7374616c6c656408011464656c6179100144426c6f636b4e756d626572466f723c543e00016c626573745f66696e616c697a65645f626c6f636b5f6e756d626572100144426c6f636b4e756d626572466f723c543e00020474536565205b6050616c6c65743a3a6e6f74655f7374616c6c6564605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e3902085073705f636f6e73656e7375735f6772616e6470614445717569766f636174696f6e50726f6f660804480130044e0110000801187365745f69642c0114536574496400013065717569766f636174696f6e3d02014845717569766f636174696f6e3c482c204e3e00003d02085073705f636f6e73656e7375735f6772616e6470613045717569766f636174696f6e0804480130044e011001081c507265766f7465040041020139016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265766f74653c482c204e3e2c0a417574686f726974795369676e61747572653e00000024507265636f6d6d6974040059020141016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265636f6d6d69743c482c204e3e2c0a417574686f726974795369676e61747572653e000100004102084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401bc0456014502045301490200100130726f756e645f6e756d6265722c010c7536340001206964656e74697479bc0108496400011466697273745502011828562c2053290001187365636f6e645502011828562c20532900004502084066696e616c6974795f6772616e6470611c507265766f74650804480130044e01100008012c7461726765745f68617368300104480001347461726765745f6e756d6265721001044e000049020c5073705f636f6e73656e7375735f6772616e6470610c617070245369676e6174757265000004004d020148656432353531393a3a5369676e617475726500004d020c1c73705f636f72651c65643235353139245369676e617475726500000400510201205b75383b2036345d0000510200000340000000080055020000040845024902005902084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401bc0456015d02045301490200100130726f756e645f6e756d6265722c010c7536340001206964656e74697479bc0108496400011466697273746102011828562c2053290001187365636f6e646102011828562c20532900005d02084066696e616c6974795f6772616e64706124507265636f6d6d69740804480130044e01100008012c7461726765745f68617368300104480001347461726765745f6e756d6265721001044e00006102000004085d0249020065020c3c70616c6c65745f74726561737572791870616c6c65741043616c6c0804540004490001243470726f706f73655f7370656e6408011476616c7565dc013c42616c616e63654f663c542c20493e00012c62656e6566696369617279c10101504163636f756e7449644c6f6f6b75704f663c543e00000478536565205b6050616c6c65743a3a70726f706f73655f7370656e64605d2e3c72656a6563745f70726f706f73616c04012c70726f706f73616c5f6964fc013450726f706f73616c496e64657800010480536565205b6050616c6c65743a3a72656a6563745f70726f706f73616c605d2e40617070726f76655f70726f706f73616c04012c70726f706f73616c5f6964fc013450726f706f73616c496e64657800020484536565205b6050616c6c65743a3a617070726f76655f70726f706f73616c605d2e2c7370656e645f6c6f63616c080118616d6f756e74dc013c42616c616e63654f663c542c20493e00012c62656e6566696369617279c10101504163636f756e7449644c6f6f6b75704f663c543e00030470536565205b6050616c6c65743a3a7370656e645f6c6f63616c605d2e3c72656d6f76655f617070726f76616c04012c70726f706f73616c5f6964fc013450726f706f73616c496e64657800040480536565205b6050616c6c65743a3a72656d6f76655f617070726f76616c605d2e147370656e6410012861737365745f6b696e64ec0144426f783c543a3a41737365744b696e643e000118616d6f756e74dc0150417373657442616c616e63654f663c542c20493e00012c62656e656669636961727951010178426f783c42656e65666963696172794c6f6f6b75704f663c542c20493e3e00012876616c69645f66726f6d690201644f7074696f6e3c426c6f636b4e756d626572466f723c543e3e00050458536565205b6050616c6c65743a3a7370656e64605d2e187061796f7574040114696e6465781001285370656e64496e6465780006045c536565205b6050616c6c65743a3a7061796f7574605d2e30636865636b5f737461747573040114696e6465781001285370656e64496e64657800070474536565205b6050616c6c65743a3a636865636b5f737461747573605d2e28766f69645f7370656e64040114696e6465781001285370656e64496e6465780008046c536565205b6050616c6c65743a3a766f69645f7370656e64605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e690204184f7074696f6e04045401100108104e6f6e6500000010536f6d6504001000000100006d020c6070616c6c65745f636f6e76696374696f6e5f766f74696e671870616c6c65741043616c6c08045400044900011810766f7465080128706f6c6c5f696e646578fc0144506f6c6c496e6465784f663c542c20493e000110766f7465710201704163636f756e74566f74653c42616c616e63654f663c542c20493e3e00000454536565205b6050616c6c65743a3a766f7465605d2e2064656c6567617465100114636c61737379010134436c6173734f663c542c20493e000108746fc10101504163636f756e7449644c6f6f6b75704f663c543e000128636f6e76696374696f6e79020128436f6e76696374696f6e00011c62616c616e636518013c42616c616e63654f663c542c20493e00010464536565205b6050616c6c65743a3a64656c6567617465605d2e28756e64656c6567617465040114636c61737379010134436c6173734f663c542c20493e0002046c536565205b6050616c6c65743a3a756e64656c6567617465605d2e18756e6c6f636b080114636c61737379010134436c6173734f663c542c20493e000118746172676574c10101504163636f756e7449644c6f6f6b75704f663c543e0003045c536565205b6050616c6c65743a3a756e6c6f636b605d2e2c72656d6f76655f766f7465080114636c6173737d0201544f7074696f6e3c436c6173734f663c542c20493e3e000114696e646578100144506f6c6c496e6465784f663c542c20493e00040470536565205b6050616c6c65743a3a72656d6f76655f766f7465605d2e4472656d6f76655f6f746865725f766f74650c0118746172676574c10101504163636f756e7449644c6f6f6b75704f663c543e000114636c61737379010134436c6173734f663c542c20493e000114696e646578100144506f6c6c496e6465784f663c542c20493e00050488536565205b6050616c6c65743a3a72656d6f76655f6f746865725f766f7465605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e71020c6070616c6c65745f636f6e76696374696f6e5f766f74696e6710766f74652c4163636f756e74566f7465041c42616c616e63650118010c205374616e64617264080110766f746575020110566f746500011c62616c616e636518011c42616c616e63650000001453706c697408010c61796518011c42616c616e636500010c6e617918011c42616c616e63650001003053706c69744162737461696e0c010c61796518011c42616c616e636500010c6e617918011c42616c616e636500011c6162737461696e18011c42616c616e63650002000075020c6070616c6c65745f636f6e76696374696f6e5f766f74696e6710766f746510566f7465000004000800000079020c6070616c6c65745f636f6e76696374696f6e5f766f74696e6728636f6e76696374696f6e28436f6e76696374696f6e00011c104e6f6e65000000204c6f636b65643178000100204c6f636b65643278000200204c6f636b65643378000300204c6f636b65643478000400204c6f636b65643578000500204c6f636b65643678000600007d0204184f7074696f6e0404540179010108104e6f6e6500000010536f6d6504007901000001000081020c4070616c6c65745f7265666572656e64611870616c6c65741043616c6c080454000449000124187375626d69740c013c70726f706f73616c5f6f726967696e8502015c426f783c50616c6c6574734f726967696e4f663c543e3e00012070726f706f73616c7d01014c426f756e64656443616c6c4f663c542c20493e000140656e6163746d656e745f6d6f6d656e74a102017c446973706174636854696d653c426c6f636b4e756d626572466f723c543e3e0000045c536565205b6050616c6c65743a3a7375626d6974605d2e58706c6163655f6465636973696f6e5f6465706f736974040114696e64657810013c5265666572656e64756d496e6465780001049c536565205b6050616c6c65743a3a706c6163655f6465636973696f6e5f6465706f736974605d2e5c726566756e645f6465636973696f6e5f6465706f736974040114696e64657810013c5265666572656e64756d496e646578000204a0536565205b6050616c6c65743a3a726566756e645f6465636973696f6e5f6465706f736974605d2e1863616e63656c040114696e64657810013c5265666572656e64756d496e6465780003045c536565205b6050616c6c65743a3a63616e63656c605d2e106b696c6c040114696e64657810013c5265666572656e64756d496e64657800040454536565205b6050616c6c65743a3a6b696c6c605d2e406e756467655f7265666572656e64756d040114696e64657810013c5265666572656e64756d496e64657800050484536565205b6050616c6c65743a3a6e756467655f7265666572656e64756d605d2e486f6e655f66657765725f6465636964696e67040114747261636b7901013c547261636b49644f663c542c20493e0006048c536565205b6050616c6c65743a3a6f6e655f66657765725f6465636964696e67605d2e64726566756e645f7375626d697373696f6e5f6465706f736974040114696e64657810013c5265666572656e64756d496e646578000704a8536565205b6050616c6c65743a3a726566756e645f7375626d697373696f6e5f6465706f736974605d2e307365745f6d65746164617461080114696e64657810013c5265666572656e64756d496e6465780001286d617962655f68617368a502013c4f7074696f6e3c543a3a486173683e00080474536565205b6050616c6c65743a3a7365745f6d65746164617461605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e8502085873746167696e675f6b7573616d615f72756e74696d65304f726967696e43616c6c65720001141873797374656d0400890201746672616d655f73797374656d3a3a4f726967696e3c52756e74696d653e0000001c4f726967696e7304008d02017470616c6c65745f637573746f6d5f6f726967696e733a3a4f726967696e002b004050617261636861696e734f726967696e04009102016470617261636861696e735f6f726967696e3a3a4f726967696e0032002458636d50616c6c657404009902014870616c6c65745f78636d3a3a4f726967696e00630010566f696404009d0201410173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a0a5f5f707269766174653a3a566f69640004000089020c346672616d655f737570706f7274206469737061746368245261774f726967696e04244163636f756e7449640100010c10526f6f74000000185369676e656404000001244163636f756e744964000100104e6f6e65000200008d02145873746167696e675f6b7573616d615f72756e74696d6528676f7665726e616e63651c6f726967696e735470616c6c65745f637573746f6d5f6f726967696e73184f726967696e000170305374616b696e6741646d696e000000245472656173757265720001003c46656c6c6f777368697041646d696e0002003047656e6572616c41646d696e0003003041756374696f6e41646d696e000400284c6561736541646d696e0005004c5265666572656e64756d43616e63656c6c6572000600405265666572656e64756d4b696c6c65720007002c536d616c6c5469707065720008002442696754697070657200090030536d616c6c5370656e646572000a00344d656469756d5370656e646572000b00284269675370656e646572000c004457686974656c697374656443616c6c6572000d004c46656c6c6f7773686970496e69746961746573000e001c46656c6c6f7773000f004446656c6c6f7773686970457870657274730010004446656c6c6f77736869704d6173746572730011003846656c6c6f77736869703144616e0012003846656c6c6f77736869703244616e0013003846656c6c6f77736869703344616e0014003846656c6c6f77736869703444616e0015003846656c6c6f77736869703544616e0016003846656c6c6f77736869703644616e0017003846656c6c6f77736869703744616e0018003846656c6c6f77736869703844616e0019003846656c6c6f77736869703944616e001a003457697368466f724368616e6765001b00009102106c706f6c6b61646f745f72756e74696d655f70617261636861696e73186f726967696e1870616c6c6574184f726967696e0001042450617261636861696e0400950201185061726149640000000095020c74706f6c6b61646f745f70617261636861696e5f7072696d697469766573287072696d6974697665730849640000040010010c753332000099020c2870616c6c65745f78636d1870616c6c6574184f726967696e0001080c58636d0400190101204c6f636174696f6e00000020526573706f6e73650400190101204c6f636174696f6e000100009d02081c73705f636f726510566f696400010000a10210346672616d655f737570706f727418747261697473207363686564756c6530446973706174636854696d65042c426c6f636b4e756d62657201100108084174040010012c426c6f636b4e756d626572000000144166746572040010012c426c6f636b4e756d62657200010000a50204184f7074696f6e04045401300108104e6f6e6500000010536f6d650400300000010000a9020c6070616c6c65745f72616e6b65645f636f6c6c6563746976651870616c6c65741043616c6c08045400044900011c286164645f6d656d62657204010c77686fc10101504163636f756e7449644c6f6f6b75704f663c543e0000046c536565205b6050616c6c65743a3a6164645f6d656d626572605d2e3870726f6d6f74655f6d656d62657204010c77686fc10101504163636f756e7449644c6f6f6b75704f663c543e0001047c536565205b6050616c6c65743a3a70726f6d6f74655f6d656d626572605d2e3464656d6f74655f6d656d62657204010c77686fc10101504163636f756e7449644c6f6f6b75704f663c543e00020478536565205b6050616c6c65743a3a64656d6f74655f6d656d626572605d2e3472656d6f76655f6d656d62657208010c77686fc10101504163636f756e7449644c6f6f6b75704f663c543e0001206d696e5f72616e6b7901011052616e6b00030478536565205b6050616c6c65743a3a72656d6f76655f6d656d626572605d2e10766f7465080110706f6c6c100144506f6c6c496e6465784f663c542c20493e00010c617965780110626f6f6c00040454536565205b6050616c6c65743a3a766f7465605d2e30636c65616e75705f706f6c6c080128706f6c6c5f696e646578100144506f6c6c496e6465784f663c542c20493e00010c6d617810010c75333200050474536565205b6050616c6c65743a3a636c65616e75705f706f6c6c605d2e3c65786368616e67655f6d656d62657208010c77686fc10101504163636f756e7449644c6f6f6b75704f663c543e00011c6e65775f77686fc10101504163636f756e7449644c6f6f6b75704f663c543e00060480536565205b6050616c6c65743a3a65786368616e67655f6d656d626572605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ead020c4070616c6c65745f7265666572656e64611870616c6c65741043616c6c080454000449000124187375626d69740c013c70726f706f73616c5f6f726967696e8502015c426f783c50616c6c6574734f726967696e4f663c543e3e00012070726f706f73616c7d01014c426f756e64656443616c6c4f663c542c20493e000140656e6163746d656e745f6d6f6d656e74a102017c446973706174636854696d653c426c6f636b4e756d626572466f723c543e3e0000045c536565205b6050616c6c65743a3a7375626d6974605d2e58706c6163655f6465636973696f6e5f6465706f736974040114696e64657810013c5265666572656e64756d496e6465780001049c536565205b6050616c6c65743a3a706c6163655f6465636973696f6e5f6465706f736974605d2e5c726566756e645f6465636973696f6e5f6465706f736974040114696e64657810013c5265666572656e64756d496e646578000204a0536565205b6050616c6c65743a3a726566756e645f6465636973696f6e5f6465706f736974605d2e1863616e63656c040114696e64657810013c5265666572656e64756d496e6465780003045c536565205b6050616c6c65743a3a63616e63656c605d2e106b696c6c040114696e64657810013c5265666572656e64756d496e64657800040454536565205b6050616c6c65743a3a6b696c6c605d2e406e756467655f7265666572656e64756d040114696e64657810013c5265666572656e64756d496e64657800050484536565205b6050616c6c65743a3a6e756467655f7265666572656e64756d605d2e486f6e655f66657765725f6465636964696e67040114747261636b7901013c547261636b49644f663c542c20493e0006048c536565205b6050616c6c65743a3a6f6e655f66657765725f6465636964696e67605d2e64726566756e645f7375626d697373696f6e5f6465706f736974040114696e64657810013c5265666572656e64756d496e646578000704a8536565205b6050616c6c65743a3a726566756e645f7375626d697373696f6e5f6465706f736974605d2e307365745f6d65746164617461080114696e64657810013c5265666572656e64756d496e6465780001286d617962655f68617368a502013c4f7074696f6e3c543a3a486173683e00080474536565205b6050616c6c65743a3a7365745f6d65746164617461605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732eb1020c4070616c6c65745f77686974656c6973741870616c6c65741043616c6c0404540001103877686974656c6973745f63616c6c04012463616c6c5f6861736830011c543a3a486173680000047c536565205b6050616c6c65743a3a77686974656c6973745f63616c6c605d2e5c72656d6f76655f77686974656c69737465645f63616c6c04012463616c6c5f6861736830011c543a3a48617368000104a0536565205b6050616c6c65743a3a72656d6f76655f77686974656c69737465645f63616c6c605d2e6464697370617463685f77686974656c69737465645f63616c6c0c012463616c6c5f6861736830011c543a3a4861736800014063616c6c5f656e636f6465645f6c656e10010c75333200014c63616c6c5f7765696768745f7769746e657373240118576569676874000204a8536565205b6050616c6c65743a3a64697370617463685f77686974656c69737465645f63616c6c605d2e9c64697370617463685f77686974656c69737465645f63616c6c5f776974685f707265696d61676504011063616c6c8101017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000304e0536565205b6050616c6c65743a3a64697370617463685f77686974656c69737465645f63616c6c5f776974685f707265696d616765605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732eb502105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e18636c61696d731870616c6c65741043616c6c04045400011414636c61696d08011064657374000130543a3a4163636f756e744964000148657468657265756d5f7369676e6174757265b902013845636473615369676e617475726500000458536565205b6050616c6c65743a3a636c61696d605d2e286d696e745f636c61696d10010c77686fc102013c457468657265756d4164647265737300011476616c756518013042616c616e63654f663c543e00014076657374696e675f7363686564756c65c50201dc4f7074696f6e3c2842616c616e63654f663c543e2c2042616c616e63654f663c543e2c20426c6f636b4e756d626572466f723c543e293e00012473746174656d656e74cd0201544f7074696f6e3c53746174656d656e744b696e643e0001046c536565205b6050616c6c65743a3a6d696e745f636c61696d605d2e30636c61696d5f6174746573740c011064657374000130543a3a4163636f756e744964000148657468657265756d5f7369676e6174757265b902013845636473615369676e617475726500012473746174656d656e7434011c5665633c75383e00020474536565205b6050616c6c65743a3a636c61696d5f617474657374605d2e1861747465737404012473746174656d656e7434011c5665633c75383e0003045c536565205b6050616c6c65743a3a617474657374605d2e286d6f76655f636c61696d0c010c6f6c64c102013c457468657265756d4164647265737300010c6e6577c102013c457468657265756d416464726573730001386d617962655f707265636c61696dfd0101504f7074696f6e3c543a3a4163636f756e7449643e0004046c536565205b6050616c6c65743a3a6d6f76655f636c61696d605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732eb9020c5c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e18636c61696d733845636473615369676e617475726500000400bd0201205b75383b2036355d0000bd02000003410000000800c1020c5c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e18636c61696d733c457468657265756d4164647265737300000400090101205b75383b2032305d0000c50204184f7074696f6e04045401c9020108104e6f6e6500000010536f6d650400c9020000010000c9020000040c18181000cd0204184f7074696f6e04045401d1020108104e6f6e6500000010536f6d650400d1020000010000d1020c5c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e18636c61696d733453746174656d656e744b696e640001081c526567756c6172000000105361667400010000d5020c3870616c6c65745f7574696c6974791870616c6c65741043616c6c04045400011814626174636804011463616c6c73d902017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00000458536565205b6050616c6c65743a3a6261746368605d2e3461735f64657269766174697665080114696e6465787901010c75313600011063616c6c8101017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00010478536565205b6050616c6c65743a3a61735f64657269766174697665605d2e2462617463685f616c6c04011463616c6c73d902017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00020468536565205b6050616c6c65743a3a62617463685f616c6c605d2e2c64697370617463685f617308012461735f6f726967696e85020154426f783c543a3a50616c6c6574734f726967696e3e00011063616c6c8101017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00030470536565205b6050616c6c65743a3a64697370617463685f6173605d2e2c666f7263655f626174636804011463616c6c73d902017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00040470536565205b6050616c6c65743a3a666f7263655f6261746368605d2e2c776974685f77656967687408011063616c6c8101017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00011877656967687424011857656967687400050470536565205b6050616c6c65743a3a776974685f776569676874605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ed902000002810100dd020c3c70616c6c65745f6964656e746974791870616c6c65741043616c6c040454000158346164645f72656769737472617204011c6163636f756e74c10101504163636f756e7449644c6f6f6b75704f663c543e00000478536565205b6050616c6c65743a3a6164645f726567697374726172605d2e307365745f6964656e74697479040110696e666fe102016c426f783c543a3a4964656e74697479496e666f726d6174696f6e3e00010474536565205b6050616c6c65743a3a7365745f6964656e74697479605d2e207365745f73756273040110737562736d0301645665633c28543a3a4163636f756e7449642c2044617461293e00020464536565205b6050616c6c65743a3a7365745f73756273605d2e38636c6561725f6964656e746974790003047c536565205b6050616c6c65743a3a636c6561725f6964656e74697479605d2e44726571756573745f6a756467656d656e740801247265675f696e646578fc0138526567697374726172496e64657800011c6d61785f666565dc013042616c616e63654f663c543e00040488536565205b6050616c6c65743a3a726571756573745f6a756467656d656e74605d2e3863616e63656c5f726571756573740401247265675f696e646578100138526567697374726172496e6465780005047c536565205b6050616c6c65743a3a63616e63656c5f72657175657374605d2e1c7365745f666565080114696e646578fc0138526567697374726172496e64657800010c666565dc013042616c616e63654f663c543e00060460536565205b6050616c6c65743a3a7365745f666565605d2e387365745f6163636f756e745f6964080114696e646578fc0138526567697374726172496e64657800010c6e6577c10101504163636f756e7449644c6f6f6b75704f663c543e0007047c536565205b6050616c6c65743a3a7365745f6163636f756e745f6964605d2e287365745f6669656c6473080114696e646578fc0138526567697374726172496e6465780001186669656c64732c0129013c543a3a4964656e74697479496e666f726d6174696f6e206173204964656e74697479496e666f726d6174696f6e50726f76696465723e3a3a0a4669656c64734964656e7469666965720008046c536565205b6050616c6c65743a3a7365745f6669656c6473605d2e4470726f766964655f6a756467656d656e741001247265675f696e646578fc0138526567697374726172496e646578000118746172676574c10101504163636f756e7449644c6f6f6b75704f663c543e0001246a756467656d656e747503015c4a756467656d656e743c42616c616e63654f663c543e3e0001206964656e7469747930011c543a3a4861736800090488536565205b6050616c6c65743a3a70726f766964655f6a756467656d656e74605d2e346b696c6c5f6964656e74697479040118746172676574c10101504163636f756e7449644c6f6f6b75704f663c543e000a0478536565205b6050616c6c65743a3a6b696c6c5f6964656e74697479605d2e1c6164645f73756208010c737562c10101504163636f756e7449644c6f6f6b75704f663c543e00011064617461ed02011044617461000b0460536565205b6050616c6c65743a3a6164645f737562605d2e2872656e616d655f73756208010c737562c10101504163636f756e7449644c6f6f6b75704f663c543e00011064617461ed02011044617461000c046c536565205b6050616c6c65743a3a72656e616d655f737562605d2e2872656d6f76655f73756204010c737562c10101504163636f756e7449644c6f6f6b75704f663c543e000d046c536565205b6050616c6c65743a3a72656d6f76655f737562605d2e20717569745f737562000e0464536565205b6050616c6c65743a3a717569745f737562605d2e586164645f757365726e616d655f617574686f726974790c0124617574686f72697479c10101504163636f756e7449644c6f6f6b75704f663c543e00011873756666697834011c5665633c75383e000128616c6c6f636174696f6e10010c753332000f049c536565205b6050616c6c65743a3a6164645f757365726e616d655f617574686f72697479605d2e6472656d6f76655f757365726e616d655f617574686f72697479040124617574686f72697479c10101504163636f756e7449644c6f6f6b75704f663c543e001004a8536565205b6050616c6c65743a3a72656d6f76655f757365726e616d655f617574686f72697479605d2e407365745f757365726e616d655f666f720c010c77686fc10101504163636f756e7449644c6f6f6b75704f663c543e000120757365726e616d6534011c5665633c75383e0001247369676e6174757265790301704f7074696f6e3c543a3a4f6666636861696e5369676e61747572653e00110484536565205b6050616c6c65743a3a7365745f757365726e616d655f666f72605d2e3c6163636570745f757365726e616d65040120757365726e616d658903012c557365726e616d653c543e00120480536565205b6050616c6c65743a3a6163636570745f757365726e616d65605d2e5c72656d6f76655f657870697265645f617070726f76616c040120757365726e616d658903012c557365726e616d653c543e001304a0536565205b6050616c6c65743a3a72656d6f76655f657870697265645f617070726f76616c605d2e507365745f7072696d6172795f757365726e616d65040120757365726e616d658903012c557365726e616d653c543e00140494536565205b6050616c6c65743a3a7365745f7072696d6172795f757365726e616d65605d2e6072656d6f76655f64616e676c696e675f757365726e616d65040120757365726e616d658903012c557365726e616d653c543e001504a4536565205b6050616c6c65743a3a72656d6f76655f64616e676c696e675f757365726e616d65605d2e04704964656e746974792070616c6c6574206465636c61726174696f6e2ee1020c3c70616c6c65745f6964656e74697479186c6567616379304964656e74697479496e666f04284669656c644c696d697400002401286164646974696f6e616ce5020190426f756e6465645665633c28446174612c2044617461292c204669656c644c696d69743e00011c646973706c6179ed020110446174610001146c6567616ced0201104461746100010c776562ed0201104461746100011072696f74ed02011044617461000114656d61696ced0201104461746100013c7067705f66696e6765727072696e74690301404f7074696f6e3c5b75383b2032305d3e000114696d616765ed0201104461746100011c74776974746572ed020110446174610000e5020c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401e902045300000400650301185665633c543e0000e90200000408ed02ed0200ed020c3c70616c6c65745f6964656e746974791474797065731044617461000198104e6f6e6500000010526177300400f1020000010010526177310400f5020000020010526177320400f9020000030010526177330400fd0200000400105261773404004400000500105261773504000103000006001052617736040005030000070010526177370400090300000800105261773804000d030000090010526177390400110300000a001452617731300400150300000b001452617731310400190300000c0014526177313204001d0300000d001452617731330400210300000e001452617731340400250300000f0014526177313504002903000010001452617731360400a80000110014526177313704002d0300001200145261773138040031030000130014526177313904003503000014001452617732300400090100001500145261773231040039030000160014526177323204003d0300001700145261773233040041030000180014526177323404004503000019001452617732350400490300001a0014526177323604004d0300001b001452617732370400510300001c001452617732380400550300001d001452617732390400590300001e0014526177333004005d0300001f001452617733310400610300002000145261773332040004000021002c426c616b6554776f323536040004000022001853686132353604000400002300244b656363616b323536040004000024002c53686154687265653235360400040000250000f102000003000000000800f502000003010000000800f902000003020000000800fd020000030300000008000103000003050000000800050300000306000000080009030000030700000008000d03000003080000000800110300000309000000080015030000030a000000080019030000030b00000008001d030000030c000000080021030000030d000000080025030000030e000000080029030000030f00000008002d030000031100000008003103000003120000000800350300000313000000080039030000031500000008003d030000031600000008004103000003170000000800450300000318000000080049030000031900000008004d030000031a000000080051030000031b000000080055030000031c000000080059030000031d00000008005d030000031e000000080061030000031f00000008006503000002e90200690304184f7074696f6e0404540109010108104e6f6e6500000010536f6d650400090100000100006d0300000271030071030000040800ed020075030c3c70616c6c65745f6964656e74697479147479706573244a756467656d656e74041c42616c616e63650118011c1c556e6b6e6f776e0000001c46656550616964040018011c42616c616e636500010028526561736f6e61626c65000200244b6e6f776e476f6f64000300244f75744f6644617465000400284c6f775175616c697479000500244572726f6e656f757300060000790304184f7074696f6e040454017d030108104e6f6e6500000010536f6d6504007d0300000100007d03082873705f72756e74696d65384d756c74695369676e617475726500010c1c4564323535313904004d020148656432353531393a3a5369676e61747572650000001c53723235353139040081030148737232353531393a3a5369676e617475726500010014456364736104008503014065636473613a3a5369676e61747572650002000081030c1c73705f636f72651c73723235353139245369676e617475726500000400510201205b75383b2036345d000085030c1c73705f636f7265146563647361245369676e617475726500000400bd02017c5b75383b205349474e41545552455f53455249414c495a45445f53495a455d000089030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e00008d030c3870616c6c65745f736f63696574791870616c6c65741043616c6c0804540004490001500c62696404011476616c756518013c42616c616e63654f663c542c20493e00000450536565205b6050616c6c65743a3a626964605d2e14756e62696400010458536565205b6050616c6c65743a3a756e626964605d2e14766f7563680c010c77686fc10101504163636f756e7449644c6f6f6b75704f663c543e00011476616c756518013c42616c616e63654f663c542c20493e00010c74697018013c42616c616e63654f663c542c20493e00020458536565205b6050616c6c65743a3a766f756368605d2e1c756e766f75636800030460536565205b6050616c6c65743a3a756e766f756368605d2e10766f746508012463616e646964617465c10101504163636f756e7449644c6f6f6b75704f663c543e00011c617070726f7665780110626f6f6c00040454536565205b6050616c6c65743a3a766f7465605d2e34646566656e6465725f766f746504011c617070726f7665780110626f6f6c00050478536565205b6050616c6c65743a3a646566656e6465725f766f7465605d2e187061796f75740006045c536565205b6050616c6c65743a3a7061796f7574605d2e2c77616976655f7265706179040118616d6f756e7418013c42616c616e63654f663c542c20493e00070470536565205b6050616c6c65743a3a77616976655f7265706179605d2e34666f756e645f736f636965747918011c666f756e646572c10101504163636f756e7449644c6f6f6b75704f663c543e00012c6d61785f6d656d6265727310010c7533320001286d61785f696e74616b6510010c75333200012c6d61785f737472696b657310010c75333200014463616e6469646174655f6465706f73697418013c42616c616e63654f663c542c20493e00011472756c657334011c5665633c75383e00080478536565205b6050616c6c65743a3a666f756e645f736f6369657479605d2e20646973736f6c766500090464536565205b6050616c6c65743a3a646973736f6c7665605d2e586a756467655f73757370656e6465645f6d656d62657208010c77686fc10101504163636f756e7449644c6f6f6b75704f663c543e00011c666f7267697665780110626f6f6c000a049c536565205b6050616c6c65743a3a6a756467655f73757370656e6465645f6d656d626572605d2e387365745f706172616d657465727310012c6d61785f6d656d6265727310010c7533320001286d61785f696e74616b6510010c75333200012c6d61785f737472696b657310010c75333200014463616e6469646174655f6465706f73697418013c42616c616e63654f663c542c20493e000b047c536565205b6050616c6c65743a3a7365745f706172616d6574657273605d2e3870756e6973685f736b6570746963000c047c536565205b6050616c6c65743a3a70756e6973685f736b6570746963605d2e40636c61696d5f6d656d62657273686970000d0484536565205b6050616c6c65743a3a636c61696d5f6d656d62657273686970605d2e44626573746f775f6d656d6265727368697004012463616e646964617465000130543a3a4163636f756e744964000e0488536565205b6050616c6c65743a3a626573746f775f6d656d62657273686970605d2e386b69636b5f63616e64696461746504012463616e646964617465000130543a3a4163636f756e744964000f047c536565205b6050616c6c65743a3a6b69636b5f63616e646964617465605d2e4072657369676e5f63616e64696461637900100484536565205b6050616c6c65743a3a72657369676e5f63616e646964616379605d2e3864726f705f63616e64696461746504012463616e646964617465000130543a3a4163636f756e7449640011047c536565205b6050616c6c65743a3a64726f705f63616e646964617465605d2e44636c65616e75705f63616e64696461637908012463616e646964617465000130543a3a4163636f756e74496400010c6d617810010c75333200120488536565205b6050616c6c65743a3a636c65616e75705f63616e646964616379605d2e44636c65616e75705f6368616c6c656e676508013c6368616c6c656e67655f726f756e64100128526f756e64496e64657800010c6d617810010c75333200130488536565205b6050616c6c65743a3a636c65616e75705f6368616c6c656e6765605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e91030c3c70616c6c65745f7265636f766572791870616c6c65741043616c6c0404540001243061735f7265636f766572656408011c6163636f756e74c10101504163636f756e7449644c6f6f6b75704f663c543e00011063616c6c8101017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00000474536565205b6050616c6c65743a3a61735f7265636f7665726564605d2e347365745f7265636f76657265640801106c6f7374c10101504163636f756e7449644c6f6f6b75704f663c543e00011c72657363756572c10101504163636f756e7449644c6f6f6b75704f663c543e00010478536565205b6050616c6c65743a3a7365745f7265636f7665726564605d2e3c6372656174655f7265636f766572790c011c667269656e6473d10101445665633c543a3a4163636f756e7449643e0001247468726573686f6c647901010c75313600013064656c61795f706572696f64100144426c6f636b4e756d626572466f723c543e00020480536565205b6050616c6c65743a3a6372656174655f7265636f76657279605d2e44696e6974696174655f7265636f7665727904011c6163636f756e74c10101504163636f756e7449644c6f6f6b75704f663c543e00030488536565205b6050616c6c65743a3a696e6974696174655f7265636f76657279605d2e38766f7563685f7265636f766572790801106c6f7374c10101504163636f756e7449644c6f6f6b75704f663c543e00011c72657363756572c10101504163636f756e7449644c6f6f6b75704f663c543e0004047c536565205b6050616c6c65743a3a766f7563685f7265636f76657279605d2e38636c61696d5f7265636f7665727904011c6163636f756e74c10101504163636f756e7449644c6f6f6b75704f663c543e0005047c536565205b6050616c6c65743a3a636c61696d5f7265636f76657279605d2e38636c6f73655f7265636f7665727904011c72657363756572c10101504163636f756e7449644c6f6f6b75704f663c543e0006047c536565205b6050616c6c65743a3a636c6f73655f7265636f76657279605d2e3c72656d6f76655f7265636f7665727900070480536565205b6050616c6c65743a3a72656d6f76655f7265636f76657279605d2e4063616e63656c5f7265636f766572656404011c6163636f756e74c10101504163636f756e7449644c6f6f6b75704f663c543e00080484536565205b6050616c6c65743a3a63616e63656c5f7265636f7665726564605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e95030c3870616c6c65745f76657374696e671870616c6c65741043616c6c040454000118107665737400000454536565205b6050616c6c65743a3a76657374605d2e28766573745f6f74686572040118746172676574c10101504163636f756e7449644c6f6f6b75704f663c543e0001046c536565205b6050616c6c65743a3a766573745f6f74686572605d2e3c7665737465645f7472616e73666572080118746172676574c10101504163636f756e7449644c6f6f6b75704f663c543e0001207363686564756c65990301b056657374696e67496e666f3c42616c616e63654f663c543e2c20426c6f636b4e756d626572466f723c543e3e00020480536565205b6050616c6c65743a3a7665737465645f7472616e73666572605d2e54666f7263655f7665737465645f7472616e736665720c0118736f75726365c10101504163636f756e7449644c6f6f6b75704f663c543e000118746172676574c10101504163636f756e7449644c6f6f6b75704f663c543e0001207363686564756c65990301b056657374696e67496e666f3c42616c616e63654f663c543e2c20426c6f636b4e756d626572466f723c543e3e00030498536565205b6050616c6c65743a3a666f7263655f7665737465645f7472616e73666572605d2e3c6d657267655f7363686564756c657308013c7363686564756c65315f696e64657810010c75333200013c7363686564756c65325f696e64657810010c75333200040480536565205b6050616c6c65743a3a6d657267655f7363686564756c6573605d2e74666f7263655f72656d6f76655f76657374696e675f7363686564756c65080118746172676574c101018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650001387363686564756c655f696e64657810010c753332000504b8536565205b6050616c6c65743a3a666f7263655f72656d6f76655f76657374696e675f7363686564756c65605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e99030c3870616c6c65745f76657374696e673076657374696e675f696e666f2c56657374696e67496e666f081c42616c616e636501182c426c6f636b4e756d6265720110000c01186c6f636b656418011c42616c616e63650001247065725f626c6f636b18011c42616c616e63650001387374617274696e675f626c6f636b10012c426c6f636b4e756d62657200009d030c4070616c6c65745f7363686564756c65721870616c6c65741043616c6c040454000118207363686564756c651001107768656e100144426c6f636b4e756d626572466f723c543e0001386d617962655f706572696f646963a10301ac4f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d626572466f723c543e3e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c8101017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00000464536565205b6050616c6c65743a3a7363686564756c65605d2e1863616e63656c0801107768656e100144426c6f636b4e756d626572466f723c543e000114696e64657810010c7533320001045c536565205b6050616c6c65743a3a63616e63656c605d2e387363686564756c655f6e616d656414010869640401205461736b4e616d650001107768656e100144426c6f636b4e756d626572466f723c543e0001386d617962655f706572696f646963a10301ac4f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d626572466f723c543e3e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c8101017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0002047c536565205b6050616c6c65743a3a7363686564756c655f6e616d6564605d2e3063616e63656c5f6e616d656404010869640401205461736b4e616d6500030474536565205b6050616c6c65743a3a63616e63656c5f6e616d6564605d2e387363686564756c655f61667465721001146166746572100144426c6f636b4e756d626572466f723c543e0001386d617962655f706572696f646963a10301ac4f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d626572466f723c543e3e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c8101017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0004047c536565205b6050616c6c65743a3a7363686564756c655f6166746572605d2e507363686564756c655f6e616d65645f616674657214010869640401205461736b4e616d650001146166746572100144426c6f636b4e756d626572466f723c543e0001386d617962655f706572696f646963a10301ac4f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d626572466f723c543e3e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c8101017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00050494536565205b6050616c6c65743a3a7363686564756c655f6e616d65645f6166746572605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ea10304184f7074696f6e04045401a5030108104e6f6e6500000010536f6d650400a5030000010000a50300000408101000a9030c3070616c6c65745f70726f78791870616c6c65741043616c6c0404540001281470726f78790c01107265616cc10101504163636f756e7449644c6f6f6b75704f663c543e000140666f7263655f70726f78795f74797065ad0301504f7074696f6e3c543a3a50726f7879547970653e00011063616c6c8101017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00000458536565205b6050616c6c65743a3a70726f7879605d2e246164645f70726f78790c012064656c6567617465c10101504163636f756e7449644c6f6f6b75704f663c543e00012870726f78795f74797065b1030130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e00010468536565205b6050616c6c65743a3a6164645f70726f7879605d2e3072656d6f76655f70726f78790c012064656c6567617465c10101504163636f756e7449644c6f6f6b75704f663c543e00012870726f78795f74797065b1030130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e00020474536565205b6050616c6c65743a3a72656d6f76655f70726f7879605d2e3872656d6f76655f70726f786965730003047c536565205b6050616c6c65743a3a72656d6f76655f70726f78696573605d2e2c6372656174655f707572650c012870726f78795f74797065b1030130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e000114696e6465787901010c75313600040470536565205b6050616c6c65743a3a6372656174655f70757265605d2e246b696c6c5f7075726514011c737061776e6572c10101504163636f756e7449644c6f6f6b75704f663c543e00012870726f78795f74797065b1030130543a3a50726f787954797065000114696e6465787901010c753136000118686569676874fc0144426c6f636b4e756d626572466f723c543e0001246578745f696e646578fc010c75333200050468536565205b6050616c6c65743a3a6b696c6c5f70757265605d2e20616e6e6f756e63650801107265616cc10101504163636f756e7449644c6f6f6b75704f663c543e00012463616c6c5f6861736830013443616c6c486173684f663c543e00060464536565205b6050616c6c65743a3a616e6e6f756e6365605d2e4c72656d6f76655f616e6e6f756e63656d656e740801107265616cc10101504163636f756e7449644c6f6f6b75704f663c543e00012463616c6c5f6861736830013443616c6c486173684f663c543e00070490536565205b6050616c6c65743a3a72656d6f76655f616e6e6f756e63656d656e74605d2e4c72656a6563745f616e6e6f756e63656d656e7408012064656c6567617465c10101504163636f756e7449644c6f6f6b75704f663c543e00012463616c6c5f6861736830013443616c6c486173684f663c543e00080490536565205b6050616c6c65743a3a72656a6563745f616e6e6f756e63656d656e74605d2e3c70726f78795f616e6e6f756e63656410012064656c6567617465c10101504163636f756e7449644c6f6f6b75704f663c543e0001107265616cc10101504163636f756e7449644c6f6f6b75704f663c543e000140666f7263655f70726f78795f74797065ad0301504f7074696f6e3c543a3a50726f7879547970653e00011063616c6c8101017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00090480536565205b6050616c6c65743a3a70726f78795f616e6e6f756e636564605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ead0304184f7074696f6e04045401b1030108104e6f6e6500000010536f6d650400b1030000010000b103085873746167696e675f6b7573616d615f72756e74696d652450726f7879547970650001240c416e790000002c4e6f6e5472616e7366657200010028476f7665726e616e63650002001c5374616b696e67000300444964656e746974794a756467656d656e740004002c43616e63656c50726f78790005001c41756374696f6e0006001c536f63696574790007003c4e6f6d696e6174696f6e506f6f6c7300080000b5030c3c70616c6c65745f6d756c74697369671870616c6c65741043616c6c0404540001105061735f6d756c74695f7468726573686f6c645f310801446f746865725f7369676e61746f72696573d10101445665633c543a3a4163636f756e7449643e00011063616c6c8101017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00000494536565205b6050616c6c65743a3a61735f6d756c74695f7468726573686f6c645f31605d2e2061735f6d756c74691401247468726573686f6c647901010c7531360001446f746865725f7369676e61746f72696573d10101445665633c543a3a4163636f756e7449643e00013c6d617962655f74696d65706f696e74b90301904f7074696f6e3c54696d65706f696e743c426c6f636b4e756d626572466f723c543e3e3e00011063616c6c8101017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0001286d61785f77656967687424011857656967687400010464536565205b6050616c6c65743a3a61735f6d756c7469605d2e40617070726f76655f61735f6d756c74691401247468726573686f6c647901010c7531360001446f746865725f7369676e61746f72696573d10101445665633c543a3a4163636f756e7449643e00013c6d617962655f74696d65706f696e74b90301904f7074696f6e3c54696d65706f696e743c426c6f636b4e756d626572466f723c543e3e3e00012463616c6c5f686173680401205b75383b2033325d0001286d61785f77656967687424011857656967687400020484536565205b6050616c6c65743a3a617070726f76655f61735f6d756c7469605d2e3c63616e63656c5f61735f6d756c74691001247468726573686f6c647901010c7531360001446f746865725f7369676e61746f72696573d10101445665633c543a3a4163636f756e7449643e00012474696d65706f696e74bd03017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e00012463616c6c5f686173680401205b75383b2033325d00030480536565205b6050616c6c65743a3a63616e63656c5f61735f6d756c7469605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732eb90304184f7074696f6e04045401bd030108104e6f6e6500000010536f6d650400bd030000010000bd03083c70616c6c65745f6d756c74697369672454696d65706f696e74042c426c6f636b4e756d62657201100008011868656967687410012c426c6f636b4e756d626572000114696e64657810010c7533320000c1030c3c70616c6c65745f707265696d6167651870616c6c65741043616c6c040454000114346e6f74655f707265696d616765040114627974657334011c5665633c75383e00000478536565205b6050616c6c65743a3a6e6f74655f707265696d616765605d2e3c756e6e6f74655f707265696d6167650401106861736830011c543a3a4861736800010480536565205b6050616c6c65743a3a756e6e6f74655f707265696d616765605d2e40726571756573745f707265696d6167650401106861736830011c543a3a4861736800020484536565205b6050616c6c65743a3a726571756573745f707265696d616765605d2e48756e726571756573745f707265696d6167650401106861736830011c543a3a486173680003048c536565205b6050616c6c65743a3a756e726571756573745f707265696d616765605d2e38656e737572655f75706461746564040118686173686573c50301305665633c543a3a486173683e0004047c536565205b6050616c6c65743a3a656e737572655f75706461746564605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ec5030000023000c9030c3c70616c6c65745f626f756e746965731870616c6c65741043616c6c0804540004490001243870726f706f73655f626f756e747908011476616c7565dc013c42616c616e63654f663c542c20493e00012c6465736372697074696f6e34011c5665633c75383e0000047c536565205b6050616c6c65743a3a70726f706f73655f626f756e7479605d2e38617070726f76655f626f756e7479040124626f756e74795f6964fc012c426f756e7479496e6465780001047c536565205b6050616c6c65743a3a617070726f76655f626f756e7479605d2e3c70726f706f73655f63757261746f720c0124626f756e74795f6964fc012c426f756e7479496e64657800011c63757261746f72c10101504163636f756e7449644c6f6f6b75704f663c543e00010c666565dc013c42616c616e63654f663c542c20493e00020480536565205b6050616c6c65743a3a70726f706f73655f63757261746f72605d2e40756e61737369676e5f63757261746f72040124626f756e74795f6964fc012c426f756e7479496e64657800030484536565205b6050616c6c65743a3a756e61737369676e5f63757261746f72605d2e386163636570745f63757261746f72040124626f756e74795f6964fc012c426f756e7479496e6465780004047c536565205b6050616c6c65743a3a6163636570745f63757261746f72605d2e3061776172645f626f756e7479080124626f756e74795f6964fc012c426f756e7479496e64657800012c62656e6566696369617279c10101504163636f756e7449644c6f6f6b75704f663c543e00050474536565205b6050616c6c65743a3a61776172645f626f756e7479605d2e30636c61696d5f626f756e7479040124626f756e74795f6964fc012c426f756e7479496e64657800060474536565205b6050616c6c65743a3a636c61696d5f626f756e7479605d2e30636c6f73655f626f756e7479040124626f756e74795f6964fc012c426f756e7479496e64657800070474536565205b6050616c6c65743a3a636c6f73655f626f756e7479605d2e50657874656e645f626f756e74795f657870697279080124626f756e74795f6964fc012c426f756e7479496e64657800011872656d61726b34011c5665633c75383e00080494536565205b6050616c6c65743a3a657874656e645f626f756e74795f657870697279605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ecd030c5470616c6c65745f6368696c645f626f756e746965731870616c6c65741043616c6c04045400011c406164645f6368696c645f626f756e74790c0140706172656e745f626f756e74795f6964fc012c426f756e7479496e64657800011476616c7565dc013042616c616e63654f663c543e00012c6465736372697074696f6e34011c5665633c75383e00000484536565205b6050616c6c65743a3a6164645f6368696c645f626f756e7479605d2e3c70726f706f73655f63757261746f72100140706172656e745f626f756e74795f6964fc012c426f756e7479496e64657800013c6368696c645f626f756e74795f6964fc012c426f756e7479496e64657800011c63757261746f72c10101504163636f756e7449644c6f6f6b75704f663c543e00010c666565dc013042616c616e63654f663c543e00010480536565205b6050616c6c65743a3a70726f706f73655f63757261746f72605d2e386163636570745f63757261746f72080140706172656e745f626f756e74795f6964fc012c426f756e7479496e64657800013c6368696c645f626f756e74795f6964fc012c426f756e7479496e6465780002047c536565205b6050616c6c65743a3a6163636570745f63757261746f72605d2e40756e61737369676e5f63757261746f72080140706172656e745f626f756e74795f6964fc012c426f756e7479496e64657800013c6368696c645f626f756e74795f6964fc012c426f756e7479496e64657800030484536565205b6050616c6c65743a3a756e61737369676e5f63757261746f72605d2e4861776172645f6368696c645f626f756e74790c0140706172656e745f626f756e74795f6964fc012c426f756e7479496e64657800013c6368696c645f626f756e74795f6964fc012c426f756e7479496e64657800012c62656e6566696369617279c10101504163636f756e7449644c6f6f6b75704f663c543e0004048c536565205b6050616c6c65743a3a61776172645f6368696c645f626f756e7479605d2e48636c61696d5f6368696c645f626f756e7479080140706172656e745f626f756e74795f6964fc012c426f756e7479496e64657800013c6368696c645f626f756e74795f6964fc012c426f756e7479496e6465780005048c536565205b6050616c6c65743a3a636c61696d5f6368696c645f626f756e7479605d2e48636c6f73655f6368696c645f626f756e7479080140706172656e745f626f756e74795f6964fc012c426f756e7479496e64657800013c6368696c645f626f756e74795f6964fc012c426f756e7479496e6465780006048c536565205b6050616c6c65743a3a636c6f73655f6368696c645f626f756e7479605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ed1030c9070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173651870616c6c65741043616c6c0404540001143c7375626d69745f756e7369676e65640801307261775f736f6c7574696f6ed50301b0426f783c526177536f6c7574696f6e3c536f6c7574696f6e4f663c543a3a4d696e6572436f6e6669673e3e3e00011c7769746e65737309050158536f6c7574696f6e4f72536e617073686f7453697a6500000480536565205b6050616c6c65743a3a7375626d69745f756e7369676e6564605d2e6c7365745f6d696e696d756d5f756e747275737465645f73636f72650401406d617962655f6e6578745f73636f72650d0501544f7074696f6e3c456c656374696f6e53636f72653e000104b0536565205b6050616c6c65743a3a7365745f6d696e696d756d5f756e747275737465645f73636f7265605d2e747365745f656d657267656e63795f656c656374696f6e5f726573756c74040120737570706f72747311050158537570706f7274733c543a3a4163636f756e7449643e000204b8536565205b6050616c6c65743a3a7365745f656d657267656e63795f656c656374696f6e5f726573756c74605d2e187375626d69740401307261775f736f6c7574696f6ed50301b0426f783c526177536f6c7574696f6e3c536f6c7574696f6e4f663c543a3a4d696e6572436f6e6669673e3e3e0003045c536565205b6050616c6c65743a3a7375626d6974605d2e4c676f7665726e616e63655f66616c6c6261636b0801406d617962655f6d61785f766f746572736902012c4f7074696f6e3c7533323e0001446d617962655f6d61785f746172676574736902012c4f7074696f6e3c7533323e00040490536565205b6050616c6c65743a3a676f7665726e616e63655f66616c6c6261636b605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ed503089070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173652c526177536f6c7574696f6e04045301d903000c0120736f6c7574696f6ed90301045300011473636f726505050134456c656374696f6e53636f7265000114726f756e6410010c7533320000d903085873746167696e675f6b7573616d615f72756e74696d65544e706f73436f6d70616374536f6c7574696f6e32340000600118766f74657331dd0300000118766f74657332e90300000118766f74657333fd0300000118766f74657334090400000118766f74657335150400000118766f74657336210400000118766f746573372d0400000118766f74657338390400000118766f7465733945040000011c766f746573313051040000011c766f74657331315d040000011c766f746573313269040000011c766f746573313375040000011c766f746573313481040000011c766f74657331358d040000011c766f746573313699040000011c766f7465733137a5040000011c766f7465733138b1040000011c766f7465733139bd040000011c766f7465733230c9040000011c766f7465733231d5040000011c766f7465733232e1040000011c766f7465733233ed040000011c766f7465733234f904000000dd03000002e10300e10300000408fce50300e503000006790100e903000002ed0300ed030000040cfcf103e50300f10300000408e503f50300f503000006f90300f9030c3473705f61726974686d65746963287065725f7468696e677318506572553136000004007901010c7531360000fd0300000201040001040000040cfc0504e50300050400000302000000f1030009040000020d04000d040000040cfc1104e50300110400000303000000f10300150400000219040019040000040cfc1d04e503001d0400000304000000f10300210400000225040025040000040cfc2904e50300290400000305000000f103002d0400000231040031040000040cfc3504e50300350400000306000000f1030039040000023d04003d040000040cfc4104e50300410400000307000000f10300450400000249040049040000040cfc4d04e503004d0400000308000000f10300510400000255040055040000040cfc5904e50300590400000309000000f103005d0400000261040061040000040cfc6504e5030065040000030a000000f1030069040000026d04006d040000040cfc7104e5030071040000030b000000f10300750400000279040079040000040cfc7d04e503007d040000030c000000f10300810400000285040085040000040cfc8904e5030089040000030d000000f103008d0400000291040091040000040cfc9504e5030095040000030e000000f1030099040000029d04009d040000040cfca104e50300a1040000030f000000f10300a504000002a90400a9040000040cfcad04e50300ad0400000310000000f10300b104000002b50400b5040000040cfcb904e50300b90400000311000000f10300bd04000002c10400c1040000040cfcc504e50300c50400000312000000f10300c904000002cd0400cd040000040cfcd104e50300d10400000313000000f10300d504000002d90400d9040000040cfcdd04e50300dd0400000314000000f10300e104000002e50400e5040000040cfce904e50300e90400000315000000f10300ed04000002f10400f1040000040cfcf504e50300f50400000316000000f10300f904000002fd0400fd040000040cfc0105e50300010500000317000000f103000505084473705f6e706f735f656c656374696f6e7334456c656374696f6e53636f726500000c01346d696e696d616c5f7374616b6518013c457874656e64656442616c616e636500012473756d5f7374616b6518013c457874656e64656442616c616e636500014473756d5f7374616b655f7371756172656418013c457874656e64656442616c616e636500000905089070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f706861736558536f6c7574696f6e4f72536e617073686f7453697a650000080118766f74657273fc010c75333200011c74617267657473fc010c75333200000d0504184f7074696f6e0404540105050108104e6f6e6500000010536f6d650400050500000100001105000002150500150500000408001905001905084473705f6e706f735f656c656374696f6e731c537570706f727404244163636f756e744964010000080114746f74616c18013c457874656e64656442616c616e6365000118766f746572731d0501845665633c284163636f756e7449642c20457874656e64656442616c616e6365293e00001d0500000221050021050000040800180025050c2870616c6c65745f6e69731870616c6c65741043616c6c04045400011c24706c6163655f626964080118616d6f756e74dc013042616c616e63654f663c543e0001206475726174696f6e10010c75333200000468536565205b6050616c6c65743a3a706c6163655f626964605d2e2c726574726163745f626964080118616d6f756e74dc013042616c616e63654f663c543e0001206475726174696f6e10010c75333200010470536565205b6050616c6c65743a3a726574726163745f626964605d2e3066756e645f6465666963697400020474536565205b6050616c6c65743a3a66756e645f64656669636974605d2e30746861775f70726976617465080114696e646578fc013052656365697074496e6465780001406d617962655f70726f706f7274696f6e2905014c4f7074696f6e3c5065727175696e74696c6c3e00030474536565205b6050616c6c65743a3a746861775f70726976617465605d2e34746861775f636f6d6d756e616c040114696e646578fc013052656365697074496e64657800040478536565205b6050616c6c65743a3a746861775f636f6d6d756e616c605d2e24636f6d6d756e696679040114696e646578fc013052656365697074496e64657800050468536565205b6050616c6c65743a3a636f6d6d756e696679605d2e24707269766174697a65040114696e646578fc013052656365697074496e64657800060468536565205b6050616c6c65743a3a707269766174697a65605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e290504184f7074696f6e040454012d050108104e6f6e6500000010536f6d6504002d0500000100002d050c3473705f61726974686d65746963287065725f7468696e67732c5065727175696e74696c6c000004002c010c753634000031050c3c70616c6c65745f62616c616e6365731870616c6c65741043616c6c080454000449000120507472616e736665725f616c6c6f775f646561746808011064657374c10101504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565dc0128543a3a42616c616e636500000494536565205b6050616c6c65743a3a7472616e736665725f616c6c6f775f6465617468605d2e38666f7263655f7472616e736665720c0118736f75726365c10101504163636f756e7449644c6f6f6b75704f663c543e00011064657374c10101504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565dc0128543a3a42616c616e63650002047c536565205b6050616c6c65743a3a666f7263655f7472616e73666572605d2e4c7472616e736665725f6b6565705f616c69766508011064657374c10101504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565dc0128543a3a42616c616e636500030490536565205b6050616c6c65743a3a7472616e736665725f6b6565705f616c697665605d2e307472616e736665725f616c6c08011064657374c10101504163636f756e7449644c6f6f6b75704f663c543e0001286b6565705f616c697665780110626f6f6c00040474536565205b6050616c6c65743a3a7472616e736665725f616c6c605d2e3c666f7263655f756e7265736572766508010c77686fc10101504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e74180128543a3a42616c616e636500050480536565205b6050616c6c65743a3a666f7263655f756e72657365727665605d2e40757067726164655f6163636f756e747304010c77686fd10101445665633c543a3a4163636f756e7449643e00060484536565205b6050616c6c65743a3a757067726164655f6163636f756e7473605d2e44666f7263655f7365745f62616c616e636508010c77686fc10101504163636f756e7449644c6f6f6b75704f663c543e0001206e65775f66726565dc0128543a3a42616c616e636500080488536565205b6050616c6c65743a3a666f7263655f7365745f62616c616e6365605d2e6c666f7263655f61646a7573745f746f74616c5f69737375616e6365080124646972656374696f6ed501014c41646a7573746d656e74446972656374696f6e00011464656c7461dc0128543a3a42616c616e6365000904b0536565205b6050616c6c65743a3a666f7263655f61646a7573745f746f74616c5f69737375616e6365605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e35050c4070616c6c65745f626167735f6c6973741870616c6c65741043616c6c08045400044900010c1472656261670401286469736c6f6361746564c10101504163636f756e7449644c6f6f6b75704f663c543e00000458536565205b6050616c6c65743a3a7265626167605d2e3c7075745f696e5f66726f6e745f6f6604011c6c696768746572c10101504163636f756e7449644c6f6f6b75704f663c543e00010480536565205b6050616c6c65743a3a7075745f696e5f66726f6e745f6f66605d2e547075745f696e5f66726f6e745f6f665f6f7468657208011c68656176696572c10101504163636f756e7449644c6f6f6b75704f663c543e00011c6c696768746572c10101504163636f756e7449644c6f6f6b75704f663c543e00020498536565205b6050616c6c65743a3a7075745f696e5f66726f6e745f6f665f6f74686572605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e39050c5c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c731870616c6c65741043616c6c04045400015c106a6f696e080118616d6f756e74dc013042616c616e63654f663c543e00011c706f6f6c5f6964100118506f6f6c496400000454536565205b6050616c6c65743a3a6a6f696e605d2e28626f6e645f657874726104011465787472613d05015c426f6e6445787472613c42616c616e63654f663c543e3e0001046c536565205b6050616c6c65743a3a626f6e645f6578747261605d2e30636c61696d5f7061796f757400020474536565205b6050616c6c65743a3a636c61696d5f7061796f7574605d2e18756e626f6e640801386d656d6265725f6163636f756e74c10101504163636f756e7449644c6f6f6b75704f663c543e000140756e626f6e64696e675f706f696e7473dc013042616c616e63654f663c543e0003045c536565205b6050616c6c65743a3a756e626f6e64605d2e58706f6f6c5f77697468647261775f756e626f6e64656408011c706f6f6c5f6964100118506f6f6c49640001486e756d5f736c617368696e675f7370616e7310010c7533320004049c536565205b6050616c6c65743a3a706f6f6c5f77697468647261775f756e626f6e646564605d2e4477697468647261775f756e626f6e6465640801386d656d6265725f6163636f756e74c10101504163636f756e7449644c6f6f6b75704f663c543e0001486e756d5f736c617368696e675f7370616e7310010c75333200050488536565205b6050616c6c65743a3a77697468647261775f756e626f6e646564605d2e18637265617465100118616d6f756e74dc013042616c616e63654f663c543e000110726f6f74c10101504163636f756e7449644c6f6f6b75704f663c543e0001246e6f6d696e61746f72c10101504163636f756e7449644c6f6f6b75704f663c543e00011c626f756e636572c10101504163636f756e7449644c6f6f6b75704f663c543e0006045c536565205b6050616c6c65743a3a637265617465605d2e4c6372656174655f776974685f706f6f6c5f6964140118616d6f756e74dc013042616c616e63654f663c543e000110726f6f74c10101504163636f756e7449644c6f6f6b75704f663c543e0001246e6f6d696e61746f72c10101504163636f756e7449644c6f6f6b75704f663c543e00011c626f756e636572c10101504163636f756e7449644c6f6f6b75704f663c543e00011c706f6f6c5f6964100118506f6f6c496400070490536565205b6050616c6c65743a3a6372656174655f776974685f706f6f6c5f6964605d2e206e6f6d696e61746508011c706f6f6c5f6964100118506f6f6c496400012876616c696461746f7273d10101445665633c543a3a4163636f756e7449643e00080464536565205b6050616c6c65743a3a6e6f6d696e617465605d2e247365745f737461746508011c706f6f6c5f6964100118506f6f6c4964000114737461746541050124506f6f6c537461746500090468536565205b6050616c6c65743a3a7365745f7374617465605d2e307365745f6d6574616461746108011c706f6f6c5f6964100118506f6f6c49640001206d6574616461746134011c5665633c75383e000a0474536565205b6050616c6c65743a3a7365745f6d65746164617461605d2e2c7365745f636f6e666967731801346d696e5f6a6f696e5f626f6e6445050158436f6e6669674f703c42616c616e63654f663c543e3e00013c6d696e5f6372656174655f626f6e6445050158436f6e6669674f703c42616c616e63654f663c543e3e0001246d61785f706f6f6c7349050134436f6e6669674f703c7533323e00012c6d61785f6d656d6265727349050134436f6e6669674f703c7533323e0001506d61785f6d656d626572735f7065725f706f6f6c49050134436f6e6669674f703c7533323e000154676c6f62616c5f6d61785f636f6d6d697373696f6e4d050144436f6e6669674f703c50657262696c6c3e000b0470536565205b6050616c6c65743a3a7365745f636f6e66696773605d2e307570646174655f726f6c657310011c706f6f6c5f6964100118506f6f6c49640001206e65775f726f6f7451050158436f6e6669674f703c543a3a4163636f756e7449643e0001346e65775f6e6f6d696e61746f7251050158436f6e6669674f703c543a3a4163636f756e7449643e00012c6e65775f626f756e63657251050158436f6e6669674f703c543a3a4163636f756e7449643e000c0474536565205b6050616c6c65743a3a7570646174655f726f6c6573605d2e146368696c6c04011c706f6f6c5f6964100118506f6f6c4964000d0458536565205b6050616c6c65743a3a6368696c6c605d2e40626f6e645f65787472615f6f746865720801186d656d626572c10101504163636f756e7449644c6f6f6b75704f663c543e00011465787472613d05015c426f6e6445787472613c42616c616e63654f663c543e3e000e0484536565205b6050616c6c65743a3a626f6e645f65787472615f6f74686572605d2e507365745f636c61696d5f7065726d697373696f6e0401287065726d697373696f6e5505013c436c61696d5065726d697373696f6e000f0494536565205b6050616c6c65743a3a7365745f636c61696d5f7065726d697373696f6e605d2e48636c61696d5f7061796f75745f6f746865720401146f74686572000130543a3a4163636f756e7449640010048c536565205b6050616c6c65743a3a636c61696d5f7061796f75745f6f74686572605d2e387365745f636f6d6d697373696f6e08011c706f6f6c5f6964100118506f6f6c49640001386e65775f636f6d6d697373696f6e5905017c4f7074696f6e3c2850657262696c6c2c20543a3a4163636f756e744964293e0011047c536565205b6050616c6c65743a3a7365745f636f6d6d697373696f6e605d2e487365745f636f6d6d697373696f6e5f6d617808011c706f6f6c5f6964100118506f6f6c49640001386d61785f636f6d6d697373696f6e94011c50657262696c6c0012048c536565205b6050616c6c65743a3a7365745f636f6d6d697373696f6e5f6d6178605d2e687365745f636f6d6d697373696f6e5f6368616e67655f7261746508011c706f6f6c5f6964100118506f6f6c496400012c6368616e67655f726174656105019c436f6d6d697373696f6e4368616e6765526174653c426c6f636b4e756d626572466f723c543e3e001304ac536565205b6050616c6c65743a3a7365745f636f6d6d697373696f6e5f6368616e67655f72617465605d2e40636c61696d5f636f6d6d697373696f6e04011c706f6f6c5f6964100118506f6f6c496400140484536565205b6050616c6c65743a3a636c61696d5f636f6d6d697373696f6e605d2e4c61646a7573745f706f6f6c5f6465706f73697404011c706f6f6c5f6964100118506f6f6c496400150490536565205b6050616c6c65743a3a61646a7573745f706f6f6c5f6465706f736974605d2e7c7365745f636f6d6d697373696f6e5f636c61696d5f7065726d697373696f6e08011c706f6f6c5f6964100118506f6f6c49640001287065726d697373696f6e650501bc4f7074696f6e3c436f6d6d697373696f6e436c61696d5065726d697373696f6e3c543a3a4163636f756e7449643e3e001604c0536565205b6050616c6c65743a3a7365745f636f6d6d697373696f6e5f636c61696d5f7065726d697373696f6e605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e3d05085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7324426f6e644578747261041c42616c616e6365011801082c4672656542616c616e6365040018011c42616c616e63650000001c52657761726473000100004105085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7324506f6f6c537461746500010c104f70656e0000001c426c6f636b65640001002844657374726f79696e67000200004505085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7320436f6e6669674f700404540118010c104e6f6f700000000c5365740400180104540001001852656d6f7665000200004905085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7320436f6e6669674f700404540110010c104e6f6f700000000c5365740400100104540001001852656d6f7665000200004d05085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7320436f6e6669674f700404540194010c104e6f6f700000000c5365740400940104540001001852656d6f7665000200005105085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7320436f6e6669674f700404540100010c104e6f6f700000000c5365740400000104540001001852656d6f7665000200005505085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c733c436c61696d5065726d697373696f6e000110305065726d697373696f6e6564000000585065726d697373696f6e6c657373436f6d706f756e64000100585065726d697373696f6e6c6573735769746864726177000200445065726d697373696f6e6c657373416c6c00030000590504184f7074696f6e040454015d050108104e6f6e6500000010536f6d6504005d0500000100005d05000004089400006105085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7350436f6d6d697373696f6e4368616e676552617465042c426c6f636b4e756d6265720110000801306d61785f696e63726561736594011c50657262696c6c0001246d696e5f64656c617910012c426c6f636b4e756d6265720000650504184f7074696f6e0404540169050108104e6f6e6500000010536f6d650400690500000100006905085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7364436f6d6d697373696f6e436c61696d5065726d697373696f6e04244163636f756e74496401000108385065726d697373696f6e6c6573730000001c4163636f756e7404000001244163636f756e744964000100006d050c4c70616c6c65745f666173745f756e7374616b651870616c6c65741043616c6c04045400010c5472656769737465725f666173745f756e7374616b6500000498536565205b6050616c6c65743a3a72656769737465725f666173745f756e7374616b65605d2e28646572656769737465720001046c536565205b6050616c6c65743a3a64657265676973746572605d2e1c636f6e74726f6c040134657261735f746f5f636865636b100120457261496e64657800020460536565205b6050616c6c65743a3a636f6e74726f6c605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e7105106c706f6c6b61646f745f72756e74696d655f70617261636861696e7334636f6e66696775726174696f6e1870616c6c65741043616c6c0404540001bc7c7365745f76616c69646174696f6e5f757067726164655f636f6f6c646f776e04010c6e6577100144426c6f636b4e756d626572466f723c543e000004c0536565205b6050616c6c65743a3a7365745f76616c69646174696f6e5f757067726164655f636f6f6c646f776e605d2e707365745f76616c69646174696f6e5f757067726164655f64656c617904010c6e6577100144426c6f636b4e756d626572466f723c543e000104b4536565205b6050616c6c65743a3a7365745f76616c69646174696f6e5f757067726164655f64656c6179605d2e647365745f636f64655f726574656e74696f6e5f706572696f6404010c6e6577100144426c6f636b4e756d626572466f723c543e000204a8536565205b6050616c6c65743a3a7365745f636f64655f726574656e74696f6e5f706572696f64605d2e447365745f6d61785f636f64655f73697a6504010c6e657710010c75333200030488536565205b6050616c6c65743a3a7365745f6d61785f636f64655f73697a65605d2e407365745f6d61785f706f765f73697a6504010c6e657710010c75333200040484536565205b6050616c6c65743a3a7365745f6d61785f706f765f73697a65605d2e587365745f6d61785f686561645f646174615f73697a6504010c6e657710010c7533320005049c536565205b6050616c6c65743a3a7365745f6d61785f686561645f646174615f73697a65605d2e487365745f636f726574696d655f636f72657304010c6e657710010c7533320006048c536565205b6050616c6c65743a3a7365745f636f726574696d655f636f726573605d2e547365745f6f6e5f64656d616e645f7265747269657304010c6e657710010c75333200070498536565205b6050616c6c65743a3a7365745f6f6e5f64656d616e645f72657472696573605d2e707365745f67726f75705f726f746174696f6e5f6672657175656e637904010c6e6577100144426c6f636b4e756d626572466f723c543e000804b4536565205b6050616c6c65743a3a7365745f67726f75705f726f746174696f6e5f6672657175656e6379605d2e747365745f70617261735f617661696c6162696c6974795f706572696f6404010c6e6577100144426c6f636b4e756d626572466f723c543e000904b8536565205b6050616c6c65743a3a7365745f70617261735f617661696c6162696c6974795f706572696f64605d2e607365745f7363686564756c696e675f6c6f6f6b616865616404010c6e657710010c753332000b04a4536565205b6050616c6c65743a3a7365745f7363686564756c696e675f6c6f6f6b6168656164605d2e6c7365745f6d61785f76616c696461746f72735f7065725f636f726504010c6e65776902012c4f7074696f6e3c7533323e000c04b0536565205b6050616c6c65743a3a7365745f6d61785f76616c696461746f72735f7065725f636f7265605d2e487365745f6d61785f76616c696461746f727304010c6e65776902012c4f7074696f6e3c7533323e000d048c536565205b6050616c6c65743a3a7365745f6d61785f76616c696461746f7273605d2e487365745f646973707574655f706572696f6404010c6e657710013053657373696f6e496e646578000e048c536565205b6050616c6c65743a3a7365745f646973707574655f706572696f64605d2eb47365745f646973707574655f706f73745f636f6e636c7573696f6e5f616363657074616e63655f706572696f6404010c6e6577100144426c6f636b4e756d626572466f723c543e000f04f8536565205b6050616c6c65743a3a7365745f646973707574655f706f73745f636f6e636c7573696f6e5f616363657074616e63655f706572696f64605d2e447365745f6e6f5f73686f775f736c6f747304010c6e657710010c75333200120488536565205b6050616c6c65743a3a7365745f6e6f5f73686f775f736c6f7473605d2e507365745f6e5f64656c61795f7472616e6368657304010c6e657710010c75333200130494536565205b6050616c6c65743a3a7365745f6e5f64656c61795f7472616e63686573605d2e787365745f7a65726f74685f64656c61795f7472616e6368655f776964746804010c6e657710010c753332001404bc536565205b6050616c6c65743a3a7365745f7a65726f74685f64656c61795f7472616e6368655f7769647468605d2e507365745f6e65656465645f617070726f76616c7304010c6e657710010c75333200150494536565205b6050616c6c65743a3a7365745f6e65656465645f617070726f76616c73605d2e707365745f72656c61795f7672665f6d6f64756c6f5f73616d706c657304010c6e657710010c753332001604b4536565205b6050616c6c65743a3a7365745f72656c61795f7672665f6d6f64756c6f5f73616d706c6573605d2e687365745f6d61785f7570776172645f71756575655f636f756e7404010c6e657710010c753332001704ac536565205b6050616c6c65743a3a7365745f6d61785f7570776172645f71756575655f636f756e74605d2e647365745f6d61785f7570776172645f71756575655f73697a6504010c6e657710010c753332001804a8536565205b6050616c6c65743a3a7365745f6d61785f7570776172645f71756575655f73697a65605d2e747365745f6d61785f646f776e776172645f6d6573736167655f73697a6504010c6e657710010c753332001904b8536565205b6050616c6c65743a3a7365745f6d61785f646f776e776172645f6d6573736167655f73697a65605d2e6c7365745f6d61785f7570776172645f6d6573736167655f73697a6504010c6e657710010c753332001b04b0536565205b6050616c6c65743a3a7365745f6d61785f7570776172645f6d6573736167655f73697a65605d2ea07365745f6d61785f7570776172645f6d6573736167655f6e756d5f7065725f63616e64696461746504010c6e657710010c753332001c04e4536565205b6050616c6c65743a3a7365745f6d61785f7570776172645f6d6573736167655f6e756d5f7065725f63616e646964617465605d2e647365745f68726d705f6f70656e5f726571756573745f74746c04010c6e657710010c753332001d04a8536565205b6050616c6c65743a3a7365745f68726d705f6f70656e5f726571756573745f74746c605d2e5c7365745f68726d705f73656e6465725f6465706f73697404010c6e657718011c42616c616e6365001e04a0536565205b6050616c6c65743a3a7365745f68726d705f73656e6465725f6465706f736974605d2e687365745f68726d705f726563697069656e745f6465706f73697404010c6e657718011c42616c616e6365001f04ac536565205b6050616c6c65743a3a7365745f68726d705f726563697069656e745f6465706f736974605d2e747365745f68726d705f6368616e6e656c5f6d61785f636170616369747904010c6e657710010c753332002004b8536565205b6050616c6c65743a3a7365745f68726d705f6368616e6e656c5f6d61785f6361706163697479605d2e7c7365745f68726d705f6368616e6e656c5f6d61785f746f74616c5f73697a6504010c6e657710010c753332002104c0536565205b6050616c6c65743a3a7365745f68726d705f6368616e6e656c5f6d61785f746f74616c5f73697a65605d2e9c7365745f68726d705f6d61785f70617261636861696e5f696e626f756e645f6368616e6e656c7304010c6e657710010c753332002204e0536565205b6050616c6c65743a3a7365745f68726d705f6d61785f70617261636861696e5f696e626f756e645f6368616e6e656c73605d2e847365745f68726d705f6368616e6e656c5f6d61785f6d6573736167655f73697a6504010c6e657710010c753332002404c8536565205b6050616c6c65743a3a7365745f68726d705f6368616e6e656c5f6d61785f6d6573736167655f73697a65605d2ea07365745f68726d705f6d61785f70617261636861696e5f6f7574626f756e645f6368616e6e656c7304010c6e657710010c753332002504e4536565205b6050616c6c65743a3a7365745f68726d705f6d61785f70617261636861696e5f6f7574626f756e645f6368616e6e656c73605d2e987365745f68726d705f6d61785f6d6573736167655f6e756d5f7065725f63616e64696461746504010c6e657710010c753332002704dc536565205b6050616c6c65743a3a7365745f68726d705f6d61785f6d6573736167655f6e756d5f7065725f63616e646964617465605d2e487365745f7076665f766f74696e675f74746c04010c6e657710013053657373696f6e496e646578002a048c536565205b6050616c6c65743a3a7365745f7076665f766f74696e675f74746c605d2e907365745f6d696e696d756d5f76616c69646174696f6e5f757067726164655f64656c617904010c6e6577100144426c6f636b4e756d626572466f723c543e002b04d4536565205b6050616c6c65743a3a7365745f6d696e696d756d5f76616c69646174696f6e5f757067726164655f64656c6179605d2e707365745f6279706173735f636f6e73697374656e63795f636865636b04010c6e6577780110626f6f6c002c04b4536565205b6050616c6c65743a3a7365745f6279706173735f636f6e73697374656e63795f636865636b605d2e607365745f6173796e635f6261636b696e675f706172616d7304010c6e6577750501484173796e634261636b696e67506172616d73002d04a4536565205b6050616c6c65743a3a7365745f6173796e635f6261636b696e675f706172616d73605d2e4c7365745f6578656375746f725f706172616d7304010c6e6577790501384578656375746f72506172616d73002e0490536565205b6050616c6c65743a3a7365745f6578656375746f725f706172616d73605d2e587365745f6f6e5f64656d616e645f626173655f66656504010c6e657718011c42616c616e6365002f049c536565205b6050616c6c65743a3a7365745f6f6e5f64656d616e645f626173655f666565605d2e747365745f6f6e5f64656d616e645f6665655f766172696162696c69747904010c6e657794011c50657262696c6c003004b8536565205b6050616c6c65743a3a7365745f6f6e5f64656d616e645f6665655f766172696162696c697479605d2e707365745f6f6e5f64656d616e645f71756575655f6d61785f73697a6504010c6e657710010c753332003104b4536565205b6050616c6c65743a3a7365745f6f6e5f64656d616e645f71756575655f6d61785f73697a65605d2e987365745f6f6e5f64656d616e645f7461726765745f71756575655f7574696c697a6174696f6e04010c6e657794011c50657262696c6c003204dc536565205b6050616c6c65743a3a7365745f6f6e5f64656d616e645f7461726765745f71756575655f7574696c697a6174696f6e605d2e447365745f6f6e5f64656d616e645f74746c04010c6e6577100144426c6f636b4e756d626572466f723c543e00330488536565205b6050616c6c65743a3a7365745f6f6e5f64656d616e645f74746c605d2e647365745f6d696e696d756d5f6261636b696e675f766f74657304010c6e657710010c753332003404a8536565205b6050616c6c65743a3a7365745f6d696e696d756d5f6261636b696e675f766f746573605d2e407365745f6e6f64655f66656174757265080114696e646578080108753800011476616c7565780110626f6f6c00350484536565205b6050616c6c65743a3a7365745f6e6f64655f66656174757265605d2e687365745f617070726f76616c5f766f74696e675f706172616d7304010c6e65778d050150417070726f76616c566f74696e67506172616d73003604ac536565205b6050616c6c65743a3a7365745f617070726f76616c5f766f74696e675f706172616d73605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e7505104c706f6c6b61646f745f7072696d697469766573087636346173796e635f6261636b696e67484173796e634261636b696e67506172616d73000008014c6d61785f63616e6469646174655f646570746810010c753332000150616c6c6f7765645f616e6365737472795f6c656e10010c75333200007905104c706f6c6b61646f745f7072696d6974697665730876363c6578656375746f725f706172616d73384578656375746f72506172616d73000004007d0501485665633c4578656375746f72506172616d3e00007d050000028105008105104c706f6c6b61646f745f7072696d6974697665730876363c6578656375746f725f706172616d73344578656375746f72506172616d00011c384d61784d656d6f72795061676573040010010c7533320001003c537461636b4c6f676963616c4d6178040010010c75333200020038537461636b4e61746976654d6178040010010c75333200030050507265636865636b696e674d61784d656d6f727904002c010c753634000400385076665072657054696d656f757408008505012c507666507265704b696e6400002c010c753634000500385076664578656354696d656f757408008905012c507666457865634b696e6400002c010c753634000600445761736d45787442756c6b4d656d6f72790007000085050c4c706f6c6b61646f745f7072696d6974697665730876362c507666507265704b696e6400010820507265636865636b0000001c507265706172650001000089050c4c706f6c6b61646f745f7072696d6974697665730876362c507666457865634b696e640001081c4261636b696e6700000020417070726f76616c000100008d050c4c706f6c6b61646f745f7072696d697469766573207673746167696e6750417070726f76616c566f74696e67506172616d73000004016c6d61785f617070726f76616c5f636f616c657363655f636f756e7410010c75333200009105106c706f6c6b61646f745f72756e74696d655f70617261636861696e73187368617265641870616c6c65741043616c6c040454000100040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e9505106c706f6c6b61646f745f72756e74696d655f70617261636861696e7324696e636c7573696f6e1870616c6c65741043616c6c040454000100040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e9905106c706f6c6b61646f745f72756e74696d655f70617261636861696e733870617261735f696e686572656e741870616c6c65741043616c6c04045400010414656e746572040110646174619d05019050617261636861696e73496e686572656e74446174613c486561646572466f723c543e3e00000458536565205b6050616c6c65743a3a656e746572605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e9d050c4c706f6c6b61646f745f7072696d69746976657308763630496e686572656e7444617461040c484452019d01001001246269746669656c6473a1050190556e636865636b65645369676e6564417661696c6162696c6974794269746669656c64730001446261636b65645f63616e64696461746573bd05017c5665633c4261636b656443616e6469646174653c4844523a3a486173683e3e0001206469737075746573010601604d756c74694469737075746553746174656d656e74536574000134706172656e745f6865616465729d01010c4844520000a105000002a50500a505104c706f6c6b61646f745f7072696d697469766573087636187369676e65643c556e636865636b65645369676e6564081c5061796c6f616401a9052c5265616c5061796c6f616401a905000c011c7061796c6f6164a905011c5061796c6f616400013c76616c696461746f725f696e646578b505013856616c696461746f72496e6465780001247369676e6174757265b905014856616c696461746f725369676e61747572650000a9050c4c706f6c6b61646f745f7072696d69746976657308763650417661696c6162696c6974794269746669656c6400000400ad05017c4269745665633c75382c206269747665633a3a6f726465723a3a4c7362303e0000ad0500000708b10500b1050c18626974766563146f72646572104c73623000000000b5050c4c706f6c6b61646f745f7072696d6974697665730876363856616c696461746f72496e6465780000040010010c7533320000b905104c706f6c6b61646f745f7072696d6974697665730876363476616c696461746f725f617070245369676e61747572650000040081030148737232353531393a3a5369676e61747572650000bd05000002c10500c1050c4c706f6c6b61646f745f7072696d6974697665730876363c4261636b656443616e6469646174650404480130000c012463616e646964617465c5050170436f6d6d697474656443616e646964617465526563656970743c483e00013876616c69646974795f766f746573f90501605665633c56616c69646974794174746573746174696f6e3e00014476616c696461746f725f696e6469636573ad05017c4269745665633c75382c206269747665633a3a6f726465723a3a4c7362303e0000c5050c4c706f6c6b61646f745f7072696d69746976657308763664436f6d6d697474656443616e6469646174655265636569707404044801300008012864657363726970746f72c905015843616e64696461746544657363726970746f723c483e00012c636f6d6d69746d656e7473d905015043616e646964617465436f6d6d69746d656e74730000c9050c4c706f6c6b61646f745f7072696d6974697665730876364c43616e64696461746544657363726970746f7204044801300024011c706172615f696495020108496400013072656c61795f706172656e7430010448000120636f6c6c61746f72cd050128436f6c6c61746f7249640001787065727369737465645f76616c69646174696f6e5f646174615f6861736830011048617368000120706f765f6861736830011048617368000130657261737572655f726f6f74300110486173680001247369676e6174757265d1050144436f6c6c61746f725369676e6174757265000124706172615f686561643001104861736800015076616c69646174696f6e5f636f64655f68617368d505014856616c69646174696f6e436f6465486173680000cd05104c706f6c6b61646f745f7072696d69746976657308763630636f6c6c61746f725f617070185075626c696300000400cc013c737232353531393a3a5075626c69630000d105104c706f6c6b61646f745f7072696d69746976657308763630636f6c6c61746f725f617070245369676e61747572650000040081030148737232353531393a3a5369676e61747572650000d5050c74706f6c6b61646f745f70617261636861696e5f7072696d697469766573287072696d6974697665734856616c69646174696f6e436f64654861736800000400300110486173680000d9050c4c706f6c6b61646f745f7072696d6974697665730876365043616e646964617465436f6d6d69746d656e747304044e01100018013c7570776172645f6d65737361676573dd0501385570776172644d6573736167657300014c686f72697a6f6e74616c5f6d65737361676573e1050148486f72697a6f6e74616c4d6573736167657300014c6e65775f76616c69646174696f6e5f636f6465ed0501584f7074696f6e3c56616c69646174696f6e436f64653e000124686561645f64617461f5050120486561644461746100016c70726f6365737365645f646f776e776172645f6d6573736167657310010c75333200013868726d705f77617465726d61726b1001044e0000dd050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540134045300000400910101185665633c543e0000e1050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401e505045300000400e90501185665633c543e0000e5050860706f6c6b61646f745f636f72655f7072696d6974697665734c4f7574626f756e6448726d704d6573736167650408496401950200080124726563697069656e749502010849640001106461746134015073705f7374643a3a7665633a3a5665633c75383e0000e905000002e50500ed0504184f7074696f6e04045401f1050108104e6f6e6500000010536f6d650400f1050000010000f1050c74706f6c6b61646f745f70617261636861696e5f7072696d697469766573287072696d6974697665733856616c69646174696f6e436f64650000040034011c5665633c75383e0000f5050c74706f6c6b61646f745f70617261636861696e5f7072696d697469766573287072696d6974697665732048656164446174610000040034011c5665633c75383e0000f905000002fd0500fd050c4c706f6c6b61646f745f7072696d6974697665730876364c56616c69646974794174746573746174696f6e00010820496d706c696369740400b905014856616c696461746f725369676e6174757265000100204578706c696369740400b905014856616c696461746f725369676e617475726500020000010600000205060005060c4c706f6c6b61646f745f7072696d6974697665730876364c4469737075746553746174656d656e7453657400000c013863616e6469646174655f686173680906013443616e6469646174654861736800011c73657373696f6e10013053657373696f6e496e64657800012873746174656d656e74730d0601ec5665633c284469737075746553746174656d656e742c2056616c696461746f72496e6465782c2056616c696461746f725369676e6174757265293e000009060860706f6c6b61646f745f636f72655f7072696d6974697665733443616e64696461746548617368000004003001104861736800000d0600000211060011060000040c1506b505b9050015060c4c706f6c6b61646f745f7072696d697469766573087636404469737075746553746174656d656e740001081456616c696404001906016456616c69644469737075746553746174656d656e744b696e640000001c496e76616c696404002106016c496e76616c69644469737075746553746174656d656e744b696e640001000019060c4c706f6c6b61646f745f7072696d6974697665730876366456616c69644469737075746553746174656d656e744b696e64000114204578706c696369740000003c4261636b696e675365636f6e646564040030011048617368000100304261636b696e6756616c696404003001104861736800020040417070726f76616c436865636b696e6700030088417070726f76616c436865636b696e674d756c7469706c6543616e6469646174657304001d0601485665633c43616e646964617465486173683e000400001d0600000209060021060c4c706f6c6b61646f745f7072696d6974697665730876366c496e76616c69644469737075746553746174656d656e744b696e64000104204578706c69636974000000002506106c706f6c6b61646f745f72756e74696d655f70617261636861696e731470617261731870616c6c65741043616c6c04045400012458666f7263655f7365745f63757272656e745f636f646508011070617261950201185061726149640001206e65775f636f6465f105013856616c69646174696f6e436f64650000049c536565205b6050616c6c65743a3a666f7263655f7365745f63757272656e745f636f6465605d2e58666f7263655f7365745f63757272656e745f6865616408011070617261950201185061726149640001206e65775f68656164f505012048656164446174610001049c536565205b6050616c6c65743a3a666f7263655f7365745f63757272656e745f68656164605d2e6c666f7263655f7363686564756c655f636f64655f757067726164650c011070617261950201185061726149640001206e65775f636f6465f105013856616c69646174696f6e436f646500014c72656c61795f706172656e745f6e756d626572100144426c6f636b4e756d626572466f723c543e000204b0536565205b6050616c6c65743a3a666f7263655f7363686564756c655f636f64655f75706772616465605d2e4c666f7263655f6e6f74655f6e65775f6865616408011070617261950201185061726149640001206e65775f68656164f5050120486561644461746100030490536565205b6050616c6c65743a3a666f7263655f6e6f74655f6e65775f68656164605d2e48666f7263655f71756575655f616374696f6e04011070617261950201185061726149640004048c536565205b6050616c6c65743a3a666f7263655f71756575655f616374696f6e605d2e6c6164645f747275737465645f76616c69646174696f6e5f636f646504013c76616c69646174696f6e5f636f6465f105013856616c69646174696f6e436f6465000504b0536565205b6050616c6c65743a3a6164645f747275737465645f76616c69646174696f6e5f636f6465605d2e6c706f6b655f756e757365645f76616c69646174696f6e5f636f646504015076616c69646174696f6e5f636f64655f68617368d505014856616c69646174696f6e436f646548617368000604b0536565205b6050616c6c65743a3a706f6b655f756e757365645f76616c69646174696f6e5f636f6465605d2e6c696e636c7564655f7076665f636865636b5f73746174656d656e7408011073746d7429060144507666436865636b53746174656d656e740001247369676e6174757265b905014856616c696461746f725369676e6174757265000704b0536565205b6050616c6c65743a3a696e636c7564655f7076665f636865636b5f73746174656d656e74605d2e74666f7263655f7365745f6d6f73745f726563656e745f636f6e74657874080110706172619502011850617261496400011c636f6e74657874100144426c6f636b4e756d626572466f723c543e000804b8536565205b6050616c6c65743a3a666f7263655f7365745f6d6f73745f726563656e745f636f6e74657874605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e29060c4c706f6c6b61646f745f7072696d69746976657308763644507666436865636b53746174656d656e740000100118616363657074780110626f6f6c00011c7375626a656374d505014856616c69646174696f6e436f64654861736800013473657373696f6e5f696e64657810013053657373696f6e496e64657800013c76616c696461746f725f696e646578b505013856616c696461746f72496e64657800002d06106c706f6c6b61646f745f72756e74696d655f70617261636861696e732c696e697469616c697a65721870616c6c65741043616c6c04045400010434666f7263655f617070726f766504011475705f746f10012c426c6f636b4e756d62657200000478536565205b6050616c6c65743a3a666f7263655f617070726f7665605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e3106106c706f6c6b61646f745f72756e74696d655f70617261636861696e731068726d701870616c6c65741043616c6c0404540001285868726d705f696e69745f6f70656e5f6368616e6e656c0c0124726563697069656e749502011850617261496400015470726f706f7365645f6d61785f636170616369747910010c75333200016470726f706f7365645f6d61785f6d6573736167655f73697a6510010c7533320000049c536565205b6050616c6c65743a3a68726d705f696e69745f6f70656e5f6368616e6e656c605d2e6068726d705f6163636570745f6f70656e5f6368616e6e656c04011873656e64657295020118506172614964000104a4536565205b6050616c6c65743a3a68726d705f6163636570745f6f70656e5f6368616e6e656c605d2e4868726d705f636c6f73655f6368616e6e656c0401286368616e6e656c5f69643506013448726d704368616e6e656c49640002048c536565205b6050616c6c65743a3a68726d705f636c6f73655f6368616e6e656c605d2e40666f7263655f636c65616e5f68726d700c0110706172619502011850617261496400012c6e756d5f696e626f756e6410010c7533320001306e756d5f6f7574626f756e6410010c75333200030484536565205b6050616c6c65743a3a666f7263655f636c65616e5f68726d70605d2e5c666f7263655f70726f636573735f68726d705f6f70656e0401206368616e6e656c7310010c753332000404a0536565205b6050616c6c65743a3a666f7263655f70726f636573735f68726d705f6f70656e605d2e60666f7263655f70726f636573735f68726d705f636c6f73650401206368616e6e656c7310010c753332000504a4536565205b6050616c6c65743a3a666f7263655f70726f636573735f68726d705f636c6f7365605d2e6068726d705f63616e63656c5f6f70656e5f726571756573740801286368616e6e656c5f69643506013448726d704368616e6e656c49640001346f70656e5f726571756573747310010c753332000604a4536565205b6050616c6c65743a3a68726d705f63616e63656c5f6f70656e5f72657175657374605d2e5c666f7263655f6f70656e5f68726d705f6368616e6e656c10011873656e64657295020118506172614964000124726563697069656e74950201185061726149640001306d61785f636170616369747910010c7533320001406d61785f6d6573736167655f73697a6510010c753332000704a0536565205b6050616c6c65743a3a666f7263655f6f70656e5f68726d705f6368616e6e656c605d2e6065737461626c6973685f73797374656d5f6368616e6e656c08011873656e64657295020118506172614964000124726563697069656e7495020118506172614964000804a4536565205b6050616c6c65743a3a65737461626c6973685f73797374656d5f6368616e6e656c605d2e54706f6b655f6368616e6e656c5f6465706f7369747308011873656e64657295020118506172614964000124726563697069656e749502011850617261496400090498536565205b6050616c6c65743a3a706f6b655f6368616e6e656c5f6465706f73697473605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e35060c74706f6c6b61646f745f70617261636861696e5f7072696d697469766573287072696d6974697665733448726d704368616e6e656c4964000008011873656e646572950201084964000124726563697069656e7495020108496400003906106c706f6c6b61646f745f72756e74696d655f70617261636861696e732064697370757465731870616c6c65741043616c6c04045400010438666f7263655f756e667265657a650000047c536565205b6050616c6c65743a3a666f7263655f756e667265657a65605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e3d06146c706f6c6b61646f745f72756e74696d655f70617261636861696e7320646973707574657320736c617368696e671870616c6c65741043616c6c040454000104707265706f72745f646973707574655f6c6f73745f756e7369676e6564080134646973707574655f70726f6f6641060144426f783c4469737075746550726f6f663e00013c6b65795f6f776e65725f70726f6f66a9010140543a3a4b65794f776e657250726f6f66000004b4536565205b6050616c6c65743a3a7265706f72745f646973707574655f6c6f73745f756e7369676e6564605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e4106104c706f6c6b61646f745f7072696d69746976657308763620736c617368696e67304469737075746550726f6f66000010012474696d655f736c6f7445060140446973707574657354696d65536c6f740001106b696e644906014c536c617368696e674f6666656e63654b696e6400013c76616c696461746f725f696e646578b505013856616c696461746f72496e64657800013076616c696461746f725f69641d02012c56616c696461746f72496400004506104c706f6c6b61646f745f7072696d69746976657308763620736c617368696e6740446973707574657354696d65536c6f74000008013473657373696f6e5f696e64657810013053657373696f6e496e64657800013863616e6469646174655f686173680906013443616e6469646174654861736800004906104c706f6c6b61646f745f7072696d69746976657308763620736c617368696e674c536c617368696e674f6666656e63654b696e6400010828466f72496e76616c696400000030416761696e737456616c6964000100004d06106c706f6c6b61646f745f72756e74696d655f70617261636861696e734861737369676e65725f6f6e5f64656d616e641870616c6c65741043616c6c0404540001085c706c6163655f6f726465725f616c6c6f775f64656174680801286d61785f616d6f756e7418013042616c616e63654f663c543e00011c706172615f696495020118506172614964000004a0536565205b6050616c6c65743a3a706c6163655f6f726465725f616c6c6f775f6465617468605d2e58706c6163655f6f726465725f6b6565705f616c6976650801286d61785f616d6f756e7418013042616c616e63654f663c543e00011c706172615f6964950201185061726149640001049c536565205b6050616c6c65743a3a706c6163655f6f726465725f6b6565705f616c697665605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e5106105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3c70617261735f7265676973747261721870616c6c65741043616c6c0404540001242072656769737465720c010869649502011850617261496400013067656e657369735f68656164f5050120486561644461746100013c76616c69646174696f6e5f636f6465f105013856616c69646174696f6e436f646500000464536565205b6050616c6c65743a3a7265676973746572605d2e38666f7263655f726567697374657214010c77686f000130543a3a4163636f756e74496400011c6465706f73697418013042616c616e63654f663c543e00010869649502011850617261496400013067656e657369735f68656164f5050120486561644461746100013c76616c69646174696f6e5f636f6465f105013856616c69646174696f6e436f64650001047c536565205b6050616c6c65743a3a666f7263655f7265676973746572605d2e28646572656769737465720401086964950201185061726149640002046c536565205b6050616c6c65743a3a64657265676973746572605d2e10737761700801086964950201185061726149640001146f746865729502011850617261496400030454536565205b6050616c6c65743a3a73776170605d2e2c72656d6f76655f6c6f636b040110706172619502011850617261496400040470536565205b6050616c6c65743a3a72656d6f76655f6c6f636b605d2e1c7265736572766500050460536565205b6050616c6c65743a3a72657365727665605d2e206164645f6c6f636b040110706172619502011850617261496400060464536565205b6050616c6c65743a3a6164645f6c6f636b605d2e547363686564756c655f636f64655f7570677261646508011070617261950201185061726149640001206e65775f636f6465f105013856616c69646174696f6e436f646500070498536565205b6050616c6c65743a3a7363686564756c655f636f64655f75706772616465605d2e407365745f63757272656e745f6865616408011070617261950201185061726149640001206e65775f68656164f5050120486561644461746100080484536565205b6050616c6c65743a3a7365745f63757272656e745f68656164605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e5506105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e14736c6f74731870616c6c65741043616c6c04045400010c2c666f7263655f6c6561736514011070617261950201185061726149640001186c6561736572000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e000130706572696f645f626567696e1001404c65617365506572696f644f663c543e000130706572696f645f636f756e741001404c65617365506572696f644f663c543e00000470536565205b6050616c6c65743a3a666f7263655f6c65617365605d2e40636c6561725f616c6c5f6c6561736573040110706172619502011850617261496400010484536565205b6050616c6c65743a3a636c6561725f616c6c5f6c6561736573605d2e3c747269676765725f6f6e626f617264040110706172619502011850617261496400020480536565205b6050616c6c65743a3a747269676765725f6f6e626f617264605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e5906105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e2061756374696f6e731870616c6c65741043616c6c04045400010c2c6e65775f61756374696f6e0801206475726174696f6efc0144426c6f636b4e756d626572466f723c543e0001486c656173655f706572696f645f696e646578fc01404c65617365506572696f644f663c543e00000470536565205b6050616c6c65743a3a6e65775f61756374696f6e605d2e0c626964140110706172615d06011850617261496400013461756374696f6e5f696e646578fc013041756374696f6e496e64657800012866697273745f736c6f74fc01404c65617365506572696f644f663c543e0001246c6173745f736c6f74fc01404c65617365506572696f644f663c543e000118616d6f756e74dc013042616c616e63654f663c543e00010450536565205b6050616c6c65743a3a626964605d2e3863616e63656c5f61756374696f6e0002047c536565205b6050616c6c65743a3a63616e63656c5f61756374696f6e605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e5d060000069502006106105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e2463726f77646c6f616e1870616c6c65741043616c6c04045400012418637265617465180114696e6465785d06011850617261496400010c636170dc013042616c616e63654f663c543e00013066697273745f706572696f64fc01404c65617365506572696f644f663c543e00012c6c6173745f706572696f64fc01404c65617365506572696f644f663c543e00010c656e64fc0144426c6f636b4e756d626572466f723c543e00012076657269666965726506014c4f7074696f6e3c4d756c74695369676e65723e0000045c536565205b6050616c6c65743a3a637265617465605d2e28636f6e747269627574650c0114696e6465785d06011850617261496400011476616c7565dc013042616c616e63654f663c543e0001247369676e6174757265790301584f7074696f6e3c4d756c74695369676e61747572653e0001046c536565205b6050616c6c65743a3a636f6e74726962757465605d2e20776974686472617708010c77686f000130543a3a4163636f756e744964000114696e6465785d06011850617261496400020464536565205b6050616c6c65743a3a7769746864726177605d2e18726566756e64040114696e6465785d0601185061726149640003045c536565205b6050616c6c65743a3a726566756e64605d2e20646973736f6c7665040114696e6465785d06011850617261496400040464536565205b6050616c6c65743a3a646973736f6c7665605d2e1065646974180114696e6465785d06011850617261496400010c636170dc013042616c616e63654f663c543e00013066697273745f706572696f64fc01404c65617365506572696f644f663c543e00012c6c6173745f706572696f64fc01404c65617365506572696f644f663c543e00010c656e64fc0144426c6f636b4e756d626572466f723c543e00012076657269666965726506014c4f7074696f6e3c4d756c74695369676e65723e00050454536565205b6050616c6c65743a3a65646974605d2e206164645f6d656d6f080114696e646578950201185061726149640001106d656d6f34011c5665633c75383e00060464536565205b6050616c6c65743a3a6164645f6d656d6f605d2e10706f6b65040114696e6465789502011850617261496400070454536565205b6050616c6c65743a3a706f6b65605d2e38636f6e747269627574655f616c6c080114696e6465785d0601185061726149640001247369676e6174757265790301584f7074696f6e3c4d756c74695369676e61747572653e0008047c536565205b6050616c6c65743a3a636f6e747269627574655f616c6c605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e650604184f7074696f6e0404540169060108104e6f6e6500000010536f6d650400690600000100006906082873705f72756e74696d652c4d756c74695369676e657200010c1c456432353531390400c0013c656432353531393a3a5075626c69630000001c537232353531390400cc013c737232353531393a3a5075626c696300010014456364736104002d02013465636473613a3a5075626c6963000200006d06106c706f6c6b61646f745f72756e74696d655f70617261636861696e7320636f726574696d651870616c6c65741043616c6c04045400010848726571756573745f636f72655f636f756e74040114636f756e747901010c7531360001048c536565205b6050616c6c65743a3a726571756573745f636f72655f636f756e74605d2e2c61737369676e5f636f7265100110636f72657901013c42726f6b6572436f7265496e646578000114626567696e100144426c6f636b4e756d626572466f723c543e00012861737369676e6d656e747106018c5665633c28436f726541737369676e6d656e742c2050617274734f663537363030293e000120656e645f68696e74690201644f7074696f6e3c426c6f636b4e756d626572466f723c543e3e00040470536565205b6050616c6c65743a3a61737369676e5f636f7265605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e710600000275060075060000040879067d060079060c3470616c6c65745f62726f6b657248636f726574696d655f696e7465726661636538436f726541737369676e6d656e7400010c1049646c6500000010506f6f6c000100105461736b04001001185461736b4964000200007d060c6c706f6c6b61646f745f72756e74696d655f70617261636861696e734461737369676e65725f636f726574696d653050617274734f663537363030000004007901010c753136000081060c2870616c6c65745f78636d1870616c6c65741043616c6c0404540001341073656e640801106465737451010158426f783c56657273696f6e65644c6f636174696f6e3e00011c6d65737361676585060154426f783c56657273696f6e656458636d3c28293e3e00000454536565205b6050616c6c65743a3a73656e64605d2e3c74656c65706f72745f6173736574731001106465737451010158426f783c56657273696f6e65644c6f636174696f6e3e00012c62656e656669636961727951010158426f783c56657273696f6e65644c6f636174696f6e3e0001186173736574737d070150426f783c56657273696f6e65644173736574733e0001386665655f61737365745f6974656d10010c75333200010480536565205b6050616c6c65743a3a74656c65706f72745f617373657473605d2e5c726573657276655f7472616e736665725f6173736574731001106465737451010158426f783c56657273696f6e65644c6f636174696f6e3e00012c62656e656669636961727951010158426f783c56657273696f6e65644c6f636174696f6e3e0001186173736574737d070150426f783c56657273696f6e65644173736574733e0001386665655f61737365745f6974656d10010c753332000204a0536565205b6050616c6c65743a3a726573657276655f7472616e736665725f617373657473605d2e1c6578656375746508011c6d657373616765810701b4426f783c56657273696f6e656458636d3c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e3e0001286d61785f77656967687424011857656967687400030460536565205b6050616c6c65743a3a65786563757465605d2e44666f7263655f78636d5f76657273696f6e0801206c6f636174696f6e19010134426f783c4c6f636174696f6e3e00011c76657273696f6e10012858636d56657273696f6e00040488536565205b6050616c6c65743a3a666f7263655f78636d5f76657273696f6e605d2e64666f7263655f64656661756c745f78636d5f76657273696f6e0401446d617962655f78636d5f76657273696f6e690201484f7074696f6e3c58636d56657273696f6e3e000504a8536565205b6050616c6c65743a3a666f7263655f64656661756c745f78636d5f76657273696f6e605d2e78666f7263655f7375627363726962655f76657273696f6e5f6e6f746966790401206c6f636174696f6e51010158426f783c56657273696f6e65644c6f636174696f6e3e000604bc536565205b6050616c6c65743a3a666f7263655f7375627363726962655f76657273696f6e5f6e6f74696679605d2e80666f7263655f756e7375627363726962655f76657273696f6e5f6e6f746966790401206c6f636174696f6e51010158426f783c56657273696f6e65644c6f636174696f6e3e000704c4536565205b6050616c6c65743a3a666f7263655f756e7375627363726962655f76657273696f6e5f6e6f74696679605d2e7c6c696d697465645f726573657276655f7472616e736665725f6173736574731401106465737451010158426f783c56657273696f6e65644c6f636174696f6e3e00012c62656e656669636961727951010158426f783c56657273696f6e65644c6f636174696f6e3e0001186173736574737d070150426f783c56657273696f6e65644173736574733e0001386665655f61737365745f6974656d10010c7533320001307765696768745f6c696d69743107012c5765696768744c696d6974000804c0536565205b6050616c6c65743a3a6c696d697465645f726573657276655f7472616e736665725f617373657473605d2e5c6c696d697465645f74656c65706f72745f6173736574731401106465737451010158426f783c56657273696f6e65644c6f636174696f6e3e00012c62656e656669636961727951010158426f783c56657273696f6e65644c6f636174696f6e3e0001186173736574737d070150426f783c56657273696f6e65644173736574733e0001386665655f61737365745f6974656d10010c7533320001307765696768745f6c696d69743107012c5765696768744c696d6974000904a0536565205b6050616c6c65743a3a6c696d697465645f74656c65706f72745f617373657473605d2e40666f7263655f73757370656e73696f6e04012473757370656e646564780110626f6f6c000a0484536565205b6050616c6c65743a3a666f7263655f73757370656e73696f6e605d2e3c7472616e736665725f6173736574731401106465737451010158426f783c56657273696f6e65644c6f636174696f6e3e00012c62656e656669636961727951010158426f783c56657273696f6e65644c6f636174696f6e3e0001186173736574737d070150426f783c56657273696f6e65644173736574733e0001386665655f61737365745f6974656d10010c7533320001307765696768745f6c696d69743107012c5765696768744c696d6974000b0480536565205b6050616c6c65743a3a7472616e736665725f617373657473605d2e30636c61696d5f6173736574730801186173736574737d070150426f783c56657273696f6e65644173736574733e00012c62656e656669636961727951010158426f783c56657273696f6e65644c6f636174696f6e3e000c0474536565205b6050616c6c65743a3a636c61696d5f617373657473605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e8506080c78636d3056657273696f6e656458636d042c52756e74696d6543616c6c00010c08563204008906015076323a3a58636d3c52756e74696d6543616c6c3e0002000856330400d506015076333a3a58636d3c52756e74696d6543616c6c3e00030008563404003507015076343a3a58636d3c52756e74696d6543616c6c3e0004000089060c0c78636d0876320c58636d042c52756e74696d6543616c6c000004008d0601745665633c496e737472756374696f6e3c52756e74696d6543616c6c3e3e00008d0600000291060091060c0c78636d0876322c496e737472756374696f6e042c52756e74696d6543616c6c000170345769746864726177417373657404009506012c4d756c7469417373657473000000545265736572766541737365744465706f736974656404009506012c4d756c7469417373657473000100585265636569766554656c65706f72746564417373657404009506012c4d756c7469417373657473000200345175657279526573706f6e73650c012071756572795f696428011c51756572794964000120726573706f6e7365ad060120526573706f6e73650001286d61785f77656967687428010c753634000300345472616e7366657241737365740801186173736574739506012c4d756c746941737365747300012c62656e6566696369617279550101344d756c74694c6f636174696f6e000400505472616e736665725265736572766541737365740c01186173736574739506012c4d756c746941737365747300011064657374550101344d756c74694c6f636174696f6e00010c78636d8906011c58636d3c28293e000500205472616e736163740c012c6f726967696e5f74797065bd0601284f726967696e4b696e64000158726571756972655f7765696768745f61745f6d6f737428010c75363400011063616c6cc1060168446f75626c65456e636f6465643c52756e74696d6543616c6c3e0006006448726d704e65774368616e6e656c4f70656e526571756573740c011873656e646572fc010c7533320001406d61785f6d6573736167655f73697a65fc010c7533320001306d61785f6361706163697479fc010c7533320007004c48726d704368616e6e656c4163636570746564040124726563697069656e74fc010c7533320008004848726d704368616e6e656c436c6f73696e670c0124696e69746961746f72fc010c75333200011873656e646572fc010c753332000124726563697069656e74fc010c7533320009002c436c6561724f726967696e000a003444657363656e644f726967696e040059010154496e746572696f724d756c74694c6f636174696f6e000b002c5265706f72744572726f720c012071756572795f696428011c5175657279496400011064657374550101344d756c74694c6f636174696f6e00014c6d61785f726573706f6e73655f77656967687428010c753634000c00304465706f73697441737365740c0118617373657473c50601404d756c7469417373657446696c7465720001286d61785f617373657473fc010c75333200012c62656e6566696369617279550101344d756c74694c6f636174696f6e000d004c4465706f736974526573657276654173736574100118617373657473c50601404d756c7469417373657446696c7465720001286d61785f617373657473fc010c75333200011064657374550101344d756c74694c6f636174696f6e00010c78636d8906011c58636d3c28293e000e003445786368616e6765417373657408011067697665c50601404d756c7469417373657446696c74657200011c726563656976659506012c4d756c7469417373657473000f005c496e6974696174655265736572766557697468647261770c0118617373657473c50601404d756c7469417373657446696c74657200011c72657365727665550101344d756c74694c6f636174696f6e00010c78636d8906011c58636d3c28293e00100040496e69746961746554656c65706f72740c0118617373657473c50601404d756c7469417373657446696c74657200011064657374550101344d756c74694c6f636174696f6e00010c78636d8906011c58636d3c28293e001100305175657279486f6c64696e6710012071756572795f696428011c5175657279496400011064657374550101344d756c74694c6f636174696f6e000118617373657473c50601404d756c7469417373657446696c74657200014c6d61785f726573706f6e73655f77656967687428010c75363400120030427579457865637574696f6e080110666565739d0601284d756c746941737365740001307765696768745f6c696d6974d106012c5765696768744c696d697400130034526566756e64537572706c75730014003c5365744572726f7248616e646c657204008906014058636d3c52756e74696d6543616c6c3e0015002c536574417070656e64697804008906014058636d3c52756e74696d6543616c6c3e00160028436c6561724572726f7200170028436c61696d41737365740801186173736574739506012c4d756c74694173736574730001187469636b6574550101344d756c74694c6f636174696f6e0018001054726170040028010c7536340019004053756273637269626556657273696f6e08012071756572795f696428011c5175657279496400014c6d61785f726573706f6e73655f77656967687428010c753634001a0048556e73756273637269626556657273696f6e001b00009506100c78636d087632286d756c746961737365742c4d756c7469417373657473000004009906013c5665633c4d756c746941737365743e000099060000029d06009d06100c78636d087632286d756c74696173736574284d756c7469417373657400000801086964a106011c4173736574496400010c66756ea506012c46756e676962696c6974790000a106100c78636d087632286d756c746961737365741c4173736574496400010820436f6e63726574650400550101344d756c74694c6f636174696f6e000000204162737472616374040034011c5665633c75383e00010000a506100c78636d087632286d756c746961737365742c46756e676962696c6974790001082046756e6769626c650400dc0110753132380000002c4e6f6e46756e6769626c650400a90601344173736574496e7374616e636500010000a906100c78636d087632286d756c74696173736574344173736574496e7374616e636500011c24556e646566696e656400000014496e6465780400dc01107531323800010018417272617934040044011c5b75383b20345d0002001841727261793804000d03011c5b75383b20385d0003001c417272617931360400a801205b75383b2031365d0004001c4172726179333204000401205b75383b2033325d00050010426c6f62040034011c5665633c75383e00060000ad060c0c78636d08763220526573706f6e7365000110104e756c6c0000001841737365747304009506012c4d756c74694173736574730001003c457865637574696f6e526573756c740400b10601504f7074696f6e3c287533322c204572726f72293e0002001c56657273696f6e040010013873757065723a3a56657273696f6e00030000b10604184f7074696f6e04045401b5060108104e6f6e6500000010536f6d650400b5060000010000b5060000040810b90600b906100c78636d08763218747261697473144572726f72000168204f766572666c6f7700000034556e696d706c656d656e74656400010060556e74727573746564526573657276654c6f636174696f6e00020064556e7472757374656454656c65706f72744c6f636174696f6e000300444d756c74694c6f636174696f6e46756c6c000400684d756c74694c6f636174696f6e4e6f74496e7665727469626c65000500244261644f726967696e0006003c496e76616c69644c6f636174696f6e0007003441737365744e6f74466f756e64000800544661696c6564546f5472616e7361637441737365740009003c4e6f74576974686472617761626c65000a00484c6f636174696f6e43616e6e6f74486f6c64000b0054457863656564734d61784d65737361676553697a65000c005844657374696e6174696f6e556e737570706f72746564000d00245472616e73706f7274000e0028556e726f757461626c65000f0030556e6b6e6f776e436c61696d001000384661696c6564546f4465636f6465001100404d6178576569676874496e76616c6964001200384e6f74486f6c64696e674665657300130030546f6f457870656e73697665001400105472617004002c010c7536340015004c556e68616e646c656458636d56657273696f6e001600485765696768744c696d69745265616368656404002c01185765696768740017001c426172726965720018004c5765696768744e6f74436f6d70757461626c6500190000bd060c0c78636d087632284f726967696e4b696e64000110184e617469766500000040536f7665726569676e4163636f756e74000100245375706572757365720002000c58636d00030000c1060c0c78636d38646f75626c655f656e636f64656434446f75626c65456e636f646564040454000004011c656e636f64656434011c5665633c75383e0000c506100c78636d087632286d756c74696173736574404d756c7469417373657446696c74657200010820446566696e69746504009506012c4d756c74694173736574730000001057696c640400c906013857696c644d756c7469417373657400010000c906100c78636d087632286d756c746961737365743857696c644d756c746941737365740001080c416c6c00000014416c6c4f660801086964a106011c4173736574496400010c66756ecd06013c57696c6446756e676962696c69747900010000cd06100c78636d087632286d756c746961737365743c57696c6446756e676962696c6974790001082046756e6769626c650000002c4e6f6e46756e6769626c6500010000d1060c0c78636d0876322c5765696768744c696d697400010824556e6c696d697465640000001c4c696d69746564040028010c75363400010000d5060c0c78636d0876330c58636d041043616c6c00000400d90601585665633c496e737472756374696f6e3c43616c6c3e3e0000d906000002dd0600dd060c0c78636d0876332c496e737472756374696f6e041043616c6c0001c034576974686472617741737365740400e106012c4d756c7469417373657473000000545265736572766541737365744465706f73697465640400e106012c4d756c7469417373657473000100585265636569766554656c65706f7274656441737365740400e106012c4d756c7469417373657473000200345175657279526573706f6e736510012071756572795f696428011c51756572794964000120726573706f6e7365f5060120526573706f6e73650001286d61785f77656967687424011857656967687400011c717565726965721d0701544f7074696f6e3c4d756c74694c6f636174696f6e3e000300345472616e736665724173736574080118617373657473e106012c4d756c746941737365747300012c62656e6566696369617279f001344d756c74694c6f636174696f6e000400505472616e736665725265736572766541737365740c0118617373657473e106012c4d756c746941737365747300011064657374f001344d756c74694c6f636174696f6e00010c78636dd506011c58636d3c28293e000500205472616e736163740c012c6f726967696e5f6b696e64bd0601284f726967696e4b696e64000158726571756972655f7765696768745f61745f6d6f737424011857656967687400011063616c6cc106014c446f75626c65456e636f6465643c43616c6c3e0006006448726d704e65774368616e6e656c4f70656e526571756573740c011873656e646572fc010c7533320001406d61785f6d6573736167655f73697a65fc010c7533320001306d61785f6361706163697479fc010c7533320007004c48726d704368616e6e656c4163636570746564040124726563697069656e74fc010c7533320008004848726d704368616e6e656c436c6f73696e670c0124696e69746961746f72fc010c75333200011873656e646572fc010c753332000124726563697069656e74fc010c7533320009002c436c6561724f726967696e000a003444657363656e644f726967696e0400f40154496e746572696f724d756c74694c6f636174696f6e000b002c5265706f72744572726f720400210701445175657279526573706f6e7365496e666f000c00304465706f7369744173736574080118617373657473250701404d756c7469417373657446696c74657200012c62656e6566696369617279f001344d756c74694c6f636174696f6e000d004c4465706f7369745265736572766541737365740c0118617373657473250701404d756c7469417373657446696c74657200011064657374f001344d756c74694c6f636174696f6e00010c78636dd506011c58636d3c28293e000e003445786368616e676541737365740c011067697665250701404d756c7469417373657446696c74657200011077616e74e106012c4d756c746941737365747300011c6d6178696d616c780110626f6f6c000f005c496e6974696174655265736572766557697468647261770c0118617373657473250701404d756c7469417373657446696c74657200011c72657365727665f001344d756c74694c6f636174696f6e00010c78636dd506011c58636d3c28293e00100040496e69746961746554656c65706f72740c0118617373657473250701404d756c7469417373657446696c74657200011064657374f001344d756c74694c6f636174696f6e00010c78636dd506011c58636d3c28293e001100345265706f7274486f6c64696e67080134726573706f6e73655f696e666f210701445175657279526573706f6e7365496e666f000118617373657473250701404d756c7469417373657446696c74657200120030427579457865637574696f6e08011066656573e90601284d756c746941737365740001307765696768745f6c696d69743107012c5765696768744c696d697400130034526566756e64537572706c75730014003c5365744572726f7248616e646c65720400d506012458636d3c43616c6c3e0015002c536574417070656e6469780400d506012458636d3c43616c6c3e00160028436c6561724572726f7200170028436c61696d4173736574080118617373657473e106012c4d756c74694173736574730001187469636b6574f001344d756c74694c6f636174696f6e0018001054726170040028010c7536340019004053756273637269626556657273696f6e08012071756572795f696428011c5175657279496400014c6d61785f726573706f6e73655f776569676874240118576569676874001a0048556e73756273637269626556657273696f6e001b00244275726e41737365740400e106012c4d756c7469417373657473001c002c45787065637441737365740400e106012c4d756c7469417373657473001d00304578706563744f726967696e04001d0701544f7074696f6e3c4d756c74694c6f636174696f6e3e001e002c4578706563744572726f720400f90601504f7074696f6e3c287533322c204572726f72293e001f00504578706563745472616e736163745374617475730400150701384d617962654572726f72436f64650020002c517565727950616c6c657408012c6d6f64756c655f6e616d6534011c5665633c75383e000134726573706f6e73655f696e666f210701445175657279526573706f6e7365496e666f0021003045787065637450616c6c6574140114696e646578fc010c7533320001106e616d6534011c5665633c75383e00012c6d6f64756c655f6e616d6534011c5665633c75383e00012c63726174655f6d616a6f72fc010c75333200013c6d696e5f63726174655f6d696e6f72fc010c753332002200505265706f72745472616e736163745374617475730400210701445175657279526573706f6e7365496e666f0023004c436c6561725472616e736163745374617475730024003c556e6976657273616c4f726967696e0400f801204a756e6374696f6e002500344578706f72744d6573736167650c011c6e6574776f726b050101244e6574776f726b496400012c64657374696e6174696f6ef40154496e746572696f724d756c74694c6f636174696f6e00010c78636dd506011c58636d3c28293e002600244c6f636b41737365740801146173736574e90601284d756c74694173736574000120756e6c6f636b6572f001344d756c74694c6f636174696f6e0027002c556e6c6f636b41737365740801146173736574e90601284d756c74694173736574000118746172676574f001344d756c74694c6f636174696f6e002800384e6f7465556e6c6f636b61626c650801146173736574e90601284d756c746941737365740001146f776e6572f001344d756c74694c6f636174696f6e0029003452657175657374556e6c6f636b0801146173736574e90601284d756c746941737365740001186c6f636b6572f001344d756c74694c6f636174696f6e002a002c536574466565734d6f64650401306a69745f7769746864726177780110626f6f6c002b0020536574546f70696304000401205b75383b2033325d002c0028436c656172546f706963002d002c416c6961734f726967696e0400f001344d756c74694c6f636174696f6e002e003c556e70616964457865637574696f6e0801307765696768745f6c696d69743107012c5765696768744c696d6974000130636865636b5f6f726967696e1d0701544f7074696f6e3c4d756c74694c6f636174696f6e3e002f0000e106100c78636d087633286d756c746961737365742c4d756c746941737365747300000400e506013c5665633c4d756c746941737365743e0000e506000002e90600e906100c78636d087633286d756c74696173736574284d756c74694173736574000008010869641501011c4173736574496400010c66756eed06012c46756e676962696c6974790000ed06100c78636d087633286d756c746961737365742c46756e676962696c6974790001082046756e6769626c650400dc0110753132380000002c4e6f6e46756e6769626c650400f10601344173736574496e7374616e636500010000f106100c78636d087633286d756c74696173736574344173736574496e7374616e636500011824556e646566696e656400000014496e6465780400dc01107531323800010018417272617934040044011c5b75383b20345d0002001841727261793804000d03011c5b75383b20385d0003001c417272617931360400a801205b75383b2031365d0004001c4172726179333204000401205b75383b2033325d00050000f5060c0c78636d08763320526573706f6e7365000118104e756c6c000000184173736574730400e106012c4d756c74694173736574730001003c457865637574696f6e526573756c740400f90601504f7074696f6e3c287533322c204572726f72293e0002001c56657273696f6e040010013873757065723a3a56657273696f6e0003002c50616c6c657473496e666f040005070198426f756e6465645665633c50616c6c6574496e666f2c204d617850616c6c657473496e666f3e000400384469737061746368526573756c740400150701384d617962654572726f72436f646500050000f90604184f7074696f6e04045401fd060108104e6f6e6500000010536f6d650400fd060000010000fd0600000408100107000107100c78636d08763318747261697473144572726f720001a0204f766572666c6f7700000034556e696d706c656d656e74656400010060556e74727573746564526573657276654c6f636174696f6e00020064556e7472757374656454656c65706f72744c6f636174696f6e000300304c6f636174696f6e46756c6c000400544c6f636174696f6e4e6f74496e7665727469626c65000500244261644f726967696e0006003c496e76616c69644c6f636174696f6e0007003441737365744e6f74466f756e64000800544661696c6564546f5472616e7361637441737365740009003c4e6f74576974686472617761626c65000a00484c6f636174696f6e43616e6e6f74486f6c64000b0054457863656564734d61784d65737361676553697a65000c005844657374696e6174696f6e556e737570706f72746564000d00245472616e73706f7274000e0028556e726f757461626c65000f0030556e6b6e6f776e436c61696d001000384661696c6564546f4465636f6465001100404d6178576569676874496e76616c6964001200384e6f74486f6c64696e674665657300130030546f6f457870656e73697665001400105472617004002c010c753634001500404578706563746174696f6e46616c73650016003850616c6c65744e6f74466f756e64001700304e616d654d69736d617463680018004c56657273696f6e496e636f6d70617469626c6500190050486f6c64696e67576f756c644f766572666c6f77001a002c4578706f72744572726f72001b00385265616e63686f724661696c6564001c00184e6f4465616c001d0028466565734e6f744d6574001e00244c6f636b4572726f72001f00304e6f5065726d697373696f6e00200028556e616e63686f726564002100384e6f744465706f73697461626c650022004c556e68616e646c656458636d56657273696f6e002300485765696768744c696d69745265616368656404002401185765696768740024001c426172726965720025004c5765696768744e6f74436f6d70757461626c650026004445786365656473537461636b4c696d69740027000005070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454010907045300000400110701185665633c543e000009070c0c78636d0876332850616c6c6574496e666f0000180114696e646578fc010c7533320001106e616d650d070180426f756e6465645665633c75382c204d617850616c6c65744e616d654c656e3e00012c6d6f64756c655f6e616d650d070180426f756e6465645665633c75382c204d617850616c6c65744e616d654c656e3e0001146d616a6f72fc010c7533320001146d696e6f72fc010c7533320001147061746368fc010c75333200000d070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e0000110700000209070015070c0c78636d087633384d617962654572726f72436f646500010c1c53756363657373000000144572726f7204001907018c426f756e6465645665633c75382c204d617844697370617463684572726f724c656e3e000100385472756e63617465644572726f7204001907018c426f756e6465645665633c75382c204d617844697370617463684572726f724c656e3e0002000019070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e00001d0704184f7074696f6e04045401f00108104e6f6e6500000010536f6d650400f0000001000021070c0c78636d087633445175657279526573706f6e7365496e666f00000c012c64657374696e6174696f6ef001344d756c74694c6f636174696f6e00012071756572795f696428011c517565727949640001286d61785f77656967687424011857656967687400002507100c78636d087633286d756c74696173736574404d756c7469417373657446696c74657200010820446566696e6974650400e106012c4d756c74694173736574730000001057696c6404002907013857696c644d756c74694173736574000100002907100c78636d087633286d756c746961737365743857696c644d756c746941737365740001100c416c6c00000014416c6c4f6608010869641501011c4173736574496400010c66756e2d07013c57696c6446756e676962696c69747900010028416c6c436f756e7465640400fc010c75333200020030416c6c4f66436f756e7465640c010869641501011c4173736574496400010c66756e2d07013c57696c6446756e676962696c697479000114636f756e74fc010c753332000300002d07100c78636d087633286d756c746961737365743c57696c6446756e676962696c6974790001082046756e6769626c650000002c4e6f6e46756e6769626c650001000031070c0c78636d0876332c5765696768744c696d697400010824556e6c696d697465640000001c4c696d6974656404002401185765696768740001000035070c2c73746167696e675f78636d0876340c58636d041043616c6c00000400390701585665633c496e737472756374696f6e3c43616c6c3e3e000039070000023d07003d070c2c73746167696e675f78636d0876342c496e737472756374696f6e041043616c6c0001c03457697468647261774173736574040041070118417373657473000000545265736572766541737365744465706f7369746564040041070118417373657473000100585265636569766554656c65706f727465644173736574040041070118417373657473000200345175657279526573706f6e736510012071756572795f696428011c51756572794964000120726573706f6e736555070120526573706f6e73650001286d61785f77656967687424011857656967687400011c71756572696572690701404f7074696f6e3c4c6f636174696f6e3e000300345472616e7366657241737365740801186173736574734107011841737365747300012c62656e6566696369617279190101204c6f636174696f6e000400505472616e736665725265736572766541737365740c01186173736574734107011841737365747300011064657374190101204c6f636174696f6e00010c78636d3507011c58636d3c28293e000500205472616e736163740c012c6f726967696e5f6b696e64bd0601284f726967696e4b696e64000158726571756972655f7765696768745f61745f6d6f737424011857656967687400011063616c6cc106014c446f75626c65456e636f6465643c43616c6c3e0006006448726d704e65774368616e6e656c4f70656e526571756573740c011873656e646572fc010c7533320001406d61785f6d6573736167655f73697a65fc010c7533320001306d61785f6361706163697479fc010c7533320007004c48726d704368616e6e656c4163636570746564040124726563697069656e74fc010c7533320008004848726d704368616e6e656c436c6f73696e670c0124696e69746961746f72fc010c75333200011873656e646572fc010c753332000124726563697069656e74fc010c7533320009002c436c6561724f726967696e000a003444657363656e644f726967696e04001d010140496e746572696f724c6f636174696f6e000b002c5265706f72744572726f7204006d0701445175657279526573706f6e7365496e666f000c00304465706f73697441737365740801186173736574737107012c417373657446696c74657200012c62656e6566696369617279190101204c6f636174696f6e000d004c4465706f7369745265736572766541737365740c01186173736574737107012c417373657446696c74657200011064657374190101204c6f636174696f6e00010c78636d3507011c58636d3c28293e000e003445786368616e676541737365740c0110676976657107012c417373657446696c74657200011077616e744107011841737365747300011c6d6178696d616c780110626f6f6c000f005c496e6974696174655265736572766557697468647261770c01186173736574737107012c417373657446696c74657200011c72657365727665190101204c6f636174696f6e00010c78636d3507011c58636d3c28293e00100040496e69746961746554656c65706f72740c01186173736574737107012c417373657446696c74657200011064657374190101204c6f636174696f6e00010c78636d3507011c58636d3c28293e001100345265706f7274486f6c64696e67080134726573706f6e73655f696e666f6d0701445175657279526573706f6e7365496e666f0001186173736574737107012c417373657446696c74657200120030427579457865637574696f6e080110666565734907011441737365740001307765696768745f6c696d69743107012c5765696768744c696d697400130034526566756e64537572706c75730014003c5365744572726f7248616e646c657204003507012458636d3c43616c6c3e0015002c536574417070656e64697804003507012458636d3c43616c6c3e00160028436c6561724572726f7200170028436c61696d4173736574080118617373657473410701184173736574730001187469636b6574190101204c6f636174696f6e0018001054726170040028010c7536340019004053756273637269626556657273696f6e08012071756572795f696428011c5175657279496400014c6d61785f726573706f6e73655f776569676874240118576569676874001a0048556e73756273637269626556657273696f6e001b00244275726e4173736574040041070118417373657473001c002c4578706563744173736574040041070118417373657473001d00304578706563744f726967696e0400690701404f7074696f6e3c4c6f636174696f6e3e001e002c4578706563744572726f720400f90601504f7074696f6e3c287533322c204572726f72293e001f00504578706563745472616e736163745374617475730400150701384d617962654572726f72436f64650020002c517565727950616c6c657408012c6d6f64756c655f6e616d6534011c5665633c75383e000134726573706f6e73655f696e666f6d0701445175657279526573706f6e7365496e666f0021003045787065637450616c6c6574140114696e646578fc010c7533320001106e616d6534011c5665633c75383e00012c6d6f64756c655f6e616d6534011c5665633c75383e00012c63726174655f6d616a6f72fc010c75333200013c6d696e5f63726174655f6d696e6f72fc010c753332002200505265706f72745472616e7361637453746174757304006d0701445175657279526573706f6e7365496e666f0023004c436c6561725472616e736163745374617475730024003c556e6976657273616c4f726967696e0400250101204a756e6374696f6e002500344578706f72744d6573736167650c011c6e6574776f726b2d0101244e6574776f726b496400012c64657374696e6174696f6e1d010140496e746572696f724c6f636174696f6e00010c78636d3507011c58636d3c28293e002600244c6f636b41737365740801146173736574490701144173736574000120756e6c6f636b6572190101204c6f636174696f6e0027002c556e6c6f636b41737365740801146173736574490701144173736574000118746172676574190101204c6f636174696f6e002800384e6f7465556e6c6f636b61626c6508011461737365744907011441737365740001146f776e6572190101204c6f636174696f6e0029003452657175657374556e6c6f636b08011461737365744907011441737365740001186c6f636b6572190101204c6f636174696f6e002a002c536574466565734d6f64650401306a69745f7769746864726177780110626f6f6c002b0020536574546f70696304000401205b75383b2033325d002c0028436c656172546f706963002d002c416c6961734f726967696e0400190101204c6f636174696f6e002e003c556e70616964457865637574696f6e0801307765696768745f6c696d69743107012c5765696768744c696d6974000130636865636b5f6f726967696e690701404f7074696f6e3c4c6f636174696f6e3e002f00004107102c73746167696e675f78636d0876341461737365741841737365747300000400450701285665633c41737365743e000045070000024907004907102c73746167696e675f78636d087634146173736574144173736574000008010869644d01011c4173736574496400010c66756e4d07012c46756e676962696c69747900004d07102c73746167696e675f78636d0876341461737365742c46756e676962696c6974790001082046756e6769626c650400dc0110753132380000002c4e6f6e46756e6769626c650400510701344173736574496e7374616e6365000100005107102c73746167696e675f78636d087634146173736574344173736574496e7374616e636500011824556e646566696e656400000014496e6465780400dc01107531323800010018417272617934040044011c5b75383b20345d0002001841727261793804000d03011c5b75383b20385d0003001c417272617931360400a801205b75383b2031365d0004001c4172726179333204000401205b75383b2033325d0005000055070c2c73746167696e675f78636d08763420526573706f6e7365000118104e756c6c000000184173736574730400410701184173736574730001003c457865637574696f6e526573756c740400f90601504f7074696f6e3c287533322c204572726f72293e0002001c56657273696f6e040010013873757065723a3a56657273696f6e0003002c50616c6c657473496e666f040059070198426f756e6465645665633c50616c6c6574496e666f2c204d617850616c6c657473496e666f3e000400384469737061746368526573756c740400150701384d617962654572726f72436f64650005000059070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454015d07045300000400650701185665633c543e00005d070c2c73746167696e675f78636d0876342850616c6c6574496e666f0000180114696e646578fc010c7533320001106e616d6561070180426f756e6465645665633c75382c204d617850616c6c65744e616d654c656e3e00012c6d6f64756c655f6e616d6561070180426f756e6465645665633c75382c204d617850616c6c65744e616d654c656e3e0001146d616a6f72fc010c7533320001146d696e6f72fc010c7533320001147061746368fc010c753332000061070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e000065070000025d0700690704184f7074696f6e0404540119010108104e6f6e6500000010536f6d650400190100000100006d070c2c73746167696e675f78636d087634445175657279526573706f6e7365496e666f00000c012c64657374696e6174696f6e190101204c6f636174696f6e00012071756572795f696428011c517565727949640001286d61785f77656967687424011857656967687400007107102c73746167696e675f78636d0876341461737365742c417373657446696c74657200010820446566696e6974650400410701184173736574730000001057696c6404007507012457696c644173736574000100007507102c73746167696e675f78636d0876341461737365742457696c6441737365740001100c416c6c00000014416c6c4f6608010869644d01011c4173736574496400010c66756e7907013c57696c6446756e676962696c69747900010028416c6c436f756e7465640400fc010c75333200020030416c6c4f66436f756e7465640c010869644d01011c4173736574496400010c66756e7907013c57696c6446756e676962696c697479000114636f756e74fc010c753332000300007907102c73746167696e675f78636d0876341461737365743c57696c6446756e676962696c6974790001082046756e6769626c650000002c4e6f6e46756e6769626c65000100007d07080c78636d3c56657273696f6e656441737365747300010c08563204009506013c76323a3a4d756c74694173736574730001000856330400e106013c76333a3a4d756c746941737365747300030008563404004107012876343a3a417373657473000400008107080c78636d3056657273696f6e656458636d042c52756e74696d6543616c6c00010c08563204008507015076323a3a58636d3c52756e74696d6543616c6c3e00020008563304009507015076333a3a58636d3c52756e74696d6543616c6c3e0003000856340400a107015076343a3a58636d3c52756e74696d6543616c6c3e0004000085070c0c78636d0876320c58636d042c52756e74696d6543616c6c00000400890701745665633c496e737472756374696f6e3c52756e74696d6543616c6c3e3e000089070000028d07008d070c0c78636d0876322c496e737472756374696f6e042c52756e74696d6543616c6c000170345769746864726177417373657404009506012c4d756c7469417373657473000000545265736572766541737365744465706f736974656404009506012c4d756c7469417373657473000100585265636569766554656c65706f72746564417373657404009506012c4d756c7469417373657473000200345175657279526573706f6e73650c012071756572795f696428011c51756572794964000120726573706f6e7365ad060120526573706f6e73650001286d61785f77656967687428010c753634000300345472616e7366657241737365740801186173736574739506012c4d756c746941737365747300012c62656e6566696369617279550101344d756c74694c6f636174696f6e000400505472616e736665725265736572766541737365740c01186173736574739506012c4d756c746941737365747300011064657374550101344d756c74694c6f636174696f6e00010c78636d8906011c58636d3c28293e000500205472616e736163740c012c6f726967696e5f74797065bd0601284f726967696e4b696e64000158726571756972655f7765696768745f61745f6d6f737428010c75363400011063616c6c91070168446f75626c65456e636f6465643c52756e74696d6543616c6c3e0006006448726d704e65774368616e6e656c4f70656e526571756573740c011873656e646572fc010c7533320001406d61785f6d6573736167655f73697a65fc010c7533320001306d61785f6361706163697479fc010c7533320007004c48726d704368616e6e656c4163636570746564040124726563697069656e74fc010c7533320008004848726d704368616e6e656c436c6f73696e670c0124696e69746961746f72fc010c75333200011873656e646572fc010c753332000124726563697069656e74fc010c7533320009002c436c6561724f726967696e000a003444657363656e644f726967696e040059010154496e746572696f724d756c74694c6f636174696f6e000b002c5265706f72744572726f720c012071756572795f696428011c5175657279496400011064657374550101344d756c74694c6f636174696f6e00014c6d61785f726573706f6e73655f77656967687428010c753634000c00304465706f73697441737365740c0118617373657473c50601404d756c7469417373657446696c7465720001286d61785f617373657473fc010c75333200012c62656e6566696369617279550101344d756c74694c6f636174696f6e000d004c4465706f736974526573657276654173736574100118617373657473c50601404d756c7469417373657446696c7465720001286d61785f617373657473fc010c75333200011064657374550101344d756c74694c6f636174696f6e00010c78636d8906011c58636d3c28293e000e003445786368616e6765417373657408011067697665c50601404d756c7469417373657446696c74657200011c726563656976659506012c4d756c7469417373657473000f005c496e6974696174655265736572766557697468647261770c0118617373657473c50601404d756c7469417373657446696c74657200011c72657365727665550101344d756c74694c6f636174696f6e00010c78636d8906011c58636d3c28293e00100040496e69746961746554656c65706f72740c0118617373657473c50601404d756c7469417373657446696c74657200011064657374550101344d756c74694c6f636174696f6e00010c78636d8906011c58636d3c28293e001100305175657279486f6c64696e6710012071756572795f696428011c5175657279496400011064657374550101344d756c74694c6f636174696f6e000118617373657473c50601404d756c7469417373657446696c74657200014c6d61785f726573706f6e73655f77656967687428010c75363400120030427579457865637574696f6e080110666565739d0601284d756c746941737365740001307765696768745f6c696d6974d106012c5765696768744c696d697400130034526566756e64537572706c75730014003c5365744572726f7248616e646c657204008507014058636d3c52756e74696d6543616c6c3e0015002c536574417070656e64697804008507014058636d3c52756e74696d6543616c6c3e00160028436c6561724572726f7200170028436c61696d41737365740801186173736574739506012c4d756c74694173736574730001187469636b6574550101344d756c74694c6f636174696f6e0018001054726170040028010c7536340019004053756273637269626556657273696f6e08012071756572795f696428011c5175657279496400014c6d61785f726573706f6e73655f77656967687428010c753634001a0048556e73756273637269626556657273696f6e001b000091070c0c78636d38646f75626c655f656e636f64656434446f75626c65456e636f646564040454000004011c656e636f64656434011c5665633c75383e000095070c0c78636d0876330c58636d041043616c6c00000400990701585665633c496e737472756374696f6e3c43616c6c3e3e000099070000029d07009d070c0c78636d0876332c496e737472756374696f6e041043616c6c0001c034576974686472617741737365740400e106012c4d756c7469417373657473000000545265736572766541737365744465706f73697465640400e106012c4d756c7469417373657473000100585265636569766554656c65706f7274656441737365740400e106012c4d756c7469417373657473000200345175657279526573706f6e736510012071756572795f696428011c51756572794964000120726573706f6e7365f5060120526573706f6e73650001286d61785f77656967687424011857656967687400011c717565726965721d0701544f7074696f6e3c4d756c74694c6f636174696f6e3e000300345472616e736665724173736574080118617373657473e106012c4d756c746941737365747300012c62656e6566696369617279f001344d756c74694c6f636174696f6e000400505472616e736665725265736572766541737365740c0118617373657473e106012c4d756c746941737365747300011064657374f001344d756c74694c6f636174696f6e00010c78636dd506011c58636d3c28293e000500205472616e736163740c012c6f726967696e5f6b696e64bd0601284f726967696e4b696e64000158726571756972655f7765696768745f61745f6d6f737424011857656967687400011063616c6c9107014c446f75626c65456e636f6465643c43616c6c3e0006006448726d704e65774368616e6e656c4f70656e526571756573740c011873656e646572fc010c7533320001406d61785f6d6573736167655f73697a65fc010c7533320001306d61785f6361706163697479fc010c7533320007004c48726d704368616e6e656c4163636570746564040124726563697069656e74fc010c7533320008004848726d704368616e6e656c436c6f73696e670c0124696e69746961746f72fc010c75333200011873656e646572fc010c753332000124726563697069656e74fc010c7533320009002c436c6561724f726967696e000a003444657363656e644f726967696e0400f40154496e746572696f724d756c74694c6f636174696f6e000b002c5265706f72744572726f720400210701445175657279526573706f6e7365496e666f000c00304465706f7369744173736574080118617373657473250701404d756c7469417373657446696c74657200012c62656e6566696369617279f001344d756c74694c6f636174696f6e000d004c4465706f7369745265736572766541737365740c0118617373657473250701404d756c7469417373657446696c74657200011064657374f001344d756c74694c6f636174696f6e00010c78636dd506011c58636d3c28293e000e003445786368616e676541737365740c011067697665250701404d756c7469417373657446696c74657200011077616e74e106012c4d756c746941737365747300011c6d6178696d616c780110626f6f6c000f005c496e6974696174655265736572766557697468647261770c0118617373657473250701404d756c7469417373657446696c74657200011c72657365727665f001344d756c74694c6f636174696f6e00010c78636dd506011c58636d3c28293e00100040496e69746961746554656c65706f72740c0118617373657473250701404d756c7469417373657446696c74657200011064657374f001344d756c74694c6f636174696f6e00010c78636dd506011c58636d3c28293e001100345265706f7274486f6c64696e67080134726573706f6e73655f696e666f210701445175657279526573706f6e7365496e666f000118617373657473250701404d756c7469417373657446696c74657200120030427579457865637574696f6e08011066656573e90601284d756c746941737365740001307765696768745f6c696d69743107012c5765696768744c696d697400130034526566756e64537572706c75730014003c5365744572726f7248616e646c657204009507012458636d3c43616c6c3e0015002c536574417070656e64697804009507012458636d3c43616c6c3e00160028436c6561724572726f7200170028436c61696d4173736574080118617373657473e106012c4d756c74694173736574730001187469636b6574f001344d756c74694c6f636174696f6e0018001054726170040028010c7536340019004053756273637269626556657273696f6e08012071756572795f696428011c5175657279496400014c6d61785f726573706f6e73655f776569676874240118576569676874001a0048556e73756273637269626556657273696f6e001b00244275726e41737365740400e106012c4d756c7469417373657473001c002c45787065637441737365740400e106012c4d756c7469417373657473001d00304578706563744f726967696e04001d0701544f7074696f6e3c4d756c74694c6f636174696f6e3e001e002c4578706563744572726f720400f90601504f7074696f6e3c287533322c204572726f72293e001f00504578706563745472616e736163745374617475730400150701384d617962654572726f72436f64650020002c517565727950616c6c657408012c6d6f64756c655f6e616d6534011c5665633c75383e000134726573706f6e73655f696e666f210701445175657279526573706f6e7365496e666f0021003045787065637450616c6c6574140114696e646578fc010c7533320001106e616d6534011c5665633c75383e00012c6d6f64756c655f6e616d6534011c5665633c75383e00012c63726174655f6d616a6f72fc010c75333200013c6d696e5f63726174655f6d696e6f72fc010c753332002200505265706f72745472616e736163745374617475730400210701445175657279526573706f6e7365496e666f0023004c436c6561725472616e736163745374617475730024003c556e6976657273616c4f726967696e0400f801204a756e6374696f6e002500344578706f72744d6573736167650c011c6e6574776f726b050101244e6574776f726b496400012c64657374696e6174696f6ef40154496e746572696f724d756c74694c6f636174696f6e00010c78636dd506011c58636d3c28293e002600244c6f636b41737365740801146173736574e90601284d756c74694173736574000120756e6c6f636b6572f001344d756c74694c6f636174696f6e0027002c556e6c6f636b41737365740801146173736574e90601284d756c74694173736574000118746172676574f001344d756c74694c6f636174696f6e002800384e6f7465556e6c6f636b61626c650801146173736574e90601284d756c746941737365740001146f776e6572f001344d756c74694c6f636174696f6e0029003452657175657374556e6c6f636b0801146173736574e90601284d756c746941737365740001186c6f636b6572f001344d756c74694c6f636174696f6e002a002c536574466565734d6f64650401306a69745f7769746864726177780110626f6f6c002b0020536574546f70696304000401205b75383b2033325d002c0028436c656172546f706963002d002c416c6961734f726967696e0400f001344d756c74694c6f636174696f6e002e003c556e70616964457865637574696f6e0801307765696768745f6c696d69743107012c5765696768744c696d6974000130636865636b5f6f726967696e1d0701544f7074696f6e3c4d756c74694c6f636174696f6e3e002f0000a1070c2c73746167696e675f78636d0876340c58636d041043616c6c00000400a50701585665633c496e737472756374696f6e3c43616c6c3e3e0000a507000002a90700a9070c2c73746167696e675f78636d0876342c496e737472756374696f6e041043616c6c0001c03457697468647261774173736574040041070118417373657473000000545265736572766541737365744465706f7369746564040041070118417373657473000100585265636569766554656c65706f727465644173736574040041070118417373657473000200345175657279526573706f6e736510012071756572795f696428011c51756572794964000120726573706f6e736555070120526573706f6e73650001286d61785f77656967687424011857656967687400011c71756572696572690701404f7074696f6e3c4c6f636174696f6e3e000300345472616e7366657241737365740801186173736574734107011841737365747300012c62656e6566696369617279190101204c6f636174696f6e000400505472616e736665725265736572766541737365740c01186173736574734107011841737365747300011064657374190101204c6f636174696f6e00010c78636d3507011c58636d3c28293e000500205472616e736163740c012c6f726967696e5f6b696e64bd0601284f726967696e4b696e64000158726571756972655f7765696768745f61745f6d6f737424011857656967687400011063616c6c9107014c446f75626c65456e636f6465643c43616c6c3e0006006448726d704e65774368616e6e656c4f70656e526571756573740c011873656e646572fc010c7533320001406d61785f6d6573736167655f73697a65fc010c7533320001306d61785f6361706163697479fc010c7533320007004c48726d704368616e6e656c4163636570746564040124726563697069656e74fc010c7533320008004848726d704368616e6e656c436c6f73696e670c0124696e69746961746f72fc010c75333200011873656e646572fc010c753332000124726563697069656e74fc010c7533320009002c436c6561724f726967696e000a003444657363656e644f726967696e04001d010140496e746572696f724c6f636174696f6e000b002c5265706f72744572726f7204006d0701445175657279526573706f6e7365496e666f000c00304465706f73697441737365740801186173736574737107012c417373657446696c74657200012c62656e6566696369617279190101204c6f636174696f6e000d004c4465706f7369745265736572766541737365740c01186173736574737107012c417373657446696c74657200011064657374190101204c6f636174696f6e00010c78636d3507011c58636d3c28293e000e003445786368616e676541737365740c0110676976657107012c417373657446696c74657200011077616e744107011841737365747300011c6d6178696d616c780110626f6f6c000f005c496e6974696174655265736572766557697468647261770c01186173736574737107012c417373657446696c74657200011c72657365727665190101204c6f636174696f6e00010c78636d3507011c58636d3c28293e00100040496e69746961746554656c65706f72740c01186173736574737107012c417373657446696c74657200011064657374190101204c6f636174696f6e00010c78636d3507011c58636d3c28293e001100345265706f7274486f6c64696e67080134726573706f6e73655f696e666f6d0701445175657279526573706f6e7365496e666f0001186173736574737107012c417373657446696c74657200120030427579457865637574696f6e080110666565734907011441737365740001307765696768745f6c696d69743107012c5765696768744c696d697400130034526566756e64537572706c75730014003c5365744572726f7248616e646c65720400a107012458636d3c43616c6c3e0015002c536574417070656e6469780400a107012458636d3c43616c6c3e00160028436c6561724572726f7200170028436c61696d4173736574080118617373657473410701184173736574730001187469636b6574190101204c6f636174696f6e0018001054726170040028010c7536340019004053756273637269626556657273696f6e08012071756572795f696428011c5175657279496400014c6d61785f726573706f6e73655f776569676874240118576569676874001a0048556e73756273637269626556657273696f6e001b00244275726e4173736574040041070118417373657473001c002c4578706563744173736574040041070118417373657473001d00304578706563744f726967696e0400690701404f7074696f6e3c4c6f636174696f6e3e001e002c4578706563744572726f720400f90601504f7074696f6e3c287533322c204572726f72293e001f00504578706563745472616e736163745374617475730400150701384d617962654572726f72436f64650020002c517565727950616c6c657408012c6d6f64756c655f6e616d6534011c5665633c75383e000134726573706f6e73655f696e666f6d0701445175657279526573706f6e7365496e666f0021003045787065637450616c6c6574140114696e646578fc010c7533320001106e616d6534011c5665633c75383e00012c6d6f64756c655f6e616d6534011c5665633c75383e00012c63726174655f6d616a6f72fc010c75333200013c6d696e5f63726174655f6d696e6f72fc010c753332002200505265706f72745472616e7361637453746174757304006d0701445175657279526573706f6e7365496e666f0023004c436c6561725472616e736163745374617475730024003c556e6976657273616c4f726967696e0400250101204a756e6374696f6e002500344578706f72744d6573736167650c011c6e6574776f726b2d0101244e6574776f726b496400012c64657374696e6174696f6e1d010140496e746572696f724c6f636174696f6e00010c78636d3507011c58636d3c28293e002600244c6f636b41737365740801146173736574490701144173736574000120756e6c6f636b6572190101204c6f636174696f6e0027002c556e6c6f636b41737365740801146173736574490701144173736574000118746172676574190101204c6f636174696f6e002800384e6f7465556e6c6f636b61626c6508011461737365744907011441737365740001146f776e6572190101204c6f636174696f6e0029003452657175657374556e6c6f636b08011461737365744907011441737365740001186c6f636b6572190101204c6f636174696f6e002a002c536574466565734d6f64650401306a69745f7769746864726177780110626f6f6c002b0020536574546f70696304000401205b75383b2033325d002c0028436c656172546f706963002d002c416c6961734f726967696e0400190101204c6f636174696f6e002e003c556e70616964457865637574696f6e0801307765696768745f6c696d69743107012c5765696768744c696d6974000130636865636b5f6f726967696e690701404f7074696f6e3c4c6f636174696f6e3e002f0000ad070c5070616c6c65745f6d6573736167655f71756575651870616c6c65741043616c6c04045400010824726561705f706167650801386d6573736167655f6f726967696eb10701484d6573736167654f726967696e4f663c543e000128706167655f696e64657810012450616765496e64657800000468536565205b6050616c6c65743a3a726561705f70616765605d2e48657865637574655f6f7665727765696768741001386d6573736167655f6f726967696eb10701484d6573736167654f726967696e4f663c543e0001107061676510012450616765496e646578000114696e64657810011c543a3a53697a650001307765696768745f6c696d69742401185765696768740001048c536565205b6050616c6c65743a3a657865637574655f6f766572776569676874605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732eb1070c6c706f6c6b61646f745f72756e74696d655f70617261636861696e7324696e636c7573696f6e584167677265676174654d6573736167654f726967696e0001040c556d700400b5070128556d705175657565496400000000b5070c6c706f6c6b61646f745f72756e74696d655f70617261636861696e7324696e636c7573696f6e28556d7051756575654964000104105061726104009502011850617261496400000000b9070c4470616c6c65745f61737365745f726174651870616c6c65741043616c6c04045400010c1863726561746508012861737365745f6b696e64ec0144426f783c543a3a41737365744b696e643e00011072617465bd0701244669786564553132380000045c536565205b6050616c6c65743a3a637265617465605d2e1875706461746508012861737365745f6b696e64ec0144426f783c543a3a41737365744b696e643e00011072617465bd0701244669786564553132380001045c536565205b6050616c6c65743a3a757064617465605d2e1872656d6f766504012861737365745f6b696e64ec0144426f783c543a3a41737365744b696e643e0002045c536565205b6050616c6c65743a3a72656d6f7665605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ebd070c3473705f61726974686d657469632c66697865645f706f696e742446697865645531323800000400180110753132380000c1070c3070616c6c65745f62656566791870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66c507018d01426f783c45717569766f636174696f6e50726f6f663c426c6f636b4e756d626572466f723c543e2c20543a3a426565667949642c3c543a3a426565667949640a61732052756e74696d654170705075626c69633e3a3a5369676e61747572652c3e2c3e00013c6b65795f6f776e65725f70726f6f66a9010140543a3a4b65794f776e657250726f6f6600000490536565205b6050616c6c65743a3a7265706f72745f65717569766f636174696f6e605d2e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66c507018d01426f783c45717569766f636174696f6e50726f6f663c426c6f636b4e756d626572466f723c543e2c20543a3a426565667949642c3c543a3a426565667949640a61732052756e74696d654170705075626c69633e3a3a5369676e61747572652c3e2c3e00013c6b65795f6f776e65725f70726f6f66a9010140543a3a4b65794f776e657250726f6f66000104b4536565205b6050616c6c65743a3a7265706f72745f65717569766f636174696f6e5f756e7369676e6564605d2e3c7365745f6e65775f67656e6573697304013c64656c61795f696e5f626c6f636b73100144426c6f636b4e756d626572466f723c543e00020480536565205b6050616c6c65743a3a7365745f6e65775f67656e65736973605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ec507084873705f636f6e73656e7375735f62656566794445717569766f636174696f6e50726f6f660c184e756d6265720110084964012902245369676e617475726501c907000801146669727374cd070188566f74654d6573736167653c4e756d6265722c2049642c205369676e61747572653e0001187365636f6e64cd070188566f74654d6573736167653c4e756d6265722c2049642c205369676e61747572653e0000c9070c4873705f636f6e73656e7375735f62656566793065636473615f63727970746f245369676e6174757265000004008503014065636473613a3a5369676e61747572650000cd07084873705f636f6e73656e7375735f62656566792c566f74654d6573736167650c184e756d6265720110084964012902245369676e617475726501c907000c0128636f6d6d69746d656e74d1070148436f6d6d69746d656e743c4e756d6265723e00010869642902010849640001247369676e6174757265c90701245369676e61747572650000d1070c4873705f636f6e73656e7375735f626565667928636f6d6d69746d656e7428436f6d6d69746d656e74043054426c6f636b4e756d6265720110000c011c7061796c6f6164d507011c5061796c6f6164000130626c6f636b5f6e756d62657210013054426c6f636b4e756d62657200014076616c696461746f725f7365745f69642c013856616c696461746f7253657449640000d5070c4873705f636f6e73656e7375735f62656566791c7061796c6f61641c5061796c6f616400000400d90701785665633c2842656566795061796c6f616449642c205665633c75383e293e0000d907000002dd0700dd0700000408f9023400e107105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e446964656e746974795f6d69677261746f721870616c6c65741043616c6c04045400010834726561705f6964656e7469747904010c77686f000130543a3a4163636f756e74496400000478536565205b6050616c6c65743a3a726561705f6964656e74697479605d2e30706f6b655f6465706f73697404010c77686f000130543a3a4163636f756e74496400010474536565205b6050616c6c65743a3a706f6b655f6465706f736974605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ee5070c2873705f72756e74696d65187472616974732c426c616b6554776f32353600000000e9070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e0000ed070c6070616c6c65745f636f6e76696374696f6e5f766f74696e671474797065731454616c6c790814566f746573011814546f74616c00000c011061796573180114566f7465730001106e617973180114566f74657300011c737570706f7274180114566f7465730000f1070c6070616c6c65745f72616e6b65645f636f6c6c6563746976651870616c6c6574144576656e740804540004490001142c4d656d626572416464656404010c77686f000130543a3a4163636f756e7449640000047841206d656d626572206077686f6020686173206265656e2061646465642e2c52616e6b4368616e67656408010c77686f000130543a3a4163636f756e74496400011072616e6b7901011052616e6b000104f4546865206d656d626572206077686f6073652072616e6b20686173206265656e206368616e67656420746f2074686520676976656e206072616e6b602e344d656d62657252656d6f76656408010c77686f000130543a3a4163636f756e74496400011072616e6b7901011052616e6b0002041901546865206d656d626572206077686f60206f6620676976656e206072616e6b6020686173206265656e2072656d6f7665642066726f6d2074686520636f6c6c6563746976652e14566f74656410010c77686f000130543a3a4163636f756e744964000110706f6c6c100144506f6c6c496e6465784f663c542c20493e000110766f7465f5070128566f74655265636f726400011474616c6c79f907013454616c6c794f663c542c20493e0003085501546865206d656d626572206077686f602068617320766f74656420666f72207468652060706f6c6c6020776974682074686520676976656e2060766f746560206c656164696e6720746f20616e2075706461746564206074616c6c79602e3c4d656d62657245786368616e67656408010c77686f000130543a3a4163636f756e74496400011c6e65775f77686f000130543a3a4163636f756e744964000404f0546865206d656d626572206077686f602068616420746865697220604163636f756e74496460206368616e67656420746f20606e65775f77686f602e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574f507086070616c6c65745f72616e6b65645f636f6c6c65637469766528566f74655265636f72640001080c4179650400100114566f7465730000000c4e61790400100114566f74657300010000f907086070616c6c65745f72616e6b65645f636f6c6c6563746976651454616c6c790c045400044900044d00000c0124626172655f6179657310012c4d656d626572496e64657800011061796573100114566f7465730001106e617973100114566f7465730000fd070c4070616c6c65745f7265666572656e64611870616c6c6574144576656e74080454000449000140245375626d69747465640c0114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e0114747261636b7901013c547261636b49644f663c542c20493e04250154686520747261636b2028616e6420627920657874656e73696f6e2070726f706f73616c206469737061746368206f726967696e29206f662074686973207265666572656e64756d2e012070726f706f73616c7d01014c426f756e64656443616c6c4f663c542c20493e04805468652070726f706f73616c20666f7220746865207265666572656e64756d2e00048041207265666572656e64756d20686173206265656e207375626d69747465642e544465636973696f6e4465706f736974506c616365640c0114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e010c77686f000130543a3a4163636f756e744964048c546865206163636f756e742077686f20706c6163656420746865206465706f7369742e0118616d6f756e7418013c42616c616e63654f663c542c20493e048454686520616d6f756e7420706c6163656420627920746865206163636f756e742e010494546865206465636973696f6e206465706f73697420686173206265656e20706c616365642e5c4465636973696f6e4465706f736974526566756e6465640c0114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e010c77686f000130543a3a4163636f756e744964048c546865206163636f756e742077686f20706c6163656420746865206465706f7369742e0118616d6f756e7418013c42616c616e63654f663c542c20493e048454686520616d6f756e7420706c6163656420627920746865206163636f756e742e02049c546865206465636973696f6e206465706f73697420686173206265656e20726566756e6465642e384465706f736974536c617368656408010c77686f000130543a3a4163636f756e744964048c546865206163636f756e742077686f20706c6163656420746865206465706f7369742e0118616d6f756e7418013c42616c616e63654f663c542c20493e048454686520616d6f756e7420706c6163656420627920746865206163636f756e742e03046c41206465706f73697420686173206265656e20736c61736865642e3c4465636973696f6e53746172746564100114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e0114747261636b7901013c547261636b49644f663c542c20493e04250154686520747261636b2028616e6420627920657874656e73696f6e2070726f706f73616c206469737061746368206f726967696e29206f662074686973207265666572656e64756d2e012070726f706f73616c7d01014c426f756e64656443616c6c4f663c542c20493e04805468652070726f706f73616c20666f7220746865207265666572656e64756d2e011474616c6c79f9070120543a3a54616c6c7904b85468652063757272656e742074616c6c79206f6620766f74657320696e2074686973207265666572656e64756d2e0404bc41207265666572656e64756d20686173206d6f76656420696e746f20746865206465636964696e672070686173652e38436f6e6669726d53746172746564040114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e050038436f6e6669726d41626f72746564040114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e060024436f6e6669726d6564080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e011474616c6c79f9070120543a3a54616c6c7904b05468652066696e616c2074616c6c79206f6620766f74657320696e2074686973207265666572656e64756d2e0704210141207265666572656e64756d2068617320656e6465642069747320636f6e6669726d6174696f6e20706861736520616e6420697320726561647920666f7220617070726f76616c2e20417070726f766564040114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e08040d0141207265666572656e64756d20686173206265656e20617070726f76656420616e64206974732070726f706f73616c20686173206265656e207363686564756c65642e2052656a6563746564080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e011474616c6c79f9070120543a3a54616c6c7904b05468652066696e616c2074616c6c79206f6620766f74657320696e2074686973207265666572656e64756d2e0904ac412070726f706f73616c20686173206265656e2072656a6563746564206279207265666572656e64756d2e2054696d65644f7574080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e011474616c6c79f9070120543a3a54616c6c7904b05468652066696e616c2074616c6c79206f6620766f74657320696e2074686973207265666572656e64756d2e0a04d841207265666572656e64756d20686173206265656e2074696d6564206f757420776974686f7574206265696e6720646563696465642e2443616e63656c6c6564080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e011474616c6c79f9070120543a3a54616c6c7904b05468652066696e616c2074616c6c79206f6620766f74657320696e2074686973207265666572656e64756d2e0b048041207265666572656e64756d20686173206265656e2063616e63656c6c65642e184b696c6c6564080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e011474616c6c79f9070120543a3a54616c6c7904b05468652066696e616c2074616c6c79206f6620766f74657320696e2074686973207265666572656e64756d2e0c047441207265666572656e64756d20686173206265656e206b696c6c65642e645375626d697373696f6e4465706f736974526566756e6465640c0114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e010c77686f000130543a3a4163636f756e744964048c546865206163636f756e742077686f20706c6163656420746865206465706f7369742e0118616d6f756e7418013c42616c616e63654f663c542c20493e048454686520616d6f756e7420706c6163656420627920746865206163636f756e742e0d04a4546865207375626d697373696f6e206465706f73697420686173206265656e20726566756e6465642e2c4d65746164617461536574080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e01106861736830011c543a3a486173680438507265696d61676520686173682e0e049c4d6574616461746120666f722061207265666572656e64756d20686173206265656e207365742e3c4d65746164617461436c6561726564080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e01106861736830011c543a3a486173680438507265696d61676520686173682e0f04ac4d6574616461746120666f722061207265666572656e64756d20686173206265656e20636c65617265642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657401080c4070616c6c65745f77686974656c6973741870616c6c6574144576656e7404045400010c3c43616c6c57686974656c697374656404012463616c6c5f6861736830011c543a3a486173680000005857686974656c697374656443616c6c52656d6f76656404012463616c6c5f6861736830011c543a3a486173680001006457686974656c697374656443616c6c4469737061746368656408012463616c6c5f6861736830011c543a3a48617368000118726573756c74050801684469737061746368526573756c7457697468506f7374496e666f000200047c54686520604576656e746020656e756d206f6620746869732070616c6c657405080418526573756c7408045401090804450111080108084f6b04000908000000000c45727204001108000001000009080c346672616d655f737570706f727420646973706174636840506f73744469737061746368496e666f000008013461637475616c5f7765696768740d0801384f7074696f6e3c5765696768743e000120706179735f6665656001105061797300000d0804184f7074696f6e04045401240108104e6f6e6500000010536f6d6504002400000100001108082873705f72756e74696d656444697370617463684572726f7257697468506f7374496e666f0410496e666f01090800080124706f73745f696e666f09080110496e666f0001146572726f7264013444697370617463684572726f7200001508105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e18636c61696d731870616c6c6574144576656e740404540001041c436c61696d65640c010c77686f000130543a3a4163636f756e744964000140657468657265756d5f61646472657373c102013c457468657265756d41646472657373000118616d6f756e7418013042616c616e63654f663c543e00000468536f6d656f6e6520636c61696d656420736f6d6520444f54732e047c54686520604576656e746020656e756d206f6620746869732070616c6c657419080c3870616c6c65745f7574696c6974791870616c6c6574144576656e74000118404261746368496e746572727570746564080114696e64657810010c7533320001146572726f7264013444697370617463684572726f7200000855014261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792e20496e646578206f66206669727374206661696c696e6720646973706174636820676976656e2c2061734877656c6c20617320746865206572726f722e384261746368436f6d706c65746564000104c84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722e604261746368436f6d706c65746564576974684572726f7273000204b44261746368206f66206469737061746368657320636f6d706c657465642062757420686173206572726f72732e344974656d436f6d706c657465640003041d01412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206e6f206572726f722e284974656d4661696c65640401146572726f7264013444697370617463684572726f720004041101412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206572726f722e30446973706174636865644173040118726573756c741d0801384469737061746368526573756c7400050458412063616c6c2077617320646973706174636865642e047c54686520604576656e746020656e756d206f6620746869732070616c6c65741d080418526573756c7408045401c501044501640108084f6b0400c501000000000c457272040064000001000021080c3c70616c6c65745f6964656e746974791870616c6c6574144576656e740404540001442c4964656e7469747953657404010c77686f000130543a3a4163636f756e744964000004ec41206e616d652077617320736574206f72207265736574202877686963682077696c6c2072656d6f766520616c6c206a756467656d656e7473292e3c4964656e74697479436c656172656408010c77686f000130543a3a4163636f756e74496400011c6465706f73697418013042616c616e63654f663c543e000104cc41206e616d652077617320636c65617265642c20616e642074686520676976656e2062616c616e63652072657475726e65642e384964656e746974794b696c6c656408010c77686f000130543a3a4163636f756e74496400011c6465706f73697418013042616c616e63654f663c543e000204c441206e616d65207761732072656d6f76656420616e642074686520676976656e2062616c616e636520736c61736865642e484a756467656d656e7452657175657374656408010c77686f000130543a3a4163636f756e74496400013c7265676973747261725f696e646578100138526567697374726172496e6465780003049c41206a756467656d656e74207761732061736b65642066726f6d2061207265676973747261722e504a756467656d656e74556e72657175657374656408010c77686f000130543a3a4163636f756e74496400013c7265676973747261725f696e646578100138526567697374726172496e6465780004048841206a756467656d656e74207265717565737420776173207265747261637465642e384a756467656d656e74476976656e080118746172676574000130543a3a4163636f756e74496400013c7265676973747261725f696e646578100138526567697374726172496e6465780005049441206a756467656d656e742077617320676976656e2062792061207265676973747261722e38526567697374726172416464656404013c7265676973747261725f696e646578100138526567697374726172496e646578000604584120726567697374726172207761732061646465642e405375624964656e7469747941646465640c010c737562000130543a3a4163636f756e7449640001106d61696e000130543a3a4163636f756e74496400011c6465706f73697418013042616c616e63654f663c543e000704f441207375622d6964656e746974792077617320616464656420746f20616e206964656e7469747920616e6420746865206465706f73697420706169642e485375624964656e7469747952656d6f7665640c010c737562000130543a3a4163636f756e7449640001106d61696e000130543a3a4163636f756e74496400011c6465706f73697418013042616c616e63654f663c543e000804090141207375622d6964656e74697479207761732072656d6f7665642066726f6d20616e206964656e7469747920616e6420746865206465706f7369742066726565642e485375624964656e746974795265766f6b65640c010c737562000130543a3a4163636f756e7449640001106d61696e000130543a3a4163636f756e74496400011c6465706f73697418013042616c616e63654f663c543e000908190141207375622d6964656e746974792077617320636c65617265642c20616e642074686520676976656e206465706f7369742072657061747269617465642066726f6d20746865c86d61696e206964656e74697479206163636f756e7420746f20746865207375622d6964656e74697479206163636f756e742e38417574686f726974794164646564040124617574686f72697479000130543a3a4163636f756e744964000a047c4120757365726e616d6520617574686f72697479207761732061646465642e40417574686f7269747952656d6f766564040124617574686f72697479000130543a3a4163636f756e744964000b04844120757365726e616d6520617574686f72697479207761732072656d6f7665642e2c557365726e616d6553657408010c77686f000130543a3a4163636f756e744964000120757365726e616d658903012c557365726e616d653c543e000c04744120757365726e616d65207761732073657420666f72206077686f602e38557365726e616d655175657565640c010c77686f000130543a3a4163636f756e744964000120757365726e616d658903012c557365726e616d653c543e00012865787069726174696f6e100144426c6f636b4e756d626572466f723c543e000d0419014120757365726e616d6520776173207175657565642c20627574206077686f60206d75737420616363657074206974207072696f7220746f206065787069726174696f6e602e48507265617070726f76616c4578706972656404011477686f7365000130543a3a4163636f756e744964000e043901412071756575656420757365726e616d6520706173736564206974732065787069726174696f6e20776974686f7574206265696e6720636c61696d656420616e64207761732072656d6f7665642e485072696d617279557365726e616d6553657408010c77686f000130543a3a4163636f756e744964000120757365726e616d658903012c557365726e616d653c543e000f0401014120757365726e616d6520776173207365742061732061207072696d61727920616e642063616e206265206c6f6f6b65642075702066726f6d206077686f602e5c44616e676c696e67557365726e616d6552656d6f76656408010c77686f000130543a3a4163636f756e744964000120757365726e616d658903012c557365726e616d653c543e0010085d01412064616e676c696e6720757365726e616d652028617320696e2c206120757365726e616d6520636f72726573706f6e64696e6720746f20616e206163636f756e742074686174206861732072656d6f766564206974736c6964656e746974792920686173206265656e2072656d6f7665642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657425080c3870616c6c65745f736f63696574791870616c6c6574144576656e740804540004490001441c466f756e64656404011c666f756e646572000130543a3a4163636f756e744964000004b454686520736f636965747920697320666f756e6465642062792074686520676976656e206964656e746974792e0c42696408013063616e6469646174655f6964000130543a3a4163636f756e7449640001146f6666657218013c42616c616e63654f663c542c20493e0001085d0141206d656d6265727368697020626964206a7573742068617070656e65642e2054686520676976656e206163636f756e74206973207468652063616e646964617465277320494420616e64207468656972206f6666657238697320746865207365636f6e642e14566f7563680c013063616e6469646174655f6964000130543a3a4163636f756e7449640001146f6666657218013c42616c616e63654f663c542c20493e000120766f756368696e67000130543a3a4163636f756e7449640002085d0141206d656d6265727368697020626964206a7573742068617070656e656420627920766f756368696e672e2054686520676976656e206163636f756e74206973207468652063616e646964617465277320494420616e64ec7468656972206f6666657220697320746865207365636f6e642e2054686520766f756368696e67207061727479206973207468652074686972642e244175746f556e62696404012463616e646964617465000130543a3a4163636f756e7449640003040501412063616e646964617465207761732064726f70706564202864756520746f20616e20657863657373206f66206269647320696e207468652073797374656d292e14556e62696404012463616e646964617465000130543a3a4163636f756e744964000404ac412063616e646964617465207761732064726f70706564202862792074686569722072657175657374292e1c556e766f75636804012463616e646964617465000130543a3a4163636f756e744964000504f4412063616e646964617465207761732064726f70706564202862792072657175657374206f662077686f20766f756368656420666f72207468656d292e20496e64756374656408011c7072696d617279000130543a3a4163636f756e74496400012863616e64696461746573d10101445665633c543a3a4163636f756e7449643e0006085501412067726f7570206f662063616e646964617465732068617665206265656e20696e6475637465642e205468652062617463682773207072696d617279206973207468652066697273742076616c75652c2074686570626174636820696e2066756c6c20697320746865207365636f6e642e6053757370656e6465644d656d6265724a756467656d656e7408010c77686f000130543a3a4163636f756e7449640001186a7564676564780110626f6f6c0007048c412073757370656e646564206d656d62657220686173206265656e206a75646765642e4843616e64696461746553757370656e64656404012463616e646964617465000130543a3a4163636f756e74496400080478412063616e64696461746520686173206265656e2073757370656e6465643c4d656d62657253757370656e6465640401186d656d626572000130543a3a4163636f756e7449640009046c41206d656d62657220686173206265656e2073757370656e646564284368616c6c656e6765640401186d656d626572000130543a3a4163636f756e744964000a047041206d656d62657220686173206265656e206368616c6c656e67656410566f74650c012463616e646964617465000130543a3a4163636f756e744964000114766f746572000130543a3a4163636f756e744964000110766f7465780110626f6f6c000b04584120766f746520686173206265656e20706c6163656430446566656e646572566f7465080114766f746572000130543a3a4163636f756e744964000110766f7465780110626f6f6c000c04b44120766f746520686173206265656e20706c6163656420666f72206120646566656e64696e67206d656d626572244e6577506172616d73040118706172616d732908015047726f7570506172616d73466f723c542c20493e000d04cc41206e657720736574206f66205c5b706172616d735c5d20686173206265656e2073657420666f72207468652067726f75702e24556e666f756e64656404011c666f756e646572000130543a3a4163636f756e744964000e0454536f636965747920697320756e666f756e6465642e1c4465706f73697404011476616c756518013c42616c616e63654f663c542c20493e000f04cc536f6d652066756e64732077657265206465706f736974656420696e746f2074686520736f6369657479206163636f756e742e20456c6576617465640801186d656d626572000130543a3a4163636f756e74496400011072616e6b10011052616e6b0010049841205c5b6d656d6265725c5d20676f7420656c65766174656420746f205c5b72616e6b5c5d2e047c54686520604576656e746020656e756d206f6620746869732070616c6c65742908083870616c6c65745f736f63696574792c47726f7570506172616d73041c42616c616e636501180010012c6d61785f6d656d6265727310010c7533320001286d61785f696e74616b6510010c75333200012c6d61785f737472696b657310010c75333200014463616e6469646174655f6465706f73697418011c42616c616e636500002d080c3c70616c6c65745f7265636f766572791870616c6c6574144576656e740404540001183c5265636f766572794372656174656404011c6163636f756e74000130543a3a4163636f756e744964000004c841207265636f766572792070726f6365737320686173206265656e2073657420757020666f7220616e206163636f756e742e445265636f76657279496e697469617465640801306c6f73745f6163636f756e74000130543a3a4163636f756e74496400013c726573637565725f6163636f756e74000130543a3a4163636f756e744964000104290141207265636f766572792070726f6365737320686173206265656e20696e6974696174656420666f72206c6f7374206163636f756e742062792072657363756572206163636f756e742e3c5265636f76657279566f75636865640c01306c6f73745f6163636f756e74000130543a3a4163636f756e74496400013c726573637565725f6163636f756e74000130543a3a4163636f756e74496400011873656e646572000130543a3a4163636f756e744964000204590141207265636f766572792070726f6365737320666f72206c6f7374206163636f756e742062792072657363756572206163636f756e7420686173206265656e20766f756368656420666f722062792073656e6465722e385265636f76657279436c6f7365640801306c6f73745f6163636f756e74000130543a3a4163636f756e74496400013c726573637565725f6163636f756e74000130543a3a4163636f756e7449640003041d0141207265636f766572792070726f6365737320666f72206c6f7374206163636f756e742062792072657363756572206163636f756e7420686173206265656e20636c6f7365642e404163636f756e745265636f76657265640801306c6f73745f6163636f756e74000130543a3a4163636f756e74496400013c726573637565725f6163636f756e74000130543a3a4163636f756e74496400040401014c6f7374206163636f756e7420686173206265656e207375636365737366756c6c79207265636f76657265642062792072657363756572206163636f756e742e3c5265636f7665727952656d6f7665640401306c6f73745f6163636f756e74000130543a3a4163636f756e744964000504cc41207265636f766572792070726f6365737320686173206265656e2072656d6f76656420666f7220616e206163636f756e742e04304576656e747320747970652e31080c3870616c6c65745f76657374696e671870616c6c6574144576656e740404540001083856657374696e675570646174656408011c6163636f756e74000130543a3a4163636f756e744964000120756e76657374656418013042616c616e63654f663c543e000008510154686520616d6f756e742076657374656420686173206265656e20757064617465642e205468697320636f756c6420696e6469636174652061206368616e676520696e2066756e647320617661696c61626c652e25015468652062616c616e636520676976656e2069732074686520616d6f756e74207768696368206973206c65667420756e7665737465642028616e642074687573206c6f636b6564292e4056657374696e67436f6d706c6574656404011c6163636f756e74000130543a3a4163636f756e7449640001049c416e205c5b6163636f756e745c5d20686173206265636f6d652066756c6c79207665737465642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657435080c4070616c6c65745f7363686564756c65721870616c6c6574144576656e74040454000118245363686564756c65640801107768656e100144426c6f636b4e756d626572466f723c543e000114696e64657810010c753332000004505363686564756c656420736f6d65207461736b2e2043616e63656c65640801107768656e100144426c6f636b4e756d626572466f723c543e000114696e64657810010c7533320001044c43616e63656c656420736f6d65207461736b2e28446973706174636865640c01107461736ba50301785461736b416464726573733c426c6f636b4e756d626572466f723c543e3e0001086964390801404f7074696f6e3c5461736b4e616d653e000118726573756c741d0801384469737061746368526573756c74000204544469737061746368656420736f6d65207461736b2e3c43616c6c556e617661696c61626c650801107461736ba50301785461736b416464726573733c426c6f636b4e756d626572466f723c543e3e0001086964390801404f7074696f6e3c5461736b4e616d653e00030429015468652063616c6c20666f72207468652070726f7669646564206861736820776173206e6f7420666f756e6420736f20746865207461736b20686173206265656e2061626f727465642e38506572696f6469634661696c65640801107461736ba50301785461736b416464726573733c426c6f636b4e756d626572466f723c543e3e0001086964390801404f7074696f6e3c5461736b4e616d653e0004043d0154686520676976656e207461736b2077617320756e61626c6520746f2062652072656e657765642073696e636520746865206167656e64612069732066756c6c206174207468617420626c6f636b2e545065726d616e656e746c794f7665727765696768740801107461736ba50301785461736b416464726573733c426c6f636b4e756d626572466f723c543e3e0001086964390801404f7074696f6e3c5461736b4e616d653e000504f054686520676976656e207461736b2063616e206e657665722062652065786563757465642073696e6365206974206973206f7665727765696768742e04304576656e747320747970652e390804184f7074696f6e04045401040108104e6f6e6500000010536f6d6504000400000100003d080c3070616c6c65745f70726f78791870616c6c6574144576656e740404540001143450726f78794578656375746564040118726573756c741d0801384469737061746368526573756c74000004bc412070726f78792077617320657865637574656420636f72726563746c792c20776974682074686520676976656e2e2c507572654372656174656410011070757265000130543a3a4163636f756e74496400010c77686f000130543a3a4163636f756e74496400012870726f78795f74797065b1030130543a3a50726f787954797065000150646973616d626967756174696f6e5f696e6465787901010c753136000108dc412070757265206163636f756e7420686173206265656e2063726561746564206279206e65772070726f7879207769746820676976656e90646973616d626967756174696f6e20696e64657820616e642070726f787920747970652e24416e6e6f756e6365640c01107265616c000130543a3a4163636f756e74496400011470726f7879000130543a3a4163636f756e74496400012463616c6c5f6861736830013443616c6c486173684f663c543e000204e0416e20616e6e6f756e63656d656e742077617320706c6163656420746f206d616b6520612063616c6c20696e20746865206675747572652e2850726f7879416464656410012464656c656761746f72000130543a3a4163636f756e74496400012464656c656761746565000130543a3a4163636f756e74496400012870726f78795f74797065b1030130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e00030448412070726f7879207761732061646465642e3050726f787952656d6f76656410012464656c656761746f72000130543a3a4163636f756e74496400012464656c656761746565000130543a3a4163636f756e74496400012870726f78795f74797065b1030130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e00040450412070726f7879207761732072656d6f7665642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657441080c3c70616c6c65745f6d756c74697369671870616c6c6574144576656e740404540001102c4e65774d756c74697369670c0124617070726f76696e67000130543a3a4163636f756e7449640001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c486173680000048c41206e6577206d756c7469736967206f7065726174696f6e2068617320626567756e2e404d756c7469736967417070726f76616c100124617070726f76696e67000130543a3a4163636f756e74496400012474696d65706f696e74bd03017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e0001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c48617368000104c841206d756c7469736967206f7065726174696f6e20686173206265656e20617070726f76656420627920736f6d656f6e652e404d756c74697369674578656375746564140124617070726f76696e67000130543a3a4163636f756e74496400012474696d65706f696e74bd03017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e0001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c48617368000118726573756c741d0801384469737061746368526573756c740002049c41206d756c7469736967206f7065726174696f6e20686173206265656e2065786563757465642e444d756c746973696743616e63656c6c656410012863616e63656c6c696e67000130543a3a4163636f756e74496400012474696d65706f696e74bd03017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e0001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c48617368000304a041206d756c7469736967206f7065726174696f6e20686173206265656e2063616e63656c6c65642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657445080c3c70616c6c65745f707265696d6167651870616c6c6574144576656e7404045400010c144e6f7465640401106861736830011c543a3a48617368000004684120707265696d61676520686173206265656e206e6f7465642e245265717565737465640401106861736830011c543a3a48617368000104784120707265696d61676520686173206265656e207265717565737465642e1c436c65617265640401106861736830011c543a3a486173680002046c4120707265696d616765206861732062656e20636c65617265642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657449080c3c70616c6c65745f626f756e746965731870616c6c6574144576656e7408045400044900012c38426f756e747950726f706f736564040114696e64657810012c426f756e7479496e646578000004504e657720626f756e74792070726f706f73616c2e38426f756e747952656a6563746564080114696e64657810012c426f756e7479496e646578000110626f6e6418013c42616c616e63654f663c542c20493e000104cc4120626f756e74792070726f706f73616c207761732072656a65637465643b2066756e6473207765726520736c61736865642e48426f756e7479426563616d65416374697665040114696e64657810012c426f756e7479496e646578000204b84120626f756e74792070726f706f73616c2069732066756e64656420616e6420626563616d65206163746976652e34426f756e747941776172646564080114696e64657810012c426f756e7479496e64657800012c62656e6566696369617279000130543a3a4163636f756e744964000304944120626f756e7479206973206177617264656420746f20612062656e65666963696172792e34426f756e7479436c61696d65640c0114696e64657810012c426f756e7479496e6465780001187061796f757418013c42616c616e63654f663c542c20493e00012c62656e6566696369617279000130543a3a4163636f756e7449640004048c4120626f756e747920697320636c61696d65642062792062656e65666963696172792e38426f756e747943616e63656c6564040114696e64657810012c426f756e7479496e646578000504584120626f756e74792069732063616e63656c6c65642e38426f756e7479457874656e646564040114696e64657810012c426f756e7479496e646578000604704120626f756e74792065787069727920697320657874656e6465642e38426f756e7479417070726f766564040114696e64657810012c426f756e7479496e646578000704544120626f756e747920697320617070726f7665642e3c43757261746f7250726f706f736564080124626f756e74795f696410012c426f756e7479496e64657800011c63757261746f72000130543a3a4163636f756e744964000804744120626f756e74792063757261746f722069732070726f706f7365642e4443757261746f72556e61737369676e6564040124626f756e74795f696410012c426f756e7479496e6465780009047c4120626f756e74792063757261746f7220697320756e61737369676e65642e3c43757261746f724163636570746564080124626f756e74795f696410012c426f756e7479496e64657800011c63757261746f72000130543a3a4163636f756e744964000a04744120626f756e74792063757261746f722069732061636365707465642e047c54686520604576656e746020656e756d206f6620746869732070616c6c65744d080c5470616c6c65745f6368696c645f626f756e746965731870616c6c6574144576656e74040454000110144164646564080114696e64657810012c426f756e7479496e64657800012c6368696c645f696e64657810012c426f756e7479496e6465780000046041206368696c642d626f756e74792069732061646465642e1c417761726465640c0114696e64657810012c426f756e7479496e64657800012c6368696c645f696e64657810012c426f756e7479496e64657800012c62656e6566696369617279000130543a3a4163636f756e744964000104ac41206368696c642d626f756e7479206973206177617264656420746f20612062656e65666963696172792e1c436c61696d6564100114696e64657810012c426f756e7479496e64657800012c6368696c645f696e64657810012c426f756e7479496e6465780001187061796f757418013042616c616e63654f663c543e00012c62656e6566696369617279000130543a3a4163636f756e744964000204a441206368696c642d626f756e747920697320636c61696d65642062792062656e65666963696172792e2043616e63656c6564080114696e64657810012c426f756e7479496e64657800012c6368696c645f696e64657810012c426f756e7479496e6465780003047041206368696c642d626f756e74792069732063616e63656c6c65642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657451080c9070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173651870616c6c6574144576656e7404045400011838536f6c7574696f6e53746f7265640c011c636f6d707574655508013c456c656374696f6e436f6d707574650001186f726967696efd0101504f7074696f6e3c543a3a4163636f756e7449643e000130707265765f656a6563746564780110626f6f6c00001cb44120736f6c7574696f6e207761732073746f72656420776974682074686520676976656e20636f6d707574652e00510154686520606f726967696e6020696e6469636174657320746865206f726967696e206f662074686520736f6c7574696f6e2e20496620606f726967696e602069732060536f6d65284163636f756e74496429602c55017468652073746f72656420736f6c7574696f6e20776173207375626d6974656420696e20746865207369676e65642070686173652062792061206d696e657220776974682074686520604163636f756e744964602e25014f74686572776973652c2074686520736f6c7574696f6e207761732073746f7265642065697468657220647572696e672074686520756e7369676e6564207068617365206f722062794d0160543a3a466f7263654f726967696e602e205468652060626f6f6c6020697320607472756560207768656e20612070726576696f757320736f6c7574696f6e2077617320656a656374656420746f206d616b6548726f6f6d20666f722074686973206f6e652e44456c656374696f6e46696e616c697a656408011c636f6d707574655508013c456c656374696f6e436f6d7075746500011473636f726505050134456c656374696f6e53636f7265000104190154686520656c656374696f6e20686173206265656e2066696e616c697a65642c20776974682074686520676976656e20636f6d7075746174696f6e20616e642073636f72652e38456c656374696f6e4661696c656400020c4c416e20656c656374696f6e206661696c65642e0001014e6f74206d7563682063616e20626520736169642061626f757420776869636820636f6d7075746573206661696c656420696e207468652070726f636573732e20526577617264656408011c6163636f756e740001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e74496400011476616c756518013042616c616e63654f663c543e0003042501416e206163636f756e7420686173206265656e20726577617264656420666f72207468656972207369676e6564207375626d697373696f6e206265696e672066696e616c697a65642e1c536c617368656408011c6163636f756e740001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e74496400011476616c756518013042616c616e63654f663c543e0004042101416e206163636f756e7420686173206265656e20736c617368656420666f72207375626d697474696e6720616e20696e76616c6964207369676e6564207375626d697373696f6e2e4450686173655472616e736974696f6e65640c011066726f6d5908016050686173653c426c6f636b4e756d626572466f723c543e3e000108746f5908016050686173653c426c6f636b4e756d626572466f723c543e3e000114726f756e6410010c753332000504b85468657265207761732061207068617365207472616e736974696f6e20696e206120676976656e20726f756e642e047c54686520604576656e746020656e756d206f6620746869732070616c6c65745508089070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173653c456c656374696f6e436f6d707574650001141c4f6e436861696e000000185369676e656400010020556e7369676e65640002002046616c6c6261636b00030024456d657267656e6379000400005908089070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173651450686173650408426e011001100c4f6666000000185369676e656400010020556e7369676e656404005d08012828626f6f6c2c20426e2900020024456d657267656e6379000300005d080000040878100061080c2870616c6c65745f6e69731870616c6c6574144576656e7404045400011c24426964506c616365640c010c77686f000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e0001206475726174696f6e10010c75333200000478412062696420776173207375636365737366756c6c7920706c616365642e304269645265747261637465640c010c77686f000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e0001206475726174696f6e10010c753332000104dc412062696420776173207375636365737366756c6c792072656d6f76656420286265666f7265206265696e67206163636570746564292e2842696444726f707065640c010c77686f000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e0001206475726174696f6e10010c75333200020455014120626964207761732064726f707065642066726f6d20612071756575652062656361757365206f6620616e6f746865722c206d6f7265207375627374616e7469616c2c20626964207761732070726573656e742e18497373756564140114696e64657810013052656365697074496e6465780470546865206964656e74697479206f662074686520726563656970742e0118657870697279100144426c6f636b4e756d626572466f723c543e04d054686520626c6f636b206e756d626572206174207768696368207468652072656365697074206d6179206265207468617765642e010c77686f000130543a3a4163636f756e7449640464546865206f776e6572206f662074686520726563656970742e012870726f706f7274696f6e2d05012c5065727175696e74696c6c0431015468652070726f706f7274696f6e206f66207468652065666665637469766520746f74616c2069737375616e636520776869636820746865207265636569707420726570726573656e74732e0118616d6f756e7418013042616c616e63654f663c543e04d854686520616d6f756e74206f662066756e6473207768696368207765726520646562697465642066726f6d20746865206f776e65722e030405014120626964207761732061636365707465642e205468652062616c616e6365206d6179206e6f742062652072656c656173656420756e74696c206578706972792e18546861776564140114696e64657810013052656365697074496e6465780470546865206964656e74697479206f662074686520726563656970742e010c77686f000130543a3a4163636f756e7449640428546865206f776e65722e012870726f706f7274696f6e2d05012c5065727175696e74696c6c0439015468652070726f706f7274696f6e206f66207468652065666665637469766520746f74616c2069737375616e636520627920776869636820746865206f776e65722077617320646562697465642e0118616d6f756e7418013042616c616e63654f663c543e04ac54686520616d6f756e7420627920776869636820746865206f776e6572207761732063726564697465642e011c64726f70706564780110626f6f6c048c496620607472756560207468656e20746865207265636569707420697320646f6e652e0404c0416e207265636569707420686173206265656e20286174206c65617374207061727469616c6c7929207468617765642e1846756e64656404011c6465666963697418013042616c616e63654f663c543e000504b4416e206175746f6d617469632066756e64696e67206f6620746865206465666963697420776173206d6164652e2c5472616e736665727265640c011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000114696e64657810013052656365697074496e6465780006046441207265636569707420776173207472616e7366657265642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657465080c3c70616c6c65745f62616c616e6365731870616c6c6574144576656e740804540004490001581c456e646f77656408011c6163636f756e74000130543a3a4163636f756e744964000130667265655f62616c616e6365180128543a3a42616c616e6365000004b8416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e20447573744c6f737408011c6163636f756e74000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650001083d01416e206163636f756e74207761732072656d6f7665642077686f73652062616c616e636520776173206e6f6e2d7a65726f206275742062656c6f77204578697374656e7469616c4465706f7369742c78726573756c74696e6720696e20616e206f75747269676874206c6f73732e205472616e736665720c011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650002044c5472616e73666572207375636365656465642e2842616c616e636553657408010c77686f000130543a3a4163636f756e74496400011066726565180128543a3a42616c616e636500030468412062616c616e6365207761732073657420627920726f6f742e20526573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000404e0536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e28556e726573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000504e8536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e4852657365727665526570617472696174656410011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500014864657374696e6174696f6e5f7374617475738401185374617475730006084d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652e1c4465706f73697408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000704d8536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e20576974686472617708010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650008041d01536f6d6520616d6f756e74207761732077697468647261776e2066726f6d20746865206163636f756e742028652e672e20666f72207472616e73616374696f6e2066656573292e1c536c617368656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650009040101536f6d6520616d6f756e74207761732072656d6f7665642066726f6d20746865206163636f756e742028652e672e20666f72206d69736265686176696f72292e184d696e74656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000a049c536f6d6520616d6f756e7420776173206d696e74656420696e746f20616e206163636f756e742e184275726e656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000b049c536f6d6520616d6f756e7420776173206275726e65642066726f6d20616e206163636f756e742e2453757370656e64656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000c041501536f6d6520616d6f756e74207761732073757370656e6465642066726f6d20616e206163636f756e74202869742063616e20626520726573746f726564206c61746572292e20526573746f72656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000d04a4536f6d6520616d6f756e742077617320726573746f72656420696e746f20616e206163636f756e742e20557067726164656404010c77686f000130543a3a4163636f756e744964000e0460416e206163636f756e74207761732075706772616465642e18497373756564040118616d6f756e74180128543a3a42616c616e6365000f042d01546f74616c2069737375616e63652077617320696e637265617365642062792060616d6f756e74602c206372656174696e6720612063726564697420746f2062652062616c616e6365642e2452657363696e646564040118616d6f756e74180128543a3a42616c616e63650010042501546f74616c2069737375616e636520776173206465637265617365642062792060616d6f756e74602c206372656174696e672061206465627420746f2062652062616c616e6365642e184c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500110460536f6d652062616c616e636520776173206c6f636b65642e20556e6c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500120468536f6d652062616c616e63652077617320756e6c6f636b65642e1846726f7a656e08010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500130460536f6d652062616c616e6365207761732066726f7a656e2e1854686177656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500140460536f6d652062616c616e636520776173207468617765642e4c546f74616c49737375616e6365466f7263656408010c6f6c64180128543a3a42616c616e636500010c6e6577180128543a3a42616c616e6365001504ac5468652060546f74616c49737375616e6365602077617320666f72636566756c6c79206368616e6765642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657469080c4070616c6c65745f626167735f6c6973741870616c6c6574144576656e740804540004490001082052656261676765640c010c77686f000130543a3a4163636f756e74496400011066726f6d2c0120543a3a53636f7265000108746f2c0120543a3a53636f7265000004a44d6f76656420616e206163636f756e742066726f6d206f6e652062616720746f20616e6f746865722e3053636f72655570646174656408010c77686f000130543a3a4163636f756e7449640001246e65775f73636f72652c0120543a3a53636f7265000104d855706461746564207468652073636f7265206f6620736f6d65206163636f756e7420746f2074686520676976656e20616d6f756e742e047c54686520604576656e746020656e756d206f6620746869732070616c6c65746d080c5c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c731870616c6c6574144576656e740404540001481c437265617465640801246465706f7369746f72000130543a3a4163636f756e74496400011c706f6f6c5f6964100118506f6f6c4964000004604120706f6f6c20686173206265656e20637265617465642e18426f6e6465641001186d656d626572000130543a3a4163636f756e74496400011c706f6f6c5f6964100118506f6f6c4964000118626f6e64656418013042616c616e63654f663c543e0001186a6f696e6564780110626f6f6c0001049441206d656d6265722068617320626563616d6520626f6e64656420696e206120706f6f6c2e1c506169644f75740c01186d656d626572000130543a3a4163636f756e74496400011c706f6f6c5f6964100118506f6f6c49640001187061796f757418013042616c616e63654f663c543e0002048c41207061796f757420686173206265656e206d61646520746f2061206d656d6265722e20556e626f6e6465641401186d656d626572000130543a3a4163636f756e74496400011c706f6f6c5f6964100118506f6f6c496400011c62616c616e636518013042616c616e63654f663c543e000118706f696e747318013042616c616e63654f663c543e00010c657261100120457261496e64657800032c9841206d656d6265722068617320756e626f6e6465642066726f6d20746865697220706f6f6c2e0039012d206062616c616e6365602069732074686520636f72726573706f6e64696e672062616c616e6365206f6620746865206e756d626572206f6620706f696e7473207468617420686173206265656e5501202072657175657374656420746f20626520756e626f6e646564202874686520617267756d656e74206f66207468652060756e626f6e6460207472616e73616374696f6e292066726f6d2074686520626f6e6465641c2020706f6f6c2e45012d2060706f696e74736020697320746865206e756d626572206f6620706f696e747320746861742061726520697373756564206173206120726573756c74206f66206062616c616e636560206265696e67c0646973736f6c76656420696e746f2074686520636f72726573706f6e64696e6720756e626f6e64696e6720706f6f6c2ee42d206065726160206973207468652065726120696e207768696368207468652062616c616e63652077696c6c20626520756e626f6e6465642e5501496e2074686520616273656e6365206f6620736c617368696e672c2074686573652076616c7565732077696c6c206d617463682e20496e207468652070726573656e6365206f6620736c617368696e672c207468654d016e756d626572206f6620706f696e74732074686174206172652069737375656420696e2074686520756e626f6e64696e6720706f6f6c2077696c6c206265206c657373207468616e2074686520616d6f756e746472657175657374656420746f20626520756e626f6e6465642e2457697468647261776e1001186d656d626572000130543a3a4163636f756e74496400011c706f6f6c5f6964100118506f6f6c496400011c62616c616e636518013042616c616e63654f663c543e000118706f696e747318013042616c616e63654f663c543e0004189c41206d656d626572206861732077697468647261776e2066726f6d20746865697220706f6f6c2e00210154686520676976656e206e756d626572206f662060706f696e7473602068617665206265656e20646973736f6c76656420696e2072657475726e206f66206062616c616e6365602e00590153696d696c617220746f2060556e626f6e64656460206576656e742c20696e2074686520616273656e6365206f6620736c617368696e672c2074686520726174696f206f6620706f696e7420746f2062616c616e63652877696c6c20626520312e2444657374726f79656404011c706f6f6c5f6964100118506f6f6c4964000504684120706f6f6c20686173206265656e2064657374726f7965642e3053746174654368616e67656408011c706f6f6c5f6964100118506f6f6c49640001246e65775f737461746541050124506f6f6c53746174650006047c546865207374617465206f66206120706f6f6c20686173206368616e676564344d656d62657252656d6f76656408011c706f6f6c5f6964100118506f6f6c49640001186d656d626572000130543a3a4163636f756e74496400070c9841206d656d62657220686173206265656e2072656d6f7665642066726f6d206120706f6f6c2e0051015468652072656d6f76616c2063616e20626520766f6c756e74617279202877697468647261776e20616c6c20756e626f6e6465642066756e647329206f7220696e766f6c756e7461727920286b69636b6564292e30526f6c6573557064617465640c0110726f6f74fd0101504f7074696f6e3c543a3a4163636f756e7449643e00011c626f756e636572fd0101504f7074696f6e3c543a3a4163636f756e7449643e0001246e6f6d696e61746f72fd0101504f7074696f6e3c543a3a4163636f756e7449643e000808550154686520726f6c6573206f66206120706f6f6c2068617665206265656e207570646174656420746f2074686520676976656e206e657720726f6c65732e204e6f7465207468617420746865206465706f7369746f724463616e206e65766572206368616e67652e2c506f6f6c536c617368656408011c706f6f6c5f6964100118506f6f6c496400011c62616c616e636518013042616c616e63654f663c543e0009040d01546865206163746976652062616c616e6365206f6620706f6f6c2060706f6f6c5f69646020686173206265656e20736c617368656420746f206062616c616e6365602e50556e626f6e64696e67506f6f6c536c61736865640c011c706f6f6c5f6964100118506f6f6c496400010c657261100120457261496e64657800011c62616c616e636518013042616c616e63654f663c543e000a04250154686520756e626f6e6420706f6f6c206174206065726160206f6620706f6f6c2060706f6f6c5f69646020686173206265656e20736c617368656420746f206062616c616e6365602e54506f6f6c436f6d6d697373696f6e5570646174656408011c706f6f6c5f6964100118506f6f6c496400011c63757272656e745905017c4f7074696f6e3c2850657262696c6c2c20543a3a4163636f756e744964293e000b04b44120706f6f6c277320636f6d6d697373696f6e2073657474696e6720686173206265656e206368616e6765642e60506f6f6c4d6178436f6d6d697373696f6e5570646174656408011c706f6f6c5f6964100118506f6f6c49640001386d61785f636f6d6d697373696f6e94011c50657262696c6c000c04d44120706f6f6c2773206d6178696d756d20636f6d6d697373696f6e2073657474696e6720686173206265656e206368616e6765642e7c506f6f6c436f6d6d697373696f6e4368616e6765526174655570646174656408011c706f6f6c5f6964100118506f6f6c496400012c6368616e67655f726174656105019c436f6d6d697373696f6e4368616e6765526174653c426c6f636b4e756d626572466f723c543e3e000d04cc4120706f6f6c277320636f6d6d697373696f6e20606368616e67655f726174656020686173206265656e206368616e6765642e90506f6f6c436f6d6d697373696f6e436c61696d5065726d697373696f6e5570646174656408011c706f6f6c5f6964100118506f6f6c49640001287065726d697373696f6e650501bc4f7074696f6e3c436f6d6d697373696f6e436c61696d5065726d697373696f6e3c543a3a4163636f756e7449643e3e000e04c8506f6f6c20636f6d6d697373696f6e20636c61696d207065726d697373696f6e20686173206265656e20757064617465642e54506f6f6c436f6d6d697373696f6e436c61696d656408011c706f6f6c5f6964100118506f6f6c4964000128636f6d6d697373696f6e18013042616c616e63654f663c543e000f0484506f6f6c20636f6d6d697373696f6e20686173206265656e20636c61696d65642e644d696e42616c616e63654465666963697441646a757374656408011c706f6f6c5f6964100118506f6f6c4964000118616d6f756e7418013042616c616e63654f663c543e001004c8546f70706564207570206465666963697420696e2066726f7a656e204544206f66207468652072657761726420706f6f6c2e604d696e42616c616e636545786365737341646a757374656408011c706f6f6c5f6964100118506f6f6c4964000118616d6f756e7418013042616c616e63654f663c543e001104bc436c61696d6564206578636573732066726f7a656e204544206f66206166207468652072657761726420706f6f6c2e04584576656e7473206f6620746869732070616c6c65742e71080c4c70616c6c65745f666173745f756e7374616b651870616c6c6574144576656e7404045400011420556e7374616b65640801147374617368000130543a3a4163636f756e744964000118726573756c741d0801384469737061746368526573756c740000045841207374616b65722077617320756e7374616b65642e1c536c61736865640801147374617368000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e000104190141207374616b65722077617320736c617368656420666f722072657175657374696e6720666173742d756e7374616b65207768696c7374206265696e67206578706f7365642e304261746368436865636b656404011065726173e50101345665633c457261496e6465783e00020445014120626174636820776173207061727469616c6c7920636865636b656420666f722074686520676976656e20657261732c20627574207468652070726f6365737320646964206e6f742066696e6973682e34426174636846696e697368656404011073697a6510010c7533320003109c41206261746368206f66206120676976656e2073697a6520776173207465726d696e617465642e0055015468697320697320616c7761797320666f6c6c6f77732062792061206e756d626572206f662060556e7374616b656460206f722060536c617368656460206576656e74732c206d61726b696e672074686520656e64e86f66207468652062617463682e2041206e65772062617463682077696c6c20626520637265617465642075706f6e206e65787420626c6f636b2e34496e7465726e616c4572726f72000404e8416e20696e7465726e616c206572726f722068617070656e65642e204f7065726174696f6e732077696c6c20626520706175736564206e6f772e047c54686520604576656e746020656e756d206f6620746869732070616c6c65747508106c706f6c6b61646f745f72756e74696d655f70617261636861696e7324696e636c7573696f6e1870616c6c6574144576656e740404540001103c43616e6469646174654261636b656410007908016443616e646964617465526563656970743c543a3a486173683e0000f5050120486561644461746100007d080124436f7265496e64657800008108012847726f7570496e646578000004c0412063616e64696461746520776173206261636b65642e20605b63616e6469646174652c20686561645f646174615d604443616e646964617465496e636c7564656410007908016443616e646964617465526563656970743c543a3a486173683e0000f5050120486561644461746100007d080124436f7265496e64657800008108012847726f7570496e646578000104c8412063616e6469646174652077617320696e636c756465642e20605b63616e6469646174652c20686561645f646174615d604443616e64696461746554696d65644f75740c007908016443616e646964617465526563656970743c543a3a486173683e0000f5050120486561644461746100007d080124436f7265496e646578000204bc412063616e6469646174652074696d6564206f75742e20605b63616e6469646174652c20686561645f646174615d60585570776172644d65737361676573526563656976656408011066726f6d95020118506172614964000114636f756e7410010c753332000304f8536f6d6520757077617264206d657373616765732068617665206265656e20726563656976656420616e642077696c6c2062652070726f6365737365642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657479080c4c706f6c6b61646f745f7072696d6974697665730876364043616e6469646174655265636569707404044801300008012864657363726970746f72c905015843616e64696461746544657363726970746f723c483e000140636f6d6d69746d656e74735f686173683001104861736800007d080c4c706f6c6b61646f745f7072696d69746976657308763624436f7265496e6465780000040010010c753332000081080c4c706f6c6b61646f745f7072696d6974697665730876362847726f7570496e6465780000040010010c75333200008508106c706f6c6b61646f745f72756e74696d655f70617261636861696e731470617261731870616c6c6574144576656e740001204843757272656e74436f646555706461746564040095020118506172614964000004cc43757272656e7420636f646520686173206265656e207570646174656420666f72206120506172612e2060706172615f6964604843757272656e744865616455706461746564040095020118506172614964000104cc43757272656e74206865616420686173206265656e207570646174656420666f72206120506172612e2060706172615f69646050436f6465557067726164655363686564756c6564040095020118506172614964000204dc4120636f6465207570677261646520686173206265656e207363686564756c656420666f72206120506172612e2060706172615f696460304e6577486561644e6f746564040095020118506172614964000304bc41206e6577206865616420686173206265656e206e6f74656420666f72206120506172612e2060706172615f69646030416374696f6e517565756564080095020118506172614964000010013053657373696f6e496e646578000404f041207061726120686173206265656e2071756575656420746f20657865637574652070656e64696e6720616374696f6e732e2060706172615f6964603c507666436865636b537461727465640800d505014856616c69646174696f6e436f646548617368000095020118506172614964000508550154686520676976656e20706172612065697468657220696e69746961746564206f72207375627363726962656420746f20612050564620636865636b20666f722074686520676976656e2076616c69646174696f6e6c636f64652e2060636f64655f68617368602060706172615f69646040507666436865636b41636365707465640800d505014856616c69646174696f6e436f646548617368000095020118506172614964000608110154686520676976656e2076616c69646174696f6e20636f6465207761732061636365707465642062792074686520505646207072652d636865636b696e6720766f74652e5460636f64655f68617368602060706172615f69646040507666436865636b52656a65637465640800d505014856616c69646174696f6e436f646548617368000095020118506172614964000708110154686520676976656e2076616c69646174696f6e20636f6465207761732072656a65637465642062792074686520505646207072652d636865636b696e6720766f74652e5460636f64655f68617368602060706172615f696460047c54686520604576656e746020656e756d206f6620746869732070616c6c65748908106c706f6c6b61646f745f72756e74696d655f70617261636861696e731068726d701870616c6c6574144576656e7404045400011c504f70656e4368616e6e656c52657175657374656410011873656e64657295020118506172614964000124726563697069656e749502011850617261496400015470726f706f7365645f6d61785f636170616369747910010c75333200016470726f706f7365645f6d61785f6d6573736167655f73697a6510010c753332000004704f70656e2048524d50206368616e6e656c207265717565737465642e4c4f70656e4368616e6e656c43616e63656c656408013062795f70617261636861696e950201185061726149640001286368616e6e656c5f69643506013448726d704368616e6e656c49640001042901416e2048524d50206368616e6e656c20726571756573742073656e7420627920746865207265636569766572207761732063616e63656c6564206279206569746865722070617274792e4c4f70656e4368616e6e656c416363657074656408011873656e64657295020118506172614964000124726563697069656e74950201185061726149640002046c4f70656e2048524d50206368616e6e656c2061636365707465642e344368616e6e656c436c6f73656408013062795f70617261636861696e950201185061726149640001286368616e6e656c5f69643506013448726d704368616e6e656c49640003045048524d50206368616e6e656c20636c6f7365642e5848726d704368616e6e656c466f7263654f70656e656410011873656e64657295020118506172614964000124726563697069656e749502011850617261496400015470726f706f7365645f6d61785f636170616369747910010c75333200016470726f706f7365645f6d61785f6d6573736167655f73697a6510010c753332000404ac416e2048524d50206368616e6e656c20776173206f70656e65642076696120526f6f74206f726967696e2e5c48726d7053797374656d4368616e6e656c4f70656e656410011873656e64657295020118506172614964000124726563697069656e749502011850617261496400015470726f706f7365645f6d61785f636170616369747910010c75333200016470726f706f7365645f6d61785f6d6573736167655f73697a6510010c753332000504d4416e2048524d50206368616e6e656c20776173206f70656e6564206265747765656e2074776f2073797374656d20636861696e732e684f70656e4368616e6e656c4465706f736974735570646174656408011873656e64657295020118506172614964000124726563697069656e7495020118506172614964000604a0416e2048524d50206368616e6e656c2773206465706f73697473207765726520757064617465642e047c54686520604576656e746020656e756d206f6620746869732070616c6c65748d08106c706f6c6b61646f745f72756e74696d655f70617261636861696e732064697370757465731870616c6c6574144576656e7404045400010c4044697370757465496e6974696174656408000906013443616e6469646174654861736800009108013c446973707574654c6f636174696f6e000004090141206469737075746520686173206265656e20696e697469617465642e205c5b63616e64696461746520686173682c2064697370757465206c6f636174696f6e5c5d4044697370757465436f6e636c7564656408000906013443616e6469646174654861736800009508013444697370757465526573756c74000108cc4120646973707574652068617320636f6e636c7564656420666f72206f7220616761696e737420612063616e6469646174652eb4605c5b706172612069642c2063616e64696461746520686173682c206469737075746520726573756c745c5d60185265766572740400100144426c6f636b4e756d626572466f723c543e000210fc4120646973707574652068617320636f6e636c7564656420776974682073757065726d616a6f7269747920616761696e737420612063616e6469646174652e0d01426c6f636b20617574686f72732073686f756c64206e6f206c6f6e676572206275696c64206f6e20746f70206f662074686973206865616420616e642073686f756c640101696e7374656164207265766572742074686520626c6f636b2061742074686520676976656e206865696768742e20546869732073686f756c6420626520746865fc6e756d626572206f6620746865206368696c64206f6620746865206c617374206b6e6f776e2076616c696420626c6f636b20696e2074686520636861696e2e047c54686520604576656e746020656e756d206f6620746869732070616c6c657491080c6c706f6c6b61646f745f72756e74696d655f70617261636861696e732064697370757465733c446973707574654c6f636174696f6e000108144c6f63616c0000001852656d6f74650001000095080c6c706f6c6b61646f745f72756e74696d655f70617261636861696e732064697370757465733444697370757465526573756c740001081456616c69640000001c496e76616c6964000100009908106c706f6c6b61646f745f72756e74696d655f70617261636861696e734861737369676e65725f6f6e5f64656d616e641870616c6c6574144576656e740404540001084c4f6e44656d616e644f72646572506c6163656408011c706172615f69649502011850617261496400012873706f745f707269636518013042616c616e63654f663c543e000004b8416e206f726465722077617320706c6163656420617420736f6d652073706f7420707269636520616d6f756e742e3853706f745472616666696353657404011c74726166666963bd070124466978656455313238000104c45468652076616c7565206f66207468652073706f742074726166666963206d756c7469706c696572206368616e6765642e047c54686520604576656e746020656e756d206f6620746869732070616c6c65749d08105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3c70617261735f7265676973747261721870616c6c6574144576656e74040454000110285265676973746572656408011c706172615f69649502011850617261496400011c6d616e61676572000130543a3a4163636f756e7449640000003044657265676973746572656404011c706172615f69649502011850617261496400010020526573657276656408011c706172615f69649502011850617261496400010c77686f000130543a3a4163636f756e7449640002001c5377617070656408011c706172615f6964950201185061726149640001206f746865725f696495020118506172614964000300047c54686520604576656e746020656e756d206f6620746869732070616c6c6574a108105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e14736c6f74731870616c6c6574144576656e74040454000108384e65774c65617365506572696f640401306c656173655f706572696f641001404c65617365506572696f644f663c543e0000049041206e657720605b6c656173655f706572696f645d6020697320626567696e6e696e672e184c656173656418011c706172615f6964950201185061726149640001186c6561736572000130543a3a4163636f756e744964000130706572696f645f626567696e1001404c65617365506572696f644f663c543e000130706572696f645f636f756e741001404c65617365506572696f644f663c543e00013865787472615f726573657276656418013042616c616e63654f663c543e000130746f74616c5f616d6f756e7418013042616c616e63654f663c543e00010c35014120706172612068617320776f6e2074686520726967687420746f206120636f6e74696e756f757320736574206f66206c6561736520706572696f647320617320612070617261636861696e2e450146697273742062616c616e636520697320616e7920657874726120616d6f756e74207265736572766564206f6e20746f70206f662074686520706172612773206578697374696e67206465706f7369742eb05365636f6e642062616c616e63652069732074686520746f74616c20616d6f756e742072657365727665642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574a508105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e2061756374696f6e731870616c6c6574144576656e7404045400011c3841756374696f6e537461727465640c013461756374696f6e5f696e64657810013041756374696f6e496e6465780001306c656173655f706572696f641001404c65617365506572696f644f663c543e000118656e64696e67100144426c6f636b4e756d626572466f723c543e0000084901416e2061756374696f6e20737461727465642e2050726f76696465732069747320696e64657820616e642074686520626c6f636b206e756d6265722077686572652069742077696c6c20626567696e20746f1501636c6f736520616e6420746865206669727374206c6561736520706572696f64206f662074686520717561647275706c657420746861742069732061756374696f6e65642e3441756374696f6e436c6f73656404013461756374696f6e5f696e64657810013041756374696f6e496e646578000104b8416e2061756374696f6e20656e6465642e20416c6c2066756e6473206265636f6d6520756e72657365727665642e2052657365727665640c0118626964646572000130543a3a4163636f756e74496400013865787472615f726573657276656418013042616c616e63654f663c543e000130746f74616c5f616d6f756e7418013042616c616e63654f663c543e000208490146756e6473207765726520726573657276656420666f7220612077696e6e696e67206269642e2046697273742062616c616e63652069732074686520657874726120616d6f756e742072657365727665642e505365636f6e642069732074686520746f74616c2e28556e7265736572766564080118626964646572000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e000304290146756e6473207765726520756e72657365727665642073696e636520626964646572206973206e6f206c6f6e676572206163746976652e20605b6269646465722c20616d6f756e745d604852657365727665436f6e66697363617465640c011c706172615f6964950201185061726149640001186c6561736572000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e0004085501536f6d656f6e6520617474656d7074656420746f206c65617365207468652073616d6520736c6f7420747769636520666f7220612070617261636861696e2e2054686520616d6f756e742069732068656c6420696eb87265736572766520627574206e6f2070617261636861696e20736c6f7420686173206265656e206c65617365642e2c4269644163636570746564140118626964646572000130543a3a4163636f756e74496400011c706172615f696495020118506172614964000118616d6f756e7418013042616c616e63654f663c543e00012866697273745f736c6f741001404c65617365506572696f644f663c543e0001246c6173745f736c6f741001404c65617365506572696f644f663c543e000504c841206e65772062696420686173206265656e206163636570746564206173207468652063757272656e742077696e6e65722e3457696e6e696e674f666673657408013461756374696f6e5f696e64657810013041756374696f6e496e646578000130626c6f636b5f6e756d626572100144426c6f636b4e756d626572466f723c543e00060859015468652077696e6e696e67206f6666736574207761732063686f73656e20666f7220616e2061756374696f6e2e20546869732077696c6c206d617020696e746f20746865206057696e6e696e67602073746f72616765106d61702e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574a908105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e2463726f77646c6f616e1870616c6c6574144576656e740404540001281c4372656174656404011c706172615f6964950201185061726149640000048c4372656174652061206e65772063726f77646c6f616e696e672063616d706169676e2e2c436f6e74726962757465640c010c77686f000130543a3a4163636f756e74496400012866756e645f696e64657895020118506172614964000118616d6f756e7418013042616c616e63654f663c543e00010470436f6e747269627574656420746f20612063726f77642073616c652e2057697468647265770c010c77686f000130543a3a4163636f756e74496400012866756e645f696e64657895020118506172614964000118616d6f756e7418013042616c616e63654f663c543e0002049c57697468647265772066756c6c2062616c616e6365206f66206120636f6e7472696275746f722e445061727469616c6c79526566756e64656404011c706172615f6964950201185061726149640003082d01546865206c6f616e7320696e20612066756e642068617665206265656e207061727469616c6c7920646973736f6c7665642c20692e652e2074686572652061726520736f6d65206c656674b46f766572206368696c64206b6579732074686174207374696c6c206e65656420746f206265206b696c6c65642e2c416c6c526566756e64656404011c706172615f6964950201185061726149640004049c416c6c206c6f616e7320696e20612066756e642068617665206265656e20726566756e6465642e24446973736f6c76656404011c706172615f6964950201185061726149640005044846756e6420697320646973736f6c7665642e3c48616e646c65426964526573756c7408011c706172615f696495020118506172614964000118726573756c741d0801384469737061746368526573756c74000604f454686520726573756c74206f6620747279696e6720746f207375626d69742061206e65772062696420746f2074686520536c6f74732070616c6c65742e1845646974656404011c706172615f696495020118506172614964000704c454686520636f6e66696775726174696f6e20746f20612063726f77646c6f616e20686173206265656e206564697465642e2c4d656d6f557064617465640c010c77686f000130543a3a4163636f756e74496400011c706172615f6964950201185061726149640001106d656d6f34011c5665633c75383e0008046041206d656d6f20686173206265656e20757064617465642e3c4164646564546f4e6577526169736504011c706172615f696495020118506172614964000904a0412070617261636861696e20686173206265656e206d6f76656420746f20604e6577526169736560047c54686520604576656e746020656e756d206f6620746869732070616c6c6574ad08106c706f6c6b61646f745f72756e74696d655f70617261636861696e7320636f726574696d651870616c6c6574144576656e7404045400010850526576656e7565496e666f5265717565737465640401107768656e100144426c6f636b4e756d626572466f723c543e00000421015468652062726f6b657220636861696e206861732061736b656420666f7220726576656e756520696e666f726d6174696f6e20666f72206120737065636966696320626c6f636b2e30436f726541737369676e6564040110636f72657d080124436f7265496e646578000104ec4120636f7265206861732072656365697665642061206e65772061737369676e6d656e742066726f6d207468652062726f6b657220636861696e2e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574b1080c2870616c6c65745f78636d1870616c6c6574144576656e7404045400016024417474656d7074656404011c6f7574636f6d65b508015078636d3a3a6c61746573743a3a4f7574636f6d65000004a8457865637574696f6e206f6620616e2058434d206d6573736167652077617320617474656d707465642e1053656e741001186f726967696e190101204c6f636174696f6e00012c64657374696e6174696f6e190101204c6f636174696f6e00011c6d6573736167653507011c58636d3c28293e0001286d6573736167655f696404011c58636d486173680001045c412058434d206d657373616765207761732073656e742e48556e6578706563746564526573706f6e73650801186f726967696e190101204c6f636174696f6e00012071756572795f69642c011c5175657279496400020c5901517565727920726573706f6e736520726563656976656420776869636820646f6573206e6f74206d61746368206120726567697374657265642071756572792e2054686973206d61792062652062656361757365206155016d61746368696e6720717565727920776173206e6576657220726567697374657265642c206974206d617920626520626563617573652069742069732061206475706c696361746520726573706f6e73652c206f727062656361757365207468652071756572792074696d6564206f75742e34526573706f6e7365526561647908012071756572795f69642c011c51756572794964000120726573706f6e736555070120526573706f6e73650003085d01517565727920726573706f6e736520686173206265656e20726563656976656420616e6420697320726561647920666f722074616b696e672077697468206074616b655f726573706f6e7365602e205468657265206973806e6f2072656769737465726564206e6f74696669636174696f6e2063616c6c2e204e6f7469666965640c012071756572795f69642c011c5175657279496400013070616c6c65745f696e646578080108753800012863616c6c5f696e64657808010875380004085901517565727920726573706f6e736520686173206265656e20726563656976656420616e642071756572792069732072656d6f7665642e205468652072656769737465726564206e6f74696669636174696f6e20686173a86265656e206469737061746368656420616e64206578656375746564207375636365737366756c6c792e404e6f746966794f76657277656967687414012071756572795f69642c011c5175657279496400013070616c6c65745f696e646578080108753800012863616c6c5f696e646578080108753800013461637475616c5f77656967687424011857656967687400014c6d61785f62756467657465645f77656967687424011857656967687400050c4901517565727920726573706f6e736520686173206265656e20726563656976656420616e642071756572792069732072656d6f7665642e205468652072656769737465726564206e6f74696669636174696f6e5901636f756c64206e6f742062652064697370617463686564206265636175736520746865206469737061746368207765696768742069732067726561746572207468616e20746865206d6178696d756d20776569676874e46f726967696e616c6c7920627564676574656420627920746869732072756e74696d6520666f722074686520717565727920726573756c742e4c4e6f7469667944697370617463684572726f720c012071756572795f69642c011c5175657279496400013070616c6c65745f696e646578080108753800012863616c6c5f696e64657808010875380006085501517565727920726573706f6e736520686173206265656e20726563656976656420616e642071756572792069732072656d6f7665642e2054686572652077617320612067656e6572616c206572726f722077697468886469737061746368696e6720746865206e6f74696669636174696f6e2063616c6c2e484e6f746966794465636f64654661696c65640c012071756572795f69642c011c5175657279496400013070616c6c65745f696e646578080108753800012863616c6c5f696e646578080108753800070c5101517565727920726573706f6e736520686173206265656e20726563656976656420616e642071756572792069732072656d6f7665642e205468652064697370617463682077617320756e61626c6520746f20626559016465636f64656420696e746f2061206043616c6c603b2074686973206d696768742062652064756520746f2064697370617463682066756e6374696f6e20686176696e672061207369676e6174757265207768696368946973206e6f742060286f726967696e2c20517565727949642c20526573706f6e736529602e40496e76616c6964526573706f6e6465720c01186f726967696e190101204c6f636174696f6e00012071756572795f69642c011c5175657279496400014465787065637465645f6c6f636174696f6e690701404f7074696f6e3c4c6f636174696f6e3e00080c5901457870656374656420717565727920726573706f6e736520686173206265656e2072656365697665642062757420746865206f726967696e206c6f636174696f6e206f662074686520726573706f6e736520646f657355016e6f74206d6174636820746861742065787065637465642e205468652071756572792072656d61696e73207265676973746572656420666f722061206c617465722c2076616c69642c20726573706f6e736520746f6c626520726563656976656420616e642061637465642075706f6e2e5c496e76616c6964526573706f6e64657256657273696f6e0801186f726967696e190101204c6f636174696f6e00012071756572795f69642c011c5175657279496400091c5101457870656374656420717565727920726573706f6e736520686173206265656e2072656365697665642062757420746865206578706563746564206f726967696e206c6f636174696f6e20706c6163656420696e4d0173746f7261676520627920746869732072756e74696d652070726576696f75736c792063616e6e6f74206265206465636f6465642e205468652071756572792072656d61696e7320726567697374657265642e0041015468697320697320756e6578706563746564202873696e63652061206c6f636174696f6e20706c6163656420696e2073746f7261676520696e20612070726576696f75736c7920657865637574696e674d0172756e74696d652073686f756c64206265207265616461626c65207072696f7220746f2071756572792074696d656f75742920616e642064616e6765726f75732073696e63652074686520706f737369626c79590176616c696420726573706f6e73652077696c6c2062652064726f707065642e204d616e75616c20676f7665726e616e636520696e74657276656e74696f6e2069732070726f6261626c7920676f696e6720746f2062651c6e65656465642e34526573706f6e736554616b656e04012071756572795f69642c011c51756572794964000a04c8526563656976656420717565727920726573706f6e736520686173206265656e207265616420616e642072656d6f7665642e34417373657473547261707065640c011068617368300110483235360001186f726967696e190101204c6f636174696f6e0001186173736574737d07013c56657273696f6e6564417373657473000b04b8536f6d65206173736574732068617665206265656e20706c6163656420696e20616e20617373657420747261702e5456657273696f6e4368616e67654e6f74696669656410012c64657374696e6174696f6e190101204c6f636174696f6e000118726573756c7410012858636d56657273696f6e000110636f7374410701184173736574730001286d6573736167655f696404011c58636d48617368000c0c2501416e2058434d2076657273696f6e206368616e6765206e6f74696669636174696f6e206d65737361676520686173206265656e20617474656d7074656420746f2062652073656e742e00e054686520636f7374206f662073656e64696e672069742028626f726e652062792074686520636861696e2920697320696e636c756465642e5c537570706f7274656456657273696f6e4368616e6765640801206c6f636174696f6e190101204c6f636174696f6e00011c76657273696f6e10012858636d56657273696f6e000d08390154686520737570706f727465642076657273696f6e206f662061206c6f636174696f6e20686173206265656e206368616e6765642e2054686973206d69676874206265207468726f75676820616ec06175746f6d61746963206e6f74696669636174696f6e206f722061206d616e75616c20696e74657276656e74696f6e2e504e6f7469667954617267657453656e644661696c0c01206c6f636174696f6e190101204c6f636174696f6e00012071756572795f69642c011c517565727949640001146572726f720107012058636d4572726f72000e0859014120676976656e206c6f636174696f6e2077686963682068616420612076657273696f6e206368616e676520737562736372697074696f6e207761732064726f70706564206f77696e6720746f20616e206572726f727c73656e64696e6720746865206e6f74696669636174696f6e20746f2069742e644e6f746966795461726765744d6967726174696f6e4661696c0801206c6f636174696f6e5101014456657273696f6e65644c6f636174696f6e00012071756572795f69642c011c51756572794964000f0859014120676976656e206c6f636174696f6e2077686963682068616420612076657273696f6e206368616e676520737562736372697074696f6e207761732064726f70706564206f77696e6720746f20616e206572726f72b46d6967726174696e6720746865206c6f636174696f6e20746f206f7572206e65772058434d20666f726d61742e54496e76616c69645175657269657256657273696f6e0801186f726967696e190101204c6f636174696f6e00012071756572795f69642c011c5175657279496400101c5501457870656374656420717565727920726573706f6e736520686173206265656e20726563656976656420627574207468652065787065637465642071756572696572206c6f636174696f6e20706c6163656420696e4d0173746f7261676520627920746869732072756e74696d652070726576696f75736c792063616e6e6f74206265206465636f6465642e205468652071756572792072656d61696e7320726567697374657265642e0041015468697320697320756e6578706563746564202873696e63652061206c6f636174696f6e20706c6163656420696e2073746f7261676520696e20612070726576696f75736c7920657865637574696e674d0172756e74696d652073686f756c64206265207265616461626c65207072696f7220746f2071756572792074696d656f75742920616e642064616e6765726f75732073696e63652074686520706f737369626c79590176616c696420726573706f6e73652077696c6c2062652064726f707065642e204d616e75616c20676f7665726e616e636520696e74657276656e74696f6e2069732070726f6261626c7920676f696e6720746f2062651c6e65656465642e38496e76616c6964517565726965721001186f726967696e190101204c6f636174696f6e00012071756572795f69642c011c5175657279496400014065787065637465645f71756572696572190101204c6f636174696f6e0001506d617962655f61637475616c5f71756572696572690701404f7074696f6e3c4c6f636174696f6e3e00110c5d01457870656374656420717565727920726573706f6e736520686173206265656e20726563656976656420627574207468652071756572696572206c6f636174696f6e206f662074686520726573706f6e736520646f657351016e6f74206d61746368207468652065787065637465642e205468652071756572792072656d61696e73207265676973746572656420666f722061206c617465722c2076616c69642c20726573706f6e736520746f6c626520726563656976656420616e642061637465642075706f6e2e5056657273696f6e4e6f74696679537461727465640c012c64657374696e6174696f6e190101204c6f636174696f6e000110636f7374410701184173736574730001286d6573736167655f696404011c58636d486173680012085901412072656d6f746520686173207265717565737465642058434d2076657273696f6e206368616e6765206e6f74696669636174696f6e2066726f6d20757320616e64207765206861766520686f6e6f7265642069742e1d01412076657273696f6e20696e666f726d6174696f6e206d6573736167652069732073656e7420746f207468656d20616e642069747320636f737420697320696e636c756465642e5856657273696f6e4e6f746966795265717565737465640c012c64657374696e6174696f6e190101204c6f636174696f6e000110636f7374410701184173736574730001286d6573736167655f696404011c58636d486173680013043d015765206861766520726571756573746564207468617420612072656d6f746520636861696e2073656e642075732058434d2076657273696f6e206368616e6765206e6f74696669636174696f6e732e6056657273696f6e4e6f74696679556e7265717565737465640c012c64657374696e6174696f6e190101204c6f636174696f6e000110636f7374410701184173736574730001286d6573736167655f696404011c58636d4861736800140825015765206861766520726571756573746564207468617420612072656d6f746520636861696e2073746f70732073656e64696e672075732058434d2076657273696f6e206368616e6765386e6f74696669636174696f6e732e204665657350616964080118706179696e67190101204c6f636174696f6e0001106665657341070118417373657473001504310146656573207765726520706169642066726f6d2061206c6f636174696f6e20666f7220616e206f7065726174696f6e20286f6674656e20666f72207573696e67206053656e6458636d60292e34417373657473436c61696d65640c011068617368300110483235360001186f726967696e190101204c6f636174696f6e0001186173736574737d07013c56657273696f6e6564417373657473001604c0536f6d65206173736574732068617665206265656e20636c61696d65642066726f6d20616e20617373657420747261706056657273696f6e4d6967726174696f6e46696e697368656404011c76657273696f6e10012858636d56657273696f6e00170484412058434d2076657273696f6e206d6967726174696f6e2066696e69736865642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574b508102c73746167696e675f78636d087634187472616974731c4f7574636f6d6500010c20436f6d706c6574650401107573656424011857656967687400000028496e636f6d706c657465080110757365642401185765696768740001146572726f72010701144572726f72000100144572726f720401146572726f72010701144572726f7200020000b9080c5070616c6c65745f6d6573736167655f71756575651870616c6c6574144576656e740404540001104050726f63657373696e674661696c65640c010869643001104832353604945468652060626c616b65325f323536602068617368206f6620746865206d6573736167652e01186f726967696eb10701484d6573736167654f726967696e4f663c543e0464546865207175657565206f6620746865206d6573736167652e01146572726f72bd08014c50726f636573734d6573736167654572726f721060546865206572726f722074686174206f636375727265642e00490154686973206572726f7220697320707265747479206f70617175652e204d6f72652066696e652d677261696e6564206572726f7273206e65656420746f20626520656d6974746564206173206576656e74736862792074686520604d65737361676550726f636573736f72602e000455014d657373616765206469736361726465642064756520746f20616e206572726f7220696e2074686520604d65737361676550726f636573736f72602028757375616c6c79206120666f726d6174206572726f72292e2450726f63657373656410010869643001104832353604945468652060626c616b65325f323536602068617368206f6620746865206d6573736167652e01186f726967696eb10701484d6573736167654f726967696e4f663c543e0464546865207175657565206f6620746865206d6573736167652e012c7765696768745f7573656424011857656967687404c0486f77206d7563682077656967687420776173207573656420746f2070726f6365737320746865206d6573736167652e011c73756363657373780110626f6f6c18885768657468657220746865206d657373616765207761732070726f6365737365642e0049014e6f74652074686174207468697320646f6573206e6f74206d65616e20746861742074686520756e6465726c79696e6720604d65737361676550726f636573736f72602077617320696e7465726e616c6c7935017375636365737366756c2e204974202a736f6c656c792a206d65616e73207468617420746865204d512070616c6c65742077696c6c2074726561742074686973206173206120737563636573734d01636f6e646974696f6e20616e64206469736361726420746865206d6573736167652e20416e7920696e7465726e616c206572726f72206e6565647320746f20626520656d6974746564206173206576656e74736862792074686520604d65737361676550726f636573736f72602e0104544d6573736167652069732070726f6365737365642e484f766572776569676874456e71756575656410010869640401205b75383b2033325d04945468652060626c616b65325f323536602068617368206f6620746865206d6573736167652e01186f726967696eb10701484d6573736167654f726967696e4f663c543e0464546865207175657565206f6620746865206d6573736167652e0128706167655f696e64657810012450616765496e64657804605468652070616765206f6620746865206d6573736167652e01346d6573736167655f696e64657810011c543a3a53697a6504a454686520696e646578206f6620746865206d6573736167652077697468696e2074686520706167652e02048c4d65737361676520706c6163656420696e206f7665727765696768742071756575652e28506167655265617065640801186f726967696eb10701484d6573736167654f726967696e4f663c543e0458546865207175657565206f662074686520706167652e0114696e64657810012450616765496e646578045854686520696e646578206f662074686520706167652e03045454686973207061676520776173207265617065642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574bd0810346672616d655f737570706f727418747261697473206d657373616765734c50726f636573734d6573736167654572726f7200011424426164466f726d61740000001c436f72727570740001002c556e737570706f72746564000200284f7665727765696768740400240118576569676874000300145969656c6400040000c1080c4470616c6c65745f61737365745f726174651870616c6c6574144576656e7404045400010c404173736574526174654372656174656408012861737365745f6b696e64ec0130543a3a41737365744b696e6400011072617465bd0701244669786564553132380000004041737365745261746552656d6f76656404012861737365745f6b696e64ec0130543a3a41737365744b696e6400010040417373657452617465557064617465640c012861737365745f6b696e64ec0130543a3a41737365744b696e6400010c6f6c64bd07012446697865645531323800010c6e6577bd070124466978656455313238000200047c54686520604576656e746020656e756d206f6620746869732070616c6c6574c508105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e446964656e746974795f6d69677261746f721870616c6c6574144576656e74040454000108384964656e7469747952656170656404010c77686f000130543a3a4163636f756e744964000004e0546865206964656e7469747920616e6420616c6c20737562206163636f756e747320776572652072656170656420666f72206077686f602e384465706f736974557064617465640c010c77686f000130543a3a4163636f756e7449640001206964656e7469747918013042616c616e63654f663c543e0001107375627318013042616c616e63654f663c543e0001084101546865206465706f736974732068656c6420666f72206077686f60207765726520757064617465642e20606964656e746974796020697320746865206e6577206465706f7369742068656c6420666f721d016964656e7469747920696e666f2c20616e642060737562736020697320746865206e6577206465706f7369742068656c6420666f7220746865207375622d6163636f756e74732e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574c90808306672616d655f73797374656d14506861736500010c384170706c7945787472696e736963040010010c7533320000003046696e616c697a6174696f6e00010038496e697469616c697a6174696f6e00020000cd08000002a50300d10808306672616d655f73797374656d584c61737452756e74696d6555706772616465496e666f0000080130737065635f76657273696f6efc014c636f6465633a3a436f6d706163743c7533323e000124737065635f6e616d65d508016473705f72756e74696d653a3a52756e74696d65537472696e670000d5080000050200d90808306672616d655f73797374656d60436f646555706772616465417574686f72697a6174696f6e0404540000080124636f64655f6861736830011c543a3a48617368000134636865636b5f76657273696f6e780110626f6f6c0000dd080c306672616d655f73797374656d186c696d69747330426c6f636b5765696768747300000c0128626173655f626c6f636b2401185765696768740001246d61785f626c6f636b2401185765696768740001247065725f636c617373e10801845065724469737061746368436c6173733c57656967687473506572436c6173733e0000e1080c346672616d655f737570706f7274206469737061746368405065724469737061746368436c61737304045401e508000c01186e6f726d616ce50801045400012c6f7065726174696f6e616ce5080104540001246d616e6461746f7279e5080104540000e5080c306672616d655f73797374656d186c696d6974733c57656967687473506572436c6173730000100138626173655f65787472696e7369632401185765696768740001346d61785f65787472696e7369630d0801384f7074696f6e3c5765696768743e0001246d61785f746f74616c0d0801384f7074696f6e3c5765696768743e00012072657365727665640d0801384f7074696f6e3c5765696768743e0000e9080c306672616d655f73797374656d186c696d6974732c426c6f636b4c656e677468000004010c6d6178ed0801545065724469737061746368436c6173733c7533323e0000ed080c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540110000c01186e6f726d616c1001045400012c6f7065726174696f6e616c100104540001246d616e6461746f7279100104540000f108082873705f776569676874733c52756e74696d6544625765696768740000080110726561642c010c75363400011477726974652c010c7536340000f508082873705f76657273696f6e3852756e74696d6556657273696f6e0000200124737065635f6e616d65d508013452756e74696d65537472696e67000124696d706c5f6e616d65d508013452756e74696d65537472696e67000144617574686f72696e675f76657273696f6e10010c753332000130737065635f76657273696f6e10010c753332000130696d706c5f76657273696f6e10010c75333200011061706973f908011c4170697356656300014c7472616e73616374696f6e5f76657273696f6e10010c75333200013473746174655f76657273696f6e08010875380000f908040c436f7704045401fd08000400fd08000000fd080000020109000109000004080d03100005090c306672616d655f73797374656d1870616c6c6574144572726f720404540001203c496e76616c6964537065634e616d650000081101546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e63726561736500010841015468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e00020cec4661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e0009014569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f73697465000304fc537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e74000404350154686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e3043616c6c46696c7465726564000504d0546865206f726967696e2066696c7465722070726576656e74207468652063616c6c20746f20626520646973706174636865642e444e6f7468696e67417574686f72697a6564000604584e6f207570677261646520617574686f72697a65642e30556e617574686f72697a656400070494546865207375626d697474656420636f6465206973206e6f7420617574686f72697a65642e046c4572726f7220666f72207468652053797374656d2070616c6c657409090c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454010d09045300000400110901185665633c543e00000d0900000408a1012c0011090000020d090015090c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540104045300000400190901185665633c543e0000190900000204001d0904184f7074696f6e0404540121090108104e6f6e6500000010536f6d6504002109000001000021090c4473705f636f6e73656e7375735f626162651c646967657374732450726544696765737400010c1c5072696d6172790400250901405072696d617279507265446967657374000100385365636f6e64617279506c61696e04002d09015c5365636f6e64617279506c61696e507265446967657374000200305365636f6e646172795652460400310901545365636f6e646172795652465072654469676573740003000025090c4473705f636f6e73656e7375735f626162651c64696765737473405072696d61727950726544696765737400000c013c617574686f726974795f696e64657810015473757065723a3a417574686f72697479496e646578000110736c6f74a5010110536c6f740001347672665f7369676e6174757265290901305672665369676e617475726500002909101c73705f636f72651c737232353531390c767266305672665369676e617475726500000801287072655f6f75747075740401305672665072654f757470757400011470726f6f665102012056726650726f6f6600002d090c4473705f636f6e73656e7375735f626162651c646967657374735c5365636f6e64617279506c61696e507265446967657374000008013c617574686f726974795f696e64657810015473757065723a3a417574686f72697479496e646578000110736c6f74a5010110536c6f74000031090c4473705f636f6e73656e7375735f626162651c64696765737473545365636f6e6461727956524650726544696765737400000c013c617574686f726974795f696e64657810015473757065723a3a417574686f72697479496e646578000110736c6f74a5010110536c6f740001347672665f7369676e6174757265290901305672665369676e617475726500003509084473705f636f6e73656e7375735f62616265584261626545706f6368436f6e66696775726174696f6e000008010463b1010128287536342c2075363429000134616c6c6f7765645f736c6f7473b5010130416c6c6f776564536c6f7473000039090c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454013d09045300000400410901185665633c543e00003d09000004082c100041090000023d090045090c2c70616c6c65745f626162651870616c6c6574144572726f7204045400011060496e76616c696445717569766f636174696f6e50726f6f660000043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c69644b65794f776e65727368697050726f6f66000104310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400020415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e50496e76616c6964436f6e66696775726174696f6e0003048c5375626d697474656420636f6e66696775726174696f6e20697320696e76616c69642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e49090000040c001878004d090c3870616c6c65745f696e64696365731870616c6c6574144572726f720404540001142c4e6f7441737369676e65640000048c54686520696e64657820776173206e6f7420616c72656164792061737369676e65642e204e6f744f776e6572000104a454686520696e6465782069732061737369676e656420746f20616e6f74686572206163636f756e742e14496e5573650002047054686520696e64657820776173206e6f7420617661696c61626c652e2c4e6f745472616e73666572000304c854686520736f7572636520616e642064657374696e6174696f6e206163636f756e747320617265206964656e746963616c2e245065726d616e656e74000404d054686520696e646578206973207065726d616e656e7420616e64206d6179206e6f742062652066726565642f6368616e6765642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e51090c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e6465645665630804540155090453000004005d0901185665633c543e000055090c3c70616c6c65745f62616c616e6365731474797065732c42616c616e63654c6f636b041c42616c616e63650118000c010869640d0301384c6f636b4964656e746966696572000118616d6f756e7418011c42616c616e636500011c726561736f6e735909011c526561736f6e73000059090c3c70616c6c65745f62616c616e6365731474797065731c526561736f6e7300010c0c466565000000104d6973630001000c416c6c000200005d0900000255090061090c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454016509045300000400690901185665633c543e000065090c3c70616c6c65745f62616c616e6365731474797065732c52657365727665446174610844526573657276654964656e746966696572010d031c42616c616e636501180008010869640d030144526573657276654964656e746966696572000118616d6f756e7418011c42616c616e6365000069090000026509006d090c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454017109045300000400810901185665633c543e000071090c3c70616c6c65745f62616c616e636573147479706573204964416d6f756e74080849640175091c42616c616e63650118000801086964750901084964000118616d6f756e7418011c42616c616e636500007509085873746167696e675f6b7573616d615f72756e74696d654452756e74696d65486f6c64526561736f6e00010820507265696d61676504007909016c70616c6c65745f707265696d6167653a3a486f6c64526561736f6e0020000c4e697304007d09015870616c6c65745f6e69733a3a486f6c64526561736f6e0026000079090c3c70616c6c65745f707265696d6167651870616c6c657428486f6c64526561736f6e00010420507265696d616765000000007d090c2870616c6c65745f6e69731870616c6c657428486f6c64526561736f6e000104284e66745265636569707400000000810900000271090085090c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454018909045300000400950901185665633c543e000089090c3c70616c6c65745f62616c616e636573147479706573204964416d6f756e7408084964018d091c42616c616e636501180008010869648d0901084964000118616d6f756e7418011c42616c616e636500008d09085873746167696e675f6b7573616d615f72756e74696d654c52756e74696d65467265657a65526561736f6e0001043c4e6f6d696e6174696f6e506f6f6c7304009109019470616c6c65745f6e6f6d696e6174696f6e5f706f6f6c733a3a467265657a65526561736f6e0029000091090c5c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c731870616c6c657430467265657a65526561736f6e00010438506f6f6c4d696e42616c616e636500000000950900000289090099090c3c70616c6c65745f62616c616e6365731870616c6c6574144572726f720804540004490001303856657374696e6742616c616e63650000049c56657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c75652e544c69717569646974795265737472696374696f6e73000104c84163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c2e4c496e73756666696369656e7442616c616e63650002047842616c616e636520746f6f206c6f7720746f2073656e642076616c75652e484578697374656e7469616c4465706f736974000304ec56616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369742e34457870656e646162696c697479000404905472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e742e5c4578697374696e6756657374696e675363686564756c65000504cc412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e742e2c446561644163636f756e740006048c42656e6566696369617279206163636f756e74206d757374207072652d65786973742e3c546f6f4d616e795265736572766573000704b84e756d626572206f66206e616d65642072657365727665732065786365656420604d61785265736572766573602e30546f6f4d616e79486f6c6473000804f84e756d626572206f6620686f6c647320657863656564206056617269616e74436f756e744f663c543a3a52756e74696d65486f6c64526561736f6e3e602e38546f6f4d616e79467265657a6573000904984e756d626572206f6620667265657a65732065786365656420604d6178467265657a6573602e4c49737375616e63654465616374697661746564000a0401015468652069737375616e63652063616e6e6f74206265206d6f6469666965642073696e636520697420697320616c72656164792064656163746976617465642e2444656c74615a65726f000b04645468652064656c74612063616e6e6f74206265207a65726f2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e9d09086870616c6c65745f7472616e73616374696f6e5f7061796d656e742052656c6561736573000108245631416e6369656e7400000008563200010000a109083870616c6c65745f7374616b696e67345374616b696e674c656467657204045400001401147374617368000130543a3a4163636f756e744964000114746f74616cdc013042616c616e63654f663c543e000118616374697665dc013042616c616e63654f663c543e000124756e6c6f636b696e67090201f0426f756e6465645665633c556e6c6f636b4368756e6b3c42616c616e63654f663c543e3e2c20543a3a4d6178556e6c6f636b696e674368756e6b733e0001586c65676163795f636c61696d65645f72657761726473a5090194426f756e6465645665633c457261496e6465782c20543a3a486973746f727944657074683e0000a5090c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540110045300000400e50101185665633c543e0000a909083870616c6c65745f7374616b696e672c4e6f6d696e6174696f6e7304045400000c011c74617267657473ad0901b4426f756e6465645665633c543a3a4163636f756e7449642c204d61784e6f6d696e6174696f6e734f663c543e3e0001307375626d69747465645f696e100120457261496e64657800012873757070726573736564780110626f6f6c0000ad090c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400d10101185665633c543e0000b109083870616c6c65745f7374616b696e6734416374697665457261496e666f0000080114696e646578100120457261496e6465780001147374617274b509012c4f7074696f6e3c7536343e0000b50904184f7074696f6e040454012c0108104e6f6e6500000010536f6d6504002c0000010000b90900000408100000bd09082873705f7374616b696e675450616765644578706f737572654d65746164617461041c42616c616e6365011800100114746f74616cdc011c42616c616e636500010c6f776edc011c42616c616e636500013c6e6f6d696e61746f725f636f756e7410010c753332000128706167655f636f756e74100110506167650000c1090000040c10001000c509082873705f7374616b696e67304578706f737572655061676508244163636f756e74496401001c42616c616e6365011800080128706167655f746f74616cdc011c42616c616e63650001186f7468657273e001ac5665633c496e646976696475616c4578706f737572653c4163636f756e7449642c2042616c616e63653e3e0000c909083870616c6c65745f7374616b696e673c457261526577617264506f696e747304244163636f756e744964010000080114746f74616c10012c526577617264506f696e74000128696e646976696475616ccd09018042547265654d61703c4163636f756e7449642c20526577617264506f696e743e0000cd09042042547265654d617008044b010004560110000400d109000000d109000002d50900d50900000408001000d909000002dd0900dd09083870616c6c65745f7374616b696e6738556e6170706c696564536c61736808244163636f756e74496401001c42616c616e636501180014012476616c696461746f720001244163636f756e74496400010c6f776e18011c42616c616e63650001186f74686572731d0501645665633c284163636f756e7449642c2042616c616e6365293e0001247265706f7274657273d10101385665633c4163636f756e7449643e0001187061796f757418011c42616c616e63650000e10900000408941800e5090c3870616c6c65745f7374616b696e6720736c617368696e6734536c617368696e675370616e7300001001287370616e5f696e6465781001245370616e496e6465780001286c6173745f7374617274100120457261496e6465780001486c6173745f6e6f6e7a65726f5f736c617368100120457261496e6465780001147072696f72e50101345665633c457261496e6465783e0000e9090c3870616c6c65745f7374616b696e6720736c617368696e67285370616e5265636f7264041c42616c616e636501180008011c736c617368656418011c42616c616e6365000120706169645f6f757418011c42616c616e63650000ed09000002f10900f10900000408107800f509103870616c6c65745f7374616b696e671870616c6c65741870616c6c6574144572726f72040454000170344e6f74436f6e74726f6c6c6572000004644e6f74206120636f6e74726f6c6c6572206163636f756e742e204e6f745374617368000104504e6f742061207374617368206163636f756e742e34416c7265616479426f6e64656400020460537461736820697320616c726561647920626f6e6465642e34416c726561647950616972656400030474436f6e74726f6c6c657220697320616c7265616479207061697265642e30456d7074795461726765747300040460546172676574732063616e6e6f7420626520656d7074792e384475706c6963617465496e646578000504404475706c696361746520696e6465782e44496e76616c6964536c617368496e64657800060484536c617368207265636f726420696e646578206f7574206f6620626f756e64732e40496e73756666696369656e74426f6e6400070c590143616e6e6f74206861766520612076616c696461746f72206f72206e6f6d696e61746f7220726f6c652c20776974682076616c7565206c657373207468616e20746865206d696e696d756d20646566696e65642062793d01676f7665726e616e6365202873656520604d696e56616c696461746f72426f6e646020616e6420604d696e4e6f6d696e61746f72426f6e6460292e20496620756e626f6e64696e67206973207468651501696e74656e74696f6e2c20606368696c6c6020666972737420746f2072656d6f7665206f6e65277320726f6c652061732076616c696461746f722f6e6f6d696e61746f722e304e6f4d6f72654368756e6b730008049043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e344e6f556e6c6f636b4368756e6b000904a043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e3046756e646564546172676574000a04c8417474656d7074696e6720746f2074617267657420612073746173682074686174207374696c6c206861732066756e64732e48496e76616c6964457261546f526577617264000b0458496e76616c69642065726120746f207265776172642e68496e76616c69644e756d6265724f664e6f6d696e6174696f6e73000c0478496e76616c6964206e756d626572206f66206e6f6d696e6174696f6e732e484e6f74536f72746564416e64556e69717565000d04804974656d7320617265206e6f7420736f7274656420616e6420756e697175652e38416c7265616479436c61696d6564000e0409015265776172647320666f72207468697320657261206861766520616c7265616479206265656e20636c61696d656420666f7220746869732076616c696461746f722e2c496e76616c696450616765000f04844e6f206e6f6d696e61746f7273206578697374206f6e207468697320706167652e54496e636f7272656374486973746f72794465707468001004c0496e636f72726563742070726576696f757320686973746f727920646570746820696e7075742070726f76696465642e58496e636f7272656374536c617368696e675370616e73001104b0496e636f7272656374206e756d626572206f6620736c617368696e67207370616e732070726f76696465642e2042616453746174650012043901496e7465726e616c20737461746520686173206265636f6d6520736f6d65686f7720636f7272757074656420616e6420746865206f7065726174696f6e2063616e6e6f7420636f6e74696e75652e38546f6f4d616e795461726765747300130494546f6f206d616e79206e6f6d696e6174696f6e207461726765747320737570706c6965642e244261645461726765740014043d0141206e6f6d696e6174696f6e207461726765742077617320737570706c69656420746861742077617320626c6f636b6564206f72206f7468657277697365206e6f7420612076616c696461746f722e4043616e6e6f744368696c6c4f74686572001504550154686520757365722068617320656e6f75676820626f6e6420616e6420746875732063616e6e6f74206265206368696c6c656420666f72636566756c6c7920627920616e2065787465726e616c20706572736f6e2e44546f6f4d616e794e6f6d696e61746f72730016084d0154686572652061726520746f6f206d616e79206e6f6d696e61746f727320696e207468652073797374656d2e20476f7665726e616e6365206e6565647320746f2061646a75737420746865207374616b696e67b473657474696e677320746f206b656570207468696e6773207361666520666f72207468652072756e74696d652e44546f6f4d616e7956616c696461746f7273001708550154686572652061726520746f6f206d616e792076616c696461746f722063616e6469646174657320696e207468652073797374656d2e20476f7665726e616e6365206e6565647320746f2061646a75737420746865d47374616b696e672073657474696e677320746f206b656570207468696e6773207361666520666f72207468652072756e74696d652e40436f6d6d697373696f6e546f6f4c6f77001804e0436f6d6d697373696f6e20697320746f6f206c6f772e204d757374206265206174206c6561737420604d696e436f6d6d697373696f6e602e2c426f756e644e6f744d657400190458536f6d6520626f756e64206973206e6f74206d65742e50436f6e74726f6c6c657244657072656361746564001a04010155736564207768656e20617474656d7074696e6720746f20757365206465707265636174656420636f6e74726f6c6c6572206163636f756e74206c6f6769632e4c43616e6e6f74526573746f72654c6564676572001b045843616e6e6f742072657365742061206c65646765722e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ef9090c2873705f7374616b696e671c6f6666656e6365384f6666656e636544657461696c7308205265706f727465720100204f6666656e64657201d4000801206f6666656e646572d401204f6666656e6465720001247265706f7274657273d10101345665633c5265706f727465723e0000fd0900000408a83400010a00000408301000050a000002090a00090a00000408001902000d0a00000408110a3400110a0c1c73705f636f72651863727970746f244b65795479706549640000040044011c5b75383b20345d0000150a0c3870616c6c65745f73657373696f6e1870616c6c6574144572726f7204045400011430496e76616c696450726f6f6600000460496e76616c6964206f776e6572736869702070726f6f662e5c4e6f4173736f63696174656456616c696461746f7249640001049c4e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e344475706c6963617465644b65790002046452656769737465726564206475706c6963617465206b65792e184e6f4b657973000304a44e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e244e6f4163636f756e7400040419014b65792073657474696e67206163636f756e74206973206e6f74206c6976652c20736f206974277320696d706f737369626c6520746f206173736f6369617465206b6579732e04744572726f7220666f72207468652073657373696f6e2070616c6c65742e190a083870616c6c65745f6772616e6470612c53746f726564537461746504044e01100110104c6976650000003050656e64696e6750617573650801307363686564756c65645f61741001044e00011464656c61791001044e000100185061757365640002003450656e64696e67526573756d650801307363686564756c65645f61741001044e00011464656c61791001044e000300001d0a083870616c6c65745f6772616e6470614c53746f72656450656e64696e674368616e676508044e0110144c696d697400001001307363686564756c65645f61741001044e00011464656c61791001044e0001406e6578745f617574686f726974696573210a016c426f756e646564417574686f726974794c6973743c4c696d69743e000118666f72636564690201244f7074696f6e3c4e3e0000210a0c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401b8045300000400b401185665633c543e0000250a0c3870616c6c65745f6772616e6470611870616c6c6574144572726f7204045400011c2c50617573654661696c65640000080501417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a42865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c65640001081101417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e67000204e8417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e000304bc43616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f66000404310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660005043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400060415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e290a0c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e6465645665630804540125020453000004002d0a01185665633c543e00002d0a000002250200310a083c70616c6c65745f74726561737572792050726f706f73616c08244163636f756e74496401001c42616c616e636501180010012070726f706f7365720001244163636f756e74496400011476616c756518011c42616c616e636500012c62656e65666963696172790001244163636f756e744964000110626f6e6418011c42616c616e63650000350a0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540110045300000400e50101185665633c543e0000390a083c70616c6c65745f74726561737572792c5370656e64537461747573142441737365744b696e6401ec30417373657442616c616e636501182c42656e65666963696172790151012c426c6f636b4e756d6265720110245061796d656e744964012c0018012861737365745f6b696e64ec012441737365744b696e64000118616d6f756e74180130417373657442616c616e636500012c62656e65666963696172795101012c42656e656669636961727900012876616c69645f66726f6d10012c426c6f636b4e756d6265720001246578706972655f617410012c426c6f636b4e756d6265720001187374617475733d0a015c5061796d656e7453746174653c5061796d656e7449643e00003d0a083c70616c6c65745f7472656173757279305061796d656e74537461746504084964012c010c1c50656e64696e6700000024417474656d7074656404010869642c01084964000100184661696c656400020000410a0c3473705f61726974686d65746963287065725f7468696e67731c5065726d696c6c0000040010010c7533320000450a08346672616d655f737570706f72742050616c6c65744964000004000d03011c5b75383b20385d0000490a0c3c70616c6c65745f74726561737572791870616c6c6574144572726f7208045400044900013070496e73756666696369656e7450726f706f7365727342616c616e63650000047850726f706f73657227732062616c616e636520697320746f6f206c6f772e30496e76616c6964496e646578000104ac4e6f2070726f706f73616c2c20626f756e7479206f72207370656e64206174207468617420696e6465782e40546f6f4d616e79417070726f76616c7300020480546f6f206d616e7920617070726f76616c7320696e207468652071756575652e58496e73756666696369656e745065726d697373696f6e0003084501546865207370656e64206f726967696e2069732076616c6964206275742074686520616d6f756e7420697420697320616c6c6f77656420746f207370656e64206973206c6f776572207468616e207468654c616d6f756e7420746f206265207370656e742e4c50726f706f73616c4e6f74417070726f7665640004047c50726f706f73616c20686173206e6f74206265656e20617070726f7665642e584661696c6564546f436f6e7665727442616c616e636500050451015468652062616c616e6365206f6620746865206173736574206b696e64206973206e6f7420636f6e7665727469626c6520746f207468652062616c616e6365206f6620746865206e61746976652061737365742e305370656e6445787069726564000604b0546865207370656e6420686173206578706972656420616e642063616e6e6f7420626520636c61696d65642e2c4561726c795061796f7574000704a4546865207370656e64206973206e6f742079657420656c696769626c6520666f72207061796f75742e40416c7265616479417474656d707465640008049c546865207061796d656e742068617320616c7265616479206265656e20617474656d707465642e2c5061796f75744572726f72000904cc54686572652077617320736f6d65206973737565207769746820746865206d656368616e69736d206f66207061796d656e742e304e6f74417474656d70746564000a04a4546865207061796f757420776173206e6f742079657420617474656d707465642f636c61696d65642e30496e636f6e636c7573697665000b04c4546865207061796d656e7420686173206e656974686572206661696c6564206e6f7220737563636565646564207965742e04784572726f7220666f72207468652074726561737572792070616c6c65742e4d0a0000040800790100510a0c6070616c6c65745f636f6e76696374696f6e5f766f74696e6710766f746518566f74696e67141c42616c616e63650118244163636f756e74496401002c426c6f636b4e756d626572011024506f6c6c496e6465780110204d6178566f7465730001081c43617374696e670400550a01c843617374696e673c42616c616e63652c20426c6f636b4e756d6265722c20506f6c6c496e6465782c204d6178566f7465733e0000002844656c65676174696e6704006d0a01ac44656c65676174696e673c42616c616e63652c204163636f756e7449642c20426c6f636b4e756d6265723e00010000550a0c6070616c6c65745f636f6e76696374696f6e5f766f74696e6710766f74651c43617374696e67101c42616c616e636501182c426c6f636b4e756d626572011024506f6c6c496e6465780110204d6178566f74657300000c0114766f746573590a01dc426f756e6465645665633c28506f6c6c496e6465782c204163636f756e74566f74653c42616c616e63653e292c204d6178566f7465733e00012c64656c65676174696f6e73650a015044656c65676174696f6e733c42616c616e63653e0001147072696f72690a017c5072696f724c6f636b3c426c6f636b4e756d6265722c2042616c616e63653e0000590a0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454015d0a045300000400610a01185665633c543e00005d0a0000040810710200610a0000025d0a00650a0c6070616c6c65745f636f6e76696374696f6e5f766f74696e671474797065732c44656c65676174696f6e73041c42616c616e6365011800080114766f74657318011c42616c616e636500011c6361706974616c18011c42616c616e63650000690a0c6070616c6c65745f636f6e76696374696f6e5f766f74696e6710766f7465245072696f724c6f636b082c426c6f636b4e756d62657201101c42616c616e6365011800080010012c426c6f636b4e756d626572000018011c42616c616e636500006d0a0c6070616c6c65745f636f6e76696374696f6e5f766f74696e6710766f74652844656c65676174696e670c1c42616c616e63650118244163636f756e74496401002c426c6f636b4e756d62657201100014011c62616c616e636518011c42616c616e63650001187461726765740001244163636f756e744964000128636f6e76696374696f6e79020128436f6e76696374696f6e00012c64656c65676174696f6e73650a015044656c65676174696f6e733c42616c616e63653e0001147072696f72690a017c5072696f724c6f636b3c426c6f636b4e756d6265722c2042616c616e63653e0000710a0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401750a045300000400790a01185665633c543e0000750a0000040879011800790a000002750a007d0a0c6070616c6c65745f636f6e76696374696f6e5f766f74696e671870616c6c6574144572726f72080454000449000130284e6f744f6e676f696e6700000450506f6c6c206973206e6f74206f6e676f696e672e204e6f74566f746572000104ac54686520676976656e206163636f756e7420646964206e6f7420766f7465206f6e2074686520706f6c6c2e304e6f5065726d697373696f6e000204c8546865206163746f7220686173206e6f207065726d697373696f6e20746f20636f6e647563742074686520616374696f6e2e3c4e6f5065726d697373696f6e5965740003045901546865206163746f7220686173206e6f207065726d697373696f6e20746f20636f6e647563742074686520616374696f6e207269676874206e6f77206275742077696c6c20646f20696e20746865206675747572652e44416c726561647944656c65676174696e6700040488546865206163636f756e7420697320616c72656164792064656c65676174696e672e34416c7265616479566f74696e670005085501546865206163636f756e742063757272656e746c792068617320766f74657320617474616368656420746f20697420616e6420746865206f7065726174696f6e2063616e6e6f74207375636365656420756e74696ce87468657365206172652072656d6f7665642c20656974686572207468726f7567682060756e766f746560206f722060726561705f766f7465602e44496e73756666696369656e7446756e6473000604fc546f6f206869676820612062616c616e6365207761732070726f7669646564207468617420746865206163636f756e742063616e6e6f74206166666f72642e344e6f7444656c65676174696e67000704a0546865206163636f756e74206973206e6f742063757272656e746c792064656c65676174696e672e204e6f6e73656e73650008049444656c65676174696f6e20746f206f6e6573656c66206d616b6573206e6f2073656e73652e3c4d6178566f74657352656163686564000904804d6178696d756d206e756d626572206f6620766f74657320726561636865642e2c436c6173734e6565646564000a04390154686520636c617373206d75737420626520737570706c6965642073696e6365206974206973206e6f7420656173696c792064657465726d696e61626c652066726f6d207468652073746174652e20426164436c617373000b048454686520636c61737320494420737570706c69656420697320696e76616c69642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e810a0c4070616c6c65745f7265666572656e6461147479706573385265666572656e64756d496e666f201c547261636b49640179013452756e74696d654f726967696e018502184d6f6d656e7401101043616c6c017d011c42616c616e636501181454616c6c7901ed07244163636f756e74496401003c5363686564756c654164647265737301a50301181c4f6e676f696e670400850a018d015265666572656e64756d5374617475733c547261636b49642c2052756e74696d654f726967696e2c204d6f6d656e742c2043616c6c2c2042616c616e63652c2054616c6c792c0a4163636f756e7449642c205363686564756c65416464726573732c3e00000020417070726f7665640c001001184d6f6d656e7400008d0a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e00008d0a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e0001002052656a65637465640c001001184d6f6d656e7400008d0a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e00008d0a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e0002002443616e63656c6c65640c001001184d6f6d656e7400008d0a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e00008d0a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e0003002054696d65644f75740c001001184d6f6d656e7400008d0a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e00008d0a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e000400184b696c6c656404001001184d6f6d656e7400050000850a0c4070616c6c65745f7265666572656e6461147479706573405265666572656e64756d537461747573201c547261636b49640179013452756e74696d654f726967696e018502184d6f6d656e7401101043616c6c017d011c42616c616e636501181454616c6c7901ed07244163636f756e74496401003c5363686564756c654164647265737301a503002c0114747261636b7901011c547261636b49640001186f726967696e8502013452756e74696d654f726967696e00012070726f706f73616c7d01011043616c6c000124656e6163746d656e74a1020150446973706174636854696d653c4d6f6d656e743e0001247375626d69747465641001184d6f6d656e740001487375626d697373696f6e5f6465706f736974890a016c4465706f7369743c4163636f756e7449642c2042616c616e63653e0001406465636973696f6e5f6465706f7369748d0a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e0001206465636964696e67910a01784f7074696f6e3c4465636964696e675374617475733c4d6f6d656e743e3e00011474616c6c79ed07011454616c6c79000120696e5f7175657565780110626f6f6c000114616c61726d990a01844f7074696f6e3c284d6f6d656e742c205363686564756c6541646472657373293e0000890a0c4070616c6c65745f7265666572656e64611474797065731c4465706f73697408244163636f756e74496401001c42616c616e636501180008010c77686f0001244163636f756e744964000118616d6f756e7418011c42616c616e636500008d0a04184f7074696f6e04045401890a0108104e6f6e6500000010536f6d650400890a0000010000910a04184f7074696f6e04045401950a0108104e6f6e6500000010536f6d650400950a0000010000950a0c4070616c6c65745f7265666572656e6461147479706573384465636964696e67537461747573042c426c6f636b4e756d62657201100008011473696e636510012c426c6f636b4e756d626572000128636f6e6669726d696e676902014c4f7074696f6e3c426c6f636b4e756d6265723e0000990a04184f7074696f6e040454019d0a0108104e6f6e6500000010536f6d6504009d0a00000100009d0a0000040810a50300a10a0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401a50a045300000400a90a01185665633c543e0000a50a00000408101800a90a000002a50a00ad0a000002b10a00b10a000004087901b50a00b50a0c4070616c6c65745f7265666572656e646114747970657324547261636b496e666f081c42616c616e63650118184d6f6d656e740110002401106e616d65d50801302627737461746963207374720001306d61785f6465636964696e6710010c7533320001406465636973696f6e5f6465706f73697418011c42616c616e6365000138707265706172655f706572696f641001184d6f6d656e7400013c6465636973696f6e5f706572696f641001184d6f6d656e74000138636f6e6669726d5f706572696f641001184d6f6d656e740001506d696e5f656e6163746d656e745f706572696f641001184d6f6d656e740001306d696e5f617070726f76616cb90a0114437572766500012c6d696e5f737570706f7274b90a011443757276650000b90a0c4070616c6c65745f7265666572656e646114747970657314437572766500010c404c696e65617244656372656173696e670c01186c656e67746894011c50657262696c6c000114666c6f6f7294011c50657262696c6c0001106365696c94011c50657262696c6c000000445374657070656444656372656173696e67100114626567696e94011c50657262696c6c00010c656e6494011c50657262696c6c0001107374657094011c50657262696c6c000118706572696f6494011c50657262696c6c000100285265636970726f63616c0c0118666163746f72bd0a01204669786564493634000120785f6f6666736574bd0a01204669786564493634000120795f6f6666736574bd0a0120466978656449363400020000bd0a0c3473705f61726974686d657469632c66697865645f706f696e7420466978656449363400000400c10a010c6936340000c10a0000050c00c50a0c4070616c6c65745f7265666572656e64611870616c6c6574144572726f72080454000449000134284e6f744f6e676f696e67000004685265666572656e64756d206973206e6f74206f6e676f696e672e284861734465706f736974000104b85265666572656e64756d2773206465636973696f6e206465706f73697420697320616c726561647920706169642e20426164547261636b0002049c54686520747261636b206964656e74696669657220676976656e2077617320696e76616c69642e1046756c6c000304310154686572652061726520616c726561647920612066756c6c20636f6d706c656d656e74206f66207265666572656e646120696e2070726f677265737320666f72207468697320747261636b2e285175657565456d70747900040480546865207175657565206f662074686520747261636b20697320656d7074792e344261645265666572656e64756d000504e4546865207265666572656e64756d20696e6465782070726f766964656420697320696e76616c696420696e207468697320636f6e746578742e2c4e6f7468696e67546f446f000604ac546865726520776173206e6f7468696e6720746f20646f20696e2074686520616476616e63656d656e742e1c4e6f547261636b000704a04e6f20747261636b2065786973747320666f72207468652070726f706f73616c206f726967696e2e28556e66696e69736865640008040101416e79206465706f7369742063616e6e6f7420626520726566756e64656420756e74696c20616674657220746865206465636973696f6e206973206f7665722e304e6f5065726d697373696f6e000904a8546865206465706f73697420726566756e646572206973206e6f7420746865206465706f7369746f722e244e6f4465706f736974000a04cc546865206465706f7369742063616e6e6f7420626520726566756e6465642073696e6365206e6f6e6520776173206d6164652e24426164537461747573000b04d0546865207265666572656e64756d2073746174757320697320696e76616c696420666f722074686973206f7065726174696f6e2e40507265696d6167654e6f744578697374000c047054686520707265696d61676520646f6573206e6f742065786973742e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ec90a086070616c6c65745f72616e6b65645f636f6c6c656374697665304d656d6265725265636f7264000004011072616e6b7901011052616e6b0000cd0a0000040879010000d10a0000040879011000d50a0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e0000d90a0c6070616c6c65745f72616e6b65645f636f6c6c6563746976651870616c6c6574144572726f7208045400044900012834416c72656164794d656d626572000004704163636f756e7420697320616c72656164792061206d656d6265722e244e6f744d656d626572000104604163636f756e74206973206e6f742061206d656d6265722e284e6f74506f6c6c696e67000204b854686520676976656e20706f6c6c20696e64657820697320756e6b6e6f776e206f722068617320636c6f7365642e1c4f6e676f696e670003048054686520676976656e20706f6c6c206973207374696c6c206f6e676f696e672e344e6f6e6552656d61696e696e67000404ac546865726520617265206e6f2066757274686572207265636f72647320746f2062652072656d6f7665642e28436f7272757074696f6e00050468556e6578706563746564206572726f7220696e2073746174652e2852616e6b546f6f4c6f7700060494546865206d656d62657227732072616e6b20697320746f6f206c6f7720746f20766f74652e38496e76616c69645769746e6573730007049854686520696e666f726d6174696f6e2070726f766964656420697320696e636f72726563742e304e6f5065726d697373696f6e000804f8546865206f726967696e206973206e6f742073756666696369656e746c792070726976696c6567656420746f20646f20746865206f7065726174696f6e2e2853616d654d656d626572000904e0546865206e6577206d656d62657220746f2065786368616e6765206973207468652073616d6520617320746865206f6c64206d656d626572048054686520604572726f726020656e756d206f6620746869732070616c6c65742edd0a0c4070616c6c65745f7265666572656e6461147479706573385265666572656e64756d496e666f201c547261636b49640179013452756e74696d654f726967696e018502184d6f6d656e7401101043616c6c017d011c42616c616e636501181454616c6c7901f907244163636f756e74496401003c5363686564756c654164647265737301a50301181c4f6e676f696e670400e10a018d015265666572656e64756d5374617475733c547261636b49642c2052756e74696d654f726967696e2c204d6f6d656e742c2043616c6c2c2042616c616e63652c2054616c6c792c0a4163636f756e7449642c205363686564756c65416464726573732c3e00000020417070726f7665640c001001184d6f6d656e7400008d0a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e00008d0a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e0001002052656a65637465640c001001184d6f6d656e7400008d0a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e00008d0a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e0002002443616e63656c6c65640c001001184d6f6d656e7400008d0a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e00008d0a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e0003002054696d65644f75740c001001184d6f6d656e7400008d0a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e00008d0a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e000400184b696c6c656404001001184d6f6d656e7400050000e10a0c4070616c6c65745f7265666572656e6461147479706573405265666572656e64756d537461747573201c547261636b49640179013452756e74696d654f726967696e018502184d6f6d656e7401101043616c6c017d011c42616c616e636501181454616c6c7901f907244163636f756e74496401003c5363686564756c654164647265737301a503002c0114747261636b7901011c547261636b49640001186f726967696e8502013452756e74696d654f726967696e00012070726f706f73616c7d01011043616c6c000124656e6163746d656e74a1020150446973706174636854696d653c4d6f6d656e743e0001247375626d69747465641001184d6f6d656e740001487375626d697373696f6e5f6465706f736974890a016c4465706f7369743c4163636f756e7449642c2042616c616e63653e0001406465636973696f6e5f6465706f7369748d0a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e0001206465636964696e67910a01784f7074696f6e3c4465636964696e675374617475733c4d6f6d656e743e3e00011474616c6c79f907011454616c6c79000120696e5f7175657565780110626f6f6c000114616c61726d990a01844f7074696f6e3c284d6f6d656e742c205363686564756c6541646472657373293e0000e50a0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401a503045300000400cd0801185665633c543e0000e90a0c4070616c6c65745f7265666572656e64611870616c6c6574144572726f72080454000449000134284e6f744f6e676f696e67000004685265666572656e64756d206973206e6f74206f6e676f696e672e284861734465706f736974000104b85265666572656e64756d2773206465636973696f6e206465706f73697420697320616c726561647920706169642e20426164547261636b0002049c54686520747261636b206964656e74696669657220676976656e2077617320696e76616c69642e1046756c6c000304310154686572652061726520616c726561647920612066756c6c20636f6d706c656d656e74206f66207265666572656e646120696e2070726f677265737320666f72207468697320747261636b2e285175657565456d70747900040480546865207175657565206f662074686520747261636b20697320656d7074792e344261645265666572656e64756d000504e4546865207265666572656e64756d20696e6465782070726f766964656420697320696e76616c696420696e207468697320636f6e746578742e2c4e6f7468696e67546f446f000604ac546865726520776173206e6f7468696e6720746f20646f20696e2074686520616476616e63656d656e742e1c4e6f547261636b000704a04e6f20747261636b2065786973747320666f72207468652070726f706f73616c206f726967696e2e28556e66696e69736865640008040101416e79206465706f7369742063616e6e6f7420626520726566756e64656420756e74696c20616674657220746865206465636973696f6e206973206f7665722e304e6f5065726d697373696f6e000904a8546865206465706f73697420726566756e646572206973206e6f7420746865206465706f7369746f722e244e6f4465706f736974000a04cc546865206465706f7369742063616e6e6f7420626520726566756e6465642073696e6365206e6f6e6520776173206d6164652e24426164537461747573000b04d0546865207265666572656e64756d2073746174757320697320696e76616c696420666f722074686973206f7065726174696f6e2e40507265696d6167654e6f744578697374000c047054686520707265696d61676520646f6573206e6f742065786973742e048054686520604572726f726020656e756d206f6620746869732070616c6c65742eed0a0c4070616c6c65745f77686974656c6973741870616c6c6574144572726f720404540001144c556e617661696c61626c65507265496d616765000004c854686520707265696d616765206f66207468652063616c6c206861736820636f756c64206e6f74206265206c6f616465642e3c556e6465636f6461626c6543616c6c000104785468652063616c6c20636f756c64206e6f74206265206465636f6465642e60496e76616c696443616c6c5765696768745769746e657373000204ec54686520776569676874206f6620746865206465636f6465642063616c6c2077617320686967686572207468616e20746865207769746e6573732e5043616c6c49734e6f7457686974656c6973746564000304745468652063616c6c20776173206e6f742077686974656c69737465642e5843616c6c416c726561647957686974656c6973746564000404a05468652063616c6c2077617320616c72656164792077686974656c69737465643b204e6f2d4f702e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ef10a105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e18636c61696d731870616c6c6574144572726f7204045400011860496e76616c6964457468657265756d5369676e61747572650000046c496e76616c696420457468657265756d207369676e61747572652e405369676e65724861734e6f436c61696d00010478457468657265756d206164647265737320686173206e6f20636c61696d2e4053656e6465724861734e6f436c61696d000204b04163636f756e742049442073656e64696e67207472616e73616374696f6e20686173206e6f20636c61696d2e30506f74556e646572666c6f77000308490154686572652773206e6f7420656e6f75676820696e2074686520706f7420746f20706179206f757420736f6d6520756e76657374656420616d6f756e742e2047656e6572616c6c7920696d706c6965732061306c6f676963206572726f722e40496e76616c696453746174656d656e740004049041206e65656465642073746174656d656e7420776173206e6f7420696e636c756465642e4c56657374656442616c616e6365457869737473000504a4546865206163636f756e7420616c7265616479206861732061207665737465642062616c616e63652e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ef50a0c3870616c6c65745f7574696c6974791870616c6c6574144572726f7204045400010430546f6f4d616e7943616c6c730000045c546f6f206d616e792063616c6c7320626174636865642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ef90a00000408fd0a0d0b00fd0a0c3c70616c6c65745f6964656e7469747914747970657330526567697374726174696f6e0c1c42616c616e63650118344d61784a756467656d656e747300304964656e74697479496e666f01e102000c01286a756467656d656e7473010b01fc426f756e6465645665633c28526567697374726172496e6465782c204a756467656d656e743c42616c616e63653e292c204d61784a756467656d656e74733e00011c6465706f73697418011c42616c616e6365000110696e666fe10201304964656e74697479496e666f0000010b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401050b045300000400090b01185665633c543e0000050b0000040810750300090b000002050b000d0b04184f7074696f6e0404540189030108104e6f6e6500000010536f6d65040089030000010000110b0000040818150b00150b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400d10101185665633c543e0000190b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011d0b045300000400250b01185665633c543e00001d0b04184f7074696f6e04045401210b0108104e6f6e6500000010536f6d650400210b0000010000210b0c3c70616c6c65745f6964656e7469747914747970657334526567697374726172496e666f0c1c42616c616e63650118244163636f756e74496401001c49644669656c64012c000c011c6163636f756e740001244163636f756e74496400010c66656518011c42616c616e63650001186669656c64732c011c49644669656c640000250b0000021d0b00290b0c3c70616c6c65745f6964656e746974791474797065734c417574686f7269747950726f706572746965730418537566666978012d0b000801187375666669782d0b0118537566666978000128616c6c6f636174696f6e100128416c6c6f636174696f6e00002d0b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e0000310b0c3c70616c6c65745f6964656e746974791870616c6c6574144572726f7204045400016848546f6f4d616e795375624163636f756e74730000045c546f6f206d616e7920737562732d6163636f756e74732e204e6f74466f756e64000104504163636f756e742069736e277420666f756e642e204e6f744e616d6564000204504163636f756e742069736e2774206e616d65642e28456d707479496e64657800030430456d70747920696e6465782e284665654368616e6765640004043c466565206973206368616e6765642e284e6f4964656e74697479000504484e6f206964656e7469747920666f756e642e3c537469636b794a756467656d656e7400060444537469636b79206a756467656d656e742e384a756467656d656e74476976656e000704404a756467656d656e7420676976656e2e40496e76616c69644a756467656d656e7400080448496e76616c6964206a756467656d656e742e30496e76616c6964496e6465780009045454686520696e64657820697320696e76616c69642e34496e76616c6964546172676574000a04585468652074617267657420697320696e76616c69642e44546f6f4d616e7952656769737472617273000b04e84d6178696d756d20616d6f756e74206f66207265676973747261727320726561636865642e2043616e6e6f742061646420616e79206d6f72652e38416c7265616479436c61696d6564000c04704163636f756e7420494420697320616c7265616479206e616d65642e184e6f74537562000d047053656e646572206973206e6f742061207375622d6163636f756e742e204e6f744f776e6564000e04885375622d6163636f756e742069736e2774206f776e65642062792073656e6465722e744a756467656d656e74466f72446966666572656e744964656e74697479000f04d05468652070726f7669646564206a756467656d656e742077617320666f72206120646966666572656e74206964656e746974792e584a756467656d656e745061796d656e744661696c6564001004f84572726f722074686174206f6363757273207768656e20746865726520697320616e20697373756520706179696e6720666f72206a756467656d656e742e34496e76616c6964537566666978001104805468652070726f76696465642073756666697820697320746f6f206c6f6e672e504e6f74557365726e616d65417574686f72697479001204e05468652073656e64657220646f6573206e6f742068617665207065726d697373696f6e20746f206973737565206120757365726e616d652e304e6f416c6c6f636174696f6e001304c454686520617574686f726974792063616e6e6f7420616c6c6f6361746520616e79206d6f726520757365726e616d65732e40496e76616c69645369676e6174757265001404a8546865207369676e6174757265206f6e206120757365726e616d6520776173206e6f742076616c69642e4452657175697265735369676e6174757265001504090153657474696e67207468697320757365726e616d652072657175697265732061207369676e61747572652c20627574206e6f6e65207761732070726f76696465642e3c496e76616c6964557365726e616d65001604b054686520757365726e616d6520646f6573206e6f74206d6565742074686520726571756972656d656e74732e34557365726e616d6554616b656e0017047854686520757365726e616d6520697320616c72656164792074616b656e2e284e6f557365726e616d65001804985468652072657175657374656420757365726e616d6520646f6573206e6f742065786973742e284e6f74457870697265640019042d0154686520757365726e616d652063616e6e6f7420626520666f72636566756c6c792072656d6f76656420626563617573652069742063616e207374696c6c2062652061636365707465642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e350b083870616c6c65745f736f6369657479304d656d6265725265636f7264000010011072616e6b10011052616e6b00011c737472696b657310012c537472696b65436f756e74000120766f756368696e67390b01584f7074696f6e3c566f756368696e675374617475733e000114696e64657810010c7533320000390b04184f7074696f6e040454013d0b0108104e6f6e6500000010536f6d6504003d0b00000100003d0b083870616c6c65745f736f636965747938566f756368696e6753746174757300010820566f756368696e670000001842616e6e656400010000410b083870616c6c65745f736f6369657479305061796f75745265636f7264081c42616c616e63650118285061796f75747356656301450b000801107061696418011c42616c616e636500011c7061796f757473450b01285061796f7574735665630000450b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401a50a045300000400a90a01185665633c543e0000490b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454014d0b045300000400550b01185665633c543e00004d0b083870616c6c65745f736f63696574790c42696408244163636f756e74496401001c42616c616e63650118000c010c77686f0001244163636f756e7449640001106b696e64510b016c4269644b696e643c4163636f756e7449642c2042616c616e63653e00011476616c756518011c42616c616e63650000510b083870616c6c65745f736f63696574791c4269644b696e6408244163636f756e74496401001c42616c616e6365011801081c4465706f736974040018011c42616c616e636500000014566f75636808000001244163636f756e744964000018011c42616c616e636500010000550b0000024d0b00590b083870616c6c65745f736f63696574792443616e64696461637908244163636f756e74496401001c42616c616e6365011800140114726f756e64100128526f756e64496e6465780001106b696e64510b016c4269644b696e643c4163636f756e7449642c2042616c616e63653e00010c62696418011c42616c616e636500011474616c6c795d0b011454616c6c79000138736b65707469635f73747275636b780110626f6f6c00005d0b083870616c6c65745f736f63696574791454616c6c790000080124617070726f76616c73100124566f7465436f756e7400012872656a656374696f6e73100124566f7465436f756e740000610b00000408000000650b083870616c6c65745f736f636965747910566f7465000008011c617070726f7665780110626f6f6c00011877656967687410010c7533320000690b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e00006d0b083870616c6c65745f736f636965747930496e74616b655265636f726408244163636f756e74496401001c42616c616e63650118000c010c77686f0001244163636f756e74496400010c62696418011c42616c616e6365000114726f756e64100128526f756e64496e6465780000710b0000040c00005d0b00750b0c3870616c6c65745f736f63696574791870616c6c6574144572726f72080454000449000180244e6f744d656d6265720000045455736572206973206e6f742061206d656d6265722e34416c72656164794d656d626572000104645573657220697320616c72656164792061206d656d6265722e2453757370656e64656400020448557365722069732073757370656e6465642e304e6f7453757370656e6465640003045855736572206973206e6f742073757370656e6465642e204e6f5061796f7574000404484e6f7468696e6720746f207061796f75742e38416c7265616479466f756e64656400050460536f636965747920616c726561647920666f756e6465642e3c496e73756666696369656e74506f74000604984e6f7420656e6f75676820696e20706f7420746f206163636570742063616e6469646174652e3c416c7265616479566f756368696e67000704e44d656d62657220697320616c726561647920766f756368696e67206f722062616e6e65642066726f6d20766f756368696e6720616761696e2e4c4e6f74566f756368696e674f6e4269646465720008045c4d656d626572206973206e6f7420766f756368696e672e10486561640009049043616e6e6f742072656d6f7665207468652068656164206f662074686520636861696e2e1c466f756e646572000a046843616e6e6f742072656d6f76652074686520666f756e6465722e28416c7265616479426964000b0470557365722068617320616c7265616479206d6164652061206269642e40416c726561647943616e646964617465000c04705573657220697320616c726561647920612063616e6469646174652e304e6f7443616e646964617465000d046055736572206973206e6f7420612063616e6469646174652e284d61784d656d62657273000e0480546f6f206d616e79206d656d6265727320696e2074686520736f63696574792e284e6f74466f756e646572000f04785468652063616c6c6572206973206e6f742074686520666f756e6465722e1c4e6f74486561640010046c5468652063616c6c6572206973206e6f742074686520686561642e2c4e6f74417070726f7665640011042d01546865206d656d626572736869702063616e6e6f7420626520636c61696d6564206173207468652063616e64696461746520776173206e6f7420636c6561726c7920617070726f7665642e2c4e6f7452656a656374656400120425015468652063616e6469646174652063616e6e6f74206265206b69636b6564206173207468652063616e64696461746520776173206e6f7420636c6561726c792072656a65637465642e20417070726f76656400130419015468652063616e6469646163792063616e6e6f742062652064726f70706564206173207468652063616e6469646174652077617320636c6561726c7920617070726f7665642e2052656a65637465640014041d015468652063616e6469646163792063616e6e6f7420626520626573746f776564206173207468652063616e6469646174652077617320636c6561726c792072656a65637465642e28496e50726f677265737300150415015468652063616e6469646163792063616e6e6f7420626520636f6e636c756465642061732074686520766f74696e67206973207374696c6c20696e2070726f67726573732e20546f6f4561726c7900160441015468652063616e6469646163792063616e6e6f74206265207072756e656420756e74696c20612066756c6c206164646974696f6e616c20696e74616b6520706572696f6420686173207061737365642e14566f7465640017046854686520736b657074696320616c726561647920766f7465642e1c45787069726564001804f054686520736b6570746963206e656564206e6f7420766f7465206f6e2063616e646964617465732066726f6d206578706972656420726f756e64732e244e6f744269646465720019045455736572206973206e6f742061206269646465722e284e6f446566656e646572001a047c5468657265206973206e6f20646566656e6465722063757272656e746c792e204e6f7447726f7570001b045047726f757020646f65736e27742065786973742e3c416c7265616479456c657661746564001c04b0546865206d656d62657220697320616c726561647920656c65766174656420746f20746869732072616e6b2e3c416c726561647950756e6973686564001d04dc54686520736b65707469632068617320616c7265616479206265656e2070756e697368656420666f722074686973206f6666656e63652e44496e73756666696369656e7446756e6473001e04c046756e64732061726520696e73756666696369656e7420746f20706179206f666620736f63696574792064656274732e1c4e6f566f746573001f04d05468652063616e6469646174652f646566656e64657220686173206e6f207374616c6520766f74657320746f2072656d6f76652e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e790b083c70616c6c65745f7265636f76657279385265636f76657279436f6e6669670c2c426c6f636b4e756d62657201101c42616c616e636501181c467269656e6473017d0b0010013064656c61795f706572696f6410012c426c6f636b4e756d62657200011c6465706f73697418011c42616c616e636500011c667269656e64737d0b011c467269656e64730001247468726573686f6c647901010c75313600007d0b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400d10101185665633c543e0000810b083c70616c6c65745f7265636f76657279384163746976655265636f766572790c2c426c6f636b4e756d62657201101c42616c616e636501181c467269656e6473017d0b000c011c6372656174656410012c426c6f636b4e756d62657200011c6465706f73697418011c42616c616e636500011c667269656e64737d0b011c467269656e64730000850b0c3c70616c6c65745f7265636f766572791870616c6c6574144572726f72040454000140284e6f74416c6c6f776564000004f055736572206973206e6f7420616c6c6f77656420746f206d616b6520612063616c6c206f6e20626568616c66206f662074686973206163636f756e74345a65726f5468726573686f6c640001048c5468726573686f6c64206d7573742062652067726561746572207468616e207a65726f404e6f74456e6f756768467269656e6473000204d0467269656e6473206c697374206d7573742062652067726561746572207468616e207a65726f20616e64207468726573686f6c64284d6178467269656e6473000304a8467269656e6473206c697374206d757374206265206c657373207468616e206d617820667269656e6473244e6f74536f72746564000404c8467269656e6473206c697374206d75737420626520736f7274656420616e642066726565206f66206475706c696361746573384e6f745265636f76657261626c650005049c54686973206163636f756e74206973206e6f742073657420757020666f72207265636f7665727948416c72656164795265636f76657261626c65000604ac54686973206163636f756e7420697320616c72656164792073657420757020666f72207265636f7665727938416c726561647953746172746564000704dc41207265636f766572792070726f636573732068617320616c7265616479207374617274656420666f722074686973206163636f756e74284e6f7453746172746564000804cc41207265636f766572792070726f6365737320686173206e6f74207374617274656420666f7220746869732072657363756572244e6f74467269656e64000904a854686973206163636f756e74206973206e6f74206120667269656e642077686f2063616e20766f7563682c44656c6179506572696f64000a04190154686520667269656e64206d757374207761697420756e74696c207468652064656c617920706572696f6420746f20766f75636820666f722074686973207265636f7665727938416c7265616479566f7563686564000b04bc5468697320757365722068617320616c726561647920766f756368656420666f722074686973207265636f76657279245468726573686f6c64000c04e8546865207468726573686f6c6420666f72207265636f766572696e672074686973206163636f756e7420686173206e6f74206265656e206d65742c5374696c6c416374697665000d04fc546865726520617265207374696c6c20616374697665207265636f7665727920617474656d7074732074686174206e65656420746f20626520636c6f73656430416c726561647950726f7879000e04ac54686973206163636f756e7420697320616c72656164792073657420757020666f72207265636f76657279204261645374617465000f0478536f6d6520696e7465726e616c2073746174652069732062726f6b656e2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e890b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540199030453000004008d0b01185665633c543e00008d0b000002990300910b083870616c6c65745f76657374696e672052656c656173657300010808563000000008563100010000950b0c3870616c6c65745f76657374696e671870616c6c6574144572726f72040454000114284e6f7456657374696e6700000484546865206163636f756e7420676976656e206973206e6f742076657374696e672e5441744d617856657374696e675363686564756c65730001082501546865206163636f756e7420616c72656164792068617320604d617856657374696e675363686564756c65736020636f756e74206f66207363686564756c657320616e642074687573510163616e6e6f742061646420616e6f74686572206f6e652e20436f6e7369646572206d657267696e67206578697374696e67207363686564756c657320696e206f7264657220746f2061646420616e6f746865722e24416d6f756e744c6f770002040501416d6f756e74206265696e67207472616e7366657272656420697320746f6f206c6f7720746f2063726561746520612076657374696e67207363686564756c652e605363686564756c65496e6465784f75744f66426f756e6473000304d0416e20696e64657820776173206f7574206f6620626f756e6473206f66207468652076657374696e67207363686564756c65732e54496e76616c69645363686564756c65506172616d730004040d014661696c656420746f206372656174652061206e6577207363686564756c65206265636175736520736f6d6520706172616d657465722077617320696e76616c69642e04744572726f7220666f72207468652076657374696e672070616c6c65742e990b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454019d0b045300000400a50b01185665633c543e00009d0b04184f7074696f6e04045401a10b0108104e6f6e6500000010536f6d650400a10b0000010000a10b084070616c6c65745f7363686564756c6572245363686564756c656414104e616d6501041043616c6c017d012c426c6f636b4e756d62657201103450616c6c6574734f726967696e018502244163636f756e7449640100001401206d617962655f6964390801304f7074696f6e3c4e616d653e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c7d01011043616c6c0001386d617962655f706572696f646963a10301944f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d6265723e3e0001186f726967696e8502013450616c6c6574734f726967696e0000a50b0000029d0b00a90b0c4070616c6c65745f7363686564756c65721870616c6c6574144572726f72040454000114404661696c6564546f5363686564756c65000004644661696c656420746f207363686564756c6520612063616c6c204e6f74466f756e640001047c43616e6e6f742066696e6420746865207363686564756c65642063616c6c2e5c546172676574426c6f636b4e756d626572496e50617374000204a4476976656e2074617267657420626c6f636b206e756d62657220697320696e2074686520706173742e4852657363686564756c654e6f4368616e6765000304f052657363686564756c65206661696c6564206265636175736520697420646f6573206e6f74206368616e6765207363686564756c65642074696d652e144e616d6564000404d0417474656d707420746f207573652061206e6f6e2d6e616d65642066756e6374696f6e206f6e2061206e616d6564207461736b2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ead0b00000408b10b1800b10b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401b50b045300000400b90b01185665633c543e0000b50b083070616c6c65745f70726f78793c50726f7879446566696e6974696f6e0c244163636f756e74496401002450726f78795479706501b1032c426c6f636b4e756d6265720110000c012064656c65676174650001244163636f756e74496400012870726f78795f74797065b103012450726f78795479706500011464656c617910012c426c6f636b4e756d6265720000b90b000002b50b00bd0b00000408c10b1800c10b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401c50b045300000400c90b01185665633c543e0000c50b083070616c6c65745f70726f787930416e6e6f756e63656d656e740c244163636f756e7449640100104861736801302c426c6f636b4e756d6265720110000c01107265616c0001244163636f756e74496400012463616c6c5f686173683001104861736800011868656967687410012c426c6f636b4e756d6265720000c90b000002c50b00cd0b0c3070616c6c65745f70726f78791870616c6c6574144572726f720404540001201c546f6f4d616e79000004210154686572652061726520746f6f206d616e792070726f786965732072656769737465726564206f7220746f6f206d616e7920616e6e6f756e63656d656e74732070656e64696e672e204e6f74466f756e640001047450726f787920726567697374726174696f6e206e6f7420666f756e642e204e6f7450726f7879000204cc53656e646572206973206e6f7420612070726f7879206f6620746865206163636f756e7420746f2062652070726f786965642e2c556e70726f787961626c650003042101412063616c6c20776869636820697320696e636f6d70617469626c652077697468207468652070726f7879207479706527732066696c7465722077617320617474656d707465642e244475706c69636174650004046c4163636f756e7420697320616c726561647920612070726f78792e304e6f5065726d697373696f6e000504150143616c6c206d6179206e6f74206265206d6164652062792070726f78792062656361757365206974206d617920657363616c617465206974732070726976696c656765732e2c556e616e6e6f756e636564000604d0416e6e6f756e63656d656e742c206966206d61646520617420616c6c2c20776173206d61646520746f6f20726563656e746c792e2c4e6f53656c6650726f78790007046443616e6e6f74206164642073656c662061732070726f78792e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ed10b00000408000400d50b083c70616c6c65745f6d756c7469736967204d756c7469736967102c426c6f636b4e756d62657201101c42616c616e63650118244163636f756e7449640100304d6178417070726f76616c7300001001107768656ebd03015854696d65706f696e743c426c6f636b4e756d6265723e00011c6465706f73697418011c42616c616e63650001246465706f7369746f720001244163636f756e744964000124617070726f76616c73d90b018c426f756e6465645665633c4163636f756e7449642c204d6178417070726f76616c733e0000d90b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400d10101185665633c543e0000dd0b0c3c70616c6c65745f6d756c74697369671870616c6c6574144572726f72040454000138404d696e696d756d5468726573686f6c640000047c5468726573686f6c64206d7573742062652032206f7220677265617465722e3c416c7265616479417070726f766564000104ac43616c6c20697320616c726561647920617070726f7665642062792074686973207369676e61746f72792e444e6f417070726f76616c734e65656465640002049c43616c6c20646f65736e2774206e65656420616e7920286d6f72652920617070726f76616c732e44546f6f4665775369676e61746f72696573000304a854686572652061726520746f6f20666577207369676e61746f7269657320696e20746865206c6973742e48546f6f4d616e795369676e61746f72696573000404ac54686572652061726520746f6f206d616e79207369676e61746f7269657320696e20746865206c6973742e545369676e61746f726965734f75744f664f726465720005040d01546865207369676e61746f7269657320776572652070726f7669646564206f7574206f66206f726465723b20746865792073686f756c64206265206f7264657265642e4c53656e646572496e5369676e61746f726965730006040d015468652073656e6465722077617320636f6e7461696e656420696e20746865206f74686572207369676e61746f726965733b2069742073686f756c646e27742062652e204e6f74466f756e64000704dc4d756c7469736967206f7065726174696f6e206e6f7420666f756e64207768656e20617474656d7074696e6720746f2063616e63656c2e204e6f744f776e65720008042d014f6e6c7920746865206163636f756e742074686174206f726967696e616c6c79206372656174656420746865206d756c74697369672069732061626c6520746f2063616e63656c2069742e2c4e6f54696d65706f696e740009041d014e6f2074696d65706f696e742077617320676976656e2c2079657420746865206d756c7469736967206f7065726174696f6e20697320616c726561647920756e6465727761792e3857726f6e6754696d65706f696e74000a042d014120646966666572656e742074696d65706f696e742077617320676976656e20746f20746865206d756c7469736967206f7065726174696f6e207468617420697320756e6465727761792e4c556e657870656374656454696d65706f696e74000b04f4412074696d65706f696e742077617320676976656e2c20796574206e6f206d756c7469736967206f7065726174696f6e20697320756e6465727761792e3c4d6178576569676874546f6f4c6f77000c04d0546865206d6178696d756d2077656967687420696e666f726d6174696f6e2070726f76696465642077617320746f6f206c6f772e34416c726561647953746f726564000d04a0546865206461746120746f2062652073746f72656420697320616c72656164792073746f7265642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ee10b083c70616c6c65745f707265696d616765404f6c645265717565737453746174757308244163636f756e74496401001c42616c616e6365011801082c556e72657175657374656408011c6465706f73697421050150284163636f756e7449642c2042616c616e63652900010c6c656e10010c753332000000245265717565737465640c011c6465706f736974e50b01704f7074696f6e3c284163636f756e7449642c2042616c616e6365293e000114636f756e7410010c75333200010c6c656e6902012c4f7074696f6e3c7533323e00010000e50b04184f7074696f6e0404540121050108104e6f6e6500000010536f6d65040021050000010000e90b083c70616c6c65745f707265696d616765345265717565737453746174757308244163636f756e7449640100185469636b657401ed0b01082c556e7265717565737465640801187469636b6574f10b014c284163636f756e7449642c205469636b65742900010c6c656e10010c753332000000245265717565737465640c01306d617962655f7469636b6574f50b016c4f7074696f6e3c284163636f756e7449642c205469636b6574293e000114636f756e7410010c7533320001246d617962655f6c656e6902012c4f7074696f6e3c7533323e00010000ed0b14346672616d655f737570706f72741874726169747318746f6b656e732066756e6769626c6544486f6c64436f6e73696465726174696f6e10044100044600045200044400000400180128463a3a42616c616e63650000f10b0000040800ed0b00f50b04184f7074696f6e04045401f10b0108104e6f6e6500000010536f6d650400f10b0000010000f90b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e0000fd0b0c3c70616c6c65745f707265696d6167651870616c6c6574144572726f7204045400012018546f6f426967000004a0507265696d61676520697320746f6f206c6172676520746f2073746f7265206f6e2d636861696e2e30416c72656164794e6f746564000104a4507265696d6167652068617320616c7265616479206265656e206e6f746564206f6e2d636861696e2e344e6f74417574686f72697a6564000204c85468652075736572206973206e6f7420617574686f72697a656420746f20706572666f726d207468697320616374696f6e2e204e6f744e6f746564000304fc54686520707265696d6167652063616e6e6f742062652072656d6f7665642073696e636520697420686173206e6f7420796574206265656e206e6f7465642e2452657175657374656400040409014120707265696d616765206d6179206e6f742062652072656d6f766564207768656e20746865726520617265206f75747374616e64696e672072657175657374732e304e6f745265717565737465640005042d0154686520707265696d61676520726571756573742063616e6e6f742062652072656d6f7665642073696e6365206e6f206f75747374616e64696e672072657175657374732065786973742e1c546f6f4d616e7900060455014d6f7265207468616e20604d41585f484153485f555047524144455f42554c4b5f434f554e54602068617368657320776572652072657175657374656420746f206265207570677261646564206174206f6e63652e18546f6f466577000704e4546f6f206665772068617368657320776572652072657175657374656420746f2062652075706772616465642028692e652e207a65726f292e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e010c083c70616c6c65745f626f756e7469657318426f756e74790c244163636f756e74496401001c42616c616e636501182c426c6f636b4e756d62657201100018012070726f706f7365720001244163636f756e74496400011476616c756518011c42616c616e636500010c66656518011c42616c616e636500013c63757261746f725f6465706f73697418011c42616c616e6365000110626f6e6418011c42616c616e6365000118737461747573050c0190426f756e74795374617475733c4163636f756e7449642c20426c6f636b4e756d6265723e0000050c083c70616c6c65745f626f756e7469657330426f756e747953746174757308244163636f756e74496401002c426c6f636b4e756d626572011001182050726f706f73656400000020417070726f7665640001001846756e6465640002003c43757261746f7250726f706f73656404011c63757261746f720001244163636f756e7449640003001841637469766508011c63757261746f720001244163636f756e7449640001287570646174655f64756510012c426c6f636b4e756d6265720004003450656e64696e675061796f75740c011c63757261746f720001244163636f756e74496400012c62656e65666963696172790001244163636f756e744964000124756e6c6f636b5f617410012c426c6f636b4e756d62657200050000090c0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e00000d0c0c3c70616c6c65745f626f756e746965731870616c6c6574144572726f7208045400044900012c70496e73756666696369656e7450726f706f7365727342616c616e63650000047850726f706f73657227732062616c616e636520697320746f6f206c6f772e30496e76616c6964496e646578000104904e6f2070726f706f73616c206f7220626f756e7479206174207468617420696e6465782e30526561736f6e546f6f4269670002048454686520726561736f6e20676976656e206973206a75737420746f6f206269672e40556e65787065637465645374617475730003048054686520626f756e74792073746174757320697320756e65787065637465642e385265717569726543757261746f720004045c5265717569726520626f756e74792063757261746f722e30496e76616c696456616c756500050454496e76616c696420626f756e74792076616c75652e28496e76616c69644665650006044c496e76616c696420626f756e7479206665652e3450656e64696e675061796f75740007086c4120626f756e7479207061796f75742069732070656e64696e672ef8546f2063616e63656c2074686520626f756e74792c20796f75206d75737420756e61737369676e20616e6420736c617368207468652063757261746f722e245072656d6174757265000804450154686520626f756e746965732063616e6e6f7420626520636c61696d65642f636c6f73656420626563617573652069742773207374696c6c20696e2074686520636f756e74646f776e20706572696f642e504861734163746976654368696c64426f756e7479000904050154686520626f756e74792063616e6e6f7420626520636c6f73656420626563617573652069742068617320616374697665206368696c6420626f756e746965732e34546f6f4d616e79517565756564000a0498546f6f206d616e7920617070726f76616c732061726520616c7265616479207175657565642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e110c085470616c6c65745f6368696c645f626f756e746965732c4368696c64426f756e74790c244163636f756e74496401001c42616c616e636501182c426c6f636b4e756d626572011000140134706172656e745f626f756e747910012c426f756e7479496e64657800011476616c756518011c42616c616e636500010c66656518011c42616c616e636500013c63757261746f725f6465706f73697418011c42616c616e6365000118737461747573150c01a44368696c64426f756e74795374617475733c4163636f756e7449642c20426c6f636b4e756d6265723e0000150c085470616c6c65745f6368696c645f626f756e74696573444368696c64426f756e747953746174757308244163636f756e74496401002c426c6f636b4e756d626572011001101441646465640000003c43757261746f7250726f706f73656404011c63757261746f720001244163636f756e7449640001001841637469766504011c63757261746f720001244163636f756e7449640002003450656e64696e675061796f75740c011c63757261746f720001244163636f756e74496400012c62656e65666963696172790001244163636f756e744964000124756e6c6f636b5f617410012c426c6f636b4e756d62657200030000190c0c5470616c6c65745f6368696c645f626f756e746965731870616c6c6574144572726f7204045400010c54506172656e74426f756e74794e6f74416374697665000004a454686520706172656e7420626f756e7479206973206e6f7420696e206163746976652073746174652e64496e73756666696369656e74426f756e747942616c616e6365000104e454686520626f756e74792062616c616e6365206973206e6f7420656e6f75676820746f20616464206e6577206368696c642d626f756e74792e50546f6f4d616e794368696c64426f756e746965730002040d014e756d626572206f66206368696c6420626f756e746965732065786365656473206c696d697420604d61784163746976654368696c64426f756e7479436f756e74602e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e1d0c089070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f7068617365345265616479536f6c7574696f6e08244163636f756e74496400284d617857696e6e65727300000c0120737570706f727473210c0198426f756e646564537570706f7274733c4163636f756e7449642c204d617857696e6e6572733e00011473636f726505050134456c656374696f6e53636f726500011c636f6d707574655508013c456c656374696f6e436f6d707574650000210c0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011505045300000400110501185665633c543e0000250c089070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f706861736534526f756e64536e617073686f7408244163636f756e7449640100304461746150726f766964657201290c00080118766f746572732d0c01445665633c4461746150726f76696465723e00011c74617267657473d10101385665633c4163636f756e7449643e0000290c0000040c002cad09002d0c000002290c00310c0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401350c045300000400390c01185665633c543e0000350c0000040c0505101000390c000002350c003d0c0c9070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f7068617365187369676e6564405369676e65645375626d697373696f6e0c244163636f756e74496401001c42616c616e6365011820536f6c7574696f6e01d9030010010c77686f0001244163636f756e74496400011c6465706f73697418011c42616c616e63650001307261775f736f6c7574696f6ed5030154526177536f6c7574696f6e3c536f6c7574696f6e3e00012063616c6c5f66656518011c42616c616e63650000410c0c9070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173651870616c6c6574144572726f7204045400013c6850726544697370617463684561726c795375626d697373696f6e000004645375626d697373696f6e2077617320746f6f206561726c792e6c507265446973706174636857726f6e6757696e6e6572436f756e740001048857726f6e67206e756d626572206f662077696e6e6572732070726573656e7465642e6450726544697370617463685765616b5375626d697373696f6e000204905375626d697373696f6e2077617320746f6f207765616b2c2073636f72652d776973652e3c5369676e6564517565756546756c6c0003044901546865207175657565207761732066756c6c2c20616e642074686520736f6c7574696f6e20776173206e6f7420626574746572207468616e20616e79206f6620746865206578697374696e67206f6e65732e585369676e656443616e6e6f745061794465706f73697400040494546865206f726967696e206661696c656420746f2070617920746865206465706f7369742e505369676e6564496e76616c69645769746e657373000504a05769746e657373206461746120746f20646973706174636861626c6520697320696e76616c69642e4c5369676e6564546f6f4d756368576569676874000604b8546865207369676e6564207375626d697373696f6e20636f6e73756d657320746f6f206d756368207765696768743c4f637743616c6c57726f6e67457261000704984f4357207375626d697474656420736f6c7574696f6e20666f722077726f6e6720726f756e645c4d697373696e67536e617073686f744d65746164617461000804a8536e617073686f74206d657461646174612073686f756c6420657869737420627574206469646e27742e58496e76616c69645375626d697373696f6e496e646578000904d06053656c663a3a696e736572745f7375626d697373696f6e602072657475726e656420616e20696e76616c696420696e6465782e3843616c6c4e6f74416c6c6f776564000a04985468652063616c6c206973206e6f7420616c6c6f776564206174207468697320706f696e742e3846616c6c6261636b4661696c6564000b044c5468652066616c6c6261636b206661696c65642c426f756e644e6f744d6574000c0448536f6d6520626f756e64206e6f74206d657438546f6f4d616e7957696e6e657273000d049c5375626d697474656420736f6c7574696f6e2068617320746f6f206d616e792077696e6e657273645072654469737061746368446966666572656e74526f756e64000e04b453756d697373696f6e2077617320707265706172656420666f72206120646966666572656e7420726f756e642e040d014572726f72206f66207468652070616c6c657420746861742063616e2062652072657475726e656420696e20726573706f6e736520746f20646973706174636865732e450c0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401a50a045300000400a90a01185665633c543e0000490c0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454014d0c045300000400510c01185665633c543e00004d0c0c2870616c6c65745f6e69731870616c6c65740c426964081c42616c616e63650118244163636f756e744964010000080118616d6f756e7418011c42616c616e636500010c77686f0001244163636f756e7449640000510c0000024d0c00550c0c2870616c6c65745f6e69731870616c6c65743453756d6d6172795265636f7264082c426c6f636b4e756d62657201101c42616c616e636501180014013c70726f706f7274696f6e5f6f7765642d05012c5065727175696e74696c6c000114696e64657810013052656365697074496e6465780001187468617765642d05012c5065727175696e74696c6c00012c6c6173745f706572696f6410012c426c6f636b4e756d62657200014072656365697074735f6f6e5f686f6c6418011c42616c616e63650000590c0c2870616c6c65745f6e69731870616c6c657434526563656970745265636f72640c244163636f756e74496401002c426c6f636b4e756d62657201101c42616c616e63650118000c012870726f706f7274696f6e2d05012c5065727175696e74696c6c0001146f776e6572e50b01704f7074696f6e3c284163636f756e7449642c2042616c616e6365293e00011865787069727910012c426c6f636b4e756d62657200005d0c000004082d051000610c0c2870616c6c65745f6e69731870616c6c6574144572726f7204045400013c404475726174696f6e546f6f536d616c6c000004a4546865206475726174696f6e206f662074686520626964206973206c657373207468616e206f6e652e384475726174696f6e546f6f426967000104f4546865206475726174696f6e20697320746865206269642069732067726561746572207468616e20746865206e756d626572206f66207175657565732e38416d6f756e74546f6f536d616c6c000204dc54686520616d6f756e74206f662074686520626964206973206c657373207468616e20746865206d696e696d756d20616c6c6f7765642e24426964546f6f4c6f77000308410154686520717565756520666f7220746865206269642773206475726174696f6e2069732066756c6c20616e642074686520616d6f756e742062696420697320746f6f206c6f7720746f2067657420696e887468726f756768207265706c6163696e6720616e206578697374696e67206269642e38556e6b6e6f776e52656365697074000404645265636569707420696e64657820697320756e6b6e6f776e2e204e6f744f776e6572000504744e6f7420746865206f776e6572206f662074686520726563656970742e284e6f744578706972656400060470426f6e64206e6f74207965742061742065787069727920646174652e28556e6b6e6f776e426964000704a854686520676976656e2062696420666f722072657472616374696f6e206973206e6f7420666f756e642e34506f7274696f6e546f6f426967000804e054686520706f7274696f6e20737570706c696564206973206265796f6e64207468652076616c7565206f662074686520726563656970742e20556e66756e646564000904944e6f7420656e6f7567682066756e6473206172652068656c6420746f20706179206f75742e34416c726561647946756e646564000a04b054686572652061726520656e6f7567682066756e647320666f7220776861742069732072657175697265642e245468726f74746c6564000b04cc5468652074686177207468726f74746c6520686173206265656e207265616368656420666f72207468697320706572696f642e244d616b657344757374000c041101546865206f7065726174696f6e20776f756c6420726573756c7420696e2061207265636569707420776f72746820616e20696e7369676e666963616e742076616c75652e3c416c7265616479436f6d6d756e616c000d0480546865207265636569707420697320616c726561647920636f6d6d756e616c2e38416c726561647950726976617465000e047c546865207265636569707420697320616c726561647920707269766174652e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e650c0c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e6465645665630804540155090453000004005d0901185665633c543e0000690c0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454016509045300000400690901185665633c543e00006d0c0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401710c045300000400750c01185665633c543e0000710c0c3c70616c6c65745f62616c616e636573147479706573204964416d6f756e740808496401c5011c42616c616e63650118000801086964c50101084964000118616d6f756e7418011c42616c616e63650000750c000002710c00790c0c3c70616c6c65745f62616c616e6365731870616c6c6574144572726f720804540004490001303856657374696e6742616c616e63650000049c56657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c75652e544c69717569646974795265737472696374696f6e73000104c84163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c2e4c496e73756666696369656e7442616c616e63650002047842616c616e636520746f6f206c6f7720746f2073656e642076616c75652e484578697374656e7469616c4465706f736974000304ec56616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369742e34457870656e646162696c697479000404905472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e742e5c4578697374696e6756657374696e675363686564756c65000504cc412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e742e2c446561644163636f756e740006048c42656e6566696369617279206163636f756e74206d757374207072652d65786973742e3c546f6f4d616e795265736572766573000704b84e756d626572206f66206e616d65642072657365727665732065786365656420604d61785265736572766573602e30546f6f4d616e79486f6c6473000804f84e756d626572206f6620686f6c647320657863656564206056617269616e74436f756e744f663c543a3a52756e74696d65486f6c64526561736f6e3e602e38546f6f4d616e79467265657a6573000904984e756d626572206f6620667265657a65732065786365656420604d6178467265657a6573602e4c49737375616e63654465616374697661746564000a0401015468652069737375616e63652063616e6e6f74206265206d6f6469666965642073696e636520697420697320616c72656164792064656163746976617465642e2444656c74615a65726f000b04645468652064656c74612063616e6e6f74206265207a65726f2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e7d0c0c4070616c6c65745f626167735f6c697374106c697374104e6f646508045400044900001401086964000130543a3a4163636f756e74496400011070726576fd0101504f7074696f6e3c543a3a4163636f756e7449643e0001106e657874fd0101504f7074696f6e3c543a3a4163636f756e7449643e0001246261675f75707065722c0120543a3a53636f726500011473636f72652c0120543a3a53636f72650000810c0c4070616c6c65745f626167735f6c697374106c6973740c426167080454000449000008011068656164fd0101504f7074696f6e3c543a3a4163636f756e7449643e0001107461696cfd0101504f7074696f6e3c543a3a4163636f756e7449643e0000850c0000022c00890c0c4070616c6c65745f626167735f6c6973741870616c6c6574144572726f72080454000449000104104c69737404008d0c01244c6973744572726f72000004b441206572726f7220696e20746865206c69737420696e7465726661636520696d706c656d656e746174696f6e2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e8d0c0c4070616c6c65745f626167735f6c697374106c697374244c6973744572726f72000110244475706c6963617465000000284e6f7448656176696572000100304e6f74496e53616d65426167000200304e6f64654e6f74466f756e6400030000910c085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7328506f6f6c4d656d626572040454000010011c706f6f6c5f6964100118506f6f6c4964000118706f696e747318013042616c616e63654f663c543e0001706c6173745f7265636f726465645f7265776172645f636f756e746572bd070140543a3a526577617264436f756e746572000138756e626f6e64696e675f65726173950c01e0426f756e64656442547265654d61703c457261496e6465782c2042616c616e63654f663c543e2c20543a3a4d6178556e626f6e64696e673e0000950c0c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b011004560118045300000400990c013842547265654d61703c4b2c20563e0000990c042042547265654d617008044b011004560118000400a90a0000009d0c085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c733c426f6e646564506f6f6c496e6e65720404540000140128636f6d6d697373696f6ea10c0134436f6d6d697373696f6e3c543e0001386d656d6265725f636f756e74657210010c753332000118706f696e747318013042616c616e63654f663c543e000114726f6c6573ad0c015c506f6f6c526f6c65733c543a3a4163636f756e7449643e000114737461746541050124506f6f6c53746174650000a10c085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7328436f6d6d697373696f6e040454000014011c63757272656e745905017c4f7074696f6e3c2850657262696c6c2c20543a3a4163636f756e744964293e00010c6d6178a50c013c4f7074696f6e3c50657262696c6c3e00012c6368616e67655f72617465a90c01bc4f7074696f6e3c436f6d6d697373696f6e4368616e6765526174653c426c6f636b4e756d626572466f723c543e3e3e0001347468726f74746c655f66726f6d690201644f7074696f6e3c426c6f636b4e756d626572466f723c543e3e000140636c61696d5f7065726d697373696f6e650501bc4f7074696f6e3c436f6d6d697373696f6e436c61696d5065726d697373696f6e3c543a3a4163636f756e7449643e3e0000a50c04184f7074696f6e04045401940108104e6f6e6500000010536f6d650400940000010000a90c04184f7074696f6e0404540161050108104e6f6e6500000010536f6d65040061050000010000ad0c085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7324506f6f6c526f6c657304244163636f756e7449640100001001246465706f7369746f720001244163636f756e744964000110726f6f74fd0101444f7074696f6e3c4163636f756e7449643e0001246e6f6d696e61746f72fd0101444f7074696f6e3c4163636f756e7449643e00011c626f756e636572fd0101444f7074696f6e3c4163636f756e7449643e0000b10c085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7328526577617264506f6f6c04045400001401706c6173745f7265636f726465645f7265776172645f636f756e746572bd070140543a3a526577617264436f756e74657200016c6c6173745f7265636f726465645f746f74616c5f7061796f75747318013042616c616e63654f663c543e000154746f74616c5f726577617264735f636c61696d656418013042616c616e63654f663c543e000160746f74616c5f636f6d6d697373696f6e5f70656e64696e6718013042616c616e63654f663c543e000160746f74616c5f636f6d6d697373696f6e5f636c61696d656418013042616c616e63654f663c543e0000b50c085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7320537562506f6f6c7304045400000801186e6f5f657261b90c0134556e626f6e64506f6f6c3c543e000120776974685f657261bd0c010101426f756e64656442547265654d61703c457261496e6465782c20556e626f6e64506f6f6c3c543e2c20546f74616c556e626f6e64696e67506f6f6c733c543e3e0000b90c085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7328556e626f6e64506f6f6c0404540000080118706f696e747318013042616c616e63654f663c543e00011c62616c616e636518013042616c616e63654f663c543e0000bd0c0c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0110045601b90c045300000400c10c013842547265654d61703c4b2c20563e0000c10c042042547265654d617008044b0110045601b90c000400c50c000000c50c000002c90c00c90c0000040810b90c00cd0c0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e0000d10c0c5c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c731870616c6c6574144572726f7204045400018030506f6f6c4e6f74466f756e6400000488412028626f6e6465642920706f6f6c20696420646f6573206e6f742065786973742e48506f6f6c4d656d6265724e6f74466f756e640001046c416e206163636f756e74206973206e6f742061206d656d6265722e48526577617264506f6f6c4e6f74466f756e640002042101412072657761726420706f6f6c20646f6573206e6f742065786973742e20496e20616c6c206361736573207468697320697320612073797374656d206c6f676963206572726f722e40537562506f6f6c734e6f74466f756e6400030468412073756220706f6f6c20646f6573206e6f742065786973742e644163636f756e7442656c6f6e6773546f4f74686572506f6f6c0004084d01416e206163636f756e7420697320616c72656164792064656c65676174696e6720696e20616e6f7468657220706f6f6c2e20416e206163636f756e74206d6179206f6e6c792062656c6f6e6720746f206f6e653c706f6f6c20617420612074696d652e3846756c6c79556e626f6e64696e670005083d01546865206d656d6265722069732066756c6c7920756e626f6e6465642028616e6420746875732063616e6e6f74206163636573732074686520626f6e64656420616e642072657761726420706f6f6ca8616e796d6f726520746f2c20666f72206578616d706c652c20636f6c6c6563742072657761726473292e444d6178556e626f6e64696e674c696d69740006040901546865206d656d6265722063616e6e6f7420756e626f6e642066757274686572206368756e6b732064756520746f207265616368696e6720746865206c696d69742e4443616e6e6f745769746864726177416e790007044d014e6f6e65206f66207468652066756e64732063616e2062652077697468647261776e2079657420626563617573652074686520626f6e64696e67206475726174696f6e20686173206e6f74207061737365642e444d696e696d756d426f6e644e6f744d6574000814290154686520616d6f756e7420646f6573206e6f74206d65657420746865206d696e696d756d20626f6e6420746f20656974686572206a6f696e206f7220637265617465206120706f6f6c2e005501546865206465706f7369746f722063616e206e6576657220756e626f6e6420746f20612076616c7565206c657373207468616e206050616c6c65743a3a6465706f7369746f725f6d696e5f626f6e64602e205468655d0163616c6c657220646f6573206e6f742068617665206e6f6d696e6174696e67207065726d697373696f6e7320666f722074686520706f6f6c2e204d656d626572732063616e206e6576657220756e626f6e6420746f20616876616c75652062656c6f7720604d696e4a6f696e426f6e64602e304f766572666c6f775269736b0009042101546865207472616e73616374696f6e20636f756c64206e6f742062652065786563757465642064756520746f206f766572666c6f77207269736b20666f722074686520706f6f6c2e344e6f7444657374726f79696e67000a085d014120706f6f6c206d75737420626520696e205b60506f6f6c53746174653a3a44657374726f79696e67605d20696e206f7264657220666f7220746865206465706f7369746f7220746f20756e626f6e64206f7220666f72b86f74686572206d656d6265727320746f206265207065726d697373696f6e6c6573736c7920756e626f6e6465642e304e6f744e6f6d696e61746f72000b04f45468652063616c6c657220646f6573206e6f742068617665206e6f6d696e6174696e67207065726d697373696f6e7320666f722074686520706f6f6c2e544e6f744b69636b65724f7244657374726f79696e67000c043d01456974686572206129207468652063616c6c65722063616e6e6f74206d616b6520612076616c6964206b69636b206f722062292074686520706f6f6c206973206e6f742064657374726f79696e672e1c4e6f744f70656e000d047054686520706f6f6c206973206e6f74206f70656e20746f206a6f696e204d6178506f6f6c73000e04845468652073797374656d206973206d61786564206f7574206f6e20706f6f6c732e384d6178506f6f6c4d656d62657273000f049c546f6f206d616e79206d656d6265727320696e2074686520706f6f6c206f722073797374656d2e4443616e4e6f744368616e676553746174650010048854686520706f6f6c732073746174652063616e6e6f74206265206368616e6765642e54446f65734e6f74486176655065726d697373696f6e001104b85468652063616c6c657220646f6573206e6f742068617665206164657175617465207065726d697373696f6e732e544d65746164617461457863656564734d61784c656e001204ac4d657461646174612065786365656473205b60436f6e6669673a3a4d61784d657461646174614c656e605d24446566656e736976650400d50c0138446566656e736976654572726f720013083101536f6d65206572726f72206f6363757272656420746861742073686f756c64206e657665722068617070656e2e20546869732073686f756c64206265207265706f7274656420746f20746865306d61696e7461696e6572732e9c5061727469616c556e626f6e644e6f74416c6c6f7765645065726d697373696f6e6c6573736c79001404bc5061727469616c20756e626f6e64696e67206e6f7720616c6c6f776564207065726d697373696f6e6c6573736c792e5c4d6178436f6d6d697373696f6e526573747269637465640015041d0154686520706f6f6c2773206d617820636f6d6d697373696f6e2063616e6e6f742062652073657420686967686572207468616e20746865206578697374696e672076616c75652e60436f6d6d697373696f6e457863656564734d6178696d756d001604ec54686520737570706c69656420636f6d6d697373696f6e206578636565647320746865206d617820616c6c6f77656420636f6d6d697373696f6e2e78436f6d6d697373696f6e45786365656473476c6f62616c4d6178696d756d001704e854686520737570706c69656420636f6d6d697373696f6e206578636565647320676c6f62616c206d6178696d756d20636f6d6d697373696f6e2e64436f6d6d697373696f6e4368616e67655468726f74746c656400180409014e6f7420656e6f75676820626c6f636b732068617665207375727061737365642073696e636520746865206c61737420636f6d6d697373696f6e207570646174652e78436f6d6d697373696f6e4368616e6765526174654e6f74416c6c6f7765640019040101546865207375626d6974746564206368616e67657320746f20636f6d6d697373696f6e206368616e6765207261746520617265206e6f7420616c6c6f7765642e4c4e6f50656e64696e67436f6d6d697373696f6e001a04a05468657265206973206e6f2070656e64696e6720636f6d6d697373696f6e20746f20636c61696d2e584e6f436f6d6d697373696f6e43757272656e74536574001b048c4e6f20636f6d6d697373696f6e2063757272656e7420686173206265656e207365742e2c506f6f6c4964496e557365001c0464506f6f6c2069642063757272656e746c7920696e207573652e34496e76616c6964506f6f6c4964001d049c506f6f6c2069642070726f7669646564206973206e6f7420636f72726563742f757361626c652e4c426f6e64457874726152657374726963746564001e04fc426f6e64696e67206578747261206973207265737472696374656420746f207468652065786163742070656e64696e672072657761726420616d6f756e742e3c4e6f7468696e67546f41646a757374001f04b04e6f20696d62616c616e636520696e20746865204544206465706f73697420666f722074686520706f6f6c2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ed50c0c5c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c731870616c6c657438446566656e736976654572726f72000114684e6f74456e6f7567685370616365496e556e626f6e64506f6f6c00000030506f6f6c4e6f74466f756e6400010048526577617264506f6f6c4e6f74466f756e6400020040537562506f6f6c734e6f74466f756e6400030070426f6e64656453746173684b696c6c65645072656d61747572656c7900040000d90c0c4c70616c6c65745f666173745f756e7374616b6514747970657338556e7374616b6552657175657374040454000008011c73746173686573dd0c01d8426f756e6465645665633c28543a3a4163636f756e7449642c2042616c616e63654f663c543e292c20543a3a426174636853697a653e00011c636865636b6564e10c0190426f756e6465645665633c457261496e6465782c204d6178436865636b696e673c543e3e0000dd0c0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540121050453000004001d0501185665633c543e0000e10c0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540110045300000400e50101185665633c543e0000e50c0c4c70616c6c65745f666173745f756e7374616b651870616c6c6574144572726f72040454000118344e6f74436f6e74726f6c6c657200000cb85468652070726f766964656420436f6e74726f6c6c6572206163636f756e7420776173206e6f7420666f756e642e00c054686973206d65616e7320746861742074686520676976656e206163636f756e74206973206e6f7420626f6e6465642e34416c7265616479517565756564000104ac54686520626f6e646564206163636f756e742068617320616c7265616479206265656e207175657565642e384e6f7446756c6c79426f6e646564000204bc54686520626f6e646564206163636f756e74206861732061637469766520756e6c6f636b696e67206368756e6b732e244e6f74517565756564000304b45468652070726f766964656420756e2d7374616b6572206973206e6f7420696e2074686520605175657565602e2c416c72656164794865616400040405015468652070726f766964656420756e2d7374616b657220697320616c726561647920696e20486561642c20616e642063616e6e6f7420646572656769737465722e3843616c6c4e6f74416c6c6f7765640005041d015468652063616c6c206973206e6f7420616c6c6f776564206174207468697320706f696e742062656361757365207468652070616c6c6574206973206e6f74206163746976652e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ee90c0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e7334636f6e66696775726174696f6e44486f7374436f6e66696775726174696f6e042c426c6f636b4e756d626572011000b401346d61785f636f64655f73697a6510010c7533320001486d61785f686561645f646174615f73697a6510010c7533320001586d61785f7570776172645f71756575655f636f756e7410010c7533320001546d61785f7570776172645f71756575655f73697a6510010c75333200015c6d61785f7570776172645f6d6573736167655f73697a6510010c7533320001906d61785f7570776172645f6d6573736167655f6e756d5f7065725f63616e64696461746510010c75333200018868726d705f6d61785f6d6573736167655f6e756d5f7065725f63616e64696461746510010c75333200016c76616c69646174696f6e5f757067726164655f636f6f6c646f776e10012c426c6f636b4e756d62657200016076616c69646174696f6e5f757067726164655f64656c617910012c426c6f636b4e756d6265720001506173796e635f6261636b696e675f706172616d73750501484173796e634261636b696e67506172616d730001306d61785f706f765f73697a6510010c7533320001646d61785f646f776e776172645f6d6573736167655f73697a6510010c75333200019068726d705f6d61785f70617261636861696e5f6f7574626f756e645f6368616e6e656c7310010c75333200014c68726d705f73656e6465725f6465706f73697418011c42616c616e636500015868726d705f726563697069656e745f6465706f73697418011c42616c616e636500016468726d705f6368616e6e656c5f6d61785f636170616369747910010c75333200016c68726d705f6368616e6e656c5f6d61785f746f74616c5f73697a6510010c75333200018c68726d705f6d61785f70617261636861696e5f696e626f756e645f6368616e6e656c7310010c75333200017468726d705f6368616e6e656c5f6d61785f6d6573736167655f73697a6510010c75333200013c6578656375746f725f706172616d73790501384578656375746f72506172616d73000154636f64655f726574656e74696f6e5f706572696f6410012c426c6f636b4e756d626572000138636f726574696d655f636f72657310010c7533320001446f6e5f64656d616e645f7265747269657310010c7533320001606f6e5f64656d616e645f71756575655f6d61785f73697a6510010c7533320001886f6e5f64656d616e645f7461726765745f71756575655f7574696c697a6174696f6e94011c50657262696c6c0001646f6e5f64656d616e645f6665655f766172696162696c69747994011c50657262696c6c0001486f6e5f64656d616e645f626173655f66656518011c42616c616e63650001346f6e5f64656d616e645f74746c10012c426c6f636b4e756d62657200016067726f75705f726f746174696f6e5f6672657175656e637910012c426c6f636b4e756d62657200016470617261735f617661696c6162696c6974795f706572696f6410012c426c6f636b4e756d6265720001507363686564756c696e675f6c6f6f6b616865616410010c75333200015c6d61785f76616c696461746f72735f7065725f636f72656902012c4f7074696f6e3c7533323e0001386d61785f76616c696461746f72736902012c4f7074696f6e3c7533323e000138646973707574655f706572696f6410013053657373696f6e496e6465780001a4646973707574655f706f73745f636f6e636c7573696f6e5f616363657074616e63655f706572696f6410012c426c6f636b4e756d6265720001346e6f5f73686f775f736c6f747310010c7533320001406e5f64656c61795f7472616e6368657310010c7533320001687a65726f74685f64656c61795f7472616e6368655f776964746810010c7533320001406e65656465645f617070726f76616c7310010c75333200016072656c61795f7672665f6d6f64756c6f5f73616d706c657310010c7533320001387076665f766f74696e675f74746c10013053657373696f6e496e6465780001806d696e696d756d5f76616c69646174696f6e5f757067726164655f64656c617910012c426c6f636b4e756d6265720001546d696e696d756d5f6261636b696e675f766f74657310010c7533320001346e6f64655f6665617475726573ad0501304e6f64654665617475726573000158617070726f76616c5f766f74696e675f706172616d738d050150417070726f76616c566f74696e67506172616d730000ed0c000002f10c00f10c0000040810e90c00f50c106c706f6c6b61646f745f72756e74696d655f70617261636861696e7334636f6e66696775726174696f6e1870616c6c6574144572726f720404540001043c496e76616c69644e657756616c7565000004dc546865206e65772076616c756520666f72206120636f6e66696775726174696f6e20706172616d6574657220697320696e76616c69642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ef90c000002b50500fd0c0000021d0200010d0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e731873686172656468416c6c6f77656452656c6179506172656e7473547261636b657208104861736801302c426c6f636b4e756d626572011000080118627566666572050d015856656344657175653c28486173682c2048617368293e0001346c61746573745f6e756d62657210012c426c6f636b4e756d6265720000050d000002090d00090d000004083030000d0d0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e7324696e636c7573696f6e68417661696c6162696c6974794269746669656c645265636f726404044e0110000801206269746669656c64a9050150417661696c6162696c6974794269746669656c640001307375626d69747465645f61741001044e0000110d0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e7324696e636c7573696f6e7043616e64696461746550656e64696e67417661696c6162696c6974790804480130044e011000200110636f72657d080124436f7265496e646578000110686173680906013443616e6469646174654861736800012864657363726970746f72c905015843616e64696461746544657363726970746f723c483e000148617661696c6162696c6974795f766f746573ad0501604269745665633c75382c204269744f726465724c7362303e00011c6261636b657273ad0501604269745665633c75382c204269744f726465724c7362303e00014c72656c61795f706172656e745f6e756d6265721001044e0001406261636b65645f696e5f6e756d6265721001044e0001346261636b696e675f67726f75708108012847726f7570496e6465780000150d106c706f6c6b61646f745f72756e74696d655f70617261636861696e7324696e636c7573696f6e1870616c6c6574144572726f720404540001748c556e736f727465644f724475706c696361746556616c696461746f72496e6469636573000004e856616c696461746f7220696e646963657320617265206f7574206f66206f72646572206f7220636f6e7461696e73206475706c6963617465732e98556e736f727465644f724475706c69636174654469737075746553746174656d656e74536574000104f8446973707574652073746174656d656e74207365747320617265206f7574206f66206f72646572206f7220636f6e7461696e206475706c6963617465732e8c556e736f727465644f724475706c69636174654261636b656443616e6469646174657300020419014261636b65642063616e6469646174657320617265206f7574206f66206f726465722028636f726520696e64657829206f7220636f6e7461696e206475706c6963617465732e54556e657870656374656452656c6179506172656e7400030429014120646966666572656e742072656c617920706172656e74207761732070726f766964656420636f6d706172656420746f20746865206f6e2d636861696e2073746f726564206f6e652e4457726f6e674269746669656c6453697a65000404a8417661696c6162696c697479206269746669656c642068617320756e65787065637465642073697a652e404269746669656c64416c6c5a65726f73000504804269746669656c6420636f6e7369737473206f66207a65726f73206f6e6c792e704269746669656c644475706c69636174654f72556e6f7264657265640006044d014d756c7469706c65206269746669656c6473207375626d69747465642062792073616d652076616c696461746f72206f722076616c696461746f7273206f7574206f66206f7264657220627920696e6465782e6456616c696461746f72496e6465784f75744f66426f756e64730007047856616c696461746f7220696e646578206f7574206f6620626f756e64732e60496e76616c69644269746669656c645369676e617475726500080444496e76616c6964207369676e617475726550556e7363686564756c656443616e646964617465000904ac43616e646964617465207375626d6974746564206275742070617261206e6f74207363686564756c65642e8043616e6469646174655363686564756c65644265666f72655061726146726565000a04310143616e646964617465207363686564756c656420646573706974652070656e64696e672063616e64696461746520616c7265616479206578697374696e6720666f722074686520706172612e4c5363686564756c65644f75744f664f72646572000b04745363686564756c656420636f726573206f7574206f66206f726465722e404865616444617461546f6f4c61726765000c04a448656164206461746120657863656564732074686520636f6e66696775726564206d6178696d756d2e505072656d6174757265436f646555706772616465000d0464436f64652075706772616465207072656d61747572656c792e3c4e6577436f6465546f6f4c61726765000e04604f757470757420636f646520697320746f6f206c6172676554446973616c6c6f77656452656c6179506172656e74000f08ec5468652063616e64696461746527732072656c61792d706172656e7420776173206e6f7420616c6c6f7765642e204569746865722069742077617325016e6f7420726563656e7420656e6f756768206f72206974206469646e277420616476616e6365206261736564206f6e20746865206c6173742070617261636861696e20626c6f636b2e44496e76616c696441737369676e6d656e7400100815014661696c656420746f20636f6d707574652067726f757020696e64657820666f722074686520636f72653a206569746865722069742773206f7574206f6620626f756e6473e86f72207468652072656c617920706172656e7420646f65736e27742062656c6f6e6720746f207468652063757272656e742073657373696f6e2e44496e76616c696447726f7570496e6465780011049c496e76616c69642067726f757020696e64657820696e20636f72652061737369676e6d656e742e4c496e73756666696369656e744261636b696e6700120490496e73756666696369656e7420286e6f6e2d6d616a6f7269747929206261636b696e672e38496e76616c69644261636b696e67001304e4496e76616c69642028626164207369676e61747572652c20756e6b6e6f776e2076616c696461746f722c206574632e29206261636b696e672e444e6f74436f6c6c61746f725369676e656400140468436f6c6c61746f7220646964206e6f74207369676e20506f562e6856616c69646174696f6e44617461486173684d69736d61746368001504c45468652076616c69646174696f6e2064617461206861736820646f6573206e6f74206d617463682065787065637465642e80496e636f7272656374446f776e776172644d65737361676548616e646c696e67001604d854686520646f776e77617264206d657373616765207175657565206973206e6f742070726f63657373656420636f72726563746c792e54496e76616c69645570776172644d657373616765730017041d014174206c65617374206f6e6520757077617264206d6573736167652073656e7420646f6573206e6f7420706173732074686520616363657074616e63652063726974657269612e6048726d7057617465726d61726b4d697368616e646c696e6700180411015468652063616e646964617465206469646e277420666f6c6c6f77207468652072756c6573206f662048524d502077617465726d61726b20616476616e63656d656e742e4c496e76616c69644f7574626f756e6448726d70001904d45468652048524d50206d657373616765732073656e74206279207468652063616e646964617465206973206e6f742076616c69642e64496e76616c696456616c69646174696f6e436f646548617368001a04dc5468652076616c69646174696f6e20636f64652068617368206f66207468652063616e646964617465206973206e6f742076616c69642e4050617261486561644d69736d61746368001b0855015468652060706172615f6865616460206861736820696e207468652063616e6469646174652064657363726970746f7220646f65736e2774206d61746368207468652068617368206f66207468652061637475616c7470617261206865616420696e2074686520636f6d6d69746d656e74732e6c4269746669656c645265666572656e6365734672656564436f7265001c0ca041206269746669656c642074686174207265666572656e636573206120667265656420636f72652cb865697468657220696e74656e74696f6e616c6c79206f722061732070617274206f66206120636f6e636c7564656440696e76616c696420646973707574652e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e190d0c4c706f6c6b61646f745f7072696d6974697665730876364c536372617065644f6e436861696e566f7465730404480130000c011c73657373696f6e10013053657373696f6e496e6465780001806261636b696e675f76616c696461746f72735f7065725f63616e6469646174651d0d011d015665633c2843616e646964617465526563656970743c483e2c205665633c2856616c696461746f72496e6465782c2056616c69646974794174746573746174696f6e293e290a3e0001206469737075746573010601604d756c74694469737075746553746174656d656e7453657400001d0d000002210d00210d000004087908250d00250d000002290d00290d00000408b505fd05002d0d106c706f6c6b61646f745f72756e74696d655f70617261636861696e733870617261735f696e686572656e741870616c6c6574144572726f7204045400012464546f6f4d616e79496e636c7573696f6e496e686572656e7473000004cc496e636c7573696f6e20696e686572656e742063616c6c6564206d6f7265207468616e206f6e63652070657220626c6f636b2e4c496e76616c6964506172656e7448656164657200010855015468652068617368206f6620746865207375626d697474656420706172656e742068656164657220646f65736e277420636f72726573706f6e6420746f2074686520736176656420626c6f636b2068617368206f662c74686520706172656e742e6443616e646964617465436f6e636c75646564496e76616c6964000204b844697370757465642063616e64696461746520746861742077617320636f6e636c7564656420696e76616c69642e48496e686572656e744f7665727765696768740003040901546865206461746120676976656e20746f2074686520696e686572656e742077696c6c20726573756c7420696e20616e206f76657277656967687420626c6f636b2e944469737075746553746174656d656e7473556e736f727465644f724475706c696361746573000404bc546865206f72646572696e67206f6620646973707574652073746174656d656e74732077617320696e76616c69642e3844697370757465496e76616c6964000504804120646973707574652073746174656d656e742077617320696e76616c69642e404261636b6564427944697361626c6564000604b8412063616e64696461746520776173206261636b656420627920612064697361626c65642076616c696461746f725c4261636b65644f6e556e7363686564756c6564436f72650007040101412063616e64696461746520776173206261636b6564206576656e2074686f756768207468652070617261696420776173206e6f74207363686564756c65642e50556e7363686564756c656443616e64696461746500080474546f6f206d616e792063616e6469646174657320737570706c6965642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e310d000002f90c00350d000002390d00390d106c706f6c6b61646f745f72756e74696d655f70617261636861696e73247363686564756c65721870616c6c657430436f72654f6363757069656404044e01100108104672656500000014506172617304003d0d01345061726173456e7472793c4e3e000100003d0d106c706f6c6b61646f745f72756e74696d655f70617261636861696e73247363686564756c65721870616c6c6574285061726173456e74727904044e0110000c012861737369676e6d656e74410d012841737369676e6d656e74000154617661696c6162696c6974795f74696d656f75747310010c75333200010c74746c1001044e0000410d106c706f6c6b61646f745f72756e74696d655f70617261636861696e73247363686564756c657218636f6d6d6f6e2841737369676e6d656e7400010810506f6f6c08011c706172615f696495020118506172614964000128636f72655f696e6465787d080124436f7265496e6465780000001042756c6b04009502011850617261496400010000450d042042547265654d617008044b017d08045601490d0004004d0d000000490d0000023d0d004d0d000002510d00510d000004087d08490d00550d0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e731470617261735c507666436865636b416374697665566f74655374617465042c426c6f636b4e756d626572011000140130766f7465735f616363657074ad0501604269745665633c75382c204269744f726465724c7362303e000130766f7465735f72656a656374ad0501604269745665633c75382c204269744f726465724c7362303e00010c61676510013053657373696f6e496e646578000128637265617465645f617410012c426c6f636b4e756d626572000118636175736573590d017c5665633c507666436865636b43617573653c426c6f636b4e756d6265723e3e0000590d0000025d0d005d0d0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e7314706172617334507666436865636b4361757365042c426c6f636b4e756d62657201100108284f6e626f617264696e670400950201185061726149640000001c557067726164650c010869649502011850617261496400012c696e636c756465645f617410012c426c6f636b4e756d6265720001307365745f676f5f6168656164610d0128536574476f416865616400010000610d0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e7314706172617328536574476f41686561640001080c596573000000084e6f00010000650d000002d50500690d0000029502006d0d0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e7314706172617334506172614c6966656379636c6500011c284f6e626f617264696e6700000028506172617468726561640001002450617261636861696e0002004c557067726164696e675061726174687265616400030050446f776e67726164696e6750617261636861696e000400544f6666626f617264696e6750617261746872656164000500504f6666626f617264696e6750617261636861696e00060000710d0000040895021000750d0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e73147061726173405061726150617374436f64654d65746104044e011000080134757067726164655f74696d6573790d01605665633c5265706c6163656d656e7454696d65733c4e3e3e00012c6c6173745f7072756e6564690201244f7074696f6e3c4e3e0000790d0000027d0d007d0d0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e73147061726173405265706c6163656d656e7454696d657304044e01100008012c65787065637465645f61741001044e0001306163746976617465645f61741001044e0000810d000002710d00850d0c4c706f6c6b61646f745f7072696d6974697665730876363855706772616465476f41686561640001081441626f72740000001c476f416865616400010000890d0c4c706f6c6b61646f745f7072696d69746976657308763648557067726164655265737472696374696f6e0001041c50726573656e74000000008d0d0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e731470617261733c5061726147656e657369734172677300000c013067656e657369735f68656164f5050120486561644461746100013c76616c69646174696f6e5f636f6465f105013856616c69646174696f6e436f6465000124706172615f6b696e64780120506172614b696e640000910d106c706f6c6b61646f745f72756e74696d655f70617261636861696e731470617261731870616c6c6574144572726f72040454000130344e6f74526567697374657265640000049450617261206973206e6f74207265676973746572656420696e206f75722073797374656d2e3443616e6e6f744f6e626f6172640001041501506172612063616e6e6f74206265206f6e626f6172646564206265636175736520697420697320616c726561647920747261636b6564206279206f75722073797374656d2e3843616e6e6f744f6666626f6172640002049c506172612063616e6e6f74206265206f6666626f617264656420617420746869732074696d652e3443616e6e6f7455706772616465000304d4506172612063616e6e6f7420626520757067726164656420746f2061206c6561736520686f6c64696e672070617261636861696e2e3c43616e6e6f74446f776e6772616465000404d0506172612063616e6e6f7420626520646f776e67726164656420746f20616e206f6e2d64656d616e642070617261636861696e2e58507666436865636b53746174656d656e745374616c65000504b05468652073746174656d656e7420666f7220505646207072652d636865636b696e67206973207374616c652e5c507666436865636b53746174656d656e74467574757265000604ec5468652073746174656d656e7420666f7220505646207072652d636865636b696e6720697320666f722061206675747572652073657373696f6e2e84507666436865636b56616c696461746f72496e6465784f75744f66426f756e6473000704a4436c61696d65642076616c696461746f7220696e646578206973206f7574206f6620626f756e64732e60507666436865636b496e76616c69645369676e6174757265000804c8546865207369676e617475726520666f722074686520505646207072652d636865636b696e6720697320696e76616c69642e48507666436865636b446f75626c65566f7465000904b054686520676976656e2076616c696461746f7220616c7265616479206861732063617374206120766f74652e58507666436865636b5375626a656374496e76616c6964000a04f454686520676976656e2050564620646f6573206e6f7420657869737420617420746865206d6f6d656e74206f662070726f63657373206120766f74652e4443616e6e6f7455706772616465436f6465000b04cc50617261636861696e2063616e6e6f742063757272656e746c79207363686564756c65206120636f646520757067726164652e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e950d000002990d00990d0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e732c696e697469616c697a657254427566666572656453657373696f6e4368616e676500000c012876616c696461746f7273fd0c01405665633c56616c696461746f7249643e000118717565756564fd0c01405665633c56616c696461746f7249643e00013473657373696f6e5f696e64657810013053657373696f6e496e64657800009d0d000002a10d00a10d0860706f6c6b61646f745f636f72655f7072696d69746976657358496e626f756e64446f776e776172644d657373616765042c426c6f636b4e756d62657201100008011c73656e745f617410012c426c6f636b4e756d62657200010c6d736734013c446f776e776172644d6573736167650000a50d0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e731068726d705848726d704f70656e4368616e6e656c526571756573740000180124636f6e6669726d6564780110626f6f6c0001105f61676510013053657373696f6e496e64657800013873656e6465725f6465706f73697418011c42616c616e63650001406d61785f6d6573736167655f73697a6510010c7533320001306d61785f636170616369747910010c7533320001386d61785f746f74616c5f73697a6510010c7533320000a90d000002350600ad0d0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e731068726d702c48726d704368616e6e656c00002001306d61785f636170616369747910010c7533320001386d61785f746f74616c5f73697a6510010c7533320001406d61785f6d6573736167655f73697a6510010c7533320001246d73675f636f756e7410010c753332000128746f74616c5f73697a6510010c7533320001206d71635f68656164a50201304f7074696f6e3c486173683e00013873656e6465725f6465706f73697418011c42616c616e6365000144726563697069656e745f6465706f73697418011c42616c616e63650000b10d000002b50d00b50d0860706f6c6b61646f745f636f72655f7072696d69746976657348496e626f756e6448726d704d657373616765042c426c6f636b4e756d62657201100008011c73656e745f617410012c426c6f636b4e756d6265720001106461746134015073705f7374643a3a7665633a3a5665633c75383e0000b90d000002bd0d00bd0d0000040810690d00c10d106c706f6c6b61646f745f72756e74696d655f70617261636861696e731068726d701870616c6c6574144572726f72040454000150544f70656e48726d704368616e6e656c546f53656c66000004c45468652073656e64657220747269656420746f206f70656e2061206368616e6e656c20746f207468656d73656c7665732e7c4f70656e48726d704368616e6e656c496e76616c6964526563697069656e740001048854686520726563697069656e74206973206e6f7420612076616c696420706172612e6c4f70656e48726d704368616e6e656c5a65726f43617061636974790002047c54686520726571756573746564206361706163697479206973207a65726f2e8c4f70656e48726d704368616e6e656c4361706163697479457863656564734c696d6974000304c05468652072657175657374656420636170616369747920657863656564732074686520676c6f62616c206c696d69742e784f70656e48726d704368616e6e656c5a65726f4d65737361676553697a65000404a054686520726571756573746564206d6178696d756d206d6573736167652073697a6520697320302e984f70656e48726d704368616e6e656c4d65737361676553697a65457863656564734c696d69740005042901546865206f70656e20726571756573742072657175657374656420746865206d6573736167652073697a65207468617420657863656564732074686520676c6f62616c206c696d69742e704f70656e48726d704368616e6e656c416c726561647945786973747300060468546865206368616e6e656c20616c7265616479206578697374737c4f70656e48726d704368616e6e656c416c7265616479526571756573746564000704d0546865726520697320616c72656164792061207265717565737420746f206f70656e207468652073616d65206368616e6e656c2e704f70656e48726d704368616e6e656c4c696d697445786365656465640008041d015468652073656e64657220616c72656164792068617320746865206d6178696d756d206e756d626572206f6620616c6c6f776564206f7574626f756e64206368616e6e656c732e7041636365707448726d704368616e6e656c446f65736e744578697374000904e0546865206368616e6e656c2066726f6d207468652073656e64657220746f20746865206f726967696e20646f65736e27742065786973742e8441636365707448726d704368616e6e656c416c7265616479436f6e6669726d6564000a0484546865206368616e6e656c20697320616c726561647920636f6e6669726d65642e7841636365707448726d704368616e6e656c4c696d69744578636565646564000b04250154686520726563697069656e7420616c72656164792068617320746865206d6178696d756d206e756d626572206f6620616c6c6f77656420696e626f756e64206368616e6e656c732e70436c6f736548726d704368616e6e656c556e617574686f72697a6564000c045501546865206f726967696e20747269657320746f20636c6f73652061206368616e6e656c207768657265206974206973206e656974686572207468652073656e646572206e6f722074686520726563697069656e742e6c436c6f736548726d704368616e6e656c446f65736e744578697374000d049c546865206368616e6e656c20746f20626520636c6f73656420646f65736e27742065786973742e7c436c6f736548726d704368616e6e656c416c7265616479556e646572776179000e04bc546865206368616e6e656c20636c6f7365207265717565737420697320616c7265616479207265717565737465642e8443616e63656c48726d704f70656e4368616e6e656c556e617574686f72697a6564000f045d0143616e63656c696e6720697320726571756573746564206279206e656974686572207468652073656e646572206e6f7220726563697069656e74206f6620746865206f70656e206368616e6e656c20726571756573742e684f70656e48726d704368616e6e656c446f65736e7445786973740010047c546865206f70656e207265717565737420646f65736e27742065786973742e7c4f70656e48726d704368616e6e656c416c7265616479436f6e6669726d65640011042d0143616e6e6f742063616e63656c20616e2048524d50206f70656e206368616e6e656c2072657175657374206265636175736520697420697320616c726561647920636f6e6669726d65642e3057726f6e675769746e6573730012048c5468652070726f7669646564207769746e65737320646174612069732077726f6e672e704368616e6e656c4372656174696f6e4e6f74417574686f72697a6564001304e8546865206368616e6e656c206265747765656e2074686573652074776f20636861696e732063616e6e6f7420626520617574686f72697a65642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ec50d000002210200c90d0c4c706f6c6b61646f745f7072696d6974697665730876362c53657373696f6e496e666f00003401606163746976655f76616c696461746f725f696e6469636573f90c014c5665633c56616c696461746f72496e6465783e00012c72616e646f6d5f736565640401205b75383b2033325d000138646973707574655f706572696f6410013053657373696f6e496e64657800012876616c696461746f7273cd0d019c496e64657865645665633c56616c696461746f72496e6465782c2056616c696461746f7249643e000138646973636f766572795f6b6579732d0a01645665633c417574686f72697479446973636f7665727949643e00013c61737369676e6d656e745f6b657973c50d01445665633c41737369676e6d656e7449643e00014076616c696461746f725f67726f757073d10d01ac496e64657865645665633c47726f7570496e6465782c205665633c56616c696461746f72496e6465783e3e00011c6e5f636f72657310010c7533320001687a65726f74685f64656c61795f7472616e6368655f776964746810010c75333200016072656c61795f7672665f6d6f64756c6f5f73616d706c657310010c7533320001406e5f64656c61795f7472616e6368657310010c7533320001346e6f5f73686f775f736c6f747310010c7533320001406e65656465645f617070726f76616c7310010c7533320000cd0d0c4c706f6c6b61646f745f7072696d69746976657308763628496e646578656456656308044b01b5050456011d02000400fd0c01185665633c563e0000d10d0c4c706f6c6b61646f745f7072696d69746976657308763628496e646578656456656308044b018108045601f90c000400310d01185665633c563e0000d50d0000040810090600d90d0c4c706f6c6b61646f745f7072696d6974697665730876363044697370757465537461746504044e01100010013876616c696461746f72735f666f72ad05017c4269745665633c75382c206269747665633a3a6f726465723a3a4c7362303e00014876616c696461746f72735f616761696e7374ad05017c4269745665633c75382c206269747665633a3a6f726465723a3a4c7362303e00011473746172741001044e000130636f6e636c756465645f6174690201244f7074696f6e3c4e3e0000dd0d0420425472656553657404045401b505000400f90c000000e10d106c706f6c6b61646f745f72756e74696d655f70617261636861696e732064697370757465731870616c6c6574144572726f72040454000124744475706c69636174654469737075746553746174656d656e7453657473000004a84475706c696361746520646973707574652073746174656d656e7420736574732070726f76696465642e5c416e6369656e744469737075746553746174656d656e740001048c416e6369656e7420646973707574652073746174656d656e742070726f76696465642e6456616c696461746f72496e6465784f75744f66426f756e6473000204e856616c696461746f7220696e646578206f6e2073746174656d656e74206973206f7574206f6620626f756e647320666f722073657373696f6e2e40496e76616c69645369676e61747572650003047c496e76616c6964207369676e6174757265206f6e2073746174656d656e742e484475706c696361746553746174656d656e74000404cc56616c696461746f7220766f7465207375626d6974746564206d6f7265207468616e206f6e636520746f20646973707574652e4853696e676c65536964656444697370757465000504c441206469737075746520776865726520746865726520617265206f6e6c7920766f746573206f6e206f6e6520736964652e3c4d616c6963696f75734261636b65720006049c41206469737075746520766f74652066726f6d2061206d616c6963696f7573206261636b65722e4c4d697373696e674261636b696e67566f746573000704e04e6f206261636b696e6720766f74657320776572652070726f766964657320616c6f6e6720646973707574652073746174656d656e74732e48556e636f6e6669726d656444697370757465000804b0556e636f6e6669726d656420646973707574652073746174656d656e7420736574732070726f76696465642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ee50d104c706f6c6b61646f745f7072696d69746976657308763620736c617368696e673850656e64696e67536c617368657300000801106b657973e90d019442547265654d61703c56616c696461746f72496e6465782c2056616c696461746f7249643e0001106b696e644906014c536c617368696e674f6666656e63654b696e640000e90d042042547265654d617008044b01b5050456011d02000400ed0d000000ed0d000002f10d00f10d00000408b5051d0200f50d146c706f6c6b61646f745f72756e74696d655f70617261636861696e7320646973707574657320736c617368696e671870616c6c6574144572726f7204045400011860496e76616c69644b65794f776e65727368697050726f6f660000048c546865206b6579206f776e6572736869702070726f6f6620697320696e76616c69642e4c496e76616c696453657373696f6e496e646578000104a05468652073657373696f6e20696e64657820697320746f6f206f6c64206f7220696e76616c69642e50496e76616c696443616e64696461746548617368000204785468652063616e646964617465206861736820697320696e76616c69642e54496e76616c696456616c696461746f72496e64657800030801015468657265206973206e6f2070656e64696e6720736c61736820666f722074686520676976656e2076616c696461746f7220696e64657820616e642074696d6514736c6f742e6056616c696461746f72496e64657849644d69736d61746368000404d05468652076616c696461746f7220696e64657820646f6573206e6f74206d61746368207468652076616c696461746f722069642e5c4475706c6963617465536c617368696e675265706f72740005040d0154686520676976656e20736c617368696e67207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ef90d000002fd0d00fd0d0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e734861737369676e65725f6f6e5f64656d616e6434456e7175657565644f72646572000004011c706172615f6964950201185061726149640000010e0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e734861737369676e65725f6f6e5f64656d616e6444436f7265416666696e697479436f756e740000080120636f72655f6964787d080124436f7265496e646578000114636f756e7410010c7533320000050e106c706f6c6b61646f745f72756e74696d655f70617261636861696e734861737369676e65725f6f6e5f64656d616e641870616c6c6574144572726f7204045400010c34496e76616c69645061726149640000085d0154686520605061726149646020737570706c69656420746f207468652060706c6163655f6f72646572602063616c6c206973206e6f7420612076616c6964206050617261546872656164602c206d616b696e67207468654063616c6c20697320696e76616c69642e24517565756546756c6c000104e4546865206f726465722071756575652069732066756c6c2c2060706c6163655f6f72646572602077696c6c206e6f7420636f6e74696e75652e7053706f7450726963654869676865725468616e4d6178416d6f756e740002084d015468652063757272656e742073706f7420707269636520697320686967686572207468616e20746865206d617820616d6f756e742073706563696669656420696e207468652060706c6163655f6f72646572606063616c6c2c206d616b696e6720697420696e76616c69642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e090e00000408107d08000d0e0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e734461737369676e65725f636f726574696d65205363686564756c6504044e0110000c012c61737369676e6d656e74737106018c5665633c28436f726541737369676e6d656e742c2050617274734f663537363030293e000120656e645f68696e74690201244f7074696f6e3c4e3e0001346e6578745f7363686564756c65690201244f7074696f6e3c4e3e0000110e0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e734461737369676e65725f636f726574696d6538436f726544657363726970746f7204044e0110000801147175657565150e01684f7074696f6e3c517565756544657363726970746f723c4e3e3e00013063757272656e745f776f726b1d0e01504f7074696f6e3c576f726b53746174653c4e3e3e0000150e04184f7074696f6e04045401190e0108104e6f6e6500000010536f6d650400190e0000010000190e0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e734461737369676e65725f636f726574696d653c517565756544657363726970746f7204044e01100008011466697273741001044e0001106c6173741001044e00001d0e04184f7074696f6e04045401210e0108104e6f6e6500000010536f6d650400210e0000010000210e0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e734461737369676e65725f636f726574696d6524576f726b537461746504044e01100010012c61737369676e6d656e7473250e01985665633c28436f726541737369676e6d656e742c2041737369676e6d656e745374617465293e000120656e645f68696e74690201244f7074696f6e3c4e3e00010c706f737901010c753136000110737465707d06013050617274734f6635373630300000250e000002290e00290e0000040879062d0e002d0e0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e734461737369676e65725f636f726574696d653c41737369676e6d656e7453746174650000080114726174696f7d06013050617274734f66353736303000012472656d61696e696e677d06013050617274734f6635373630300000310e106c706f6c6b61646f745f72756e74696d655f70617261636861696e734461737369676e65725f636f726574696d651870616c6c6574144572726f720404540001184041737369676e6d656e7473456d707479000000344f7665725363686564756c65640001049041737369676e6d656e747320746f6765746865722065786365656465642035373630302e38556e6465725363686564756c65640002049041737369676e6d656e747320746f676574686572206c657373207468616e20353736303040446973616c6c6f776564496e73657274000308510161737369676e5f636f7265206973206f6e6c7920616c6c6f77656420746f20617070656e64206e65772061737369676e6d656e74732061742074686520656e64206f6620616c7265616479206578697374696e67146f6e65732e3c4475706c6963617465496e736572740004045501547269656420746f20696e736572742061207363686564756c6520666f72207468652073616d6520636f726520616e6420626c6f636b206e756d62657220617320616e206578697374696e67207363686564756c655041737369676e6d656e74734e6f74536f72746564000504ac547269656420746f2061646420616e20756e736f7274656420736574206f662061737369676e6d656e7473048054686520604572726f726020656e756d206f6620746869732070616c6c65742e350e0c5c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3c70617261735f7265676973747261722050617261496e666f081c4163636f756e7401001c42616c616e63650118000c011c6d616e6167657200011c4163636f756e7400011c6465706f73697418011c42616c616e63650001186c6f636b6564390e01304f7074696f6e3c626f6f6c3e0000390e04184f7074696f6e04045401780108104e6f6e6500000010536f6d6504007800000100003d0e105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3c70617261735f7265676973747261721870616c6c6574144572726f72040454000138344e6f745265676973746572656400000464546865204944206973206e6f7420726567697374657265642e44416c7265616479526567697374657265640001047454686520494420697320616c726561647920726567697374657265642e204e6f744f776e65720002049c5468652063616c6c6572206973206e6f7420746865206f776e6572206f6620746869732049642e30436f6465546f6f4c617267650003045c496e76616c6964207061726120636f64652073697a652e404865616444617461546f6f4c6172676500040470496e76616c69642070617261206865616420646174612073697a652e304e6f7450617261636861696e0005046050617261206973206e6f7420612050617261636861696e2e344e6f7450617261746872656164000604bc50617261206973206e6f742061205061726174687265616420286f6e2d64656d616e642070617261636861696e292e4043616e6e6f74446572656769737465720007045843616e6e6f74206465726567697374657220706172613c43616e6e6f74446f776e67726164650008042d0143616e6e6f74207363686564756c6520646f776e6772616465206f66206c6561736520686f6c64696e672070617261636861696e20746f206f6e2d64656d616e642070617261636861696e3443616e6e6f7455706772616465000904250143616e6e6f74207363686564756c652075706772616465206f66206f6e2d64656d616e642070617261636861696e20746f206c6561736520686f6c64696e672070617261636861696e28506172614c6f636b6564000a08490150617261206973206c6f636b65642066726f6d206d616e6970756c6174696f6e20627920746865206d616e616765722e204d757374207573652070617261636861696e206f722072656c617920636861696e2c676f7665726e616e63652e2c4e6f745265736572766564000b04d054686520494420676976656e20666f7220726567697374726174696f6e20686173206e6f74206265656e2072657365727665642e24456d707479436f6465000c04d45265676973746572696e672070617261636861696e207769746820656d70747920636f6465206973206e6f7420616c6c6f7765642e2843616e6e6f7453776170000d08510143616e6e6f7420706572666f726d20612070617261636861696e20736c6f74202f206c6966656379636c6520737761702e20436865636b207468617420746865207374617465206f6620626f74682070617261738461726520636f727265637420666f7220746865207377617020746f20776f726b2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e410e000002e50b00450e105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e14736c6f74731870616c6c6574144572726f7204045400010844506172614e6f744f6e626f617264696e670000048c5468652070617261636861696e204944206973206e6f74206f6e626f617264696e672e284c656173654572726f720001048854686572652077617320616e206572726f72207769746820746865206c656173652e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e490e00000408009502004d0e00000324000000510e00510e04184f7074696f6e04045401550e0108104e6f6e6500000010536f6d650400550e0000010000550e0000040c0095021800590e105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e2061756374696f6e731870616c6c6574144572726f7204045400011c4441756374696f6e496e50726f677265737300000490546869732061756374696f6e20697320616c726561647920696e2070726f67726573732e444c65617365506572696f64496e5061737400010480546865206c6561736520706572696f6420697320696e2074686520706173742e44506172614e6f74526567697374657265640002045850617261206973206e6f742072656769737465726564444e6f7443757272656e7441756374696f6e000304584e6f7420612063757272656e742061756374696f6e2e284e6f7441756374696f6e0004043c4e6f7420616e2061756374696f6e2e3041756374696f6e456e6465640005046841756374696f6e2068617320616c726561647920656e6465642e40416c72656164794c65617365644f7574000604d8546865207061726120697320616c7265616479206c6561736564206f757420666f722070617274206f6620746869732072616e67652e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e5d0e0c5c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e2463726f77646c6f616e2046756e64496e666f10244163636f756e74496401001c42616c616e636501182c426c6f636b4e756d62657201102c4c65617365506572696f640110002801246465706f7369746f720001244163636f756e74496400012076657269666965726506014c4f7074696f6e3c4d756c74695369676e65723e00011c6465706f73697418011c42616c616e636500011872616973656418011c42616c616e636500010c656e6410012c426c6f636b4e756d62657200010c63617018011c42616c616e63650001446c6173745f636f6e747269627574696f6e610e01744c617374436f6e747269627574696f6e3c426c6f636b4e756d6265723e00013066697273745f706572696f6410012c4c65617365506572696f6400012c6c6173745f706572696f6410012c4c65617365506572696f6400012866756e645f696e64657810012446756e64496e6465780000610e0c5c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e2463726f77646c6f616e404c617374436f6e747269627574696f6e042c426c6f636b4e756d6265720110010c144e6576657200000024507265456e64696e67040010010c75333200010018456e64696e67040010012c426c6f636b4e756d62657200020000650e105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e2463726f77646c6f616e1870616c6c6574144572726f7204045400015c444669727374506572696f64496e50617374000004f45468652063757272656e74206c6561736520706572696f64206973206d6f7265207468616e20746865206669727374206c6561736520706572696f642e644669727374506572696f64546f6f466172496e4675747572650001041101546865206669727374206c6561736520706572696f64206e6565647320746f206174206c65617374206265206c657373207468616e203320606d61785f76616c7565602e6c4c617374506572696f644265666f72654669727374506572696f64000204e84c617374206c6561736520706572696f64206d7573742062652067726561746572207468616e206669727374206c6561736520706572696f642e604c617374506572696f64546f6f466172496e4675747572650003042d01546865206c617374206c6561736520706572696f642063616e6e6f74206265206d6f7265207468616e203320706572696f64732061667465722074686520666972737420706572696f642e3c43616e6e6f74456e64496e5061737400040445015468652063616d706169676e20656e6473206265666f7265207468652063757272656e7420626c6f636b206e756d6265722e2054686520656e64206d75737420626520696e20746865206675747572652e44456e64546f6f466172496e467574757265000504c054686520656e64206461746520666f7220746869732063726f77646c6f616e206973206e6f742073656e7369626c652e204f766572666c6f770006045854686572652077617320616e206f766572666c6f772e50436f6e747269627574696f6e546f6f536d616c6c000704e854686520636f6e747269627574696f6e207761732062656c6f7720746865206d696e696d756d2c20604d696e436f6e747269627574696f6e602e34496e76616c69645061726149640008044c496e76616c69642066756e6420696e6465782e2c436170457863656564656400090490436f6e747269627574696f6e7320657863656564206d6178696d756d20616d6f756e742e58436f6e747269627574696f6e506572696f644f766572000a04a854686520636f6e747269627574696f6e20706572696f642068617320616c726561647920656e6465642e34496e76616c69644f726967696e000b048c546865206f726967696e206f6620746869732063616c6c20697320696e76616c69642e304e6f7450617261636861696e000c04c8546869732063726f77646c6f616e20646f6573206e6f7420636f72726573706f6e6420746f20612070617261636861696e2e2c4c65617365416374697665000d041501546869732070617261636861696e206c65617365206973207374696c6c2061637469766520616e64207265746972656d656e742063616e6e6f742079657420626567696e2e404269644f724c65617365416374697665000e043101546869732070617261636861696e277320626964206f72206c65617365206973207374696c6c2061637469766520616e642077697468647261772063616e6e6f742079657420626567696e2e3046756e644e6f74456e646564000f04805468652063726f77646c6f616e20686173206e6f742079657420656e6465642e3c4e6f436f6e747269627574696f6e73001004d0546865726520617265206e6f20636f6e747269627574696f6e732073746f72656420696e20746869732063726f77646c6f616e2e484e6f745265616479546f446973736f6c766500110855015468652063726f77646c6f616e206973206e6f7420726561647920746f20646973736f6c76652e20506f74656e7469616c6c79207374696c6c20686173206120736c6f74206f7220696e207265746972656d656e741c706572696f642e40496e76616c69645369676e617475726500120448496e76616c6964207369676e61747572652e304d656d6f546f6f4c617267650013047c5468652070726f7669646564206d656d6f20697320746f6f206c617267652e44416c7265616479496e4e65775261697365001404845468652066756e6420697320616c726561647920696e20604e65775261697365604856726644656c6179496e50726f6772657373001504b44e6f20636f6e747269627574696f6e7320616c6c6f77656420647572696e6720746865205652462064656c6179344e6f4c65617365506572696f640016042d0141206c6561736520706572696f6420686173206e6f742073746172746564207965742c2064756520746f20616e206f666673657420696e20746865207374617274696e6720626c6f636b2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e690e106c706f6c6b61646f745f72756e74696d655f70617261636861696e7320636f726574696d651870616c6c6574144572726f72040454000104244e6f7442726f6b6572000004290154686520706172616964206d616b696e67207468652063616c6c206973206e6f742074686520636f726574696d652062726f6b65726167652073797374656d2070617261636861696e2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e6d0e0c2870616c6c65745f78636d1870616c6c65742c5175657279537461747573042c426c6f636b4e756d6265720110010c1c50656e64696e67100124726573706f6e6465725101014456657273696f6e65644c6f636174696f6e00014c6d617962655f6d617463685f71756572696572710e01644f7074696f6e3c56657273696f6e65644c6f636174696f6e3e0001306d617962655f6e6f74696679750e01404f7074696f6e3c2875382c207538293e00011c74696d656f757410012c426c6f636b4e756d6265720000003c56657273696f6e4e6f7469666965720801186f726967696e5101014456657273696f6e65644c6f636174696f6e00012469735f616374697665780110626f6f6c000100145265616479080120726573706f6e73657d0e014456657273696f6e6564526573706f6e7365000108617410012c426c6f636b4e756d62657200020000710e04184f7074696f6e0404540151010108104e6f6e6500000010536f6d65040051010000010000750e04184f7074696f6e04045401790e0108104e6f6e6500000010536f6d650400790e0000010000790e000004080808007d0e080c78636d4456657273696f6e6564526573706f6e736500010c0856320400ad06013076323a3a526573706f6e73650002000856330400f506013076333a3a526573706f6e736500030008563404005507013076343a3a526573706f6e736500040000810e0000040810510100850e0000040c2c241000890e0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454018d0e045300000400910e01185665633c543e00008d0e0000040851011000910e0000028d0e00950e0c2870616c6c65745f78636d1870616c6c65745456657273696f6e4d6967726174696f6e53746167650001105c4d696772617465537570706f7274656456657273696f6e0000005c4d69677261746556657273696f6e4e6f74696669657273000100504e6f7469667943757272656e74546172676574730400990e013c4f7074696f6e3c5665633c75383e3e000200684d696772617465416e644e6f746966794f6c645461726765747300030000990e04184f7074696f6e04045401340108104e6f6e6500000010536f6d6504003400000100009d0e0000040c1000a10e00a10e080c78636d4056657273696f6e65644173736574496400010808563304001501012c76333a3a4173736574496400030008563404004d01012c76343a3a4173736574496400040000a50e0c2870616c6c65745f78636d1870616c6c65746852656d6f74654c6f636b656446756e6769626c655265636f72640848436f6e73756d65724964656e74696669657201c501304d6178436f6e73756d6572730000100118616d6f756e74180110753132380001146f776e65725101014456657273696f6e65644c6f636174696f6e0001186c6f636b65725101014456657273696f6e65644c6f636174696f6e000124636f6e73756d657273a90e01d0426f756e6465645665633c28436f6e73756d65724964656e7469666965722c2075313238292c204d6178436f6e73756d6572733e0000a90e0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401ad0e045300000400b10e01185665633c543e0000ad0e00000408c5011800b10e000002ad0e00b50e0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401b90e045300000400bd0e01185665633c543e0000b90e0000040818510100bd0e000002b90e00c10e0c2870616c6c65745f78636d1870616c6c6574144572726f720404540001642c556e726561636861626c650000085d0154686520646573697265642064657374696e6174696f6e2077617320756e726561636861626c652c2067656e6572616c6c7920626563617573652074686572652069732061206e6f20776179206f6620726f7574696e6718746f2069742e2c53656e644661696c757265000108410154686572652077617320736f6d65206f746865722069737375652028692e652e206e6f7420746f20646f207769746820726f7574696e672920696e2073656e64696e6720746865206d6573736167652ec8506572686170732061206c61636b206f6620737061636520666f7220627566666572696e6720746865206d6573736167652e2046696c74657265640002049c546865206d65737361676520657865637574696f6e206661696c73207468652066696c7465722e48556e776569676861626c654d657373616765000304b4546865206d65737361676527732077656967687420636f756c64206e6f742062652064657465726d696e65642e6044657374696e6174696f6e4e6f74496e7665727469626c65000404dc5468652064657374696e6174696f6e20604c6f636174696f6e602070726f76696465642063616e6e6f7420626520696e7665727465642e14456d707479000504805468652061737365747320746f2062652073656e742061726520656d7074792e3843616e6e6f745265616e63686f720006043501436f756c64206e6f742072652d616e63686f72207468652061737365747320746f206465636c61726520746865206665657320666f72207468652064657374696e6174696f6e20636861696e2e34546f6f4d616e79417373657473000704c4546f6f206d616e79206173736574732068617665206265656e20617474656d7074656420666f72207472616e736665722e34496e76616c69644f726967696e000804784f726967696e20697320696e76616c696420666f722073656e64696e672e2842616456657273696f6e00090421015468652076657273696f6e206f6620746865206056657273696f6e6564602076616c75652075736564206973206e6f742061626c6520746f20626520696e7465727072657465642e2c4261644c6f636174696f6e000a08410154686520676976656e206c6f636174696f6e20636f756c64206e6f7420626520757365642028652e672e20626563617573652069742063616e6e6f742062652065787072657373656420696e2074686560646573697265642076657273696f6e206f662058434d292e384e6f537562736372697074696f6e000b04bc546865207265666572656e63656420737562736372697074696f6e20636f756c64206e6f7420626520666f756e642e44416c726561647953756273637269626564000c041101546865206c6f636174696f6e20697320696e76616c69642073696e636520697420616c726561647920686173206120737562736372697074696f6e2066726f6d2075732e5843616e6e6f74436865636b4f757454656c65706f7274000d042901436f756c64206e6f7420636865636b2d6f7574207468652061737365747320666f722074656c65706f72746174696f6e20746f207468652064657374696e6174696f6e20636861696e2e284c6f7742616c616e6365000e044101546865206f776e657220646f6573206e6f74206f776e2028616c6c29206f662074686520617373657420746861742074686579207769736820746f20646f20746865206f7065726174696f6e206f6e2e30546f6f4d616e794c6f636b73000f04c0546865206173736574206f776e65722068617320746f6f206d616e79206c6f636b73206f6e207468652061737365742e4c4163636f756e744e6f74536f7665726569676e001004310154686520676976656e206163636f756e74206973206e6f7420616e206964656e7469666961626c6520736f7665726569676e206163636f756e7420666f7220616e79206c6f636174696f6e2e28466565734e6f744d65740011042901546865206f7065726174696f6e207265717569726564206665657320746f20626520706169642077686963682074686520696e69746961746f7220636f756c64206e6f74206d6565742e304c6f636b4e6f74466f756e64001204f4412072656d6f7465206c6f636b20776974682074686520636f72726573706f6e64696e67206461746120636f756c64206e6f7420626520666f756e642e14496e557365001304490154686520756e6c6f636b206f7065726174696f6e2063616e6e6f742073756363656564206265636175736520746865726520617265207374696c6c20636f6e73756d657273206f6620746865206c6f636b2e5c496e76616c696441737365744e6f74436f6e63726574650014046c496e76616c6964206e6f6e2d636f6e63726574652061737365742e68496e76616c69644173736574556e6b6e6f776e52657365727665001504f0496e76616c69642061737365742c207265736572766520636861696e20636f756c64206e6f742062652064657465726d696e656420666f722069742e78496e76616c69644173736574556e737570706f72746564526573657276650016044501496e76616c69642061737365742c20646f206e6f7420737570706f72742072656d6f7465206173736574207265736572766573207769746820646966666572656e7420666565732072657365727665732e3c546f6f4d616e7952657365727665730017044901546f6f206d616e7920617373657473207769746820646966666572656e742072657365727665206c6f636174696f6e732068617665206265656e20617474656d7074656420666f72207472616e736665722e604c6f63616c457865637574696f6e496e636f6d706c6574650018047c4c6f63616c2058434d20657865637574696f6e20696e636f6d706c6574652e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ec50e085070616c6c65745f6d6573736167655f717565756524426f6f6b537461746504344d6573736167654f726967696e01b10700180114626567696e10012450616765496e64657800010c656e6410012450616765496e646578000114636f756e7410012450616765496e64657800014072656164795f6e65696768626f757273c90e01844f7074696f6e3c4e65696768626f7572733c4d6573736167654f726967696e3e3e0001346d6573736167655f636f756e742c010c75363400011073697a652c010c7536340000c90e04184f7074696f6e04045401cd0e0108104e6f6e6500000010536f6d650400cd0e0000010000cd0e085070616c6c65745f6d6573736167655f7175657565284e65696768626f75727304344d6573736167654f726967696e01b1070008011070726576b10701344d6573736167654f726967696e0001106e657874b10701344d6573736167654f726967696e0000d10e00000408b1071000d50e085070616c6c65745f6d6573736167655f71756575651050616765081053697a650110204865617053697a65000018012472656d61696e696e6710011053697a6500013872656d61696e696e675f73697a6510011053697a6500012c66697273745f696e64657810011053697a65000114666972737410011053697a650001106c61737410011053697a6500011068656170d90e019c426f756e6465645665633c75382c20496e746f5533323c4865617053697a652c2053697a653e3e0000d90e0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e0000dd0e0c5070616c6c65745f6d6573736167655f71756575651870616c6c6574144572726f720404540001242c4e6f745265617061626c65000008490150616765206973206e6f74207265617061626c65206265636175736520697420686173206974656d732072656d61696e696e6720746f2062652070726f63657373656420616e64206973206e6f74206f6c641c656e6f7567682e184e6f50616765000104845061676520746f2062652072656170656420646f6573206e6f742065786973742e244e6f4d657373616765000204a8546865207265666572656e636564206d65737361676520636f756c64206e6f7420626520666f756e642e40416c726561647950726f6365737365640003040101546865206d6573736167652077617320616c72656164792070726f63657373656420616e642063616e6e6f742062652070726f63657373656420616761696e2e18517565756564000404ac546865206d6573736167652069732071756575656420666f722066757475726520657865637574696f6e2e48496e73756666696369656e74576569676874000504190154686572652069732074656d706f726172696c79206e6f7420656e6f7567682077656967687420746f20636f6e74696e756520736572766963696e67206d657373616765732e6054656d706f726172696c79556e70726f6365737361626c65000610a854686973206d6573736167652069732074656d706f726172696c7920756e70726f6365737361626c652e00590153756368206572726f7273206172652065787065637465642c20627574206e6f742067756172616e746565642c20746f207265736f6c7665207468656d73656c766573206576656e7475616c6c79207468726f756768247265747279696e672e2c517565756550617573656400070cec5468652071756575652069732070617573656420616e64206e6f206d6573736167652063616e2062652065786563757465642066726f6d2069742e001d01546869732063616e206368616e676520617420616e792074696d6520616e64206d6179207265736f6c766520696e20746865206675747572652062792072652d747279696e672e4c526563757273697665446973616c6c6f7765640008043101416e6f746865722063616c6c20697320696e2070726f677265737320616e64206e6565647320746f2066696e697368206265666f726520746869732063616c6c2063616e2068617070656e2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ee10e0c4470616c6c65745f61737365745f726174651870616c6c6574144572726f7204045400010840556e6b6e6f776e41737365744b696e640000047854686520676976656e20617373657420494420697320756e6b6e6f776e2e34416c7265616479457869737473000104510154686520676976656e20617373657420494420616c72656164792068617320616e2061737369676e656420636f6e76657273696f6e207261746520616e642063616e6e6f742062652072652d637265617465642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ee50e0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454012902045300000400e90e01185665633c543e0000e90e000002290200ed0e0c3070616c6c65745f62656566791870616c6c6574144572726f7204045400011060496e76616c69644b65794f776e65727368697050726f6f66000004310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660001043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400020415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e50496e76616c6964436f6e66696775726174696f6e0003048c5375626d697474656420636f6e66696775726174696f6e20697320696e76616c69642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ef10e0c4873705f636f6e73656e7375735f62656566790c6d6d72444265656679417574686f726974795365740458417574686f72697479536574436f6d6d69746d656e740130000c010869642c015463726174653a3a56616c696461746f72536574496400010c6c656e10010c7533320001446b65797365745f636f6d6d69746d656e74300158417574686f72697479536574436f6d6d69746d656e740000f50e102873705f72756e74696d651c67656e657269634c756e636865636b65645f65787472696e73696348556e636865636b656445787472696e736963101c4164647265737301c1011043616c6c018101245369676e6174757265017d0314457874726101f90e00040034000000f90e00000420fd0e010f050f090f0d0f150f190f1d0f00fd0e10306672616d655f73797374656d28657874656e73696f6e7354636865636b5f6e6f6e5f7a65726f5f73656e64657248436865636b4e6f6e5a65726f53656e64657204045400000000010f10306672616d655f73797374656d28657874656e73696f6e7348636865636b5f737065635f76657273696f6e40436865636b5370656356657273696f6e04045400000000050f10306672616d655f73797374656d28657874656e73696f6e7340636865636b5f74785f76657273696f6e38436865636b547856657273696f6e04045400000000090f10306672616d655f73797374656d28657874656e73696f6e7334636865636b5f67656e6573697330436865636b47656e65736973040454000000000d0f10306672616d655f73797374656d28657874656e73696f6e733c636865636b5f6d6f7274616c69747938436865636b4d6f7274616c69747904045400000400110f010c4572610000110f102873705f72756e74696d651c67656e657269630c6572610c4572610001010420496d6d6f7274616c0000001c4d6f7274616c31040008000001001c4d6f7274616c32040008000002001c4d6f7274616c33040008000003001c4d6f7274616c34040008000004001c4d6f7274616c35040008000005001c4d6f7274616c36040008000006001c4d6f7274616c37040008000007001c4d6f7274616c38040008000008001c4d6f7274616c3904000800000900204d6f7274616c313004000800000a00204d6f7274616c313104000800000b00204d6f7274616c313204000800000c00204d6f7274616c313304000800000d00204d6f7274616c313404000800000e00204d6f7274616c313504000800000f00204d6f7274616c313604000800001000204d6f7274616c313704000800001100204d6f7274616c313804000800001200204d6f7274616c313904000800001300204d6f7274616c323004000800001400204d6f7274616c323104000800001500204d6f7274616c323204000800001600204d6f7274616c323304000800001700204d6f7274616c323404000800001800204d6f7274616c323504000800001900204d6f7274616c323604000800001a00204d6f7274616c323704000800001b00204d6f7274616c323804000800001c00204d6f7274616c323904000800001d00204d6f7274616c333004000800001e00204d6f7274616c333104000800001f00204d6f7274616c333204000800002000204d6f7274616c333304000800002100204d6f7274616c333404000800002200204d6f7274616c333504000800002300204d6f7274616c333604000800002400204d6f7274616c333704000800002500204d6f7274616c333804000800002600204d6f7274616c333904000800002700204d6f7274616c343004000800002800204d6f7274616c343104000800002900204d6f7274616c343204000800002a00204d6f7274616c343304000800002b00204d6f7274616c343404000800002c00204d6f7274616c343504000800002d00204d6f7274616c343604000800002e00204d6f7274616c343704000800002f00204d6f7274616c343804000800003000204d6f7274616c343904000800003100204d6f7274616c353004000800003200204d6f7274616c353104000800003300204d6f7274616c353204000800003400204d6f7274616c353304000800003500204d6f7274616c353404000800003600204d6f7274616c353504000800003700204d6f7274616c353604000800003800204d6f7274616c353704000800003900204d6f7274616c353804000800003a00204d6f7274616c353904000800003b00204d6f7274616c363004000800003c00204d6f7274616c363104000800003d00204d6f7274616c363204000800003e00204d6f7274616c363304000800003f00204d6f7274616c363404000800004000204d6f7274616c363504000800004100204d6f7274616c363604000800004200204d6f7274616c363704000800004300204d6f7274616c363804000800004400204d6f7274616c363904000800004500204d6f7274616c373004000800004600204d6f7274616c373104000800004700204d6f7274616c373204000800004800204d6f7274616c373304000800004900204d6f7274616c373404000800004a00204d6f7274616c373504000800004b00204d6f7274616c373604000800004c00204d6f7274616c373704000800004d00204d6f7274616c373804000800004e00204d6f7274616c373904000800004f00204d6f7274616c383004000800005000204d6f7274616c383104000800005100204d6f7274616c383204000800005200204d6f7274616c383304000800005300204d6f7274616c383404000800005400204d6f7274616c383504000800005500204d6f7274616c383604000800005600204d6f7274616c383704000800005700204d6f7274616c383804000800005800204d6f7274616c383904000800005900204d6f7274616c393004000800005a00204d6f7274616c393104000800005b00204d6f7274616c393204000800005c00204d6f7274616c393304000800005d00204d6f7274616c393404000800005e00204d6f7274616c393504000800005f00204d6f7274616c393604000800006000204d6f7274616c393704000800006100204d6f7274616c393804000800006200204d6f7274616c393904000800006300244d6f7274616c31303004000800006400244d6f7274616c31303104000800006500244d6f7274616c31303204000800006600244d6f7274616c31303304000800006700244d6f7274616c31303404000800006800244d6f7274616c31303504000800006900244d6f7274616c31303604000800006a00244d6f7274616c31303704000800006b00244d6f7274616c31303804000800006c00244d6f7274616c31303904000800006d00244d6f7274616c31313004000800006e00244d6f7274616c31313104000800006f00244d6f7274616c31313204000800007000244d6f7274616c31313304000800007100244d6f7274616c31313404000800007200244d6f7274616c31313504000800007300244d6f7274616c31313604000800007400244d6f7274616c31313704000800007500244d6f7274616c31313804000800007600244d6f7274616c31313904000800007700244d6f7274616c31323004000800007800244d6f7274616c31323104000800007900244d6f7274616c31323204000800007a00244d6f7274616c31323304000800007b00244d6f7274616c31323404000800007c00244d6f7274616c31323504000800007d00244d6f7274616c31323604000800007e00244d6f7274616c31323704000800007f00244d6f7274616c31323804000800008000244d6f7274616c31323904000800008100244d6f7274616c31333004000800008200244d6f7274616c31333104000800008300244d6f7274616c31333204000800008400244d6f7274616c31333304000800008500244d6f7274616c31333404000800008600244d6f7274616c31333504000800008700244d6f7274616c31333604000800008800244d6f7274616c31333704000800008900244d6f7274616c31333804000800008a00244d6f7274616c31333904000800008b00244d6f7274616c31343004000800008c00244d6f7274616c31343104000800008d00244d6f7274616c31343204000800008e00244d6f7274616c31343304000800008f00244d6f7274616c31343404000800009000244d6f7274616c31343504000800009100244d6f7274616c31343604000800009200244d6f7274616c31343704000800009300244d6f7274616c31343804000800009400244d6f7274616c31343904000800009500244d6f7274616c31353004000800009600244d6f7274616c31353104000800009700244d6f7274616c31353204000800009800244d6f7274616c31353304000800009900244d6f7274616c31353404000800009a00244d6f7274616c31353504000800009b00244d6f7274616c31353604000800009c00244d6f7274616c31353704000800009d00244d6f7274616c31353804000800009e00244d6f7274616c31353904000800009f00244d6f7274616c3136300400080000a000244d6f7274616c3136310400080000a100244d6f7274616c3136320400080000a200244d6f7274616c3136330400080000a300244d6f7274616c3136340400080000a400244d6f7274616c3136350400080000a500244d6f7274616c3136360400080000a600244d6f7274616c3136370400080000a700244d6f7274616c3136380400080000a800244d6f7274616c3136390400080000a900244d6f7274616c3137300400080000aa00244d6f7274616c3137310400080000ab00244d6f7274616c3137320400080000ac00244d6f7274616c3137330400080000ad00244d6f7274616c3137340400080000ae00244d6f7274616c3137350400080000af00244d6f7274616c3137360400080000b000244d6f7274616c3137370400080000b100244d6f7274616c3137380400080000b200244d6f7274616c3137390400080000b300244d6f7274616c3138300400080000b400244d6f7274616c3138310400080000b500244d6f7274616c3138320400080000b600244d6f7274616c3138330400080000b700244d6f7274616c3138340400080000b800244d6f7274616c3138350400080000b900244d6f7274616c3138360400080000ba00244d6f7274616c3138370400080000bb00244d6f7274616c3138380400080000bc00244d6f7274616c3138390400080000bd00244d6f7274616c3139300400080000be00244d6f7274616c3139310400080000bf00244d6f7274616c3139320400080000c000244d6f7274616c3139330400080000c100244d6f7274616c3139340400080000c200244d6f7274616c3139350400080000c300244d6f7274616c3139360400080000c400244d6f7274616c3139370400080000c500244d6f7274616c3139380400080000c600244d6f7274616c3139390400080000c700244d6f7274616c3230300400080000c800244d6f7274616c3230310400080000c900244d6f7274616c3230320400080000ca00244d6f7274616c3230330400080000cb00244d6f7274616c3230340400080000cc00244d6f7274616c3230350400080000cd00244d6f7274616c3230360400080000ce00244d6f7274616c3230370400080000cf00244d6f7274616c3230380400080000d000244d6f7274616c3230390400080000d100244d6f7274616c3231300400080000d200244d6f7274616c3231310400080000d300244d6f7274616c3231320400080000d400244d6f7274616c3231330400080000d500244d6f7274616c3231340400080000d600244d6f7274616c3231350400080000d700244d6f7274616c3231360400080000d800244d6f7274616c3231370400080000d900244d6f7274616c3231380400080000da00244d6f7274616c3231390400080000db00244d6f7274616c3232300400080000dc00244d6f7274616c3232310400080000dd00244d6f7274616c3232320400080000de00244d6f7274616c3232330400080000df00244d6f7274616c3232340400080000e000244d6f7274616c3232350400080000e100244d6f7274616c3232360400080000e200244d6f7274616c3232370400080000e300244d6f7274616c3232380400080000e400244d6f7274616c3232390400080000e500244d6f7274616c3233300400080000e600244d6f7274616c3233310400080000e700244d6f7274616c3233320400080000e800244d6f7274616c3233330400080000e900244d6f7274616c3233340400080000ea00244d6f7274616c3233350400080000eb00244d6f7274616c3233360400080000ec00244d6f7274616c3233370400080000ed00244d6f7274616c3233380400080000ee00244d6f7274616c3233390400080000ef00244d6f7274616c3234300400080000f000244d6f7274616c3234310400080000f100244d6f7274616c3234320400080000f200244d6f7274616c3234330400080000f300244d6f7274616c3234340400080000f400244d6f7274616c3234350400080000f500244d6f7274616c3234360400080000f600244d6f7274616c3234370400080000f700244d6f7274616c3234380400080000f800244d6f7274616c3234390400080000f900244d6f7274616c3235300400080000fa00244d6f7274616c3235310400080000fb00244d6f7274616c3235320400080000fc00244d6f7274616c3235330400080000fd00244d6f7274616c3235340400080000fe00244d6f7274616c3235350400080000ff0000150f10306672616d655f73797374656d28657874656e73696f6e732c636865636b5f6e6f6e636528436865636b4e6f6e636504045400000400fc0120543a3a4e6f6e63650000190f10306672616d655f73797374656d28657874656e73696f6e7330636865636b5f7765696768742c436865636b576569676874040454000000001d0f086870616c6c65745f7472616e73616374696f6e5f7061796d656e74604368617267655472616e73616374696f6e5061796d656e7404045400000400dc013042616c616e63654f663c543e0000210f085873746167696e675f6b7573616d615f72756e74696d651c52756e74696d650000000005011853797374656d011853797374656d441c4163636f756e7401010402000c4101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e74000010040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2c426c6f636b576569676874010020180000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e40416c6c45787472696e736963734c656e000010040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b486173680101040510308000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101040510340400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d6265720100101000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801003080000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e18446967657374010038040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e747301004804001ca0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e001d01204e4f54453a20546865206974656d20697320756e626f756e6420616e642073686f756c64207468657265666f7265206e657665722062652072656164206f6e20636861696e2ed020497420636f756c64206f746865727769736520696e666c6174652074686520506f562073697a65206f66206120626c6f636b2e002d01204576656e747320686176652061206c6172676520696e2d6d656d6f72792073697a652e20426f7820746865206576656e747320746f206e6f7420676f206f75742d6f662d6d656d6f7279fc206a75737420696e206361736520736f6d656f6e65207374696c6c207265616473207468656d2066726f6d2077697468696e207468652072756e74696d652e284576656e74436f756e74010010100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f706963730101040230cd080400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e005901205468652076616c756520686173207468652074797065206028426c6f636b4e756d626572466f723c543e2c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d65557067726164650000d10804000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e545570677261646564546f553332526566436f756e740100780400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e605570677261646564546f547269706c65526566436f756e740100780400085d012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e50686173650000c908040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e44417574686f72697a6564557067726164650000d908040004b82060536f6d6560206966206120636f6465207570677261646520686173206265656e20617574686f72697a65642e01850101541830426c6f636b57656967687473dd08010207a81a0a5303000b00204aa9d10113ffffffffffffffff4273bb1d00010b30f3708f580113a3703d0ad7a370bd010b0098f73e5d0113ffffffffffffffbf0100004273bb1d00010b307bc3f9cc0113a3703d0ad7a370fd010b00204aa9d10113ffffffffffffffff01070088526a741300000000000000404273bb1d0000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e677468e9083000003c00000050000000500004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e74101000100000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e204462576569676874f1084040787d010000000000e1f505000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6ef5082d04186b7573616d61347061726974792d6b7573616d6102000000104a0f00000000004cdf6acb689907609b0400000037e397fc7c91f5e40200000040fe3ad401f8959a06000000d2bc9897eed08f1503000000f78b278be53f454c02000000af2c0297a23e6d3d0a00000049eaaf1b548a0cb00300000091d5df18b0d2cf58020000002a5e924655399e6001000000ed99c5acb25eedf503000000cbca25e39f14238702000000687ad44ad37f03c201000000ab3c0572291feb8b01000000bc9d89904f5b923f0100000037c8bb1350a9a2a804000000f3ff14d5ab5270590300000017a6bc0d0062aeb30100000018ef58a3b67ba77001000000fbc577b9d747efd60100000019000000010484204765742074686520636861696e27732063757272656e742076657273696f6e2e2853533538507265666978790108020014a8205468652064657369676e61746564205353353820707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e010509001042616265011042616265442845706f6368496e64657801002c20000000000000000004542043757272656e742065706f636820696e6465782e2c417574686f726974696573010009090400046c2043757272656e742065706f636820617574686f7269746965732e2c47656e65736973536c6f740100a50120000000000000000008f82054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e205468697320697320309020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2c43757272656e74536c6f740100a50120000000000000000004542043757272656e7420736c6f74206e756d6265722e2852616e646f6d6e65737301000480000000000000000000000000000000000000000000000000000000000000000028b8205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e002c20232053656375726974790005012054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061f8206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e7915012063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d6265727320746861742074686973150120286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e206265050120757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e0d01206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e6050656e64696e6745706f6368436f6e6669674368616e67650000ad0104000461012050656e64696e672065706f636820636f6e66696775726174696f6e206368616e676520746861742077696c6c206265206170706c696564207768656e20746865206e6578742065706f636820697320656e61637465642e384e65787452616e646f6d6e657373010004800000000000000000000000000000000000000000000000000000000000000000045c204e6578742065706f63682072616e646f6d6e6573732e3c4e657874417574686f7269746965730100090904000460204e6578742065706f636820617574686f7269746965732e305365676d656e74496e6465780100101000000000247c2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e00f8205765206d616b6520612074726164652d6f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e01012057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f942060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e00ec204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e090120576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572791c2065706f63682e44556e646572436f6e737472756374696f6e0101040510150904000415012054574f582d4e4f54453a20605365676d656e74496e6465786020697320616e20696e6372656173696e6720696e74656765722c20736f2074686973206973206f6b61792e2c496e697469616c697a656400001d0904000801012054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d65601d01206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e4c417574686f7256726652616e646f6d6e6573730100390804001015012054686973206669656c642073686f756c6420616c7761797320626520706f70756c6174656420647572696e6720626c6f636b2070726f63657373696e6720756e6c6573731901207365636f6e6461727920706c61696e20736c6f74732061726520656e61626c65642028776869636820646f6e277420636f6e7461696e206120565246206f7574707574292e0049012049742069732073657420696e20606f6e5f66696e616c697a65602c206265666f72652069742077696c6c20636f6e7461696e207468652076616c75652066726f6d20746865206c61737420626c6f636b2e2845706f636853746172740100a503200000000000000000145d012054686520626c6f636b206e756d62657273207768656e20746865206c61737420616e642063757272656e742065706f6368206861766520737461727465642c20726573706563746976656c7920604e2d316020616e641420604e602e4901204e4f54453a20576520747261636b207468697320697320696e206f7264657220746f20616e6e6f746174652074686520626c6f636b206e756d626572207768656e206120676976656e20706f6f6c206f66590120656e74726f7079207761732066697865642028692e652e20697420776173206b6e6f776e20746f20636861696e206f6273657276657273292e2053696e63652065706f6368732061726520646566696e656420696e590120736c6f74732c207768696368206d617920626520736b69707065642c2074686520626c6f636b206e756d62657273206d6179206e6f74206c696e6520757020776974682074686520736c6f74206e756d626572732e204c6174656e657373010010100000000014d820486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e001501205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e65642075701101206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636bb020657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e2c45706f6368436f6e6669670000350904000861012054686520636f6e66696775726174696f6e20666f72207468652063757272656e742065706f63682e2053686f756c64206e6576657220626520604e6f6e656020617320697420697320696e697469616c697a656420696e242067656e657369732e3c4e65787445706f6368436f6e666967000035090400082d012054686520636f6e66696775726174696f6e20666f7220746865206e6578742065706f63682c20604e6f6e65602069662074686520636f6e6669672077696c6c206e6f74206368616e6765e82028796f752063616e2066616c6c6261636b20746f206045706f6368436f6e6669676020696e737465616420696e20746861742063617365292e34536b697070656445706f6368730100390904002029012041206c697374206f6620746865206c6173742031303020736b69707065642065706f63687320616e642074686520636f72726573706f6e64696e672073657373696f6e20696e64657870207768656e207468652065706f63682077617320736b69707065642e0031012054686973206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e2070726f6f66732e20416e2065717569766f636174696f6e2070726f6f663501206d75737420636f6e7461696e732061206b65792d6f776e6572736869702070726f6f6620666f72206120676976656e2073657373696f6e2c207468657265666f7265207765206e656564206139012077617920746f2074696520746f6765746865722073657373696f6e7320616e642065706f636820696e64696365732c20692e652e207765206e65656420746f2076616c69646174652074686174290120612076616c696461746f722077617320746865206f776e6572206f66206120676976656e206b6579206f6e206120676976656e2073657373696f6e2c20616e64207768617420746865b0206163746976652065706f636820696e6465782077617320647572696e6720746861742073657373696f6e2e01950100103445706f63684475726174696f6e2c2058020000000000000cec2054686520616d6f756e74206f662074696d652c20696e20736c6f74732c207468617420656163682065706f63682073686f756c64206c6173742e1901204e4f54453a2043757272656e746c79206974206973206e6f7420706f737369626c6520746f206368616e6765207468652065706f6368206475726174696f6e20616674657221012074686520636861696e2068617320737461727465642e20417474656d7074696e6720746f20646f20736f2077696c6c20627269636b20626c6f636b2070726f64756374696f6e2e444578706563746564426c6f636b54696d652c20701700000000000014050120546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e67110120626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f75740501207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f740901206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473a0207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e384d6178417574686f7269746965731010a08601000488204d6178206e756d626572206f6620617574686f72697469657320616c6c6f776564344d61784e6f6d696e61746f727310100002000004d420546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320666f7220656163682076616c696461746f722e014509012454696d657374616d70012454696d657374616d70080c4e6f7701002c20000000000000000004a0205468652063757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e24446964557064617465010078040010d82057686574686572207468652074696d657374616d7020686173206265656e207570646174656420696e207468697320626c6f636b2e00550120546869732076616c7565206973207570646174656420746f206074727565602075706f6e207375636365737366756c207375626d697373696f6e206f6620612074696d657374616d702062792061206e6f64652e4501204974206973207468656e20636865636b65642061742074686520656e64206f66206561636820626c6f636b20657865637574696f6e20696e2074686520606f6e5f66696e616c697a656020686f6f6b2e01b9010004344d696e696d756d506572696f642c20b80b000000000000188c20546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e004d012042652061776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f6420746861742074686520626c6f636b2070726f64756374696f6e4901206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c7920776f726b2077697468207468697320746f61012064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20466f72206578616d706c652c20696e2074686520417572612070616c6c65742069742077696c6c20626520646f75626c6520746869737020706572696f64206f6e2064656661756c742073657474696e67732e00021c496e6469636573011c496e646963657304204163636f756e7473000104021049090400048820546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e01bd01017c041c4465706f7369741840344dd2c207000000000000000000000004ac20546865206465706f736974206e656564656420666f7220726573657276696e6720616e20696e6465782e014d09032042616c616e636573012042616c616e6365731c34546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e40496e61637469766549737375616e636501001840000000000000000000000000000000000409012054686520746f74616c20756e697473206f66206f75747374616e64696e672064656163746976617465642062616c616e636520696e207468652073797374656d2e1c4163636f756e74010104020014010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080600901205468652042616c616e6365732070616c6c6574206578616d706c65206f662073746f72696e67207468652062616c616e6365206f6620616e206163636f756e742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b19022020202074797065204163636f756e7453746f7265203d2053746f726167654d61705368696d3c53656c663a3a4163636f756e743c52756e74696d653e2c206672616d655f73797374656d3a3a50726f76696465723c52756e74696d653e2c204163636f756e7449642c2053656c663a3a4163636f756e74446174613c42616c616e63653e3e0c20207d102060606000150120596f752063616e20616c736f2073746f7265207468652062616c616e6365206f6620616e206163636f756e7420696e20746865206053797374656d602070616c6c65742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b7420202074797065204163636f756e7453746f7265203d2053797374656d0c20207d102060606000510120427574207468697320636f6d657320776974682074726164656f6666732c2073746f72696e67206163636f756e742062616c616e63657320696e207468652073797374656d2070616c6c65742073746f7265736d0120606672616d655f73797374656d60206461746120616c6f6e677369646520746865206163636f756e74206461746120636f6e747261727920746f2073746f72696e67206163636f756e742062616c616e63657320696e207468652901206042616c616e636573602070616c6c65742c20776869636820757365732061206053746f726167654d61706020746f2073746f72652062616c616e6365732064617461206f6e6c792e4101204e4f54453a2054686973206973206f6e6c79207573656420696e207468652063617365207468617420746869732070616c6c6574206973207573656420746f2073746f72652062616c616e6365732e144c6f636b7301010402005109040008b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e20526573657276657301010402006109040004a4204e616d6564207265736572766573206f6e20736f6d65206163636f756e742062616c616e6365732e14486f6c647301010402006d090400046c20486f6c6473206f6e206163636f756e742062616c616e6365732e1c467265657a6573010104020085090400048820467265657a65206c6f636b73206f6e206163636f756e742062616c616e6365732e01cd01018010484578697374656e7469616c4465706f73697418405543de1300000000000000000000000020410120546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e204d5553542042452047524541544552205448414e205a45524f2100590120496620796f75202a7265616c6c792a206e65656420697420746f206265207a65726f2c20796f752063616e20656e61626c652074686520666561747572652060696e7365637572655f7a65726f5f65646020666f72610120746869732070616c6c65742e20486f77657665722c20796f7520646f20736f20617420796f7572206f776e207269736b3a20746869732077696c6c206f70656e2075702061206d616a6f7220446f5320766563746f722e590120496e206361736520796f752068617665206d756c7469706c6520736f7572636573206f662070726f7669646572207265666572656e6365732c20796f75206d617920616c736f2067657420756e65787065637465648c206265686176696f757220696620796f7520736574207468697320746f207a65726f2e00f020426f74746f6d206c696e653a20446f20796f757273656c662061206661766f757220616e64206d616b65206974206174206c65617374206f6e6521204d61784c6f636b7310103200000008f420546865206d6178696d756d206e756d626572206f66206c6f636b7320746861742073686f756c64206578697374206f6e20616e206163636f756e742edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e2c4d61785265736572766573101032000000040d0120546865206d6178696d756d206e756d626572206f66206e616d656420726573657276657320746861742063616e206578697374206f6e20616e206163636f756e742e284d6178467265657a657310100800000004610120546865206d6178696d756d206e756d626572206f6620696e646976696475616c20667265657a65206c6f636b7320746861742063616e206578697374206f6e20616e206163636f756e7420617420616e792074696d652e01990904485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e7408444e6578744665654d756c7469706c6965720100bd0740000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e01009d0904000000018804604f7065726174696f6e616c4665654d756c7469706c696572080405545901204120666565206d756c7469706c69657220666f7220604f7065726174696f6e616c602065787472696e7369637320746f20636f6d7075746520227669727475616c207469702220746f20626f6f73742074686569722c20607072696f726974796000510120546869732076616c7565206973206d756c7469706c69656420627920746865206066696e616c5f6665656020746f206f627461696e206120227669727475616c20746970222074686174206973206c61746572f420616464656420746f20612074697020636f6d706f6e656e7420696e20726567756c617220607072696f72697479602063616c63756c6174696f6e732e4d01204974206d65616e732074686174206120604e6f726d616c60207472616e73616374696f6e2063616e2066726f6e742d72756e20612073696d696c61726c792d73697a656420604f7065726174696f6e616c6041012065787472696e736963202877697468206e6f20746970292c20627920696e636c7564696e672061207469702076616c75652067726561746572207468616e20746865207669727475616c207469702e003c20606060727573742c69676e6f726540202f2f20466f7220604e6f726d616c608c206c6574207072696f72697479203d207072696f726974795f63616c6328746970293b0054202f2f20466f7220604f7065726174696f6e616c601101206c6574207669727475616c5f746970203d2028696e636c7573696f6e5f666565202b2074697029202a204f7065726174696f6e616c4665654d756c7469706c6965723bc4206c6574207072696f72697479203d207072696f726974795f63616c6328746970202b207669727475616c5f746970293b1020606060005101204e6f746520746861742073696e636520776520757365206066696e616c5f6665656020746865206d756c7469706c696572206170706c69657320616c736f20746f2074686520726567756c61722060746970605d012073656e74207769746820746865207472616e73616374696f6e2e20536f2c206e6f74206f6e6c7920646f657320746865207472616e73616374696f6e206765742061207072696f726974792062756d702062617365646101206f6e207468652060696e636c7573696f6e5f666565602c2062757420776520616c736f20616d706c6966792074686520696d70616374206f662074697073206170706c69656420746f20604f7065726174696f6e616c6038207472616e73616374696f6e732e002128417574686f72736869700128417574686f72736869700418417574686f720000000400046420417574686f72206f662063757272656e7420626c6f636b2e00000000051c5374616b696e67011c5374616b696e67a03856616c696461746f72436f756e740100101000000000049c2054686520696465616c206e756d626572206f66206163746976652076616c696461746f72732e544d696e696d756d56616c696461746f72436f756e740100101000000000044101204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e34496e76756c6e657261626c65730100d10104000c590120416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e636520746865792772654d01206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f7572ac20696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e18426f6e64656400010405000004000c0101204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e00d02054574f582d4e4f54453a20534146452073696e636520604163636f756e7449646020697320612073656375726520686173682e404d696e4e6f6d696e61746f72426f6e64010018400000000000000000000000000000000004210120546865206d696e696d756d2061637469766520626f6e6420746f206265636f6d6520616e64206d61696e7461696e2074686520726f6c65206f662061206e6f6d696e61746f722e404d696e56616c696461746f72426f6e64010018400000000000000000000000000000000004210120546865206d696e696d756d2061637469766520626f6e6420746f206265636f6d6520616e64206d61696e7461696e2074686520726f6c65206f6620612076616c696461746f722e484d696e696d756d4163746976655374616b65010018400000000000000000000000000000000004110120546865206d696e696d756d20616374697665206e6f6d696e61746f72207374616b65206f6620746865206c617374207375636365737366756c20656c656374696f6e2e344d696e436f6d6d697373696f6e01009410000000000ce820546865206d696e696d756d20616d6f756e74206f6620636f6d6d697373696f6e20746861742076616c696461746f72732063616e207365742e00802049662073657420746f206030602c206e6f206c696d6974206578697374732e184c65646765720001040200a1090400104501204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e007501204e6f74653a20416c6c2074686520726561647320616e64206d75746174696f6e7320746f20746869732073746f72616765202a4d5553542a20626520646f6e65207468726f75676820746865206d6574686f6473206578706f736564e8206279205b605374616b696e674c6564676572605d20746f20656e73757265206461746120616e64206c6f636b20636f6e73697374656e63792e14506179656500010405009004000ce42057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e00d02054574f582d4e4f54453a20534146452073696e636520604163636f756e7449646020697320612073656375726520686173682e2856616c696461746f72730101040500980800000c450120546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e00d02054574f582d4e4f54453a20534146452073696e636520604163636f756e7449646020697320612073656375726520686173682e50436f756e746572466f7256616c696461746f7273010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d6170484d617856616c696461746f7273436f756e7400001004000c310120546865206d6178696d756d2076616c696461746f7220636f756e74206265666f72652077652073746f7020616c6c6f77696e67206e65772076616c696461746f727320746f206a6f696e2e00d0205768656e20746869732076616c7565206973206e6f74207365742c206e6f206c696d6974732061726520656e666f726365642e284e6f6d696e61746f72730001040500a90904004c750120546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f207468656972206e6f6d696e6174696f6e20707265666572656e6365732c206e616d656c79207468652076616c696461746f72732074686174582074686579207769736820746f20737570706f72742e003901204e6f7465207468617420746865206b657973206f6620746869732073746f72616765206d6170206d69676874206265636f6d65206e6f6e2d6465636f6461626c6520696e2063617365207468652d01206163636f756e742773205b604e6f6d696e6174696f6e7351756f74613a3a4d61784e6f6d696e6174696f6e73605d20636f6e66696775726174696f6e206973206465637265617365642e9020496e2074686973207261726520636173652c207468657365206e6f6d696e61746f7273650120617265207374696c6c206578697374656e7420696e2073746f726167652c207468656972206b657920697320636f727265637420616e64207265747269657661626c652028692e652e2060636f6e7461696e735f6b657960710120696e6469636174657320746861742074686579206578697374292c206275742074686569722076616c75652063616e6e6f74206265206465636f6465642e205468657265666f72652c20746865206e6f6e2d6465636f6461626c656d01206e6f6d696e61746f72732077696c6c206566666563746976656c79206e6f742d65786973742c20756e74696c20746865792072652d7375626d697420746865697220707265666572656e6365732073756368207468617420697401012069732077697468696e2074686520626f756e6473206f6620746865206e65776c79207365742060436f6e6669673a3a4d61784e6f6d696e6174696f6e73602e006101205468697320696d706c696573207468617420603a3a697465725f6b65797328292e636f756e7428296020616e6420603a3a6974657228292e636f756e74282960206d696768742072657475726e20646966666572656e746d012076616c75657320666f722074686973206d61702e204d6f72656f7665722c20746865206d61696e20603a3a636f756e7428296020697320616c69676e656420776974682074686520666f726d65722c206e616d656c79207468656c206e756d626572206f66206b65797320746861742065786973742e006d01204c6173746c792c20696620616e79206f6620746865206e6f6d696e61746f7273206265636f6d65206e6f6e2d6465636f6461626c652c20746865792063616e206265206368696c6c656420696d6d6564696174656c7920766961b8205b6043616c6c3a3a6368696c6c5f6f74686572605d20646973706174636861626c6520627920616e796f6e652e00d02054574f582d4e4f54453a20534146452073696e636520604163636f756e7449646020697320612073656375726520686173682e50436f756e746572466f724e6f6d696e61746f7273010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d6170484d61784e6f6d696e61746f7273436f756e7400001004000c310120546865206d6178696d756d206e6f6d696e61746f7220636f756e74206265666f72652077652073746f7020616c6c6f77696e67206e65772076616c696461746f727320746f206a6f696e2e00d0205768656e20746869732076616c7565206973206e6f74207365742c206e6f206c696d6974732061726520656e666f726365642e2843757272656e744572610000100400105c205468652063757272656e742065726120696e6465782e006501205468697320697320746865206c617465737420706c616e6e6564206572612c20646570656e64696e67206f6e20686f77207468652053657373696f6e2070616c6c657420717565756573207468652076616c696461746f7280207365742c206974206d6967687420626520616374697665206f72206e6f742e244163746976654572610000b109040010d820546865206163746976652065726120696e666f726d6174696f6e2c20697420686f6c647320696e64657820616e642073746172742e0059012054686520616374697665206572612069732074686520657261206265696e672063757272656e746c792072657761726465642e2056616c696461746f7220736574206f66207468697320657261206d757374206265ac20657175616c20746f205b6053657373696f6e496e746572666163653a3a76616c696461746f7273605d2e5445726173537461727453657373696f6e496e6465780001040510100400105501205468652073657373696f6e20696e646578206174207768696368207468652065726120737461727420666f7220746865206c617374205b60436f6e6669673a3a486973746f72794465707468605d20657261732e006101204e6f74653a205468697320747261636b7320746865207374617274696e672073657373696f6e2028692e652e2073657373696f6e20696e646578207768656e20657261207374617274206265696e672061637469766529f020666f7220746865206572617320696e20605b43757272656e74457261202d20484953544f52595f44455054482c2043757272656e744572615d602e2c457261735374616b6572730101080505b909d80c0000002078204578706f73757265206f662076616c696461746f72206174206572612e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00cc2049732069742072656d6f766564206166746572205b60436f6e6669673a3a486973746f72794465707468605d20657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e002901204e6f74653a20446570726563617465642073696e6365207631342e205573652060457261496e666f6020696e737465616420746f20776f726b2077697468206578706f73757265732e4c457261735374616b6572734f766572766965770001080505b909bd09040030b82053756d6d617279206f662076616c696461746f72206578706f73757265206174206120676976656e206572612e007101205468697320636f6e7461696e732074686520746f74616c207374616b6520696e20737570706f7274206f66207468652076616c696461746f7220616e64207468656972206f776e207374616b652e20496e206164646974696f6e2c75012069742063616e20616c736f206265207573656420746f2067657420746865206e756d626572206f66206e6f6d696e61746f7273206261636b696e6720746869732076616c696461746f7220616e6420746865206e756d626572206f666901206578706f73757265207061676573207468657920617265206469766964656420696e746f2e20546865207061676520636f756e742069732075736566756c20746f2064657465726d696e6520746865206e756d626572206f66ac207061676573206f6620726577617264732074686174206e6565647320746f20626520636c61696d65642e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742eac2053686f756c64206f6e6c79206265206163636573736564207468726f7567682060457261496e666f602e00cc2049732069742072656d6f766564206166746572205b60436f6e6669673a3a486973746f72794465707468605d20657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206f766572766965772069732072657475726e65642e48457261735374616b657273436c69707065640101080505b909d80c000000409820436c6970706564204578706f73757265206f662076616c696461746f72206174206572612e006501204e6f74653a205468697320697320646570726563617465642c2073686f756c64206265207573656420617320726561642d6f6e6c7920616e642077696c6c2062652072656d6f76656420696e20746865206675747572652e3101204e657720604578706f737572656073206172652073746f72656420696e2061207061676564206d616e6e657220696e2060457261735374616b65727350616765646020696e73746561642e00590120546869732069732073696d696c617220746f205b60457261735374616b657273605d20627574206e756d626572206f66206e6f6d696e61746f7273206578706f736564206973207265647563656420746f20746865a82060543a3a4d61784578706f737572655061676553697a65602062696767657374207374616b6572732e1d0120284e6f74653a20746865206669656c642060746f74616c6020616e6420606f776e60206f6620746865206578706f737572652072656d61696e7320756e6368616e676564292ef42054686973206973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e005d012054686973206973206b657965642066697374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00cc2049742069732072656d6f766564206166746572205b60436f6e6669673a3a486973746f72794465707468605d20657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e002901204e6f74653a20446570726563617465642073696e6365207631342e205573652060457261496e666f6020696e737465616420746f20776f726b2077697468206578706f73757265732e40457261735374616b657273506167656400010c050505c109c509040018c020506167696e61746564206578706f73757265206f6620612076616c696461746f7220617420676976656e206572612e0071012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e2c207468656e207374617368206163636f756e7420616e642066696e616c6c79d42074686520706167652e2053686f756c64206f6e6c79206265206163636573736564207468726f7567682060457261496e666f602e00d4205468697320697320636c6561726564206166746572205b60436f6e6669673a3a486973746f72794465707468605d20657261732e38436c61696d6564526577617264730101080505b909e501040018dc20486973746f7279206f6620636c61696d656420706167656420726577617264732062792065726120616e642076616c696461746f722e0069012054686973206973206b657965642062792065726120616e642076616c696461746f72207374617368207768696368206d61707320746f2074686520736574206f66207061676520696e6465786573207768696368206861766538206265656e20636c61696d65642e00cc2049742069732072656d6f766564206166746572205b60436f6e6669673a3a486973746f72794465707468605d20657261732e484572617356616c696461746f7250726566730101080505b909980800001411012053696d696c617220746f2060457261735374616b657273602c207468697320686f6c64732074686520707265666572656e636573206f662076616c696461746f72732e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00cc2049732069742072656d6f766564206166746572205b60436f6e6669673a3a486973746f72794465707468605d20657261732e4c4572617356616c696461746f7252657761726400010405101804000c2d012054686520746f74616c2076616c696461746f7220657261207061796f757420666f7220746865206c617374205b60436f6e6669673a3a486973746f72794465707468605d20657261732e0021012045726173207468617420686176656e27742066696e697368656420796574206f7220686173206265656e2072656d6f76656420646f65736e27742068617665207265776172642e4045726173526577617264506f696e74730101040510c90914000000000008d0205265776172647320666f7220746865206c617374205b60436f6e6669673a3a486973746f72794465707468605d20657261732e250120496620726577617264206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207265776172642069732072657475726e65642e3845726173546f74616c5374616b6501010405101840000000000000000000000000000000000811012054686520746f74616c20616d6f756e74207374616b656420666f7220746865206c617374205b60436f6e6669673a3a486973746f72794465707468605d20657261732e1d0120496620746f74616c206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207374616b652069732072657475726e65642e20466f7263654572610100a004000454204d6f6465206f662065726120666f7263696e672e4c536c6173685265776172644672616374696f6e01009410000000000cf8205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e00e4205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e4c43616e63656c6564536c6173685061796f757401001840000000000000000000000000000000000815012054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e7420776869636820776173ec2063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e40556e6170706c696564536c61736865730101040510d909040004c420416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e28426f6e646564457261730100cd0804001025012041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e00c8204d75737420636f6e7461696e7320696e666f726d6174696f6e20666f72206572617320666f72207468652072616e67653abc20605b6163746976655f657261202d20626f756e64696e675f6475726174696f6e3b206163746976655f6572615d604c56616c696461746f72536c617368496e4572610001080505b909e109040008450120416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e7020616e6420736c6173682076616c7565206f6620746865206572612e4c4e6f6d696e61746f72536c617368496e4572610001080505b90918040004610120416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e34536c617368696e675370616e730001040500e5090400048c20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e245370616e536c61736801010405d509e909800000000000000000000000000000000000000000000000000000000000000000083d01205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2cb82061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e5443757272656e74506c616e6e656453657373696f6e01001010000000000ce820546865206c61737420706c616e6e65642073657373696f6e207363686564756c6564206279207468652073657373696f6e2070616c6c65742e0071012054686973206973206261736963616c6c7920696e2073796e632077697468207468652063616c6c20746f205b6070616c6c65745f73657373696f6e3a3a53657373696f6e4d616e616765723a3a6e65775f73657373696f6e605d2e4c4f6666656e64696e6756616c696461746f72730100ed09040024690120496e6469636573206f662076616c696461746f727320746861742068617665206f6666656e64656420696e20746865206163746976652065726120616e6420776865746865722074686579206172652063757272656e746c79282064697361626c65642e00690120546869732076616c75652073686f756c642062652061207375706572736574206f662064697361626c65642076616c696461746f72732073696e6365206e6f7420616c6c206f6666656e636573206c65616420746f2074686571012076616c696461746f72206265696e672064697361626c65642028696620746865726520776173206e6f20736c617368292e2054686973206973206e656564656420746f20747261636b207468652070657263656e74616765206f6649012076616c696461746f727320746861742068617665206f6666656e64656420696e207468652063757272656e74206572612c20656e737572696e672061206e65772065726120697320666f72636564206966750120604f6666656e64696e6756616c696461746f72735468726573686f6c646020697320726561636865642e205468652076656320697320616c77617973206b65707420736f7274656420736f20746861742077652063616e2066696e6471012077686574686572206120676976656e2076616c696461746f72206861732070726576696f75736c79206f6666656e646564207573696e672062696e617279207365617263682e204974206765747320636c6561726564207768656e38207468652065726120656e64732e384368696c6c5468726573686f6c640000e10104000c510120546865207468726573686f6c6420666f72207768656e2075736572732063616e2073746172742063616c6c696e6720606368696c6c5f6f746865726020666f72206f746865722076616c696461746f7273202f5901206e6f6d696e61746f72732e20546865207468726573686f6c6420697320636f6d706172656420746f207468652061637475616c206e756d626572206f662076616c696461746f7273202f206e6f6d696e61746f72732901202860436f756e74466f722a602920696e207468652073797374656d20636f6d706172656420746f2074686520636f6e66696775726564206d61782028604d61782a436f756e7460292e01d901018c1830486973746f72794465707468101054000000508c204e756d626572206f66206572617320746f206b65657020696e20686973746f72792e00e820466f6c6c6f77696e6720696e666f726d6174696f6e206973206b65707420666f72206572617320696e20605b63757272656e745f657261202d090120486973746f727944657074682c2063757272656e745f6572615d603a2060457261735374616b657273602c2060457261735374616b657273436c6970706564602c050120604572617356616c696461746f725072656673602c20604572617356616c696461746f72526577617264602c206045726173526577617264506f696e7473602c4501206045726173546f74616c5374616b65602c206045726173537461727453657373696f6e496e646578602c2060436c61696d656452657761726473602c2060457261735374616b6572735061676564602c5c2060457261735374616b6572734f76657276696577602e00e4204d757374206265206d6f7265207468616e20746865206e756d626572206f6620657261732064656c617965642062792073657373696f6e2ef820492e652e2061637469766520657261206d75737420616c7761797320626520696e20686973746f72792e20492e652e20606163746976655f657261203ec42063757272656e745f657261202d20686973746f72795f646570746860206d7573742062652067756172616e746565642e001101204966206d6967726174696e6720616e206578697374696e672070616c6c65742066726f6d2073746f726167652076616c756520746f20636f6e6669672076616c75652cec20746869732073686f756c642062652073657420746f2073616d652076616c7565206f72206772656174657220617320696e2073746f726167652e001501204e6f74653a2060486973746f727944657074686020697320757365642061732074686520757070657220626f756e6420666f72207468652060426f756e646564566563602d01206974656d20605374616b696e674c65646765722e6c65676163795f636c61696d65645f72657761726473602e2053657474696e6720746869732076616c7565206c6f776572207468616ed820746865206578697374696e672076616c75652063616e206c65616420746f20696e636f6e73697374656e6369657320696e20746865150120605374616b696e674c65646765726020616e642077696c6c206e65656420746f2062652068616e646c65642070726f7065726c7920696e2061206d6967726174696f6e2ef020546865207465737420607265647563696e675f686973746f72795f64657074685f616272757074602073686f77732074686973206566666563742e3853657373696f6e735065724572611010060000000470204e756d626572206f662073657373696f6e7320706572206572612e3c426f6e64696e674475726174696f6e10101c00000004e4204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e48536c61736844656665724475726174696f6e10101b000000100101204e756d626572206f662065726173207468617420736c6173686573206172652064656665727265642062792c20616674657220636f6d7075746174696f6e2e000d0120546869732073686f756c64206265206c657373207468616e2074686520626f6e64696e67206475726174696f6e2e2053657420746f203020696620736c617368657315012073686f756c64206265206170706c69656420696d6d6564696174656c792c20776974686f7574206f70706f7274756e69747920666f7220696e74657276656e74696f6e2e4c4d61784578706f737572655061676553697a651010000200002cb020546865206d6178696d756d2073697a65206f6620656163682060543a3a4578706f7375726550616765602e00290120416e20604578706f737572655061676560206973207765616b6c7920626f756e64656420746f2061206d6178696d756d206f6620604d61784578706f737572655061676553697a656030206e6f6d696e61746f72732e00210120466f72206f6c646572206e6f6e2d7061676564206578706f737572652c206120726577617264207061796f757420776173207265737472696374656420746f2074686520746f70210120604d61784578706f737572655061676553697a6560206e6f6d696e61746f72732e205468697320697320746f206c696d69742074686520692f6f20636f737420666f722074686548206e6f6d696e61746f72207061796f75742e005901204e6f74653a20604d61784578706f737572655061676553697a6560206973207573656420746f20626f756e642060436c61696d6564526577617264736020616e6420697320756e7361666520746f207265647563659020776974686f75742068616e646c696e6720697420696e2061206d6967726174696f6e2e484d6178556e6c6f636b696e674368756e6b7310102000000028050120546865206d6178696d756d206e756d626572206f662060756e6c6f636b696e6760206368756e6b732061205b605374616b696e674c6564676572605d2063616e090120686176652e204566666563746976656c792064657465726d696e657320686f77206d616e7920756e6971756520657261732061207374616b6572206d61792062653820756e626f6e64696e6720696e2e00f8204e6f74653a20604d6178556e6c6f636b696e674368756e6b736020697320757365642061732074686520757070657220626f756e6420666f722074686501012060426f756e64656456656360206974656d20605374616b696e674c65646765722e756e6c6f636b696e67602e2053657474696e6720746869732076616c75650501206c6f776572207468616e20746865206578697374696e672076616c75652063616e206c65616420746f20696e636f6e73697374656e6369657320696e20746865090120605374616b696e674c65646765726020616e642077696c6c206e65656420746f2062652068616e646c65642070726f7065726c7920696e20612072756e74696d650501206d6967726174696f6e2e20546865207465737420607265647563696e675f6d61785f756e6c6f636b696e675f6368756e6b735f616272757074602073686f7773342074686973206566666563742e01f50906204f6666656e63657301204f6666656e636573081c5265706f7274730001040530f909040004490120546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e58436f6e63757272656e745265706f727473496e6465780101080505fd09c5030400042901204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e0001a400000728486973746f726963616c0128486973746f726963616c0848486973746f726963616c53657373696f6e730001040510010a0400045d01204d617070696e672066726f6d20686973746f726963616c2073657373696f6e20696e646963657320746f2073657373696f6e2d6461746120726f6f74206861736820616e642076616c696461746f7220636f756e742e2c53746f72656452616e67650000a503040004e4205468652072616e6765206f6620686973746f726963616c2073657373696f6e732077652073746f72652e205b66697273742c206c6173742900000000221c53657373696f6e011c53657373696f6e1c2856616c696461746f72730100d1010400047c205468652063757272656e7420736574206f662076616c696461746f72732e3043757272656e74496e646578010010100000000004782043757272656e7420696e646578206f66207468652073657373696f6e2e345175657565644368616e676564010078040008390120547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f7273a420686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e285175657565644b6579730100050a0400083d012054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b657973e02077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e4844697361626c656456616c696461746f72730100e5010400148020496e6469636573206f662064697361626c65642076616c696461746f72732e003d01205468652076656320697320616c77617973206b65707420736f7274656420736f20746861742077652063616e2066696e642077686574686572206120676976656e2076616c696461746f722069733d012064697361626c6564207573696e672062696e617279207365617263682e204974206765747320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e73642061206e657720736574206f66206964656e7469746965732e204e6578744b657973000104050019020400049c20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e204b65794f776e6572000104050d0a00040004090120546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e01150201ac0001150a081c4772616e647061011c4772616e6470611c1453746174650100190a04000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500001d0a040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000010040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c65640000a5030400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e74536574496401002c200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e000104052c1004002859012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e0045012054686973206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e2070726f6f66732e20416e2065717569766f636174696f6e2070726f6f66206d7573744d0120636f6e7461696e732061206b65792d6f776e6572736869702070726f6f6620666f72206120676976656e2073657373696f6e2c207468657265666f7265207765206e65656420612077617920746f20746965450120746f6765746865722073657373696f6e7320616e64204752414e44504120736574206964732c20692e652e207765206e65656420746f2076616c6964617465207468617420612076616c696461746f7241012077617320746865206f776e6572206f66206120676976656e206b6579206f6e206120676976656e2073657373696f6e2c20616e642077686174207468652061637469766520736574204944207761735420647572696e6720746861742073657373696f6e2e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e2c417574686f7269746965730100210a04000484205468652063757272656e74206c697374206f6620617574686f7269746965732e01350201b00c384d6178417574686f7269746965731010a0860100045c204d617820417574686f72697469657320696e20757365344d61784e6f6d696e61746f727310100002000004d420546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320666f7220656163682076616c696461746f722e584d6178536574496453657373696f6e456e74726965732c20a80000000000000018390120546865206d6178696d756d206e756d626572206f6620656e747269657320746f206b65657020696e207468652073657420696420746f2073657373696f6e20696e646578206d617070696e672e0031012053696e6365207468652060536574496453657373696f6e60206d6170206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e73207468697329012076616c75652073686f756c642072656c61746520746f2074686520626f6e64696e67206475726174696f6e206f66207768617465766572207374616b696e672073797374656d2069733501206265696e6720757365642028696620616e79292e2049662065717569766f636174696f6e2068616e646c696e67206973206e6f7420656e61626c6564207468656e20746869732076616c7565342063616e206265207a65726f2e01250a0a48417574686f72697479446973636f766572790148417574686f72697479446973636f7665727908104b6579730100290a0400048c204b657973206f66207468652063757272656e7420617574686f72697479207365742e204e6578744b6579730100290a04000480204b657973206f6620746865206e65787420617574686f72697479207365742e000000000c20547265617375727901205472656173757279183450726f706f73616c436f756e74010010100000000004a4204e756d626572206f662070726f706f73616c7320746861742068617665206265656e206d6164652e2450726f706f73616c730001040510310a0400047c2050726f706f73616c7320746861742068617665206265656e206d6164652e2c4465616374697661746564010018400000000000000000000000000000000004f02054686520616d6f756e7420776869636820686173206265656e207265706f7274656420617320696e61637469766520746f2043757272656e63792e24417070726f76616c730100350a040004f82050726f706f73616c20696e646963657320746861742068617665206265656e20617070726f76656420627574206e6f742079657420617761726465642e285370656e64436f756e74010010100000000004a42054686520636f756e74206f66207370656e647320746861742068617665206265656e206d6164652e185370656e64730001040510390a040004d0205370656e647320746861742068617665206265656e20617070726f76656420616e64206265696e672070726f6365737365642e01650201e8203050726f706f73616c426f6e64410a1050c30000085501204672616374696f6e206f6620612070726f706f73616c27732076616c756520746861742073686f756c6420626520626f6e64656420696e206f7264657220746f20706c616365207468652070726f706f73616c2e110120416e2061636365707465642070726f706f73616c2067657473207468657365206261636b2e20412072656a65637465642070726f706f73616c20646f6573206e6f742e4c50726f706f73616c426f6e644d696e696d756d184010086e389b0000000000000000000000044901204d696e696d756d20616d6f756e74206f662066756e647320746861742073686f756c6420626520706c6163656420696e2061206465706f73697420666f72206d616b696e6720612070726f706f73616c2e4c50726f706f73616c426f6e644d6178696d756d0102440108147e05511e00000000000000000000044901204d6178696d756d20616d6f756e74206f662066756e647320746861742073686f756c6420626520706c6163656420696e2061206465706f73697420666f72206d616b696e6720612070726f706f73616c2e2c5370656e64506572696f64101080510100048820506572696f64206265747765656e2073756363657373697665207370656e64732e104275726e410a10d00700000411012050657263656e74616765206f662073706172652066756e64732028696620616e7929207468617420617265206275726e7420706572207370656e6420706572696f642e2050616c6c65744964450a2070792f74727372790419012054686520747265617375727927732070616c6c65742069642c207573656420666f72206465726976696e672069747320736f7665726569676e206163636f756e742049442e304d6178417070726f76616c731010640000000c150120546865206d6178696d756d206e756d626572206f6620617070726f76616c7320746861742063616e207761697420696e20746865207370656e64696e672071756575652e004d01204e4f54453a205468697320706172616d6574657220697320616c736f20757365642077697468696e2074686520426f756e746965732050616c6c657420657874656e73696f6e20696620656e61626c65642e305061796f7574506572696f641010809706000419012054686520706572696f6420647572696e6720776869636820616e20617070726f766564207472656173757279207370656e642068617320746f20626520636c61696d65642e01490a1240436f6e76696374696f6e566f74696e670140436f6e76696374696f6e566f74696e670824566f74696e67466f7201010805054d0a510ad800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008750120416c6c20766f74696e6720666f72206120706172746963756c617220766f74657220696e206120706172746963756c617220766f74696e6720636c6173732e2057652073746f7265207468652062616c616e636520666f72207468659c206e756d626572206f6620766f74657320746861742077652068617665207265636f726465642e34436c6173734c6f636b73466f720101040500710a04000c69012054686520766f74696e6720636c617373657320776869636820686176652061206e6f6e2d7a65726f206c6f636b20726571756972656d656e7420616e6420746865206c6f636b20616d6f756e747320776869636820746865796d0120726571756972652e205468652061637475616c20616d6f756e74206c6f636b6564206f6e20626568616c66206f6620746869732070616c6c65742073686f756c6420616c7761797320626520746865206d6178696d756d206f662c2074686973206c6973742e016d0201710108204d6178566f74657310100002000010f020546865206d6178696d756d206e756d626572206f6620636f6e63757272656e7420766f74657320616e206163636f756e74206d617920686176652e00550120416c736f207573656420746f20636f6d70757465207765696768742c20616e206f7665726c79206c617267652076616c75652063616e206c65616420746f2065787472696e736963732077697468206c61726765c02077656967687420657374696d6174696f6e3a20736565206064656c65676174656020666f7220696e7374616e63652e44566f74654c6f636b696e67506572696f641010c0890100109020546865206d696e696d756d20706572696f64206f6620766f7465206c6f636b696e672e0065012049742073686f756c64206265206e6f2073686f72746572207468616e20656e6163746d656e7420706572696f6420746f20656e73757265207468617420696e207468652063617365206f6620616e20617070726f76616c2c49012074686f7365207375636365737366756c20766f7465727320617265206c6f636b656420696e746f2074686520636f6e73657175656e636573207468617420746865697220766f74657320656e7461696c2e017d0a14245265666572656e646101245265666572656e6461143c5265666572656e64756d436f756e74010010100000000004310120546865206e6578742066726565207265666572656e64756d20696e6465782c20616b6120746865206e756d626572206f66207265666572656e6461207374617274656420736f206661722e445265666572656e64756d496e666f466f720001040210810a040004b420496e666f726d6174696f6e20636f6e6365726e696e6720616e7920676976656e207265666572656e64756d2e28547261636b5175657565010104057901a10a0400105d012054686520736f72746564206c697374206f66207265666572656e646120726561647920746f206265206465636964656420627574206e6f7420796574206265696e6720646563696465642c206f7264657265642062797c20636f6e76696374696f6e2d776569676874656420617070726f76616c732e00410120546869732073686f756c6420626520656d70747920696620604465636964696e67436f756e7460206973206c657373207468616e2060547261636b496e666f3a3a6d61785f6465636964696e67602e344465636964696e67436f756e7401010405790110100000000004c420546865206e756d626572206f66207265666572656e6461206265696e6720646563696465642063757272656e746c792e284d657461646174614f66000104021030040018050120546865206d6574616461746120697320612067656e6572616c20696e666f726d6174696f6e20636f6e6365726e696e6720746865207265666572656e64756d2e490120546865206048617368602072656665727320746f2074686520707265696d616765206f66207468652060507265696d61676573602070726f76696465722077686963682063616e2062652061204a534f4e882064756d70206f7220495046532068617368206f662061204a534f4e2066696c652e00750120436f6e73696465722061206761726261676520636f6c6c656374696f6e20666f722061206d65746164617461206f662066696e6973686564207265666572656e64756d7320746f2060756e7265717565737460202872656d6f76652944206c6172676520707265696d616765732e01810201750114445375626d697373696f6e4465706f7369741840554dd2c207000000000000000000000004350120546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f722061207075626c6963207265666572656e64756d2070726f706f73616c2e244d617851756575656410106400000004e4204d6178696d756d2073697a65206f6620746865207265666572656e64756d20717565756520666f7220612073696e676c6520747261636b2e44556e6465636964696e6754696d656f757410108013030008550120546865206e756d626572206f6620626c6f636b73206166746572207375626d697373696f6e20746861742061207265666572656e64756d206d75737420626567696e206265696e6720646563696465642062792ee4204f6e63652074686973207061737365732c207468656e20616e796f6e65206d61792063616e63656c20746865207265666572656e64756d2e34416c61726d496e74657276616c1010010000000c5d01205175616e74697a6174696f6e206c6576656c20666f7220746865207265666572656e64756d2077616b657570207363686564756c65722e204120686967686572206e756d6265722077696c6c20726573756c7420696e5d012066657765722073746f726167652072656164732f777269746573206e656564656420666f7220736d616c6c657220766f746572732c2062757420616c736f20726573756c7420696e2064656c61797320746f207468655501206175746f6d61746963207265666572656e64756d20737461747573206368616e6765732e204578706c6963697420736572766963696e6720696e737472756374696f6e732061726520756e61666665637465642e18547261636b73ad0a191740000010726f6f740100000020d33f25a6d70b000000000000000000b00400008013030040380000403800000290d73e0d000000005743de13000000005443de13000000000000ca9a3b000000000065cd1d01004877686974656c69737465645f63616c6c65726400000050c8ec362a2f010000000000000000002c01000080130300640000006400000002ec972510000000007b573c170000000042392f1200000000020e00840000000000d6e61f0100000000396279020000000002003c776973685f666f725f6368616e67650a000000a090d96d545e02000000000000000000b00400008013030040380000640000000290d73e0d000000005743de13000000005443de13000000000000ca9a3b000000000065cd1d0a00347374616b696e675f61646d696e0a0000002864761b959700000000000000000000b004000080130300080700006400000000c94330240065cd1d00ca9a3b025d6f780000000000e82eed00000000008c6889ffffffffff0b00247472656173757265720a00000008147e05511e00000000000000000000b00400008013030080700000403800000290d73e0d000000005743de13000000005443de13000000000000ca9a3b000000000065cd1d0c002c6c656173655f61646d696e0a0000002864761b959700000000000000000000b004000080130300080700006400000000c94330240065cd1d00ca9a3b025d6f780000000000e82eed00000000008c6889ffffffffff0d004066656c6c6f77736869705f61646d696e0a0000002864761b959700000000000000000000b004000080130300080700006400000000c94330240065cd1d00ca9a3b025d6f780000000000e82eed00000000008c6889ffffffffff0e003467656e6572616c5f61646d696e0a0000002864761b959700000000000000000000b00400008013030008070000640000000290d73e0d000000005743de13000000005443de13000000000259a2f40200000000a3296b05000000002e6b4afdffffffff0f003461756374696f6e5f61646d696e0a0000002864761b959700000000000000000000b00400008013030008070000640000000290d73e0d000000005743de13000000005443de13000000000259a2f40200000000a3296b05000000002e6b4afdffffffff1400507265666572656e64756d5f63616e63656c6c6572e803000050c8ec362a2f01000000000000000000b0040000c0890100080700006400000000c94330240065cd1d00ca9a3b025d6f780000000000e82eed00000000008c6889ffffffffff1500447265666572656e64756d5f6b696c6c6572e803000090e99f12d3eb05000000000000000000b004000080130300080700006400000000c94330240065cd1d00ca9a3b025d6f780000000000e82eed00000000008c6889ffffffffff1e0030736d616c6c5f746970706572c8000000554dd2c20700000000000000000000000a000000c0890100640000000a00000000499149150065cd1d00ca9a3b02f9ba1800000000002a4d3100000000006b59e7ffffffffff1f00286269675f746970706572640000005205379c4d000000000000000000000064000000c0890100580200006400000000499149150065cd1d00ca9a3b02694f3f000000000035967d0000000000e534c1ffffffffff200034736d616c6c5f7370656e646572320000003435261a0803000000000000000000006009000080130300201c00004038000000c94330240065cd1d00ca9a3b025d6f780000000000e82eed00000000008c6889ffffffffff2100386d656469756d5f7370656e64657232000000686a4c3410060000000000000000000060090000801303004038000040380000005b01f6300065cd1d00ca9a3b021161db0000000000bfd1aa010000000020972affffffffff22002c6269675f7370656e64657232000000d0d49868200c00000000000000000000600900008013030080700000403800000000ca9a3b0065cd1d00ca9a3b02413cb00100000000755d34030000000045d165feffffffff04e020496e666f726d6174696f6e20636f6e6365726e696e672074686520646966666572656e74207265666572656e64756d20747261636b732e01c50a155046656c6c6f7773686970436f6c6c656374697665015046656c6c6f7773686970436f6c6c656374697665182c4d656d626572436f756e7401010405790110100000000008690120546865206e756d626572206f66206d656d6265727320696e2074686520636f6c6c6563746976652077686f2068617665206174206c65617374207468652072616e6b206163636f7264696e6720746f2074686520696e64657830206f6620746865207665632e1c4d656d626572730001040500c90a0400049c205468652063757272656e74206d656d62657273206f662074686520636f6c6c6563746976652e244964546f496e6465780001080505cd0a1004000461012054686520696e646578206f6620656163682072616e6b732773206d656d62657220696e746f207468652067726f7570206f66206d656d626572732077686f2068617665206174206c6561737420746861742072616e6b2e24496e646578546f49640001080505d10a000400085d0120546865206d656d6265727320696e2074686520636f6c6c65637469766520627920696e6465782e20416c6c20696e646963657320696e207468652072616e67652060302e2e4d656d626572436f756e74602077696c6c65012072657475726e2060536f6d65602c20686f77657665722061206d656d626572277320696e646578206973206e6f742067756172616e7465656420746f2072656d61696e20756e6368616e676564206f7665722074696d652e18566f74696e670001080205b909f507040004b420566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e34566f74696e67436c65616e75700001040210d50a04000001a90201f1070001d90a164c46656c6c6f77736869705265666572656e6461014c46656c6c6f77736869705265666572656e6461143c5265666572656e64756d436f756e74010010100000000004310120546865206e6578742066726565207265666572656e64756d20696e6465782c20616b6120746865206e756d626572206f66207265666572656e6461207374617274656420736f206661722e445265666572656e64756d496e666f466f720001040210dd0a040004b420496e666f726d6174696f6e20636f6e6365726e696e6720616e7920676976656e207265666572656e64756d2e28547261636b5175657565010104057901e50a0400105d012054686520736f72746564206c697374206f66207265666572656e646120726561647920746f206265206465636964656420627574206e6f7420796574206265696e6720646563696465642c206f7264657265642062797c20636f6e76696374696f6e2d776569676874656420617070726f76616c732e00410120546869732073686f756c6420626520656d70747920696620604465636964696e67436f756e7460206973206c657373207468616e2060547261636b496e666f3a3a6d61785f6465636964696e67602e344465636964696e67436f756e7401010405790110100000000004c420546865206e756d626572206f66207265666572656e6461206265696e6720646563696465642063757272656e746c792e284d657461646174614f66000104021030040018050120546865206d6574616461746120697320612067656e6572616c20696e666f726d6174696f6e20636f6e6365726e696e6720746865207265666572656e64756d2e490120546865206048617368602072656665727320746f2074686520707265696d616765206f66207468652060507265696d61676573602070726f76696465722077686963682063616e2062652061204a534f4e882064756d70206f7220495046532068617368206f662061204a534f4e2066696c652e00750120436f6e73696465722061206761726261676520636f6c6c656374696f6e20666f722061206d65746164617461206f662066696e6973686564207265666572656e64756d7320746f2060756e7265717565737460202872656d6f76652944206c6172676520707265696d616765732e01ad0201fd0714445375626d697373696f6e4465706f73697418400000000000000000000000000000000004350120546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f722061207075626c6963207265666572656e64756d2070726f706f73616c2e244d617851756575656410106400000004e4204d6178696d756d2073697a65206f6620746865207265666572656e64756d20717565756520666f7220612073696e676c6520747261636b2e44556e6465636964696e6754696d656f75741010c089010008550120546865206e756d626572206f6620626c6f636b73206166746572207375626d697373696f6e20746861742061207265666572656e64756d206d75737420626567696e206265696e6720646563696465642062792ee4204f6e63652074686973207061737365732c207468656e20616e796f6e65206d61792063616e63656c20746865207265666572656e64756d2e34416c61726d496e74657276616c1010010000000c5d01205175616e74697a6174696f6e206c6576656c20666f7220746865207265666572656e64756d2077616b657570207363686564756c65722e204120686967686572206e756d6265722077696c6c20726573756c7420696e5d012066657765722073746f726167652072656164732f777269746573206e656564656420666f7220736d616c6c657220766f746572732c2062757420616c736f20726573756c7420696e2064656c61797320746f207468655501206175746f6d61746963207265666572656e64756d20737461747573206368616e6765732e204578706c6963697420736572766963696e6720696e737472756374696f6e732061726520756e61666665637465642e18547261636b73ad0acd0b2800002863616e646964617465730a0000003435261a0803000000000000000000002c010000c08901002c0100000a0000000000ca9a3b0065cd1d00ca9a3b0000ca9a3b000000000065cd1d01001c6d656d626572730a0000005205379c4d00000000000000000000002c010000c08901002c0100000a0000000000ca9a3b0065cd1d00ca9a3b0000ca9a3b000000000065cd1d02002c70726f66696369656e74730a0000005205379c4d00000000000000000000002c010000c08901002c0100000a0000000000ca9a3b0065cd1d00ca9a3b0000ca9a3b000000000065cd1d03001c66656c6c6f77730a0000005205379c4d00000000000000000000002c010000c08901002c0100000a0000000000ca9a3b0065cd1d00ca9a3b0000ca9a3b000000000065cd1d04003873656e696f722066656c6c6f77730a0000005205379c4d00000000000000000000002c010000c08901002c0100000a0000000000ca9a3b0065cd1d00ca9a3b0000ca9a3b000000000065cd1d05001c657870657274730a000000554dd2c20700000000000000000000002c010000c08901002c0100000a0000000000ca9a3b0065cd1d00ca9a3b0000ca9a3b000000000065cd1d06003873656e696f7220657870657274730a000000554dd2c20700000000000000000000002c010000c08901002c0100000a0000000000ca9a3b0065cd1d00ca9a3b0000ca9a3b000000000065cd1d07001c6d6173746572730a000000554dd2c20700000000000000000000002c010000c08901002c0100000a0000000000ca9a3b0065cd1d00ca9a3b0000ca9a3b000000000065cd1d08003873656e696f72206d6173746572730a000000554dd2c20700000000000000000000002c010000c08901002c0100000a0000000000ca9a3b0065cd1d00ca9a3b0000ca9a3b000000000065cd1d0900346772616e64206d6173746572730a000000554dd2c20700000000000000000000002c010000c08901002c0100000a0000000000ca9a3b0065cd1d00ca9a3b0000ca9a3b000000000065cd1d04e020496e666f726d6174696f6e20636f6e6365726e696e672074686520646966666572656e74207265666572656e64756d20747261636b732e01e90a171c4f726967696e7300000000002b2457686974656c697374012457686974656c697374043c57686974656c697374656443616c6c0001040530c50104000001b1020101080001ed0a2c18436c61696d730118436c61696d731418436c61696d7300010406c1021804000014546f74616c0100184000000000000000000000000000000000001c56657374696e6700010406c102c902040010782056657374696e67207363686564756c6520666f72206120636c61696d2e0d012046697273742062616c616e63652069732074686520746f74616c20616d6f756e7420746861742073686f756c642062652068656c6420666f722076657374696e672ee4205365636f6e642062616c616e636520697320686f77206d7563682073686f756c6420626520756e6c6f636b65642070657220626c6f636b2ecc2054686520626c6f636b206e756d626572206973207768656e207468652076657374696e672073686f756c642073746172742e1c5369676e696e6700010406c102d102040004c0205468652073746174656d656e74206b696e642074686174206d757374206265207369676e65642c20696620616e792e24507265636c61696d730001040600c1020400042d01205072652d636c61696d656420457468657265756d206163636f756e74732c20627920746865204163636f756e74204944207468617420746865792061726520636c61696d656420746f2e01b502011508041850726566697834807c506179204b534d7320746f20746865204b7573616d61206163636f756e743a0001f10a131c5574696c6974790001d502011908044c626174636865645f63616c6c735f6c696d69741010aa2a000004a820546865206c696d6974206f6e20746865206e756d626572206f6620626174636865642063616c6c732e01f50a18204964656e7469747901204964656e746974791c284964656e746974794f660001040500f90a040010690120496e666f726d6174696f6e20746861742069732070657274696e656e7420746f206964656e746966792074686520656e7469747920626568696e6420616e206163636f756e742e204669727374206974656d20697320746865e020726567697374726174696f6e2c207365636f6e6420697320746865206163636f756e742773207072696d61727920757365726e616d652e00c02054574f582d4e4f54453a204f4b20e2809520604163636f756e7449646020697320612073656375726520686173682e1c53757065724f66000104020071030400086101205468652073757065722d6964656e74697479206f6620616e20616c7465726e6174697665202273756222206964656e7469747920746f676574686572207769746820697473206e616d652c2077697468696e2074686174510120636f6e746578742e20496620746865206163636f756e74206973206e6f7420736f6d65206f74686572206163636f756e742773207375622d6964656e746974792c207468656e206a75737420604e6f6e65602e18537562734f660101040500110b44000000000000000000000000000000000014b820416c7465726e6174697665202273756222206964656e746974696573206f662074686973206163636f756e742e001d0120546865206669727374206974656d20697320746865206465706f7369742c20746865207365636f6e64206973206120766563746f72206f6620746865206163636f756e74732e00c02054574f582d4e4f54453a204f4b20e2809520604163636f756e7449646020697320612073656375726520686173682e28526567697374726172730100190b0400104d012054686520736574206f6620726567697374726172732e204e6f7420657870656374656420746f206765742076657279206269672061732063616e206f6e6c79206265206164646564207468726f7567682061a8207370656369616c206f726967696e20286c696b656c79206120636f756e63696c206d6f74696f6e292e0029012054686520696e64657820696e746f20746869732063616e206265206361737420746f2060526567697374726172496e6465786020746f2067657420612076616c69642076616c75652e4c557365726e616d65417574686f7269746965730001040500290b040004f42041206d6170206f6620746865206163636f756e74732077686f2061726520617574686f72697a656420746f206772616e7420757365726e616d65732e444163636f756e744f66557365726e616d65000104028903000400146d012052657665727365206c6f6f6b75702066726f6d2060757365726e616d656020746f2074686520604163636f756e7449646020746861742068617320726567697374657265642069742e205468652076616c75652073686f756c6465012062652061206b657920696e2074686520604964656e746974794f6660206d61702c20627574206974206d6179206e6f742069662074686520757365722068617320636c6561726564207468656972206964656e746974792e006901204d756c7469706c6520757365726e616d6573206d6179206d617020746f207468652073616d6520604163636f756e744964602c2062757420604964656e746974794f66602077696c6c206f6e6c79206d617020746f206f6e6548207072696d61727920757365726e616d652e4050656e64696e67557365726e616d6573000104028903d5090400186d0120557365726e616d6573207468617420616e20617574686f7269747920686173206772616e7465642c20627574207468617420746865206163636f756e7420636f6e74726f6c6c657220686173206e6f7420636f6e6669726d65647101207468617420746865792077616e742069742e2055736564207072696d6172696c7920696e2063617365732077686572652074686520604163636f756e744964602063616e6e6f742070726f766964652061207369676e61747572655d012062656361757365207468657920617265206120707572652070726f78792c206d756c74697369672c206574632e20496e206f7264657220746f20636f6e6669726d2069742c20746865792073686f756c642063616c6c6c205b6043616c6c3a3a6163636570745f757365726e616d65605d2e001d01204669727374207475706c65206974656d20697320746865206163636f756e7420616e64207365636f6e642069732074686520616363657074616e636520646561646c696e652e01dd02012108203042617369634465706f73697418400804379c4d000000000000000000000004d82054686520616d6f756e742068656c64206f6e206465706f73697420666f7220612072656769737465726564206964656e746974792e2c427974654465706f736974184034a0fc01000000000000000000000000041d012054686520616d6f756e742068656c64206f6e206465706f7369742070657220656e636f646564206279746520666f7220612072656769737465726564206964656e746974792e445375624163636f756e744465706f7369741840689aa4850f00000000000000000000000c65012054686520616d6f756e742068656c64206f6e206465706f73697420666f7220612072656769737465726564207375626163636f756e742e20546869732073686f756c64206163636f756e7420666f7220746865206661637465012074686174206f6e652073746f72616765206974656d27732076616c75652077696c6c20696e637265617365206279207468652073697a65206f6620616e206163636f756e742049442c20616e642074686572652077696c6c350120626520616e6f746865722074726965206974656d2077686f73652076616c7565206973207468652073697a65206f6620616e206163636f756e7420494420706c75732033322062797465732e384d61785375624163636f756e7473101064000000040d0120546865206d6178696d756d206e756d626572206f66207375622d6163636f756e747320616c6c6f77656420706572206964656e746966696564206163636f756e742e344d617852656769737472617273101014000000085101204d61786d696d756d206e756d626572206f66207265676973747261727320616c6c6f77656420696e207468652073797374656d2e204e656564656420746f20626f756e642074686520636f6d706c65786974797c206f662c20652e672e2c207570646174696e67206a756467656d656e74732e6450656e64696e67557365726e616d6545787069726174696f6e1010c089010004150120546865206e756d626572206f6620626c6f636b732077697468696e207768696368206120757365726e616d65206772616e74206d7573742062652061636365707465642e3c4d61785375666669784c656e677468101007000000048020546865206d6178696d756d206c656e677468206f662061207375666669782e444d6178557365726e616d654c656e67746810102000000004610120546865206d6178696d756d206c656e677468206f66206120757365726e616d652c20696e636c7564696e67206974732073756666697820616e6420616e792073797374656d2d61646465642064656c696d69746572732e01310b191c536f6369657479011c536f63696574795028506172616d657465727300002908040004dc20546865206d6178206e756d626572206f66206d656d6265727320666f722074686520736f6369657479206174206f6e652074696d652e0c506f74010018400000000000000000000000000000000004410120416d6f756e74206f66206f7572206163636f756e742062616c616e63652074686174206973207370656369666963616c6c7920666f7220746865206e65787420726f756e642773206269642873292e1c466f756e6465720000000400044820546865206669727374206d656d6265722e1048656164000000040004410120546865206d6f7374207072696d6172792066726f6d20746865206d6f737420726563656e746c7920617070726f7665642072616e6b2030206d656d6265727320696e2074686520736f63696574792e1452756c6573000030040008510120412068617368206f66207468652072756c6573206f66207468697320736f636965747920636f6e6365726e696e67206d656d626572736869702e2043616e206f6e6c7920626520736574206f6e636520616e6454206f6e6c792062792074686520666f756e6465722e1c4d656d626572730001040500350b0400042101205468652063757272656e74206d656d6265727320616e642074686569722072616e6b2e20446f65736e277420696e636c756465206053757370656e6465644d656d62657273602e1c5061796f7574730101040500410b44000000000000000000000000000000000004dc20496e666f726d6174696f6e20726567617264696e672072616e6b2d30207061796f7574732c207061737420616e64206675747572652e2c4d656d626572436f756e74010010100000000004490120546865206e756d626572206f66206974656d7320696e20604d656d62657273602063757272656e746c792e2028446f65736e277420696e636c756465206053757370656e6465644d656d62657273602e29344d656d6265724279496e6465780001040510000400085d01205468652063757272656e74206974656d7320696e20604d656d6265727360206b6579656420627920746865697220756e6971756520696e6465782e204b657973206172652064656e73656c7920706f70756c61746564cc2060302e2e4d656d626572436f756e74602028646f6573206e6f7420696e636c75646520604d656d626572436f756e7460292e4053757370656e6465644d656d626572730001040500350b04000401012054686520736574206f662073757370656e646564206d656d626572732c2077697468207468656972206f6c64206d656d62657273686970207265636f72642e28526f756e64436f756e74010010100000000004a020546865206e756d626572206f6620726f756e64732077686963682068617665207061737365642e10426964730100490b040004e8205468652063757272656e7420626964732c2073746f726564206f726465726564206279207468652076616c7565206f6620746865206269642e2843616e646964617465730001040200590b0400001c536b657074696300000004000454205468652063757272656e7420736b65707469632e14566f7465730001080505610b650b040004d020446f75626c65206d61702066726f6d2043616e646964617465202d3e20566f746572202d3e20284d617962652920566f74652e3c566f7465436c656172437572736f720001040500690b040004f420436c6561722d637572736f7220666f7220566f74652c206d61702066726f6d2043616e646964617465202d3e20284d617962652920437572736f722e204e6578744865616400006d0b04000c75012041742074686520656e64206f662074686520636c61696d20706572696f642c207468697320636f6e7461696e7320746865206d6f737420726563656e746c7920617070726f766564206d656d626572732028616c6f6e67207769746865012074686569722062696420616e6420726f756e64204944292077686f2069732066726f6d20746865206d6f737420726563656e7420726f756e64207769746820746865206c6f77657374206269642e20546865792077696c6c5c206265636f6d6520746865206e6577206048656164602e4c4368616c6c656e6765526f756e64436f756e74010010100000000004590120546865206e756d626572206f66206368616c6c656e676520726f756e64732074686572652068617665206265656e2e205573656420746f206964656e74696679207374616c6520446566656e646572566f7465732e24446566656e64696e670000710b04000459012054686520646566656e64696e67206d656d6265722063757272656e746c79206265696e67206368616c6c656e6765642c20616c6f6e67207769746820612072756e6e696e672074616c6c79206f6620766f7465732e34446566656e646572566f7465730001080505b909650b040004c820566f74657320666f722074686520646566656e6465722c206b65796564206279206368616c6c656e676520726f756e642e018d03012508242050616c6c65744964450a2070792f736f63696504682054686520736f6369657469657327732070616c6c6574206964304772616365537472696b657310100a00000004090120546865206d6178696d756d206e756d626572206f6620737472696b6573206265666f72652061206d656d62657220676574732066756e647320736c61736865642e2c506572696f645370656e641840040abf82280f00000000000000000000042d012054686520616d6f756e74206f6620696e63656e7469766520706169642077697468696e206561636820706572696f642e20446f65736e277420696e636c75646520566f7465725469702e30566f74696e67506572696f64101040190100083d0120546865206e756d626572206f6620626c6f636b73206f6e207768696368206e65772063616e646964617465732073686f756c6420626520766f746564206f6e2e20546f67657468657220776974684d012060436c61696d506572696f64602c20746869732073756d7320746f20746865206e756d626572206f6620626c6f636b73206265747765656e2063616e64696461746520696e74616b6520706572696f64732e2c436c61696d506572696f64101080700000084d0120546865206e756d626572206f6620626c6f636b73206f6e207768696368206e65772063616e646964617465732063616e20636c61696d207468656972206d656d6265727368697020616e642062652074686530206e616d656420686561642e3c4d61784c6f636b4475726174696f6e1010004eed0004a420546865206d6178696d756d206475726174696f6e206f6620746865207061796f7574206c6f636b2e3c4368616c6c656e6765506572696f641010c089010004d020546865206e756d626572206f6620626c6f636b73206265747765656e206d656d62657273686970206368616c6c656e6765732e284d61785061796f757473101008000000040d0120546865206d6178696d756d206e756d626572206f66207061796f7574732061206d656d626572206d617920686176652077616974696e6720756e636c61696d65642e1c4d617842696473101000020000049020546865206d6178696d756d206e756d626572206f662062696473206174206f6e63652e01750b1a205265636f7665727901205265636f766572790c2c5265636f76657261626c650001040500790b04000409012054686520736574206f66207265636f76657261626c65206163636f756e747320616e64207468656972207265636f7665727920636f6e66696775726174696f6e2e404163746976655265636f7665726965730001080505610b810b0400106820416374697665207265636f7665727920617474656d7074732e001501204669727374206163636f756e7420697320746865206163636f756e7420746f206265207265636f76657265642c20616e6420746865207365636f6e64206163636f756e74ac20697320746865207573657220747279696e6720746f207265636f76657220746865206163636f756e742e1450726f787900010402000004000c9020546865206c697374206f6620616c6c6f7765642070726f7879206163636f756e74732e00f8204d61702066726f6d2074686520757365722077686f2063616e2061636365737320697420746f20746865207265636f7665726564206163636f756e742e019103012d081044436f6e6669674465706f73697442617365184004821bce26000000000000000000000010550120546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e672061207265636f7665727920636f6e66696775726174696f6e2e00010120546869732069732068656c6420666f7220616e206164646974696f6e616c2073746f72616765206974656d2077686f73652076616c75652073697a65206973a8206032202b2073697a656f6628426c6f636b4e756d6265722c2042616c616e636529602062797465732e4c467269656e644465706f736974466163746f7218409a2669e1030000000000000000000000142d012054686520616d6f756e74206f662063757272656e6379206e656564656420706572206164646974696f6e616c2075736572207768656e206372656174696e672061207265636f766572793c20636f6e66696775726174696f6e2e004d0120546869732069732068656c6420666f7220616464696e67206073697a656f66284163636f756e7449642960206279746573206d6f726520696e746f2061207072652d6578697374696e672073746f726167651c2076616c75652e284d6178467269656e6473101009000000180d0120546865206d6178696d756d20616d6f756e74206f6620667269656e647320616c6c6f77656420696e2061207265636f7665727920636f6e66696775726174696f6e2e000d01204e4f54453a20546865207468726573686f6c642070726f6772616d6d656420696e20746869732050616c6c65742075736573207531362c20736f20697420646f65730901206e6f74207265616c6c79206d616b652073656e736520746f20686176652061206c696d697420686572652067726561746572207468616e207531363a3a4d41582e15012042757420616c736f2c20746861742069732061206c6f74206d6f7265207468616e20796f752073686f756c642070726f6261626c792073657420746869732076616c75653420746f20616e797761792e2e2e3c5265636f766572794465706f736974184004821bce2600000000000000000000001c1d0120546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72207374617274696e672061207265636f766572792e0035012054686973206973207072696d6172696c792068656c6420666f7220646574657272696e67206d616c6963696f7573207265636f7665727920617474656d7074732c20616e642073686f756c642901206861766520612076616c7565206c6172676520656e6f7567682074686174206120626164206163746f7220776f756c642063686f6f7365206e6f7420746f20706c61636520746869732901206465706f7369742e20497420616c736f206163747320746f2066756e64206164646974696f6e616c2073746f72616765206974656d2077686f73652076616c75652073697a652069734101206073697a656f6628426c6f636b4e756d6265722c2042616c616e6365202b2054202a204163636f756e74496429602062797465732e2057686572652054206973206120636f6e666967757261626c652c207468726573686f6c642e01850b1b1c56657374696e67011c56657374696e67081c56657374696e670001040200890b040004d820496e666f726d6174696f6e20726567617264696e67207468652076657374696e67206f66206120676976656e206163636f756e742e3853746f7261676556657273696f6e0100910b04000c7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e003101204e6577206e6574776f726b732073746172742077697468206c61746573742076657273696f6e2c2061732064657465726d696e6564206279207468652067656e65736973206275696c642e01950301310808444d696e5665737465645472616e736665721840344dd2c207000000000000000000000004e820546865206d696e696d756d20616d6f756e74207472616e7366657272656420746f2063616c6c20607665737465645f7472616e73666572602e4c4d617856657374696e675363686564756c657310101c0000000001950b1c245363686564756c657201245363686564756c65720c3c496e636f6d706c65746553696e6365000010040000184167656e64610101040510990b0400044d01204974656d7320746f2062652065786563757465642c20696e64657865642062792074686520626c6f636b206e756d626572207468617420746865792073686f756c64206265206578656375746564206f6e2e184c6f6f6b75700001040504a503040010f8204c6f6f6b75702066726f6d2061206e616d6520746f2074686520626c6f636b206e756d62657220616e6420696e646578206f6620746865207461736b2e00590120466f72207633202d3e207634207468652070726576696f75736c7920756e626f756e646564206964656e7469746965732061726520426c616b65322d3235362068617368656420746f20666f726d2074686520763430206964656e7469746965732e019d0301350808344d6178696d756d57656967687424400b00806e87740113cccccccccccccccc04290120546865206d6178696d756d207765696768742074686174206d6179206265207363686564756c65642070657220626c6f636b20666f7220616e7920646973706174636861626c65732e504d61785363686564756c6564506572426c6f636b101032000000141d0120546865206d6178696d756d206e756d626572206f66207363686564756c65642063616c6c7320696e2074686520717565756520666f7220612073696e676c6520626c6f636b2e0018204e4f54453a5101202b20446570656e64656e742070616c6c657473272062656e63686d61726b73206d696768742072657175697265206120686967686572206c696d697420666f72207468652073657474696e672e205365742061c420686967686572206c696d697420756e646572206072756e74696d652d62656e63686d61726b736020666561747572652e01a90b1d1450726f7879011450726f7879081c50726f786965730101040500ad0b4400000000000000000000000000000000000845012054686520736574206f66206163636f756e742070726f786965732e204d61707320746865206163636f756e74207768696368206861732064656c65676174656420746f20746865206163636f756e7473210120776869636820617265206265696e672064656c65676174656420746f2c20746f67657468657220776974682074686520616d6f756e742068656c64206f6e206465706f7369742e34416e6e6f756e63656d656e74730101040500bd0b44000000000000000000000000000000000004ac2054686520616e6e6f756e63656d656e7473206d616465206279207468652070726f787920286b6579292e01a903013d08184050726f78794465706f736974426173651840b00953489b000000000000000000000010110120546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e6720612070726f78792e00010120546869732069732068656c6420666f7220616e206164646974696f6e616c2073746f72616765206974656d2077686f73652076616c75652073697a652069732501206073697a656f662842616c616e6365296020627974657320616e642077686f7365206b65792073697a65206973206073697a656f66284163636f756e74496429602062797465732e4850726f78794465706f736974466163746f721840b4a6904100000000000000000000000014bc2054686520616d6f756e74206f662063757272656e6379206e6565646564207065722070726f78792061646465642e00350120546869732069732068656c6420666f7220616464696e6720333220627974657320706c757320616e20696e7374616e6365206f66206050726f78795479706560206d6f726520696e746f20616101207072652d6578697374696e672073746f726167652076616c75652e20546875732c207768656e20636f6e6669677572696e67206050726f78794465706f736974466163746f7260206f6e652073686f756c642074616b65f420696e746f206163636f756e7420603332202b2070726f78795f747970652e656e636f646528292e6c656e282960206279746573206f6620646174612e284d617850726f7869657310102000000004f020546865206d6178696d756d20616d6f756e74206f662070726f7869657320616c6c6f77656420666f7220612073696e676c65206163636f756e742e284d617850656e64696e6710102000000004450120546865206d6178696d756d20616d6f756e74206f662074696d652d64656c6179656420616e6e6f756e63656d656e747320746861742061726520616c6c6f77656420746f2062652070656e64696e672e5c416e6e6f756e63656d656e744465706f736974426173651840b00953489b000000000000000000000010310120546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e6720616e20616e6e6f756e63656d656e742e00490120546869732069732068656c64207768656e2061206e65772073746f72616765206974656d20686f6c64696e672061206042616c616e636560206973206372656174656420287479706963616c6c7920313620206279746573292e64416e6e6f756e63656d656e744465706f736974466163746f721840684d218300000000000000000000000010d42054686520616d6f756e74206f662063757272656e6379206e65656465642070657220616e6e6f756e63656d656e74206d6164652e00590120546869732069732068656c6420666f7220616464696e6720616e20604163636f756e744964602c2060486173686020616e642060426c6f636b4e756d6265726020287479706963616c6c79203638206279746573298c20696e746f2061207072652d6578697374696e672073746f726167652076616c75652e01cd0b1e204d756c746973696701204d756c746973696704244d756c7469736967730001080502d10bd50b040004942054686520736574206f66206f70656e206d756c7469736967206f7065726174696f6e732e01b5030141080c2c4465706f736974426173651840f01945e79b000000000000000000000018590120546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e672061206d756c746973696720657865637574696f6e206f7220746f842073746f726520612064697370617463682063616c6c20666f72206c617465722e00010120546869732069732068656c6420666f7220616e206164646974696f6e616c2073746f72616765206974656d2077686f73652076616c75652073697a652069733101206034202b2073697a656f662828426c6f636b4e756d6265722c2042616c616e63652c204163636f756e74496429296020627974657320616e642077686f7365206b65792073697a652069738020603332202b2073697a656f66284163636f756e74496429602062797465732e344465706f736974466163746f7218408006943f0000000000000000000000000c55012054686520616d6f756e74206f662063757272656e6379206e65656465642070657220756e6974207468726573686f6c64207768656e206372656174696e672061206d756c746973696720657865637574696f6e2e00250120546869732069732068656c6420666f7220616464696e67203332206279746573206d6f726520696e746f2061207072652d6578697374696e672073746f726167652076616c75652e384d61785369676e61746f7269657310106400000004ec20546865206d6178696d756d20616d6f756e74206f66207369676e61746f7269657320616c6c6f77656420696e20746865206d756c74697369672e01dd0b1f20507265696d6167650120507265696d6167650c24537461747573466f720001040630e10b0400049020546865207265717565737420737461747573206f66206120676976656e20686173682e4052657175657374537461747573466f720001040630e90b0400049020546865207265717565737420737461747573206f66206120676976656e20686173682e2c507265696d616765466f7200010406010af90b04000001c1030145080001fd0b2020426f756e746965730120426f756e74696573102c426f756e7479436f756e74010010100000000004c0204e756d626572206f6620626f756e74792070726f706f73616c7320746861742068617665206265656e206d6164652e20426f756e746965730001040510010c0400047820426f756e7469657320746861742068617665206265656e206d6164652e48426f756e74794465736372697074696f6e730001040510090c0400048020546865206465736372697074696f6e206f66206561636820626f756e74792e3c426f756e7479417070726f76616c730100350a040004ec20426f756e747920696e646963657320746861742068617665206265656e20617070726f76656420627574206e6f74207965742066756e6465642e01c9030149082444426f756e74794465706f736974426173651840344dd2c207000000000000000000000004e82054686520616d6f756e742068656c64206f6e206465706f73697420666f7220706c6163696e67206120626f756e74792070726f706f73616c2e60426f756e74794465706f7369745061796f757444656c6179101000e10000045901205468652064656c617920706572696f6420666f72207768696368206120626f756e74792062656e6566696369617279206e65656420746f2077616974206265666f726520636c61696d20746865207061796f75742e48426f756e7479557064617465506572696f64101080c61300046c20426f756e7479206475726174696f6e20696e20626c6f636b732e6043757261746f724465706f7369744d756c7469706c696572410a1020a10700101901205468652063757261746f72206465706f7369742069732063616c63756c6174656420617320612070657263656e74616765206f66207468652063757261746f72206665652e0039012054686973206465706f73697420686173206f7074696f6e616c20757070657220616e64206c6f77657220626f756e64732077697468206043757261746f724465706f7369744d61786020616e6454206043757261746f724465706f7369744d696e602e4443757261746f724465706f7369744d61780102440104821bce260000000000000000000000044901204d6178696d756d20616d6f756e74206f662066756e647320746861742073686f756c6420626520706c6163656420696e2061206465706f73697420666f72206d616b696e6720612070726f706f73616c2e4443757261746f724465706f7369744d696e0102440152a1aec6000000000000000000000000044901204d696e696d756d20616d6f756e74206f662066756e647320746861742073686f756c6420626520706c6163656420696e2061206465706f73697420666f72206d616b696e6720612070726f706f73616c2e48426f756e747956616c75654d696e696d756d1840689aa4850f00000000000000000000000470204d696e696d756d2076616c756520666f72206120626f756e74792e48446174614465706f7369745065724279746518405543de130000000000000000000000000461012054686520616d6f756e742068656c64206f6e206465706f7369742070657220627974652077697468696e2074686520746970207265706f727420726561736f6e206f7220626f756e7479206465736372697074696f6e2e4c4d6178696d756d526561736f6e4c656e6774681010004000000c88204d6178696d756d2061636365707461626c6520726561736f6e206c656e6774682e0065012042656e63686d61726b7320646570656e64206f6e20746869732076616c75652c206265207375726520746f2075706461746520776569676874732066696c65207768656e206368616e67696e6720746869732076616c7565010d0c23344368696c64426f756e7469657301344368696c64426f756e7469657314404368696c64426f756e7479436f756e7401001010000000000480204e756d626572206f6620746f74616c206368696c6420626f756e746965732e4c506172656e744368696c64426f756e74696573010104051010100000000008b0204e756d626572206f66206368696c6420626f756e746965732070657220706172656e7420626f756e74792ee0204d6170206f6620706172656e7420626f756e747920696e64657820746f206e756d626572206f66206368696c6420626f756e746965732e344368696c64426f756e746965730001080505a503110c04000494204368696c6420626f756e7469657320746861742068617665206265656e2061646465642e5c4368696c64426f756e74794465736372697074696f6e730001040510090c0400049820546865206465736372697074696f6e206f662065616368206368696c642d626f756e74792e4c4368696c6472656e43757261746f72466565730101040510184000000000000000000000000000000000040101205468652063756d756c6174697665206368696c642d626f756e74792063757261746f722066656520666f72206561636820706172656e7420626f756e74792e01cd03014d0808644d61784163746976654368696c64426f756e7479436f756e74101064000000041d01204d6178696d756d206e756d626572206f66206368696c6420626f756e7469657320746861742063616e20626520616464656420746f206120706172656e7420626f756e74792e5c4368696c64426f756e747956616c75654d696e696d756d1840a4425d8d0100000000000000000000000488204d696e696d756d2076616c756520666f722061206368696c642d626f756e74792e01190c2868456c656374696f6e50726f76696465724d756c746950686173650168456c656374696f6e50726f76696465724d756c746950686173652814526f756e64010010100100000018ac20496e7465726e616c20636f756e74657220666f7220746865206e756d626572206f6620726f756e64732e00550120546869732069732075736566756c20666f722064652d6475706c69636174696f6e206f66207472616e73616374696f6e73207375626d697474656420746f2074686520706f6f6c2c20616e642067656e6572616c6c20646961676e6f7374696373206f66207468652070616c6c65742e004d012054686973206973206d6572656c7920696e6372656d656e746564206f6e6365207065722065766572792074696d65207468617420616e20757073747265616d2060656c656374602069732063616c6c65642e3043757272656e745068617365010059080400043c2043757272656e742070686173652e38517565756564536f6c7574696f6e00001d0c04000c3d012043757272656e74206265737420736f6c7574696f6e2c207369676e6564206f7220756e7369676e65642c2071756575656420746f2062652072657475726e65642075706f6e2060656c656374602e006020416c7761797320736f727465642062792073636f72652e20536e617073686f740000250c0400107020536e617073686f742064617461206f662074686520726f756e642e005d01205468697320697320637265617465642061742074686520626567696e6e696e67206f6620746865207369676e656420706861736520616e6420636c65617265642075706f6e2063616c6c696e672060656c656374602e2901204e6f74653a20546869732073746f726167652074797065206d757374206f6e6c79206265206d757461746564207468726f756768205b60536e617073686f7457726170706572605d2e384465736972656454617267657473000010040010cc2044657369726564206e756d626572206f66207461726765747320746f20656c65637420666f72207468697320726f756e642e00a8204f6e6c7920657869737473207768656e205b60536e617073686f74605d2069732070726573656e742e2901204e6f74653a20546869732073746f726167652074797065206d757374206f6e6c79206265206d757461746564207468726f756768205b60536e617073686f7457726170706572605d2e40536e617073686f744d65746164617461000009050400109820546865206d65746164617461206f6620746865205b60526f756e64536e617073686f74605d00a8204f6e6c7920657869737473207768656e205b60536e617073686f74605d2069732070726573656e742e2901204e6f74653a20546869732073746f726167652074797065206d757374206f6e6c79206265206d757461746564207468726f756768205b60536e617073686f7457726170706572605d2e645369676e65645375626d697373696f6e4e657874496e646578010010100000000024010120546865206e65787420696e64657820746f2062652061737369676e656420746f20616e20696e636f6d696e67207369676e6564207375626d697373696f6e2e007501204576657279206163636570746564207375626d697373696f6e2069732061737369676e6564206120756e6971756520696e6465783b207468617420696e64657820697320626f756e6420746f207468617420706172746963756c61726501207375626d697373696f6e20666f7220746865206475726174696f6e206f662074686520656c656374696f6e2e204f6e20656c656374696f6e2066696e616c697a6174696f6e2c20746865206e65787420696e6465782069733020726573657420746f20302e0069012057652063616e2774206a7573742075736520605369676e65645375626d697373696f6e496e64696365732e6c656e2829602c206265636175736520746861742773206120626f756e646564207365743b20706173742069747359012063617061636974792c2069742077696c6c2073696d706c792073617475726174652e2057652063616e2774206a7573742069746572617465206f76657220605369676e65645375626d697373696f6e734d6170602cf4206265636175736520697465726174696f6e20697320736c6f772e20496e73746561642c2077652073746f7265207468652076616c756520686572652e5c5369676e65645375626d697373696f6e496e64696365730100310c0400186d01204120736f727465642c20626f756e64656420766563746f72206f6620602873636f72652c20626c6f636b5f6e756d6265722c20696e64657829602c20776865726520656163682060696e6465786020706f696e747320746f2061782076616c756520696e20605369676e65645375626d697373696f6e73602e007101205765206e65766572206e65656420746f2070726f63657373206d6f7265207468616e20612073696e676c65207369676e6564207375626d697373696f6e20617420612074696d652e205369676e6564207375626d697373696f6e7375012063616e206265207175697465206c617267652c20736f2077652772652077696c6c696e6720746f207061792074686520636f7374206f66206d756c7469706c6520646174616261736520616363657373657320746f206163636573732101207468656d206f6e6520617420612074696d6520696e7374656164206f662072656164696e6720616e64206465636f64696e6720616c6c206f66207468656d206174206f6e63652e505369676e65645375626d697373696f6e734d617000010405103d0c04001c7420556e636865636b65642c207369676e656420736f6c7574696f6e732e00690120546f676574686572207769746820605375626d697373696f6e496e6469636573602c20746869732073746f726573206120626f756e64656420736574206f6620605369676e65645375626d697373696f6e7360207768696c65ec20616c6c6f77696e6720757320746f206b656570206f6e6c7920612073696e676c65206f6e6520696e206d656d6f727920617420612074696d652e0069012054776f78206e6f74653a20746865206b6579206f6620746865206d617020697320616e206175746f2d696e6372656d656e74696e6720696e6465782077686963682075736572732063616e6e6f7420696e7370656374206f72f4206166666563743b2077652073686f756c646e2774206e65656420612063727970746f67726170686963616c6c7920736563757265206861736865722e544d696e696d756d556e7472757374656453636f7265000005050400105d0120546865206d696e696d756d2073636f7265207468617420656163682027756e747275737465642720736f6c7574696f6e206d7573742061747461696e20696e206f7264657220746f20626520636f6e7369646572656428206665617369626c652e00b82043616e206265207365742076696120607365745f6d696e696d756d5f756e747275737465645f73636f7265602e01d1030151084034556e7369676e656450686173651010960000000480204475726174696f6e206f662074686520756e7369676e65642070686173652e2c5369676e656450686173651010960000000478204475726174696f6e206f6620746865207369676e65642070686173652e544265747465725369676e65645468726573686f6c64941000000000084d0120546865206d696e696d756d20616d6f756e74206f6620696d70726f76656d656e7420746f2074686520736f6c7574696f6e2073636f7265207468617420646566696e6573206120736f6c7574696f6e2061737820226265747465722220696e20746865205369676e65642070686173652e384f6666636861696e52657065617410101200000010b42054686520726570656174207468726573686f6c64206f6620746865206f6666636861696e20776f726b65722e00610120466f72206578616d706c652c20696620697420697320352c2074686174206d65616e732074686174206174206c65617374203520626c6f636b732077696c6c20656c61707365206265747765656e20617474656d7074738420746f207375626d69742074686520776f726b6572277320736f6c7574696f6e2e3c4d696e657254785072696f726974792c2065666666666666e604250120546865207072696f72697479206f662074686520756e7369676e6564207472616e73616374696f6e207375626d697474656420696e2074686520756e7369676e65642d7068617365505369676e65644d61785375626d697373696f6e731010100000001ce4204d6178696d756d206e756d626572206f66207369676e6564207375626d697373696f6e7320746861742063616e206265207175657565642e005501204974206973206265737420746f2061766f69642061646a757374696e67207468697320647572696e6720616e20656c656374696f6e2c20617320697420696d706163747320646f776e73747265616d2064617461650120737472756374757265732e20496e20706172746963756c61722c20605369676e65645375626d697373696f6e496e64696365733c543e6020697320626f756e646564206f6e20746869732076616c75652e20496620796f75f42075706461746520746869732076616c756520647572696e6720616e20656c656374696f6e2c20796f75205f6d7573745f20656e7375726520746861744d0120605369676e65645375626d697373696f6e496e64696365732e6c656e282960206973206c657373207468616e206f7220657175616c20746f20746865206e65772076616c75652e204f74686572776973652cf020617474656d70747320746f207375626d6974206e657720736f6c7574696f6e73206d617920636175736520612072756e74696d652070616e69632e3c5369676e65644d617857656967687424400b88d8663c550113a3703d0ad7a370bd1494204d6178696d756d20776569676874206f662061207369676e656420736f6c7574696f6e2e005d01204966205b60436f6e6669673a3a4d696e6572436f6e666967605d206973206265696e6720696d706c656d656e74656420746f207375626d6974207369676e656420736f6c7574696f6e7320286f757473696465206f663d0120746869732070616c6c6574292c207468656e205b604d696e6572436f6e6669673a3a736f6c7574696f6e5f776569676874605d206973207573656420746f20636f6d7061726520616761696e73743020746869732076616c75652e405369676e65644d6178526566756e647310100400000004190120546865206d6178696d756d20616d6f756e74206f6620756e636865636b656420736f6c7574696f6e7320746f20726566756e64207468652063616c6c2066656520666f722e405369676e656452657761726442617365184000e87648170000000000000000000000048820426173652072657761726420666f722061207369676e656420736f6c7574696f6e445369676e65644465706f73697442797465184090f7040000000000000000000000000004a0205065722d62797465206465706f73697420666f722061207369676e656420736f6c7574696f6e2e4c5369676e65644465706f73697457656967687418400000000000000000000000000000000004a8205065722d776569676874206465706f73697420666f722061207369676e656420736f6c7574696f6e2e284d617857696e6e6572731010d007000010350120546865206d6178696d756d206e756d626572206f662077696e6e65727320746861742063616e20626520656c656374656420627920746869732060456c656374696f6e50726f7669646572604020696d706c656d656e746174696f6e2e005101204e6f74653a2054686973206d75737420616c776179732062652067726561746572206f7220657175616c20746f2060543a3a4461746150726f76696465723a3a646573697265645f746172676574732829602e384d696e65724d61784c656e67746810100000360000384d696e65724d617857656967687424400b88d8663c550113a3703d0ad7a370bd00544d696e65724d6178566f746573506572566f746572101018000000003c4d696e65724d617857696e6e6572731010d00700000001410c250c4e6973010c4e6973102c5175657565546f74616c730100450c499cd107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001461012054686520746f74616c73206f66206974656d7320616e642062616c616e6365732077697468696e20656163682071756575652e2053617665732061206c6f74206f662073746f7261676520726561647320696e20746865802063617365206f66207370617273656c79207061636b6564207175657565732e006d012054686520766563746f7220697320696e6465786564206279206475726174696f6e20696e2060506572696f6460732c206f6666736574206279206f6e652c20736f20696e666f726d6174696f6e206f6e20746865207175657565d42077686f7365206475726174696f6e206973206f6e652060506572696f646020776f756c642062652073746f72616765206030602e185175657565730101040210490c040004e02054686520717565756573206f6620626964732e20496e6465786564206279206475726174696f6e2028696e2060506572696f646073292e1c53756d6d6172790100550ca00000000000000000000000000000000000000000000000000000000000000000000000000000000004b02053756d6d61727920696e666f726d6174696f6e206f766572207468652067656e6572616c2073746174652e2052656365697074730001040210590c0400044101205468652063757272656e746c79206f75747374616e64696e672072656365697074732c20696e6465786564206163636f7264696e6720746f20746865206f72646572206f66206372656174696f6e2e012505016108282050616c6c65744964450a2070792f6e697320200419012054686520747265617375727927732070616c6c65742069642c207573656420666f72206465726976696e672069747320736f7665726569676e206163636f756e742049442e285175657565436f756e741010f4010000085d01204e756d626572206f66206475726174696f6e2071756575657320696e20746f74616c2e2054686973207365747320746865206d6178696d756d206475726174696f6e20737570706f727465642c2077686963682069738c20746869732076616c7565206d756c7469706c6965642062792060506572696f64602e2c4d617851756575654c656e1010e80300000cf0204d6178696d756d206e756d626572206f66206974656d732074686174206d617920626520696e2065616368206475726174696f6e2071756575652e0068204d757374206265206c6172676572207468616e207a65726f2e304669666f51756575654c656e1010fa0000000c090120506f7274696f6e206f662074686520717565756520776869636820697320667265652066726f6d206f72646572696e6720616e64206a7573742061204649464f2e009c204d757374206265206e6f2067726561746572207468616e20604d617851756575654c656e602e2842617365506572696f641010c089010008410120546865206261736520706572696f6420666f7220746865206475726174696f6e207175657565732e20546869732069732074686520636f6d6d6f6e206d756c7469706c65206163726f737320616c6ccc20737570706f7274656420667265657a696e67206475726174696f6e7320746861742063616e206265206269642075706f6e2e184d696e42696418403435261a08030000000000000000000018210120546865206d696e696d756d20616d6f756e74206f662066756e64732074686174206d617920626520706c6163656420696e2061206269642e204e6f746520746861742074686973610120646f6573206e6f742061637475616c6c79206c696d69742074686520616d6f756e74207768696368206d617920626520726570726573656e74656420696e206120726563656970742073696e63652062696473206d61796c2062652073706c6974207570206279207468652073797374656d2e0065012049742073686f756c64206265206174206c656173742062696720656e6f75676820746f20656e737572652074686174207468657265206973206e6f20706f737369626c652073746f72616765207370616d2061747461636b64206f722071756575652d66696c6c696e672061747461636b2e284d696e526563656970742d052000e876481700000008550120546865206d696e696d756d20616d6f756e74206f662066756e6473207768696368206d617920696e74656e74696f6e616c6c79206265206c6566742072656d61696e696e6720756e64657220612073696e676c652420726563656970742e30496e74616b65506572696f64101032000000105d0120546865206e756d626572206f6620626c6f636b73206265747765656e20636f6e736563757469766520617474656d70747320746f2064657175657565206269647320616e64206372656174652072656365697074732e005d012041206c61726765722076616c756520726573756c747320696e2066657765722073746f726167652068697473206561636820626c6f636b2c20627574206120736c6f77657220706572696f6420746f2067657420746f3020746865207461726765742e3c4d6178496e74616b65576569676874243c0700d0ed902e1399999999999999190c550120546865206d6178696d756d20616d6f756e74206f66206269647320746861742063616e20636f6e736f6c69646174656420696e746f20726563656970747320696e20612073696e676c6520696e74616b652e20415d01206c61726765722076616c75652068657265206d65616e73206c657373206f662074686520626c6f636b20617661696c61626c6520666f72207472616e73616374696f6e732073686f756c6420746865726520626520613820676c7574206f6620626964732e30546861775468726f74746c655d0c300000d9e9ac2d78030500000004490120546865206d6178696d756d2070726f706f7274696f6e207768696368206d61792062652074686177656420616e642074686520706572696f64206f7665722077686963682069742069732072657365742e01610c26584e6973436f756e7465727061727442616c616e63657301584e6973436f756e7465727061727442616c616e6365731c34546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e40496e61637469766549737375616e636501001840000000000000000000000000000000000409012054686520746f74616c20756e697473206f66206f75747374616e64696e672064656163746976617465642062616c616e636520696e207468652073797374656d2e1c4163636f756e74010104020014010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080600901205468652042616c616e6365732070616c6c6574206578616d706c65206f662073746f72696e67207468652062616c616e6365206f6620616e206163636f756e742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b19022020202074797065204163636f756e7453746f7265203d2053746f726167654d61705368696d3c53656c663a3a4163636f756e743c52756e74696d653e2c206672616d655f73797374656d3a3a50726f76696465723c52756e74696d653e2c204163636f756e7449642c2053656c663a3a4163636f756e74446174613c42616c616e63653e3e0c20207d102060606000150120596f752063616e20616c736f2073746f7265207468652062616c616e6365206f6620616e206163636f756e7420696e20746865206053797374656d602070616c6c65742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b7420202074797065204163636f756e7453746f7265203d2053797374656d0c20207d102060606000510120427574207468697320636f6d657320776974682074726164656f6666732c2073746f72696e67206163636f756e742062616c616e63657320696e207468652073797374656d2070616c6c65742073746f7265736d0120606672616d655f73797374656d60206461746120616c6f6e677369646520746865206163636f756e74206461746120636f6e747261727920746f2073746f72696e67206163636f756e742062616c616e63657320696e207468652901206042616c616e636573602070616c6c65742c20776869636820757365732061206053746f726167654d61706020746f2073746f72652062616c616e6365732064617461206f6e6c792e4101204e4f54453a2054686973206973206f6e6c79207573656420696e207468652063617365207468617420746869732070616c6c6574206973207573656420746f2073746f72652062616c616e6365732e144c6f636b730101040200650c040008b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e2052657365727665730101040200690c040004a4204e616d6564207265736572766573206f6e20736f6d65206163636f756e742062616c616e6365732e14486f6c647301010402006d090400046c20486f6c6473206f6e206163636f756e742062616c616e6365732e1c467265657a657301010402006d0c0400048820467265657a65206c6f636b73206f6e206163636f756e742062616c616e6365732e01310501650810484578697374656e7469616c4465706f736974184000e40b5402000000000000000000000020410120546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e204d5553542042452047524541544552205448414e205a45524f2100590120496620796f75202a7265616c6c792a206e65656420697420746f206265207a65726f2c20796f752063616e20656e61626c652074686520666561747572652060696e7365637572655f7a65726f5f65646020666f72610120746869732070616c6c65742e20486f77657665722c20796f7520646f20736f20617420796f7572206f776e207269736b3a20746869732077696c6c206f70656e2075702061206d616a6f7220446f5320766563746f722e590120496e206361736520796f752068617665206d756c7469706c6520736f7572636573206f662070726f7669646572207265666572656e6365732c20796f75206d617920616c736f2067657420756e65787065637465648c206265686176696f757220696620796f7520736574207468697320746f207a65726f2e00f020426f74746f6d206c696e653a20446f20796f757273656c662061206661766f757220616e64206d616b65206974206174206c65617374206f6e6521204d61784c6f636b7310100400000008f420546865206d6178696d756d206e756d626572206f66206c6f636b7320746861742073686f756c64206578697374206f6e20616e206163636f756e742edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e2c4d61785265736572766573101004000000040d0120546865206d6178696d756d206e756d626572206f66206e616d656420726573657276657320746861742063616e206578697374206f6e20616e206163636f756e742e284d6178467265657a657310100100000004610120546865206d6178696d756d206e756d626572206f6620696e646976696475616c20667265657a65206c6f636b7320746861742063616e206578697374206f6e20616e206163636f756e7420617420616e792074696d652e01790c2d24566f7465724c6973740124566f7465724c6973740c244c6973744e6f64657300010405007d0c04000c8020412073696e676c65206e6f64652c2077697468696e20736f6d65206261672e000501204e6f6465732073746f7265206c696e6b7320666f727761726420616e64206261636b2077697468696e207468656972207265737065637469766520626167732e4c436f756e746572466f724c6973744e6f646573010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d6170204c69737442616773000104052c810c04000c642041206261672073746f72656420696e2073746f726167652e0019012053746f7265732061206042616760207374727563742c2077686963682073746f726573206865616420616e64207461696c20706f696e7465727320746f20697473656c662e01350501690804344261675468726573686f6c6473850c0919210355a0fc0100000000daa64602000000006e739b02000000007997fc0200000000d0de6b03000000003358eb03000000000d5f7d04000000009aa6240500000000b146e4050000000067cabf0600000000d640bb07000000005350db0800000000714c250a00000000364f9f0b000000000056500d000000009862400f000000001ba17811000000006593031400000000cd42ed16000000002079431a00000000e401161e000000001ef5762200000000f90c7b2700000000e0073a2d00000000e818cf33000000008c68593b000000002ea8fc43000000000abbe14d00000000c3773759000000001986336600000000e85c13750000000018651d8600000000e846a29900000000be67feaf00000000849f9bc900000000ad2df3e60000000028f78f0801000000d817112f01000000bed32c5b01000000c2f5b38d010000000aac95c7010000002bf4e3090200000022acd855020000001060dbac020000002ef08710030000007c2eb682030000002b988205040000001754589b040000009da5fc4605000000ff099c0b060000006c3ed9ec06000000c475deee07000000960f711609000000aa2d08690a000000f892e6ec0b0000008c4638a90d000000978634a60f0000006dac44ed1100000078b93089140000001660528617000000e479cff21a0000004000ddde1e000000ffc30b5d23000000824fa082280000002793f7672e000000a638fa283500000048bfa0e53c00000047d28ac245000000c5a5ace94f000000f68e158b5b0000009083d3dd6800000066b5f72078000000cf1bc19c89000000fc6ff2a39d0000001eef5995b4000000c02092ddce000000b2ed03f9ec000000078933760f010000d30e63f8360100001252973a64010000e1230d1398010000a0722f77d301000078012180170200006533ef6f65020000428586b7be02000028e784fd24030000b13f0a269a030000d016ac5b2004000022c8b619ba04000079c7ec376a050000e092fbf7330600003d05e6141b070000f701add423080000d8108a1c53090000c8ab1b88ae0a0000b2eff0833c0c0000e858f26b040e00000f7d37ae0e100000d5a7eef264120000583f134a121500001753cb5f231800005c3664b8a61b0000a61a0af5ac1f000033f27f22492400004b3a4c1391290000288805c79d2f000037d3a7e08b360000ffa1222e7c3e0000f0c4a14394470000e5ad6f2dff510000076ebb3bee5d0000abf006ec996b00008c6c8ef4427b00003ad69a76338d0000ba57695dc0a100005dda24f04ab90000b66f609e42d400007655960f27f30000258d6c7f8a1601005169eb71143f0100b9be72cc846d01003c4b1762b7a20100cc2f3404a8df0100f7276e2a77250200480b33486f7502001d5cf5e80ad102000f6410b0fb390300a904775d32b203002de121fde73b040030afb76ca8d90400fb753e695e8e05003c44e45d615d06002cb93b35854a0700a8f8cb772c5a08007a48b90d5d9109003d3dc705d8f50a000d1e42d2348e0c001cb0be7c00620e0024796364e17910001b8ded2fc0df1200d3e942b5f69e1500e8ca99b485c41800d0c88c65525f1c00c2f577f96c8020000abce260613b250074bd4dd293a62a00ec4b61c8aadb300048b0376d08f83700c01384b1551d4000dc2bfda12172490070b645ed972254006cfc51fa516160006c93086d46686e009caae886db797e00c036837621e29000a0649b653af8a50028a34ceef61fbe00385aa297aecbd900483335165d7ef900d0cae4520ece1d010090a7aea4664701e09d92a5060d770130778edcc2a2ad01d00bb8d53b2aec0140b18c096fcb3302805193026ed98502a0f6d663a3d8e30260bbcb8701864f03a045f8b63cdfca0340816de8372c5804405e20a9d009fa04808d72453d76b30580f35bc037df8706804eeca838327b0700b198a10eef9108800b2f9b2a3dd10980a2489405043f0b00724c5a1307e20c00d8f897c605c20e009890be3de0e71000434f6546c15d1300d61cff7d4e2f16009b32b873df691900008775d0bc1c1d00da56ebaf68592100dacb4281f13326003c889ef750c32b000ab7e6cbd8213200346dad52af6d39005047e9335ec9410024ee18e8755c4b0038d4b40049545600087d76b2c2e46200981c03995c497100881e553f38c68100b0cb90a161a99400284fe59e404caa00c0e54a304015c30060cd7437b379dfffffffffffffffffacd020546865206c697374206f66207468726573686f6c64732073657061726174696e672074686520766172696f757320626167732e00490120496473206172652073657061726174656420696e746f20756e736f727465642062616773206163636f7264696e6720746f2074686569722073636f72652e205468697320737065636966696573207468656101207468726573686f6c64732073657061726174696e672074686520626167732e20416e20696427732062616720697320746865206c6172676573742062616720666f722077686963682074686520696427732073636f7265b8206973206c657373207468616e206f7220657175616c20746f20697473207570706572207468726573686f6c642e006501205768656e20696473206172652069746572617465642c2068696768657220626167732061726520697465726174656420636f6d706c6574656c79206265666f7265206c6f77657220626167732e2054686973206d65616e735901207468617420697465726174696f6e206973205f73656d692d736f727465645f3a20696473206f66206869676865722073636f72652074656e6420746f20636f6d65206265666f726520696473206f66206c6f7765722d012073636f72652c206275742070656572206964732077697468696e206120706172746963756c6172206261672061726520736f7274656420696e20696e73657274696f6e206f726465722e006820232045787072657373696e672074686520636f6e7374616e74004d01205468697320636f6e7374616e74206d75737420626520736f7274656420696e207374726963746c7920696e6372656173696e67206f726465722e204475706c6963617465206974656d7320617265206e6f742c207065726d69747465642e00410120546865726520697320616e20696d706c696564207570706572206c696d6974206f66206053636f72653a3a4d4158603b20746861742076616c756520646f6573206e6f74206e65656420746f2062652101207370656369666965642077697468696e20746865206261672e20466f7220616e792074776f207468726573686f6c64206c697374732c206966206f6e6520656e647320776974683101206053636f72653a3a4d4158602c20746865206f74686572206f6e6520646f6573206e6f742c20616e64207468657920617265206f746865727769736520657175616c2c207468652074776f7c206c697374732077696c6c20626568617665206964656e746963616c6c792e003820232043616c63756c6174696f6e005501204974206973207265636f6d6d656e64656420746f2067656e65726174652074686520736574206f66207468726573686f6c647320696e20612067656f6d6574726963207365726965732c2073756368207468617441012074686572652065786973747320736f6d6520636f6e7374616e7420726174696f2073756368207468617420607468726573686f6c645b6b202b20315d203d3d20287468726573686f6c645b6b5d202ad020636f6e7374616e745f726174696f292e6d6178287468726573686f6c645b6b5d202b2031296020666f7220616c6c20606b602e005901205468652068656c7065727320696e2074686520602f7574696c732f6672616d652f67656e65726174652d6261677360206d6f64756c652063616e2073696d706c69667920746869732063616c63756c6174696f6e2e002c2023204578616d706c6573005101202d20496620604261675468726573686f6c64733a3a67657428292e69735f656d7074792829602c207468656e20616c6c20696473206172652070757420696e746f207468652073616d65206261672c20616e64b0202020697465726174696f6e206973207374726963746c7920696e20696e73657274696f6e206f726465722e6101202d20496620604261675468726573686f6c64733a3a67657428292e6c656e2829203d3d203634602c20616e6420746865207468726573686f6c6473206172652064657465726d696e6564206163636f7264696e6720746f11012020207468652070726f63656475726520676976656e2061626f76652c207468656e2074686520636f6e7374616e7420726174696f20697320657175616c20746f20322e6501202d20496620604261675468726573686f6c64733a3a67657428292e6c656e2829203d3d20323030602c20616e6420746865207468726573686f6c6473206172652064657465726d696e6564206163636f7264696e6720746f59012020207468652070726f63656475726520676976656e2061626f76652c207468656e2074686520636f6e7374616e7420726174696f20697320617070726f78696d6174656c7920657175616c20746f20312e3234382e6101202d20496620746865207468726573686f6c64206c69737420626567696e7320605b312c20322c20332c202e2e2e5d602c207468656e20616e20696420776974682073636f72652030206f7220312077696c6c2066616c6cf0202020696e746f2062616720302c20616e20696420776974682073636f726520322077696c6c2066616c6c20696e746f2062616720312c206574632e00302023204d6967726174696f6e00610120496e20746865206576656e7420746861742074686973206c6973742065766572206368616e6765732c206120636f7079206f6620746865206f6c642062616773206c697374206d7573742062652072657461696e65642e5d012057697468207468617420604c6973743a3a6d696772617465602063616e2062652063616c6c65642c2077686963682077696c6c20706572666f726d2074686520617070726f707269617465206d6967726174696f6e2e01890c273c4e6f6d696e6174696f6e506f6f6c73013c4e6f6d696e6174696f6e506f6f6c735440546f74616c56616c75654c6f636b65640100184000000000000000000000000000000000148c205468652073756d206f662066756e6473206163726f737320616c6c20706f6f6c732e0071012054686973206d69676874206265206c6f77657220627574206e6576657220686967686572207468616e207468652073756d206f662060746f74616c5f62616c616e636560206f6620616c6c205b60506f6f6c4d656d62657273605d590120626563617573652063616c6c696e672060706f6f6c5f77697468647261775f756e626f6e64656460206d696768742064656372656173652074686520746f74616c207374616b65206f662074686520706f6f6c277329012060626f6e6465645f6163636f756e746020776974686f75742061646a757374696e67207468652070616c6c65742d696e7465726e616c2060556e626f6e64696e67506f6f6c6027732e2c4d696e4a6f696e426f6e640100184000000000000000000000000000000000049c204d696e696d756d20616d6f756e7420746f20626f6e6420746f206a6f696e206120706f6f6c2e344d696e437265617465426f6e6401001840000000000000000000000000000000001ca0204d696e696d756d20626f6e6420726571756972656420746f20637265617465206120706f6f6c2e00650120546869732069732074686520616d6f756e74207468617420746865206465706f7369746f72206d7573742070757420617320746865697220696e697469616c207374616b6520696e2074686520706f6f6c2c20617320616e8820696e6469636174696f6e206f662022736b696e20696e207468652067616d65222e0069012054686973206973207468652076616c756520746861742077696c6c20616c7761797320657869737420696e20746865207374616b696e67206c6564676572206f662074686520706f6f6c20626f6e646564206163636f756e7480207768696c6520616c6c206f74686572206163636f756e7473206c656176652e204d6178506f6f6c730000100400086901204d6178696d756d206e756d626572206f66206e6f6d696e6174696f6e20706f6f6c7320746861742063616e2065786973742e20496620604e6f6e65602c207468656e20616e20756e626f756e646564206e756d626572206f664420706f6f6c732063616e2065786973742e384d6178506f6f6c4d656d626572730000100400084901204d6178696d756d206e756d626572206f66206d656d6265727320746861742063616e20657869737420696e207468652073797374656d2e20496620604e6f6e65602c207468656e2074686520636f756e74b8206d656d6265727320617265206e6f7420626f756e64206f6e20612073797374656d20776964652062617369732e544d6178506f6f6c4d656d62657273506572506f6f6c0000100400084101204d6178696d756d206e756d626572206f66206d656d626572732074686174206d61792062656c6f6e6720746f20706f6f6c2e20496620604e6f6e65602c207468656e2074686520636f756e74206f66a8206d656d62657273206973206e6f7420626f756e64206f6e20612070657220706f6f6c2062617369732e4c476c6f62616c4d6178436f6d6d697373696f6e00009404000c690120546865206d6178696d756d20636f6d6d697373696f6e20746861742063616e2062652063686172676564206279206120706f6f6c2e2055736564206f6e20636f6d6d697373696f6e207061796f75747320746f20626f756e64250120706f6f6c20636f6d6d697373696f6e73207468617420617265203e2060476c6f62616c4d6178436f6d6d697373696f6e602c206e65636573736172792069662061206675747572650d012060476c6f62616c4d6178436f6d6d697373696f6e60206973206c6f776572207468616e20736f6d652063757272656e7420706f6f6c20636f6d6d697373696f6e732e2c506f6f6c4d656d626572730001040500910c04000c4020416374697665206d656d626572732e00d02054574f582d4e4f54453a20534146452073696e636520604163636f756e7449646020697320612073656375726520686173682e54436f756e746572466f72506f6f6c4d656d62657273010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d61702c426f6e646564506f6f6c7300010405109d0c040004682053746f7261676520666f7220626f6e64656420706f6f6c732e54436f756e746572466f72426f6e646564506f6f6c73010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d61702c526577617264506f6f6c730001040510b10c04000875012052657761726420706f6f6c732e2054686973206973207768657265207468657265207265776172647320666f72206561636820706f6f6c20616363756d756c6174652e205768656e2061206d656d62657273207061796f7574206973590120636c61696d65642c207468652062616c616e636520636f6d6573206f757420666f207468652072657761726420706f6f6c2e204b657965642062792074686520626f6e64656420706f6f6c73206163636f756e742e54436f756e746572466f72526577617264506f6f6c73010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d61703c537562506f6f6c7353746f726167650001040510b50c04000819012047726f757073206f6620756e626f6e64696e6720706f6f6c732e20456163682067726f7570206f6620756e626f6e64696e6720706f6f6c732062656c6f6e677320746f2061290120626f6e64656420706f6f6c2c2068656e636520746865206e616d65207375622d706f6f6c732e204b657965642062792074686520626f6e64656420706f6f6c73206163636f756e742e64436f756e746572466f72537562506f6f6c7353746f72616765010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d6170204d657461646174610101040510cd0c0400045c204d6574616461746120666f722074686520706f6f6c2e48436f756e746572466f724d65746164617461010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d6170284c617374506f6f6c4964010010100000000004d0204576657220696e6372656173696e67206e756d626572206f6620616c6c20706f6f6c73206372656174656420736f206661722e4c52657665727365506f6f6c49644c6f6f6b7570000104050010040010dc20412072657665727365206c6f6f6b75702066726f6d2074686520706f6f6c2773206163636f756e7420696420746f206974732069642e0055012054686973206973206f6e6c79207573656420666f7220736c617368696e672e20496e20616c6c206f7468657220696e7374616e6365732c2074686520706f6f6c20696420697320757365642c20616e6420746865c0206163636f756e7473206172652064657465726d696e6973746963616c6c7920646572697665642066726f6d2069742e74436f756e746572466f7252657665727365506f6f6c49644c6f6f6b7570010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d617040436c61696d5065726d697373696f6e73010104050055050400040101204d61702066726f6d206120706f6f6c206d656d626572206163636f756e7420746f207468656972206f7074656420636c61696d207065726d697373696f6e2e013905016d080c2050616c6c65744964450a2070792f6e6f706c73048420546865206e6f6d696e6174696f6e20706f6f6c27732070616c6c65742069642e484d6178506f696e7473546f42616c616e636508040a301d0120546865206d6178696d756d20706f6f6c20706f696e74732d746f2d62616c616e636520726174696f207468617420616e20606f70656e6020706f6f6c2063616e20686176652e005501205468697320697320696d706f7274616e7420696e20746865206576656e7420736c617368696e672074616b657320706c61636520616e642074686520706f6f6c277320706f696e74732d746f2d62616c616e63657c20726174696f206265636f6d65732064697370726f706f7274696f6e616c2e006501204d6f72656f7665722c20746869732072656c6174657320746f207468652060526577617264436f756e7465726020747970652061732077656c6c2c206173207468652061726974686d65746963206f7065726174696f6e7355012061726520612066756e6374696f6e206f66206e756d626572206f6620706f696e74732c20616e642062792073657474696e6720746869732076616c756520746f20652e672e2031302c20796f7520656e73757265650120746861742074686520746f74616c206e756d626572206f6620706f696e747320696e207468652073797374656d20617265206174206d6f73742031302074696d65732074686520746f74616c5f69737375616e6365206f669c2074686520636861696e2c20696e20746865206162736f6c75746520776f72736520636173652e00490120466f7220612076616c7565206f662031302c20746865207468726573686f6c6420776f756c64206265206120706f6f6c20706f696e74732d746f2d62616c616e636520726174696f206f662031303a312e310120537563682061207363656e6172696f20776f756c6420616c736f20626520746865206571756976616c656e74206f662074686520706f6f6c206265696e672039302520736c61736865642e304d6178556e626f6e64696e67101020000000043d0120546865206d6178696d756d206e756d626572206f662073696d756c74616e656f757320756e626f6e64696e67206368756e6b7320746861742063616e20657869737420706572206d656d6265722e01d10c292c46617374556e7374616b65012c46617374556e7374616b651010486561640000d90c04000cc0205468652063757272656e74202268656164206f662074686520717565756522206265696e6720756e7374616b65642e00290120546865206865616420696e20697473656c662063616e2062652061206261746368206f6620757020746f205b60436f6e6669673a3a426174636853697a65605d207374616b6572732e14517565756500010405001804000cc020546865206d6170206f6620616c6c206163636f756e74732077697368696e6720746f20626520756e7374616b65642e003901204b6565707320747261636b206f6620604163636f756e744964602077697368696e6720746f20756e7374616b6520616e64206974277320636f72726573706f6e64696e67206465706f7369742e3c436f756e746572466f725175657565010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d61704c45726173546f436865636b506572426c6f636b0100101000000000208c204e756d626572206f66206572617320746f20636865636b2070657220626c6f636b2e0035012049662073657420746f20302c20746869732070616c6c657420646f6573206162736f6c7574656c79206e6f7468696e672e2043616e6e6f742062652073657420746f206d6f7265207468616e90205b60436f6e6669673a3a4d617845726173546f436865636b506572426c6f636b605d2e006501204261736564206f6e2074686520616d6f756e74206f662077656967687420617661696c61626c65206174205b6050616c6c65743a3a6f6e5f69646c65605d2c20757020746f2074686973206d616e792065726173206172655d0120636865636b65642e2054686520636865636b696e6720697320726570726573656e746564206279207570646174696e67205b60556e7374616b65526571756573743a3a636865636b6564605d2c207768696368206973502073746f72656420696e205b6048656164605d2e016d05017108041c4465706f7369741840344dd2c2070000000000000000000000086501204465706f73697420746f2074616b6520666f7220756e7374616b696e672c20746f206d616b6520737572652077652772652061626c6520746f20736c6173682074686520697420696e206f7264657220746f20636f766572c02074686520636f737473206f66207265736f7572636573206f6e20756e7375636365737366756c20756e7374616b652e01e50c2a4050617261636861696e734f726967696e00000000003234436f6e66696775726174696f6e0134436f6e66696775726174696f6e0c30416374697665436f6e6669670100e90c41030000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001027000080b2e60e80c3c9018096980000000000000000000000000005000000010000000100000001000000000006000000640000000100000000000000000000000000000000000000020000000200000002000000000100000004c8205468652061637469766520636f6e66696775726174696f6e20666f72207468652063757272656e742073657373696f6e2e3850656e64696e67436f6e666967730100ed0c04001c7c2050656e64696e6720636f6e66696775726174696f6e206368616e6765732e00590120546869732069732061206c697374206f6620636f6e66696775726174696f6e206368616e6765732c2065616368207769746820612073657373696f6e20696e6465782061742077686963682069742073686f756c6430206265206170706c6965642e00610120546865206c69737420697320736f7274656420617363656e64696e672062792073657373696f6e20696e6465782e20416c736f2c2074686973206c6973742063616e206f6e6c7920636f6e7461696e206174206d6f7374fc2032206974656d733a20666f7220746865206e6578742073657373696f6e20616e6420666f722074686520607363686564756c65645f73657373696f6e602e58427970617373436f6e73697374656e6379436865636b01007804000861012049662074686973206973207365742c207468656e2074686520636f6e66696775726174696f6e20736574746572732077696c6c206279706173732074686520636f6e73697374656e637920636865636b732e2054686973b4206973206d65616e7420746f2062652075736564206f6e6c7920617320746865206c617374207265736f72742e017105000001f50c332c5061726173536861726564012c5061726173536861726564104c43757272656e7453657373696f6e496e6465780100101000000000046c205468652063757272656e742073657373696f6e20696e6465782e5841637469766556616c696461746f72496e64696365730100f90c040008090120416c6c207468652076616c696461746f7273206163746976656c792070617274696369706174696e6720696e2070617261636861696e20636f6e73656e7375732eb020496e64696365732061726520696e746f207468652062726f616465722076616c696461746f72207365742e4c41637469766556616c696461746f724b6579730100fd0c0400085501205468652070617261636861696e206174746573746174696f6e206b657973206f66207468652076616c696461746f7273206163746976656c792070617274696369706174696e6720696e2070617261636861696e1d0120636f6e73656e7375732e20546869732073686f756c64206265207468652073616d65206c656e677468206173206041637469766556616c696461746f72496e6469636573602e4c416c6c6f77656452656c6179506172656e74730100010d140000000000046c20416c6c20616c6c6f7765642072656c61792d706172656e74732e019105000000343450617261496e636c7573696f6e013450617261496e636c7573696f6e0c54417661696c6162696c6974794269746669656c647300010405b5050d0d040004650120546865206c6174657374206269746669656c6420666f7220656163682076616c696461746f722c20726566657272656420746f20627920746865697220696e64657820696e207468652076616c696461746f72207365742e4c50656e64696e67417661696c6162696c697479000104059502110d040004b42043616e646964617465732070656e64696e6720617661696c6162696c6974792062792060506172614964602e7850656e64696e67417661696c6162696c697479436f6d6d69746d656e7473000104059502d90504000405012054686520636f6d6d69746d656e7473206f662063616e646964617465732070656e64696e6720617661696c6162696c6974792c2062792060506172614964602e0195050175080001150d353050617261496e686572656e74013050617261496e686572656e740820496e636c756465640000c501040018ec20576865746865722074686520706172617320696e686572656e742077617320696e636c756465642077697468696e207468697320626c6f636b2e0069012054686520604f7074696f6e3c28293e60206973206566666563746976656c7920612060626f6f6c602c20627574206974206e6576657220686974732073746f7261676520696e2074686520604e6f6e65602076617269616e74bc2064756520746f207468652067756172616e74656573206f66204652414d4527732073746f7261676520415049732e004901204966207468697320697320604e6f6e65602061742074686520656e64206f662074686520626c6f636b2c2077652070616e696320616e642072656e6465722074686520626c6f636b20696e76616c69642e304f6e436861696e566f7465730000190d04000445012053637261706564206f6e20636861696e206461746120666f722065787472616374696e67207265736f6c7665642064697370757465732061732077656c6c206173206261636b696e6720766f7465732e0199050000012d0d3634506172615363686564756c65720134506172615363686564756c6572103c56616c696461746f7247726f7570730100310d04001c6d0120416c6c207468652076616c696461746f722067726f7570732e204f6e6520666f72206561636820636f72652e20496e64696365732061726520696e746f206041637469766556616c696461746f727360202d206e6f74207468656d012062726f6164657220736574206f6620506f6c6b61646f742076616c696461746f72732c2062757420696e7374656164206a7573742074686520737562736574207573656420666f722070617261636861696e7320647572696e673820746869732073657373696f6e2e00490120426f756e643a20546865206e756d626572206f6620636f726573206973207468652073756d206f6620746865206e756d62657273206f662070617261636861696e7320616e6420706172617468726561646901206d756c7469706c65786572732e20526561736f6e61626c792c203130302d313030302e2054686520646f6d696e616e7420666163746f7220697320746865206e756d626572206f662076616c696461746f72733a20736166655020757070657220626f756e642061742031306b2e44417661696c6162696c697479436f7265730100350d0400205901204f6e6520656e74727920666f72206561636820617661696c6162696c69747920636f72652e20456e74726965732061726520604e6f6e65602069662074686520636f7265206973206e6f742063757272656e746c790d01206f636375706965642e2043616e2062652074656d706f726172696c792060536f6d6560206966207363686564756c656420627574206e6f74206f636375706965642e41012054686520692774682070617261636861696e2062656c6f6e677320746f20746865206927746820636f72652c2077697468207468652072656d61696e696e6720636f72657320616c6c206265696e676420706172617468726561642d6d756c7469706c65786572732e00d820426f756e64656420627920746865206d6178696d756d206f6620656974686572206f662074686573652074776f2076616c7565733ae42020202a20546865206e756d626572206f662070617261636861696e7320616e642070617261746872656164206d756c7469706c657865727345012020202a20546865206e756d626572206f662076616c696461746f727320646976696465642062792060636f6e66696775726174696f6e2e6d61785f76616c696461746f72735f7065725f636f7265602e4453657373696f6e5374617274426c6f636b01001010000000001c69012054686520626c6f636b206e756d626572207768657265207468652073657373696f6e207374617274206f636375727265642e205573656420746f20747261636b20686f77206d616e792067726f757020726f746174696f6e733c2068617665206f636375727265642e005501204e6f7465207468617420696e2074686520636f6e74657874206f662070617261636861696e73206d6f64756c6573207468652073657373696f6e206368616e6765206973207369676e616c656420647572696e6761012074686520626c6f636b20616e6420656e61637465642061742074686520656e64206f662074686520626c6f636b20286174207468652066696e616c697a6174696f6e2073746167652c20746f206265206578616374292e5901205468757320666f7220616c6c20696e74656e747320616e6420707572706f7365732074686520656666656374206f66207468652073657373696f6e206368616e6765206973206f6273657276656420617420746865650120626c6f636b20666f6c6c6f77696e67207468652073657373696f6e206368616e67652c20626c6f636b206e756d626572206f66207768696368207765207361766520696e20746869732073746f726167652076616c75652e28436c61696d51756575650100450d0400145901204f6e6520656e74727920666f72206561636820617661696c6162696c69747920636f72652e20546865206056656344657175656020726570726573656e7473207468652061737369676e6d656e747320746f2062656d01207363686564756c6564206f6e207468617420636f72652e20604e6f6e6560206973207573656420746f207369676e616c20746f206e6f74207363686564756c6520746865206e6578742070617261206f662074686520636f72655501206173207468657265206973206f6e652063757272656e746c79206265696e67207363686564756c65642e204e6f74207573696e6720604e6f6e6560206865726520776f756c64206f76657277726974652074686571012060436f726553746174656020696e207468652072756e74696d65204150492e205468652076616c756520636f6e7461696e656420686572652077696c6c206e6f742062652076616c69642061667465722074686520656e64206f666d01206120626c6f636b2e2052756e74696d6520415049732073686f756c64206265207573656420746f2064657465726d696e65207363686564756c656420636f7265732f20666f7220746865207570636f6d696e6720626c6f636b2e0000000037145061726173011450617261735040507666416374697665566f74654d617000010405d505550d040010b420416c6c2063757272656e746c792061637469766520505646207072652d636865636b696e6720766f7465732e002c20496e76617269616e743a7501202d20546865726520617265206e6f20505646207072652d636865636b696e6720766f74657320746861742065786973747320696e206c69737420627574206e6f7420696e207468652073657420616e6420766963652076657273612e44507666416374697665566f74654c6973740100650d040004350120546865206c697374206f6620616c6c2063757272656e746c79206163746976652050564620766f7465732e20417578696c6961727920746f2060507666416374697665566f74654d6170602e2850617261636861696e730100690d040010690120416c6c206c6561736520686f6c64696e672070617261636861696e732e204f72646572656420617363656e64696e672062792060506172614964602e204f6e2064656d616e642070617261636861696e7320617265206e6f742820696e636c756465642e00e820436f6e7369646572207573696e6720746865205b6050617261636861696e734361636865605d2074797065206f66206d6f64696679696e672e38506172614c6966656379636c65730001040595026d0d040004bc205468652063757272656e74206c6966656379636c65206f66206120616c6c206b6e6f776e2050617261204944732e144865616473000104059502f505040004a02054686520686561642d64617461206f66206576657279207265676973746572656420706172612e444d6f7374526563656e74436f6e746578740001040595021004000429012054686520636f6e74657874202872656c61792d636861696e20626c6f636b206e756d62657229206f6620746865206d6f737420726563656e742070617261636861696e20686561642e3c43757272656e74436f646548617368000104059502d50504000cb4205468652076616c69646174696f6e20636f64652068617368206f66206576657279206c69766520706172612e00e420436f72726573706f6e64696e6720636f64652063616e206265207265747269657665642077697468205b60436f6465427948617368605d2e3050617374436f64654861736800010405710dd50504001061012041637475616c207061737420636f646520686173682c20696e646963617465642062792074686520706172612069642061732077656c6c2061732074686520626c6f636b206e756d6265722061742077686963682069744420626563616d65206f757464617465642e00e420436f72726573706f6e64696e6720636f64652063616e206265207265747269657665642077697468205b60436f6465427948617368605d2e3050617374436f64654d657461010104059502750d0800000c4901205061737420636f6465206f662070617261636861696e732e205468652070617261636861696e73207468656d73656c766573206d6179206e6f74206265207265676973746572656420616e796d6f72652c49012062757420776520616c736f206b65657020746865697220636f6465206f6e2d636861696e20666f72207468652073616d6520616d6f756e74206f662074696d65206173206f7574646174656420636f6465b020746f206b65657020697420617661696c61626c6520666f7220617070726f76616c20636865636b6572732e3c50617374436f64655072756e696e670100810d04001869012057686963682070617261732068617665207061737420636f64652074686174206e65656473207072756e696e6720616e64207468652072656c61792d636861696e20626c6f636b2061742077686963682074686520636f6465690120776173207265706c616365642e204e6f746520746861742074686973206973207468652061637475616c20686569676874206f662074686520696e636c7564656420626c6f636b2c206e6f74207468652065787065637465643d01206865696768742061742077686963682074686520636f6465207570677261646520776f756c64206265206170706c6965642c20616c74686f7567682074686579206d617920626520657175616c2e6d01205468697320697320746f20656e737572652074686520656e7469726520616363657074616e636520706572696f6420697320636f76657265642c206e6f7420616e206f666673657420616363657074616e636520706572696f646d01207374617274696e672066726f6d207468652074696d65206174207768696368207468652070617261636861696e20706572636569766573206120636f6465207570677261646520617320686176696e67206f636375727265642e5501204d756c7469706c6520656e747269657320666f7220612073696e676c65207061726120617265207065726d69747465642e204f72646572656420617363656e64696e6720627920626c6f636b206e756d6265722e48467574757265436f646555706772616465730001040595021004000c29012054686520626c6f636b206e756d6265722061742077686963682074686520706c616e6e656420636f6465206368616e676520697320657870656374656420666f72206120706172612e650120546865206368616e67652077696c6c206265206170706c696564206166746572207468652066697273742070617261626c6f636b20666f72207468697320494420696e636c75646564207768696368206578656375746573190120696e2074686520636f6e74657874206f6620612072656c617920636861696e20626c6f636b20776974682061206e756d626572203e3d206065787065637465645f6174602e38467574757265436f646548617368000104059502d50504000c9c205468652061637475616c2066757475726520636f64652068617368206f66206120706172612e00e420436f72726573706f6e64696e6720636f64652063616e206265207265747269657665642077697468205b60436f6465427948617368605d2e5055706772616465476f41686561645369676e616c000104059502850d040028750120546869732069732075736564206279207468652072656c61792d636861696e20746f20636f6d6d756e696361746520746f20612070617261636861696e206120676f2d6168656164207769746820696e2074686520757067726164652c2070726f6365647572652e00750120546869732076616c756520697320616273656e74207768656e20746865726520617265206e6f207570677261646573207363686564756c6564206f7220647572696e67207468652074696d65207468652072656c617920636861696e550120706572666f726d732074686520636865636b732e20497420697320736574206174207468652066697273742072656c61792d636861696e20626c6f636b207768656e2074686520636f72726573706f6e64696e6775012070617261636861696e2063616e207377697463682069747320757067726164652066756e6374696f6e2e20417320736f6f6e206173207468652070617261636861696e277320626c6f636b20697320696e636c756465642c20746865702076616c7565206765747320726573657420746f20604e6f6e65602e006501204e4f544520746861742074686973206669656c6420697320757365642062792070617261636861696e7320766961206d65726b6c652073746f726167652070726f6f66732c207468657265666f7265206368616e67696e67c42074686520666f726d61742077696c6c2072657175697265206d6967726174696f6e206f662070617261636861696e732e60557067726164655265737472696374696f6e5369676e616c000104059502890d040024690120546869732069732075736564206279207468652072656c61792d636861696e20746f20636f6d6d756e6963617465207468617420746865726520617265207265737472696374696f6e7320666f7220706572666f726d696e677c20616e207570677261646520666f7220746869732070617261636861696e2e0059012054686973206d617920626520612062656361757365207468652070617261636861696e20776169747320666f7220746865207570677261646520636f6f6c646f776e20746f206578706972652e20416e6f746865726d0120706f74656e7469616c207573652063617365206973207768656e2077652077616e7420746f20706572666f726d20736f6d65206d61696e74656e616e63652028737563682061732073746f72616765206d6967726174696f6e29e020776520636f756c6420726573747269637420757067726164657320746f206d616b65207468652070726f636573732073696d706c65722e006501204e4f544520746861742074686973206669656c6420697320757365642062792070617261636861696e7320766961206d65726b6c652073746f726167652070726f6f66732c207468657265666f7265206368616e67696e67c42074686520666f726d61742077696c6c2072657175697265206d6967726174696f6e206f662070617261636861696e732e4055706772616465436f6f6c646f776e730100810d04000c510120546865206c697374206f662070617261636861696e73207468617420617265206177616974696e6720666f722074686569722075706772616465207265737472696374696f6e20746f20636f6f6c646f776e2e008c204f72646572656420617363656e64696e6720627920626c6f636b206e756d6265722e405570636f6d696e6755706772616465730100810d040010590120546865206c697374206f66207570636f6d696e6720636f64652075706772616465732e2045616368206974656d20697320612070616972206f66207768696368207061726120706572666f726d73206120636f6465e8207570677261646520616e642061742077686963682072656c61792d636861696e20626c6f636b2069742069732065787065637465642061742e008c204f72646572656420617363656e64696e6720627920626c6f636b206e756d6265722e30416374696f6e7351756575650101040510690d04000415012054686520616374696f6e7320746f20706572666f726d20647572696e6720746865207374617274206f6620612073706563696669632073657373696f6e20696e6465782e505570636f6d696e67506172617347656e657369730001040595028d0d040010a0205570636f6d696e6720706172617320696e7374616e74696174696f6e20617267756d656e74732e006501204e4f5445207468617420616674657220505646207072652d636865636b696e6720697320656e61626c65642074686520706172612067656e65736973206172672077696c6c2068617665206974277320636f646520736574610120746f20656d7074792e20496e73746561642c2074686520636f64652077696c6c20626520736176656420696e746f207468652073746f726167652072696768742061776179207669612060436f6465427948617368602e38436f64654279486173685265667301010406d50510100000000004290120546865206e756d626572206f66207265666572656e6365206f6e207468652076616c69646174696f6e20636f646520696e205b60436f6465427948617368605d2073746f726167652e28436f646542794861736800010406d505f105040010902056616c69646174696f6e20636f64652073746f7265642062792069747320686173682e00310120546869732073746f7261676520697320636f6e73697374656e742077697468205b60467574757265436f646548617368605d2c205b6043757272656e74436f646548617368605d20616e6448205b6050617374436f646548617368605d2e0125060185080440556e7369676e65645072696f726974792c20ffffffffffffffff0001910d382c496e697469616c697a6572012c496e697469616c697a65720838486173496e697469616c697a65640000c50104002021012057686574686572207468652070617261636861696e73206d6f64756c65732068617665206265656e20696e697469616c697a65642077697468696e207468697320626c6f636b2e0025012053656d616e746963616c6c7920612060626f6f6c602c2062757420746869732067756172616e746565732069742073686f756c64206e65766572206869742074686520747269652c6901206173207468697320697320636c656172656420696e20606f6e5f66696e616c697a656020616e64204672616d65206f7074696d697a657320604e6f6e65602076616c75657320746f20626520656d7074792076616c7565732e00710120417320612060626f6f6c602c20607365742866616c7365296020616e64206072656d6f766528296020626f7468206c65616420746f20746865206e6578742060676574282960206265696e672066616c73652c20627574206f6e657501206f66207468656d2077726974657320746f20746865207472696520616e64206f6e6520646f6573206e6f742e205468697320636f6e667573696f6e206d616b657320604f7074696f6e3c28293e60206d6f7265207375697461626c659020666f72207468652073656d616e74696373206f662074686973207661726961626c652e58427566666572656453657373696f6e4368616e6765730100950d04001c59012042756666657265642073657373696f6e206368616e67657320616c6f6e6720776974682074686520626c6f636b206e756d62657220617420776869636820746865792073686f756c64206265206170706c6965642e005d01205479706963616c6c7920746869732077696c6c20626520656d707479206f72206f6e6520656c656d656e74206c6f6e672e2041706172742066726f6d20746861742074686973206974656d206e65766572206869747334207468652073746f726167652e00690120486f776576657220746869732069732061206056656360207265676172646c65737320746f2068616e646c6520766172696f757320656467652063617365732074686174206d6179206f636375722061742072756e74696d65c0207570677261646520626f756e646172696573206f7220696620676f7665726e616e636520696e74657276656e65732e012d06000000390c446d70010c446d700c54446f776e776172644d6573736167655175657565730101040595029d0d040004d02054686520646f776e77617264206d657373616765732061646472657373656420666f722061206365727461696e20706172612e64446f776e776172644d65737361676551756575654865616473010104059502308000000000000000000000000000000000000000000000000000000000000000001c25012041206d617070696e6720746861742073746f7265732074686520646f776e77617264206d657373616765207175657565204d5143206865616420666f72206561636820706172612e00902045616368206c696e6b20696e207468697320636861696e20686173206120666f726d3a78206028707265765f686561642c20422c2048284d2929602c207768657265e8202d2060707265765f68656164603a206973207468652070726576696f757320686561642068617368206f72207a65726f206966206e6f6e652e2101202d206042603a206973207468652072656c61792d636861696e20626c6f636b206e756d62657220696e2077686963682061206d6573736167652077617320617070656e6465642ed4202d206048284d29603a206973207468652068617368206f6620746865206d657373616765206265696e6720617070656e6465642e4444656c6976657279466565466163746f72010104059502bd0740000064a7b3b6e00d000000000000000004c42054686520666163746f7220746f206d756c7469706c792074686520626173652064656c6976657279206665652062792e000000003a1048726d70011048726d70305c48726d704f70656e4368616e6e656c5265717565737473000104053506a50d040018bc2054686520736574206f662070656e64696e672048524d50206f70656e206368616e6e656c2072657175657374732e00c02054686520736574206973206163636f6d70616e6965642062792061206c69737420666f7220697465726174696f6e2e002c20496e76617269616e743a3d01202d20546865726520617265206e6f206368616e6e656c7320746861742065786973747320696e206c69737420627574206e6f7420696e207468652073657420616e6420766963652076657273612e6c48726d704f70656e4368616e6e656c52657175657374734c6973740100a90d0400006c48726d704f70656e4368616e6e656c52657175657374436f756e740101040595021010000000000c65012054686973206d617070696e6720747261636b7320686f77206d616e79206f70656e206368616e6e656c2072657175657374732061726520696e69746961746564206279206120676976656e2073656e64657220706172612e590120496e76617269616e743a206048726d704f70656e4368616e6e656c5265717565737473602073686f756c6420636f6e7461696e207468652073616d65206e756d626572206f66206974656d732074686174206861730501206028582c205f296020617320746865206e756d626572206f66206048726d704f70656e4368616e6e656c52657175657374436f756e746020666f72206058602e7c48726d7041636365707465644368616e6e656c52657175657374436f756e740101040595021010000000000c71012054686973206d617070696e6720747261636b7320686f77206d616e79206f70656e206368616e6e656c2072657175657374732077657265206163636570746564206279206120676976656e20726563697069656e7420706172612e6d0120496e76617269616e743a206048726d704f70656e4368616e6e656c5265717565737473602073686f756c6420636f6e7461696e207468652073616d65206e756d626572206f66206974656d732060285f2c20582960207769746855012060636f6e6669726d6564602073657420746f20747275652c20617320746865206e756d626572206f66206048726d7041636365707465644368616e6e656c52657175657374436f756e746020666f72206058602e6048726d70436c6f73654368616e6e656c5265717565737473000104053506c50104001c7101204120736574206f662070656e64696e672048524d5020636c6f7365206368616e6e656c20726571756573747320746861742061726520676f696e6720746f20626520636c6f73656420647572696e67207468652073657373696f6e2101206368616e67652e205573656420666f7220636865636b696e67206966206120676976656e206368616e6e656c206973207265676973746572656420666f7220636c6f737572652e00c02054686520736574206973206163636f6d70616e6965642062792061206c69737420666f7220697465726174696f6e2e002c20496e76617269616e743a3d01202d20546865726520617265206e6f206368616e6e656c7320746861742065786973747320696e206c69737420627574206e6f7420696e207468652073657420616e6420766963652076657273612e7048726d70436c6f73654368616e6e656c52657175657374734c6973740100a90d0400003848726d7057617465726d61726b7300010405950210040010b8205468652048524d502077617465726d61726b206173736f6369617465642077697468206561636820706172612e2c20496e76617269616e743a5501202d2065616368207061726120605060207573656420686572652061732061206b65792073686f756c642073617469736679206050617261733a3a69735f76616c69645f70617261285029602077697468696e20612c20202073657373696f6e2e3048726d704368616e6e656c73000104053506ad0d04000cb42048524d50206368616e6e656c2064617461206173736f6369617465642077697468206561636820706172612e2c20496e76617269616e743a7501202d2065616368207061727469636970616e7420696e20746865206368616e6e656c2073686f756c642073617469736679206050617261733a3a69735f76616c69645f70617261285029602077697468696e20612073657373696f6e2e6048726d70496e67726573734368616e6e656c73496e646578010104059502690d040034710120496e67726573732f65677265737320696e646578657320616c6c6f7720746f2066696e6420616c6c207468652073656e6465727320616e642072656365697665727320676976656e20746865206f70706f7369746520736964652e1420492e652e0021012028612920696e677265737320696e64657820616c6c6f777320746f2066696e6420616c6c207468652073656e6465727320666f72206120676976656e20726563697069656e742e1d01202862292065677265737320696e64657820616c6c6f777320746f2066696e6420616c6c2074686520726563697069656e747320666f72206120676976656e2073656e6465722e003020496e76617269616e74733a5101202d20666f72206561636820696e677265737320696e64657820656e74727920666f72206050602065616368206974656d2060496020696e2074686520696e6465782073686f756c642070726573656e7420696e782020206048726d704368616e6e656c7360206173206028492c205029602e4d01202d20666f7220656163682065677265737320696e64657820656e74727920666f72206050602065616368206974656d2060456020696e2074686520696e6465782073686f756c642070726573656e7420696e782020206048726d704368616e6e656c7360206173206028502c204529602e0101202d2074686572652073686f756c64206265206e6f206f746865722064616e676c696e67206368616e6e656c7320696e206048726d704368616e6e656c73602e68202d2074686520766563746f72732061726520736f727465642e5c48726d704567726573734368616e6e656c73496e646578010104059502690d0400004c48726d704368616e6e656c436f6e74656e7473010104053506b10d040008ac2053746f7261676520666f7220746865206d6573736167657320666f722065616368206368616e6e656c2e650120496e76617269616e743a2063616e6e6f74206265206e6f6e2d656d7074792069662074686520636f72726573706f6e64696e67206368616e6e656c20696e206048726d704368616e6e656c736020697320604e6f6e65602e4848726d704368616e6e656c44696765737473010104059502b90d0400186901204d61696e7461696e732061206d617070696e6720746861742063616e206265207573656420746f20616e7377657220746865207175657374696f6e3a20576861742070617261732073656e742061206d657373616765206174e42074686520676976656e20626c6f636b206e756d62657220666f72206120676976656e2072656365697665722e20496e76617269616e74733aa8202d2054686520696e6e657220605665633c5061726149643e60206973206e6576657220656d7074792ee8202d2054686520696e6e657220605665633c5061726149643e602063616e6e6f742073746f72652074776f2073616d652060506172614964602e6d01202d20546865206f7574657220766563746f7220697320736f7274656420617363656e64696e6720627920626c6f636b206e756d62657220616e642063616e6e6f742073746f72652074776f206974656d732077697468207468655420202073616d6520626c6f636b206e756d6265722e0131060189080001c10d3c3c5061726153657373696f6e496e666f013c5061726153657373696f6e496e666f145041737369676e6d656e744b657973556e736166650100c50d04000ca42041737369676e6d656e74206b65797320666f72207468652063757272656e742073657373696f6e2e6d01204e6f7465207468617420746869732041504920697320707269766174652064756520746f206974206265696e672070726f6e6520746f20276f66662d62792d6f6e65272061742073657373696f6e20626f756e6461726965732eac205768656e20696e20646f7562742c20757365206053657373696f6e73602041504920696e73746561642e544561726c6965737453746f72656453657373696f6e010010100000000004010120546865206561726c696573742073657373696f6e20666f722077686963682070726576696f75732073657373696f6e20696e666f2069732073746f7265642e2053657373696f6e730001040610c90d04000ca42053657373696f6e20696e666f726d6174696f6e20696e206120726f6c6c696e672077696e646f772e35012053686f756c64206861766520616e20656e74727920696e2072616e676520604561726c6965737453746f72656453657373696f6e2e2e3d43757272656e7453657373696f6e496e646578602e750120446f6573206e6f74206861766520616e7920656e7472696573206265666f7265207468652073657373696f6e20696e64657820696e207468652066697273742073657373696f6e206368616e6765206e6f74696669636174696f6e2e2c4163636f756e744b6579730001040610d1010400047101205468652076616c696461746f72206163636f756e74206b657973206f66207468652076616c696461746f7273206163746976656c792070617274696369706174696e6720696e2070617261636861696e20636f6e73656e7375732e5453657373696f6e4578656375746f72506172616d7300010406107905040004c4204578656375746f7220706172616d657465722073657420666f72206120676976656e2073657373696f6e20696e646578000000003d345061726173446973707574657301345061726173446973707574657314444c6173745072756e656453657373696f6e000010040008010120546865206c617374207072756e65642073657373696f6e2c20696620616e792e20416c6c20646174612073746f7265642062792074686973206d6f64756c6554207265666572656e6365732073657373696f6e732e2044697370757465730001080502d50dd90d040004050120416c6c206f6e676f696e67206f7220636f6e636c7564656420646973707574657320666f7220746865206c617374207365766572616c2073657373696f6e732e444261636b6572734f6e44697370757465730001080502d50ddd0d0400089c204261636b696e6720766f7465732073746f72656420666f72206561636820646973707574652e8c20546869732073746f72616765206973207573656420666f7220736c617368696e672e20496e636c756465640001080502d50d10040008450120416c6c20696e636c7564656420626c6f636b73206f6e2074686520636861696e2c2061732077656c6c2061732074686520626c6f636b206e756d62657220696e207468697320636861696e207468617459012073686f756c64206265207265766572746564206261636b20746f206966207468652063616e64696461746520697320646973707574656420616e642064657465726d696e656420746f20626520696e76616c69642e1846726f7a656e01006902040010110120576865746865722074686520636861696e2069732066726f7a656e2e2053746172747320617320604e6f6e65602e205768656e20746869732069732060536f6d65602c35012074686520636861696e2077696c6c206e6f742061636365707420616e79206e65772070617261636861696e20626c6f636b7320666f72206261636b696e67206f7220696e636c7573696f6e2c090120616e64206974732076616c756520696e6469636174657320746865206c6173742076616c696420626c6f636b206e756d62657220696e2074686520636861696e2ef82049742063616e206f6e6c7920626520736574206261636b20746f20604e6f6e656020627920676f7665726e616e636520696e74657276656e74696f6e2e013906018d080001e10d3e345061726173536c617368696e6701345061726173536c617368696e670840556e6170706c696564536c61736865730001080502d50de50d040004902056616c696461746f72732070656e64696e67206469737075746520736c61736865732e4856616c696461746f72536574436f756e747300010405101004000484206056616c696461746f72536574436f756e7460207065722073657373696f6e2e013d06000001f50d3f684f6e44656d616e6441737369676e6d656e7450726f766964657201684f6e44656d616e6441737369676e6d656e7450726f76696465720c2c53706f74547261666669630100bd0740000064a7b3b6e00d0000000000000000086501204b6565707320747261636b206f6620746865206d756c7469706c696572207573656420746f2063616c63756c617465207468652063757272656e742073706f7420707269636520666f7220746865206f6e2064656d616e64282061737369676e65722e344f6e44656d616e6451756575650100f90d040008410120546865206f726465722073746f7261676520656e7472792e2055736573206120566563446571756520746f2062652061626c6520746f207075736820746f207468652066726f6e74206f6620746865c02071756575652066726f6d20746865207363686564756c6572206f6e2073657373696f6e20626f756e6461726965732e38506172614964416666696e697479000104049502010e04000c7101204d617073206120605061726149646020746f2060436f7265496e6465786020616e64206b6565707320747261636b206f6620686f77206d616e792061737369676e6d656e747320746865207363686564756c65722068617320696e5d012069742773206c6f6f6b61686561642e204b656570696e6720747261636b206f66207468697320616666696e6974792070726576656e747320706172616c6c656c20657865637574696f6e206f66207468652073616d659c206050617261496460206f6e2074776f206f72206d6f72652060436f7265496e6465786065732e014d06019908044c5472616666696344656661756c7456616c7565bd0740000064a7b3b6e00d000000000000000004cc205468652064656661756c742076616c756520666f72207468652073706f742074726166666963206d756c7469706c6965722e01050e4068436f726574696d6541737369676e6d656e7450726f76696465720168436f726574696d6541737369676e6d656e7450726f76696465720834436f72655363686564756c657300010404090e0d0e0400106c205363686564756c65642061737369676e6d656e7420736574732e006d012041737369676e6d656e7473206173206f662074686520676976656e20626c6f636b206e756d6265722e20546865792077696c6c20676f20696e746f207374617465206f6e63652074686520626c6f636b206e756d626572206973d020726561636865642028616e64207265706c6163652077686174657665722077617320696e207468657265206265666f7265292e3c436f726544657363726970746f7273010104047d08110e08000010a02041737369676e6d656e7473207768696368206172652063757272656e746c79206163746976652e00690120546865792077696c6c206265207069636b65642066726f6d206050656e64696e6741737369676e6d656e747360206f6e636520776520726561636820746865207363686564756c656420626c6f636b206e756d62657220696e58206050656e64696e6741737369676e6d656e7473602e00000001310e412452656769737472617201245265676973747261720c2c50656e64696e67537761700001040595029502040004642050656e64696e672073776170206f7065726174696f6e732e145061726173000104059502350e040010050120416d6f756e742068656c64206f6e206465706f73697420666f722065616368207061726120616e6420746865206f726967696e616c206465706f7369746f722e0071012054686520676976656e206163636f756e7420494420697320726573706f6e7369626c6520666f72207265676973746572696e672074686520636f646520616e6420696e697469616c206865616420646174612c20627574206d61795501206f6e6c7920646f20736f2069662069742069736e27742079657420726567697374657265642e2028416674657220746861742c206974277320757020746f20676f7665726e616e636520746f20646f20736f2e29384e65787446726565506172614964010095021000000000046020546865206e65787420667265652060506172614964602e015106019d08082c506172614465706f73697418400080ca3961240000000000000000000008d420546865206465706f73697420746f206265207061696420746f2072756e2061206f6e2d64656d616e642070617261636861696e2e3d0120546869732073686f756c6420696e636c7564652074686520636f737420666f722073746f72696e67207468652067656e65736973206865616420616e642076616c69646174696f6e20636f64652e48446174614465706f7369745065724279746518405543de1300000000000000000000000004c420546865206465706f73697420746f20626520706169642070657220627974652073746f726564206f6e20636861696e2e013d0e4614536c6f74730114536c6f747304184c6561736573010104059502410e040040150120416d6f756e74732068656c64206f6e206465706f73697420666f7220656163682028706f737369626c792066757475726529206c65617365642070617261636861696e2e006101205468652061637475616c20616d6f756e74206c6f636b6564206f6e2069747320626568616c6620627920616e79206163636f756e7420617420616e792074696d6520697320746865206d6178696d756d206f66207468652901207365636f6e642076616c756573206f6620746865206974656d7320696e2074686973206c6973742077686f73652066697273742076616c756520697320746865206163636f756e742e00610120546865206669727374206974656d20696e20746865206c6973742069732074686520616d6f756e74206c6f636b656420666f72207468652063757272656e74204c6561736520506572696f642e20466f6c6c6f77696e67b0206974656d732061726520666f72207468652073756273657175656e74206c6561736520706572696f64732e006101205468652064656661756c742076616c75652028616e20656d707479206c6973742920696d706c6965732074686174207468652070617261636861696e206e6f206c6f6e6765722065786973747320286f72206e65766572b42065786973746564292061732066617220617320746869732070616c6c657420697320636f6e6365726e65642e00510120496620612070617261636861696e20646f65736e2774206578697374202a7965742a20627574206973207363686564756c656420746f20657869737420696e20746865206675747572652c207468656e20697461012077696c6c206265206c6566742d7061646465642077697468206f6e65206f72206d6f726520604e6f6e65607320746f2064656e6f74652074686520666163742074686174206e6f7468696e672069732068656c64206f6e5d01206465706f73697420666f7220746865206e6f6e2d6578697374656e7420636861696e2063757272656e746c792c206275742069732068656c6420617420736f6d6520706f696e7420696e20746865206675747572652e00dc20497420697320696c6c6567616c20666f72206120604e6f6e65602076616c756520746f20747261696c20696e20746865206c6973742e01550601a108082c4c65617365506572696f641010803a090004dc20546865206e756d626572206f6620626c6f636b73206f76657220776869636820612073696e676c6520706572696f64206c617374732e2c4c656173654f666673657410100000000004d420546865206e756d626572206f6620626c6f636b7320746f206f66667365742065616368206c6561736520706572696f642062792e01450e472041756374696f6e73012041756374696f6e73103841756374696f6e436f756e7465720100101000000000048c204e756d626572206f662061756374696f6e73207374617274656420736f206661722e2c41756374696f6e496e666f0000a503040014f820496e666f726d6174696f6e2072656c6174696e6720746f207468652063757272656e742061756374696f6e2c206966207468657265206973206f6e652e00450120546865206669727374206974656d20696e20746865207475706c6520697320746865206c6561736520706572696f6420696e646578207468617420746865206669727374206f662074686520666f7572510120636f6e746967756f7573206c6561736520706572696f6473206f6e2061756374696f6e20697320666f722e20546865207365636f6e642069732074686520626c6f636b206e756d626572207768656e207468655d012061756374696f6e2077696c6c2022626567696e20746f20656e64222c20692e652e2074686520666972737420626c6f636b206f662074686520456e64696e6720506572696f64206f66207468652061756374696f6e2e3c5265736572766564416d6f756e747300010405490e18040008310120416d6f756e74732063757272656e746c7920726573657276656420696e20746865206163636f756e7473206f662074686520626964646572732063757272656e746c792077696e6e696e673820287375622d2972616e6765732e1c57696e6e696e6700010405104d0e04000c6101205468652077696e6e696e67206269647320666f722065616368206f66207468652031302072616e67657320617420656163682073616d706c6520696e207468652066696e616c20456e64696e6720506572696f64206f664901207468652063757272656e742061756374696f6e2e20546865206d61702773206b65792069732074686520302d626173656420696e64657820696e746f207468652053616d706c652053697a652e205468651d012066697273742073616d706c65206f662074686520656e64696e6720706572696f6420697320303b20746865206c617374206973206053616d706c652053697a65202d2031602e01590601a5081030456e64696e67506572696f64101040190100041d0120546865206e756d626572206f6620626c6f636b73206f76657220776869636820616e2061756374696f6e206d617920626520726574726f6163746976656c7920656e6465642e3053616d706c654c656e6774681010140000000cf020546865206c656e677468206f6620656163682073616d706c6520746f2074616b6520647572696e672074686520656e64696e6720706572696f642e00d42060456e64696e67506572696f6460202f206053616d706c654c656e67746860203d20546f74616c2023206f662053616d706c657338536c6f7452616e6765436f756e74101024000000004c4c65617365506572696f6473506572536c6f741010080000000001590e482443726f77646c6f616e012443726f77646c6f616e101446756e64730001040595025d0e0400046820496e666f206f6e20616c6c206f66207468652066756e64732e204e657752616973650100690d0400085501205468652066756e64732074686174206861766520686164206164646974696f6e616c20636f6e747269627574696f6e7320647572696e6720746865206c61737420626c6f636b2e20546869732069732075736564150120696e206f7264657220746f2064657465726d696e652077686963682066756e64732073686f756c64207375626d6974206e6577206f72207570646174656420626964732e30456e64696e6773436f756e74010010100000000004290120546865206e756d626572206f662061756374696f6e732074686174206861766520656e746572656420696e746f20746865697220656e64696e6720706572696f6420736f206661722e344e65787446756e64496e646578010010100000000004a820547261636b657220666f7220746865206e65787420617661696c61626c652066756e6420696e64657801610601a9080c2050616c6c65744964450a2070792f6366756e64080d01206050616c6c657449646020666f72207468652063726f77646c6f616e2070616c6c65742e20416e20617070726f7072696174652076616c756520636f756c6420626564206050616c6c65744964282a622270792f6366756e642229603c4d696e436f6e747269627574696f6e1840180ca5d4e8000000000000000000000008610120546865206d696e696d756d20616d6f756e742074686174206d617920626520636f6e747269627574656420696e746f20612063726f77646c6f616e2e2053686f756c6420616c6d6f7374206365727461696e6c792062657c206174206c6561737420604578697374656e7469616c4465706f736974602e3c52656d6f76654b6579734c696d69741010e803000004e4204d6178206e756d626572206f662073746f72616765206b65797320746f2072656d6f7665207065722065787472696e7369632063616c6c2e01650e4920436f726574696d6500016d0601ad08042042726f6b657249641010ed03000004ac2054686520506172614964206f66207468652062726f6b65722073797374656d2070617261636861696e2e01690e4a2458636d50616c6c6574012458636d50616c6c657430305175657279436f756e74657201002c200000000000000000048820546865206c617465737420617661696c61626c6520717565727920696e6465782e1c51756572696573000104022c6d0e0400045420546865206f6e676f696e6720717565726965732e28417373657454726170730101040630101000000000106820546865206578697374696e672061737365742074726170732e006101204b65792069732074686520626c616b6532203235362068617368206f6620286f726967696e2c2076657273696f6e65642060417373657473602920706169722e2056616c756520697320746865206e756d626572206f661d012074696d65732074686973207061697220686173206265656e20747261707065642028757375616c6c79206a75737420312069662069742065786973747320617420616c6c292e385361666558636d56657273696f6e00001004000861012044656661756c742076657273696f6e20746f20656e636f64652058434d207768656e206c61746573742076657273696f6e206f662064657374696e6174696f6e20697320756e6b6e6f776e2e20496620604e6f6e65602c3d01207468656e207468652064657374696e6174696f6e732077686f73652058434d2076657273696f6e20697320756e6b6e6f776e2061726520636f6e7369646572656420756e726561636861626c652e40537570706f7274656456657273696f6e0001080502810e10040004f020546865204c61746573742076657273696f6e732074686174207765206b6e6f7720766172696f7573206c6f636174696f6e7320737570706f72742e4056657273696f6e4e6f746966696572730001080502810e2c040004050120416c6c206c6f636174696f6e7320746861742077652068617665207265717565737465642076657273696f6e206e6f74696669636174696f6e732066726f6d2e5056657273696f6e4e6f74696679546172676574730001080502810e850e04000871012054686520746172676574206c6f636174696f6e73207468617420617265207375627363726962656420746f206f75722076657273696f6e206368616e6765732c2061732077656c6c20617320746865206d6f737420726563656e7494206f66206f75722076657273696f6e7320776520696e666f726d6564207468656d206f662e5456657273696f6e446973636f7665727951756575650100890e04000c65012044657374696e6174696f6e732077686f7365206c61746573742058434d2076657273696f6e20776520776f756c64206c696b6520746f206b6e6f772e204475706c696361746573206e6f7420616c6c6f7765642c20616e6471012074686520607533326020636f756e74657220697320746865206e756d626572206f662074696d6573207468617420612073656e6420746f207468652064657374696e6174696f6e20686173206265656e20617474656d707465642c8c20776869636820697320757365642061732061207072696f726974697a6174696f6e2e4043757272656e744d6967726174696f6e0000950e0400049c205468652063757272656e74206d6967726174696f6e27732073746167652c20696620616e792e5452656d6f74654c6f636b656446756e6769626c657300010c0502029d0ea50e040004f02046756e6769626c6520617373657473207768696368207765206b6e6f7720617265206c6f636b6564206f6e20612072656d6f746520636861696e2e3c4c6f636b656446756e6769626c65730001040200b50e040004e02046756e6769626c6520617373657473207768696368207765206b6e6f7720617265206c6f636b6564206f6e207468697320636861696e2e5458636d457865637574696f6e53757370656e646564010078040004b420476c6f62616c2073757370656e73696f6e207374617465206f66207468652058434d206578656375746f722e01810601b1080001c10e63304d657373616765517565756501304d65737361676551756575650c30426f6f6b5374617465466f7201010405b107c50e74000000000000000000000000000000000000000000000000000000000004cc2054686520696e646578206f662074686520666972737420616e64206c61737420286e6f6e2d656d707479292070616765732e2c53657276696365486561640000b107040004bc20546865206f726967696e2061742077686963682077652073686f756c6420626567696e20736572766963696e672e1450616765730001080505d10ed50e0400048820546865206d6170206f66207061676520696e646963657320746f2070616765732e01ad0701b9080c204865617053697a65101000000100143d01205468652073697a65206f662074686520706167653b207468697320696d706c69657320746865206d6178696d756d206d6573736167652073697a652077686963682063616e2062652073656e742e005901204120676f6f642076616c756520646570656e6473206f6e20746865206578706563746564206d6573736167652073697a65732c20746865697220776569676874732c207468652077656967687420746861742069735d0120617661696c61626c6520666f722070726f63657373696e67207468656d20616e6420746865206d6178696d616c206e6565646564206d6573736167652073697a652e20546865206d6178696d616c206d65737361676511012073697a6520697320736c696768746c79206c6f776572207468616e207468697320617320646566696e6564206279205b604d61784d6573736167654c656e4f66605d2e204d61785374616c651010100000000c5d0120546865206d6178696d756d206e756d626572206f66207374616c652070616765732028692e652e206f66206f766572776569676874206d657373616765732920616c6c6f776564206265666f72652063756c6c696e6751012063616e2068617070656e2e204f6e636520746865726520617265206d6f7265207374616c65207061676573207468616e20746869732c207468656e20686973746f726963616c207061676573206d6179206265fc2064726f707065642c206576656e206966207468657920636f6e7461696e20756e70726f636573736564206f766572776569676874206d657373616765732e34536572766963655765696768740d0840010700a0db215d1333333333333333331441012054686520616d6f756e74206f66207765696768742028696620616e79292077686963682073686f756c642062652070726f766964656420746f20746865206d65737361676520717565756520666f726820736572766963696e6720656e717565756564206974656d732e00fc2054686973206d6179206265206c65676974696d6174656c7920604e6f6e656020696e207468652063617365207468617420796f752077696c6c2063616c6ca82060536572766963655175657565733a3a736572766963655f71756575657360206d616e75616c6c792e01dd0e642441737365745261746501244173736574526174650458436f6e76657273696f6e52617465546f4e617469766500010402ecbd0704000c1d01204d61707320616e20617373657420746f2069747320666978656420706f696e7420726570726573656e746174696f6e20696e20746865206e61746976652062616c616e63652e004d0120452e672e20606e61746976655f616d6f756e74203d2061737365745f616d6f756e74202a20436f6e76657273696f6e52617465546f4e61746976653a3a3c543e3a3a6765742861737365745f6b696e64296001b90701c1080001e10e6514426565667901144265656679142c417574686f7269746965730100e50e04000470205468652063757272656e7420617574686f726974696573207365743856616c696461746f72536574496401002c2000000000000000000474205468652063757272656e742076616c696461746f72207365742069643c4e657874417574686f7269746965730100e50e040004ec20417574686f72697469657320736574207363686564756c656420746f2062652075736564207769746820746865206e6578742073657373696f6e30536574496453657373696f6e000104052c1004002851012041206d617070696e672066726f6d2042454546592073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e0045012054686973206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e2070726f6f66732e20416e2065717569766f636174696f6e2070726f6f66206d7573744d0120636f6e7461696e732061206b65792d6f776e6572736869702070726f6f6620666f72206120676976656e2073657373696f6e2c207468657265666f7265207765206e65656420612077617920746f207469653d0120746f6765746865722073657373696f6e7320616e6420424545465920736574206964732c20692e652e207765206e65656420746f2076616c6964617465207468617420612076616c696461746f7241012077617320746865206f776e6572206f66206120676976656e206b6579206f6e206120676976656e2073657373696f6e2c20616e642077686174207468652061637469766520736574204944207761735420647572696e6720746861742073657373696f6e2e00dc2054574f582d4e4f54453a206056616c696461746f72536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e3047656e65736973426c6f636b0100690204000cdc20426c6f636b206e756d62657220776865726520424545465920636f6e73656e73757320697320656e61626c65642f737461727465642e6901204279206368616e67696e67207468697320287468726f7567682070726976696c6567656420607365745f6e65775f67656e65736973282960292c20424545465920636f6e73656e737573206973206566666563746976656c79ac207265737461727465642066726f6d20746865206e65776c792073657420626c6f636b206e756d6265722e01c107000c384d6178417574686f7269746965731010a086010004d420546865206d6178696d756d206e756d626572206f6620617574686f72697469657320746861742063616e2062652061646465642e344d61784e6f6d696e61746f727310100002000004d420546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320666f7220656163682076616c696461746f722e584d6178536574496453657373696f6e456e74726965732c20a80000000000000018390120546865206d6178696d756d206e756d626572206f6620656e747269657320746f206b65657020696e207468652073657420696420746f2073657373696f6e20696e646578206d617070696e672e0031012053696e6365207468652060536574496453657373696f6e60206d6170206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e73207468697329012076616c75652073686f756c642072656c61746520746f2074686520626f6e64696e67206475726174696f6e206f66207768617465766572207374616b696e672073797374656d2069733501206265696e6720757365642028696620616e79292e2049662065717569766f636174696f6e2068616e646c696e67206973206e6f7420656e61626c6564207468656e20746869732076616c7565342063616e206265207a65726f2e01ed0ec80c4d6d72010c4d6d720c20526f6f74486173680100308000000000000000000000000000000000000000000000000000000000000000000458204c6174657374204d4d5220526f6f7420686173682e384e756d6265724f664c656176657301002c20000000000000000004b02043757272656e742073697a65206f6620746865204d4d5220286e756d626572206f66206c6561766573292e144e6f646573000104062c300400108020486173686573206f6620746865206e6f64657320696e20746865204d4d522e002d01204e6f7465207468697320636f6c6c656374696f6e206f6e6c7920636f6e7461696e73204d4d52207065616b732c2074686520696e6e6572206e6f6465732028616e64206c656176657329bc20617265207072756e656420616e64206f6e6c792073746f72656420696e20746865204f6666636861696e2044422e00000000c93042656566794d6d724c656166013042656566794d6d724c65616608404265656679417574686f7269746965730100f10eb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004a02044657461696c73206f662063757272656e7420424545465920617574686f72697479207365742e5042656566794e657874417574686f7269746965730100f10eb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c942044657461696c73206f66206e65787420424545465920617574686f72697479207365742e00510120546869732073746f7261676520656e747279206973207573656420617320636163686520666f722063616c6c7320746f20607570646174655f62656566795f6e6578745f617574686f726974795f736574602e00000000ca404964656e746974794d69677261746f720001e10701c5080000f8f50e042048436865636b4e6f6e5a65726f53656e646572fd0ec50140436865636b5370656356657273696f6e010f1038436865636b547856657273696f6e050f1030436865636b47656e65736973090f3038436865636b4d6f7274616c6974790d0f3028436865636b4e6f6e6365150fc5012c436865636b576569676874190fc501604368617267655472616e73616374696f6e5061796d656e741d0fc501210f'; diff --git a/src/test-helpers/registries/kusamaRegistry.ts b/src/test-helpers/registries/kusamaRegistry.ts index a23444d3f..4728e42d9 100644 --- a/src/test-helpers/registries/kusamaRegistry.ts +++ b/src/test-helpers/registries/kusamaRegistry.ts @@ -19,6 +19,7 @@ import { TypeRegistry } from '@polkadot/types'; import { getSpecTypes } from '@polkadot/types-known'; import { kusamaMetadataV2008 } from '../metadata/kusamaV2008Metadata'; +import { kusamaMetadataV1002000 } from '../metadata/kusamaV1002000Metadata'; /** * Create a type registry for Kusama. @@ -43,9 +44,10 @@ function createKusamaRegistryDeprecated(): TypeRegistry { * * @param specVersion Kusama runtime spec version to get type defs for. */ -function createKusamaRegistry(specVersion: number): TypeRegistry { +function createKusamaRegistry(specVersion: number, metadata: `0x${string}`): TypeRegistry { const registry = new TypeRegistry(); + registry.register(getSpecTypes(registry, 'Kusama', 'kusama', specVersion)); registry.setChainProperties( registry.createType('ChainProperties', { ss58Format: 2, @@ -54,9 +56,7 @@ function createKusamaRegistry(specVersion: number): TypeRegistry { }), ); - registry.register(getSpecTypes(registry, 'Kusama', 'kusama', specVersion)); - - registry.setMetadata(new Metadata(registry, kusamaMetadataV2008)); + registry.setMetadata(new Metadata(registry, metadata)); return registry; } @@ -69,4 +69,9 @@ export const kusamaRegistry = createKusamaRegistryDeprecated(); /** * Kusama v2025 TypeRegistry. */ -export const kusamRegistryV2025 = createKusamaRegistry(2025); +export const kusamRegistryV2025 = createKusamaRegistry(2025, kusamaMetadataV2008); + +/** + * Kusama v1002000 TypeRegistry. + */ +export const kusamRegistryV1002000 = createKusamaRegistry(1002000, kusamaMetadataV1002000); From 9012e2436b68f14ef25e7b3e85d76d92dccbae75 Mon Sep 17 00:00:00 2001 From: Imod7 Date: Thu, 13 Jun 2024 12:05:28 +0200 Subject: [PATCH 04/26] updated docs --- docs/dist/app.bundle.js | 2 +- docs/src/openapi-v1.yaml | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/dist/app.bundle.js b/docs/dist/app.bundle.js index 717cb36c4..76492e4c4 100644 --- a/docs/dist/app.bundle.js +++ b/docs/dist/app.bundle.js @@ -682,7 +682,7 @@ eval("module.exports = function(data, filename, mime, bom) {\n var blobData = \*****************************/ /***/ ((module) => { -eval("module.exports = {\"openapi\":\"3.0.0\",\"info\":{\"title\":\"Substrate API Sidecar\",\"description\":\"Substrate API Sidecar is a REST service that makes it easy to interact with blockchain nodes built using Substrate's FRAME framework.\",\"contact\":{\"url\":\"https://github.com/paritytech/substrate-api-sidecar\"},\"license\":{\"name\":\"GPL-3.0-or-later\",\"url\":\"https://github.com/paritytech/substrate-api-sidecar/blob/master/LICENSE\"},\"version\":\"19.0.1\"},\"servers\":[{\"url\":\"https://polkadot-public-sidecar.parity-chains.parity.io/\",\"description\":\"Polkadot Parity public sidecar\"},{\"url\":\"https://kusama-public-sidecar.parity-chains.parity.io/\",\"description\":\"Kusama Parity public sidecar\"},{\"url\":\"https://polkadot-asset-hub-public-sidecar.parity-chains.parity.io/\",\"description\":\"Polkadot Asset Hub Parity public sidecar\"},{\"url\":\"https://kusama-asset-hub-public-sidecar.parity-chains.parity.io/\",\"description\":\"Kusama Asset Hub Parity public sidecar\"}],\"tags\":[{\"name\":\"accounts\"},{\"name\":\"blocks\"},{\"name\":\"contracts\"},{\"name\":\"node\",\"description\":\"node connected to sidecar\"},{\"name\":\"pallets\",\"description\":\"pallets employed in the runtime\"},{\"name\":\"runtime\"},{\"name\":\"transaction\"},{\"name\":\"paras\"},{\"name\":\"trace\"}],\"paths\":{\"/accounts/{accountId}/asset-balances\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an array of asset-balances for an account.\",\"description\":\"Returns information about an account's asset-balances. This is specific to the assets pallet for parachains. If no `assets` query parameter is provided, all asset-balances for the given account will be returned.\",\"operationId\":\"getAssetBalances\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset-balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a positive integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assets\",\"in\":\"query\",\"description\":\"An array of AssetId's to be queried. If not supplied, defaults to providing all asset balances associated with the `accountId` will be returned. The array query param format follows Express 4.x API. ex:`?assets[]=1&assets[]=2&assets[]=3`.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of assetId numbers represented as strings\",\"format\":\"Array of unsignedInteger's\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountAssetsBalances\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/asset-approvals\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an asset approval for an account.\",\"description\":\"Returns information about an account's asset approval transaction. It is required to pass in a delegate and an assetId as query parameters.\",\"operationId\":\"getAssetApprovals\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset approval info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assetId\",\"in\":\"query\",\"description\":\"The `assetId` associated with the asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"description\":\"An assetId represented as an unsignedInteger.\",\"format\":\"unsignedInteger\"}},{\"name\":\"delegate\",\"in\":\"query\",\"description\":\"The delegate's `accountId` associated with an asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountAssetsApproval\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/balance-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get balance information for an account.\",\"description\":\"Returns information about an account's balance. Replaces `/balance/{address}` from versions < v1.0.0.\",\"operationId\":\"getAccountBalanceInfo\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"token\",\"in\":\"query\",\"description\":\"Token to query the balance of. If not specified it will query the chains native token (e.g. DOT for Polkadot). Note: this is only relevant for chains that support multiple tokens through the ORML tokens pallet.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Token symbol\"}},{\"name\":\"denominated\",\"in\":\"query\",\"description\":\"When set to `true` it will denominate any balance's given atomic value using the chains given decimal value.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountBalanceInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/convert\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Convert a given AccountId to an SS58 address.\",\"description\":\"Returns the SS58 prefix, the network address format, the SS58 address, and the AccountId that was given as input parameter, the scheme that was used and if it is a public key or not (boolean).\",\"operationId\":\"accountConvert\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"AccountId or Public Key (hex).\",\"required\":true,\"schema\":{\"format\":\"AccountId or Hex\",\"type\":\"string\"}},{\"name\":\"scheme\",\"in\":\"query\",\"description\":\"The cryptographic scheme to be used in order to convert the AccountId to an SS58 address. It can take one of three values [sr25519, ed25519, ecdsa]. The default scheme that is used is `sr25519` (if it is not set in the query parameter).\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"string\",\"default\":\"sr25519\"}},{\"name\":\"prefix\",\"in\":\"query\",\"description\":\"The address prefix which can be one of the values found in the SS58-registry.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"number\",\"default\":42}},{\"name\":\"publicKey\",\"in\":\"query\",\"description\":\"Defines if the given value in the path parameter is a Public Key (hex) or not (hence AccountId).\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successfully converted the AccountId and retrieved the address info.\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountConvert\"}}}},\"400\":{\"description\":\"Invalid AccountId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"AccountId not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/pool-asset-balances\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an array of pool-asset-balances for an account.\",\"description\":\"Returns information about an account's pool-asset-balances. This is specific to the pool assets pallet for parachains. If no `assets` query parameter is provided, all pool-asset-balances for the given account will be returned.\",\"operationId\":\"getPoolAssetBalances\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query pool-asset-balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a positive integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assets\",\"in\":\"query\",\"description\":\"An array of AssetId's to be queried. If not supplied, defaults to providing all asset balances associated with the `accountId` will be returned. The array query param format follows Express 4.x API. ex:`?assets[]=1&assets[]=2&assets[]=3`.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"A list of assetId numbers represented as strings\",\"format\":\"Array of unsignedInteger's\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountPoolAssetsBalances\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/pool-asset-approvals\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an asset approval for an account.\",\"description\":\"Returns information about an account's asset approval transaction. It is required to pass in a delegate and an assetId as query parameters.\",\"operationId\":\"getPoolAssetApprovals\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset approval info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assetId\",\"in\":\"query\",\"description\":\"The `assetId` associated with the asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"description\":\"An assetId represented as an unsignedInteger.\",\"format\":\"unsignedInteger\"}},{\"name\":\"delegate\",\"in\":\"query\",\"description\":\"The delegate's `accountId` associated with an asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountAssetsApproval\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/proxy-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get proxy account information.\",\"description\":\"Returns information about a proxy account. This will include delegated accounts and deposits held.\",\"operationId\":\"getProxyInfo\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query proxy info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountProxyInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/staking-info\":{\"get\":{\"tags\":[\"staking\"],\"summary\":\"Get staking information for a _Stash_ account.\",\"description\":\"Returns information about a _Stash_ account's staking activity. Replaces `/staking/{address}` from versions < v1.0.0.\",\"operationId\":\"getStakingSummaryByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account. Must be a _Stash_ account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the staking info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountStakingInfo\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/staking-payouts\":{\"get\":{\"tags\":[\"staking\"],\"summary\":\"Get payout information for a _Stash_ account.\",\"description\":\"Returns payout information for the last specified eras. If specifying both the depth and era query params, this endpoint will return information for (era - depth) through era. (i.e. if depth=5 and era=20 information will be returned for eras 16 through 20). N.B. You cannot query eras less then `current_era - HISTORY_DEPTH`. N.B. The `nominator*` fields correspond to the address being queried, even if it is a validator's _Stash_ address. This is because a validator is technically nominating itself.\",\"operationId\":\"getStakingPayoutsByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account. Must be a _Stash_ account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query staking payouts.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"depth\",\"in\":\"query\",\"description\":\"The number of eras to query for payouts of. Must be less than or equal to `HISTORY_DEPTH`. In cases where `era - (depth -1)` is less than 0, the first era queried will be 0.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"default\":1}},{\"name\":\"era\",\"in\":\"query\",\"description\":\"The era to query at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"default\":\"`active_era - 1`\"}},{\"name\":\"unclaimedOnly\",\"in\":\"query\",\"description\":\"Only return unclaimed rewards.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountStakingPayouts\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/vesting-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get vesting information for an account.\",\"description\":\"Returns the vesting schedule for an account. Replaces `/vesting/{address}` from versions < v1.0.0.\",\"operationId\":\"getVestingSummaryByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the vesting info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountVestingInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{address}/validate\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Validate a given address.\",\"description\":\"Returns whether the given address is valid ss58 format, the ss58 prefix if the address has one, the network address format, and what the account ID is for this address.\",\"operationId\":\"getValidationByAccountId\",\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 or Hex address of the account.\",\"required\":true,\"schema\":{\"format\":\"SS58 or Hex\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successfully retrieved address info\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountValidation\"}}}}}}},\"/blocks\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a range of blocks by their height.\",\"description\":\"Given a range query parameter return an array of all the blocks within that range.\",\"operationId\":\"getBlock\",\"parameters\":[{\"name\":\"range\",\"in\":\"query\",\"description\":\"A range of integers. There is a max limit of 500 blocks per request.\",\"required\":true,\"example\":\"0-499\",\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Blocks\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a block by its height or hash.\",\"description\":\"Returns a single block. BlockId can either be a block hash or a block height. Replaces `/block/{number}` from versions < v1.0.0.\",\"operationId\":\"getBlockById\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"finalizedKey\",\"in\":\"query\",\"description\":\"When set to false, this will override the chain-config, and omit the finalized key in the response. This can increase performance slightly by avoiding an additional RPC call to the node.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"decodedXcmMsgs\",\"in\":\"query\",\"description\":\"When set to `true`, this will show the decoded XCM messages within the extrinsics of the requested block.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"paraId\",\"in\":\"query\",\"description\":\"When it is set, this will return only the decoded XCM messages for the specified origin Parachain Id (originParaId). To activate this functionality, ensure that the `decodedXcmMsgs` parameter is set to true.\",\"required\":false,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockWithDecodedXcmMsgs\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/header\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a block's header by its height or hash.\",\"description\":\"Returns a single block's header. BlockId can either be a block hash or a block height.\",\"operationId\":\"getBlockHeaderById\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockHeader\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/extrinsics/{extrinsicIndex}\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get an extrinsic by its extrinsicIndex and block height or hash. The pair blockId, extrinsicIndex is sometimes referred to as a Timepoint.\",\"description\":\"Returns a single extrinsic.\",\"operationId\":\"getExtrinsicByTimepoint\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"extrinsicIndex\",\"in\":\"path\",\"description\":\"The extrinsic's index within the block's body.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ExtrinsicIndex\"}}}},\"400\":{\"description\":\"Requested `extrinsicIndex` does not exist\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/head\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get the most recently finalized block.\",\"description\":\"Returns the most recently finalized block. Replaces `/block` from versions < v1.0.0.\",\"operationId\":\"getHeadBlock\",\"parameters\":[{\"name\":\"finalized\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to get the finalized head. If it is not set the value defaults to true. When set to false it will attempt to get the newest known block, which may not be finalized.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"decodedXcmMsgs\",\"in\":\"query\",\"description\":\"When set to `true`, this will show the decoded XCM messages within the extrinsics of the requested block.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"paraId\",\"in\":\"query\",\"description\":\"When it is set, this will return only the decoded XCM messages for the specified origin Parachain Id (originParaId). To activate this functionality, ensure that the `decodedXcmMsgs` parameter is set to true.\",\"required\":false,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockWithDecodedXcmMsgs\"}}}}}}},\"/blocks/head/header\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get information about the header of the most recent finalized block.\",\"description\":\"Returns the most recently finalized block's header.\",\"operationId\":\"getLatestBlockHeader\",\"parameters\":[{\"name\":\"finalized\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to get the finalized head. If it is not set the value defaults to true. When set to false it will attempt to get the newest known block, which may not be finalized.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockHeader\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/extrinsics-raw\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a blocks header & its extrinsics as hex values.\",\"description\":\"Returns a block & its extrinsics as hex values. BlockId can either be a block hash or a block height.\",\"operationId\":\"getBlockRawExtrinsics\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockRaw\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/contracts/ink/{address}/query\":{\"post\":{\"tags\":[\"contracts\"],\"summary\":\"Query an !Ink contract with a given message (method).\",\"description\":\"Will return a valid or invalid result.\",\"operationId\":\"callContractQuery\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/ContractMetadata\"},\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 or Hex address of the account associated with the contract.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"method\",\"in\":\"query\",\"description\":\"The message or method used to query.\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"get\"}},{\"name\":\"gasLimit\",\"in\":\"query\",\"description\":\"The gas limit to be used as an option for the queried message.\",\"required\":false,\"schema\":{\"default\":-1,\"type\":\"number\"}},{\"name\":\"storageDepositLimit\",\"in\":\"query\",\"description\":\"The storage deposit limit to be used as an option for the queried message.\",\"required\":false,\"schema\":{\"default\":null,\"type\":\"number\"}},{\"name\":\"args\",\"in\":\"query\",\"description\":\"Abi params used as args specified in the metadata to be passed into a query. The format to use this query param is ?args[]=1&args[]=2&args[]=3.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of Abi params.\"}}],\"responses\":{\"200\":{\"description\":\"succesful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ContractsInkQuery\"}}}},\"400\":{\"description\":\"Invalid Method\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/node/network\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get information about the Substrate node's activity in the peer-to-peer network.\",\"description\":\"Returns network related information of the node.\",\"operationId\":\"getNodeNetworking\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NodeNetwork\"}}}}}}},\"/node/transaction-pool\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get pending extrinsics from the Substrate node.\",\"description\":\"Returns the extrinsics that the node knows of that have not been included in a block.\",\"operationId\":\"getNodeTransactionPool\",\"parameters\":[{\"name\":\"includeFee\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to include tips, partialFee, and priority in each extrinsic.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionPool\"}}}}}}},\"/node/version\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get information about the Substrates node's implementation and versioning.\",\"description\":\"Returns versioning information of the node.\",\"operationId\":\"getNodeVersion\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NodeVersion\"}}}}}}},\"/transaction\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Submit a transaction to the node's transaction pool.\",\"description\":\"Accepts a valid signed extrinsic. Replaces `/tx` from versions < v1.0.0.\",\"operationId\":\"submitTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionSuccess\"}}}},\"400\":{\"description\":\"failed to parse or submit transaction\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFailure\"}}}}}}},\"/transaction/dry-run\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Dry run an extrinsic.\",\"description\":\"Use the dryrun call to practice submission of a transaction.\",\"operationId\":\"dryrunTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionDryRun\"}}}},\"400\":{\"description\":\"failed to dry-run transaction\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFailure\"}}}}}}},\"/transaction/fee-estimate\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Receive a fee estimate for a transaction.\",\"description\":\"Send a serialized transaction and receive back a naive fee estimate. Note: `partialFee` does not include any tips that you may add to increase a transaction's priority. See the reference on `compute_fee`. Replaces `/tx/fee-estimate` from versions < v1.0.0. Substrate Reference: - `RuntimeDispatchInfo`: https://crates.parity.io/pallet_transaction_payment_rpc_runtime_api/struct.RuntimeDispatchInfo.html - `query_info`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.query_info - `compute_fee`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee\",\"operationId\":\"feeEstimateTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFeeEstimate\"}}}},\"400\":{\"description\":\"fee estimation failure\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFeeEstimateFailure\"}}}}}}},\"/transaction/material\":{\"get\":{\"tags\":[\"transaction\"],\"summary\":\"Get all the network information needed to construct a transaction offline.\",\"description\":\"Returns the material that is universal to constructing any signed transaction offline. Replaces `/tx/artifacts` from versions < v1.0.0.\",\"operationId\":\"getTransactionMaterial\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the transaction construction material.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"noMeta\",\"in\":\"query\",\"description\":\"DEPRECATED! This is no longer supported\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Specifies the format of the metadata to be returned. Accepted values are 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata. When `metadata` is not inputted, the `metadata` field will be absent.\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionMaterial\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/transaction/material/{metadataVersion}\":{\"get\":{\"tags\":[\"transaction\"],\"summary\":\"Get all the network information needed to construct a transaction offline and the version of metadata specified in `metadataVersion`.\",\"description\":\"Returns all the materials necessary for constructing any signed transactions offline.\",\"operationId\":\"getTransactionMaterialwithVersionedMetadata\",\"parameters\":[{\"name\":\"metadataVersion\",\"in\":\"path\",\"description\":\"The version of metadata. The input is expected in a `vX` format, where `X` represents the version number (e.g. `v14`, `v15`). By default, metadata is outputted in 'json' format, unless the `metadata` query parameter is provided, in which case it can be either in 'json' or 'scale' format.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the transaction construction material.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Specifies the format of the metadata to be returned. Accepted values are 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata.\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionMaterial\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/assets/{assetId}/asset-info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with an asset.\",\"description\":\"Returns information associated with an asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getAssetById\",\"parameters\":[{\"name\":\"assetId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of an asset.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the assetInfo.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsAssetsInfo\"}}}}}}},\"/pallets/asset-conversion/liquidity-pools\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information related to existing liquidity pools.\",\"description\":\"Returns a list of the existing liquidity pools and its corresponding tokens at a given block height. If no block is specified, it returns the latest list available.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the liquidity pools information.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LiquidityPools\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/asset-conversion/next-available-id\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the next available liquidity pool id.\",\"description\":\"Returns the next available liquidity pool's id at a given block height. If no block is specified, it returns the latest list available.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the next liquidity pool's id.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NextAvailableId\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/foreign-assets\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with foreign assets.\",\"description\":\"Returns information associated with every foreign asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getForeignAssets\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the foreign assets.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"An array of foreign assets.\",\"$ref\":\"#/components/schemas/PalletsForeignAssets\"}}}}}}},\"/pallets/nomination-pools/info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information associated with nomination pools.\",\"description\":\"Returns information and metadata for nomination pools including pool counters and limits.\",\"operationId\":\"getNominationPoolInfo\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the nomination pool info.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsNominationPoolsInfo\"}}}}}}},\"/pallets/nomination-pools/{poolId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with a nomination pool.\",\"description\":\"Returns information associated with a nomination pool which includes the nomination pools' `bondedPool`, `rewardPool` and `metadata`.\",\"operationId\":\"getNominationPoolById\",\"parameters\":[{\"name\":\"poolId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of a nomination pool.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the nomination pool.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsNominationPool\"}}}}}}},\"/pallets/{palletId}/consts\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of constants for a pallet.\",\"description\":\"Returns a list of const item metadata for constant items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read constant metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the const items instead of every constant's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's constant items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of constantItemIds.\",\"$ref\":\"#/components/schemas/PalletConstants\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/consts/{constantItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a constant item.\",\"description\":\"Returns the value stored under the constantItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read constant metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"constantItemId\",\"in\":\"path\",\"description\":\"Id of the const item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the const item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the const items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletConstantsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/dispatchables\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of dispatchables for a pallet.\",\"description\":\"Returns a list of dispatchable item metadata for distpachable items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read dispatchable metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the dispatchable items instead of every dispatchable's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of dispatchableItemIds.\",\"$ref\":\"#/components/schemas/PalletDispatchables\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/dispatchables/{dispatchableItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a dispatchable item.\",\"description\":\"Returns the value stored under the dispatchableItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read dispatchable metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"dispatchableItemId\",\"in\":\"path\",\"description\":\"Id of the dispatchable item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the dispatchable items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/errors\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of errors for a pallet.\",\"description\":\"Returns a list of error item metadata for error items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read error metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the error items instead of every error's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's error items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of errorItemIds.\",\"$ref\":\"#/components/schemas/PalletErrors\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/errors/{errorItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of an error item.\",\"description\":\"Returns the value stored under the errorItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read error metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"errorItemId\",\"in\":\"path\",\"description\":\"Id of the error item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the error item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the error items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletErrorsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/events\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of events for a pallet.\",\"description\":\"Returns a list of event item metadata for event items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read event metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the event items instead of every event's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's event items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of eventItemIds.\",\"$ref\":\"#/components/schemas/PalletEvents\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/events/{eventItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of an event item.\",\"description\":\"Returns the value stored under the eventItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read event metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventItemId\",\"in\":\"path\",\"description\":\"Id of the event item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the event item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the event items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletEventsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/runtime/metadata\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the runtime metadata in decoded, JSON form.\",\"description\":\"Returns the runtime metadata as a JSON object. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\",\"description\":\"Response is dependent on the runtime metadata contents.\"}}}}}}},\"/runtime/metadata/{metadataVersion}\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the requested version of runtime metadata in decoded, JSON form.\",\"description\":\"Returns the requested version of runtime metadata as a JSON object. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"metadataVersion\",\"in\":\"path\",\"description\":\"The version of metadata. The input is expected in a `vX` format, where `X` represents the version number (e.g. `v14`, `v15`).\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\",\"description\":\"Response is dependent on the runtime metadata contents.\"}}}}}}},\"/runtime/metadata/versions\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the available versions of runtime metadata.\",\"description\":\"Returns the available versions of runtime metadata. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata versions at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array with the available metadata versions.\"}}}}}}},\"/runtime/code\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the runtime wasm blob.\",\"description\":\"Returns the runtime Wasm blob in hex format.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the runtime wasm blob at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeCode\"}}}}}}},\"/runtime/spec\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get version information of the Substrate runtime.\",\"description\":\"Returns version information related to the runtime.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve runtime version information at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeSpec\"}}}}}}},\"/pallets/{palletId}/storage\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of storage items for a pallet.\",\"description\":\"Returns a list of storage item metadata for storage items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to query the storage of. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the storage items instead of all of each storage item's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's storage items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of storageItemIds.\",\"$ref\":\"#/components/schemas/PalletStorage\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/storage/{storageItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a storage item.\",\"description\":\"Returns the value stored under the storageItemId. If it is a map, query param key1 is required. If the storage item is double map query params key1 and key2 are required.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to query the storage of. Note: pallet name aligns with pallet name as specified in runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"storageItemId\",\"in\":\"path\",\"description\":\"Id of the storage item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"keys\",\"in\":\"query\",\"description\":\"Set of N keys used for querying a storage map. It should be queried using the following format - ?keys[]=key1&keys[]=key2. Order matters, as it will determine the order the keys are passed into the storage calls.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of storage keys.\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the storage item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the storage items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletStorageItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/pool-assets/{assetId}/asset-info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with a pool asset.\",\"description\":\"Returns information associated with a pool asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getPoolAssetById\",\"parameters\":[{\"name\":\"assetId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of a pool asset.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the assetInfo.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsPoolAssetsInfo\"}}}}}}},\"/pallets/staking/progress\":{\"get\":{\"tags\":[\"staking\",\"pallets\"],\"summary\":\"Get progress on the general Staking pallet system.\",\"description\":\"Returns information on the progress of key components of the staking system and estimates of future points of interest. Replaces `/staking-info` from versions < v1.0.0.\",\"operationId\":\"getStakingProgress\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a staking progress report.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/StakingProgress\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/staking/validators\":{\"get\":{\"tags\":[\"staking\",\"pallets\"],\"summary\":\"Get all validators (active/waiting) of a specific chain.\",\"description\":\"Returns a list of all validators addresses and their corresponding status which can be either active or waiting. It will also return a list of active validators that will not be part of the next era for staking. They will be under the key \\\"validatorsToBeChilled\\\". It's important to note, that addresses can be present in both the \\\"validators\\\" key, and \\\"validatorsToBeChilled\\\".\",\"operationId\":\"getStakingValidators\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the list of validators.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/StakingValidators\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/paras\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] List all registered paras (parathreads & parachains).\\n\",\"description\":\"Returns all registered parachains and parathreads with lifecycle info.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve paras list at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Paras\"}}}}}}},\"/paras/leases/current\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get general information about the current lease period.\\n\",\"description\":\"Returns an overview of the current lease period, including lease holders.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve current lease period info at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"currentLeaseHolders\",\"in\":\"query\",\"description\":\"Wether or not to include the `currentLeaseHolders` property. Inclusion\\nof the property will likely result in a larger payload and increased\\nresponse time.\\n\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasLeasesCurrent\"}}}}}}},\"/paras/auctions/current\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the status of the current auction.\\n\",\"description\":\"Returns an overview of the current auction. There is only one auction\\nat a time. If there is no auction most fields will be `null`. If the current\\nauction phase is in `vrfDelay` and you are looking to retrieve the latest winning\\nbids, it is advised to query one block before `finishEnd` in the `endingPeriod` phase\\nfor that auction as there technically are no winners during the `vrfDelay` and thus\\nthe field is `null`.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve auction progress at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasAuctionsCurrent\"}}}}}}},\"/paras/crowdloans\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] List all stored crowdloans.\\n\",\"description\":\"Returns a list of all the crowdloans and their associated paraIds.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the list of paraIds that have crowdloans at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasCrowdloans\"}}}}}}},\"/paras/{paraId}/crowdloan-info\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get crowdloan information for a `paraId`.\\n\",\"description\":\"Returns crowdloan's `fundInfo` and the set of `leasePeriods` the crowdloan`\\ncovers.\\n\",\"parameters\":[{\"name\":\"paraId\",\"in\":\"path\",\"description\":\"paraId to query the crowdloan information of.\",\"required\":true,\"schema\":{\"type\":\"number\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve info at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasCrowdloanInfo\"}}}}}}},\"/paras/{paraId}/lease-info\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get current and future leases as well as the lifecycle stage for a given `paraId`.\\n\",\"description\":\"Returns a list of leases that belong to the `paraId` as well as the\\n`paraId`'s current lifecycle stage.\\n\",\"parameters\":[{\"name\":\"paraId\",\"in\":\"path\",\"description\":\"paraId to query the crowdloan information of.\",\"required\":true,\"schema\":{\"type\":\"number\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's leases at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasLeaseInfo\"}}}}}}},\"/paras/head/included-candidates\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the heads of the included (backed and considered available) parachain candidates at the\\nspecified block height or at the most recent finalized head otherwise.\\n\",\"description\":\"Returns an object with all the parachain id's as keys, and their headers as values.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's heads at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasHeaders\"}}}}}}},\"/paras/head/backed-candidates\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the heads of the backed parachain candidates at the specified block height or at the most recent finalized head otherwise.\\n\",\"description\":\"Returns an object with all the parachain id's as keys, and their headers as values.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's heads at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasHeaders\"}}}}}}},\"/experimental/blocks/head/traces\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get traces for the most\\nrecently finalized block.\\n\",\"description\":\"Returns traces (spans and events) of the most recently finalized block from\\nRPC `state_straceBlock`. Consult the [RPC docs](https://github.com/paritytech/substrate/blob/aba876001651506f85c14baf26e006b36092e1a0/client/rpc-api/src/state/mod.rs#L140)\\nfor conceptual info.\\n\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTrace\"}}}}}}},\"/experimental/blocks/{blockId}/traces\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get traces for the given `blockId`.\\n\",\"description\":\"Returns traces (spans and events) of the specified block from\\nRPC `state_straceBlock`. Consult the [RPC docs](https://github.com/paritytech/substrate/blob/aba876001651506f85c14baf26e006b36092e1a0/client/rpc-api/src/state/mod.rs#L140) for conceptual info.\\n\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTrace\"}}}}}}},\"/experimental/blocks/head/traces/operations\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get the operations from the\\nmost recently finalized block.\\n\",\"description\":\"Returns the operations from the most recently finalized block. Operations\\nrepresent one side of a balance change. For example if Alice transfers\\n100unit to Bob there will be two operations; 1) Alice - 100 2) Bob + 100.\\n\\nGiven account A and A's balance at block k0 (Ak0), if we sum all the\\noperations for A from block k1 through kn against Ak0, we will end up\\nwith A's balance at block kn (Akn). Thus, operations can be used to audit\\nthat balances change as expected.\\n\\nThis is useful for Substrate based chains because the advanced business\\nlogic can make it difficult to ensure auditable balance reconciliation\\nbased purely on events. Instead of using events one can use the\\noperations given from this endpoint.\\n\\nNote - each operation corresponds to a delta of a single field of the\\n`system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`\\nand `fee_frozen`).\\nNote - operations are assigned a block execution phase (and extrinsic index\\nfor those in the apply extrinsic phase) based on an \\\"action group\\\". For\\nexample all the operations for 1 extrinsic will be in the same action group.\\nThe action groups can optionally be fetched with the `action` query param\\nfor closer auditing.\\nNote - There are no 0 value operations (e.g. a transfer of 0, or a\\ntransfer to itself)\\n\\nTo learn more about operation and action group creation please consult\\n[this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)\\n\",\"parameters\":[{\"name\":\"actions\",\"in\":\"query\",\"description\":\"Whether or not to include action groups.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTraceOperations\"}}}}}}},\"/experimental/blocks/{blockId}/traces/operations\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get the operations from the\\nspecified block.\\n\",\"description\":\"Returns the operations from the most recently finalized block. Operations\\nrepresent one side of a balance change. For example if Alice transfers\\n100unit to Bob there will be two operations; 1) Alice - 100 2) Bob + 100.\\n\\nGiven account A and A's balance at block k0 (Ak0), if we sum all the\\noperations for A from block k1 through kn against Ak0, we will end up\\nwith A's balance at block kn (Akn). Thus, operations can be used to audit\\nthat balances change as expected.\\n\\nThis is useful for Substrate based chains because the advanced business\\nlogic can make it difficult to ensure auditable balance reconciliation\\nbased purely on events. Instead of using events one can use the\\noperations given from this endpoint.\\n\\nNote - each operation corresponds to a delta of a single field of the\\n`system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`\\nand `fee_frozen`).\\nNote - operations are assigned a block execution phase (and extrinsic index\\nfor those in the apply extrinsic phase) based on an \\\"action group\\\". For\\nexample all the operations for 1 extrinsic will be in the same action group.\\nThe action groups can optionally be fetched with the `action` query param\\nfor closer auditing.\\nNote - There are no 0 value operations (e.g. a transfer of 0, or a\\ntransfer to itself)\\n\\nTo learn more about operation and action group creation please consult\\n[this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)\\n\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"actions\",\"in\":\"query\",\"description\":\"Whether or not to include action groups.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTraceOperations\"}}}}}}}},\"components\":{\"schemas\":{\"AccountAssetsApproval\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"amount\":{\"type\":\"string\",\"description\":\"The amount of funds approved for the balance transfer from the owner to some delegated target.\",\"format\":\"unsignedInteger\"},\"deposit\":{\"type\":\"string\",\"description\":\"The amount reserved on the owner's account to hold this item in storage.\",\"format\":\"unsignedInteger\"}}},\"AccountAssetsBalances\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"assets\":{\"type\":\"array\",\"description\":\"An array of queried assets.\",\"items\":{\"$ref\":\"#/components/schemas/AssetsBalance\"}}}},\"AccountBalanceInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"nonce\":{\"type\":\"string\",\"description\":\"Account nonce.\",\"format\":\"unsignedInteger\"},\"tokenSymbol\":{\"type\":\"string\",\"description\":\"Token symbol of the balances displayed in this response.\",\"format\":\"unsignedInteger\"},\"free\":{\"type\":\"string\",\"description\":\"Free balance of the account. Not equivalent to _spendable_ balance. This is the only balance that matters in terms of most operations on tokens.\",\"format\":\"unsignedInteger\"},\"reserved\":{\"type\":\"string\",\"description\":\"Reserved balance of the account.\",\"format\":\"unsignedInteger\"},\"miscFrozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when withdrawing for anything except transaction fee payment. Note, that some runtimes may not have support for miscFrozen and if so the following will be returned `miscFrozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"feeFrozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when withdrawing specifically for transaction fee payment. Note, that some runtimes may not have support for feeFrozen and if so the following will be returned `feeFrozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"frozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when reducing the balance, except for actions where the account owner cannot reasonably benefit from the balance reduction, such as slashing. Note, that some runtimes may not have support for frozen and if so the following will be returned `frozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"locks\":{\"type\":\"array\",\"description\":\"Array of locks on a balance. There can be many of these on an account and they \\\"overlap\\\", so the same balance is frozen by multiple locks\",\"items\":{\"$ref\":\"#/components/schemas/BalanceLock\"}}}},\"AccountConvert\":{\"type\":\"object\",\"properties\":{\"ss58Prefix\":{\"type\":\"string\",\"description\":\"SS58 prefix based on which the account ID or Public Key (hex) is converted to an SS58 address.\",\"format\":\"unsignedInteger\"},\"network\":{\"type\":\"string\",\"description\":\"The network based on which the returned address is encoded. It depends on the prefix that was given as a query param.\"},\"address\":{\"type\":\"string\",\"description\":\"The returned SS58 address which is the result of the conversion of the account ID or Public Key (hex).\"},\"accountId\":{\"type\":\"string\",\"description\":\"The given account ID or Public Key (hex) that is converted to an SS58 address.\"},\"scheme\":{\"type\":\"string\",\"description\":\"The cryptographic scheme/algorithm used to encode the given account ID or Public Key (hex).\"},\"publicKey\":{\"type\":\"boolean\",\"description\":\"Whether the given path parameter is a Public Key (hex) or not.\"}}},\"AccountPoolAssetsBalances\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"poolAssets\":{\"type\":\"array\",\"description\":\"An array of queried assets.\",\"items\":{\"$ref\":\"#/components/schemas/AssetsBalance\"}}}},\"AccountProxyInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"delegatedAccounts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"delegate\":{\"type\":\"string\",\"description\":\"Delegate address for the given proxy.\",\"format\":\"ss58\"},\"delay\":{\"type\":\"string\",\"description\":\"The announcement period required of the initial proxy. Will generally be zero.\",\"format\":\"unsignedInteger\"},\"proxyType\":{\"type\":\"string\",\"description\":\"The permissions allowed for this proxy account.\"}}}},\"depositHeld\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The held deposit.\"}}},\"AccountStakingInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"rewardDestination\":{\"type\":\"string\",\"description\":\"The account to which rewards will be paid. Can be 'Staked' (Stash account, adding to the amount at stake), 'Stash' (Stash address, not adding to the amount at stake), or 'Controller' (Controller address).\",\"format\":\"ss58\",\"enum\":[\"Staked\",\"Stash\",\"Controller\"]},\"controller\":{\"type\":\"string\",\"description\":\"Controller address for the given Stash.\",\"format\":\"ss58\"},\"numSlashingSpans\":{\"type\":\"string\",\"description\":\"Number of slashing spans on Stash account; `null` if provided address is not a Controller.\",\"format\":\"unsignedInteger\"},\"nominations\":{\"$ref\":\"#/components/schemas/Nominations\"},\"stakingLedger\":{\"$ref\":\"#/components/schemas/StakingLedger\"}},\"description\":\"Note: Runtime versions of Kusama less than 1062 will either have `lastReward` in place of `claimedRewards`, or no field at all. This is related to changes in reward distribution. See: [Lazy Payouts](https://github.com/paritytech/substrate/pull/4474), [Simple Payouts](https://github.com/paritytech/substrate/pull/5406)\"},\"AccountStakingPayouts\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"erasPayouts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"era\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Era this information is associated with.\"},\"totalEraRewardPoints\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Total reward points for the era. Equals the sum of reward points for all the validators in the set.\"},\"totalEraPayout\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Total payout for the era. Validators split the payout based on the portion of `totalEraRewardPoints` they have.\"},\"payouts\":{\"$ref\":\"#/components/schemas/Payouts\"}}}}}},\"AccountValidation\":{\"type\":\"object\",\"properties\":{\"isValid\":{\"type\":\"boolean\",\"description\":\"Whether the given address is valid ss58 formatted.\"},\"ss58Prefix\":{\"type\":\"string\",\"description\":\"SS58 prefix of the given address. If the address is a valid base58 format, but incorrect ss58, a prefix for the given address will still be returned.\",\"format\":\"unsignedInteger\"},\"network\":{\"type\":\"string\",\"description\":\"The network based on which the given address is encoded.\"},\"accountId\":{\"type\":\"string\",\"description\":\"The account id of the given address.\"}}},\"AccountVestingInfo\":{\"type\":\"object\",\"description\":\"Sidecar version's <= v10.0.0 have a`vesting` return value that defaults to an object for when there is no available vesting-info data. It also returns a `VestingInfo` as an object. For Sidecar >=11.0.0, that value will now default as an array when there is no value, and `Vec` is returned when there is.\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"vesting\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/VestingSchedule\"}}}},\"AssetsBalance\":{\"type\":\"object\",\"properties\":{\"assetId\":{\"type\":\"string\",\"description\":\"The identifier of the asset.\",\"format\":\"unsignedInteger\"},\"balance\":{\"type\":\"string\",\"description\":\"The balance of the asset.\",\"format\":\"unsignedInteger\"},\"isFrozen\":{\"type\":\"boolean\",\"description\":\"Whether the asset is frozen for non-admin transfers. Note, that some runtimes may not have support for isFrozen and if so the following will be returned `isFrozen does not exist for this runtime`\"},\"isSufficient\":{\"type\":\"boolean\",\"description\":\"Whether a non-zero balance of this asset is a deposit of sufficient value to account for the state bloat associated with its balance storage. If set to `true`, then non-zero balances may be stored without a `consumer` reference (and thus an ED in the Balances pallet or whatever else is used to control user-account state growth).\"}}},\"AssetInfo\":{\"type\":\"object\",\"properties\":{\"owner\":{\"type\":\"string\",\"description\":\"Owner of the assets privileges.\",\"format\":\"SS58\"},\"issuer\":{\"type\":\"string\",\"description\":\"The `AccountId` able to mint tokens.\",\"format\":\"SS58\"},\"admin\":{\"type\":\"string\",\"description\":\"The `AccountId` that can thaw tokens, force transfers and burn token from any account.\",\"format\":\"SS58\"},\"freezer\":{\"type\":\"string\",\"description\":\"The `AccountId` that can freeze tokens.\",\"format\":\"SS58\"},\"supply\":{\"type\":\"string\",\"description\":\"The total supply across accounts.\",\"format\":\"unsignedInteger\"},\"deposit\":{\"type\":\"string\",\"description\":\"The balance deposited for this. This pays for the data stored.\",\"format\":\"unsignedInteger\"},\"minBalance\":{\"type\":\"string\",\"description\":\"The ED for virtual accounts.\",\"format\":\"unsignedInteger\"},\"isSufficient\":{\"type\":\"boolean\",\"description\":\"If `true`, then any account with this asset is given a provider reference. Otherwise, it requires a consumer reference.\"},\"accounts\":{\"type\":\"string\",\"description\":\"The total number of accounts.\",\"format\":\"unsignedInteger\"},\"sufficients\":{\"type\":\"string\",\"description\":\"The total number of accounts for which is placed a self-sufficient reference.\"},\"approvals\":{\"type\":\"string\",\"description\":\"The total number of approvals.\",\"format\":\"unsignedInteger\"},\"status\":{\"type\":\"string\",\"description\":\"The status of the asset.\"}}},\"AssetMetadata\":{\"type\":\"object\",\"properties\":{\"deposit\":{\"type\":\"string\",\"description\":\"The balance deposited for this metadata. This pays for the data stored in this struct.\",\"format\":\"unsignedInteger\"},\"name\":{\"type\":\"string\",\"description\":\"The user friendly name of this asset.\",\"format\":\"$hex\"},\"symbol\":{\"type\":\"string\",\"description\":\"The ticker symbol for this asset.\",\"format\":\"$hex\"},\"decimals\":{\"type\":\"string\",\"description\":\"The number of decimals this asset uses to represent one unit.\",\"format\":\"unsignedInteger\"},\"isFrozen\":{\"type\":\"boolean\",\"description\":\"Whether the asset metadata may be changed by a non Force origin. Note, that some runtimes may not have support for isFrozen and if so the following will be returned `isFrozen does not exist for this runtime`\"}}},\"BalanceLock\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"An identifier for this lock. Only one lock may be in existence for each identifier.\"},\"amount\":{\"type\":\"string\",\"description\":\"The amount below which the free balance may not drop with this lock in effect.\",\"format\":\"unsignedInteger\"},\"reasons\":{\"type\":\"string\",\"description\":\"Reasons for withdrawing balance.\",\"enum\":[\"Fee = 0\",\"Misc = 1\",\"All = 2\"]}}},\"Block\":{\"type\":\"object\",\"properties\":{\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"authorId\":{\"type\":\"string\",\"description\":\"The account ID of the block author (may be undefined for some chains).\",\"format\":\"ss58\"},\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"},\"onInitialize\":{\"$ref\":\"#/components/schemas/BlockInitialize\"},\"extrinsics\":{\"type\":\"array\",\"description\":\"Array of extrinsics (inherents and transactions) within the block.\",\"items\":{\"$ref\":\"#/components/schemas/Extrinsic\"}},\"onFinalize\":{\"$ref\":\"#/components/schemas/BlockFinalize\"},\"finalized\":{\"type\":\"boolean\",\"description\":\"A boolean identifying whether the block is finalized or not. Note: on chains that do not have deterministic finality this field is omitted.\"}},\"description\":\"Note: Block finalization does not correspond to consensus, i.e. whether the block is in the canonical chain. It denotes the finalization of block _construction._\"},\"BlockRaw\":{\"type\":\"object\",\"properties\":{\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}},\"extrinsics\":{\"type\":\"array\",\"description\":\"Array of raw extrinsics (inherents and transactions) within the block.\",\"items\":{\"type\":\"string\"}}}},\"Blocks\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Block\"}},\"BlockFinalize\":{\"type\":\"object\",\"properties\":{\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}}},\"description\":\"Object with an array of `SanitizedEvent`s that occurred during block construction finalization with the `method` and `data` for each.\"},\"BlockHeader\":{\"type\":\"object\",\"properties\":{\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}}}},\"BlockIdentifiers\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"height\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"}},\"description\":\"Block number and hash at which the call was made.\"},\"BlockInitialize\":{\"type\":\"object\",\"properties\":{\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}}},\"description\":\"Object with an array of `SanitizedEvent`s that occurred during block initialization with the `method` and `data` for each.\"},\"BlocksTrace\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"blockHash\":{\"type\":\"string\"},\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TraceEvent\"}},\"parentHash\":{\"type\":\"string\"},\"spans\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TraceSpan\"}},\"storageKeys\":{\"type\":\"string\",\"description\":\"Hex encoded storage keys used to filter events.\"},\"tracingTargets\":{\"type\":\"string\",\"description\":\"Targets used to filter spans and events.\"}}},\"BlocksTraceOperations\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"operations\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Operation\"}}}},\"BlockWithDecodedXcmMsgs\":{\"allOf\":[{\"$ref\":\"#/components/schemas/Block\"},{\"$ref\":\"#/components/schemas/DecodedXcmMsgs\"}],\"description\":\"Block information that includes the decoded XCM messages if any are found in the queried block. If not, the decodedXcmMsgs object will be returned with three empty arrays corresponding to each direction, horizontalMessages, downwardMessages, upwardMessages.\"},\"BondedPool\":{\"type\":\"object\",\"properties\":{\"points\":{\"type\":\"number\"},\"state\":{\"type\":\"string\"},\"memberCounter\":{\"type\":\"number\"},\"roles\":{\"type\":\"object\",\"properties\":{\"depositor\":{\"type\":\"string\"},\"root\":{\"type\":\"string\"},\"nominator\":{\"type\":\"string\"},\"stateToggler\":{\"type\":\"string\"}}}}},\"ChainType\":{\"type\":\"object\",\"description\":\"Type of the chain. It will return one of the following enum variants as a key. Live, Development, Local, or Custom. Each variant will have a value as null except when the ChainType is Custom, it will return a string.\",\"properties\":{\"live\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"development\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"local\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"custom\":{\"type\":\"string\"}},\"example\":\"{\\\"live\\\": null}\"},\"ContractsInkQuery\":{\"type\":\"object\",\"description\":\"Result from calling a query to a Ink contract.\",\"properties\":{\"debugMessage\":{\"type\":\"string\"},\"gasConsumed\":{\"type\":\"string\"},\"gasRequired\":{\"type\":\"string\"},\"output\":{\"type\":\"boolean\"},\"result\":{\"type\":\"object\",\"description\":\"Will result in an Ok or Err object depending on the result of the query.\"},\"storageDeposit\":{\"type\":\"object\"}}},\"ContractMetadata\":{\"type\":\"object\",\"description\":\"Metadata used to instantiate a ContractPromise. This metadata can be generated by compiling the contract you are querying.\"},\"DecodedXcmMsgs\":{\"type\":\"object\",\"properties\":{\"decodedXcmMsgs\":{\"type\":\"object\",\"properties\":{\"horizontalMessages\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/DecodedXcmMsgsHorizontalMessagesInRelay\"},{\"$ref\":\"#/components/schemas/DecodedXcmMsgsHorizontalMessagesInParachain\"}]},\"downwardMessages\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"sentAt\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Represents the block number that the XCM message was sent at on the relay chain.\"},\"msg\":{\"type\":\"string\",\"description\":\"Represents the XCM message.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}}}},\"upwardMessages\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}}}}}}},\"description\":\"Object with three arrays, one for every XCM direction. The arrays are populated or left empty based on the direction of the current XCM message that is being decoded. The XCM messages can be Upward and/or Horizontal (`in transit`) messages when connected to a Relay chain. When connected to a Parachain, the messages can be Downward and/or Horizontal. One or more messages can be present in a single block. In case of multiple messages from the same paraIds (originParaId and/or destinationParaId), the messages will be shown under the field `data`.\"},\"DecodedXcmMsgsHorizontalMessagesInRelay\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"destinationParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent to.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}},\"description\":\"Array that includes the Horizontal (`in transit`) messages when we are connected to a Relay Chain. Each block can contain one or more messages. If multiple messages share the same origin and destination paraId, they will be displayed within the data field.\"}},\"DecodedXcmMsgsHorizontalMessagesInParachain\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"sentAt\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Represents the block number that the XCM message was sent at on the relay chain.\"},\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}},\"description\":\"Array that includes the Horizontal Messages when we are connected to a Parachain. Each block can contain one or more messages. If multiple messages originate from the same parachain (originParaId), they will be displayed within the data field.\"}},\"DigestItem\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"index\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"value\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"ElectionStatus\":{\"type\":\"object\",\"properties\":{\"status\":{\"type\":\"object\",\"description\":\"[Deprecated](Works for polkadot runtimes before v0.8.30).\\nEra election status: either `Close: null` or `Open: `. A status of `Close` indicates that the submission window for solutions from off-chain Phragmen is not open. A status of `Open` indicates that the submission window for off-chain Phragmen solutions has been open since BlockNumber. N.B. when the submission window is open, certain extrinsics are not allowed because they would mutate the state that the off-chain Phragmen calculation relies on for calculating results.\"},\"toggleEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the `status` will switch.\",\"format\":\"unsignedInteger\"}},\"description\":\"Information about the off-chain election. Not included in response when `forceEra.isForceNone`.\"},\"Error\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"message\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"},\"level\":{\"type\":\"string\"}}},\"ExtrinsicMethod\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\"},\"method\":{\"type\":\"string\"}},\"description\":\"Extrinsic method\"},\"Extrinsic\":{\"type\":\"object\",\"properties\":{\"method\":{\"$ref\":\"#/components/schemas/ExtrinsicMethod\"},\"signature\":{\"$ref\":\"#/components/schemas/Signature\"},\"nonce\":{\"type\":\"string\",\"description\":\"Account nonce, if applicable.\",\"format\":\"unsignedInteger\"},\"args\":{\"type\":\"object\",\"description\":\"Object of arguments keyed by parameter name. Note: if you are expecting an [`OpaqueCall`](https://substrate.dev/rustdocs/v2.0.0/pallet_multisig/type.OpaqueCall.html) and it is not decoded in the response (i.e. it is just a hex string), then Sidecar was not able to decode it and likely that it is not a valid call for the runtime.\"},\"tip\":{\"type\":\"string\",\"description\":\"Any tip added to the transaction.\",\"format\":\"unsignedInteger\"},\"hash\":{\"type\":\"string\",\"description\":\"The transaction's hash.\",\"format\":\"hex\"},\"info\":{\"$ref\":\"#/components/schemas/RuntimeDispatchInfo\"},\"era\":{\"$ref\":\"#/components/schemas/GenericExtrinsicEra\"},\"events\":{\"type\":\"array\",\"description\":\"An array of `SanitizedEvent`s that occurred during extrinsic execution.\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}},\"success\":{\"type\":\"boolean\",\"description\":\"Whether or not the extrinsic succeeded.\"},\"paysFee\":{\"type\":\"boolean\",\"description\":\"Whether the extrinsic requires a fee. Careful! This field relates to whether or not the extrinsic requires a fee if called as a transaction. Block authors could insert the extrinsic as an inherent in the block and not pay a fee. Always check that `paysFee` is `true` and that the extrinsic is signed when reconciling old blocks.\"}}},\"ExtrinsicIndex\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"extrinsic\":{\"$ref\":\"#/components/schemas/Extrinsic\"}},\"description\":\"A single extrinsic at a given block.\"},\"FundInfo\":{\"type\":\"object\",\"properties\":{\"depositor\":{\"type\":\"string\"},\"verifier\":{\"type\":\"string\"},\"deposit\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"raised\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"end\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"cap\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"lastConstribution\":{\"type\":\"string\",\"enum\":[\"preEnding\",\"ending\"]},\"firstPeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"lastPeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"trieIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"GenericExtrinsicEra\":{\"type\":\"object\",\"description\":\"The return value for era can either be `mortalEra`, or `immortalEra` and is represented as an enum in substrate. `immortalEra` meaning\\nthe transaction is valid forever. `mortalEra` consists of a tuple containing a period and phase.\\nex: `\\\"{\\\"mortalEra\\\": [\\\"64\\\", \\\"11\\\"]}\\\"`. The Period is the period of validity from the block hash found in the signing material.\\nThe Phase is the period that this transaction's lifetime begins (and, importantly,\\nimplies which block hash is included in the signature material).\\n\",\"properties\":{\"mortalEra\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Tuple of a Phase, and Period. Each item in the array will be a string formatted as an integer.\"},\"immortalEra\":{\"type\":\"string\",\"description\":\"Hardcoded constant '0x00'.\",\"format\":\"hex\"}},\"example\":\"{\\\"mortalEra\\\":[\\\"64\\\", \\\"11\\\"]}\"},\"LiquidityPools\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pools\":{\"type\":\"array\",\"description\":\"Array containing existent liquidity pool's token id.\",\"items\":{\"$ref\":\"#/components/schemas/LiquidityPool\"},\"example\":\"[{\\\"reserves\\\":[{\\\"parents\\\":\\\"1\\\",\\\"interior\\\":{\\\"here\\\": null}},{\\\"parents\\\":\\\"0\\\",\\\"interior\\\":{\\\"x2\\\":[{\\\"palletInstance\\\": \\\"50\\\"},{\\\"generalIndex\\\":\\\"2\\\"}]}}],\\\"lpToken\\\":{\\\"lpToken\\\":\\\"1\\\"} },{\\\"lpToken\\\":{\\\"lpToken\\\":\\\"0\\\"}}]\"}}},\"LiquidityPool\":{\"type\":\"object\",\"properties\":{\"reserves\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"parents\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"interior\":{\"type\":\"object\"}}}},\"lpToken\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Liquidity pool token ID.\"}}},\"NextAvailableId\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"id\":{\"type\":\"string\",\"description\":\"Next availabe liquidity pool's id.\",\"example\":\"4\"}}},\"NodeNetwork\":{\"type\":\"object\",\"properties\":{\"nodeRoles\":{\"$ref\":\"#/components/schemas/NodeRole\"},\"numPeers\":{\"type\":\"string\",\"description\":\"Number of peers the node is connected to.\",\"format\":\"unsignedInteger\"},\"isSyncing\":{\"type\":\"boolean\",\"description\":\"Whether or not the node is syncing. `False` indicates that the node is in sync.\"},\"shouldHavePeers\":{\"type\":\"boolean\",\"description\":\"Whether or not the node should be connected to peers. Might be false for local chains or when running without discovery.\"},\"localPeerId\":{\"type\":\"string\",\"description\":\"Local copy of the `PeerId`.\"},\"localListenAddresses\":{\"type\":\"array\",\"description\":\"Multiaddresses that the local node is listening on. The addresses include a trailing `/p2p/` with the local PeerId, and are thus suitable to be passed to `system_addReservedPeer` or as a bootnode address for example.\",\"items\":{\"type\":\"string\"}},\"peersInfo\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PeerInfo\"}}}},\"NodeRole\":{\"type\":\"string\",\"description\":\"Role of this node. (N.B. Sentry nodes are being deprecated.)\",\"enum\":[\"Full\",\"LightClient\",\"Authority\",\"Sentry\"]},\"NodeVersion\":{\"type\":\"object\",\"properties\":{\"clientVersion\":{\"type\":\"string\",\"description\":\"Node's binary version.\"},\"clientImplName\":{\"type\":\"string\",\"description\":\"Node's implementation name.\"},\"chain\":{\"type\":\"string\",\"description\":\"Node's chain name.\"}},\"description\":\"Version information of the node.\"},\"Nominations\":{\"type\":\"object\",\"properties\":{\"targets\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"The targets of the nomination.\"},\"submittedIn\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The era the nominations were submitted. (Except for initial nominations which are considered submitted at era 0.)\"},\"suppressed\":{\"type\":\"boolean\",\"description\":\"Whether the nominations have been suppressed.\"}}},\"OnboardingAs\":{\"type\":\"string\",\"enum\":[\"parachain\",\"parathread\"],\"description\":\"This property only shows up when `paraLifecycle=onboarding`. It\\ndescribes if a particular para is onboarding as a `parachain` or a\\n`parathread`.\\n\"},\"Operation\":{\"type\":\"object\",\"properties\":{\"phase\":{\"$ref\":\"#/components/schemas/OperationPhase\"},\"parentSpanId\":{\"$ref\":\"#/components/schemas/SpanId\"},\"primarySpanId\":{\"$ref\":\"#/components/schemas/SpanId\"},\"eventIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Index of the underlying trace event.\"},\"address\":{\"type\":\"string\",\"description\":\"Account this operation affects. Note - this will be an object like\\n`{ id: address }` if the network uses `MultiAddress`\\n\"},\"storage\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\"},\"item\":{\"type\":\"string\"},\"field1\":{\"type\":\"string\",\"description\":\"A field of the storage item. (i.e `system::Account::get(address).data`)\\n\"},\"field2\":{\"type\":\"string\",\"description\":\"A field of the struct described by field1 (i.e\\n`system::Account::get(address).data.free`)\\n\"}}},\"amount\":{\"$ref\":\"#/components/schemas/OperationAmount\"}}},\"OperationAmount\":{\"type\":\"object\",\"properties\":{\"values\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"currency\":{\"$ref\":\"#/components/schemas/OperationAmountCurrency\"}}},\"OperationAmountCurrency\":{\"type\":\"object\",\"properties\":{\"symbol\":{\"type\":\"string\",\"example\":\"KSM\"}}},\"OperationPhase\":{\"type\":\"object\",\"properties\":{\"variant\":{\"type\":\"string\",\"enum\":[\"onInitialize\",\"initialChecks\",\"applyExtrinsic\",\"onFinalize\",\"finalChecks\"],\"description\":\"Phase of block execution pipeline.\"},\"extrinsicIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"If phase variant is `applyExtrinsic` this will be the index of\\nthe extrinsic. Otherwise this field will not be present.\\n\"}}},\"PalletsAssetsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"assetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"assetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"}}},\"PalletConstants\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up constants.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletConstantsItemMetadata\"},\"description\":\"Array containing metadata for each constant entry of the pallet.\"}}},\"PalletConstantsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up constants.\",\"example\":\"14\"},\"errorItem\":{\"type\":\"string\",\"description\":\"Name of the constant item.\",\"example\":\"EnactmentPeriod\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletConstantsItemMetadata\"}}},\"PalletConstantsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"VotingPeriod\",\"description\":\"The constant item's name (which is the same as the constant item's ID).\"},\"type\":{\"type\":\"string\",\"example\":\"4\"},\"value\":{\"type\":\"string\",\"example\":\"0x00270600\",\"description\":\"The hex value of the constant\"},\"docs\":{\"type\":\"string\",\"example\":\"Information concerning any given constant.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"}},\"description\":\"Metadata of an constant item from a FRAME pallet.\"},\"PalletDispatchables\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up dispatchables.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItemMetadata\"},\"description\":\"Array containing metadata for each dispatchable entry of the pallet.\"}}},\"PalletDispatchablesItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up dispatchables.\",\"example\":\"14\"},\"dispatchableItem\":{\"type\":\"string\",\"description\":\"Name of the dispatchable item.\",\"example\":\"vote\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItemMetadata\"}}},\"PalletDispatchablesItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"propose\",\"description\":\"The dispatchable item's name (which is the same as the dispatchable item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the dispatchable item in the lists of pallet dispatchables.\"},\"docs\":{\"type\":\"string\",\"example\":\"Information concerning any given dispatchable.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of a dispatchable item from a FRAME pallet.\"},\"PalletErrors\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up errors.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletErrorsItemMetadata\"},\"description\":\"Array containing metadata for each error entry of the pallet.\"}}},\"PalletErrorsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up errors.\",\"example\":\"14\"},\"errorItem\":{\"type\":\"string\",\"description\":\"Name of the error item.\",\"example\":\"ValueLow\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletErrorsItemMetadata\"}}},\"PalletErrorsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"InsufficientFunds\",\"description\":\"The error item's name (which is the same as the error item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the error item in the lists of pallet errors\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given error.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of an error item from a FRAME pallet.\"},\"PalletEvents\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up events.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletEventsItemMetadata\"}}}},\"PalletEventsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up events.\",\"example\":\"14\"},\"eventItem\":{\"type\":\"string\",\"description\":\"Name of the events item.\",\"example\":\"Proposed\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletEventsItemMetadata\"}}},\"PalletEventsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"Tabled\",\"description\":\"The event item's name (which is the same as the event item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the error item in the lists of pallet events\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given event.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of an event item from a FRAME pallet.\"},\"PalletsForeignAssets\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletsForeignAssetsInfo\"},\"description\":\"Array containing the `AssetDetails` and `AssetMetadata` of every foreign asset.\"}}},\"PalletsForeignAssetsInfo\":{\"type\":\"object\",\"properties\":{\"foreignAssetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"foreignAssetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"}}},\"PalletsNominationPool\":{\"type\":\"object\",\"properties\":{\"bondedPool\":{\"$ref\":\"#/components/schemas/BondedPool\"},\"rewardPool\":{\"$ref\":\"#/components/schemas/RewardPool\"}}},\"PalletsNominationPoolsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"counterForBondedPools\":{\"type\":\"number\"},\"counterForMetadata\":{\"type\":\"number\"},\"counterForPoolMembers\":{\"type\":\"number\"},\"counterForReversePoolIdLookup\":{\"type\":\"number\"},\"counterForRewardPools\":{\"type\":\"number\"},\"counterForSubPoolsStorage\":{\"type\":\"number\"},\"lastPoolId\":{\"type\":\"number\"},\"maxPoolMembers\":{\"type\":\"number\"},\"maxPoolMembersPerPool\":{\"type\":\"number\",\"nullable\":true},\"maxPools\":{\"type\":\"number\"},\"minCreateBond\":{\"type\":\"number\"},\"minJoinBond\":{\"type\":\"number\"}}},\"PalletsPoolAssetsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"poolAssetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"poolAssetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"}}},\"PalletStorage\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up storage.\",\"example\":\"15\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletStorageItemMetadata\"},\"description\":\"Array containing metadata for each storage entry of the pallet.\"}}},\"PalletStorageItem\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up storage.\",\"example\":\"15\"},\"storageItem\":{\"type\":\"string\",\"description\":\"Name of the storage item.\",\"example\":\"referendumInfoOf\"},\"keys\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"N Storage keys passed in as the `keys` query param.\",\"example\":[\"0x00\",\"0x01\"]},\"value\":{\"type\":\"object\",\"description\":\"Value returned by this storage query.\",\"example\":{\"Ongoing\":{\"end\":\"1612800\",\"proposalHash\":\"0x7de70fc8be782076d0b5772be77153d172a5381c72dd56d3385e25f62abf507e\",\"threshold\":\"Supermajorityapproval\",\"delay\":\"403200\",\"tally\":{\"ayes\":\"41925212461400000\",\"nays\":\"214535586500000\",\"turnout\":\"34485320658000000\"}}}},\"metadata\":{\"$ref\":\"#/components/schemas/PalletStorageItemMetadata\"}}},\"PalletStorageItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"ReferendumInfoOf\",\"description\":\"The storage item's name (which is the same as the storage item's ID).\"},\"modifier\":{\"type\":\"string\",\"example\":\"Optional\"},\"type\":{\"$ref\":\"#/components/schemas/PalletStorageType\"},\"fallback\":{\"type\":\"string\",\"example\":\"0x00\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given referendum.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"}},\"description\":\"Metadata of a storage item from a FRAME pallet.\"},\"PalletStorageType\":{\"type\":\"object\",\"description\":\"This is going to be formatted to the type of StorageEntryTypeV14.\"},\"Para\":{\"type\":\"object\",\"properties\":{\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"paraLifecycle\":{\"$ref\":\"#/components/schemas/ParaLifecycle\"},\"onboardingAs\":{\"$ref\":\"#/components/schemas/OnboardingAs\"}}},\"Paras\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paras\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Para\"}}}},\"ParasAuctionsCurrent\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"beginEnd\":{\"type\":\"string\",\"format\":\"unisgnedInteger or $null\",\"description\":\"Fist block (number) of the auction ending phase. `null` if there is no ongoing\\nauction.\\n\"},\"finishEnd\":{\"type\":\"string\",\"format\":\"unisgnedInteger or $null\",\"description\":\"Last block (number) of the auction ending phase. `null` if there is no ongoing\\nauction.\\n\"},\"phase\":{\"type\":\"string\",\"enum\":[\"startPeriod\",\"endPeriod\",\"vrfDelay\"],\"description\":\"An auction can be in one of 4 phases. Both `startingPeriod` () and `endingPeriod` indicate\\nan ongoing auction, while `vrfDelay` lines up with the `AuctionStatus::VrfDelay` . Finally, a value of `null`\\nindicates there is no ongoing auction. Keep in mind the that the `finishEnd` field is the block number the\\n`endingPeriod` finishes and the `vrfDelay` period begins. The `vrfDelay` period is typically about an\\nepoch long and no crowdloan contributions are accepted.\\n\"},\"auctionIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The auction number. If there is no current auction this will be the number\\nof the previous auction.\\n\"},\"leasePeriods\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"Lease period indexes that may be bid on in this auction. `null` if\\nthere is no ongoing auction.\\n\"},\"winning\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/WinningData\"}}}},\"ParasCrowdloans\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"funds\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"fundInfo\":{\"$ref\":\"#/components/schemas/FundInfo\"}}},\"description\":\"List of paras that have crowdloans.\\n\"}}},\"ParasCrowdloanInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"fundInfo\":{\"$ref\":\"#/components/schemas/FundInfo\"},\"leasePeriods\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"Lease periods the crowdloan can bid on.\"}}},\"ParasHeaders\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paraId\":{\"type\":\"object\",\"description\":\"The key is not named `paraId` and will be the number of the parachain. There is technically no limit to the number of paraId keys there can be. \\n\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicsRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}}}}}},\"ParasLeasesCurrent\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"leasePeriodIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Current lease period index. This value may be null when the current block now, substracted by the leaseOffset is less then zero.\"},\"endOfLeasePeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Last block (number) of the current lease period. This value may be null when `leasePeriodIndex` is null.\"},\"currentLeaseHolders\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"List of `paraId`s that currently hold a lease.\"}}},\"ParasLeaseInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paraLifecycle\":{\"$ref\":\"#/components/schemas/ParaLifecycle\"},\"onboardingAs\":{\"$ref\":\"#/components/schemas/OnboardingAs\"},\"leases\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"leasePeriodIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"account\":{\"type\":\"string\"},\"deposit\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"description\":\"List of lease periods for which the `paraId` holds a lease along with\\nthe deposit held and the associated `accountId`.\\n\"}}},\"ParaLifecycle\":{\"type\":\"string\",\"enum\":[\"onboarding\",\"parathread\",\"parachain\",\"upgradingParathread\",\"downgradingParachain\",\"offboardingParathread\",\"offboardingParachain\"],\"description\":\"The possible states of a para, to take into account delayed lifecycle\\nchanges.\\n\"},\"Payouts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"validatorId\":{\"type\":\"string\",\"description\":\"AccountId of the validator the payout is coming from.\"},\"nominatorStakingPayout\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Payout for the reward destination associated with the accountId the query was made for.\"},\"claimed\":{\"type\":\"boolean\",\"description\":\"Whether or not the reward has been claimed.\"},\"totalValidatorRewardPoints\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Number of reward points earned by the validator.\"},\"validatorCommission\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The percentage of the total payout that the validator takes as commission, expressed as a Perbill.\"},\"totalValidatorExposure\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The sum of the validator's and its nominators' stake.\"},\"nominatorExposure\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The amount of stake the nominator has behind the validator.\"}},\"description\":\"Payout for a nominating _Stash_ address and information about the validator they were nominating.\"}},\"PeerInfo\":{\"type\":\"object\",\"properties\":{\"peerId\":{\"type\":\"string\",\"description\":\"Peer ID.\"},\"roles\":{\"type\":\"string\",\"description\":\"Roles the peer is running\"},\"protocolVersion\":{\"type\":\"string\",\"description\":\"Peer's protocol version.\",\"format\":\"unsignedInteger\"},\"bestHash\":{\"type\":\"string\",\"description\":\"Hash of the best block on the peer's canon chain.\",\"format\":\"hex\"},\"bestNumber\":{\"type\":\"string\",\"description\":\"Height of the best block on the peer's canon chain.\",\"format\":\"unsignedInteger\"}}},\"RewardPool\":{\"type\":\"object\",\"properties\":{\"lastRecordedRewardCounter\":{\"type\":\"number\"},\"lastRecordedTotalPayouts\":{\"type\":\"number\"},\"totalRewardsClaimed\":{\"type\":\"number\"}}},\"RuntimeCode\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"code\":{\"type\":\"string\",\"format\":\"hex\"}}},\"RuntimeDispatchInfo\":{\"type\":\"object\",\"properties\":{\"weight\":{\"$ref\":\"#/components/schemas/WeightsV2\",\"description\":\"Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.\"},\"class\":{\"type\":\"string\",\"description\":\"Extrinsic class.\",\"enum\":[\"Normal\",\"Operational\",\"Mandatory\"]},\"partialFee\":{\"type\":\"string\",\"description\":\"The _inclusion fee_ of a transaction, i.e. the minimum fee required for a transaction. Includes weight and encoded length fees, but does not have access to any signed extensions, e.g. the `tip`.\",\"format\":\"unsignedInteger\"},\"kind\":{\"type\":\"string\",\"description\":\"Information on the partialFee that is collected. Can be either `preDispatch`, `postDispatch` or `fromEvent`. `preDispatch` means the information used to collect the fee was from `payment_queryInfo`, `postDispatch` means the information used to calculate the fee was from finalized weights for the extrinsic, and `fromEvent` means that the partialFee was abstracted from the `TransactionPayment::TransactionPaidFee` event.\"}},\"description\":\"RuntimeDispatchInfo for the transaction. Includes the `partialFee`.\"},\"RuntimeSpec\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"authoringVersion\":{\"type\":\"string\",\"description\":\"The version of the authorship interface. An authoring node will not attempt to author blocks unless this is equal to its native runtime.\"},\"chainType\":{\"$ref\":\"#/components/schemas/ChainType\"},\"implVersion\":{\"type\":\"string\",\"description\":\"Version of the implementation specification. Non-consensus-breaking optimizations are about the only changes that could be made which would result in only the `impl_version` changing. The `impl_version` is set to 0 when `spec_version` is incremented.\"},\"specName\":{\"type\":\"string\",\"description\":\"Identifies the different Substrate runtimes.\"},\"specVersion\":{\"type\":\"string\",\"description\":\"Version of the runtime specification.\"},\"transactionVersion\":{\"type\":\"string\",\"description\":\"All existing dispatches are fully compatible when this number doesn't change. This number must change when an existing dispatchable (module ID, dispatch ID) is changed, either through an alteration in its user-level semantics, a parameter added/removed/changed, a dispatchable being removed, a module being removed, or a dispatchable/module changing its index.\"},\"properties\":{\"type\":\"object\",\"description\":\"Arbitrary properties defined in the chain spec.\"}},\"description\":\"Version information related to the runtime.\"},\"SanitizedEvent\":{\"type\":\"object\",\"properties\":{\"method\":{\"type\":\"string\"},\"data\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"Signature\":{\"type\":\"object\",\"properties\":{\"signature\":{\"type\":\"string\",\"format\":\"hex\"},\"signer\":{\"type\":\"string\",\"format\":\"ss58\"}},\"description\":\"Object with `signature` and `signer`, or `null` if unsigned.\"},\"SpanId\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"target\":{\"type\":\"string\"},\"id\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"StakingLedger\":{\"type\":\"object\",\"properties\":{\"stash\":{\"type\":\"string\",\"description\":\"The _Stash_ account whose balance is actually locked and at stake.\",\"format\":\"ss58\"},\"total\":{\"type\":\"string\",\"description\":\"The total amount of the _Stash_'s balance that we are currently accounting for. Simply `active + unlocking`.\",\"format\":\"unsignedInteger\"},\"active\":{\"type\":\"string\",\"description\":\"The total amount of the _Stash_'s balance that will be at stake in any forthcoming eras.\",\"format\":\"unsignedInteger\"},\"unlocking\":{\"type\":\"string\",\"description\":\"Any balance that is becoming free, which may eventually be transferred out of the _Stash_ (assuming it doesn't get slashed first). Represented as an array of objects, each with an `era` at which `value` will be unlocked.\",\"format\":\"unsignedInteger\"},\"claimedRewards\":{\"type\":\"array\",\"description\":\"Array of eras for which the stakers behind a validator have claimed rewards. Only updated for _validators._\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"description\":\"The staking ledger.\"},\"StakingProgress\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"activeEra\":{\"type\":\"string\",\"description\":\"`EraIndex` of the era being rewarded.\\n\",\"format\":\"unsignedInteger\"},\"forceEra\":{\"type\":\"string\",\"description\":\"Current status of era forcing.\",\"enum\":[\"ForceNone\",\"NotForcing\",\"ForceAlways\",\"ForceNew\"]},\"nextActiveEraEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the next active era will start. Not included in response when `forceEra.isForceNone`.\",\"format\":\"unsignedInteger\"},\"nextSessionEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the next session will start.\",\"format\":\"unsignedInteger\"},\"unappliedSlashes\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/UnappliedSlash\"},\"description\":\"Array of upcoming `UnappliedSlash` indexed by era.\"},\"electionStatus\":{\"$ref\":\"#/components/schemas/ElectionStatus\"},\"idealValidatorCount\":{\"type\":\"string\",\"description\":\"Upper bound of validator set size; considered the ideal size. Not included in response when `forceEra.isForceNone`.\",\"format\":\"unsignedInteger\"},\"validatorSet\":{\"type\":\"array\",\"description\":\"Stash account IDs of the validators for the current session. Not included in response when `forceEra.isForceNone`.\",\"items\":{\"type\":\"string\",\"format\":\"ss58\"}}}},\"StakingValidators\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"validators\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"address\":{\"type\":\"string\",\"description\":\"Address of validator.\"},\"status\":{\"type\":\"string\",\"description\":\"Status of individual validator (active/waiting).\"}}}},\"validatorsToBeChilled\":{\"description\":\"Validators that will not be participating in the next era.\",\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"address\":{\"type\":\"string\",\"description\":\"Address of validator.\"},\"status\":{\"type\":\"string\",\"description\":\"Status of individual validator (active/waiting).\"}}}}}},\"StorageEntryTypeV13\":{\"type\":\"object\",\"properties\":{\"hasher\":{\"type\":\"string\",\"description\":\"Returns a string deonting the storage hasher.\"},\"key\":{\"type\":\"string\",\"description\":\"Key of the queried pallet storageId.\"},\"value\":{\"type\":\"string\",\"description\":\"Value of the queried pallet storageId.\"},\"linked\":{\"type\":\"boolean\"}}},\"StorageEntryTypeV14\":{\"type\":\"object\",\"properties\":{\"hasher\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Returns a string denoting the storage hasher inside of an array.\"},\"key\":{\"type\":\"string\",\"description\":\"The SiLookupTypeId to identify the type.\"},\"value\":{\"type\":\"string\",\"description\":\"The SiLookupTypeId to identify the type.\"}}},\"TraceEvent\":{\"type\":\"object\",\"properties\":{\"data\":{\"type\":\"object\",\"properties\":{\"stringValues\":{\"$ref\":\"#/components/schemas/TraceEventDataStringValues\"}}},\"parentId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"target\":{\"type\":\"string\"}}},\"TraceEventDataStringValues\":{\"type\":\"object\",\"properties\":{\"key\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"The complete storage key for the entry.\"},\"method\":{\"type\":\"string\",\"description\":\"Normally one of Put or Get.\"},\"result\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"Hex scale encoded storage value.\"}},\"description\":\"Note these exact values will only be present for storage events.\"},\"TraceSpan\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"name\":{\"type\":\"string\"},\"parentId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"target\":{\"type\":\"string\"},\"wasm\":{\"type\":\"boolean\"}}},\"Transaction\":{\"type\":\"object\",\"properties\":{\"tx\":{\"type\":\"string\",\"format\":\"hex\"}}},\"TransactionDryRun\":{\"type\":\"object\",\"properties\":{\"resultType\":{\"type\":\"string\",\"enum\":[\"DispatchOutcome\",\"TransactionValidityError\"],\"description\":\"Either `DispatchOutcome` if the transaction is valid or `TransactionValidityError` if the result is invalid.\"},\"result\":{\"type\":\"string\",\"enum\":[\"Ok\",\"CannotLookup\",\"NoUnsignedValidator\",\"Custom(u8)\",\"Call\",\"Payment\",\"Future\",\"Stale\",\"BadProof\",\"AncientBirthBlock\",\"ExhaustsResources\",\"BadMandatory\",\"MandatoryDispatch\"],\"description\":\"If there was an error it will be the cause of the error. If the transaction executed correctly it will be `Ok: []`\"},\"validityErrorType\":{\"type\":\"string\",\"enum\":[\"InvalidTransaction\",\"UnknownTransaction\"]}},\"description\":\"References: - `UnknownTransaction`: https://crates.parity.io/sp_runtime/transaction_validity/enum.UnknownTransaction.html - `InvalidTransaction`: https://crates.parity.io/sp_runtime/transaction_validity/enum.InvalidTransaction.html\"},\"TransactionFailedToParse\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"error\":{\"type\":\"string\",\"description\":\"`Failed to parse a tx.`\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"cause\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"}},\"description\":\"Error message when Sidecar fails to parse the transaction.\"},\"TransactionFailedToSubmit\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"error\":{\"type\":\"string\",\"description\":\"Failed to submit transaction.\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"cause\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"}},\"description\":\"Error message when the node rejects the submitted transaction.\"},\"TransactionFailure\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/TransactionFailedToSubmit\"},{\"$ref\":\"#/components/schemas/TransactionFailedToParse\"}]},\"TransactionFeeEstimate\":{\"type\":\"object\",\"properties\":{\"weight\":{\"$ref\":\"#/components/schemas/WeightsV2\",\"description\":\"Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.\"},\"class\":{\"type\":\"string\",\"description\":\"Extrinsic class.\",\"enum\":[\"Normal\",\"Operational\",\"Mandatory\"]},\"partialFee\":{\"type\":\"string\",\"description\":\"Expected inclusion fee for the transaction. Note that the fee rate changes up to 30% in a 24 hour period and this will not be the exact fee.\",\"format\":\"unsignedInteger\"}},\"description\":\"Note: `partialFee` does not include any tips that you may add to increase a transaction's priority. See [compute_fee](https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee).\"},\"TransactionFeeEstimateFailure\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"at\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\"}}},\"error\":{\"type\":\"string\",\"description\":\"Error description.\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"block\":{\"type\":\"string\",\"description\":\"Block hash of the block fee estimation was attempted at.\"},\"cause\":{\"type\":\"string\",\"description\":\"Error message from the client.\"},\"stack\":{\"type\":\"string\"}}},\"TransactionMaterial\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"genesisHash\":{\"type\":\"string\",\"description\":\"The hash of the chain's genesis block.\",\"format\":\"blockHash\"},\"chainName\":{\"type\":\"string\",\"description\":\"The chain's name.\"},\"specName\":{\"type\":\"string\",\"description\":\"The chain's spec.\"},\"specVersion\":{\"type\":\"string\",\"description\":\"The spec version. Always increased in a runtime upgrade.\"},\"txVersion\":{\"type\":\"string\",\"description\":\"The transaction version. Common `txVersion` numbers indicate that the transaction encoding format and method indices are the same. Needed for decoding in an offline environment. Adding new transactions does not change `txVersion`.\"},\"metadata\":{\"type\":\"string\",\"description\":\"The chain's metadata. It will only be present when the metadata query param is used.\"}},\"description\":\"Note: `chainName`, `specName`, and `specVersion` are used to define a type registry with a set of signed extensions and types. For Polkadot and Kusama, `chainName` is not used in defining this registry, but in other Substrate-based chains that re-launch their network without changing the `specName`, the `chainName` would be needed to create the correct registry. Substrate Reference: - `RuntimeVersion`: https://crates.parity.io/sp_version/struct.RuntimeVersion.html - `SignedExtension`: https://crates.parity.io/sp_runtime/traits/trait.SignedExtension.html - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html\"},\"TransactionPool\":{\"type\":\"object\",\"properties\":{\"pool\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"H256 hash of the extrinsic.\"},\"encodedExtrinsic\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"Scale encoded extrinsic.\"},\"tip\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The tip included in the extrinsic. Only included if the query param `includeFee` is set to true.\"},\"priority\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Computed priority of an extrinsic. Only included if the query param `includeFee` is set to true.\"},\"partialFee\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Provided `partialFee` of an extrinsic. Only included if the query param `includeFee` is set to true.\"}}}}}},\"TransactionSuccess\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The hash of the encoded transaction.\"}}},\"UnappliedSlash\":{\"type\":\"object\",\"properties\":{\"validator\":{\"type\":\"string\",\"description\":\"Stash account ID of the offending validator.\",\"format\":\"ss58\"},\"own\":{\"type\":\"string\",\"description\":\"The amount the validator will be slashed.\",\"format\":\"unsignedInteger\"},\"others\":{\"type\":\"array\",\"description\":\"Array of tuples(`[accountId, amount]`) representing all the stashes of other slashed stakers and the amount they will be slashed.\",\"items\":{\"type\":\"string\",\"format\":\"tuple[ss58, unsignedInteger]\"}},\"reporters\":{\"type\":\"array\",\"description\":\"Array of account IDs of the reporters of the offense.\",\"items\":{\"type\":\"string\",\"format\":\"ss58\"}},\"payout\":{\"type\":\"string\",\"description\":\"Amount of bounty payout to reporters.\",\"format\":\"unsignedInteger\"}}},\"VestingSchedule\":{\"type\":\"object\",\"properties\":{\"locked\":{\"type\":\"string\",\"description\":\"Number of tokens locked at start.\",\"format\":\"unsignedInteger\"},\"perBlock\":{\"type\":\"string\",\"description\":\"Number of tokens that gets unlocked every block after `startingBlock`.\",\"format\":\"unsignedInteger\"},\"startingBlock\":{\"type\":\"string\",\"description\":\"Starting block for unlocking (vesting).\",\"format\":\"unsignedInteger\"}},\"description\":\"Vesting schedule for an account.\"},\"WeightsV2\":{\"type\":\"object\",\"properties\":{\"refTime\":{\"type\":\"string\",\"description\":\"The weight of computational time used based on some reference hardware.\"},\"proofSize\":{\"type\":\"string\",\"description\":\"The weight of storage space used by proof of validity.\"}}},\"WinningData\":{\"type\":\"object\",\"properties\":{\"bid\":{\"type\":\"object\",\"properties\":{\"accountId\":{\"type\":\"string\"},\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"amount\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"leaseSet\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"description\":\"A currently winning bid and the set of lease periods the bid is for. The\\n`amount` of the bid is per lease period. The `bid` property will be `null`\\nif no bid has been made for the corresponding `leaseSet`.\\n\"}},\"requestBodies\":{\"Transaction\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Transaction\"}}},\"required\":true},\"ContractMetadata\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ContractMetadata\"}}}}}}}\n\n//# sourceURL=webpack://sidecar-swagger-ui/./src/openapi-v1.yaml?"); +eval("module.exports = {\"openapi\":\"3.0.0\",\"info\":{\"title\":\"Substrate API Sidecar\",\"description\":\"Substrate API Sidecar is a REST service that makes it easy to interact with blockchain nodes built using Substrate's FRAME framework.\",\"contact\":{\"url\":\"https://github.com/paritytech/substrate-api-sidecar\"},\"license\":{\"name\":\"GPL-3.0-or-later\",\"url\":\"https://github.com/paritytech/substrate-api-sidecar/blob/master/LICENSE\"},\"version\":\"19.0.1\"},\"servers\":[{\"url\":\"https://polkadot-public-sidecar.parity-chains.parity.io/\",\"description\":\"Polkadot Parity public sidecar\"},{\"url\":\"https://kusama-public-sidecar.parity-chains.parity.io/\",\"description\":\"Kusama Parity public sidecar\"},{\"url\":\"https://polkadot-asset-hub-public-sidecar.parity-chains.parity.io/\",\"description\":\"Polkadot Asset Hub Parity public sidecar\"},{\"url\":\"https://kusama-asset-hub-public-sidecar.parity-chains.parity.io/\",\"description\":\"Kusama Asset Hub Parity public sidecar\"}],\"tags\":[{\"name\":\"accounts\"},{\"name\":\"blocks\"},{\"name\":\"contracts\"},{\"name\":\"node\",\"description\":\"node connected to sidecar\"},{\"name\":\"pallets\",\"description\":\"pallets employed in the runtime\"},{\"name\":\"runtime\"},{\"name\":\"transaction\"},{\"name\":\"paras\"},{\"name\":\"trace\"}],\"paths\":{\"/accounts/{accountId}/asset-balances\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an array of asset-balances for an account.\",\"description\":\"Returns information about an account's asset-balances. This is specific to the assets pallet for parachains. If no `assets` query parameter is provided, all asset-balances for the given account will be returned.\",\"operationId\":\"getAssetBalances\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset-balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a positive integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assets\",\"in\":\"query\",\"description\":\"An array of AssetId's to be queried. If not supplied, defaults to providing all asset balances associated with the `accountId` will be returned. The array query param format follows Express 4.x API. ex:`?assets[]=1&assets[]=2&assets[]=3`.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of assetId numbers represented as strings\",\"format\":\"Array of unsignedInteger's\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountAssetsBalances\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/asset-approvals\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an asset approval for an account.\",\"description\":\"Returns information about an account's asset approval transaction. It is required to pass in a delegate and an assetId as query parameters.\",\"operationId\":\"getAssetApprovals\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset approval info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assetId\",\"in\":\"query\",\"description\":\"The `assetId` associated with the asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"description\":\"An assetId represented as an unsignedInteger.\",\"format\":\"unsignedInteger\"}},{\"name\":\"delegate\",\"in\":\"query\",\"description\":\"The delegate's `accountId` associated with an asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountAssetsApproval\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/balance-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get balance information for an account.\",\"description\":\"Returns information about an account's balance. Replaces `/balance/{address}` from versions < v1.0.0.\",\"operationId\":\"getAccountBalanceInfo\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"token\",\"in\":\"query\",\"description\":\"Token to query the balance of. If not specified it will query the chains native token (e.g. DOT for Polkadot). Note: this is only relevant for chains that support multiple tokens through the ORML tokens pallet.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Token symbol\"}},{\"name\":\"denominated\",\"in\":\"query\",\"description\":\"When set to `true` it will denominate any balance's given atomic value using the chains given decimal value.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountBalanceInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/convert\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Convert a given AccountId to an SS58 address.\",\"description\":\"Returns the SS58 prefix, the network address format, the SS58 address, and the AccountId that was given as input parameter, the scheme that was used and if it is a public key or not (boolean).\",\"operationId\":\"accountConvert\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"AccountId or Public Key (hex).\",\"required\":true,\"schema\":{\"format\":\"AccountId or Hex\",\"type\":\"string\"}},{\"name\":\"scheme\",\"in\":\"query\",\"description\":\"The cryptographic scheme to be used in order to convert the AccountId to an SS58 address. It can take one of three values [sr25519, ed25519, ecdsa]. The default scheme that is used is `sr25519` (if it is not set in the query parameter).\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"string\",\"default\":\"sr25519\"}},{\"name\":\"prefix\",\"in\":\"query\",\"description\":\"The address prefix which can be one of the values found in the SS58-registry.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"number\",\"default\":42}},{\"name\":\"publicKey\",\"in\":\"query\",\"description\":\"Defines if the given value in the path parameter is a Public Key (hex) or not (hence AccountId).\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successfully converted the AccountId and retrieved the address info.\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountConvert\"}}}},\"400\":{\"description\":\"Invalid AccountId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"AccountId not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/pool-asset-balances\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an array of pool-asset-balances for an account.\",\"description\":\"Returns information about an account's pool-asset-balances. This is specific to the pool assets pallet for parachains. If no `assets` query parameter is provided, all pool-asset-balances for the given account will be returned.\",\"operationId\":\"getPoolAssetBalances\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query pool-asset-balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a positive integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assets\",\"in\":\"query\",\"description\":\"An array of AssetId's to be queried. If not supplied, defaults to providing all asset balances associated with the `accountId` will be returned. The array query param format follows Express 4.x API. ex:`?assets[]=1&assets[]=2&assets[]=3`.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"A list of assetId numbers represented as strings\",\"format\":\"Array of unsignedInteger's\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountPoolAssetsBalances\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/pool-asset-approvals\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an asset approval for an account.\",\"description\":\"Returns information about an account's asset approval transaction. It is required to pass in a delegate and an assetId as query parameters.\",\"operationId\":\"getPoolAssetApprovals\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset approval info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assetId\",\"in\":\"query\",\"description\":\"The `assetId` associated with the asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"description\":\"An assetId represented as an unsignedInteger.\",\"format\":\"unsignedInteger\"}},{\"name\":\"delegate\",\"in\":\"query\",\"description\":\"The delegate's `accountId` associated with an asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountAssetsApproval\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/proxy-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get proxy account information.\",\"description\":\"Returns information about a proxy account. This will include delegated accounts and deposits held.\",\"operationId\":\"getProxyInfo\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query proxy info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountProxyInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/staking-info\":{\"get\":{\"tags\":[\"staking\"],\"summary\":\"Get staking information for a _Stash_ account.\",\"description\":\"Returns information about a _Stash_ account's staking activity. Replaces `/staking/{address}` from versions < v1.0.0.\",\"operationId\":\"getStakingSummaryByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account. Must be a _Stash_ account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the staking info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountStakingInfo\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/staking-payouts\":{\"get\":{\"tags\":[\"staking\"],\"summary\":\"Get payout information for a _Stash_ account.\",\"description\":\"Returns payout information for the last specified eras. If specifying both the depth and era query params, this endpoint will return information for (era - depth) through era. (i.e. if depth=5 and era=20 information will be returned for eras 16 through 20). N.B. You cannot query eras less then `current_era - HISTORY_DEPTH`. N.B. The `nominator*` fields correspond to the address being queried, even if it is a validator's _Stash_ address. This is because a validator is technically nominating itself.\",\"operationId\":\"getStakingPayoutsByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account. Must be a _Stash_ account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query staking payouts.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"depth\",\"in\":\"query\",\"description\":\"The number of eras to query for payouts of. Must be less than or equal to `HISTORY_DEPTH`. In cases where `era - (depth -1)` is less than 0, the first era queried will be 0.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"default\":1}},{\"name\":\"era\",\"in\":\"query\",\"description\":\"The era to query at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"default\":\"`active_era - 1`\"}},{\"name\":\"unclaimedOnly\",\"in\":\"query\",\"description\":\"Only return unclaimed rewards.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountStakingPayouts\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/vesting-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get vesting information for an account.\",\"description\":\"Returns the vesting schedule for an account. Replaces `/vesting/{address}` from versions < v1.0.0.\",\"operationId\":\"getVestingSummaryByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the vesting info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountVestingInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{address}/validate\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Validate a given address.\",\"description\":\"Returns whether the given address is valid ss58 format, the ss58 prefix if the address has one, the network address format, and what the account ID is for this address.\",\"operationId\":\"getValidationByAccountId\",\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 or Hex address of the account.\",\"required\":true,\"schema\":{\"format\":\"SS58 or Hex\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successfully retrieved address info\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountValidation\"}}}}}}},\"/blocks\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a range of blocks by their height.\",\"description\":\"Given a range query parameter return an array of all the blocks within that range.\",\"operationId\":\"getBlock\",\"parameters\":[{\"name\":\"range\",\"in\":\"query\",\"description\":\"A range of integers. There is a max limit of 500 blocks per request.\",\"required\":true,\"example\":\"0-499\",\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Blocks\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a block by its height or hash.\",\"description\":\"Returns a single block. BlockId can either be a block hash or a block height. Replaces `/block/{number}` from versions < v1.0.0.\",\"operationId\":\"getBlockById\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"finalizedKey\",\"in\":\"query\",\"description\":\"When set to false, this will override the chain-config, and omit the finalized key in the response. This can increase performance slightly by avoiding an additional RPC call to the node.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"decodedXcmMsgs\",\"in\":\"query\",\"description\":\"When set to `true`, this will show the decoded XCM messages within the extrinsics of the requested block.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"paraId\",\"in\":\"query\",\"description\":\"When it is set, this will return only the decoded XCM messages for the specified origin Parachain Id (originParaId). To activate this functionality, ensure that the `decodedXcmMsgs` parameter is set to true.\",\"required\":false,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockWithDecodedXcmMsgs\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/header\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a block's header by its height or hash.\",\"description\":\"Returns a single block's header. BlockId can either be a block hash or a block height.\",\"operationId\":\"getBlockHeaderById\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockHeader\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/extrinsics/{extrinsicIndex}\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get an extrinsic by its extrinsicIndex and block height or hash. The pair blockId, extrinsicIndex is sometimes referred to as a Timepoint.\",\"description\":\"Returns a single extrinsic.\",\"operationId\":\"getExtrinsicByTimepoint\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"extrinsicIndex\",\"in\":\"path\",\"description\":\"The extrinsic's index within the block's body.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ExtrinsicIndex\"}}}},\"400\":{\"description\":\"Requested `extrinsicIndex` does not exist\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/head\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get the most recently finalized block.\",\"description\":\"Returns the most recently finalized block. Replaces `/block` from versions < v1.0.0.\",\"operationId\":\"getHeadBlock\",\"parameters\":[{\"name\":\"finalized\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to get the finalized head. If it is not set the value defaults to true. When set to false it will attempt to get the newest known block, which may not be finalized.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"decodedXcmMsgs\",\"in\":\"query\",\"description\":\"When set to `true`, this will show the decoded XCM messages within the extrinsics of the requested block.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"paraId\",\"in\":\"query\",\"description\":\"When it is set, this will return only the decoded XCM messages for the specified origin Parachain Id (originParaId). To activate this functionality, ensure that the `decodedXcmMsgs` parameter is set to true.\",\"required\":false,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockWithDecodedXcmMsgs\"}}}}}}},\"/blocks/head/header\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get information about the header of the most recent finalized block.\",\"description\":\"Returns the most recently finalized block's header.\",\"operationId\":\"getLatestBlockHeader\",\"parameters\":[{\"name\":\"finalized\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to get the finalized head. If it is not set the value defaults to true. When set to false it will attempt to get the newest known block, which may not be finalized.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockHeader\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/extrinsics-raw\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a blocks header & its extrinsics as hex values.\",\"description\":\"Returns a block & its extrinsics as hex values. BlockId can either be a block hash or a block height.\",\"operationId\":\"getBlockRawExtrinsics\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockRaw\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/contracts/ink/{address}/query\":{\"post\":{\"tags\":[\"contracts\"],\"summary\":\"Query an !Ink contract with a given message (method).\",\"description\":\"Will return a valid or invalid result.\",\"operationId\":\"callContractQuery\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/ContractMetadata\"},\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 or Hex address of the account associated with the contract.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"method\",\"in\":\"query\",\"description\":\"The message or method used to query.\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"get\"}},{\"name\":\"gasLimit\",\"in\":\"query\",\"description\":\"The gas limit to be used as an option for the queried message.\",\"required\":false,\"schema\":{\"default\":-1,\"type\":\"number\"}},{\"name\":\"storageDepositLimit\",\"in\":\"query\",\"description\":\"The storage deposit limit to be used as an option for the queried message.\",\"required\":false,\"schema\":{\"default\":null,\"type\":\"number\"}},{\"name\":\"args\",\"in\":\"query\",\"description\":\"Abi params used as args specified in the metadata to be passed into a query. The format to use this query param is ?args[]=1&args[]=2&args[]=3.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of Abi params.\"}}],\"responses\":{\"200\":{\"description\":\"succesful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ContractsInkQuery\"}}}},\"400\":{\"description\":\"Invalid Method\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/node/network\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get information about the Substrate node's activity in the peer-to-peer network.\",\"description\":\"Returns network related information of the node.\",\"operationId\":\"getNodeNetworking\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NodeNetwork\"}}}}}}},\"/node/transaction-pool\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get pending extrinsics from the Substrate node.\",\"description\":\"Returns the extrinsics that the node knows of that have not been included in a block.\",\"operationId\":\"getNodeTransactionPool\",\"parameters\":[{\"name\":\"includeFee\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to include tips, partialFee, and priority in each extrinsic.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionPool\"}}}}}}},\"/node/version\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get information about the Substrates node's implementation and versioning.\",\"description\":\"Returns versioning information of the node.\",\"operationId\":\"getNodeVersion\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NodeVersion\"}}}}}}},\"/transaction\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Submit a transaction to the node's transaction pool.\",\"description\":\"Accepts a valid signed extrinsic. Replaces `/tx` from versions < v1.0.0.\",\"operationId\":\"submitTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionSuccess\"}}}},\"400\":{\"description\":\"failed to parse or submit transaction\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFailure\"}}}}}}},\"/transaction/dry-run\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Dry run an extrinsic.\",\"description\":\"Use the dryrun call to practice submission of a transaction.\",\"operationId\":\"dryrunTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionDryRun\"}}}},\"400\":{\"description\":\"failed to dry-run transaction\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFailure\"}}}}}}},\"/transaction/fee-estimate\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Receive a fee estimate for a transaction.\",\"description\":\"Send a serialized transaction and receive back a naive fee estimate. Note: `partialFee` does not include any tips that you may add to increase a transaction's priority. See the reference on `compute_fee`. Replaces `/tx/fee-estimate` from versions < v1.0.0. Substrate Reference: - `RuntimeDispatchInfo`: https://crates.parity.io/pallet_transaction_payment_rpc_runtime_api/struct.RuntimeDispatchInfo.html - `query_info`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.query_info - `compute_fee`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee\",\"operationId\":\"feeEstimateTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFeeEstimate\"}}}},\"400\":{\"description\":\"fee estimation failure\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFeeEstimateFailure\"}}}}}}},\"/transaction/material\":{\"get\":{\"tags\":[\"transaction\"],\"summary\":\"Get all the network information needed to construct a transaction offline.\",\"description\":\"Returns the material that is universal to constructing any signed transaction offline. Replaces `/tx/artifacts` from versions < v1.0.0.\",\"operationId\":\"getTransactionMaterial\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the transaction construction material.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"noMeta\",\"in\":\"query\",\"description\":\"DEPRECATED! This is no longer supported\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Specifies the format of the metadata to be returned. Accepted values are 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata. When `metadata` is not inputted, the `metadata` field will be absent.\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionMaterial\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/transaction/material/{metadataVersion}\":{\"get\":{\"tags\":[\"transaction\"],\"summary\":\"Get all the network information needed to construct a transaction offline and the version of metadata specified in `metadataVersion`.\",\"description\":\"Returns all the materials necessary for constructing any signed transactions offline.\",\"operationId\":\"getTransactionMaterialwithVersionedMetadata\",\"parameters\":[{\"name\":\"metadataVersion\",\"in\":\"path\",\"description\":\"The version of metadata. The input is expected in a `vX` format, where `X` represents the version number (e.g. `v14`, `v15`). By default, metadata is outputted in 'json' format, unless the `metadata` query parameter is provided, in which case it can be either in 'json' or 'scale' format.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the transaction construction material.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Specifies the format of the metadata to be returned. Accepted values are 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata.\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionMaterial\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/assets/{assetId}/asset-info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with an asset.\",\"description\":\"Returns information associated with an asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getAssetById\",\"parameters\":[{\"name\":\"assetId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of an asset.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the assetInfo.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsAssetsInfo\"}}}}}}},\"/pallets/asset-conversion/liquidity-pools\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information related to existing liquidity pools.\",\"description\":\"Returns a list of the existing liquidity pools and its corresponding tokens at a given block height. If no block is specified, it returns the latest list available.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the liquidity pools information.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LiquidityPools\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/asset-conversion/next-available-id\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the next available liquidity pool id.\",\"description\":\"Returns the next available liquidity pool's id at a given block height. If no block is specified, it returns the latest list available.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the next liquidity pool's id.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NextAvailableId\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/foreign-assets\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with foreign assets.\",\"description\":\"Returns information associated with every foreign asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getForeignAssets\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the foreign assets.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"An array of foreign assets.\",\"$ref\":\"#/components/schemas/PalletsForeignAssets\"}}}}}}},\"/pallets/nomination-pools/info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information associated with nomination pools.\",\"description\":\"Returns information and metadata for nomination pools including pool counters and limits.\",\"operationId\":\"getNominationPoolInfo\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the nomination pool info.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsNominationPoolsInfo\"}}}}}}},\"/pallets/nomination-pools/{poolId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with a nomination pool.\",\"description\":\"Returns information associated with a nomination pool which includes the nomination pools' `bondedPool`, `rewardPool` and `metadata`.\",\"operationId\":\"getNominationPoolById\",\"parameters\":[{\"name\":\"poolId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of a nomination pool.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the nomination pool.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsNominationPool\"}}}}}}},\"/pallets/{palletId}/consts\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of constants for a pallet.\",\"description\":\"Returns a list of const item metadata for constant items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read constant metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the const items instead of every constant's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's constant items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of constantItemIds.\",\"$ref\":\"#/components/schemas/PalletConstants\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/consts/{constantItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a constant item.\",\"description\":\"Returns the value stored under the constantItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read constant metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"constantItemId\",\"in\":\"path\",\"description\":\"Id of the const item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the const item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the const items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletConstantsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/dispatchables\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of dispatchables for a pallet.\",\"description\":\"Returns a list of dispatchable item metadata for distpachable items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read dispatchable metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the dispatchable items instead of every dispatchable's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of dispatchableItemIds.\",\"$ref\":\"#/components/schemas/PalletDispatchables\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/dispatchables/{dispatchableItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a dispatchable item.\",\"description\":\"Returns the value stored under the dispatchableItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read dispatchable metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"dispatchableItemId\",\"in\":\"path\",\"description\":\"Id of the dispatchable item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the dispatchable items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/errors\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of errors for a pallet.\",\"description\":\"Returns a list of error item metadata for error items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read error metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the error items instead of every error's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's error items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of errorItemIds.\",\"$ref\":\"#/components/schemas/PalletErrors\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/errors/{errorItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of an error item.\",\"description\":\"Returns the value stored under the errorItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read error metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"errorItemId\",\"in\":\"path\",\"description\":\"Id of the error item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the error item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the error items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletErrorsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/events\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of events for a pallet.\",\"description\":\"Returns a list of event item metadata for event items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read event metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the event items instead of every event's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's event items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of eventItemIds.\",\"$ref\":\"#/components/schemas/PalletEvents\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/events/{eventItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of an event item.\",\"description\":\"Returns the value stored under the eventItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read event metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventItemId\",\"in\":\"path\",\"description\":\"Id of the event item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the event item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the event items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletEventsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/runtime/metadata\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the runtime metadata in decoded, JSON form.\",\"description\":\"Returns the runtime metadata as a JSON object. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\",\"description\":\"Response is dependent on the runtime metadata contents.\"}}}}}}},\"/runtime/metadata/{metadataVersion}\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the requested version of runtime metadata in decoded, JSON form.\",\"description\":\"Returns the requested version of runtime metadata as a JSON object. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"metadataVersion\",\"in\":\"path\",\"description\":\"The version of metadata. The input is expected in a `vX` format, where `X` represents the version number (e.g. `v14`, `v15`).\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\",\"description\":\"Response is dependent on the runtime metadata contents.\"}}}}}}},\"/runtime/metadata/versions\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the available versions of runtime metadata.\",\"description\":\"Returns the available versions of runtime metadata. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata versions at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array with the available metadata versions.\"}}}}}}},\"/runtime/code\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the runtime wasm blob.\",\"description\":\"Returns the runtime Wasm blob in hex format.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the runtime wasm blob at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeCode\"}}}}}}},\"/runtime/spec\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get version information of the Substrate runtime.\",\"description\":\"Returns version information related to the runtime.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve runtime version information at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeSpec\"}}}}}}},\"/pallets/{palletId}/storage\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of storage items for a pallet.\",\"description\":\"Returns a list of storage item metadata for storage items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to query the storage of. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the storage items instead of all of each storage item's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's storage items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of storageItemIds.\",\"$ref\":\"#/components/schemas/PalletStorage\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/storage/{storageItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a storage item.\",\"description\":\"Returns the value stored under the storageItemId. If it is a map, query param key1 is required. If the storage item is double map query params key1 and key2 are required.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to query the storage of. Note: pallet name aligns with pallet name as specified in runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"storageItemId\",\"in\":\"path\",\"description\":\"Id of the storage item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"keys\",\"in\":\"query\",\"description\":\"Set of N keys used for querying a storage map. It should be queried using the following format - ?keys[]=key1&keys[]=key2. Order matters, as it will determine the order the keys are passed into the storage calls.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of storage keys.\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the storage item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the storage items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletStorageItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/pool-assets/{assetId}/asset-info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with a pool asset.\",\"description\":\"Returns information associated with a pool asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getPoolAssetById\",\"parameters\":[{\"name\":\"assetId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of a pool asset.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the assetInfo.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsPoolAssetsInfo\"}}}}}}},\"/pallets/staking/progress\":{\"get\":{\"tags\":[\"staking\",\"pallets\"],\"summary\":\"Get progress on the general Staking pallet system.\",\"description\":\"Returns information on the progress of key components of the staking system and estimates of future points of interest. Replaces `/staking-info` from versions < v1.0.0.\",\"operationId\":\"getStakingProgress\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a staking progress report.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/StakingProgress\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/staking/validators\":{\"get\":{\"tags\":[\"staking\",\"pallets\"],\"summary\":\"Get all validators (active/waiting) of a specific chain.\",\"description\":\"Returns a list of all validators addresses and their corresponding status which can be either active or waiting. It will also return a list of active validators that will not be part of the next era for staking. They will be under the key \\\"validatorsToBeChilled\\\". It's important to note, that addresses can be present in both the \\\"validators\\\" key, and \\\"validatorsToBeChilled\\\".\",\"operationId\":\"getStakingValidators\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the list of validators.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/StakingValidators\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/paras\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] List all registered paras (parathreads & parachains).\\n\",\"description\":\"Returns all registered parachains and parathreads with lifecycle info.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve paras list at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Paras\"}}}}}}},\"/paras/leases/current\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get general information about the current lease period.\\n\",\"description\":\"Returns an overview of the current lease period, including lease holders.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve current lease period info at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"currentLeaseHolders\",\"in\":\"query\",\"description\":\"Wether or not to include the `currentLeaseHolders` property. Inclusion\\nof the property will likely result in a larger payload and increased\\nresponse time.\\n\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasLeasesCurrent\"}}}}}}},\"/paras/auctions/current\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the status of the current auction.\\n\",\"description\":\"Returns an overview of the current auction. There is only one auction\\nat a time. If there is no auction most fields will be `null`. If the current\\nauction phase is in `vrfDelay` and you are looking to retrieve the latest winning\\nbids, it is advised to query one block before `finishEnd` in the `endingPeriod` phase\\nfor that auction as there technically are no winners during the `vrfDelay` and thus\\nthe field is `null`.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve auction progress at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasAuctionsCurrent\"}}}}}}},\"/paras/crowdloans\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] List all stored crowdloans.\\n\",\"description\":\"Returns a list of all the crowdloans and their associated paraIds.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the list of paraIds that have crowdloans at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasCrowdloans\"}}}}}}},\"/paras/{paraId}/crowdloan-info\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get crowdloan information for a `paraId`.\\n\",\"description\":\"Returns crowdloan's `fundInfo` and the set of `leasePeriods` the crowdloan`\\ncovers.\\n\",\"parameters\":[{\"name\":\"paraId\",\"in\":\"path\",\"description\":\"paraId to query the crowdloan information of.\",\"required\":true,\"schema\":{\"type\":\"number\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve info at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasCrowdloanInfo\"}}}}}}},\"/paras/{paraId}/lease-info\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get current and future leases as well as the lifecycle stage for a given `paraId`.\\n\",\"description\":\"Returns a list of leases that belong to the `paraId` as well as the\\n`paraId`'s current lifecycle stage.\\n\",\"parameters\":[{\"name\":\"paraId\",\"in\":\"path\",\"description\":\"paraId to query the crowdloan information of.\",\"required\":true,\"schema\":{\"type\":\"number\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's leases at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasLeaseInfo\"}}}}}}},\"/paras/head/included-candidates\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the heads of the included (backed and considered available) parachain candidates at the\\nspecified block height or at the most recent finalized head otherwise.\\n\",\"description\":\"Returns an object with all the parachain id's as keys, and their headers as values.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's heads at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasHeaders\"}}}}}}},\"/paras/head/backed-candidates\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the heads of the backed parachain candidates at the specified block height or at the most recent finalized head otherwise.\\n\",\"description\":\"Returns an object with all the parachain id's as keys, and their headers as values.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's heads at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasHeaders\"}}}}}}},\"/experimental/blocks/head/traces\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get traces for the most\\nrecently finalized block.\\n\",\"description\":\"Returns traces (spans and events) of the most recently finalized block from\\nRPC `state_straceBlock`. Consult the [RPC docs](https://github.com/paritytech/substrate/blob/aba876001651506f85c14baf26e006b36092e1a0/client/rpc-api/src/state/mod.rs#L140)\\nfor conceptual info.\\n\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTrace\"}}}}}}},\"/experimental/blocks/{blockId}/traces\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get traces for the given `blockId`.\\n\",\"description\":\"Returns traces (spans and events) of the specified block from\\nRPC `state_straceBlock`. Consult the [RPC docs](https://github.com/paritytech/substrate/blob/aba876001651506f85c14baf26e006b36092e1a0/client/rpc-api/src/state/mod.rs#L140) for conceptual info.\\n\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTrace\"}}}}}}},\"/experimental/blocks/head/traces/operations\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get the operations from the\\nmost recently finalized block.\\n\",\"description\":\"Returns the operations from the most recently finalized block. Operations\\nrepresent one side of a balance change. For example if Alice transfers\\n100unit to Bob there will be two operations; 1) Alice - 100 2) Bob + 100.\\n\\nGiven account A and A's balance at block k0 (Ak0), if we sum all the\\noperations for A from block k1 through kn against Ak0, we will end up\\nwith A's balance at block kn (Akn). Thus, operations can be used to audit\\nthat balances change as expected.\\n\\nThis is useful for Substrate based chains because the advanced business\\nlogic can make it difficult to ensure auditable balance reconciliation\\nbased purely on events. Instead of using events one can use the\\noperations given from this endpoint.\\n\\nNote - each operation corresponds to a delta of a single field of the\\n`system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`\\nand `fee_frozen`).\\nNote - operations are assigned a block execution phase (and extrinsic index\\nfor those in the apply extrinsic phase) based on an \\\"action group\\\". For\\nexample all the operations for 1 extrinsic will be in the same action group.\\nThe action groups can optionally be fetched with the `action` query param\\nfor closer auditing.\\nNote - There are no 0 value operations (e.g. a transfer of 0, or a\\ntransfer to itself)\\n\\nTo learn more about operation and action group creation please consult\\n[this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)\\n\",\"parameters\":[{\"name\":\"actions\",\"in\":\"query\",\"description\":\"Whether or not to include action groups.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTraceOperations\"}}}}}}},\"/experimental/blocks/{blockId}/traces/operations\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get the operations from the\\nspecified block.\\n\",\"description\":\"Returns the operations from the most recently finalized block. Operations\\nrepresent one side of a balance change. For example if Alice transfers\\n100unit to Bob there will be two operations; 1) Alice - 100 2) Bob + 100.\\n\\nGiven account A and A's balance at block k0 (Ak0), if we sum all the\\noperations for A from block k1 through kn against Ak0, we will end up\\nwith A's balance at block kn (Akn). Thus, operations can be used to audit\\nthat balances change as expected.\\n\\nThis is useful for Substrate based chains because the advanced business\\nlogic can make it difficult to ensure auditable balance reconciliation\\nbased purely on events. Instead of using events one can use the\\noperations given from this endpoint.\\n\\nNote - each operation corresponds to a delta of a single field of the\\n`system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`\\nand `fee_frozen`).\\nNote - operations are assigned a block execution phase (and extrinsic index\\nfor those in the apply extrinsic phase) based on an \\\"action group\\\". For\\nexample all the operations for 1 extrinsic will be in the same action group.\\nThe action groups can optionally be fetched with the `action` query param\\nfor closer auditing.\\nNote - There are no 0 value operations (e.g. a transfer of 0, or a\\ntransfer to itself)\\n\\nTo learn more about operation and action group creation please consult\\n[this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)\\n\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"actions\",\"in\":\"query\",\"description\":\"Whether or not to include action groups.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTraceOperations\"}}}}}}}},\"components\":{\"schemas\":{\"AccountAssetsApproval\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"amount\":{\"type\":\"string\",\"description\":\"The amount of funds approved for the balance transfer from the owner to some delegated target.\",\"format\":\"unsignedInteger\"},\"deposit\":{\"type\":\"string\",\"description\":\"The amount reserved on the owner's account to hold this item in storage.\",\"format\":\"unsignedInteger\"}}},\"AccountAssetsBalances\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"assets\":{\"type\":\"array\",\"description\":\"An array of queried assets.\",\"items\":{\"$ref\":\"#/components/schemas/AssetsBalance\"}}}},\"AccountBalanceInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"nonce\":{\"type\":\"string\",\"description\":\"Account nonce.\",\"format\":\"unsignedInteger\"},\"tokenSymbol\":{\"type\":\"string\",\"description\":\"Token symbol of the balances displayed in this response.\",\"format\":\"unsignedInteger\"},\"free\":{\"type\":\"string\",\"description\":\"Free balance of the account. Not equivalent to _spendable_ balance. This is the only balance that matters in terms of most operations on tokens.\",\"format\":\"unsignedInteger\"},\"reserved\":{\"type\":\"string\",\"description\":\"Reserved balance of the account.\",\"format\":\"unsignedInteger\"},\"miscFrozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when withdrawing for anything except transaction fee payment. Note, that some runtimes may not have support for miscFrozen and if so the following will be returned `miscFrozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"feeFrozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when withdrawing specifically for transaction fee payment. Note, that some runtimes may not have support for feeFrozen and if so the following will be returned `feeFrozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"frozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when reducing the balance, except for actions where the account owner cannot reasonably benefit from the balance reduction, such as slashing. Note, that some runtimes may not have support for frozen and if so the following will be returned `frozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"locks\":{\"type\":\"array\",\"description\":\"Array of locks on a balance. There can be many of these on an account and they \\\"overlap\\\", so the same balance is frozen by multiple locks\",\"items\":{\"$ref\":\"#/components/schemas/BalanceLock\"}}}},\"AccountConvert\":{\"type\":\"object\",\"properties\":{\"ss58Prefix\":{\"type\":\"string\",\"description\":\"SS58 prefix based on which the account ID or Public Key (hex) is converted to an SS58 address.\",\"format\":\"unsignedInteger\"},\"network\":{\"type\":\"string\",\"description\":\"The network based on which the returned address is encoded. It depends on the prefix that was given as a query param.\"},\"address\":{\"type\":\"string\",\"description\":\"The returned SS58 address which is the result of the conversion of the account ID or Public Key (hex).\"},\"accountId\":{\"type\":\"string\",\"description\":\"The given account ID or Public Key (hex) that is converted to an SS58 address.\"},\"scheme\":{\"type\":\"string\",\"description\":\"The cryptographic scheme/algorithm used to encode the given account ID or Public Key (hex).\"},\"publicKey\":{\"type\":\"boolean\",\"description\":\"Whether the given path parameter is a Public Key (hex) or not.\"}}},\"AccountPoolAssetsBalances\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"poolAssets\":{\"type\":\"array\",\"description\":\"An array of queried assets.\",\"items\":{\"$ref\":\"#/components/schemas/AssetsBalance\"}}}},\"AccountProxyInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"delegatedAccounts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"delegate\":{\"type\":\"string\",\"description\":\"Delegate address for the given proxy.\",\"format\":\"ss58\"},\"delay\":{\"type\":\"string\",\"description\":\"The announcement period required of the initial proxy. Will generally be zero.\",\"format\":\"unsignedInteger\"},\"proxyType\":{\"type\":\"string\",\"description\":\"The permissions allowed for this proxy account.\"}}}},\"depositHeld\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The held deposit.\"}}},\"AccountStakingInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"rewardDestination\":{\"type\":\"string\",\"description\":\"The account to which rewards will be paid. Can be 'Staked' (Stash account, adding to the amount at stake), 'Stash' (Stash address, not adding to the amount at stake), or 'Controller' (Controller address).\",\"format\":\"ss58\",\"enum\":[\"Staked\",\"Stash\",\"Controller\"]},\"controller\":{\"type\":\"string\",\"description\":\"Controller address for the given Stash.\",\"format\":\"ss58\"},\"numSlashingSpans\":{\"type\":\"string\",\"description\":\"Number of slashing spans on Stash account; `null` if provided address is not a Controller.\",\"format\":\"unsignedInteger\"},\"nominations\":{\"$ref\":\"#/components/schemas/Nominations\"},\"stakingLedger\":{\"$ref\":\"#/components/schemas/StakingLedger\"}},\"description\":\"Note: Runtime versions of Kusama less than 1062 will either have `lastReward` in place of `claimedRewards`, or no field at all. This is related to changes in reward distribution. See: [Lazy Payouts](https://github.com/paritytech/substrate/pull/4474), [Simple Payouts](https://github.com/paritytech/substrate/pull/5406)\"},\"AccountStakingPayouts\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"erasPayouts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"era\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Era this information is associated with.\"},\"totalEraRewardPoints\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Total reward points for the era. Equals the sum of reward points for all the validators in the set.\"},\"totalEraPayout\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Total payout for the era. Validators split the payout based on the portion of `totalEraRewardPoints` they have.\"},\"payouts\":{\"$ref\":\"#/components/schemas/Payouts\"}}}}}},\"AccountValidation\":{\"type\":\"object\",\"properties\":{\"isValid\":{\"type\":\"boolean\",\"description\":\"Whether the given address is valid ss58 formatted.\"},\"ss58Prefix\":{\"type\":\"string\",\"description\":\"SS58 prefix of the given address. If the address is a valid base58 format, but incorrect ss58, a prefix for the given address will still be returned.\",\"format\":\"unsignedInteger\"},\"network\":{\"type\":\"string\",\"description\":\"The network based on which the given address is encoded.\"},\"accountId\":{\"type\":\"string\",\"description\":\"The account id of the given address.\"}}},\"AccountVestingInfo\":{\"type\":\"object\",\"description\":\"Sidecar version's <= v10.0.0 have a`vesting` return value that defaults to an object for when there is no available vesting-info data. It also returns a `VestingInfo` as an object. For Sidecar >=11.0.0, that value will now default as an array when there is no value, and `Vec` is returned when there is.\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"vesting\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/VestingSchedule\"}}}},\"AssetsBalance\":{\"type\":\"object\",\"properties\":{\"assetId\":{\"type\":\"string\",\"description\":\"The identifier of the asset.\",\"format\":\"unsignedInteger\"},\"balance\":{\"type\":\"string\",\"description\":\"The balance of the asset.\",\"format\":\"unsignedInteger\"},\"isFrozen\":{\"type\":\"boolean\",\"description\":\"Whether the asset is frozen for non-admin transfers. Note, that some runtimes may not have support for isFrozen and if so the following will be returned `isFrozen does not exist for this runtime`\"},\"isSufficient\":{\"type\":\"boolean\",\"description\":\"Whether a non-zero balance of this asset is a deposit of sufficient value to account for the state bloat associated with its balance storage. If set to `true`, then non-zero balances may be stored without a `consumer` reference (and thus an ED in the Balances pallet or whatever else is used to control user-account state growth).\"}}},\"AssetInfo\":{\"type\":\"object\",\"properties\":{\"owner\":{\"type\":\"string\",\"description\":\"Owner of the assets privileges.\",\"format\":\"SS58\"},\"issuer\":{\"type\":\"string\",\"description\":\"The `AccountId` able to mint tokens.\",\"format\":\"SS58\"},\"admin\":{\"type\":\"string\",\"description\":\"The `AccountId` that can thaw tokens, force transfers and burn token from any account.\",\"format\":\"SS58\"},\"freezer\":{\"type\":\"string\",\"description\":\"The `AccountId` that can freeze tokens.\",\"format\":\"SS58\"},\"supply\":{\"type\":\"string\",\"description\":\"The total supply across accounts.\",\"format\":\"unsignedInteger\"},\"deposit\":{\"type\":\"string\",\"description\":\"The balance deposited for this. This pays for the data stored.\",\"format\":\"unsignedInteger\"},\"minBalance\":{\"type\":\"string\",\"description\":\"The ED for virtual accounts.\",\"format\":\"unsignedInteger\"},\"isSufficient\":{\"type\":\"boolean\",\"description\":\"If `true`, then any account with this asset is given a provider reference. Otherwise, it requires a consumer reference.\"},\"accounts\":{\"type\":\"string\",\"description\":\"The total number of accounts.\",\"format\":\"unsignedInteger\"},\"sufficients\":{\"type\":\"string\",\"description\":\"The total number of accounts for which is placed a self-sufficient reference.\"},\"approvals\":{\"type\":\"string\",\"description\":\"The total number of approvals.\",\"format\":\"unsignedInteger\"},\"status\":{\"type\":\"string\",\"description\":\"The status of the asset.\"}}},\"AssetMetadata\":{\"type\":\"object\",\"properties\":{\"deposit\":{\"type\":\"string\",\"description\":\"The balance deposited for this metadata. This pays for the data stored in this struct.\",\"format\":\"unsignedInteger\"},\"name\":{\"type\":\"string\",\"description\":\"The user friendly name of this asset.\",\"format\":\"$hex\"},\"symbol\":{\"type\":\"string\",\"description\":\"The ticker symbol for this asset.\",\"format\":\"$hex\"},\"decimals\":{\"type\":\"string\",\"description\":\"The number of decimals this asset uses to represent one unit.\",\"format\":\"unsignedInteger\"},\"isFrozen\":{\"type\":\"boolean\",\"description\":\"Whether the asset metadata may be changed by a non Force origin. Note, that some runtimes may not have support for isFrozen and if so the following will be returned `isFrozen does not exist for this runtime`\"}}},\"BalanceLock\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"An identifier for this lock. Only one lock may be in existence for each identifier.\"},\"amount\":{\"type\":\"string\",\"description\":\"The amount below which the free balance may not drop with this lock in effect.\",\"format\":\"unsignedInteger\"},\"reasons\":{\"type\":\"string\",\"description\":\"Reasons for withdrawing balance.\",\"enum\":[\"Fee = 0\",\"Misc = 1\",\"All = 2\"]}}},\"Block\":{\"type\":\"object\",\"properties\":{\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"authorId\":{\"type\":\"string\",\"description\":\"The account ID of the block author (may be undefined for some chains).\",\"format\":\"ss58\"},\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"},\"onInitialize\":{\"$ref\":\"#/components/schemas/BlockInitialize\"},\"extrinsics\":{\"type\":\"array\",\"description\":\"Array of extrinsics (inherents and transactions) within the block.\",\"items\":{\"$ref\":\"#/components/schemas/Extrinsic\"}},\"onFinalize\":{\"$ref\":\"#/components/schemas/BlockFinalize\"},\"finalized\":{\"type\":\"boolean\",\"description\":\"A boolean identifying whether the block is finalized or not. Note: on chains that do not have deterministic finality this field is omitted.\"}},\"description\":\"Note: Block finalization does not correspond to consensus, i.e. whether the block is in the canonical chain. It denotes the finalization of block _construction._\"},\"BlockRaw\":{\"type\":\"object\",\"properties\":{\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}},\"extrinsics\":{\"type\":\"array\",\"description\":\"Array of raw extrinsics (inherents and transactions) within the block.\",\"items\":{\"type\":\"string\"}}}},\"Blocks\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Block\"}},\"BlockFinalize\":{\"type\":\"object\",\"properties\":{\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}}},\"description\":\"Object with an array of `SanitizedEvent`s that occurred during block construction finalization with the `method` and `data` for each.\"},\"BlockHeader\":{\"type\":\"object\",\"properties\":{\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}}}},\"BlockIdentifiers\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"height\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"}},\"description\":\"Block number and hash at which the call was made.\"},\"BlockInitialize\":{\"type\":\"object\",\"properties\":{\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}}},\"description\":\"Object with an array of `SanitizedEvent`s that occurred during block initialization with the `method` and `data` for each.\"},\"BlocksTrace\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"blockHash\":{\"type\":\"string\"},\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TraceEvent\"}},\"parentHash\":{\"type\":\"string\"},\"spans\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TraceSpan\"}},\"storageKeys\":{\"type\":\"string\",\"description\":\"Hex encoded storage keys used to filter events.\"},\"tracingTargets\":{\"type\":\"string\",\"description\":\"Targets used to filter spans and events.\"}}},\"BlocksTraceOperations\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"operations\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Operation\"}}}},\"BlockWithDecodedXcmMsgs\":{\"allOf\":[{\"$ref\":\"#/components/schemas/Block\"},{\"$ref\":\"#/components/schemas/DecodedXcmMsgs\"}],\"description\":\"Block information that includes the decoded XCM messages if any are found in the queried block. If not, the decodedXcmMsgs object will be returned with three empty arrays corresponding to each direction, horizontalMessages, downwardMessages, upwardMessages.\"},\"BondedPool\":{\"type\":\"object\",\"properties\":{\"points\":{\"type\":\"number\"},\"state\":{\"type\":\"string\"},\"memberCounter\":{\"type\":\"number\"},\"roles\":{\"type\":\"object\",\"properties\":{\"depositor\":{\"type\":\"string\"},\"root\":{\"type\":\"string\"},\"nominator\":{\"type\":\"string\"},\"stateToggler\":{\"type\":\"string\"}}}}},\"ChainType\":{\"type\":\"object\",\"description\":\"Type of the chain. It will return one of the following enum variants as a key. Live, Development, Local, or Custom. Each variant will have a value as null except when the ChainType is Custom, it will return a string.\",\"properties\":{\"live\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"development\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"local\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"custom\":{\"type\":\"string\"}},\"example\":\"{\\\"live\\\": null}\"},\"ContractsInkQuery\":{\"type\":\"object\",\"description\":\"Result from calling a query to a Ink contract.\",\"properties\":{\"debugMessage\":{\"type\":\"string\"},\"gasConsumed\":{\"type\":\"string\"},\"gasRequired\":{\"type\":\"string\"},\"output\":{\"type\":\"boolean\"},\"result\":{\"type\":\"object\",\"description\":\"Will result in an Ok or Err object depending on the result of the query.\"},\"storageDeposit\":{\"type\":\"object\"}}},\"ContractMetadata\":{\"type\":\"object\",\"description\":\"Metadata used to instantiate a ContractPromise. This metadata can be generated by compiling the contract you are querying.\"},\"DecodedXcmMsgs\":{\"type\":\"object\",\"properties\":{\"decodedXcmMsgs\":{\"type\":\"object\",\"properties\":{\"horizontalMessages\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/DecodedXcmMsgsHorizontalMessagesInRelay\"},{\"$ref\":\"#/components/schemas/DecodedXcmMsgsHorizontalMessagesInParachain\"}]},\"downwardMessages\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"sentAt\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Represents the block number that the XCM message was sent at on the relay chain.\"},\"msg\":{\"type\":\"string\",\"description\":\"Represents the XCM message.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}}}},\"upwardMessages\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}}}}}}},\"description\":\"Object with three arrays, one for every XCM direction. The arrays are populated or left empty based on the direction of the current XCM message that is being decoded. The XCM messages can be Upward and/or Horizontal (`in transit`) messages when connected to a Relay chain. When connected to a Parachain, the messages can be Downward and/or Horizontal. One or more messages can be present in a single block. In case of multiple messages from the same paraIds (originParaId and/or destinationParaId), the messages will be shown under the field `data`.\"},\"DecodedXcmMsgsHorizontalMessagesInRelay\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"destinationParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent to.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}},\"description\":\"Array that includes the Horizontal (`in transit`) messages when we are connected to a Relay Chain. Each block can contain one or more messages. If multiple messages share the same origin and destination paraId, they will be displayed within the data field.\"}},\"DecodedXcmMsgsHorizontalMessagesInParachain\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"sentAt\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Represents the block number that the XCM message was sent at on the relay chain.\"},\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}},\"description\":\"Array that includes the Horizontal Messages when we are connected to a Parachain. Each block can contain one or more messages. If multiple messages originate from the same parachain (originParaId), they will be displayed within the data field.\"}},\"DigestItem\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"index\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"value\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"ElectionStatus\":{\"type\":\"object\",\"properties\":{\"status\":{\"type\":\"object\",\"description\":\"[Deprecated](Works for polkadot runtimes before v0.8.30).\\nEra election status: either `Close: null` or `Open: `. A status of `Close` indicates that the submission window for solutions from off-chain Phragmen is not open. A status of `Open` indicates that the submission window for off-chain Phragmen solutions has been open since BlockNumber. N.B. when the submission window is open, certain extrinsics are not allowed because they would mutate the state that the off-chain Phragmen calculation relies on for calculating results.\"},\"toggleEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the `status` will switch.\",\"format\":\"unsignedInteger\"}},\"description\":\"Information about the off-chain election. Not included in response when `forceEra.isForceNone`.\"},\"Error\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"message\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"},\"level\":{\"type\":\"string\"}}},\"ExtrinsicMethod\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\"},\"method\":{\"type\":\"string\"}},\"description\":\"Extrinsic method\"},\"Extrinsic\":{\"type\":\"object\",\"properties\":{\"method\":{\"$ref\":\"#/components/schemas/ExtrinsicMethod\"},\"signature\":{\"$ref\":\"#/components/schemas/Signature\"},\"nonce\":{\"type\":\"string\",\"description\":\"Account nonce, if applicable.\",\"format\":\"unsignedInteger\"},\"args\":{\"type\":\"object\",\"description\":\"Object of arguments keyed by parameter name. Note: if you are expecting an [`OpaqueCall`](https://substrate.dev/rustdocs/v2.0.0/pallet_multisig/type.OpaqueCall.html) and it is not decoded in the response (i.e. it is just a hex string), then Sidecar was not able to decode it and likely that it is not a valid call for the runtime.\"},\"tip\":{\"type\":\"string\",\"description\":\"Any tip added to the transaction.\",\"format\":\"unsignedInteger\"},\"hash\":{\"type\":\"string\",\"description\":\"The transaction's hash.\",\"format\":\"hex\"},\"info\":{\"$ref\":\"#/components/schemas/RuntimeDispatchInfo\"},\"era\":{\"$ref\":\"#/components/schemas/GenericExtrinsicEra\"},\"events\":{\"type\":\"array\",\"description\":\"An array of `SanitizedEvent`s that occurred during extrinsic execution.\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}},\"success\":{\"type\":\"boolean\",\"description\":\"Whether or not the extrinsic succeeded.\"},\"paysFee\":{\"type\":\"boolean\",\"description\":\"Whether the extrinsic requires a fee. Careful! This field relates to whether or not the extrinsic requires a fee if called as a transaction. Block authors could insert the extrinsic as an inherent in the block and not pay a fee. Always check that `paysFee` is `true` and that the extrinsic is signed when reconciling old blocks.\"}}},\"ExtrinsicIndex\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"extrinsic\":{\"$ref\":\"#/components/schemas/Extrinsic\"}},\"description\":\"A single extrinsic at a given block.\"},\"FundInfo\":{\"type\":\"object\",\"properties\":{\"depositor\":{\"type\":\"string\"},\"verifier\":{\"type\":\"string\"},\"deposit\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"raised\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"end\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"cap\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"lastConstribution\":{\"type\":\"string\",\"enum\":[\"preEnding\",\"ending\"]},\"firstPeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"lastPeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"trieIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"GenericExtrinsicEra\":{\"type\":\"object\",\"description\":\"The return value for era can either be `mortalEra`, or `immortalEra` and is represented as an enum in substrate. `immortalEra` meaning\\nthe transaction is valid forever. `mortalEra` consists of a tuple containing a period and phase.\\nex: `\\\"{\\\"mortalEra\\\": [\\\"64\\\", \\\"11\\\"]}\\\"`. The Period is the period of validity from the block hash found in the signing material.\\nThe Phase is the period that this transaction's lifetime begins (and, importantly,\\nimplies which block hash is included in the signature material).\\n\",\"properties\":{\"mortalEra\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Tuple of a Phase, and Period. Each item in the array will be a string formatted as an integer.\"},\"immortalEra\":{\"type\":\"string\",\"description\":\"Hardcoded constant '0x00'.\",\"format\":\"hex\"}},\"example\":\"{\\\"mortalEra\\\":[\\\"64\\\", \\\"11\\\"]}\"},\"LiquidityPools\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pools\":{\"type\":\"array\",\"description\":\"Array containing existent liquidity pool's token id.\",\"items\":{\"$ref\":\"#/components/schemas/LiquidityPool\"},\"example\":\"[{\\\"reserves\\\":[{\\\"parents\\\":\\\"1\\\",\\\"interior\\\":{\\\"here\\\": null}},{\\\"parents\\\":\\\"0\\\",\\\"interior\\\":{\\\"x2\\\":[{\\\"palletInstance\\\": \\\"50\\\"},{\\\"generalIndex\\\":\\\"2\\\"}]}}],\\\"lpToken\\\":{\\\"lpToken\\\":\\\"1\\\"} },{\\\"lpToken\\\":{\\\"lpToken\\\":\\\"0\\\"}}]\"}}},\"LiquidityPool\":{\"type\":\"object\",\"properties\":{\"reserves\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"parents\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"interior\":{\"type\":\"object\"}}}},\"lpToken\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Liquidity pool token ID.\"}}},\"NextAvailableId\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"id\":{\"type\":\"string\",\"description\":\"Next availabe liquidity pool's id.\",\"example\":\"4\"}}},\"NodeNetwork\":{\"type\":\"object\",\"properties\":{\"nodeRoles\":{\"$ref\":\"#/components/schemas/NodeRole\"},\"numPeers\":{\"type\":\"string\",\"description\":\"Number of peers the node is connected to.\",\"format\":\"unsignedInteger\"},\"isSyncing\":{\"type\":\"boolean\",\"description\":\"Whether or not the node is syncing. `False` indicates that the node is in sync.\"},\"shouldHavePeers\":{\"type\":\"boolean\",\"description\":\"Whether or not the node should be connected to peers. Might be false for local chains or when running without discovery.\"},\"localPeerId\":{\"type\":\"string\",\"description\":\"Local copy of the `PeerId`.\"},\"localListenAddresses\":{\"type\":\"array\",\"description\":\"Multiaddresses that the local node is listening on. The addresses include a trailing `/p2p/` with the local PeerId, and are thus suitable to be passed to `system_addReservedPeer` or as a bootnode address for example.\",\"items\":{\"type\":\"string\"}},\"peersInfo\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PeerInfo\"}}}},\"NodeRole\":{\"type\":\"string\",\"description\":\"Role of this node. (N.B. Sentry nodes are being deprecated.)\",\"enum\":[\"Full\",\"LightClient\",\"Authority\",\"Sentry\"]},\"NodeVersion\":{\"type\":\"object\",\"properties\":{\"clientVersion\":{\"type\":\"string\",\"description\":\"Node's binary version.\"},\"clientImplName\":{\"type\":\"string\",\"description\":\"Node's implementation name.\"},\"chain\":{\"type\":\"string\",\"description\":\"Node's chain name.\"}},\"description\":\"Version information of the node.\"},\"Nominations\":{\"type\":\"object\",\"properties\":{\"targets\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"The targets of the nomination.\"},\"submittedIn\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The era the nominations were submitted. (Except for initial nominations which are considered submitted at era 0.)\"},\"suppressed\":{\"type\":\"boolean\",\"description\":\"Whether the nominations have been suppressed.\"}}},\"OnboardingAs\":{\"type\":\"string\",\"enum\":[\"parachain\",\"parathread\"],\"description\":\"This property only shows up when `paraLifecycle=onboarding`. It\\ndescribes if a particular para is onboarding as a `parachain` or a\\n`parathread`.\\n\"},\"Operation\":{\"type\":\"object\",\"properties\":{\"phase\":{\"$ref\":\"#/components/schemas/OperationPhase\"},\"parentSpanId\":{\"$ref\":\"#/components/schemas/SpanId\"},\"primarySpanId\":{\"$ref\":\"#/components/schemas/SpanId\"},\"eventIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Index of the underlying trace event.\"},\"address\":{\"type\":\"string\",\"description\":\"Account this operation affects. Note - this will be an object like\\n`{ id: address }` if the network uses `MultiAddress`\\n\"},\"storage\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\"},\"item\":{\"type\":\"string\"},\"field1\":{\"type\":\"string\",\"description\":\"A field of the storage item. (i.e `system::Account::get(address).data`)\\n\"},\"field2\":{\"type\":\"string\",\"description\":\"A field of the struct described by field1 (i.e\\n`system::Account::get(address).data.free`)\\n\"}}},\"amount\":{\"$ref\":\"#/components/schemas/OperationAmount\"}}},\"OperationAmount\":{\"type\":\"object\",\"properties\":{\"values\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"currency\":{\"$ref\":\"#/components/schemas/OperationAmountCurrency\"}}},\"OperationAmountCurrency\":{\"type\":\"object\",\"properties\":{\"symbol\":{\"type\":\"string\",\"example\":\"KSM\"}}},\"OperationPhase\":{\"type\":\"object\",\"properties\":{\"variant\":{\"type\":\"string\",\"enum\":[\"onInitialize\",\"initialChecks\",\"applyExtrinsic\",\"onFinalize\",\"finalChecks\"],\"description\":\"Phase of block execution pipeline.\"},\"extrinsicIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"If phase variant is `applyExtrinsic` this will be the index of\\nthe extrinsic. Otherwise this field will not be present.\\n\"}}},\"PalletsAssetsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"assetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"assetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"}}},\"PalletConstants\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up constants.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletConstantsItemMetadata\"},\"description\":\"Array containing metadata for each constant entry of the pallet.\"}}},\"PalletConstantsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up constants.\",\"example\":\"14\"},\"errorItem\":{\"type\":\"string\",\"description\":\"Name of the constant item.\",\"example\":\"EnactmentPeriod\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletConstantsItemMetadata\"}}},\"PalletConstantsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"VotingPeriod\",\"description\":\"The constant item's name (which is the same as the constant item's ID).\"},\"type\":{\"type\":\"string\",\"example\":\"4\"},\"value\":{\"type\":\"string\",\"example\":\"0x00270600\",\"description\":\"The hex value of the constant\"},\"docs\":{\"type\":\"string\",\"example\":\"Information concerning any given constant.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"}},\"description\":\"Metadata of an constant item from a FRAME pallet.\"},\"PalletDispatchables\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up dispatchables.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItemMetadata\"},\"description\":\"Array containing metadata for each dispatchable entry of the pallet.\"}}},\"PalletDispatchablesItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up dispatchables.\",\"example\":\"14\"},\"dispatchableItem\":{\"type\":\"string\",\"description\":\"Name of the dispatchable item.\",\"example\":\"vote\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItemMetadata\"}}},\"PalletDispatchablesItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"propose\",\"description\":\"The dispatchable item's name (which is the same as the dispatchable item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the dispatchable item in the lists of pallet dispatchables.\"},\"docs\":{\"type\":\"string\",\"example\":\"Information concerning any given dispatchable.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of a dispatchable item from a FRAME pallet.\"},\"PalletErrors\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up errors.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletErrorsItemMetadata\"},\"description\":\"Array containing metadata for each error entry of the pallet.\"}}},\"PalletErrorsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up errors.\",\"example\":\"14\"},\"errorItem\":{\"type\":\"string\",\"description\":\"Name of the error item.\",\"example\":\"ValueLow\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletErrorsItemMetadata\"}}},\"PalletErrorsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"InsufficientFunds\",\"description\":\"The error item's name (which is the same as the error item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the error item in the lists of pallet errors\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given error.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of an error item from a FRAME pallet.\"},\"PalletEvents\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up events.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletEventsItemMetadata\"}}}},\"PalletEventsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up events.\",\"example\":\"14\"},\"eventItem\":{\"type\":\"string\",\"description\":\"Name of the events item.\",\"example\":\"Proposed\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletEventsItemMetadata\"}}},\"PalletEventsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"Tabled\",\"description\":\"The event item's name (which is the same as the event item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the error item in the lists of pallet events\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given event.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of an event item from a FRAME pallet.\"},\"PalletsForeignAssets\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletsForeignAssetsInfo\"},\"description\":\"Array containing the `AssetDetails` and `AssetMetadata` of every foreign asset.\"}}},\"PalletsForeignAssetsInfo\":{\"type\":\"object\",\"properties\":{\"foreignAssetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"foreignAssetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"}}},\"PalletsNominationPool\":{\"type\":\"object\",\"properties\":{\"bondedPool\":{\"$ref\":\"#/components/schemas/BondedPool\"},\"rewardPool\":{\"$ref\":\"#/components/schemas/RewardPool\"}}},\"PalletsNominationPoolsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"counterForBondedPools\":{\"type\":\"number\"},\"counterForMetadata\":{\"type\":\"number\"},\"counterForPoolMembers\":{\"type\":\"number\"},\"counterForReversePoolIdLookup\":{\"type\":\"number\"},\"counterForRewardPools\":{\"type\":\"number\"},\"counterForSubPoolsStorage\":{\"type\":\"number\"},\"lastPoolId\":{\"type\":\"number\"},\"maxPoolMembers\":{\"type\":\"number\"},\"maxPoolMembersPerPool\":{\"type\":\"number\",\"nullable\":true},\"maxPools\":{\"type\":\"number\"},\"minCreateBond\":{\"type\":\"number\"},\"minJoinBond\":{\"type\":\"number\"}}},\"PalletsPoolAssetsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"poolAssetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"poolAssetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"}}},\"PalletStorage\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up storage.\",\"example\":\"15\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletStorageItemMetadata\"},\"description\":\"Array containing metadata for each storage entry of the pallet.\"}}},\"PalletStorageItem\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up storage.\",\"example\":\"15\"},\"storageItem\":{\"type\":\"string\",\"description\":\"Name of the storage item.\",\"example\":\"referendumInfoOf\"},\"keys\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"N Storage keys passed in as the `keys` query param.\",\"example\":[\"0x00\",\"0x01\"]},\"value\":{\"type\":\"object\",\"description\":\"Value returned by this storage query.\",\"example\":{\"Ongoing\":{\"end\":\"1612800\",\"proposalHash\":\"0x7de70fc8be782076d0b5772be77153d172a5381c72dd56d3385e25f62abf507e\",\"threshold\":\"Supermajorityapproval\",\"delay\":\"403200\",\"tally\":{\"ayes\":\"41925212461400000\",\"nays\":\"214535586500000\",\"turnout\":\"34485320658000000\"}}}},\"metadata\":{\"$ref\":\"#/components/schemas/PalletStorageItemMetadata\"}}},\"PalletStorageItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"ReferendumInfoOf\",\"description\":\"The storage item's name (which is the same as the storage item's ID).\"},\"modifier\":{\"type\":\"string\",\"example\":\"Optional\"},\"type\":{\"$ref\":\"#/components/schemas/PalletStorageType\"},\"fallback\":{\"type\":\"string\",\"example\":\"0x00\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given referendum.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"}},\"description\":\"Metadata of a storage item from a FRAME pallet.\"},\"PalletStorageType\":{\"type\":\"object\",\"description\":\"This is going to be formatted to the type of StorageEntryTypeV14.\"},\"Para\":{\"type\":\"object\",\"properties\":{\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"paraLifecycle\":{\"$ref\":\"#/components/schemas/ParaLifecycle\"},\"onboardingAs\":{\"$ref\":\"#/components/schemas/OnboardingAs\"}}},\"Paras\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paras\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Para\"}}}},\"ParasAuctionsCurrent\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"beginEnd\":{\"type\":\"string\",\"format\":\"unisgnedInteger or $null\",\"description\":\"Fist block (number) of the auction ending phase. `null` if there is no ongoing\\nauction.\\n\"},\"finishEnd\":{\"type\":\"string\",\"format\":\"unisgnedInteger or $null\",\"description\":\"Last block (number) of the auction ending phase. `null` if there is no ongoing\\nauction.\\n\"},\"phase\":{\"type\":\"string\",\"enum\":[\"startPeriod\",\"endPeriod\",\"vrfDelay\"],\"description\":\"An auction can be in one of 4 phases. Both `startingPeriod` () and `endingPeriod` indicate\\nan ongoing auction, while `vrfDelay` lines up with the `AuctionStatus::VrfDelay` . Finally, a value of `null`\\nindicates there is no ongoing auction. Keep in mind the that the `finishEnd` field is the block number the\\n`endingPeriod` finishes and the `vrfDelay` period begins. The `vrfDelay` period is typically about an\\nepoch long and no crowdloan contributions are accepted.\\n\"},\"auctionIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The auction number. If there is no current auction this will be the number\\nof the previous auction.\\n\"},\"leasePeriods\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"Lease period indexes that may be bid on in this auction. `null` if\\nthere is no ongoing auction.\\n\"},\"winning\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/WinningData\"}}}},\"ParasCrowdloans\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"funds\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"fundInfo\":{\"$ref\":\"#/components/schemas/FundInfo\"}}},\"description\":\"List of paras that have crowdloans.\\n\"}}},\"ParasCrowdloanInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"fundInfo\":{\"$ref\":\"#/components/schemas/FundInfo\"},\"leasePeriods\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"Lease periods the crowdloan can bid on.\"}}},\"ParasHeaders\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paraId\":{\"type\":\"object\",\"description\":\"The key is not named `paraId` and will be the number of the parachain. There is technically no limit to the number of paraId keys there can be. \\n\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicsRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}}}}}},\"ParasLeasesCurrent\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"leasePeriodIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Current lease period index. This value may be null when the current block now, substracted by the leaseOffset is less then zero.\"},\"endOfLeasePeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Last block (number) of the current lease period. This value may be null when `leasePeriodIndex` is null.\"},\"currentLeaseHolders\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"List of `paraId`s that currently hold a lease.\"}}},\"ParasLeaseInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paraLifecycle\":{\"$ref\":\"#/components/schemas/ParaLifecycle\"},\"onboardingAs\":{\"$ref\":\"#/components/schemas/OnboardingAs\"},\"leases\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"leasePeriodIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"account\":{\"type\":\"string\"},\"deposit\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"description\":\"List of lease periods for which the `paraId` holds a lease along with\\nthe deposit held and the associated `accountId`.\\n\"}}},\"ParaLifecycle\":{\"type\":\"string\",\"enum\":[\"onboarding\",\"parathread\",\"parachain\",\"upgradingParathread\",\"downgradingParachain\",\"offboardingParathread\",\"offboardingParachain\"],\"description\":\"The possible states of a para, to take into account delayed lifecycle\\nchanges.\\n\"},\"Payouts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"validatorId\":{\"type\":\"string\",\"description\":\"AccountId of the validator the payout is coming from.\"},\"nominatorStakingPayout\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Payout for the reward destination associated with the accountId the query was made for.\"},\"claimed\":{\"type\":\"boolean\",\"description\":\"Whether or not the reward has been claimed.\"},\"totalValidatorRewardPoints\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Number of reward points earned by the validator.\"},\"validatorCommission\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The percentage of the total payout that the validator takes as commission, expressed as a Perbill.\"},\"totalValidatorExposure\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The sum of the validator's and its nominators' stake.\"},\"nominatorExposure\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The amount of stake the nominator has behind the validator.\"}},\"description\":\"Payout for a nominating _Stash_ address and information about the validator they were nominating.\"}},\"PeerInfo\":{\"type\":\"object\",\"properties\":{\"peerId\":{\"type\":\"string\",\"description\":\"Peer ID.\"},\"roles\":{\"type\":\"string\",\"description\":\"Roles the peer is running\"},\"protocolVersion\":{\"type\":\"string\",\"description\":\"Peer's protocol version.\",\"format\":\"unsignedInteger\"},\"bestHash\":{\"type\":\"string\",\"description\":\"Hash of the best block on the peer's canon chain.\",\"format\":\"hex\"},\"bestNumber\":{\"type\":\"string\",\"description\":\"Height of the best block on the peer's canon chain.\",\"format\":\"unsignedInteger\"}}},\"RewardPool\":{\"type\":\"object\",\"properties\":{\"lastRecordedRewardCounter\":{\"type\":\"number\"},\"lastRecordedTotalPayouts\":{\"type\":\"number\"},\"totalRewardsClaimed\":{\"type\":\"number\"}}},\"RuntimeCode\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"code\":{\"type\":\"string\",\"format\":\"hex\"}}},\"RuntimeDispatchInfo\":{\"type\":\"object\",\"properties\":{\"weight\":{\"$ref\":\"#/components/schemas/WeightsV2\",\"description\":\"Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.\"},\"class\":{\"type\":\"string\",\"description\":\"Extrinsic class.\",\"enum\":[\"Normal\",\"Operational\",\"Mandatory\"]},\"partialFee\":{\"type\":\"string\",\"description\":\"The _inclusion fee_ of a transaction, i.e. the minimum fee required for a transaction. Includes weight and encoded length fees, but does not have access to any signed extensions, e.g. the `tip`.\",\"format\":\"unsignedInteger\"},\"kind\":{\"type\":\"string\",\"description\":\"Information on the partialFee that is collected. Can be either `preDispatch`, `postDispatch` or `fromEvent`. `preDispatch` means the information used to collect the fee was from `payment_queryInfo`, `postDispatch` means the information used to calculate the fee was from finalized weights for the extrinsic, and `fromEvent` means that the partialFee was abstracted from the `TransactionPayment::TransactionPaidFee` event.\"}},\"description\":\"RuntimeDispatchInfo for the transaction. Includes the `partialFee`.\"},\"RuntimeSpec\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"authoringVersion\":{\"type\":\"string\",\"description\":\"The version of the authorship interface. An authoring node will not attempt to author blocks unless this is equal to its native runtime.\"},\"chainType\":{\"$ref\":\"#/components/schemas/ChainType\"},\"implVersion\":{\"type\":\"string\",\"description\":\"Version of the implementation specification. Non-consensus-breaking optimizations are about the only changes that could be made which would result in only the `impl_version` changing. The `impl_version` is set to 0 when `spec_version` is incremented.\"},\"specName\":{\"type\":\"string\",\"description\":\"Identifies the different Substrate runtimes.\"},\"specVersion\":{\"type\":\"string\",\"description\":\"Version of the runtime specification.\"},\"transactionVersion\":{\"type\":\"string\",\"description\":\"All existing dispatches are fully compatible when this number doesn't change. This number must change when an existing dispatchable (module ID, dispatch ID) is changed, either through an alteration in its user-level semantics, a parameter added/removed/changed, a dispatchable being removed, a module being removed, or a dispatchable/module changing its index.\"},\"properties\":{\"type\":\"object\",\"description\":\"Arbitrary properties defined in the chain spec.\"}},\"description\":\"Version information related to the runtime.\"},\"SanitizedEvent\":{\"type\":\"object\",\"properties\":{\"method\":{\"type\":\"string\"},\"data\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"Signature\":{\"type\":\"object\",\"properties\":{\"signature\":{\"type\":\"string\",\"format\":\"hex\"},\"signer\":{\"type\":\"string\",\"format\":\"ss58\"}},\"description\":\"Object with `signature` and `signer`, or `null` if unsigned.\"},\"SpanId\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"target\":{\"type\":\"string\"},\"id\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"StakingLedger\":{\"type\":\"object\",\"properties\":{\"stash\":{\"type\":\"string\",\"description\":\"The _Stash_ account whose balance is actually locked and at stake.\",\"format\":\"ss58\"},\"total\":{\"type\":\"string\",\"description\":\"The total amount of the _Stash_'s balance that we are currently accounting for. Simply `active + unlocking`.\",\"format\":\"unsignedInteger\"},\"active\":{\"type\":\"string\",\"description\":\"The total amount of the _Stash_'s balance that will be at stake in any forthcoming eras.\",\"format\":\"unsignedInteger\"},\"unlocking\":{\"type\":\"string\",\"description\":\"Any balance that is becoming free, which may eventually be transferred out of the _Stash_ (assuming it doesn't get slashed first). Represented as an array of objects, each with an `era` at which `value` will be unlocked.\",\"format\":\"unsignedInteger\"},\"claimedRewards\":{\"type\":\"array\",\"description\":\"Array of eras for which the stakers behind a validator have claimed rewards. Only updated for _validators._ This array is populated with values from `stakingLedger.legacyClaimedRewards` or `stakingLedger.claimedRewards`, as well as the `query.staking.claimedRewards` call, depending on whether the queried block is before or after the migration. For more details on the implementation and the migration, refer to the related PR and linked issue.\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"description\":\"The staking ledger.\"},\"StakingProgress\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"activeEra\":{\"type\":\"string\",\"description\":\"`EraIndex` of the era being rewarded.\\n\",\"format\":\"unsignedInteger\"},\"forceEra\":{\"type\":\"string\",\"description\":\"Current status of era forcing.\",\"enum\":[\"ForceNone\",\"NotForcing\",\"ForceAlways\",\"ForceNew\"]},\"nextActiveEraEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the next active era will start. Not included in response when `forceEra.isForceNone`.\",\"format\":\"unsignedInteger\"},\"nextSessionEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the next session will start.\",\"format\":\"unsignedInteger\"},\"unappliedSlashes\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/UnappliedSlash\"},\"description\":\"Array of upcoming `UnappliedSlash` indexed by era.\"},\"electionStatus\":{\"$ref\":\"#/components/schemas/ElectionStatus\"},\"idealValidatorCount\":{\"type\":\"string\",\"description\":\"Upper bound of validator set size; considered the ideal size. Not included in response when `forceEra.isForceNone`.\",\"format\":\"unsignedInteger\"},\"validatorSet\":{\"type\":\"array\",\"description\":\"Stash account IDs of the validators for the current session. Not included in response when `forceEra.isForceNone`.\",\"items\":{\"type\":\"string\",\"format\":\"ss58\"}}}},\"StakingValidators\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"validators\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"address\":{\"type\":\"string\",\"description\":\"Address of validator.\"},\"status\":{\"type\":\"string\",\"description\":\"Status of individual validator (active/waiting).\"}}}},\"validatorsToBeChilled\":{\"description\":\"Validators that will not be participating in the next era.\",\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"address\":{\"type\":\"string\",\"description\":\"Address of validator.\"},\"status\":{\"type\":\"string\",\"description\":\"Status of individual validator (active/waiting).\"}}}}}},\"StorageEntryTypeV13\":{\"type\":\"object\",\"properties\":{\"hasher\":{\"type\":\"string\",\"description\":\"Returns a string deonting the storage hasher.\"},\"key\":{\"type\":\"string\",\"description\":\"Key of the queried pallet storageId.\"},\"value\":{\"type\":\"string\",\"description\":\"Value of the queried pallet storageId.\"},\"linked\":{\"type\":\"boolean\"}}},\"StorageEntryTypeV14\":{\"type\":\"object\",\"properties\":{\"hasher\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Returns a string denoting the storage hasher inside of an array.\"},\"key\":{\"type\":\"string\",\"description\":\"The SiLookupTypeId to identify the type.\"},\"value\":{\"type\":\"string\",\"description\":\"The SiLookupTypeId to identify the type.\"}}},\"TraceEvent\":{\"type\":\"object\",\"properties\":{\"data\":{\"type\":\"object\",\"properties\":{\"stringValues\":{\"$ref\":\"#/components/schemas/TraceEventDataStringValues\"}}},\"parentId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"target\":{\"type\":\"string\"}}},\"TraceEventDataStringValues\":{\"type\":\"object\",\"properties\":{\"key\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"The complete storage key for the entry.\"},\"method\":{\"type\":\"string\",\"description\":\"Normally one of Put or Get.\"},\"result\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"Hex scale encoded storage value.\"}},\"description\":\"Note these exact values will only be present for storage events.\"},\"TraceSpan\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"name\":{\"type\":\"string\"},\"parentId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"target\":{\"type\":\"string\"},\"wasm\":{\"type\":\"boolean\"}}},\"Transaction\":{\"type\":\"object\",\"properties\":{\"tx\":{\"type\":\"string\",\"format\":\"hex\"}}},\"TransactionDryRun\":{\"type\":\"object\",\"properties\":{\"resultType\":{\"type\":\"string\",\"enum\":[\"DispatchOutcome\",\"TransactionValidityError\"],\"description\":\"Either `DispatchOutcome` if the transaction is valid or `TransactionValidityError` if the result is invalid.\"},\"result\":{\"type\":\"string\",\"enum\":[\"Ok\",\"CannotLookup\",\"NoUnsignedValidator\",\"Custom(u8)\",\"Call\",\"Payment\",\"Future\",\"Stale\",\"BadProof\",\"AncientBirthBlock\",\"ExhaustsResources\",\"BadMandatory\",\"MandatoryDispatch\"],\"description\":\"If there was an error it will be the cause of the error. If the transaction executed correctly it will be `Ok: []`\"},\"validityErrorType\":{\"type\":\"string\",\"enum\":[\"InvalidTransaction\",\"UnknownTransaction\"]}},\"description\":\"References: - `UnknownTransaction`: https://crates.parity.io/sp_runtime/transaction_validity/enum.UnknownTransaction.html - `InvalidTransaction`: https://crates.parity.io/sp_runtime/transaction_validity/enum.InvalidTransaction.html\"},\"TransactionFailedToParse\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"error\":{\"type\":\"string\",\"description\":\"`Failed to parse a tx.`\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"cause\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"}},\"description\":\"Error message when Sidecar fails to parse the transaction.\"},\"TransactionFailedToSubmit\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"error\":{\"type\":\"string\",\"description\":\"Failed to submit transaction.\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"cause\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"}},\"description\":\"Error message when the node rejects the submitted transaction.\"},\"TransactionFailure\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/TransactionFailedToSubmit\"},{\"$ref\":\"#/components/schemas/TransactionFailedToParse\"}]},\"TransactionFeeEstimate\":{\"type\":\"object\",\"properties\":{\"weight\":{\"$ref\":\"#/components/schemas/WeightsV2\",\"description\":\"Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.\"},\"class\":{\"type\":\"string\",\"description\":\"Extrinsic class.\",\"enum\":[\"Normal\",\"Operational\",\"Mandatory\"]},\"partialFee\":{\"type\":\"string\",\"description\":\"Expected inclusion fee for the transaction. Note that the fee rate changes up to 30% in a 24 hour period and this will not be the exact fee.\",\"format\":\"unsignedInteger\"}},\"description\":\"Note: `partialFee` does not include any tips that you may add to increase a transaction's priority. See [compute_fee](https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee).\"},\"TransactionFeeEstimateFailure\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"at\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\"}}},\"error\":{\"type\":\"string\",\"description\":\"Error description.\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"block\":{\"type\":\"string\",\"description\":\"Block hash of the block fee estimation was attempted at.\"},\"cause\":{\"type\":\"string\",\"description\":\"Error message from the client.\"},\"stack\":{\"type\":\"string\"}}},\"TransactionMaterial\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"genesisHash\":{\"type\":\"string\",\"description\":\"The hash of the chain's genesis block.\",\"format\":\"blockHash\"},\"chainName\":{\"type\":\"string\",\"description\":\"The chain's name.\"},\"specName\":{\"type\":\"string\",\"description\":\"The chain's spec.\"},\"specVersion\":{\"type\":\"string\",\"description\":\"The spec version. Always increased in a runtime upgrade.\"},\"txVersion\":{\"type\":\"string\",\"description\":\"The transaction version. Common `txVersion` numbers indicate that the transaction encoding format and method indices are the same. Needed for decoding in an offline environment. Adding new transactions does not change `txVersion`.\"},\"metadata\":{\"type\":\"string\",\"description\":\"The chain's metadata. It will only be present when the metadata query param is used.\"}},\"description\":\"Note: `chainName`, `specName`, and `specVersion` are used to define a type registry with a set of signed extensions and types. For Polkadot and Kusama, `chainName` is not used in defining this registry, but in other Substrate-based chains that re-launch their network without changing the `specName`, the `chainName` would be needed to create the correct registry. Substrate Reference: - `RuntimeVersion`: https://crates.parity.io/sp_version/struct.RuntimeVersion.html - `SignedExtension`: https://crates.parity.io/sp_runtime/traits/trait.SignedExtension.html - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html\"},\"TransactionPool\":{\"type\":\"object\",\"properties\":{\"pool\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"H256 hash of the extrinsic.\"},\"encodedExtrinsic\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"Scale encoded extrinsic.\"},\"tip\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The tip included in the extrinsic. Only included if the query param `includeFee` is set to true.\"},\"priority\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Computed priority of an extrinsic. Only included if the query param `includeFee` is set to true.\"},\"partialFee\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Provided `partialFee` of an extrinsic. Only included if the query param `includeFee` is set to true.\"}}}}}},\"TransactionSuccess\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The hash of the encoded transaction.\"}}},\"UnappliedSlash\":{\"type\":\"object\",\"properties\":{\"validator\":{\"type\":\"string\",\"description\":\"Stash account ID of the offending validator.\",\"format\":\"ss58\"},\"own\":{\"type\":\"string\",\"description\":\"The amount the validator will be slashed.\",\"format\":\"unsignedInteger\"},\"others\":{\"type\":\"array\",\"description\":\"Array of tuples(`[accountId, amount]`) representing all the stashes of other slashed stakers and the amount they will be slashed.\",\"items\":{\"type\":\"string\",\"format\":\"tuple[ss58, unsignedInteger]\"}},\"reporters\":{\"type\":\"array\",\"description\":\"Array of account IDs of the reporters of the offense.\",\"items\":{\"type\":\"string\",\"format\":\"ss58\"}},\"payout\":{\"type\":\"string\",\"description\":\"Amount of bounty payout to reporters.\",\"format\":\"unsignedInteger\"}}},\"VestingSchedule\":{\"type\":\"object\",\"properties\":{\"locked\":{\"type\":\"string\",\"description\":\"Number of tokens locked at start.\",\"format\":\"unsignedInteger\"},\"perBlock\":{\"type\":\"string\",\"description\":\"Number of tokens that gets unlocked every block after `startingBlock`.\",\"format\":\"unsignedInteger\"},\"startingBlock\":{\"type\":\"string\",\"description\":\"Starting block for unlocking (vesting).\",\"format\":\"unsignedInteger\"}},\"description\":\"Vesting schedule for an account.\"},\"WeightsV2\":{\"type\":\"object\",\"properties\":{\"refTime\":{\"type\":\"string\",\"description\":\"The weight of computational time used based on some reference hardware.\"},\"proofSize\":{\"type\":\"string\",\"description\":\"The weight of storage space used by proof of validity.\"}}},\"WinningData\":{\"type\":\"object\",\"properties\":{\"bid\":{\"type\":\"object\",\"properties\":{\"accountId\":{\"type\":\"string\"},\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"amount\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"leaseSet\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"description\":\"A currently winning bid and the set of lease periods the bid is for. The\\n`amount` of the bid is per lease period. The `bid` property will be `null`\\nif no bid has been made for the corresponding `leaseSet`.\\n\"}},\"requestBodies\":{\"Transaction\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Transaction\"}}},\"required\":true},\"ContractMetadata\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ContractMetadata\"}}}}}}}\n\n//# sourceURL=webpack://sidecar-swagger-ui/./src/openapi-v1.yaml?"); /***/ }), diff --git a/docs/src/openapi-v1.yaml b/docs/src/openapi-v1.yaml index a18a1f312..1d5465a1e 100755 --- a/docs/src/openapi-v1.yaml +++ b/docs/src/openapi-v1.yaml @@ -4260,7 +4260,11 @@ components: claimedRewards: type: array description: Array of eras for which the stakers behind a validator have - claimed rewards. Only updated for _validators._ + claimed rewards. Only updated for _validators._ This array is populated with + values from `stakingLedger.legacyClaimedRewards` or `stakingLedger.claimedRewards`, + as well as the `query.staking.claimedRewards` call, depending on whether the queried block + is before or after the migration. For more details on the implementation and the migration, + refer to the related PR and linked issue. items: type: string format: unsignedInteger From f320c08a86ea019f6f8bfa2dd409b6f887aeb24d Mon Sep 17 00:00:00 2001 From: Imod7 Date: Fri, 14 Jun 2024 20:06:53 +0200 Subject: [PATCH 05/26] implement new logic & update test responses --- .../AccountsStakingInfoService.spec.ts | 2 +- .../accounts/AccountsStakingInfoService.ts | 39 +- .../accounts/stakingInfo22939322.json | 419 ++++++++++++++---- .../responses/accounts/stakingInfo789629.json | 177 ++++++-- src/types/responses/AccountStakingInfo.ts | 7 +- 5 files changed, 512 insertions(+), 132 deletions(-) diff --git a/src/services/accounts/AccountsStakingInfoService.spec.ts b/src/services/accounts/AccountsStakingInfoService.spec.ts index 8a670d698..955b48990 100644 --- a/src/services/accounts/AccountsStakingInfoService.spec.ts +++ b/src/services/accounts/AccountsStakingInfoService.spec.ts @@ -152,7 +152,7 @@ describe('AccountsStakingInfoService', () => { (historicApi.query.staking.ledger as any) = ledgerAt; }); - it('works with a valid stash account (block 22939322) and returns an array of claimed eras that include era 6508 (when the migration occurred in Kusama)', async () => { + it('works with a valid stash account (block 22939322) and returns an array of claimed eras that include era 6514 (when the migration occurred in Kusama)', async () => { expect( sanitizeNumbers( await accountStakingInfoService22939322.fetchAccountStakingInfo(blockHash22939322, testAddressKusama), diff --git a/src/services/accounts/AccountsStakingInfoService.ts b/src/services/accounts/AccountsStakingInfoService.ts index a1f83ccd9..4be37467c 100644 --- a/src/services/accounts/AccountsStakingInfoService.ts +++ b/src/services/accounts/AccountsStakingInfoService.ts @@ -17,7 +17,7 @@ import type { u32, Vec } from '@polkadot/types'; import { BlockHash } from '@polkadot/types/interfaces'; import { BadRequest, InternalServerError } from 'http-errors'; -import { IAccountStakingInfo, IStakingLedger } from 'src/types/responses'; +import { IAccountStakingInfo, IEraStatus, IStakingLedger } from 'src/types/responses'; import { AbstractService } from '../AbstractService'; @@ -66,30 +66,47 @@ export class AccountsStakingInfoService extends AbstractService { `Staking ledger could not be found for controller address "${controller.toString()}"`, ); } - let claimedRewards = []; + let claimedRewardsEras: u32[] = []; + let claimedRewards: IEraStatus[] = []; if (stakingLedger?.legacyClaimedRewards) { - claimedRewards = stakingLedger?.legacyClaimedRewards; + claimedRewardsEras = stakingLedger?.legacyClaimedRewards; } else { - claimedRewards = (stakingLedger as unknown as IStakingLedger)?.claimedRewards as Vec; + claimedRewardsEras = (stakingLedger as unknown as IStakingLedger)?.claimedRewards as Vec; } + claimedRewards = claimedRewardsEras.map((element) => ({ + era: element.toNumber(), + status: 'claimed', + })); if (historicApi.query.staking?.claimedRewards) { const currentEraMaybeOption = await historicApi.query.staking.currentEra(); const currentEra = currentEraMaybeOption.unwrap().toNumber(); let depth = Number(api.consts.staking.historyDepth.toNumber()); if (claimedRewards.length > 0) { - depth = currentEra - claimedRewards[claimedRewards.length - 1].toNumber(); + depth = currentEra - claimedRewards[claimedRewards.length - 1].era - 1; } const eraStart = currentEra - depth; for (let e = eraStart; e <= currentEra; e++) { const claimedRewardsPerEra = await historicApi.query.staking.claimedRewards(e, stash); const erasStakersOverview = await historicApi.query.staking.erasStakersOverview(e, stash); - if ( - claimedRewardsPerEra.length > 0 && - erasStakersOverview.toHuman() != null && - erasStakersOverview?.unwrap().pageCount.toNumber() === claimedRewardsPerEra.length - ) { - claimedRewards.push(e as unknown as u32); + let erasStakers = null; + if (historicApi.query.staking?.erasStakers) { + erasStakers = await historicApi.query.staking.erasStakers(e, stash); + } + if (erasStakersOverview.isSome) { + const pageCount = erasStakersOverview.unwrap().pageCount.toNumber(); + const eraStatus = + claimedRewardsPerEra.length === 0 + ? 'unclaimed' + : claimedRewardsPerEra.length === pageCount + ? 'claimed' + : 'partially claimed'; + claimedRewards.push({ era: e, status: eraStatus }); + } else if (erasStakers && erasStakers.total.toBigInt() > 0) { + // if erasStakers.total > 0, then the pageCount is always 1 + // https://github.com/polkadot-js/api/issues/5859#issuecomment-2077011825 + const eraStatus = claimedRewardsPerEra.length === 1 ? 'claimed' : 'unclaimed'; + claimedRewards.push({ era: e, status: eraStatus }); } } } diff --git a/src/services/test-helpers/responses/accounts/stakingInfo22939322.json b/src/services/test-helpers/responses/accounts/stakingInfo22939322.json index a779ac200..1d1aca3c1 100644 --- a/src/services/test-helpers/responses/accounts/stakingInfo22939322.json +++ b/src/services/test-helpers/responses/accounts/stakingInfo22939322.json @@ -14,89 +14,342 @@ "active": "5340420989561", "unlocking": [], "claimedRewards": [ - "6471", - "6472", - "6473", - "6474", - "6475", - "6476", - "6477", - "6478", - "6479", - "6480", - "6481", - "6482", - "6483", - "6484", - "6485", - "6486", - "6487", - "6488", - "6489", - "6490", - "6491", - "6492", - "6493", - "6494", - "6495", - "6496", - "6497", - "6498", - "6499", - "6500", - "6501", - "6502", - "6503", - "6504", - "6505", - "6506", - "6507", - "6508", - "6509", - "6510", - "6511", - "6512", - "6514", - "6515", - "6516", - "6517", - "6518", - "6519", - "6520", - "6521", - "6522", - "6523", - "6524", - "6525", - "6526", - "6527", - "6528", - "6529", - "6530", - "6531", - "6532", - "6533", - "6534", - "6535", - "6536", - "6537", - "6538", - "6539", - "6540", - "6541", - "6542", - "6543", - "6544", - "6545", - "6546", - "6547", - "6548", - "6549", - "6550", - "6551", - "6552", - "6553", - "6554" + { + "era": "6471", + "status": "claimed" + }, + { + "era": "6472", + "status": "claimed" + }, + { + "era": "6473", + "status": "claimed" + }, + { + "era": "6474", + "status": "claimed" + }, + { + "era": "6475", + "status": "claimed" + }, + { + "era": "6476", + "status": "claimed" + }, + { + "era": "6477", + "status": "claimed" + }, + { + "era": "6478", + "status": "claimed" + }, + { + "era": "6479", + "status": "claimed" + }, + { + "era": "6480", + "status": "claimed" + }, + { + "era": "6481", + "status": "claimed" + }, + { + "era": "6482", + "status": "claimed" + }, + { + "era": "6483", + "status": "claimed" + }, + { + "era": "6484", + "status": "claimed" + }, + { + "era": "6485", + "status": "claimed" + }, + { + "era": "6486", + "status": "claimed" + }, + { + "era": "6487", + "status": "claimed" + }, + { + "era": "6488", + "status": "claimed" + }, + { + "era": "6489", + "status": "claimed" + }, + { + "era": "6490", + "status": "claimed" + }, + { + "era": "6491", + "status": "claimed" + }, + { + "era": "6492", + "status": "claimed" + }, + { + "era": "6493", + "status": "claimed" + }, + { + "era": "6494", + "status": "claimed" + }, + { + "era": "6495", + "status": "claimed" + }, + { + "era": "6496", + "status": "claimed" + }, + { + "era": "6497", + "status": "claimed" + }, + { + "era": "6498", + "status": "claimed" + }, + { + "era": "6499", + "status": "claimed" + }, + { + "era": "6500", + "status": "claimed" + }, + { + "era": "6501", + "status": "claimed" + }, + { + "era": "6502", + "status": "claimed" + }, + { + "era": "6503", + "status": "claimed" + }, + { + "era": "6504", + "status": "claimed" + }, + { + "era": "6505", + "status": "claimed" + }, + { + "era": "6506", + "status": "claimed" + }, + { + "era": "6507", + "status": "claimed" + }, + { + "era": "6508", + "status": "claimed" + }, + { + "era": "6509", + "status": "claimed" + }, + { + "era": "6510", + "status": "claimed" + }, + { + "era": "6511", + "status": "claimed" + }, + { + "era": "6512", + "status": "claimed" + }, + { + "era": "6514", + "status": "claimed" + }, + { + "era": "6515", + "status": "claimed" + }, + { + "era": "6516", + "status": "claimed" + }, + { + "era": "6517", + "status": "claimed" + }, + { + "era": "6518", + "status": "claimed" + }, + { + "era": "6519", + "status": "claimed" + }, + { + "era": "6520", + "status": "claimed" + }, + { + "era": "6521", + "status": "claimed" + }, + { + "era": "6522", + "status": "claimed" + }, + { + "era": "6523", + "status": "claimed" + }, + { + "era": "6524", + "status": "claimed" + }, + { + "era": "6525", + "status": "claimed" + }, + { + "era": "6526", + "status": "claimed" + }, + { + "era": "6527", + "status": "claimed" + }, + { + "era": "6528", + "status": "claimed" + }, + { + "era": "6529", + "status": "claimed" + }, + { + "era": "6530", + "status": "claimed" + }, + { + "era": "6531", + "status": "claimed" + }, + { + "era": "6532", + "status": "claimed" + }, + { + "era": "6533", + "status": "claimed" + }, + { + "era": "6534", + "status": "claimed" + }, + { + "era": "6535", + "status": "claimed" + }, + { + "era": "6536", + "status": "claimed" + }, + { + "era": "6537", + "status": "claimed" + }, + { + "era": "6538", + "status": "claimed" + }, + { + "era": "6539", + "status": "claimed" + }, + { + "era": "6540", + "status": "claimed" + }, + { + "era": "6541", + "status": "claimed" + }, + { + "era": "6542", + "status": "claimed" + }, + { + "era": "6543", + "status": "claimed" + }, + { + "era": "6544", + "status": "claimed" + }, + { + "era": "6545", + "status": "claimed" + }, + { + "era": "6546", + "status": "claimed" + }, + { + "era": "6547", + "status": "claimed" + }, + { + "era": "6548", + "status": "claimed" + }, + { + "era": "6549", + "status": "claimed" + }, + { + "era": "6550", + "status": "claimed" + }, + { + "era": "6551", + "status": "claimed" + }, + { + "era": "6552", + "status": "claimed" + }, + { + "era": "6553", + "status": "claimed" + }, + { + "era": "6554", + "status": "claimed" + }, + { + "era": "6555", + "status": "unclaimed" + } ] } } \ No newline at end of file diff --git a/src/services/test-helpers/responses/accounts/stakingInfo789629.json b/src/services/test-helpers/responses/accounts/stakingInfo789629.json index 279a5afd6..818f9a115 100644 --- a/src/services/test-helpers/responses/accounts/stakingInfo789629.json +++ b/src/services/test-helpers/responses/accounts/stakingInfo789629.json @@ -14,41 +14,146 @@ "active": "100000000000", "unlocking": [], "claimedRewards": [ - "0", - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "23", - "24", - "25", - "26", - "27", - "28", - "29", - "30", - "31", - "32", - "33", - "34", - "35", - "36", - "37", - "38", - "39", - "40", - "41", - "42", - "43", - "44", - "45", - "46", - "47" + { + "era": "0", + "status": "claimed" + }, + { + "era": "1", + "status": "claimed" + }, + { + "era": "2", + "status": "claimed" + }, + { + "era": "3", + "status": "claimed" + }, + { + "era": "4", + "status": "claimed" + }, + { + "era": "5", + "status": "claimed" + }, + { + "era": "6", + "status": "claimed" + }, + { + "era": "7", + "status": "claimed" + }, + { + "era": "8", + "status": "claimed" + }, + { + "era": "9", + "status": "claimed" + }, + { + "era": "23", + "status": "claimed" + }, + { + "era": "24", + "status": "claimed" + }, + { + "era": "25", + "status": "claimed" + }, + { + "era": "26", + "status": "claimed" + }, + { + "era": "27", + "status": "claimed" + }, + { + "era": "28", + "status": "claimed" + }, + { + "era": "29", + "status": "claimed" + }, + { + "era": "30", + "status": "claimed" + }, + { + "era": "31", + "status": "claimed" + }, + { + "era": "32", + "status": "claimed" + }, + { + "era": "33", + "status": "claimed" + }, + { + "era": "34", + "status": "claimed" + }, + { + "era": "35", + "status": "claimed" + }, + { + "era": "36", + "status": "claimed" + }, + { + "era": "37", + "status": "claimed" + }, + { + "era": "38", + "status": "claimed" + }, + { + "era": "39", + "status": "claimed" + }, + { + "era": "40", + "status": "claimed" + }, + { + "era": "41", + "status": "claimed" + }, + { + "era": "42", + "status": "claimed" + }, + { + "era": "43", + "status": "claimed" + }, + { + "era": "44", + "status": "claimed" + }, + { + "era": "45", + "status": "claimed" + }, + { + "era": "46", + "status": "claimed" + }, + { + "era": "47", + "status": "claimed" + } ] } -} +} \ No newline at end of file diff --git a/src/types/responses/AccountStakingInfo.ts b/src/types/responses/AccountStakingInfo.ts index bfc567d3f..1ebdd1114 100644 --- a/src/types/responses/AccountStakingInfo.ts +++ b/src/types/responses/AccountStakingInfo.ts @@ -21,12 +21,17 @@ import type { PalletStakingRewardDestination, PalletStakingUnlockChunk } from '@ import { IAt } from '.'; +export interface IEraStatus { + era: number; + status: 'claimed' | 'partially claimed' | 'unclaimed'; +} + export interface IStakingLedger { stash: AccountId; total: Compact; active: Compact; unlocking: Vec; - claimedRewards?: u32[]; + claimedRewards?: IEraStatus[] | u32[]; } export interface IAccountStakingInfo { From 2aa59965457b3f26995de7352f4c603e3892c180 Mon Sep 17 00:00:00 2001 From: Imod7 Date: Tue, 18 Jun 2024 11:41:22 +0200 Subject: [PATCH 06/26] add test for partially claimed & overview = null --- .../AccountsStakingInfoService.spec.ts | 68 +++- .../blocks/BlocksTraceService.spec.ts | 4 +- .../test-helpers/mock/accounts/stakingInfo.ts | 105 ++++- src/services/test-helpers/mock/addresses.ts | 21 +- .../test-helpers/mock/data/block21157800.json | 44 +++ src/services/test-helpers/mock/index.ts | 2 + .../mock/mockApiKusamaBlock22939322.ts | 76 ++-- .../mock/mockApiPolkadotBlock21157800.ts | 300 +++++++++++++++ .../test-helpers/mock/mockBlock21157800.ts | 31 ++ .../test-helpers/mock/mockBlock22939322.ts | 6 +- .../accounts/stakingInfo21157800.json | 363 ++++++++++++++++++ .../metadata/polkadotV1002000Metadata.ts | 18 + src/test-helpers/registries/kusamaRegistry.ts | 4 +- .../registries/polkadotRegistry.ts | 6 + 14 files changed, 992 insertions(+), 56 deletions(-) create mode 100644 src/services/test-helpers/mock/data/block21157800.json create mode 100644 src/services/test-helpers/mock/mockApiPolkadotBlock21157800.ts create mode 100644 src/services/test-helpers/mock/mockBlock21157800.ts create mode 100644 src/services/test-helpers/responses/accounts/stakingInfo21157800.json create mode 100644 src/test-helpers/metadata/polkadotV1002000Metadata.ts diff --git a/src/services/accounts/AccountsStakingInfoService.spec.ts b/src/services/accounts/AccountsStakingInfoService.spec.ts index 955b48990..06b117175 100644 --- a/src/services/accounts/AccountsStakingInfoService.spec.ts +++ b/src/services/accounts/AccountsStakingInfoService.spec.ts @@ -23,27 +23,40 @@ import { AccountId, Hash, StakingLedger } from '@polkadot/types/interfaces'; import { BadRequest, InternalServerError } from 'http-errors'; import { sanitizeNumbers } from '../../sanitize/sanitizeNumbers'; -import { kusamRegistryV1002000, polkadotRegistry } from '../../test-helpers/registries'; +import { kusamaRegistryV1002000, polkadotRegistry, polkadotRegistryV1002000 } from '../../test-helpers/registries'; import { + activeEraAt21157800, activeEraAt22939322, blockHash789629, + blockHash21157800, blockHash22939322, + currentEraAt21157800, currentEraAt22939322, defaultMockApi, + defaultMockApi21157800, defaultMockApi22939322, testAddress, testAddressController, testAddressControllerKusama, + testAddressControllerPolkadot, testAddressKusama, testAddressPayeeKusama, + testAddressPayeePolkadot, + testAddressPolkadot, } from '../test-helpers/mock'; import { + polkadotClaimedRewardsMockedCall, + polkadotErasStakersMockedCall, + polkadotErasStakersOverviewMockedCall, + polkadotPayeeMockedCall, + polkadotSlashingSpansMockedCall, stakingClaimedRewardsMockedCall, stakingerasStakersOverviewMockedCall, stakingPayeeMockedCall, stakingslashingSpansMockedCall, } from '../test-helpers/mock/accounts/stakingInfo'; import response789629 from '../test-helpers/responses/accounts/stakingInfo789629.json'; +import response21157800 from '../test-helpers/responses/accounts/stakingInfo21157800.json'; import response22939322 from '../test-helpers/responses/accounts/stakingInfo22939322.json'; import { AccountsStakingInfoService } from './AccountsStakingInfoService'; @@ -82,19 +95,56 @@ const mockApi = { const accountStakingInfoService = new AccountsStakingInfoService(mockApi); +export const bondedAt21157800 = (_hash: Hash, _address: string): Promise> => + Promise.resolve().then(() => polkadotRegistryV1002000.createType('Option', testAddressControllerPolkadot)); + +export const ledgerAt21157800 = (_hash: Hash, _address: string): Promise> => + Promise.resolve().then(() => + polkadotRegistryV1002000.createType( + 'Option', + '0x005fa73637062be3fbfb972174a5bc85a2f6cc0350cb84aa9d657422796bfdf10b119b01640c070b119b01640c070088690500006a0500006b0500006c0500006d0500006e0500006f050000700500007105000072050000730500007405000075050000760500007705000078050000790500007a0500007b0500007c0500007d0500007e0500007f050000800500008105000082050000830500008405000085050000860500008705000088050000890500008a050000', + ), + ); + +export const payee21157800 = (_hash: Hash, _address: string): Promise> => + Promise.resolve().then(() => polkadotRegistryV1002000.createType('Option', testAddressPayeePolkadot)); + +const historicApi21157800 = { + query: { + staking: { + bonded: bondedAt21157800, + ledger: ledgerAt21157800, + payee: polkadotPayeeMockedCall, + slashingSpans: polkadotSlashingSpansMockedCall, + claimedRewards: polkadotClaimedRewardsMockedCall, + activeEra: activeEraAt21157800, + currentEra: currentEraAt21157800, + erasStakersOverview: polkadotErasStakersOverviewMockedCall, + erasStakers: polkadotErasStakersMockedCall, + }, + }, +} as unknown as ApiDecoration<'promise'>; + +const mockApiPolkadot21157800 = { + ...defaultMockApi21157800, + at: (_hash: Hash) => historicApi21157800, +} as unknown as ApiPromise; + +const accountStakingInfoService21157800 = new AccountsStakingInfoService(mockApiPolkadot21157800); + export const bondedAt22939322 = (_hash: Hash, _address: string): Promise> => - Promise.resolve().then(() => kusamRegistryV1002000.createType('Option', testAddressControllerKusama)); + Promise.resolve().then(() => kusamaRegistryV1002000.createType('Option', testAddressControllerKusama)); export const ledgerAt22939322 = (_hash: Hash, _address: string): Promise> => Promise.resolve().then(() => - kusamRegistryV1002000.createType( + kusamaRegistryV1002000.createType( 'Option', '0x6c6ed8531e6c0b882af0a42f2f23ef0a102b5d49cb5f5a24ede72d53ffce83170b7962e569db040b7962e569db0400a84719000048190000491900004a1900004b1900004c1900004d1900004e1900004f190000501900005119000052190000531900005419000055190000561900005719000058190000591900005a1900005b1900005c1900005d1900005e1900005f190000601900006119000062190000631900006419000065190000661900006719000068190000691900006a1900006b1900006c1900006d1900006e1900006f19000070190000', ), ); export const payee22939322 = (_hash: Hash, _address: string): Promise> => - Promise.resolve().then(() => kusamRegistryV1002000.createType('Option', testAddressPayeeKusama)); + Promise.resolve().then(() => kusamaRegistryV1002000.createType('Option', testAddressPayeeKusama)); const historicApi22939322 = { query: { @@ -152,12 +202,20 @@ describe('AccountsStakingInfoService', () => { (historicApi.query.staking.ledger as any) = ledgerAt; }); - it('works with a valid stash account (block 22939322) and returns an array of claimed eras that include era 6514 (when the migration occurred in Kusama)', async () => { + it('works with a valid stash account (block 22939322) and returns eras claimed & unclaimed that include era 6514 (when the migration occurred in Kusama)', async () => { expect( sanitizeNumbers( await accountStakingInfoService22939322.fetchAccountStakingInfo(blockHash22939322, testAddressKusama), ), ).toStrictEqual(response22939322); }); + + it('works with a valid stash account (block 21157800) & returns an array of claimed (including case erasStakersOverview=null & erasStakers>0, era 1419) & partially claimed (era 1468) (Polkadot)', async () => { + expect( + sanitizeNumbers( + await accountStakingInfoService21157800.fetchAccountStakingInfo(blockHash21157800, testAddressPolkadot), + ), + ).toStrictEqual(response21157800); + }); }); }); diff --git a/src/services/blocks/BlocksTraceService.spec.ts b/src/services/blocks/BlocksTraceService.spec.ts index c73fee7ab..653578113 100644 --- a/src/services/blocks/BlocksTraceService.spec.ts +++ b/src/services/blocks/BlocksTraceService.spec.ts @@ -17,7 +17,7 @@ import { ApiDecoration } from '@polkadot/api/types'; import { sanitizeNumbers } from '../../sanitize/sanitizeNumbers'; -import { kusamRegistryV2025 } from '../../test-helpers/registries'; +import { kusamaRegistryV2025 } from '../../test-helpers/registries'; import { blockHash789629, defaultMockApi } from '../test-helpers/mock'; import { keyNames } from '../test-helpers/mock/data/getKeyNames'; import operationsResponse from '../test-helpers/responses/blocks/operations.json'; @@ -35,7 +35,7 @@ const tempGetKeyNames = Trace['getKeyNames'].bind(Trace); * HistoricApi used in order to create the correct types per the blocks runtime. */ const mockHistoricApi = { - registry: kusamRegistryV2025, + registry: kusamaRegistryV2025, } as unknown as ApiDecoration<'promise'>; /** diff --git a/src/services/test-helpers/mock/accounts/stakingInfo.ts b/src/services/test-helpers/mock/accounts/stakingInfo.ts index fdc1e442a..88e63714a 100644 --- a/src/services/test-helpers/mock/accounts/stakingInfo.ts +++ b/src/services/test-helpers/mock/accounts/stakingInfo.ts @@ -19,10 +19,11 @@ import { Hash } from '@polkadot/types/interfaces'; import type { PalletStakingRewardDestination, PalletStakingSlashingSlashingSpans, + SpStakingExposure, SpStakingPagedExposureMetadata, } from '@polkadot/types/lookup'; -import { kusamRegistryV1002000 } from '../../../../test-helpers/registries'; +import { kusamaRegistryV1002000, polkadotRegistryV1002000 } from '../../../../test-helpers/registries'; export const stakingClaimedRewardsMockedCall = (era: number): string[] => { if (era === 6512 || era === 6555) { @@ -35,9 +36,9 @@ export const stakingClaimedRewardsMockedCall = (era: number): string[] => { export const stakingerasStakersOverviewMockedCall = (era: number): Promise> => { return Promise.resolve().then(() => { if (era === 6512 || era === 6513) { - return kusamRegistryV1002000.createType('Option', null); + return kusamaRegistryV1002000.createType('Option', null); } else { - return kusamRegistryV1002000.createType('Option', { + return kusamaRegistryV1002000.createType('Option', { total: 140425643066389, own: 5340420989561, nominatorCount: 187, @@ -52,7 +53,7 @@ export const stakingslashingSpansMockedCall = ( _address: string, ): Promise> => Promise.resolve().then(() => - kusamRegistryV1002000.createType('Option', { + kusamaRegistryV1002000.createType('Option', { spanIndex: 9, lastStart: 2251, lastNonzeroSlash: 2249, @@ -65,7 +66,101 @@ export const stakingPayeeMockedCall = ( _address: string, ): Promise> => Promise.resolve().then(() => - kusamRegistryV1002000.createType('Option', { + kusamaRegistryV1002000.createType('Option', { Account: 'GLEJRAEdGxLhNEH2AWAtjhUYVrcRWxbYSemvVv2JwxBG2fg', }), ); + +export const polkadotClaimedRewardsMockedCall = (era: number): string[] => { + if ( + era === 1419 || + era === 1421 || + era === 1423 || + (era >= 1426 && era <= 1449) || + era === 1458 || + (era >= 1460 && era <= 1465) || + era === 1468 + ) { + return ['0']; + } else if ( + era === 1420 || + era === 1422 || + era === 1424 || + era === 1425 || + (era >= 1450 && era <= 1457) || + era === 1459 || + era === 1466 || + era === 1467 + ) { + return ['0', '1']; + } else { + return []; + } +}; + +export const polkadotErasStakersOverviewMockedCall = (era: number): Promise> => { + return Promise.resolve().then(() => { + if (era === 1421 || era === 1423 || (era >= 1426 && era <= 1449) || era === 1458 || (era >= 1460 && era <= 1465)) { + return polkadotRegistryV1002000.createType('Option', { + total: 140425643066389, + own: 5340420989561, + nominatorCount: 187, + pageCount: 1, + }); + } else if ( + era === 1420 || + era === 1422 || + era === 1424 || + era === 1425 || + (era >= 1450 && era <= 1457) || + era === 1459 || + (era >= 1466 && era <= 1470) + ) { + return polkadotRegistryV1002000.createType('Option', { + total: 140425643066389, + own: 5340420989561, + nominatorCount: 187, + pageCount: 2, + }); + } else { + return polkadotRegistryV1002000.createType('Option', null); + } + }); +}; + +const stakersTotal = polkadotRegistryV1002000.createType('Compact', 140425643066389); +const stakersOwn = polkadotRegistryV1002000.createType('Compact', 7749798828817); +const stakersOthers = polkadotRegistryV1002000.createType('Vec', []); + +export const polkadotErasStakersMockedCall = (_era: number, _address: string): Promise => { + return Promise.resolve().then(() => { + return polkadotRegistryV1002000.createType('SpStakingExposure', { + total: stakersTotal, + own: stakersOwn, + others: stakersOthers, + }); + }); +}; + +export const polkadotPayeeMockedCall = ( + _hash: Hash, + _address: string, +): Promise> => + Promise.resolve().then(() => + polkadotRegistryV1002000.createType('Option', { + Account: '144A3ErZsuQsHauKCRxbrcySvTPEnQNVshpxa2kQ1DrYPPG', + }), + ); + +export const polkadotSlashingSpansMockedCall = ( + _hash: Hash, + _address: string, +): Promise> => + Promise.resolve().then(() => + kusamaRegistryV1002000.createType('Option', { + spanIndex: 1, + lastStart: 225, + lastNonzeroSlash: 0, + prior: [29], + }), + ); diff --git a/src/services/test-helpers/mock/addresses.ts b/src/services/test-helpers/mock/addresses.ts index 92dda0fcd..76ca0e2ba 100644 --- a/src/services/test-helpers/mock/addresses.ts +++ b/src/services/test-helpers/mock/addresses.ts @@ -25,16 +25,31 @@ export const testAddress = '1zugcapKRuHy2C1PceJxTvXWiq6FHEDm2xa5XSU7KYP3rJE'; export const testAddressController = '1zugcapKRuHy2C1PceJxTvXWiq6FHEDm2xa5XSU7KYP3rJE'; /** - * Stash address to use with tests. + * Stash address in Kusama to use with test in staking-info endpoint. */ export const testAddressKusama = 'F2VckTExmProzJnwNaN3YVqDoBPS1LyNVmyG8HUAygtDV3T'; /** - * Controller address to use with tests. + * Controller address in Kusama to use with test in staking-info endpoint. */ export const testAddressControllerKusama = 'F2VckTExmProzJnwNaN3YVqDoBPS1LyNVmyG8HUAygtDV3T'; /** - * Payee address to use with tests. + * Payee address in Kusama to use with test in staking-info endpoint. */ export const testAddressPayeeKusama = 'GLEJRAEdGxLhNEH2AWAtjhUYVrcRWxbYSemvVv2JwxBG2fg'; + +/** + * Stash address in Polkadot to use with test in staking-info endpoint. + */ +export const testAddressPolkadot = '11VR4pF6c7kfBhfmuwwjWY3FodeYBKWx7ix2rsRCU2q6hqJ'; + +/** + * Controller address in Polkadot to use with test in staking-info endpoint. + */ +export const testAddressControllerPolkadot = '13vxvvF6uQpxq6eEp94TrDZfR6afFfbBeipnJwCgctyc7bNX'; + +/** + * Payee address in Polkadot to use with test in staking-info endpoint. + */ +export const testAddressPayeePolkadot = '144A3ErZsuQsHauKCRxbrcySvTPEnQNVshpxa2kQ1DrYPPG'; diff --git a/src/services/test-helpers/mock/data/block21157800.json b/src/services/test-helpers/mock/data/block21157800.json new file mode 100644 index 000000000..13369be25 --- /dev/null +++ b/src/services/test-helpers/mock/data/block21157800.json @@ -0,0 +1,44 @@ +{ + "header": { + "parentHash": "0x190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dba", + "number": 21157800, + "stateRoot": "0xdd58d8516c4eb0680ad1381e55548579f75c60d8064447f0bfaa1da50ca18001", + "extrinsicsRoot": "0xfddda8893960d233de4d063e7f185527a43f93028bd6d39126a5d52219546c1d", + "authorId": "13ogHzWQksuwuw4dv6jph1GHGBxjSP8qzwRJzT69dhnhYEv2", + "logs": [ + { + "type": "PreRuntime", + "index": "6", + "value": [ + "0x42414245", + "0x03970000002f2f111100000000c229faa45ea4fbb5cb044b2d87663d3bf8fa8e2b5a7a84d392f7597f15323d48570ab2a144c0c19db51e7946a92c28198a93f12566f70b4e12c75f13eda02506b52899c42864f408ba13c0c0e0f4f067f3b762aeba7036b0dee3c3d13db66903" + ] + }, + { + "type": "Consensus", + "index": "4", + "value": [ + "0x42454546", + "0x032ec49c3de9762434eeb01fdd2c69e6d2806023eeeb364963451e9841e3502a3f" + ] + }, + { + "type": "Seal", + "index": "5", + "value": [ + "0x42414245", + "0x20a91ccae1c72225e109558837a21e4e1b8d519387b19e605bb054829787556ab013d52d82a5f1c52cbdf3b6dfce441e3b9237f03f1ee76f7385a4d54476d988" + ] + } + ] + }, + "onInitialize": { + "events": [] + }, + "extrinsics": [ + "0x280403000b90ddc1029001", + "0xee2f0300043600a104ec00052002208e01000000000074a55dfe8583f9635dde122d1bbc2980b97c7a5c89c2ac715f652ff2c3caec6e03811dcb0e7697a7fa113f52a5594e246caf1408e19e42eca1e973606b45e68cec00052002208e0100010000005c16cd509db2876b1ebdcef0b835776188e7e2e5635c6a5286e7a5c132e1556078bc7dffdf7f3357d4a9c21b3333754d3ddbde24e8fdfe2536025c4285cfe583ec00052002208e010002000000a20a9d5f479f7c2b886a39a6bbd5fb156b3016cf8bd506acda046f290a8c21012891859df46540542b6877ebf81d988cf9eaf49572a12d443ed9a7212c238b83ec00052002208e01000300000064e4c54b7f056a0e9c0bbbf7560c969695f96fc0ebce739d75097e779f72d54b354dcc030a36ad1ae5a1b07c69a99a65a51f80e42cb0a584d5c38b646b80d387ec00052002208e010004000000a25df1fec8b9603b281e95c19a847c3c6d3ae25bdb4a289e37708e39af34d504908a47ef8ac33172a92dbdf8e020d95409033c5f8d2513cdb9daadf032a78986ec00052002208e0100050000007c55f1c74dae97a7897073db9878f1c37107f2a22541c3d00b5ddadcb7d7b97f5a72dc54cd64448e6952737e538e91e8408fcd12bb5fb24c3b2d6e04652c6b81ec00052002208e010006000000107b6ddb8800555959c442c02ca6a79410eb93bf52ca0f2a5828445d398b766763a2135b936cfaec6c7066c2ba18753dac9871b7b438535eceed520d7ba8458aec00052002208e0100070000002eb70eee0a3a85c48551e252bdb9276a87900846b1d6b7dc8b1182343abae0157dc2d9e4c1ddebb2a85d8505d3ba885b017b7fa274c8e71905b0d8d106c1e98dec00052002208e0100080000009c72d519d2d126080956c3e95b95c31ff5a7ba38aa8aa2492feefdc20f4f4950ed9f3e2d649870edd2cdc87cce882141951854fcad603067323cdfdd04eaf58bec00052002208e010009000000329c78774cff2b05c9612ee791e093580d4ec0001b9663f582782f06776c116d7a998104e0eac36386a8e21dbcbf78c7adb76f653a46e634b43cc97ba1ce2886ec00052002208e01000a000000acec6189952a00e5ff9b33a846e91a211a3e8f6d4c367393e0b5d8c49a1abc76f4f8e0ca5f3bb35b568ffbe41e0eb1adb04981416b4601662bbef880504b2480ec00052002208e01000b0000006a50b1dfc9a1f980db1f6569bef1f8a75a8d44aa5d508569f7ea0e623f04772fe45307f1bcb5187406f11e8cfb1fc24ccfacabc0d174ba74c28a60e37248658aec00052002208e01000c000000829d45b8b0b90efd9921467dbfa5c24b5bc7c5bf347aa43f72c21058119aa040748728c0c78d0b3547a7f84f302f4f1287cb563aed74b695d977f1065a2b6082ec00052002208e01000d000000ae0ffaeb164086303cde57e80d4117d7abef5af96634cc6040bda27ec054ab3964b46e37689054a9be220d70f936637d9d0353773647a8fa4db0b05836215b8cec00000000000000000e000000228cdeeb46a670166e3e1f786bf3e155ac567837660d9f80c8e4041dbc7d9c08c3f7bfb7e031d1b4d7336008d42bf2d0ee00fe0130a2b293d6016bb18bac4d8fec00052002208e01000f000000c228d4fc21c24b013101990fbf801093205ccb25c2509f653ff8b585014d8608175d9b704fd92f01e7c711518f9c2ef54a0c2d9304e5f72a9d95431c6f2f7d80ec00052002208e010010000000a051612bed04d96ce256ebcc2c2583fdfedbb8aedc22d3a1ba27bc0519eaea173d200b78165760258b57d0c21ee789a404f9ae329bc25737898c0beec7048382ec00052002208e010011000000ce89b28d0707a34e77875a73218b843c2b48b1fd3c81ac0b3fca6b4548cefd2ac0c374d1944e6b84262bf1b3365522c7ebc08ed3207f1fd33ead05a713299081ec00052002208e010012000000da4510fcd51ab3ce090c0ce4426d46f5afe2031c4c66a687737b0f8f4e1fd42ae0caba12424ed8c22209117fb48d33beedebfd81dbdf6c9a3a4d5638d882ca8fec00052002208e0100130000006ca27b4632441220f567ab88383d6336691bdd836390d7d34f939bb7c717c87f833eb72b24195db48a80871b2bdf57d39c8dc064c27684d8bdce9d3286096581ec00052002208e010014000000bcacab9718171301f8c16ecee1125a783330dc14323d4704b4e2e10290f3dd60d9019f7b93155777106625dc183ac114ac818243dba71be85e73e522c352e289ec00052002208e010015000000f4b4fab639d9f121bba9e3b833d6c4b2954ffed3fce9ad4d7e7d4cf88c57a02a0fdafd326f452608126a8c0041a5045403c2c3a64190086969cd137a0fb09c85ec000000000000000016000000ee9b4d5cb7866406dd25736dd4dcf9d1d92bd90ae29091abaeda957fe740d94010b441eed5aa63c25c08cb81a76ee2310544d1f0b0165dff0cf5b302cbf15e8aec0000000000000000170000003417967504332ff2f68be9b4bfa68f4ac299d7d56ea5853f90924b230c563d5cc46f7d07bbc87ae891e80f491ccd590b2b01bd9b97f04b75da322d1b8da5de8cec00052002208e0100180000003c7a401859bd3f1075e42332e69ecf62bcbd500ab4cb49d5cf7a9c7246567514069628508e4b77b735904477e73b8d4f0a3ce9360007872453f88b8e0856c78eec00052002208e010019000000c2c8aff99f71034d0c1067bbc770dc2b5605fb0a17b160daf7443f015166ef1cd0e5b63d4d5b34cd2d95d91611fc5a35348f5ab78d8507ba0f9f47b7ba132281ec00052002208e01001a000000125f95d731e8d56b724eb483fa3208a04729ed9bc8fbb494195611c9c1e81879daf2ec4fff5461b43b35e282b437c4df20d5695c168484a77bac2ec1e077438aec00052002208e01001b000000a6b88a5736c001035fad0ec5c0f74b93b3047c04c0cd1e8ad80524a9dcfab33cc748522c8d227f14922dce78602a27f2166096b53eeb950a0bc8e0831cc5658bec00052002208e01001c0000008249353126ba43064d94d048eccd36aae71728d783fe4f1c736f7f8ad77644147f932fde9971a6bfd237c838025a36c8203c72a60681c26587777b66f9baf589ec00052002208e01001d00000046724949c4a277048a15a6dd9110b7facd75ead9077df87e01ad3a400ee2c77d246b32e782da6b52073f0374c4b29cc1be073bd085815eff170fb59749cb6d8cec00000000000000001e0000004aacc375de7d9cea0b805fde88d42b1b95352c2a2d0e0c7ad5a042e666207952b4b7f1385f93b0ffc09fbe5f6ba5d2a36f5b6f273b7848c13160392e48ea2985ec00000000000000001f000000ee000e0c393e128ef8495c2bdfb818df16b1d901d4b2d417701401198b62b167b22b444dc0ea76ee44b568b6b6cc4ac2ea5583d8672119dbc5adaf7e8075e68fec00052002208e010020000000d45b252d9433df631a86c74bc7f8d8b63180d6ee4dc837318c458937be0183218366bf247f6c8e4caede616bb930a6e894b9d44dd6650115ac68a6c20db4d48fec00052002208e010021000000a6bf65f76218949064851e3ab52c31d664a00586c2e0a76f8f78316d8dbd4e5a7817d76955bca357f864df731140521f0aa2bdb1a40371c8606ced64b5d7c580ec00052002208e010022000000642fabf9bb874473b1b53323b9520f3354d03cf4b783cb66e89e2c44bf930c32c658691fe4237e37b74b5ff71a457923213c40342143f11d0072c8be67eb378fec00052002208e0000230000001acdab74acaf52fa32fde2578a07bfeee8236fc393eeaad0a3baea8c6efeb24070421ded371e6e83b75cec30b263a8dbefe3a307032d36992d3fff58f2169a87ec00052002208e01002400000058da839d98833ac067403e11bb5fa49f1d7b5625235c8a00fb04750d47b99c515f893d52989d37104cb8fe9050f553aca00203637b4aaa4bbb432ad97391138cec00052002208e01002500000080efc4a5b04ccde1e6a36f9f2323b7f8ea25a5329caa9fbfc8f480b293aed429687f6c2eb0b2fd4c29c1b4d718875e269c22478f9632443926e59cadd1c1dc84ec00052002208e010026000000a201e843bcb441452f2ba234d2e3d317d522af017d9f71fa420c33ae53c5c9188d403c3fcf1d5dfa41ab8e294ec5599bf904ec75b6168ffc694ca27a30d1ae83ec00052002208e010027000000e6f4b63becc1fdf6592c1d62960759b147ecfcf38a2476ad6cbc378e50173736290754919dd1c5a7e0d457bb8178bf454c7784aff797f61eac83e6319261f982ec00052002208e010028000000361ce550f22d22aaf61df11c284c1f1c2448f8c63cd1aaa1e701ad07784b76491937775fd978108837e34bc20ee83c38dadb0f844188905a2874c6e4db7e8481ec00052002208e010029000000468552876f416c26a3a3d66dfc1db9e2f1fdf759e35c07f21037bbd3fdbe52265a9cde8d74fa42f28e7bf1bda815a89cd4bb31297dbb7bbc419ac19da50bff83ec00052002208e01002a00000066237db2fa50b1daf7c3773dc423a054b1c9ea24a8ef29dbc9ee8f471da5574839fa3cb8982da7d92aa7999ec3b2d763e88c22f1f9f3120407537a485d3c9f80ec00052002208e01002b000000a047ed9e9f21bbb83294e2760a2f6ee997e3d5315801df4973cfea9f76e67767d7a991064d920afd3e63dffafbd9052ae72660bdc1e2ec7d6a2a3fa0c3e59480ec00000000000000002c00000068ca53ddb17b3b91b001fd07bf92cff5f92737f0baaf13bf427e031928d5b66018ec0dc616a17a245d2ff53a00b9cce050e72f8512ea7813e865734c636bb189ec00052002208e01002d0000001406ae589488f994675cf1dee98fae1d411ae4e08fcafd74a094a33717e81f5418b001352649ba429a0e827ff8098a7d3ab2435817406847af29bfd5f93c6784ec00052002208e01002e0000008ab6a7c35584c64ce55bc3372f9bd38c029422ec9b117401730d8211e84984088a97338f54f93e51f9d5550f52ec8504f81a444fae73f6a73ab84e5733478e81ec00052002208e01002f0000002427869c0e8f7c43c2f21ef4a52f47dd443ebdfb69f0dd77e4737fec046082525b8fa5e67b7bff29d32b6cfe010972c9030408b26f30551fde94c30920012f86ec00052002208e01003000000058feb8ae521122b599e929ba0fd236baea6d656a0144b3b6107a429987aff077fcf36959623e65f2b92e58e7e8a4d9e67f89f5bfc0dfc5a7d5df44a13ff1e88dec00052002208e010031000000d6ec902236fe6630c773949731907d1b9a9bccf02dd26dda97254167fd27d202c8e53eb3bc8798d2c097f220e44fbb1c9cff209bdf59ea0468a0bff562064782ec00052002208e0100320000003e31976c267c90476c96d4dfb778b5da8790acdc7c795703102dc57dcda506182aa9213b24331fa396a6dd66daad43b2ca00c5310c3ff8e541ad9351c09f2a87ec00052002208e0100330000000654b9b57faf19fc27903ecd784868947337dafa35d70fffb46576ca49f54b78cd05a6930002df03b875cbcba3d915afbfd361173f8464d6925b2445308dad84ec00052002208e0100340000003880fd7a9398241cd293371762061120a52443e3ece4119352d0a5466ce49262662ec2c4f26ba405e850af02c50add623a9ec4c1cfb278533cd2b4b9f4dcd68cec00052002208e0100350000001473b8d1c9f82d8f2cb254d30828d29911268334ebd87dff83153d47b32cf849bce28645d94eb46860d5dbbd79a76e5728ee7bcff2017be51aa690dbc0bd9682ec00052002208e0100360000009e3e7bc6585de179bfdae7fe4823833d320564b07281437313caabbeb108e96fc270f0e04881e28d4f59822f054dbe5c8e89db04b6a35ea80cb6c90546ba9a8fec00052002208e010037000000961f40dc5c8f19544e9802130213e555ec7f65572e114d1267d26714e8e2d669cda0de6387a0aed76192b3b9670a972acf6023ca382fd732928b73580e376681ec00052002208e0100380000007cf772ac6b5f480e21c528185f9fb50607781383bc0fc381c04f757be32108590c35b6e26f24e49fde6cb39fc6bbe46872021eaae7babfda8ed8b25f7074228aec00052002208e010039000000d6dfc90bdba4ef225c9e2cd8af3645612c81bccadea25f41c8d381126689a42ad7ba6f5f3e018d2d5d53b4fe82e648b0e718428e010d0ef0c888919ba2b14f8fec00052002208e01003a0000008a261b9e7e407764cb77297a9a46d172f57e5795021e9642a1315319b73cb544cbb52c1b8bca6ec2d105a5e727042a795b9dcdf295911c2ff1cad4ee9f578b8bec00000000000000003b000000427a915f546cc172f1bab8376c4e53dd84722c3db3ad844c5bd910fb67686a7a2de38288f6d6eb5e9bff99df343f572e42cfa289f0950337b446dba1413ae48fec00050000000401003c0000005ce23c63fc5974f14d4ec24345dd7ef7ed9816c9baaa1b63521a87ed90458738de1068b41240b7f88c6ac249b63d13cc9d567d7859cefde11d14d1efa827c182ec00052002208e01003d000000488f60397f5cbda38ad9a713ac3c1bac377b8730eb2a7291a12e77ecd4a09d58cc76e4ee57f4be2eac80d2de5f23245899167503bf65afbf0ec784b84b695285ec00052002208e01003e000000cc19f247c5451d7952780002d9e5ee4b995cc9884b05edaac667ed642e119166fb5debe40647245a9327062c3933aba8b421c66ba7abfc6d1040fb8bba7d018dec00002000000000003f000000c4517718360295cb8686fca0cfe07c71a2cca5f545d1cbc5e8a911c9b5b34604a25c707dd4676809f03cea47ad58dd02f99ac76593acd053bc02d1a4a8b8438dec00052002208e010040000000bea19243c04c9a320af480ab60d62622138278953bce5ad55ab2bde220b9101ce8bc74c523a492fc7f6ca533c9dd7b4d164fb08732b4543f0d723cb15cf5098eec00052002208e010041000000a6341448e839440be6bdb64144de951e07d1b6286d6bb04e14796fb3b3eac3570dffcc202d8eb787b9cb01264c99984c20393f4b7d0b6abf8b46664580148b8dec00052002208e010042000000f8dcb2c34aa9994a6707eb557a9d90d641201e12f67341faf93e8a60fe94d32d53ee5f3a17f211db872e206b7634d0dc85f73c03266f6cfa509a4d2fafd67e8eec00052002208e010043000000ec8d0ce807af0a20eac202fdce476e91f15aaa8763d499ddb7d68a15b70ae871d97bc5ad13a53c883f2a7a263cbe8e4c163a7a456228c1a073a53f7dfc9fdd86ec00052002208e010044000000a47459adc8cd3faf23ac405c0913e60d65f6c1735bdf967cba895daf32d9ac3ecf58036a22ed5d6d8472005ed1f6e5dc0c09153e707df5d2ad10f8d82511c188ec00052002208e010045000000945b0235a557f04d03bccd75bf119d70e217d962ae6b1deca99ea132a7a7900f899684d0244a701b8390d451d9243aa6a8aa1d2b5fd9f7cd1212233da96f6a88ec00052002208e010046000000acec3736948f2657ac78293c548cc60de1358306862f1bd5ad5f1ec4139c345d02e8a00f7120ba8806773c6b7a52fec9a8915447b02cd00820da825a208de68cec0000000000000000470000004696710710ccc3994b35b1d28f9da2d10421dd63e93d99d2a2fcb5f175bece70da28521485c371d5a9e4f5bc64804a3254f0ee3ff0d6be78c8318bfae8fb898aec00052002208e010048000000228133afd2feb8a91deb85533222e4d6220abce0fe113cb94fe906014e3d904343bee31cbaec3888cd9e969e78ebb8b06fdc938def3f1b3f0b9078069f20dc88ec00052002208e010049000000bae7dd94517edc0c37a2bc67816298f4d5867f6eb145984b70dcb7066127695d68cfbe5538bdff3c717500e5bb1d1b12307e28a239b205c73134c5a07b2f478bec00052002208e01004a000000e69e4d236090cf88599effbb3ee9b3c2317c1ff8fac09da3800f7a86feaa2c44fb29c4f3c1f06d8144cb350157a33fe065bbfeaf160712c48914d2d6aacf0680ec00052002208e01004b00000034a6421066375f4af32200b3c83cf6d61f2ded4423add4386f57078293359a087fd16b8fa4f96c25aadda86926d8db2628735e675b96ae193112921b25e8fe8eec00052002208e01004c00000010d881b384817161742ad0e25b84b9c9c085672a7b7b8ed39b2c366dea98fb74eb4fecb97bf8fe32e23f7dcb47f58873e1f257911472d93e1f50c867ec40fa84ec00052002208e01004d000000c43f6497536fa12347214d31ebc2d171ecc42f770f17b7786ea6f0084085007029f1a8c9c6d64b5c6ed11bec84f389d5ee1672b3e67347f44749e56e841a9a85ec00052002208e01004e000000d87f57a5ba4244e553a9b7707fb9168a7c1d12d9ebdd78b7b45841ee081d943a267dc6dd857784985a2242ea5cab1ecafaa690f5e276d48be6406b796799448eec00000000000000004f0000001608aa451b41e99de7a1ae002984f165c9e81bfeefe2c93c76d7f56983b9946e7e0421295120ef8df65c4e9d0c2e5927c123f79acda56cd46bd8a4113fd0d48fec00052002208e010050000000ea82cf801efeccd6f30395c771f1ea602db1704bba1979888128ee08c532ef35ae9e847e97642883f8aa3bd6075a150277d63b00fe3059558a64e4890a1fdf8aec00052002208e010051000000405d415b8ec7ed94cb3755991911749ccfa8e00e841b8583ae1ae9009a483d42faa7070e296d3a21f2854052a3d47d2065168cee6e321c0586c44a5db7edcf85ec00052002208e0100520000000c28f3fc97a988e45f522b1d45a7fe77b05e8209ea46294378d36400e795cc0517115cbbba3fb3a0cb690fddbc34301fdf73bcd6ccabb7f7fecd85b2c616998fec00052002208e01005300000072b87f3b5af521faf853119c663b3ab9e551a4aabc7f6eb4acfe3b6ab4b3a90dcb90f61f907ab6cacc4db441f14cfcfece22a84cda5d48be9643721d4e579a89ec00052002208e0100540000004c79b3a2123c0fbfc2babb9f20837d5fd83d00ec1e187c336bf9adb2ea28171f885430a76053643bfb24ca3997e80982133778e07ae6f2881fab0a570f378582ec00052002208e0100550000008ef15331e6306b31c4ae45d7ac25fc8049a43cc0d3b3cc92ff8f9b1de917d956f8aeaf628a0caba99a86aa8acbed4b279b9cb193fabf6cb1dc2b891cdb0eea8dec00052002208e010056000000087e60d9c356c4c2b5ad40ae2a2cd0930208565bf2d77b97012a1f7bc84a616ff5b7689926e9cd8448d3c10959b20e838b9a6bc19118a7a5afcec0c86f174c81ec00052002208e010057000000f4c60a1c10eacdda14eecc44519b390604930fc99ef7f60bf2db0e77a40bd55882bf439115182e857b28bdd1545c8fc308247a32e526f5789c331474f12af88dec00052002208e010058000000d245d4830c76dcf1d11523e7aae2a0e8cbfd198e6e6575ec44ad9345839e545b7b589acb517173823dc60040ddbb3fadc49662f517094a6c8ef176c9917e608bec00052002208e010059000000ee62dc444edcad23696841722b496fc7d6406ae2c8a8389bdfd3ab082279ab42d5ace96bf30dbaa81e7d8965fb32236f7746aa1a58f95cc3e7e9e0a67e6b5185ec00000000000000005a00000046c70f1349ac339c49f9001ce1bdebb72afea7fb16c2c1e804cd89f8d0329045d9ea0b18afbf0e190bd184943fcaf8ea3602df3474a1e5b0e7861873ef984181ec00052002208e01005b00000056e0abe2a5365f68fb3ed200fb83773d33147f84c017f8e00f66b37e315a7b3c9bfbc90038c7493e0c46162fa0e6a4a12e751f994938306d1bc2ae5b70123a81ec00052002208e01005c0000009c2daab987ca9636404c256148509edda70ff8242b2249f30f2da4f88d51401dc9e1122c6caf63ecd0a4e86aea9071ceef7f2dfed4163f21de7085704683f58eec00052002208e01005d000000f685c186e711b85f97419cbc52548bdceda8139f4d0d1c9836eaaa885a2bed1b78f754d607644ba41805b7b6f67542c57ab7a4c5d32747191abcb4c501c5e184ec00052002208e01005e000000ccbf03d0f455e416ac7272949fee42174a9a5b960d4e9d33553033a2ac13395cc55ba7d4ee9b17353a60f19ad8611017075c3abd8fee371d21ea6d32f7806581ec00052002208e01005f000000ea84b1f4fbbb079533be1cc2e9890b3c904445c783108de7a6ac84d37f174d36662378a538f6990a0ce384ba1707e7c42e5bc6e16213c5489be8c1e00ca9b880ec00052002208e010060000000f612d874d4e3eb0db135ecab29db995254cb029b835637fa178eb0915a0c45702343f92689f0d7819670f58ec7a4c81e39fba16b2193ecb3c3547b7b63f60e83ec00052002208e0100610000000e9e2c55df9b58cb88761fc5fd1798a2838bb51df3a451b9d1e1afa47c17c309a297b44362b89dee2e72b0c798ecf5fefe71a4ced42a4c795638237be9c07980ec00052002208e010062000000105b76c7803bb15d712f566aa423e494e659f187c8402203cc470f38f655a839174a83dee2e000b88f94c4b23fb9146093df3e19c91be229091a342d5adaa987ec00052002208e01006300000082d09b284c0322a219110a01350c1256fd95acb832b9b7a74607495887da880f812601fda3ff3cca199ef84f578e1c6a8186f63e1fade97058c488372f12628aec00052002208e010064000000088e37e505b1d6d925833d1a51c07b5f3ddd87b909d6c1ec763734bd6e9f567df76647b0eda8402150ebaa70dbd3a828fe312c20c234653e4c62da99bafe5e8bec00052002208e01006500000062a47e5b2e4370840660a4b8dc2bcaa9bf3c35e782a924f452949635537d065a0d3b39b401945a75e2f25635f0e4b2fa961a77e1cfa3c09c138e5e632943e284ec00052002208e01006600000000815b3b95ecd8cd90a829d3e48934e79828c302f1345702270c3172720c9a7ec231cf1adebb6d67ebe7100b7ec36c50472dc21c146a1a4d6a11be2167384d81ec00052002208e01006700000014ab7879b037092ff5fd189b044712dd91ea9844455384b4f73af8da95d1e85d1c73c7dae6a4d6fc08663c45fc3e43a21e175d5fa5735d4309f7538e3b7aea81ec000000000000000068000000da0e1192885d02438e70de19dfb8b27f7d6c3763db5ed0900eff5f532914bb2b062f1e307d89f9cedbb92121bed67ed4d26299ede774be0c630576540ef9dd8aec00052002208e01006900000078baaf2cc188caa7aa0ee8edfbafd9c0fe82a36f235c6ad7e9cb711732420001ebe74f227cc0a63ec78668a4a4026645c9640f83a0b3d6bc815f602ba603e181ec00000000000000006a000000ea035d3232b6921199370660a5c7d6f5a34973df91015c3ebfaf721ca68dda13b045063f9b50c189b3af4556591d0c6f38d02fdc0a8f8d4a849cc3f3ecfaf587ec00052002208e01006b0000000ed5897150b8620ecce5eb29702f7be07a6bb74c60700c6e676b2fcc84a9394237434c73169b99c0e90bb5f223dd28f8f8fe0e449fd9426c86acfc046d051d87ec00052002208e01006c0000006878a6c08b8db458f896d1b781abea2eddcb8e91c26222ca1a88e0a24ac85b3b63991a5356f447d19666e1d3d75d357663941dbbbd7ec425405f570bb534998bec00000000000000006d000000e6f9e58cca19ece10f47d33897c4d812b0b4e5e453112eb3450549a28f42207472f32a84bcb457b3278b4d05a9886d8dddfac68753fb3dfa73280e4869c3e589ec00052002208e01006e00000072a55471c0cf2de107210fd268319a259cc1f1283376749f9d31fa8beca381370ce0dafba71edd78ccadffa9f5991629936f519e435a143b9250eb8d0d28268aec00052002208e01006f000000ee8e173addc907fedce03eb659c88ad4c8747ce7d0c44eeb5eda82547a5e8b596ba67bfbee4465e7b55373b0f610ddc7bee99a1954b7f38f63daa0e5e3ef5b82ec00052002208e0100700000007a7f63801532bf7f5a9bb35bdd83d660f46d8d67190988d5ed2778853ce1d02398a33b90fa3311095e1da9b751e50031386c58c36eac738f0557112cfbe5f68eec00052002208e0100710000006ec6609ff793c61ab8b95f56e6deba4d8f86d480ad6dafffe5a9bb9e89840701a25db89851ef5c12c5957d45a5ca9a8cda0ef9443510ffc866cbe6247277bb87ec00052002208e010072000000ecbd297c272d995bf2c21aaca98e2f6a3cb4c60f7a3a23cf7e7eb8970d963b6b2d329205bed7a6caa8da9780cb9fe26f68496a8ea8472f499ffaa1ae5bccaa83ec00052002208e0100730000004a5ed1bff7736dbc88efab84039d9ae276e78340c9d6a07757d994f8587123046626ff0f8d525f710c143db45484b813a8f68c4ada385df600095841843ddf85ec00052002208e010074000000f25924c7015f9d30b5e7ee4c24abdb44e932cba7e53858915ba114a41851727ec5374eabf6e504671901882b3318ceb79426f7d48ae3ac3d423baa60c227108fec00052002208e010075000000a8941fac05b3f11611b96c68bda59548249ce228723ee725694b0d9f118b7504df81e16a3dd02dcc5ecd50c7c0a4a90c8f49386ee4b4991cff7a3ce0c9b3ed85ec00052002208e0100760000001872da36fd7d8a039a883ff2d3e54af1e1d0fc6f66c2524c9d465be361e8851318c65231af61e03cf236a499a62725e6e681451eefea4d476372efb11e6cdb87ec00052002208e0100770000003075604c3b418d2e244ad985e67ae21c723c63588b774008a305ee0cad47c6077cf5e884335b44baf49b13f003e4005deb5ed12833bb3d660010c6daf84a418eec00052002208e010078000000644f62a2b87d3d95b177547de02619f7eb098cfe5407f47e7378d02c46411251d60c13e7b5b7c8f613004765172420fe09add4620ff1e30a3e728f6254478a85ec00052002208e0100790000009ab1daaf564b9da7d01698bd78c160942a890e8879d61f8d5564f0ff82a8f436c28251882eba2d088a256cd22c5b7bd4962a6f9dd112d4324f7a78b15ec06388ec00052002208e01007a000000ceeec066a20c8cd91ada4acd8600c5c37a74acec0970c4674b083c7ebf06305706e1fb31c676341c5b8ca109e4d859e02808e0b9c6d447749dafed7f6711e382ec00052002208e01007b0000005a8623caf05aacad679b461e4d411dd0c7265736b3d10ab83d8f1c2e41a7de26fcef025b4ba3be68b36b5992289de8ee29eae5591e5ff19eb1e594a9cd78e08aec00052002208e01007c0000000c0da73b32fd0771c4f09ff7e9623f9e12b022faeef453769385be51817b0827cf65bad87f91048cca127951d55984091df9aeb91bfd4434cec454d0f47e0a8aec00052002208e01007d000000fa1fe70fcd8bef658553710cad8be2f103b530b498901c256f736476da736f45740a4194ad892dbf071b70dd164405d8e3ba3f8ee14d4a98f9f71ca41ac2918cec00052002208e01007e00000054907ab4e5cf5e0c2a4dde60aec8e0e3539a29647c1c214e14b8e16f1eb0cd4c0e9b167baf6607d3896b345667d93a80bc7af75dc5a144c1b0fab75cc2ae028cec00000000000000007f000000e25b44903290576d6ce9effc65812c48c94f6a5f9ad6933324fc26fe35719d28a6dfb6ed569d639ec2df17f5387a4976fc4319230cd738a7b9592d090202b288ec00052002208e010080000000bc5a69d2ad4fd2b4bb5ed3b475ac931f9dc09555624011d3fe58b5b00b96fc3853205b7f648337e8db141bedc3194ce554f1c0d0129e8e37a20082882020bf8bec00000000000000008100000028994548f19c11ac1059f8989a027e9ec590ac1832f22d2f9cc0f0488032383244c7f52631dac374d1c838a834c641132c107120da95f8fa272f2585a1112a88ec00052002208e010082000000fe6199702edd99c82e847f4ed9dfe2747705bba3cb1e1fb058a036b43d1c672d789a1be3349df683875586ea6824afc598dbfcd37ceab49159ff8da8ffe7e08aec00052002208e0100830000006c08262276cd80824c2e1bab70e265142806360e60b388ce61fc28c8b5f2874fa3a638f2b3e39721343e70bc7a95575b113f59d91e9f0fefccd964abb551af8aec00052002208e0100840000006a3232bbfd156eed23c4b45071f8b33166d93c4016793aa807e4e3f0d890314a090af2b6ad8097c659119dfb5a389fd2186d99c8bba0ce9d909998284da7f08cec00052002208e01008500000038198f711207a547071560d6418116da04c7d1e5be1af1c4f6399ef2a42ad66a50c523efcf2827692ca1b0c99fb53c208de27df62988a8b99f0f3c17ee74cf8eec00052002208e0100860000003a25db9c54e2f5991848f114ec43cdb61484685fe87b01ce842c965f0f591f6dd870e9516b40e3cb6bf2bac772dffb19073f3ea8bc4ff2b374621cdcd0bf0e8eec00052002208e010087000000d621cc2b43435eab6800fcb6c1f52743f25c5089e9009a3e5da86d22acb6ca3c5936532d966db980aeb73d3189c3299fd65698b996ff703e4f15166866a1f087ec00052002208e0100880000000c3e9642ac01d9acdde2596aa7ea23a949e2323361b564aa0a52c13ae4ed1f0c7ab4744da3ffd10fc0d556d6573c781e2f7decfc09b9f5fd3e5bf96a5c49148fec00052002208e0100890000000258676e63f6f1bdcab4db79c0147d78f39332ff5e49fd4e5f6fb44a4e12614a1a3e0d7bc1ddfce1ecb6c1114238e5e70630358e3ca7ba35a1c2bb28c70d9f82ec00052002208e01008a000000aa30894f4e4767b02faa5db4237bb425ae65b2f58920d1a482498c7f44bf236486684447056cca9f1cfa538d0e19e640ea63488fa335670a40c1c27a584bf088ec00052002208e01008b0000006e8532ea9a4591a5d5b2f05560003c8a3840e6ccbcbe366b4ad5a0f8114247169c5d139c230734b015bcd0c34621daf1a5cc3407ed0c845985533d485a9d438bec00052002208e01008c00000092545739aac163943e89ac22aa2288ff75903a9a3e8615e93312afc6bea9847be2017e34894bbf0ca36b1f201c2585a7a33e5a05b838f550f83e7276e6e3d98aec00052002208e01008d000000a6035e1d265e13430c3f9b1f8b2ae178176f5264ef896e9a1b469e403ceff020210b10cc2b8f327dae7c88c357629ec059b454e2de8f85f71d691ad8bae2dd89ec00052002208e01008e000000c6be007e4388763565b62c05c35c041dd63c72e6ef25c7c0cd2781f429b64b3d641378ecec74d49d54bbdebe236a181bb383dba330c87f13090d786b18fdfd80ec00000000200000008f000000f26704ccafdb2f6e617dc184ff730901d08012b7da7f388ba265c5ddf5305b304932292c15eb5222f4c20353de9c26f2d7e2e30ac3ac51cccf509a274cb32587ec00052002208e0100900000000007439e6af6f8940eb950e348223fb28deb094357fdb8f8559e25005812066b614fb1a08eacf275e92eda9c29ce041e5ac1a363a73dff3b354886c5c34b1587ec00052002208e01009100000004435dfab1959cf5774ed496fec5399204aebc0663dc967f5ffa04883bf1a774598666530b12103f9a034dbdb6fc858b5111b5d1c3c833f0557c573376d72d8bec00052002208e0100920000004ce2f034be10b816cd0934f8280daca23f6ae1ce45df041d4497baadfd33b5108376239bccd84c520ac834e0c3ca1a0162bdf3c87da7a9045a90bc6ecddc5583ec00052002208e010093000000203014685294a19555cbc2c7e72d4b16bdc3423b498629641eb983a2d1442c3bc0c3ddaf6e8d797280869b3f3804cee97cb0b24321ae3dd68e399868dbad0d8cec00052002208e0100940000001c526db99f6f03ca5cef18e3e94651dd715aaa72c5ade2418ba71b5509da984e857d4e242c7c6e1b2134e5d3a73064f8f59f167cf55d6ab09742f507baa91288ec00052002208e01009500000076e96c4de5adae141262825a07b58ae5f8c90c1a5c2c1e045dfc6955913c61269be6319e0319f4f37b308e7735a7b9140a05bfa3ce1208d8dec7a535fedd7689ec00052002208e010096000000001b83331ca7a36fff657d02ccc4b292a1b3e0567c1a54dffdd843cb234ee524b590cb4a62d3e4d76e039b8ec25f278711171b5e92f68d897d610642287eb686ec00052002208e0100970000005404d6609b519653b295e72db9475f1cf2990c96cf6121dfbab55f0aae7a68034e3ebac4ed21b0ef1b9daef1fc886c51fbe61f4d5217e24c3a7370a97a76398eec000000000000000098000000c0fc1e2b692e4df320cb26d7ca5bd436e8fc4ccb474e4318989df36a1704e7423e241149a99aeb26948eb8dc441505aee3dbd186823eacb49d4dee2731ba2e8fec00052002208e010099000000c87aa0a1c088bae0dd8ca6a8896dfa28b7f42709156c3854bff8119e8bdfad35e948ab1eeb43d51e1562e6ef206605bf60500a76ef9e72bcbe4c72f42c3cf581ec00052002208e01009a000000ce68ad652da7eebae1e589a48cd8e8c5ea52649afde3ea5e193d97cc8a89f8758d56f6e8a9c05ea9260d2bb7add23c0f033dd77f40c3adf78ae46f1f30d48783ec00052002208e01009b0000003ac23dbb77336353eece07957f5f8be9737144755feb53bfb89d2b94cf34d641504e66963b7627666d579834ce006583e1131e381ce77a025c3a7404ba219e8eec00052002208e01009c000000f87c435e2ce6a3ed16674758e82df34f734488678751d32d4ee7ccfcb1c6b9344e2ec8b1d00bce5c57d444f70657005f37494d1c30fea195f02c2521299f7185ec00052002208e01009d00000076f7daf534057fcc821d79472d3ea4829424193fe844b2548f87a028ae6c77111195a366ec7af5bddca1acb0a2f718a103321d1be8d0bb7ff57a5ea7f1f9f58fec00052002208e01009e000000ced8364174111eb9b0560c5fad2c5154b699c35d102cf53c04eafa441388fa38963dfd5c7202af421671311aa9813946b8f3dcfa11c551e216927098bf5be28cec00052002208e01009f0000000e24b5458472c2dd93201e7684068d6c805afa0284115f01698a9aa7420bb661dc2ff3ede7b80ff2f91bcdb88121c84ba391d83ca1a7454800674bd34c656d85ec0000000000000000a0000000a2e32415e19be55e71793086859a17c84eb00091e62b8e722b33aef381b81f612f0390f3b6c0a27d785df42ce92ce0c233e6ed5422bea51d7e07e3dc96228982ec00052002208e0100a1000000be7568ceac9db0a4b08a47b8b5c78edde276bfd2abedde8cffde0d4e42862a17a18b0ca12209130aa833ee13ecf0d3937220d61b3efb3edb34b73fd5ef6d3783ec00052002208e0100a2000000ce4b56a27a0c9a1df1d0d386a4b140d28492e3af46cf24bbc5fdb7766e7eb75b3596302c6688e529e170f3f8db8780a878318459357deba4de237c044d2f8788ec00052002208e0100a3000000fe16aa687338dfcbb7e41594dad9dc1027e09da5e2c66007bab44f3ad6173439fec3d4e0cfaed44d6a2f2fed9e0935604fa56d4a12ad7c9d627e33de87256f8bec00052002208e0100a40000002c149f9230ee2316895eb10b520312c8d2e770069bed7e42263a6c5383b561212637d59fc4d3a748ddb4490de9c1542c40e8baebbfd87f64c12f647d03b8948eec00052002208e0100a50000003ab0563bfe7b952615f4f123f28f0920deff35507941c65d45e74e3fb8f03239bd07e8ad5eca4f0f37513e593091b15e094afd4ac8aeec06114cc2c6e97f2a87ec00052002208e0100a60000008283beb5dbe08c4365e1cd931669ca810fd2092c6339f51808f3ef732be8326453201f42f6b8a32e35ddfb6cd526b03fcba4edcb80a0fb58170849e303df6a82ec00052002208e0100a7000000740a3d8575b550e4c498cdfca881d59856dfd2674b1fd8ded1cf71d82d8cf4656f7d067996ab8f01205f594f3bfc0ba2883770223f4ec17465fa9457a64d2685ec00052002208e0100a8000000221a59445a8d1cc07cb7397ba1d43036120faa0830a60f654a59bfa1ec38495f91f81ee1f56143b1e4921207932219c76c31e128754a5b1147c45bc7536f0781ec00052002208e0100a9000000e2f44c780c35309fbd2f3031e9f5d70736528d884216dc234c0a7e0033f7067e6c5620facd048a763f56ee0c657fdcfd4017657d31780e851de37054c1005c8aec00052002208e0100aa000000d89bc111842a9a5bba7ccc9d3c9eabbb7aaabad688eb225aad2562df3b7e5e44e611f4e76415a3f9d6a1d0c305b1fe4d324383594d6b54e3271455e615419c83ec00052002208e0100ab0000009a95fd665a9bf61991f5a85c11c3dceedd6ad207b3ce601737cadacf14ba8e4d7706cc670fc2ccee1e14c2731fa82c75d50671fc086e1d9173b0232c1d8a8c81ec00052002208e0100ac0000002a4b6c45f56714a007cd25beffed9afa88eddca7e1768243e87e23d0d066b3134c6cf775e8ec26191855278c35dc217a0a14cdf2aa01e408c04c32e924cccd85ec00052002208e0100ae000000b4ce5315e9becad6779bf7bfc4cedc789d0b896842495200b47bee9f2124735d7c3095820bf66a6150fca2be8e228a8611129b9fd7d0f31b2e939ca3a766b680ec00052002208e0100af00000044cf5b594f1bf2713dac9236ffc61e6f0fc4531c3b59ba4873a592a7ec4a272c441f80a961bbf573d74c1eef1cc5d9b4d7f600222311f2f5f14e803129f0d384ec00052002208e0100b0000000ea5f1aeacc8cff00fa6abbae926e380efdf1a983d97005cf0690f39d165ecd2f2b3a93022f66849a15d8a357735bc0e0afd517eb26ff1e0c0c352636c30a0c86ec00052002208e0100b1000000549c2df3364cb08711b2c2306cd38bdd3db1f9d3568c796a6eac868762732a6219999dc5fd03c2fafc53fc5fdbc4c369e545b8bced83aa8ab622694e718f778bec00052002208e0100b200000062f0a8f69f98b4858e441f1269d86b7b91cd0d664fb2d65a82a0e6a4ad3f63756bee4338176307f54ea296f3b8ac347d18cfa0f73e24297c68c931cb1ea5f984ec00052002208e0100b300000074ba26af6826941497017b73bc9e84e217e4783030283b9cb61f8cb6fede4845f1725ccbdce6968034181ee93d346d5331866d79c0e9c09f524e430cc7c2578fec00052002208e0100b400000030132be02386ec7ebccd1fd3e482d838760c0f075f797cb202eeba3bd644b466866a4b9815255539740cb6cd659596c1386eaece4804fc9d42f911599409c682ec0000000000040000b50000003a75bb60c2f3554fd425e0a003a2b22afdb93bf407d685591d4cfc5f9b715902b504a97de708a676c754c6fd178eb84665b5fe93b21b0817c749816033bbc084ec0000000000000000b6000000d4a2ff4e9427ec3d6873d52e9944c865808b27fe8e3efca368ff587a1abe1f6934adf5a67eaad27b83f8e43d29d157967aefc83aaf186cf668374b4b90256586ec00052002208e0100b70000008cedd9e0dfb9c36ca707cc615497ec33998f5171be779c7e70c394fae6f5231180068693a4812bda6016b584c37c7dce29b8b92969c2174ba77c8fa22a45ed8cec0000000000000000b800000002ae23bea657882c09c98d5a9688de3085fc1de34fed7337896eeb5a2d73f92a08151fe65f76a12afdc165c3c94e0878f2f8ddd0bee32ec457ef22166724518cec0000000000000000b900000084ff4a018aa73497e131c6d042b3baf3432062999cf6ae2cabb4a49ba5c0dd29bd42d1564613296e423371be86276d966d025929900417c325be8e71ffe61c89ec00052002208e0100ba000000a6710bcdb2b778801cb21c8250ee320ee84c6a0651725c585415b7ba2dc20778f6cf634b962ebf3e5dbe3bcde7e7ab4a65ac0270c5e7a544fac161a28d40cd80ec00052002208e0100bb000000ceac5fd71fe1d27e10c0e04276d060011dd6c7bee71095759fe65415328a5c2611cd900587c5217a9e6a7cf48cc8a1542a0c9995f30607d5523c329d507d7a8fec00052002208e0100bc0000000009ce8e606bb9599076dd003bf57b8f4ccd1dfdde805102f3ad1336190cde5b1535e99a42c97238b2500901634f2d6d87f40dbd94825b746de1d7303d8a1087ec00052002208e0100bd000000f00da10a3286a7d47c9cdda3be0bf490fffbda51282b4589a3ea206fd8a1631b1da9b0f90d78a06d223e89cee8ddc988e4d2460b80749c36a3f138cfa75fc48dec00052002208e0100be00000008a8062476b00c1d5ee3d914ce79cbcf71225584dc6c83042e175f1f49593d24f45e023140f7e8a1964debfb70ffbc905118feab89ad48f2da9b36ec9e661383ec00052002208e0100bf0000005456d50b7d0bc69756e32135704853c7522979f64778f7ecb2f34197a9324b29c34c578ad7ef44e01dc997e3c8444cd00163a2f0afb65662c3ef6a9d53b4d38cec00052002208c0100c000000054eb169cc3e214b8a5a8e83badd5b13d8b8cab01b71348c21151bc2e56a6222cc62b0093f9e8aabe5d1027283cad6fdc5eb16ad15a0f042e2922fdc0949d278bec00052002208e0100c100000090400dcf78058087140ef203323e2742e10d21776ac7da550a7619d63b37d77919b63b5a3c8c8f25a7b7135b241949f9c745c5a6e3463ff25ff810453978ae88ec00052002208e0100c200000044c42dfb9e5515872b2d7f94e4f81518c32129d448d70324a7a8d8f6f6052d2f31e4f0ce66b60735d435e710a0b222fdafdb397bf719b9731eea8a295982958fec00052002208e0100c3000000127641555203f41c85390d46bb1fb89b2151a970adf4432c54e874c8df79651d1e1fac284219b92a58c8c5b4f616faa275db350cc533cfb342643651ef33fe88ec00052002208e0100c4000000a4f62228d14c05e1c85a9b911440b8e62c653e7dfb09cafc1d12ab6ea687331d6aa4393cf898ae60caa8695ee370a7c499a691f9208cfed082d764e8f3cf7f89ec00052002208e0100c500000010eacf29278bcdbbb1f64a4d952238aba1e41eb27b3b88397d725435010ec8011d6da4c87fac29cdd27ea2ef5caa4e9cb3e8fc5ac1d9ec3d1c7f77ae187ef58eec00052002208e0100c6000000009231b0d4262299ebba031e738aef9a0f16321df11dd0e35ca66a4de67fbf6c2baa41ad7da03d778d8f5bbd6198838a07a34465b51104bd2a13579cc33e6a8bec00052002208e0100c7000000c027f959358c67bf6b7942497a40688cc1213262651f391ed5a96b23cd5dce2e37017d465580d3c1af0c07319425a0c9579148aa6a5cc01bdc0a1eb89eb3f88eec0000000000000100c80000000c45ff5fade59005de1643ac87103be683d8d00d92cceeb334232fa4685d424d1a5e4ed104b9f11d7bb58e133e0a4b978f124a55638941caead775d8f029d689ec0000000000000100c90000004a45bba4a3e909dbb6ea6358c2e05948486e52d77de34d1853108121cd36a30d05dcf6c956628b785b867ebd91cc61cfe1801ff2846bdce7a92ea4277a02fc8cec00052002208e0100ca0000006228641db6f74e7d8b8fbe8f49e83af61901ecdb9e4ca5a1a0d59e3151058b337e8e4b1c90f9748f693b1470306f3dc31a627884724282bd0b46014741df2682ec00052002208e0100cb000000be619e4b7de3a85e324c72132c5d8ee89f664a57540dcabb33adea7c29ebac29e0d8ffab3ca7d76269abf1be84c988e785bf3ad461979a681a5ecdd583a4698eec00052002208e0100cc000000ae4055b94707f3b8f26934d3b17aa4e9634144a8a4d2e4dddc24956a3f3acb6903c3408d9480d4cfb18b84ce6b1d02c182f3de5077bb96ac5c66553b40848b8cec0000000000000000cd000000ee7db9d55a9eb4ee440f2949cd2af77f40878bb3edb5c8d0c5dd6b99773f8e559a120a97a9c5e2463ca95a1a69926301f5af28d187fc81aedf05da0bc1ae558eec00052002208e0100ce000000d0295b8509b0626a26ef30a23d422344769715a1f5456567877208d166a23c6a1ce7dd7e3d0811954d6a186d6d36afd4f37d21ba5ea44c559aff8f3310d0918cec0000000000000000cf0000001ecf4c593537b2499c8b989d9249718dc08d7ca0202cbdab881260bd470b312fe1621aeaf63293189489947ea63280c4171e4338e28bcd90a0c9019aaae8f88aec0000000000000000d000000010c3cb4550b513e13f593ab17ea956e327889198ec48b1b475858fa425d732462c984319a949054e6f5561ab4ea25f0a1bc144ec1dd49008647d62deb29a9786ec00052002208e0100d1000000e009efdff7f143c47d6cae361b4909c19c0c9f8c082ecd025f496f65f8e9533ad3c5ca4ca771c7b994f25c700d1d3f4060bbf3a65f346f0ac5d1a9d663c7d083ec00052002208e0100d2000000c0022be02fc3a9bb5d57746852f63a7fb1bdb7d3d96480def7d8467cd326530f6c048910c5a8ebc78d48222145704e51af57a81cfaa3d01466c4bc6f22b6dc82ec00052002208e0100d30000003a937d4f116cd5b59e3e3d552c183183c9dc104a8668bbdf6076c7841cf27215b5b898d2f1989a832b32d34d1fe18417ba4dfdb8da26dccb07a52111fa6da280ec00052002208e0100d4000000669b21f4bf87d7cf6761ea5ca4a75bac0952775374f2e570123d66a7dde9ec519ffd1d44f9422630b67f4f876cbf5d9b6d181926709eaeff00791e3c5e39808aec00052002208e0100d5000000ba91a6c5f00840b4364064598844d826953c93e8fd726b20dea248573587ef5f5f305f4c843489bf2f74bbd5da6cebd37f797ec39766964c049f68ec8c690d8dec00052002208e0100d600000020df820a09f72e535853a862a923efaa4e8bfea098f3260a88b73ecc7a3d7623b9eb66879b46579601526948cb8290121633d30c9a43fc93a34dc3a7a5cdfc88ec00052002208e0100d7000000b233b79c60839cfad266984caf260eae11b3e517af3040fac5027087e976451f64b068b090f3e3e9a8bff58a55d8c52b7b49e189c5f36ad678804212dc780985ec00052002208e0100d800000024df0825818cd3f753e3738a49978b1a3bb23d3e0a8909248b630feefbc43d38b860516bfecc103f7543ccb810a3cfaba711ac9a40ddcb36b0c91f464d649d8dec00052002208e0100d90000006e76b1ff5ec597a92577bd3bcd456727f79475a00e80417b05857d536fce7678c4d2bd22288e97d972d88763b1641334f1e715e220979423f74ff4370326aa84ec00052002208e0100da000000d6d2165f4067c2f7c1036b2c36c0bc7e7cac3f4d83ad4dd7892c67594dbc1311b650cc5d03aa5917c8a40df2f63df45a5ea8c7b3b05b1184c79dbdf12e298d8fec00052002208e0100db00000058c2c9cb12e2a15c573f7adc6779b645b99747211fbe1765848a7ec6dfae1c6ad77520e6ccd93e6f540e72fca8f0ad226dfb295ab59d9783a6b0bd77083d198bec00052002208e0100dc00000016600027f0ced53a4be72159151a498c33b084dfc4b626114dcbd926f1bcd4650361758c0886db7726731843154a63b561f6b0db5ccf2b8b38cd8f542a043e83ec00052002208e0100dd000000fad324a290a5b9240cd75563723c7177026a91352362daf0ec0fde50afe22c5f35722ce43bb3aefbe741dfe7323b6facec16a79173595b7974d710598f84c78cec00052002208e0100de00000018f5e0aa41c41d9cc0acd717670ecf7986e4d02d99a7eba44da7b0efbe7fd960651012fc2a190783c078dde33c5d82b3072807bdc5fb3bdc6b1ff854bcf5488cec00052002208e0100df000000d2828c595bad664e15b12b5444268645c54548287d740f1b212cbb7c4017310a28c22416ac3df3a9825b6e4acb92ee10bffe244960a619d05767e3f8e2b6f886ec00052002208e0100e00000005c0a0450b7cea30ed2222c70fac1ae666323ec266872522a3fc1fa35a7437e00d4d64922d61f8f6d695ef209b6335293f8318d3ba846340e4127fe1fbf77f68eec00052002208e0100e1000000be1adee854a8ad437793c8c8164f4bbe42e77f04bbe620e8eb7ef6822779475280ccc0bcf112511cd1c11a5f95fdb7fa86fed303df58ae65e867efaadb25bc8cec00052002208e0100e200000074ffb0779ecf159aa1dd95a3ee447f9d1c796e3332553c825247aa9fd0b6a7371eeb3c0a3d10687757a7354e659b7777f42a73db3852fadabddf6e003043f389ec00052002208e0100e300000006728c6e2fea550ce35d0686737a262303b86db6bb1571889df807e601fd332eaf2a560f869dc528bb7102d59bcca2d567cb301313b711d5ed22c732e1ec5b88ec00052002208e0100e40000009673a76ad11e52893e2cec4b4877392080609c0830e8e4f8ec3f5cb088f2b924e8a2e632fdf64660e4d47c44a1cf9ab256952a56cd13a62f394ab104c7aeb88eec0000000000000000e500000000c3d96a3a6ef4f6997208de8f3f2dfa5362ff9d32236116e8b74a1f2488cc7f585886d393838389d1e249081b0482eeb7c5cafc4365672b66acd4039dc9a089ec00052002208e0100e6000000783ce181f707c0cb8e1715e598ddace41b32386ffc9490b2419c2dfff49d5d532c4618e57d3495054799424ba267ebd3600d165c19743584d045b384d6e50f89ec00052002208e0100e7000000a8aa47b4148030c872e74d15257c5623f75c9d171a6208bdcbea13b507fba6478fd42eb6ecde64868f5b2d07937a4305758a65feb3f8e2175af3541964c4d884ec0005200220860100e8000000f665c7ba50d75ecf1bf89d81b8573dd046feef2304a06ba9e44e9d4d44e42d7009ed1c1d53ddc4c8362cf3027571783566e51180709ea66e71079f27d27fbd8dec00052002208e0100e90000005012f73445b457495f9ce791acf9c0aa6636cb2537ac1a1f39d8723d1b429248a3dd564e1c64b7cfbc9504d880e9c80f00edc0619c63c3d2b63c02b82ffdd385ec00052002208e0100ea0000003602b3517514e70a53b194ba7c2823a02d08dbfbf24293fa2bbba2caa3b094104639f6016785a9fa31435964b04b249f118ff6faee9a86dbdad82059b8935081ec00052002208e0100eb000000f0edbd7798932ee03dc6e6c1c8c0c267303a477de9aa05d0246bea217cb22455b558adbcccb62fa350c0d439301f1b10a5cf16f40ce163826abf68863beb798bec00052002208e0100ec00000074a3eee6c07d0e3a8a49a8f435cb72f912175b49c61d8d0cc1f0a166ddaffb1f517d5589db01a0aedff4c9ff90d464e75266cb80930c4ec423b8e7154e155581ec00052002208e0100ed000000ca3aae315a3db0dd4a845ba37f80c2f59370bd2d3e301c3ca545d041364b434d305b3318bb8796bbe5525df9eb26cf7b2991ad95e28434b64d3d23bd84ac538aec00052002208e0100ee00000048e3e39d3f8368aaea9980917cd91dc144df0cfc5744bcec6b1c5bcecae7f46051e84124b42229a18f0697aabc572347ad6a29b712f947ed3132050d147de183ec00052002208e0100ef000000c663d79d6bb92b2046cbe9e4b068b0b91fc3e80e6606c9295903a19f8e4f5b50e167167115cf27edae09529e6ad43204ff381cb6a7df493d9984a65f8ae8cf82ec00052002208e0100f000000094d9dd373fc3f658a100f9cc227a31072f39c83111f46526fdc4cd4b0fd3f856c0f89022b6001f6a37131e979d7cf2ea068228e2f1f4a53cd8d59f337a411b83ec00052002208e0100f100000078f27a06788790b27a836c8100c88cafbd971f3a93073af3492aed44767e424f99bdf75b4458ee3fafc465e9d874fc14be3659322fa30a35ab3c0f1d2fe84d88ec00052002208e0100f2000000dedbff694ffbbb14d6621effc0657f1b8701963ff519495e345bc5a09b8d450cd941055e8b62ab765866246f248f6b42a2bfeb55ce2f199797d1abc1e1c39e8eec00052002208e0100f3000000767a6f8efbd623c90801fb07694ae27209f1d4d94ec442a16ab3802589c1c90564300a1d1d830f774ce408143bf805752491d96415ab4fed71b1ae76d2d54285ec00052002208e0100f4000000542f0e55f0cc2eb6478bfa02a920a2580adaf99452e56fd7d78d51d3c2b0d01830a4feeab4528288c81ab9219600c25296072e908a4ca4fc3dd31bdfb5b12080ec00052002208e0100f50000001ecc907f514032c64810b601f360a02ccdd4c647533d4398aa4a4195f14b971c98fbec3600d02bdedc8383d40ad508d92b06675b5138e9b76c9c68c6a8ab2382ec00052002208e0100f600000082dc14ebe8fe17a36512282b76177ecf877d8fa72199da51da9c186cff352d4bc655f98e712782c375948e595ad0fdd8283f59fb47f5bae17648c22ded9ec280ec00052002208e0100f700000020c19344c368d0d64e1a4027fddf04c082bc677cad246925f5f64e7cd6f32a3cc0d0f0a6b3a84447aed9cc2905b115723e5bb04af41f831038fdf8c26d97808aec00052002208e0100f8000000826d7e67bb75171e906233cc03ccee9d155e3202be83503f6f255f598405621e917a04a3327e28efe25e696d858a69828d2a62c73399ce623693e53808c0ef83ec00052002208e0100f90000006eebcf748784126e6f0d7173619b169c6febe938501746508cb0bfe467614a23114bfd8de4403a75927bb03d26aa14ec25d810cc7f53506e98b563ed63a3e187ec00052002208e0100fa00000012472f5b88feca04438ad261bed3fb1bdf62a40ad9f4b49b38ec9b321f2a1b007fa5d4d0564c9c9bfe2daeadacfd747c46f03608d55cb112d50499f3e1723385ec0000000000000000fb0000000eb4ee973ca2b14199cdaacb1c18a53909671a61b1f8e2858b07ac9902cf2172167134d3c187a7ba635da45d08600ebbe7aba8ed6dc58060b27311ba74e93686ec00052002208e0100fc0000006e2b5ef58e6b6a42dca68446a0be0ef6b4b665e1f88d0202611e42377f08882b7ab4a47679511764df60f6ef7b56762e2ea24ab4f1b121a068ab68d5e027a78cec00052002208e0100fd0000003e141037787e1598d32bf21c0a3587406322001eefd36feb2145ad08f1158b78447352ba0f7225c8a8b9f8de52cff6c0870155458644bead88fde57884738684ec00052002208e0100fe00000018cc68a417e58ebae015d3718587035c37b21702369509c85e78a68acab14835105de79e20eea79258c51037f40d0da4ec12d985819d60fc0d540cbd85ba6088ec00052002208e0100ff000000cef886a8fbf14a6a4c797a70a62b827f72942b08454610df420fedc48e8e7b5be21b00d6198a4af872195a8ac43a6cbae304c0e9fb0915449aa0687fdce5d581ec00052002208e01000001000006ad32ff0b71652a14a6ec19aff3acacffa6c21e6a3f1488d8930c0e9a7b9030942257468832773447224905a64a16f2f4d091b81fa51cd1d2cb97f56e8ef080ec00052002208e0100010100003629b8b01eada739c2922cf02cc27981588f3eba59c07f8ea1d1fb49bf76ab1a632c49aa215bbaaf704dcc05d802c4077ccabe2bd0245f24a58e030882a6628eec00052002208e010002010000363fb2defd261f018391dae32de1f932c432bc1faeca6cdfb77ae72d14786c23f7091901e8a047f3e58eb9ef7e838e07e47e31dee3509c64749ea2a02de21081ec00052002208e010003010000d6c74eb85fd27bfcc0ba0e36f9754df2dfce824fd0a616d0657569d411d55071fe4547fa6b6ff73acd8c87535650ae46ce7bf1eb9527de8aa0b05b88107bbd8bec00000000000000000401000020c7b50e9e2dea1378ad927c437681ea649f984f95d7fb264415bddcf3ec645c92df3b242bcebd809b12c7095e16a1ad18e97fbb7d20f1a8acd5dc1faa4bcf8aec00052002208e010005010000ba4e36b96b1103cff7a8348402177975cf537ed6250d8200de3fc1ac3706870f68ccec6fa4077985cf82643a7f02736d4bb8022dfb7f264fc1613953dd1cca84ec00052002208e010006010000dcf2244898bfd03cfa5decb8a812db3f3a2d485bfd84e31e8d2a6a39cbcede7191edf39fcc5f451e5f98c322110015751e5fefb7662e8115cd04dc2a4a48ca8eec00052002208e010007010000a2ccd6d47ee58b9d6c3f0d7efddf4f3ae7fe2c293a3453abb450f2ac5b91c6711560908f531379730cdb8351ce5074686bddd02e1e88ac221efb600f39610387ec00052002208e010008010000c8f1852a1b60a232c2611e18445a3d5d4530fb5ada0aec17e36b9ce43229de115701e97956bbc998b22d2057e01a8372a8d5f0959e557ce615cf5501d81ec48cec00052002208e0100090100001a391644f9797ad9c016ef6f455992a8b02b436523421a94e7fece23984f5405aba93c467b5839bf8334f9cbb61a588bdef9dded47e56b2a4f0d1863c48d2d83ec00052002208e01000a0100008496ddd211515e8ab56c1b4296a632523e70e525f1cf96567f44d08725658d6bb2de87edfcf95e6bb1089013e6738416ffc3fa500d1c5f50cdd8d65aa53c088fec00000000000000000b010000a0fd3b0b871fa7872a5f329169e336cd64672c3e8ff2543ea1591b1d0778c40603f5579e2d61dc4f1fcd9f4dc30ae3b5e07087b66f2630dfd263f09a9209828eec00000000000000000c0100002c609220f6f4297b7c01e3de3ce673c7e091ebc07621089aec06970bd611753563fa255dc673ab2a1a49118bb162ce279811d30ff11abaed7f97c174ced29583ec00052002208e01000d010000dc93ee13068662c57052ac82755d7356d6a321ae3fab90e7d95e5ed38edbc26c2f8afb2bbdf255c68e52eecc90fef3986e7cddbc756d8fc33344b738ad2eb081ec00000000000000000e0100008e050ce7c31131c1edac284515333214190023e9045784435833670f26447e24bade957f94dcde2d407e689d81f4fa4d9e012f0ce1d828d1a8d36a249b60988bec00052002208e01000f01000086c4ade0dcff2fcdb350a4f8e054aab2be34467e280fc12c33523d5502a2b70d91346ce7e50444d6cd99b1f915b29ef73e079d885f528b229ba0726c09b7c984ec00052002208e0100100100005075eb91b2685ca2e3f8d6c1e68d24412add228d8feea0ee6be6c6ef848bc167d95bf844457259260c0edf18e9f33e6bb4a9b7918ae173131b9bc7357de8c180ec00012002208e010011010000d45e7c2f98d7db2ee6f1b1c0e0d205880c2e5c6d03d182a022592b38f84b796efeaf8beda6152a524f2910ee41825a58de732586d04d856c199c6e15e0d92083ec0000000000000000120100001eea584602564154e5f1dd5ee0852b4e4d4eda2caefaac9b446fb52351cac62b2a905e7baadf359765f3f1634dfabfb7f8a150ec3c9f86f12b3f68639de45488ec000000000000000013010000182a36466a12d563aa712431b323a5b18da538b9b8c8c7eddaa389fee21c724c9d3a9f499843578dfdb1c0baf8c8c17767f4f0761cf399f107f5909fc8f55783ec00052002208e010014010000fe15dba080e60124725473722a8edc89033ef4d67350a3c0a0fc0cba85955163f45c115e807fb1997f5f1650e189e7365db537cda553d8058aa3d0ffbca85185ec00052002208e0100150100007a1a6c2cfa75f279be3b07b5d8df318ae277c41fae1b4ff49e53c01163129c10462e1ca50f835e8161a1cd3def9b8fb63812bf608dab659fe383088f4bae2a8bec00052002208e010016010000ee96b2f82b060efbe96a3a2ca61625b82d170a3d310b9542e2259e003d7a474fe393dc43cb5a9133f8fa431959cea8787e7b0919c60f32a55ffa8a49d01a5689ec00052002208e010017010000846773b0b369cc6f20dc3ae9d2be409a4d18df23d5e1b500940681783fd2ec4bfaaaba8eddfc97f47064c9bc3702f90e55189a3b90ce017d6cec239da88e0383ec00052002208e01001801000058e1377800a06f095af877e201caf84fc3b888813436677344dfe77af0c8f65d93337586532ef9456f9eb72cfaef4e8f737f2656a0f6a2f43292077dd43afb80ec00052002208e010019010000f4dfd932afe733562ad026a3af05368d5c7a8def2915e23d1ce383c37454fc31f5b39d49ae146ebdfdca9e82fff54c7e47f5ec2544738768954dad5d6d76e888ec00052002208e01001a0100000879ba2161df4f89b8348c32d8c45eeac5dd127f124aaed4650689e65fa75356122e52542e96cc21071196487541d57f0ddb83bbbf24c4a1190415e7686efe83ec00052002208e01001b010000ca68f53af4da2701ac4ae73153050c82fc7fa0325d709e5940a859278ea86e29a19cb822dbc92304968badca223c444f23f6cd9f55833e77b5a5f216e55c2b8eec00052002208e01001c010000dc70df1a79225b1d0dc330d3ad117c52a73ca6a95d0ec7c366e631feaec50f7d30a9c79c4f93efc734a7bdd363e41ef85945ccb79d418e21aad2f15be99ace8eec00052002208e01001d01000048c6e867f05a4be08c1c70eebd57f875c9f731e0ee5a51607413b1d0979ace7dea6a3c70b9e2bd3af5bc8060198b0d196ff46264d866912f6f6f02f68020848fec00052002208e01001e0100009e083cec8a23ff3cb7df504e41eaf0f05a9623ef087564ef83babde667349a73a1e20233065e9b624541a1f3ace4fef6feba1abb1c8b9a8c25620d1157f0fb87ec00052002208e01001f01000016ed97d57bb01c731f6a4a8ddca62882c3820b3ec211f3f113e5d20b90a53748863a801ce4d2d8a4a5df468929b9c0b8932861a45a8d48cf6c707fd9aa25bb8dec00052002208e010020010000ba34e94e3cccf6acdf274227603a7b26087f2bedb39c7482d68eb6ab531c166a4baf97d9e240e824cc0b5c4ee93399d248048fbde916d50ff99ff4f644a90e8dec00052002208e0100210100008c1af491831e692f7c5b5c5adb4cbe43a19b9dcc60c296cb7234297e70ec840af5f8521f965c6ef62f33d03fc0acdd3e4aca3fbaee75da64252e45a78be28f8aec00052002208e01002201000072cb87155f9da6db246f1ad5e01c362bb39df867e401fdd2ac9b881dab14f33a5e581343f19a997b08be8e2bb75d5365708a1d09e5df9fa5ca7e616319008e85ec00052002208e01002301000072c35dd09081665bf2a0d95104e57c43788815ac702190561189937de19c0c560074ccf2623c8c9783174b0c0f6d3f248d60da8271f54c5966b9b926a53f7b88ec00052002208e0100240100009892dfe8d79361a99cdaa93e5d938a5ed47bc973e5e5e5cad72c6c755fc14431eec5ed6ff95051ff8b7779de4a87bdc99274720787179981956e19fbafb5728dec00052002208e010025010000c0554960298881c7ec8ea8d94364263839c03a1cc34bf806812ae43aa0fb2c7a033f5e2c041530e242544883da50436f98031c66ed9b6e66dca67b46d3015280ec000100000000000026010000cccaf85b44b561704a49004eb83e9e6f7aec36d6d4c21e82004035a7a3fc3237c37fcb300e7c257d65dd56f782654dd0a01d477b01ddaf32dc51aa1ec0bec18cec00052002208e010027010000e0de79a6a474be53fc6793d81bc6d01d4ecee1b04c1cb44f96ae7195125c9d137332afbfb264139bacbcd72514dd2da9324aa3798b0c0a286f4ad66cc3a3ab8dec00052002208e010028010000e8f5644a51046188aea2955ac89dc0c0c902ec5507287525dd882e40b9575a5a8a471f70ed1c5f22a88a8758f82c3b54305a3b9bb33f7e6b93914b67cdbcf58a84e8030000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dbaaed146f7e72a5b8305103c1a4143f19f0762e75af417ef885f2180de9011c408acbe01a0530c3023c0b5ed4f68f0eee37c59c342c5d2aa47aaa12244cf24962054e0f6adaf1e860ce3c5bf4ab38838930a2f03b9c030cac35d7868031cf16e86e0fbaecfbe5c491acf70c33355573e3dd2a1afbd444340a953802a724993485da8cf8834b9bddaa3e3412b0413a12cdcf3c733aca776af693f7ecae724d4120a68e534e0a2e55707d69d5b4ac241a6683518c55872fcffdee9f9ca86f868fd8432b2f4f0bfd1ac70c33cb0d204efd4677c73894afe4e7b8a0ebcb314e4480082900819e15e68e7049b79a023ca0882a0a75fc71fb0242f7e7a7045f19ff029f40000009103558a8af3cc68f8f69c213419cee4e7215ce327e87152692381ef07eb6eb412b3f2668901161cda9ce6011d3c8b0db79446b068ad74d6856c4afec0d45fface760c452a7d5622bb7cb0b6e9060075f9925a225e7df61ef25ff4bd7f439542f4baf72b6cdd0c0661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b050561757261010191f4f99d9ce6e3b3b035bd2c6a20a6d1f2e44605ecaddcacb354fd5e248046f3d041ef9eb758444b3a0a7ac3ac67c814193cd6a2591eb75368b88260f333a90b00000000a7d742011402d468b281574091bb266efea99a5b949a998a9ee4d775cad5f4ff0c9af04cd11cfdd2e8e77510a7f3d87fe52160688096031b9bea34b190cac53f370726dc02830250739e2ffb1e91ec8387338890455221f01b08b90cf65b188be6388634744f1c294ec92d54ef3babcc0daae5e6e2bcbd0646ff6b823c6432d86180deb77f998602d67aa04f5520f8dfcf4b713ab53c00f153b599e092ddf342b0fd7342ba5781459022fa3e5c6f98b60d9223000eec73d9ee435c09565ac6c22d9c5aa4cb08c98f023877ff5a832b965d11c83e8fcc2d94451ab572ed52aef1788c81fd61b4343a16af72179d573ac5414a6c433619c3d9a4056eef7467aa5cf268953a2c216e64890188991c733b532175575d2bfb2ac5a767cc4899c4440d162215b649973a934103d9a84835600258ca4086b4dcacacfd3a2e9c38a79e153e1ab8720618fd6a3e84141fe9030000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dbaf6f2d53a8f8a4a76a62d9d498e4bd1c43f50c44b32a871bccd909c2235d79430c404b5f6e12e6cf2737d4fe90bb0b3410be1daab61c46888aa6529b5e9d126ed4168005da8dac2c99882491a689e61a54c50136cd4a4e2d92b2600b3a13bc869c8c9872a4f3193b3b3816b1283fb35af58a7e26caf812f333c2f47bc85601ae6400c30e0d3619fb838eb5ed68dd983f2fbd07b66f013243f2770f02ecc97f37804d4df0788f2974d11527dac552b8540d87b231c7a0be314e25aef37073c5c82c68195527813b67a47f9cb959435ae18d6cd285a3d8103b6bc53a05552aa25feb3f6fbf527c3196abbbd572f2e09a4fa4b606f61abd3f2f41059fed5f4aec9920000009103e77c8aea0ab6f3ccb5253fabf3ac5959a2c463ebe31f180e7cabd7cd6290e53aae8af20066a02b538ad876af30a4040f11d9465492d73e31f6c935fc1a60edca6360291b63ab58815982373988ceb97de133b42ffd4ba9ea21ea5ee496f754e8deaeb52f0c0661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b05056175726101015c94639016868c9adbc9b3631ca6526c34f82fb71e9d62681febc40a50936a05ba4fd208ec48a9b4d181769d5de3804e47110d3671f47909a8ab5439f0686d8700000000a7d742011402767dddcbc7aa7a3aaf190ee133b12da6cd1054833c157f7bc46bf6a7fadd85021854edbee18665c968acd00f7cc638e70fa33849360e52ffee101805f26e5580012c8dfefe917c2644f2a3804c12dc01282859ad4a4077be89b78c6a391ac70e73ef85f6bd711ec1010797d11b525bece35ae872148cb229a6ff39cefb08672181023c637978d2d2a98d4dc97f20455fe38a7e015bc8da349e3705cea1051b5d7404fce256488e17058c54563de78a70f394f80fa1e39f166d3096968d88e0b9ff8b016ab9144fe32ac6769bcec1d0d48e5af867a5354709463bfebce126babd8c9d711781ca11587556cf8c9f4b03651134a1a4c38e651136d3596ea963676ce2818402527f4df46ea8ff4da951d78245dd5cc78706f6584c19ccbe86389105b3d06f7bf7bf42028da88717703b8ec3a918329da75f81f181c00c430b8702fefb130e87141fea030000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dbada73e6139809a83ed1205b14d496e36f4e8d70eb21e001964c3b66e16b277f01c27eea88f793f9b7ec7a4af05b4b0e8bc7e50966e648d81025d70680d2b6a506c7fae97d7d6eca587e521268a1f10a0605cc94a3af950849c8e4676d9d19ad4d5e5b8704bc84ab12cb62eeb7b3d867474f563d48b0c7c442c2f65359c75d989f66c975bf3027499159a750f61765c042a30ac321ec7fed80ff277b604a6aa0553bd6ef98e4ba09837bc9963538c3e77dfa0c4805979d2f4558c8fe4e566b8b878ee8d1a3490e3f69abcc6f607e68a41136bcd181aa6f33f332b0a63e33996dffc1923a9bf561f92ac6047bc8ad0430b22848026c481fa3db76e67ec77e504e6300000091039c3b05882f59651c5c1e5c5d22d25893b3ed602f2825d5c19c5352958731b54b6abea800031720d40604b974f49b17464ded8be9123e59f93572456c529bfa8c3ba5433e11ab923543c69c3dc37cb19a7db06e714c8151096ffa99ce792fee6d07606fa20c0661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b0505617572610101e27d1f1962513adce226753f2e9aa4a0f759ccd1c6171e6cf615dca276e0a45c44328494271390cba1db41dbd09be97da0d4680e0403d7345bce3f7a02db958900000000a7d742011402446f96e5884537171fbab68bb1814cc8fd00d4f506e3e70c77a5d6b3260ff8075f0b78feee3b7785bfe3ed57f8246ebbdeec246caffa4491d3158b06b6b4bd8001a87bb9d516d64b716a07e3879d6800a9bb1eb2efb94774b1b40c71c291ebd96a1499742ebcecf3d2980da1c99f6b5b8d44c9818058c59e10f067fe82dd089280029cf505235ac8ca8941f3fb097368521298da53f2f3c27b8ba35abb3ae6220966d0746f2e7e381217646971150e434d5e143a35a9c8e8b5f7a795cc64b88ea78a023ae6ea4b894773d594a101caa8a5eac95d3d7810accd918678896ba15ed3200b67f17e389c7cf65cab5066d9c2bc85cf25a5bba62903f693b9538593bff6fa8c01124e6de002a52619d5c33292ae1881625d1ff51e30a2a17e6d9acb2c1a6282756000b3c7f7b2fad5f383cae22ffbf716a153b0938b9913427afdb52b4faaa98c141fd0070000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dba46bc3719e92d8a5049cb5be69e99364bd450185e28b7f6f3e1ef4c571fb1ad433e12701fda36a6d5231bf0b7771d251ad4604b2636bfad02c119f9a977c98c0412de8bc530910f42b5b3a4e2ad64499b4952f0087d43269376b883247df0cc08804f4ca136b3d9cfb3b9675e4462908644a071606106f8bd5a8ca3be58bbf07cea42bdc13bd0a3b01cf2b7356df4f0dd8e101e8b9b91f749c2e6a25a9681476234e92fc6054ea8e1ecaddd5bd76ea6a760ed778bf6f3383333274c3b79517189f4914b7ee4d7b6e8c80f3fe9a6b6c3452bf2351f28d1154490c70a99173d432773eae72ffdee319a99305e7dfecabe0db2eb6b24998997eb7b99cabc412915f200000091037bbf644ae0b00f0214146032e98e404e01980a20e412c433944917484418e98bce4484012c45c377569f8703185fcb87e328e9e05c5b65bdc41344ae55d52099222181fcde7b92a9f43978fe5e4abffd060e97c8f995f81e110fa8cfc2d0d210f3e7d0080c0661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b0505617572610101d48ca2536f088127f6f3434f56f8b5aebb0c72a19f8eedbb27c27c8e818abe4a907027acb6e69b2e68efae8aec4bc6f2a90cb8bd6aaba1654ee9c2dcfa53528b00000000a7d7420114010af16d74b98d4a2f579e7b0b367e1207dff417d661eb00e2a691c136dfeb2f351ed73c6577f4c0c5316e8de4cbfa98c746751e8df6ba8c49b5d592d4d9351b8701f876432313308c503799e15e60f4ff7ab6fdd55990a2e75e321758422d6b6e61c6abab3f963c8d8b4607e37f20e2cbce77e46998ef0d1829304980b86ac73f8602168a596f3596a29f3d233c8091d2959fbe21c467364d87a0574f27522fdd9372bf1ee7e083a53ba5fab5715824947ca6772b75ca1da21953b7d4db3221a1978a0242b401451c31e2ea5c9f868bd4791a202fbcdbd97fc33499dab56ed29a5ba738f0eee5be3a569e1c7a3c858e79a009bb908420b86edfb860761c54e472ca938202b8256effa2fc8b2add2e0478a918afab8b561955a684a512b54ef6e19f8cfd45e76b5d85283adf016d78e5b41e5a49251f701d0e35a6177450bc5a6636a0ca86141fd2070000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dba86a1d9d93650dd1a334920f47464cef03fefc4417b76f473c20a0d7db595435e40b276976d7d5824a90f8a8b706684b86d98b5285f980a14296b86c3ca430ac33cd412e644e91fcdfd1503bf01ed484243d057ec4513e7ed8fc97411362f8d676bd2f394a000196a65eb50b3cd6d5d606c9e943c1c969649d6a3575943d0bebe28eb2da9e3a3dbc5f9161ab12640a0d96f5ced401c8b4b2d273172a7e621c709f1e04c32626551221c1b4e80d8f1dbde4bd74ae33308e1f58b3b83dc5ac88f805b0cf9b5abafb659a34ebd36204f37d536f93450076c75bf1ce1266e0dc30a8132283647ac87830d1b136bce5fe3bad5acba67add2a89f005497d93fac9e5d2000000089033e5b9325bdd66218b978e0a05ed1eaba5ecd433b8204324425b08f18bff97549fab957017532ac8d085bbb450b1e91fde9a8aeb9aecd6a10e24cda9f9ef76d4ba3e3f764b87772047439598cd11d3022d71955520d5e84267471e7f6164e9ec662a6b32f0c0661757261202e2f1111000000000466726f6e88014fe3a0e13de69710cf2065a99e01fb901e27eb470d31aee772fe35962518f10800056175726101015c9a0d6ccfad09906c9a84c190905bfc57ab1c47e8865fc799fc60788bbb6137c2f44ab93e6a3b58236500416dba3ea81236e14befa08ff701a433a23b84eb8800000000a7d742011402e44918b44f82fe59a9677471a0d6a47ac8228f6ca6a6755b1848174b70fb53148210f0c149c6d30fcbad8c2ed075f175661040c0251d5a3f0a4ebebccd9f1e8b0284d3e8b30b5e5b89f3ad618485e896b6a4c681f88b8dc83fb5280a0218bcde028e66b169538f88bf7c76bb1f9bab6432c1e5154636af0cf89ddf5af1d81777830270def37d1810d3d4fae582fa0a3787148d711957ccb156e3b889f4ca3e6d376aca5fad2db8d5ae4fc5c811fe86bc2ae084d3953ba60b2fec5d74108a93829e8b028cd3371d1279f13c2ee96d0e1549a665e610bf871db3781a4044e78c7fd80874be66844e16761fe9402d99c6ca1c6148c21b8d762ed4189d38169f703147848d015a77690713ba79737f61b7d0eccfb2bb0e60f642511c9ace70d40499cdbdab46ac8488f182f0066d3b499947118247bf247bb20018790a8e12ee995ebad55283141fd4070000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dba145e0eb138fc65793e033fe9677d532fe3db63621831c3ebdfa3130badd2864ff6a9a952c308d4f59422d2d8645f3525bc5df010ee2794a7aa0bd2a17e5eed760714e7b06e656646d97a847f164efc54697c32d12ae00eac77b0d278b493fd62256db4b4a74e4ec746e500205da16d3b2a3e5dc5a385c6f3f5d71b978a498fc2cad9c10006db3eed99c53e167c4edc68a47879d54ed7d6ed7e688602f59c6f53d27850108bb4b35fedae75c47e926eb7b6eab815e5524ca7fcc6643c14c7c7850fe44c774fec1fca801d8d9a69a9c672b75ecea93772f8f138895ecd3e4cd86412e2d5e2469bfaf03c35591380c54691b52ea4229ef83a6e2daf5398aab96608000000b10846033dc8e0b5e7a2e477976a1e9d06d781b3ac103e8d205102aa82ad5a2b90d6ce5783013390df44fa9e8a70e6265928486f83b213b792cfed4bd1c96e76a85f6b3dcf3cdd89abe9c27f55ba59b653d781d9e6277e49efe7ce42eef15b5353774f3dce4614066e6d6273802477b36212aa4bc67a32c5e9e78665654727e045bf71da00f6ec3713dd4bc72d0672616e6481013a4b4e6bda671106da8ed87a47905a0b13e248ca7149a0b2acd9633710e97e48bff2176faf46bd096e642150ee0feba14a7e559475c35e63df3c9bfc1a555704618cfdedb824d02cdfe190bbe3fe3096931e80148cdbccc964bb95c06dce370c045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b050466726f6e090301e4adf1dfb2c5798d6a7c745856586ada84b76314a6b127635355efccae93549e144e90e4c92ba72f7fb9fc3496e2c7179a41dfcc8771959de9267a7f6ac63e8d95803a849eb0f9a4e4a69d045f4403407d284b66c04e3efae138dd86b1565630c6b3869d52961ffaec7839778c483874fcaeff0db8dbb4f7d7c1955907f12dc2cddc31d740a148dba7f38397560ca26d73999c0d0eaa0f4e477743139ef89a2cefaaddc94943a06943debfa2848df6d762928ed1ae5712be4a94bbc65810b862a3056e6d62730101ae879086ea33c61dd4af466a805bd7da40761d4ae7f4d597c8da2834b53f1223da0fa3de4d4130b4ea31ba2e3fe4af6cc7e2b7f65a0e4c8337315d036352888700000000a7d7420114020ee34298bdb8b69f5d2c4826a8a76a2e217279849f3318c184452a691bbde2675ce58821d60eee61c60e1515cb0ff63eddb3d94784c39382d4849e04f392228c02da53fd5cd3f6ecfe5c6a566677c0bb407c6c59dc5a9c38596d8aab3ca7c1ed5a7116b6f96a3c5f0deff7f67b03fa92905c16425b6f14656fef50e20dfd53658502544d2ac73708c616d35d081a642621a86c5345d8734b7587b43f2a7741b72932112f5662020aa8691e216ec2904806ace04cdbaa7c52f98d8cc0aed87cf3af8501ceb14776da275694964397fe4fb0738cd808e8be8a69bb8de6e3d78c7a18c8240526703e91e35ed38d495e5d33376cd48d6da497a18e59510500f6b770edaa8e01aada594fedc72602f6657605874a7419016b5de08e0088cca10623b14e77cc4fdc650bb46d1d9f935ae12f0bddb849c183746c813af4d9f368dc29bb4d9f568d141fd6070000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dba92a4fca19a836fede93a3a79dbfa04963c91071635725c172b78cfa83e86542315caba4d75b05e34513cc6592eee69e76e98cf595e8b4b95416a02cb5f7a5321a9245f35f8bac9dcbf4e65b8642645348ee6e2e5122b0070f9f931b28889b94ec6b38d87da90fd962cf94fbf70338aa37fd7894604b1b1414551fc9487738b6c7a0e1333dcd7bc710229d8a9d3b2887f52d9b006fe4025713513e91dc8a6e868f4957f9f63a10e0674664fe0632002b2ddaee20b680bcc8069bf7f09c985f48934ab0ac09a978479b889fe7a04e9a8503df0fac5a81e40762daf1a7adbb48a831cad53865ce25b86e09b1b3a968b9779eaaa512df15ee1ee47d7da555c8fd1bb00000031044374503054cae2f460444c8520349d308d6db8ce60cbd8dc20800ffb0b1a8a40d23a84015d6a0b9d1b6b80bde3989217fd6c0b5f508a7213879f274dd2618f358aecdc477ba08f9b52352adf6b2509a3def0e7b43ed5e140b496f92c4025ba74083bce05100661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b050466726f6e880194ae2663e511ab5abae99f8f29f1370ebd9221a10ca7c1497a8b1b72c831d3ab0005617572610101eeb6be27c182a0872444cffcb05806df7426adfd1286cf509700f6fdfee63c4964213571856987889df55102b4b5760bc24e6282cbe3e08465a3db791d8f178000000000a7d7420114029a3e2cbfe46850f5064e41c4b1b355c7b8248ea459bf70149c468634c953243a956ccbd4700b0bbe40a43a42efe2e61e1f2957b1d95a40bc4c2cfa904529e385016419973ab3a0941d6c397b5065b641ea89a4eb1dcbd92c22637b863bcc2e06735be25f22a360df8f52986167e84a026fcce3917a72cc8c7a3dbe9d64fefdc588012efcd44c195fd9118ff640debadb060f360a0ae4c2bcf0cd3e498c46c785122473c51d82dd556c1616eaff5f8282583fc6a1ad3d26686d174db40a894e47ce8701f6e6a3c27083e2e7016f884d0b515f3e5619509d7baf220ca1d7251932a79b70b5935a72bef22ff1a1d3a433726bb9b51380d48b3eb79f26c074040317551a89023eb435587c42a0317e6de0294957ce77020cd8ee39ad862a666fde0f3e273c0b5d2417db2de6e2c279a55eec39e1d684f0543a4076f33a395a5c58f832fe5c81141fdc070000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dbaba8cef191609863e143e4f6255d389e67f75ff6fbf832c819ca78b1d3ab075614a1cdd6a1f34b3d28c8143d42f58a5403e0512ef17df64e245494a0c7155dcb3eded2798fd19df1489b0635c2bd48e79e578923900af1a63a1a94abc97b659bd481d4df470496a7ab096a897245340b0d85325acbe9c073e5ea69fc6217715ee3e90d0f919f9652bfabb7984d038da74e5a328fa16fbfd4795e94648e0bcee6724c92dbaa2541f85658ba990e519a7389334786c1953fe2f57830f64ae6fd78abdcf75c7cdde28eae8819c5670d5ef15d8ab3b14e5d0d877cebae83ccf04b1cfb74fda4b4db2364fe9b19a7d569df5ca678a2603a10739ed8bb3322c173e21770000008903490d9b14d5fb4aaa796ab3d743ca33d48c1c0f8d45cddfe0a4c9f7657c7a6eb09a19780157acda7d57ebd509509922b99c028bf55fd6a3ed9f334879b1e3bc803c41b3dc70955f6cdfa12aa2751d8fce8fb8162ca53dfddaebbf7022fe2a5495902e357f0c06617572612097978808000000000466726f6e880114c375488ab79fce2186804b4267a9f4f95b1aa5587f16974954b139992912890005617572610101701345b3b8264bb85723536bd353539ea8da480e307a830a3aade659b904e33b07f904e323c1885664a6ef365e3c2b1b0b634f6e8e01fded3f4b414904bbad8500000000a7d7420118028418cb601fa3f71816456993a8318375a27428ab14143889d34835484fdae32e49046ee61bf69a2a510aa67f4639d88e3f254753e4c4accb8777be706fd2ea88027205a8e199686db7d979e90e485806be8f8292043a8f1f807ec097d57734e60dd1b3acf8104a40dfa9674c3a1d556be641e3b5293e20836ce1341ef5b6d3b98c02c25124391e6806a20ffc9a61dadff42d6d60d9f64e20a50a91232cb7c7b5a74609a2ccb92f6e74c7465d5c3a4508fec8b035ea8277fe534299249b003352178302b6e33ec9c1fd3b9cebdb2100e1af98af9f0612e3c0674aa25dd1b8859c51133f16dd5e4707ca957256ded9fac749dbc3a9a3287fb224cb3f27a974287adee98602b0a9e32a6aa75a8231e2eccbec6a7b570488d6d743604c12df1daf678da5516bdb8865c4370cb228f80cf65b2b11e9e6a4c43d06a984333ac893f55636ac7c8e011ebcc6b37a87d0f3337b8ef3c57cef4ab1620f68191bb343162852040cc8a367ab25d36e64ed148a41d9002e85516fb0af6906c027dcc319a8df703b1e4e7485183fe3070000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dbaa22485254e59b50cf30cbfc657376e1e95e333d97cef181748176178b2bafd7c9bf4d38d3f18df13f429580ed4e231670232be53d7c8e5efa44e911ec7e37e7331119e30856d900587434513a9073425ec38981bc9ceae7078ce2eca1d3bbb29ba497c0f0b954b96892c724c18883858abb32a69b06400882a3827f550b56b8b5883a12f106e7fbd4c263dc2887222ade43e5fa6de5ee990c409eb5f1d70d87c7a1c92c7030f13d731c35359f3297a40774e4b2986368ac545223f65bc2e81809b84b950384251a99b19be21ef7758da70f316d789ac8a23efbf03d8c08f90a09919e768792f2627aba7817e4ef082e1d6267ce7e82db721ea098f35d32762eb000000910399e25642e11932200dc85307e1c8eaab2628d37a9879e3d9b2375652effe9d9f2a91230139b7c6425e1b75ea5f1805f82fb6f4af8133726d5ef357a3323983169ea4f337f70c9a48ab91ffda9f0cee657480b95c12c228830403178c92071cab50ff43920c0661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b05056175726101014a296e0c50abd90054f09727931ab7a99c34b4cfb288add3304ba7a2b8fa495f1b0fbed4bfaecb30afc0d65e14db54001e457333560e86882d7eb5cf8545418500000000a7d7420114010ec5b34666fd4f63d5eafc748aa8018c67b3c974340011189c238a963f83ab100612c29b221f6d3d96d609228f82e07b30f395f8e89a942e7f31a5f3b6b20c8202d0944c4e08384f04ffcabe07c551dfd5ff4b4902cb876d1af713479a92b62206c25c1dea0da93f1ddd7e092fe7661222fc3a6cf6656df8e6566bd15778ff918e018a8736837fb9951e4140c8b1c56888b550de20243828288e451dbd9b7b81395e8fcac025a7ae08a347d6e144fe10357a68fa17714d0957caf313bb26e80c2286028e57790dab3db30a524a9d7b8c0fe1d4c6937889c9c2bc710eef903a3e99a236c945964c1b51c3698fb06177b817f744957e8b240f0fa15d8cdb56997b28f08d025cd488fad49dd029c4221c645effefdd84eb6e524bed91424bb85671ac902b44531f3aa2ed62f14093c6ef14f2b5fdc73a9d76ba3dc77b995aaac6ec95acb886141fe9070000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dba1044ca081d932547a09e392bd41b8887eff52e2368556abc70829ceb66e5dc6ad00ab1005e17679773b2964fcd985c10706ce3bb5c307999938bf9d5f7737805f49475575f50a2cb31f2e98634012bed626b8b78a6de8ffc1117007fda75f8e456fdd354c406fc40bccc8ed86bc05d4ca67fc27c6cf8ea48f563aa0c008a1877a257012bac0403ebce2e3a1fbf222b2a9da9cbf2ab9b47230d56d310c8a3420885d8663af4f844344e4bb7ed5c2291d12f24a61bd9382a3a912044be8b25ae822f8d391c7e6da8217d749c07afb2005214f4947e62f998b451ccf132298dfe32d1d8afbc447911b598ad78d9b5d3de47b2ca5a29c6cc4df87bfd67352474b74b000000e902784ce05ee6b2feefae417b266a12590a0dee900a16cb8325ca778cafa23283ae26483f00842ce17ee7d33b1d3f933083fd73b77d859b61db64582ce6fcf8e2539fb62506bc214ed033faa4df51cdb6281cc8b88306e35614a593fc9e07ad674a808bb552080661757261209797880800000000056175726101011cb01f0ba9e758af9abe9cbefa0bbd277ec69447cabe996d118805174fdff81e183302cafdf1ae92aa0ec6b21c0240805f2e2afb6a886b5cefe15978ea91e28b00000000a7d7420114025c9a96497e968638fdd45eabb52a6329e05219414099f87420a86d5b9e88c7638af5cdcaf8cb9c2c8b6c517fd9e776d375c094aa08187346ac313a0af4d08984021a455c1ddd8a0d1e9df900d1d7ec9b194a5f95da85a31bb666fd2dba9b713c5e555af6f850b318cb2a40b01394e5f74edd7a48670eae0ec97e50e84fcdf8de8701e4d37906dc1c9c728a1f2bc4056369e7f66ea44f310928ef61ee65fc39aeaa2ab21626dd6bad5e2c7b8b167cc684a3fae6bebd84c09504436df1c94d94e50b8b0126ea7b57111c4054f79810ffa3733dbcfa4924ef01d4494f78061e42180762352d8d7d1a652dfb520a5f2983f531f9297b08779e8b2b949610a5c02bf9de438a0288d2ceb3afcaa1ba12cc3c4753175eca8b1e9331c8c2090cb60d0f4ef590336071f8011e64dfc20b113cae6e270455acf8258260f3d6217cba61eac5d5ec4188141fea070000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dbaccec2361ec4030619b1642cbc59e3daad24ac55de8d1650077afc210b3cf5652acbcd53e106081bf52d4bc5450fe36d2e895d9b0c91bad0c10a4d8f6e6dffa95e63e59c253ee2402b6ed56ffc70dcf73c6b07a2aaa7d4a5c339949e8badfdb188d843ede5580113a55550662572f2a32f81c0b29c968c15113c19e8feb2b727dc82982f1e24bee13b7bf6b654d09b6a2dd10734cadc3d0b21e09e3b83ced13275f8d63c2748d8f1f8f345f77430e91fdbd85af5b9124252f460be441b8c5e485f3147936436c9404cad3deea66fc4d8eb3ff7bd14da69b988e2a05548252b40a5194b0d8298fb7f57f6637f3fb40b713a9e8d164fe8ac68108ea68d3a768ad2d000000910350dcca688ef43e12ac2b8361bfd308fc66f5a6e4e35f934162b1bd89cd10bf7c7e443f0163c051923f623c390901a0ca25d53c25cbef7633b700c25cfd5ca44a2bf7cd1101cbfe2ea220ec23e8f66875ef0ba93be8a159c8622edbe622379a2a9ab1a0d90c0661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b05056175726101019098d2f7d53d3e6efdf9dd7bb268b57bb0dbbdb1cb4829aa51a34002f0ac1b128c97d4ce7ae7285d68865de175d4421e2d7e3d985816b77ed8dba1a0d1aac68700000000a7d74201140208730507bb22864170e8b7b5f37807aa17a9b7ffad9e0ec768874ccd4ecfc2674408dc9d138afa5ff655ef210a4fdf8d9f33fa30f26220ee902cbcc0c7dbf18f010827ac6ed4b2bd7a1f603cde081d961db6a9084747dfe64e566e94befd30db58fc7d698ecb42a2793fda36b83fd2069f21d7f8277780dfbc3feddbceddeffc8702622332b19ee323579b0c81ede3e5661f9d73393367f0cc709a8e19c26457f86fabc5771797eff17fad9c9c7df61e1e4b0e7912b662d1187ceffaadd1deb9f987020e4a984426b4687a7e13d4487756847a7c8723c3be8427b29122c16df964252e63d937d84293e6f28cf7e6e064f3757ee02cda32d68087b834c4fb00716c458e01a69bebaade5436b761fd1a36a52ea75335ac56b1f3cf94c07513777d8972784169143c278ffde39dafa40338536388b1f6bc9b785b36692e5c11ca9306d5d580141fee070000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dbac40b2aa46c8bf06977b355ca6ae8de625b818b9ab68df5b498c4f1e0171f5018ace0a388d7453029cdac68c899debc505c5c9957c8957aedf4b799b5aa12f1bba7b2298d747a9ccd443e902ed020173794b81cd8883432ba9738feb0e3c7ccce8fd819bb7cc9e9361489a98f221c5f1783cd3f3a3eb7ae1f1a07ed3e21981cef7c838db5c6db6a59e2ae28fad10644357f0d995f130fab88ba7306484e60dc5c71e4672f83761b311c82b255516c32c6581257e984e48f599c93ab201fe69f84dc2659df04800aa89c0e792f360a59c968210f470b79b25a80e95aa53c3ccd3fe87e1fcbfa634d8c3ead66bf80583ba1c91c0a7b9d0c20c7672d61d8c1874ef600000091039cb141f9ee8d1b84932ba128e1bcf75ed97670a60f9d4e3750c1b47a3048fefdb6c52a01e7240e923e7a9489cc6d210c9136f89f530197cdc8620ccb24ccb5ed255df3090a847d1ca482449730b41394711a1809cd081141c7847870f6679c014224808a0c0661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b050561757261010140bd9ebdff845ba43a07ea513eba132c5cf6945af7d9d890f647094acd4f800bf1735db25981c3b9a13c4f5185c4224eda7d88bf4bcebf2b90f635622247788e00000000a7d7420114011a350504bb440acc841ba534b70836657b8475013990f85aab5c3bdf86314f703784272974cdacdf3eb4fb949d02b718013641728533d5eeca4bc1e0d088278402a29eb3ecc552dc39b807e7d62c78adb28ffae1a124abd5af9bb6f0e4a36da01cf84c1d44889c1e3839acaafef0a058506470c760e83136b6195ccef75a654683020c1aef0beb2a05ba070a849bee25b247ead7be7356fb1954919be63f093c467a9873b4c367741dccee14890bd13a515c52e88fbd053e906ef6eaab77bc8ab882027c3042f4b6eb9526180d5bf55c99bb2e15eee8860498a8300c885ccf2d2b016b264256cfaeb33d810c8ff894b5d0d953f810192ed7f496fe7e61b12558711185018e225c6069cd3a99b6ad8ea18b1ee751c43d1df891f14fe35fc1805ae8c33011f964b5944192787ab25968f4d96a181b6cc15acdffc7444f9a2dd1634a0bb38b141ff0070000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dba221aa0007de09be98e425cb592d4e549ff038d448cfc0261a9abf57f87bd744017620f8ef0183cb20464ee0f209198efec1bd97d518558f61fd33cc472dcab3fb52c094d252b8f86f30ee4018029c5b1d480e549437774427004c6f647bb6a96d43a25c58921286470430f5e9e00bf17f47b3db08e4422a40a5720e3fee3e7ff384e4b18ddbe8d0faf6cfb0dc06bf2b1683ff44b5c5e9e334bd8aaa0607c647946384a89a3793b7b9c12c454293361fcaa5009ba91d1bb8a49e88b4796db0684924aaa68ee52cfdd09ea741ecc45dc5181a72799ea291e6740be6149a79ed31ab9f8cb5040d1bbf541e0909a87a87b7101a8a43ad43eee2a62f712a8a2fad7070000008903ac424e61063ee88d170aff43c6f552aeb6f646d75c1ce6b6f8fc16c985e63fe5b2184c017282ff88217d8bb32d1bfd5139678d87202b0283b658235c8d8387e2a8a6fb8124239ff592eb6114ea7763380a84f8da65d1cd5f3fda4032e14b3ad5b50f25fc0c06617572612097978808000000000466726f6e88017e485c02c0b70f7ac51467e093d2b339b3d26c84fc34a6e3db7a66b1fbb3586300056175726101013a715ff1a101550876f47a845781061a70b310b55db19ab857bdb29199aecc38379f7a38dfb31122d8f8a3b4819e658958fdcc5883ef6989abaab5af790f718300000000a7d74201140284102105cb52e8a8fe38ec96383516de7c4213d506ac41ef8b4791a1403213421181d9e9c45a379add5b13d7c0295fd0192bb81694cf0afe9f9a2ca79d619e8302dad5b9beeaa96e2b577598cbd694a2f180a9d84486ede244c5947fa98e2f2c1e7a3dcc018b5ab005fdd0f556eecddd8f42aeb6821bb3a9e96dcbc4887c45e08c0274ae0fa1c5261e9d26830ead7441f7e7eb822418ec380febce79e6895011b13eeb9fc78cb75a50c3aacc0f0c91145c89e3eca16a75bed65d412967f7dec1df89013e419d7cabf12d43a4a98e92820c00fd4f3aa8ac296be2303920729b59f3744a1d47c69388be721a6133b58b21bd604acc600763530829b4d27317cc74ea188301dad6ec6f06cd0e297d539c43c35338b24a15e7f018beb96bfcbd8980ec1e0832fb8d2dd7c535d763a65fdf9643576567cf1201d69df0b5a8bc315009e2220b89141ff2070000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dba54e466c8022d0bb6e8637f773bf75bca16e5c9dc93ae31de565416e6e192280ce985fbf79365c8ec7fcf2b6a4e7477f9bdc117e42cfb54e572d4e869713eb1e3be6aded52e4ef1c3a4416f7f26d2312ffd5a3eaa782030a7c089d3d87f2dc47180b2ec51fa85b1a7ce4ebdb2dbfef2274db8546a383f7870124c920936a8451774f76e3a306c30826bb755b2016f3b42ebde9a38e321895562dc6a5b66e5af2f7bd59fb2007ab51e287c81e033b21471588675286e174c811764f347a4418d847760b7522a32220d28da9b474d6c37c17b0a4c54e9af8f1667fb501b3d20359056d6accb42e877eb085027a273574984f4a25daa397c4504cbdc08e837c2610b0000003104aa05f1fc986b1ae7a7072924e28e528a8bf6c29abe3b3fc0c8bf0e754dbdc9cf9ad54301fdd269c428d8cf36089763337a2915439d775194bb25204878a40ff87efc99f1a1f26e94e951fcf215dcd7d2432208cc81880c57b5ca7063f2bd7e7e6a311911100661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b050466726f6e8801c722b8e33e8c60613469a9682b899c83556def3bf678b8719f39af6cd98a287d00056175726101010aa0b11e1ccc5de917a6ad5b63d6eea4765e1d52d4c1cf945ae9ec9d4f3b9861c2adea50e66228f29aceeb192fd665a04bb3d39c49eea6da28757cdc709d338f00000000a7d7420114014c72064f806b4ae51d0d7612d3078ec31624bc88e859eec511af77717735326382db3ac4ff337708f1e5d3d236f928a20456086e1ea298a8c23b48557dacab8001864a7c32e9b6c4d2a36c02d4086eb5b17f9b305291d1f847a869cf45bcab0e700750e2fb0c94852b7aeede64d8b9d081e05d59f66db3fc1172b2247d6c43678f029676d76c66a72927ce20f66a5b9997aaaf3b93fcf5a48fb88340d836a6c41639a44e91c37947d54449e1f233e39d9c3535b98eddc81dd731ffad14f6b86450800216ca6074d5980efe12285a49011a118fc684aefecb441936bb532aaf926d1e5d26138d9834866f499b6c98e562c1bd0b619ac83e3065ea24c47ecd9d4ce80283029aab1935b9a9cc74b285ebbab253e6722a5e671f17143996f7becce643747b23bd6f65b63c198cca166268f2968f30d52ae020d2934bdd25c5df2fee3ab19488141ff3070000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dbaa6b73a17fd3259b276fc97eafc5f711b5658999de0b356955c0c3faa37736a7463b081a529a8568fcec4e57524ec4641df3235f17ff46636cac7ad44ee52d020aa47a4287480c9fdc7b15b5aca61c819756b80570a0ef886f836fa392e4b5f897db428bd1752b0947e2710a6486659ad46640c466245690501cfe700a8b091d3086781607136f09ac338e3c31c4ddc039d553b91b50232a55db2449cf5405f3fac9f6d85e0a217cb6fd6ecfb8c6b67f0b10017e6bfa51058ae716ad3348be4853a3d8d7e04d81ae043063c82d06b9e1e904d07862ee91f485a4aa05f08f3d48461f8403b6645a69e686abf09aa1613aabb1207fbb6089dbe3ca93a6e0c77ad5200000091034fc9ed0ab41af38c9ba880acebc05294240e8436629156ae1851052a356076861ac54501f4646ccc0f47e664595a4cab6d764e5535fc1dc2655ab5385ed40f6f3ea7f33b16c78bae94d956f08840cb97770d340b358dfd1f3a06297ca27715f20357decf0c0661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b0505617572610101b87c3f93a47ffab7709da31022a10b677b15ca24d3024dfcb08d41a1f667467daceeee01eb6becb89856066ed8cc11252024f565035a6b737cb2ba757802388400000000a7d7420114024855c3ca9423003af010c40f0d98283c3aa60e1b9f3d09d09d563260f8ac8b061f671ed2bc563ba7432cd2d914e09a76381831d2a392601494b4b26f7c3feb8f01d0a9aa54959cf052aba6d074d20ee36c3aad5b1dc0e763f2a60a8509c91cc176e40cacc5be15fee07541155e5d042f22023dee9d64d9f344ece6a22e929a898c02cc5e6ff80e90f0d2dbb147e21496c60d402b679b4fca1bcbb323d20a97f62d6072ac5580ad08a59c7d1ba09bf87468ba36a4bc600ae92e7c39aef74f78df848c0232a6996ad64954f220c325e1629de7168b2594f6dbaf9b7d91e7dc5464920b423d81e7dfd6c354524d5afe5394117bd1733f711e9eab6a4362582439eecf298b02768354ea99a6e9bead6b90d61af1a7c4b41045c34e843c290c41df9502f6f12575cf565f972a6ac13c2c845cf64b6fc22858dfb93f224b9522567da0b4a5648e141ff5070000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dba1eb6b59c18ba9b7447a00edfa04e334bcdafc1931069976172254c0f0716d1619ce52bc2e25ba72897d7097d5096843e4b46d7cce64a0aa84adc72ec3271d52854efcfba8d3e350fe2e12add191ae64746c3ee399ff32ae95788bda725874a3e9899dcba917b0a8a7c0089be4c4067680e1baa220e5effbfb697cf4b3bfe9e4b80a479f59b5e5a770f0371c902791c376c185dd762746e6c6292b42c50b7041d66c651802aa1d06320b4d01502271b501819afc2c9f5649c75455f1af52afc82bbdccc00cd3314d0ae1e958bd8ab4ea64a034ce4ef4150426fac5323e133e0513ff6b791b2343bac6b42dc036451f00a8a0956fe3eaca3efdfec6d5772b39bd400000031049b2f8ad8c6ed90d357f9ed73f2f0c4b8a8c5a517d08016fd8153fce44ccc27bdcee63a01c0db35740931cec537724eb0af1f7648b11e9421bf5408ffc45d61dda8c76b07c50ceb357aa7938e4245291630102ca023ee23a5b9683f45a33ca2aec08096d0100661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b050466726f6e88017fc58752d83cf4dfd2d663c2023db2152bb2efecf4b4323ab8fa2b937f684aeb00056175726101018ca4ec6e53c63e95cacb1af92d14b185bc7add30bfa1c49bbd8a3c8e0ba5392dd8400b639b14578b3feb93b7a2d38efc7833540646718d91180cd3ed3847a78100000000a7d742011402286ae7b2c879304de0c8cf70411dd864c9fe13e3a7e699c2d3832777139e6a136d42593ac7ee553e8b4fb448aee4dbd5ce8d45ab75b0f9d32017f1e74693bc88025a22f588e7f5d4b5baed8aba4e9e78efd7c428bfde1cf17ff95aa116e13f7e04dc622f5e3c59a7b8a9ed9d72897e94047172a2a22018e7bfe7f23d6275cdfe830192e584ea5e77913ae11afb1beb76251e0c9168c5ad8df8973087b2e8a0c092255afc811e85db620ba0500d6a11dae3931ca6cfe130db8e0d71cf63d938271685025c6edce9f64f4e2ea9a00cf493dd2e6c4a4feae033b6826100cc8a786033437af9c3b6b9287d75b9e8f5d955cd28779f26e5f6346e8aeb609335f32d6e37ba8d01c64e9b39ef8c44532fa20e1c09bd306606fdbe0f94287d6ceac4520e57e15b6c1a05d3a6984db56a61a5f5d55cc5d92bbde1ac644795c3adeb1d5df1c026218d141ff7070000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dba3ad398f0e8aece5ac50b13b7f9e8c32928bf1839e73d1f6dd9ce46a94c8d9274fd33ca4e0b7191ac6a4495e9e64ce81913505d10a2a5aced9ea1b816c1d75449f15d3a9964dcc2ddf5aadc15f6c40af3b00e2a148b9c99d7740e3c7068ce61cfe8100f7df90e615cee01d3473aa57777037f034b8c447cdc67fdd07b749cd25a4cd487558bcac85314624e03c5c5ea8acf87e6bd4dd2e0b7c93d50c606da733f05538e2c21b2491a841aae4fd0b2875c408d938e24131f54a7806f664002e98252988bc4edf21b3b2a937f06fb3def6f29b94dfdf0c4a7ba1e1262a8a934d32e247612e64cffde6feb21755a586ec01a2347a8bc9e53a49e05a3e2f802d2ce080000009103865711a3731a308dd5b6eb81194710d52c6f9de42af85a8f059ce27ce49557badaddc900482d655be31458d587b90136c86ead649387ed9b9ee448e449396a590d36bdb07ff86c6bf15a6b899a49a243a616b7c5351cd7d75213aadd7b9ea7f11037a6d20c0661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b0505617572610101d2767f4ed9fb91225092010db7c78da518f1a52eca8831677a66ca3532660141d2234580255fa457f30c238677c4109a16eea82fcf38e9d33e1a0706abaa638d00000000a7d742011401404bb59b6aa5aa57774819a53de7bbc97ee69471de489208294d25996935d670e3d58b321614217191cf2e0787fa87d0b83e9b56dda04a409e747833d7ee0784016cb8c6efa760f802d95ba04a1d07c3107fcb5ffcf40ea214b727ff8248b6af06c14b4aabc3d8d2e2100090531c67771c77b180337b177d9429a1849cbf1c2c870284718dc967a9727af24b629f86eb6e6a08c5e074255795b5c6932a95d25b775f5bfd5904b86db10f31f1aecc64999792727a4013498c2d08661830fcd006708201a05ce3560c54e606699af63ee4e0f471f5d83f3c5ca82621af6a9eb73bb0a30ab6508ab6e17a73254b69190d242e671306806a0f6904b7fc036233c91e9424800194c778d4cacd8e3b89688ba7a40ade117f5b9399477684286b6a5061bb1e9c180b930a60a03093b7bf032b9e96e56b5a02df3e52375311dea2806107f8fbfb89141ffb070000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dbaecbe696a523df6d9ca06281a0c8348259bcfc5a1ffbf4ade51a3eb45d920de707a022f6527992bae7b549835206efef8e9c39d8a8f690016585498edd074209cb1930e200c8a317e983371aebb41c46e35bd59e76a34b6fd4d99693b96f3991af8f244d3d6ed69fc5d5186cfd57dee90d095b8dcf1bd22ef87dd9fb985d54e3a9c8cddf13583340fd125e5369965d311a54e9906e42df1c381a6cad976821c6cd8fe268d2234c071d0c3cb2b20894508fa60844c36cede57717a3bdc9f56aa84b14c1b34c9e9db8f7d111ac983a8867bf6cecf904f88e114483621db9a215c81b2fdfc760b3256d39399fe9b09856b05346e08bdddeb65bf2f0d55d8961978cc0000000d066a8b941773cb2e95f302f6fd0df9ed1f1d1d9a346363c128c11cfa8e36802bb47e1c38018338f49b8f010cff838e70d69c25ae76f52c7f4a1429bb065c163dbff754e5397c0b537f6b3b8934eaf53362748f9b8f2fc4fd62377fcd16aa94a5cee00cd1d70c06617572612097978808000000000466726f6e090301785ef026c8db523ca5f572bc2ba30524a4c0e5148dfc87085ee7358b73fecec914b639856c79966daae1a2c452ff010e63f44e7b8b93066cbd22c980a2687bfb13b36d635735b1aca944eee31f42185a6df245203bed8918b0d033730431098fccde7c6a25eac28e333a378c01bb2a6bce76ce19f5b7d07b2f3dc2cd1e62d9d2fe07c52afee3826ccca2a6a8cd7d52cd773a34ac6af81647ccdb04e49909acdfdc589b6583e931c2462ddf05e45f3ab9dd87fdb4a5c561f8e2dc628bf1c31ba18e05617572610101ca3a56a3e07b1a6fd8533058c7fca210d9df9c6fd4afdfb4a8bfed7bd5e8ab7dc88e91501a6cbe098e33f7fd4ea1673eef5f50ff554958019279cb626f7e558400000000a7d742011402fcd5833e45d6c3037062436e0aafd5cd77ed0526407696d519d07088ce6eeb1f42f4d206950d03c60ca593a8a7d56ecd1de1edd458f94dde9092da4462d2c18e015c47dfb6b55e93d22f398768acea24f2e284ff9ea27e791107442a1651c9f63a9e7e7e91f6861baee9e29ec3072bd1f3fe92a403427d42394461410326ee24880114ad93793a996b5e2e84ecda4e089529577729cb22709ad3fec937bbf9661a34006389f031868fbb01c91da8c982769e16ab2f75c4cd5754cce408ca0971ee8c021249473f9aea693ba1b25483db3ee513f89af5b6b10c04cb160a519a097540255a3fe0cb9e14eef526a0bd8dcda8b52c1ac4633b0522efc59db40650c83b1083017c007b7a7874093fa6a108a0a83471120f59c4d8d12da779cca57b0693c0b8309c74d96308523e1b2917956dc3e2e74b769288acbbfaa659eb30edb75caaf986141ffe070000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dbab8af1614d9b22c9a36dd3aa8bff3f90a139b04a080bfe60735890bea89e73a7b674a9afdfddb0e8aff05a4a503bf3ee6ba95cba1b62e2125734f22849e242dac90e591a5df68e9831bad4b09a52189863c496099e9c4fdadd0bddfa8aa622263b0a7065d19decc4e240130cb234d9fac8a06fd4cff0fb7b008f9165cb24aa786e6aa0bf688d3463e55c39b6142f2f624c24e8a4bc9cbfaa88f34b4e13469dd09d254da7cf06fb1cd391a9b1e4cdbf33cdab62e6b39976890fc4e9924e6c0f186f3e9dabb6d9c519a66fb71deaad07d961bda231768fdac6c60021194d731554cc635a62fcb7508c11aeebfeb8dbabd52c5c8e03492549244f1592e289d3cb9cc000000310467d3ab777d739f5a0b0b3a067ec883488d4306b39cf9d5f41b705dda3e09b72e7ed6af0016d4c32055e51c920b6a3e37813844c0c82eef749d0ca8c42e2cba369a3e1f0bf1be02d0a8828fe6489eaab9379f1cf3c5f087bcb7e59e4ef92936a7a3a9c6cb100661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b050466726f6e8801f70038b8dfc819f4cdc25663c9e03cc3e5be7f5df7579cc39ddfc278ba169b0c0005617572610101bc0599360093936c09cc64b00e3f1f6e5cb5537c0faf1cd109cb58c9360335616056d65fbadc73f187983a2eeb8ec39e6782b37425781395b6de856d1275058300000000a7d742011402a83675a86e3a46fee88f717459512f63f970510a4a8860f6cc4f6f1101fd9f10b7c25ab555789070cc4217441cdecac2142340593f24aa662c1e01e0d6b0f78601903d46f64e5a5f3eec9416c5e96c6a9582a49953ec4c28a9d9c2cc0f11311a4e00968c5514f03eae428bb46a0d35507a434f4e2a24db26d42d5a33d3ac64458901425aaa6a2e54a1d7d49416ae393ec225702bc2499fee0152728475048408ff28bbcd2d23d6ede4608dab261b8bbe27ba843922e1803e34c03d32b80b4d685f8301f24e1b841c4f45dc82cfea5d7f64cb75dd4dd3eff83d65abc3a61f77165c02638b19f678bc485866acdd81028a544faea9b4cdb662a678ffb8b6d8aa9eef0589016889ca74e44da70092bd5931c2191bd3040674e7c53b09c73e566858ffc2541682d615bc3466efa669674f2a1be13c0de23056c782b03a6f68568a3f614e9380141f00080000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dba64969234ff3e00f5c14043f135c473d8c2e53de8d88ff11fe6abf9c7b9d1e53a2098e47ea7c74a1117cb87cae3d09148730659d008fd286b8ac4775c83fa472fd67db7cb2223a0eaf754eae41fa3eeded415f1fd495000eafc3a74bf2bee8bc1a097c49678ce23f76e05741dca85064a75eeb0cb0e8d6d1b14ecf58de0ef3584d4e7fb7561edf10b890d6955557ea6cbbc29d65fa94c81a8a85322d2ede76a386092b48799881d27d2b46e5649bafdab2394e4ab874739341fc4717fec12d482e469011f49b5e025feb0e8be82c143a658a9b55aafb6dc90f173a551412558c46491269b30924e5e93475fa2e768c00747475cf1d03c9114c2a213642994996000000091037bc4f4f751e12b9c25a1efa3d96439db8fd742ad520b86296c692b38441469f8fe94d2004de39ee49ff74b5b69d053b83f658868e2366c0cf097ad2a8ccaa188dca8ce60d23f191a35c66430f2f625cf9497e01bf313da2fff277c4b96ccfb401d06aaa80c0661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b0505617572610101f681a53cb2ec9c535436add987e272d0440e2aaa55c954fd082e3dab0e33202794d7b07292d3d40f6b7169728ccf7dbc425de8327ed2c5c5ce543598465afd8b00000000a7d742011402f45a7a0da72ab3e1eb52b9ac44a2948d42661ebeba0351a5ae0844474ebd392834a958b7e5140df085e3651fa4967f2a67c34f6d1e4516d56b7692fdd7aac78a018405084fcd87c7c537bd4af7c441981a9a180f95e846f36af666dbac1406f67112009cff21575cce6374f17f9a9a2e5b9b3819610722ecea9803d1480584078402ae00cec8babee55176af70d6b64dfd17487f0cec2d98b25403414b277dedde2a30c0de841e5843ad2cae6248d059417aedbd7972c58d651d673f587c9718da8d017e4e4b3803fb4a7e15e1d067b615758abeb5deda52d5661a417de473c934d526252bffd3e72cf765e81cb47a531654eda514af3048958754030ffb0dfe17a98801f89f39a82cc159fa0ec127775de56f43d7cbd22fda0cf3d00068b26d557be04d94dcfebbe1cd4c039bdbc4d84980b1ad36d75edca6e4e8b0c4f9d72aaa0e3e8c141f08080000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dba8a087d188e870dbe101b9fdbbec5fb40d28c670623eea4f8842f16da0dd41b3e8e8dfeb2b786488d9352384b1f6bac74778bc5ae2c86d277eacb2179e75bdf5a05d9e69d7e1c8a92e3f8b83fca09d969a35ae1fcc320a0085e09fb7f137055bac4924cdee5cd7950782c5e34ed7da5fa391e01e09a8c905eab825d40214a1005927f60817cca6ff81c2152ae988b88236a2c2556df8fdba6de06f1905d59d65081462f24e115066ec7aee9959627cee9aec93fcd2c2badb696915761cbb1b08cfd406c7b9c9beafcb7d4f0c51f903312a0b8b92a71546c199b25ba0f83101ed53e9365770de07d32f9470188e0f359481405f9c1e61831ae637d2fcb52a517440000009103c8ebec3caf930fb7c09721657b4a49880ef05f5417a5cc866c1eb24f2841d430ba95e4000445bc61653a948185a241c7180a706ba6657a856ecc2a664cb59a2427121913c5324a2afe918bb7c8760377c3e7cd60f3642d936707d376375f84a7b57552810c0661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b05056175726101010442ec185a4d73823b61eee481e175a461ef12242aeb51a2463d5f33ef96fc2d5a523e8cd9bd24c7067be487446ef6c269b860bd7d18d2d71eb69c1d3681e98f00000000a7d7420114029480e3d48457d8e377e297d539f78873dbfeef29baa3221b6c209515c9f16b0a15688000cbd1fe8c7bdecbe4b433a8de36d65a89ee1d9f1c3661f1ed222f6d8c029ee3940752cf94043c57486ce90b2e28850c8f2b88ff8743733aaf9609208f2b11b3f42dd1f4b0ea83a9a0806c4c7ed1f61477095ab751c85fa880750cec0c8b02a238d52985ba4244e322451a56d1dc2b511bd1012d14a517248d73a25ab6e71ed8029411397ca2ab73b00b9828ce48a814d6eaba2528796e99447d85a8e2528e028e925cf8bd1bf79ed4b9ec776fe64bd92f2907d5432f7556a0a2cdd350492b3b1385fa248f7d459494a297c8d838d73540577fc3cd7c21e1b0f7001494d7e78701c2fb737bbff5888cecb875bf8f947c924f3144d8919d06dbf405fd79d147d74f77328678d40976f2079ecbfebd4f63c1c8094340b2beaede662cb2fb5f3e0089141f0a080000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dba824eb39725ca7f1878dc5708796647a07305ae97c63e3132a60c1bb9ec6b2e735974a769250392d7dc423f423ba0ea97cbd372fb03d562471abea416cb0f90eacf35d14caf56dcdd254aa019be56281dc6ef75598e55ac2f99a747b1d1cb010d54316322f88128424013eb42030133a8e6a8414f1c129b27b7863b0c30e8c2292e396db87e392d01b69631ce9885e563a6ac5c7b38068a95b4343cf4c73400690e8faf6def07611f4a77e5438a72d657b57ecc3be4265b96de038cd61fc1bc81169d60fe4c121740348617380b1dbffc41af5021c46e076d0e4cdf0c4f988b85349bac4ca39f6f77e5d4dc7b8435177212609badfe18bd85c4ae6bf2d1dbc89a0000003104d3e1610e66dbc80f7e0f2e39a706de1fd1aef4107bc863da96ddb38d7a5beaed525d6300c6c162f4538a33ea77724a66120be4f19e53446d18d525ded6c0cef06a1e5ccfa08eb4a29ddbee2af6b24d423fd586898029a0b101b3ecba673488d0f134f0d4100661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b050466726f6e8801c797f0f35b6a44b93cdeaf278747f8e90c25d29f7061d87265e523cc02f0863b000561757261010128efd52bbac1e0008d03a3d3c7a184493de778e8001c9266275c5a7dbdb61f5db60c81004120f23f3dcc6f914c1d0b750aa763e4b9b4b4ea3a9f081d246b8f8100000000a7d7420114010c44713a4fc761013308a081e6401448340bc5dbc3039baec450944da4f9fd409b4a4add3962663bdba9d5970271f34d1a86662ec3a9bbd6640abd0ec69f148a02accf86363f97896b8608a108b7e12491f6c0ee24ce4506fe92b3526f53e1d0309d08d7cfc3e0c1769f4fda81ebe9a30ad5a23ed05c447591fa1f0dfd9ec0c28101320f59c7da8d1c4c297e42abc8087c8c1704e16a83996b341aad796d2de2982840032e68f29993fb4bdb7cf0744581fdc5b906d4eced5b171d0cea7605d96b8901e8c19864c011c1ffe501dca7cd58c1e07df2b6c35c640c3b9a14b7276d475c70b0c6607b2aa6d542eddbaf7cc009af60c7aa3d4ac035fda00401c0cb9b28598302fa905164d15b898f9f75d6cc34003d5f8d2bbfb43a180cf9dfbba4af1781f50ebc97c21f8ca8e9612fc34c21ca1816b2c87960e4dedbf1facb4d33434b3d828d141f26080000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dba965c1a621058a0453a9ae5babc9ee45ca54e4322829809f219dca798563770383883884481860f4dd0554665286a0cee73cdea80112454d6f01a75618bcd435c8886b7f10e8eec334d345164f8dd4db0e8ee1312f2b9d8922b2d74f8e89f172cc0b0b455bcfc49095cba83bc66796a5539545d2500aad9fa853a919f7e2f6ba3a06ff2e08c36eef985d5bb0183a2900f2a88236e5224f92e61fd0a5177259650528a2332aeb476da7ecb0b9411fd0c6fd5cac146c35a2d5950696b4e8017998281f5335a298869fc9d1e8df17251803953413d44bf0efe65f92511a141512ba3c6aa8cf82942e46394720351c6238880e284b34c0d56812dbbe9345ebc68c6fc0000009103b87b787748d9bfc21949ac07873c214b95b9c0e68e2d9a576bbe758d6b47de9cfe348a01cea71ce2e80b875725caecb06325f92c3ff39571a019330dd233111ca547e4a70600fd93b684816996cbaa73be52aec587ef4edfd64e2be3f8efdc7c7e3fc3cd0c0661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b05056175726101013e53fa0e87ffc035fe69cb3a86746e3e7627f9420442a9027a889b9317cc5e09346cb507052dd31bbb4c3ab0d38905dbf4cf0047d67bcae4046d99ead2e8548800000000a7d742011402bab00ee94a63b96724b463af6d8525b2747eff20264bd763f785f96158a692722347b8614bd5995a300a03dfd7e5f02ff03e067f27e2691fba78978471fbda850142fe3ad5f3feafa76303a12e0685835e963c01fff7158c79bbbd83f8e24d91504e73225db44be5aa83b32a32cf1892a54d62ab26960ec40999fe960be7014f89011c80ae741db70dc67d9749ce7f7546787bbfd218b3b0c81069e39b6ac19c5809ed8c8e0e40bc8b06e9d8bfa2ad3c7179fa2456c873d9a2948e7d1b3d65361b8801022f55c25943794541f1cd4b2b9d8c7d0d1cbf3aa56e2a59c3a008821535885bda86909e3fa32cbed10efbb24ea896a0da6332f2ae2f606a4cea68a558a75d8e02d01b8fff31095f872456ee697350abf5b1437ae447f2148b3e71d1a2cb61bd14744d98e500d3b8e6a46a619f7c1d1ee86d7cce13072b7affbc6d101cbd2ced88141f2b080000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dbabc107da1a329e7e6ed630eecb8ab360810d8e9dbf95a968ae67a87f14e92e21087f44e5dfbb89db30c4a78e3461fa4b7df3cf5ea82b138d3fbaeb87ca9794ae8f785c3e69dc8ff111f36a36a5fcc482a553cd744d762cbc3ae6947355a737bbcfbb36f04c28cbdf6245d3c0f544baeb5944587e0e596b8df72a0b90f2a05034aa417d2dcdc301bdd81b59d94b7e4f046be9f4899e59c7b76445391cb878889336316245cf32f476119ff63d67d979df00a89264bcd9c71627b057810c018798498f64b2711b0f3431272ae1da946b0179d9a1c9a305d927bc3aff539ed4b46b5b4304772243ca4195f39a40270dbb8007713ba324448e5a620f541617b2cbc4d0000009103c696e531dcdf5b36399c3d9a5f1cf14cd5289a53639b4ecf66ee28768ae1619fd2d7f100bc1d9bda5fbe597516ff65183fad5266a0758a6b28a0ac602384d6a25035ac4cbfa281c2fe378d934bd26e41351665fec20b16e596f82aa6f7603fb237d928f10c0661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b0505617572610101c61d8c6d25d91d89c3f8830c08c4154f373a8a66fa87bea5e4dbd4a35472e84f1040b18df9824e2360e777c140ebb3ecd22276172510e537489b689f2b73608500000000a7d7420114028cf3986659b677c1e7fddcc2b3d19fdb606e1f7d1e4ed396a6309c3220015351b0c11e28ea8fff634ef3e0d1b9dfb1827a87cc7d015e442c10d9a3e70cbe0e8702e0958b0f4f573045838b22e7cc4d187f000e080f9c44abc66aef1755f960883b81cc315e2f2d46fed41b26f27a03bc289ae2530243214c3b9197fdcb0c2a6c8c02b4bd786499afface4455a27c08bd9f0107692752f746aa9c86e65284a40e90488f8670aa902cb36076ff630e1f1d0564eca77a66e4bb1aaadb941c18114d018201c08002a9b3a16df91aba047b5578851b6de0d2b47137ebd709c00fac57d312256e1c9da4d1352d86301b22e3b3a2443c3a494f41fd0e029debd2ddb68d0a7d83021e8ac1a82f81a0370f439e2c371447329caf6ea88c30a5f7aa6e7b15f6e0e728dad78be7b169415fac36696dfbed22486b7d1484fce11f5d13f0229033d5fc86141f2c080000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dba7220843f0a1c1adc2357ac6a8c8b909efea65229b09320268bd0817c5c81b60912888e1220a448418e4912e19553d47a3164b88fb8c6fe318fc149d58c1e53dfb06008879d96794efdd66c755cf7d60df89a8d9168596aca2b16bd644dabb6b4c4fdf422644f2c86027437eae7f347dd7b7ff2d2c2c6631d7360be158ea70f4510d980344517e3f769b24d8d29643e510c63e6b7900d7ef46ffb3011fa696767738e250bb26cce59b0813f649853617eef65d518e55c8546d21131d06d83d08c4be115f97c9182be5371ba8dce396eb920cf3b55f718a6d16bfd48ce42b27ef2ea7171a63655911fda3b499c7a0706d860aaac0c4f57d502deb489784d3c9d9c00000049032e9ebf3aefdb7494d9dcdfd0124f67e2202a399786f5c60c6519f338566ad6b84a455d019dc38d27a9472052679f50ec0286005972ff548e478ee1a4658128a93b981af8a20cddadcb5538590405d57a1d3d0e29ff95231b1639a22f2280da9170c3e89308066e6d6273808cc43826fc174bea4a88e6c7f38480514de8e8ed2d30aeddd16227801b49fa42056e6d6273010168561b4f35756a4f6de09542faab7ff7c0829005b566ecc45843c322d3db1a5ff4d921535e29f8dc66204c6cc46ffe56eecfd0b2a8b63f5f7cc549bd68378a8a00000000a7d7420114028a5324569de734a3719b7b7b11b0669c543011c747e673f67f73e9c887aee251187206f6bcb46b5377a9f72fe2ac659c7dd1b3b1d2c63434d25cdff2bfdc638602667da5dab1b906dbfc4d7f8116933ef44eb05d2a09eff62f3b22bba4561809296e00271454bf3546b43b508420c2d4fddb7ea46460f972ba5ad2fe4ea6a2e1800178b937e7b4c56a7f39c50b895790dcef6e0f4b5bcefddf7f0225dbd214feea1bead572c33a41d63764dfe2541f8f418ad516c34cde13f415e4f14b044366b1850192802e84fca1bc9a266958610fd95a344d3b2a983a0a514b1aec7bf623e4024a2812bdf7d1667f2d5266dcf498be06a689a7e92dafa03a8a72070876296a808d013a0514efcf279ca95d24566163bf5af146b672e5a4b126013119959188ce757b7bac43006b9a46f40b35b7d621362d04cf64eceed5c1a053380a95ccf0227580141f2d080000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dba7c37781ff8b015e2722b65f649c21a742e2b7d9d9b64937526af751cc7d24649faa88e189a45ca26a4acd61481e6697b7756139cf5cec66888933afee804a3c0a15f44cec587c88d4d00bffacc0e0c1ab90806827e1b4fad208a51259b0386fb049aaeaf92af265d7e0e5107027fc44e04ceab16aea70cbe5369f167c6d9f33536cd21f820a3bd6ddb29fa3a59a18c10a5b3d5a32007610f21ec3c28c4a8431a0d50ee826a2747c46092a446377fe2ee9c60283fdac2f8d085079e2a7b9404812ea4b75efe845a3a26c8e8dfb30f5d2ff236cd969af319dae270c776278dfcda56ff07ebe89a349eb9bbaf9e0b79ac27d4623258047dcb1d171f7bdbf84dd09c00000091036faf35c3b51be78383ab065396c68e66e2e31591924e22f5ecae2c60b65d8f9dda4ac70097ce5477949ecc28bf1d82089a7ef3d1a87104860b76f32245b23d15b99d583e05ded91e2a98b847c00ee4850f7fe9b1a9985ccde638f23594d6cbad558e6c880c0661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b0505617572610101ec8ac23d8eee06deffb730a6c1de4761c158dacf5cbe025b2d932836c2617a672236a2a029f6cebb6ffec6e3f44efd002bd200fa61db0806d44dc2bfbaf24c8b00000000a7d742011402bcdeeb13e4f011cc2985333d73cd2cd1037d4334597282d5cc02f14c4ee018177a1ce8a315856159eea499f054e8f7b6ea276ee0839542cb3014f71d08fdc28902fe11e9468e19529abe7dbcd03b81aaa9a30d31f83e0ab5fdc46264f30dd3ba605cbc6ef937b31aed81acc5f0671569c3829a6680051852782f6d8358e5aa418e022c37527fbe5b003041159677a9eb7bcc6f3635c99112df83481f8bd93c6207738eba64527fedbc4afc45ded386debf22d55a77dca8b5c67097a2fce83bbdd68402fc81025dc379b47009667a1ed413d84b307a49bedc12ed49f9f5d0ec87c7ca53632ee568088d22cbd5233e30bc3425d1396fe5aeb2fdd70f11290579be040e8c016a7a4f17f82f2bfff0c81c61078774f6406d126cd3dc4103d6b8f7f675e6be7fca25aea3047859098bb1c1660cf65671bb49038a627b0c02b186bf04669ed286141f35080000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dba248b990791cdfbcc962be4caaecb0aec00bc18192d0c06164e17d45bae4d4d7fde6d38cc936e09efaef48121db8124128a1ddffc9360efc7adf1a58b0d09b9b7474a9d67c17cae90ab72889dfdc79bf9bec95e6b8173d93359f06383201ecd59d5413932c821b747a9e18123718205901022d025e1e9cabb65ff9622a4c3180b689a27564d1e5804c925a33e3008dacc08fa72fa992b2a58daff68ff5b1d0f588b7d8dd445641164232e94e872141c7ddfa6e2c33bd88a9d37fbcbb8f521188e0d43cf056dea18d755aeaa280827a8a5e6dc6df73c5aa8ffc43d0beb8f5f3b0bdc500654f1dbf062193354f214f911d4ea359ac7b16a4bd4426731b764dd6985000000e90290334738e689664e357b45b95668f4efd970eab9862ed10b3cc1c122e1f857a6c6b85801a918502815278bbf93efcd709402cf37cf185f269149c24164e498ed21dd66184115a70613ce0e0b61ffbcc5d159b814061ade39c34b2df76222f3b7bbe4057708066175726120979788080000000005617572610101225189213b51731580bdd4b72001937a9588fe00d563dfe4dfa2bff82a6b600ccf22ee08c930f180c088832f29028093414dcfc78616f0c22e9bd5c5ab45998200000000a7d742011401fc601970a0503315f78bf209ec06fdf7eb1b8acdf648c32bfb64edd5b961560d6369f69ea1b68a5ced2fcce99ddd2036bcdff7b627896e1332f3234c908e0e840126247cb37d415558d85f7d11edc86899e5e96c53f91daa285b352cff6526da75c8c9fa81f77913dcd806acf29bf28340401372339009be27570180c8a3c161880128808995317bfb04a0dd4bb3f0d631ffe358d34660f73bd2b123ef14585d89595edbd04d257deb94a7c8d71c59ca78d94f89f7e5a9a65690583bc6e9aafb6584029e5935a825d420642716709f65407731c4a5e7307bda886cf86b673943c0e927d8f79f24739c7c847d383a6ee7cc90a577bcb4759082ea7d17c86f7490d43b89019066e43d5515c866af35af866ebc63f3dae368421e0fb7436086fefd9d74b9081055898a77c70109aa7bb1595802f41fb839cd81c1bcb5d66b9677bcfd3f5887141f050d0000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dbaa67bfc07bd9a06ad24e09e8a9848c0bc8777beb0b826b790a4e38d57b20d6b48f7176e144bfcb56313e15d0d794e335a46d9c3a3eae54d3544974f4ff4f2a03390bda3bfb229665eae6276c9be9f66c12800d6f0b04e914dc7f37f145c12e21184b54a6b1a96e218674447596b6ddaf079e4bb66e2201fddabfd635bb03441636e67e1cc9ca5cc797da139ed87cfd3502608cccc7fbf7815878b7c4663e62f17d1a709778bc8813765eae3b9c34c5a4282930b175687d91c8ce8ffa4b7b0388f85db671db1c3b77203a04bdfc237f0203273825a62a0e98c4d7d152c333c26306e25771c2505f549b5af7734c84213bd1fd39278fa8f07298ba69da55a5c7089000000e902e4cd9a963e474011c36261f254e13cac673bee6a069cc2e1499dd1f72603b6e2b26cc5008ce33233a3babdceb216b0fad000f1a045608b6182c49035deb8a8a27871bfa5b2f049ec265d886f94f245f2221b8286f0fe8023734f6986ff4cbf787b8670ce080661757261209797880800000000056175726101016cf7c03f46ccad442c791f5b367af94e59315a18a95b1f7cc946ba4e103f585070de225259fe5a1750a12c7db826432b2291f8fddd970064b702cd9da712a48f00000000a7d7420114016262a65e136920d4efb375f707ec08a2361b931241b31a44a92b7af18522275e4c259952d077f331c990f48f13808e65de496c3878c8e6e1c37c09af5dc8f98302ae4ba61f93fb7b4ee525fe33e0031f29b387917123e1c11d8212bfc56f6a5c6aa72aabbc9452ba67b457d289d13a1e6750e1d07b55874e7ca175518dfc1efc8c02ca1834e8d47a7f9f2bdee8c4fb54c3c0df7ec711d7c4b1a103cfca0af1ae790a27a2d0e7619c71793466892652d2a4f25b8a092f691e2ee3cfd7a1fbbd04a58a02eefdc952a360325b6d3afb83ceafd8e9f283988fa9fd605dd4a1610d675eb136bb3a24bd093aaa77494b700e5bc876f41c010691c45b74be295ec55ec15d508102627884e3e0cace3929f7e12b4837192fc1a339720da619c841f0b7ed5188cc2fe1bb1b2d3abf9639cf2ca9c48b1f25851d983ba923eabc7f2d5ebf86b926ff8a141f0a0d0000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dbafe8e387f6925b507c4e8cf9573f1b18e36b89a5e72a4bb754a2c66c912045629158fe3abc26d859627d1818b7812db1cfcb14e80457eab90809bab0c82a0dc76ad9723e92c901a22261308f2b384d3277f4de8db3f88cd3a00c645f20bd87af3ac18e396e8dc38e71e25d8f63fa855b52e207aa7824bfe980053e34d0d001ff3c017582a9ee9fb670ab7b0fd65782026cee2f7e15c1c66cefa60a95524d0f265945d9f6e987f2c8f37e0eef652c3b7a335ddcdae6f34f0a9163a52963e4c678be36b87f526d5ddabd8d81bd45e38938281af3dc42312be18c07b7aa0c9502e8bf15ce09517eba4eb2df9fa3703624021c2472ae2482f6b61612f30e723db2d030000003104e15524f41e4cc6ca1a645a4528989f0913cbc8dc2ddca06bd9a8d4f08a35fcd852b43d00fadf60a26767d1aadf501290254a9c9e61f69728aef35eca61380f4d3237604fb5a3f55ff1ede85fbe395be1f97e7328fbe08c9b6fbdd17d884417c4aebcc158100661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b050466726f6e8801cc087da31aeefbae5504338e0cfe00c7311ea747981a60ced922241d8a8fcecf0005617572610101bc14f71252ce3ae182d5ac02b2589ef39368c460c533e1cb8c9ee80bf15b6d33edee699b8c0008b6fbec34d463434286f9d5d53d5812b5a0220878c036a5758300000000a7d742011401d8f7009bab9099f83f0b697f442a49b9e0d5167b2d7fbac84ebf53ecd703e902ece97b805892484cdd7b2308ac43afe35d80de9b8bb7e4b51bbb164a7fcda08b02863ad38e16cd7fe5c40e277a105e03cb08a1ec8f5cfaf7c7e5e927fa073cd509be45ece7c61661ec89bcda68959a9810aa57b04cc11fe034efd77a1b16ecd3870294325d002675c8ff91411fd0bd46f81aab13b0d40c1d444899524de385096b7d604595d5dd69d237303954fcf3b3bacc9976a57b322b7645b07eb228a123658002d0d507e72d3de1d72fff397267e4cc6949a4bda8f1ace9981b30def888a24e441ec1cdbdfcb31dc198ff74c9d68bd881a477d42685bd2937bc1dd2a273479a8502daacc8c264ebbffcb45324645c0eacf3894fad36934600bbb8f5a3ae84d345725b5443ddba0b07c99b7e859682e74b26054056d9cf542161217e94710e58788b141f120d0000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dba6ccbc73786e8a242f78fe04a14d2b397f6b2e25d8cd21634d3e669ffb24bf650d1ebf8846740ebd12130289e6bf8e5f06457b0b5f648ef1ffa315c72a25acdecc5a6c1cf3db59a9f6e8d76e70aa13a9004311634609b953cb559b95e6f594ed37e1fd236021be2a48855d0902fe2988c00c16b67c7eb6eb05ff6717229adc5f7ecf1018aef09d2368013f0d491e800f83693400b99ae70106e84ac5167844267bcbeb69288162c019a67d12ae1dcbb06808634a353f8c062baa40ffd785bc78337dfb5bea996e03c2b8e04632979637493702d3af009aad11533b61e0a54cd309d8b34af0d18cfd02b8edb77aab0bbc461209d3b72a7df947546b5b50834eb7f00000091030080b7d8975f046488da27c9f4bd9637cfe465e98b10f20d17ae97c362e67ada86595f00de51ce693b0359cf1370f9b4c876e275eaa91a4365b343bd2dcf66c34cc02db0c7bb04364c740231d77cae6d3efd3df9df356089898de840c18a903510234cee0c0661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b0505617572610101e4ac6e626580d4d5cc7d6c97d3afa52f311e10505b3f32a0dfaa5b86a8aebc4bf29101fe99d873104fd3ee1c7222c5d0481acb51727cb35c343d4b537a833d8100000000a7d742011402921a300f841ee1c47e03931df736fb8d5e48b25ba490635c6ded5c9c75e04f2e31a89b7396f9f08e15eeb0a360f11f67db859ef3c70795017e2d6c01063a4384013edfd47dc95a43b88e75261c5bff14b8c6518200a20cd0d2269b0a698605aa49c46a311e8f410987cf561533ece2b66fa76f8a0d3b7359d73028e2f955cfd58b02fe897387fc7eb1d62a4bf85f52f3bd18bb399f8895a9e107321dc8637382306c55acdcd9859a917fbe2d80d7c6e929154e7eb39cd89b983ce0bcf4e65afaf286017ad251a16ebd5d496869ce01e7d867eee0a4056b16429b106accef50c4268f7724b768fa5d2d613d4d1afa710dd7e9404e8d66fd6ecfe03ada3048fa0cebd287020ab28dd71ab2c536b51ea14eaaa9adabc483bc2ea3bae9515557af0c9d164b16f08d8c74d4ec2f97efd47c914ce9118bd72c4579d8d3afa61bb9d3ae91e44a85141f1a0d0000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dbaa86f157239529d6f6455a27169ca43864a7f06eeca607a1d47615a90a8a3560d4b2018ad13c0f179ab3f7991ab717119c9f93d5bb6f25555561c819b9741cffbe8ffdff70f3ebfeca56a29009fa0bac7431e1319248bb7041ffa355f03caa2f633d4e3607bb0f7fbfc772466fd0ffefbb7f5df88a5d3aa8b9654f6337c2f545d5e446381baee49703adb17a9267a6f6c52f2bd0abf9639a8ebdf0dbdc1fe3106974b94002e16315c63591526f3c08e625d723b8f220a6d5149af4677e766a98675ffbf423e4a44b8910437efb6f14cd313d4cff4aeff2e2547f11198fa4f805f24874c68e553131c301ae7c742d3e0d62a24c8a8b26096b6693762cc1b2bc493000000910314a219168e6c484d0f6025463f01a0b218e3d6e40e4e3fc8fc161fb70519cc7fcabe2a0054dcf376bb8a81b15f674a78495ba81be850df6275fa5213abb0eb44aaecd6a19fdf24ed712b7d229156b1bf7a860aa8c5e271cd23a519bf4a58a858567155100c0661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b0505617572610101308881e4a1a62d4f7f4a3c8ca98f38c2c71ef873d6aace4a03db6888f864b639efd73471787778cdd054cae3612c801892899f3fb4d41c08efca0bfecae24b8a00000000a7d7420114027483437c967df9ca976a70feed55eee0d06a1434feeba20b91305c299f1aa85318bfdaa361cb84482fb5c742504ebffb9a1b263721f1116418d24d6a9ba09d8a02700f9abe4ed67314a7427cfee21633e0a40be0bf2f96fc42e4aff36b0ae31b7a90b53d8716b15686c5751bec58e58e1db9f7afc6ab52ee5cc1faa7fff2a4fb86010e638024255bbdbbe456f0b70babce9061358b805a953b1b4771f7c1f0fb4b13a104431975e7797be3ebbe8f81a3362d4c597253855991fecdb9adcda032a6810126670ecbfa66c2097b019ff39544d709848dd7c6a4bdea42ddbd69bc55dcb10f67c12faa3393971a16246f1f63c62c9d86ee89e2782232aeeb9d2ff96e0cdc8d026436427c6af8b042d922ee400695cf254234e9779f80f2f184f407f30004ec5d03b9dc6df2a61c44ef1e5d980bcdc23bc20441bc703f5670a59cd7f370ebe986141f270d0000bcd5107ae78a43906eac4f0866c062ec90c14baf227d5978209321c650248745a89746eadfaac7eaa028f53793e421736540791b25959b69d5822ac4f1ed962511f0d3952b520b20fefe89f712c7faa87f8bc4e2c4996007d2466e8626ad281008e649e592dec093c56b643c6727793a30dfaf35390bd987a44ba2706fb254e0a89996c37fa2aee25aab3d92c7f136adc09d172b535f6f7134b47a799ddabbf766213065256267913aebbfc09757351717d967ba15a1b5cbb5bd772421964d7622c44ebc8f0bf529a777c8d59b6beebf58f3b780ed4dbc382835ad1b12507f87502f9021c4a8e0168adde76db7de780d93ee1db7533728c4e116fc512bb57d378794c20026fecbdf8e6632cb5b12323a3ff7e9a0bc757e0a65ac007b446557a90000002904540cea7b7fbef6991abdddb194ed8398a15e9e088e807cf4e33f8d6dda07f4f2fa3f1d00bca7f6c126a9ba4b784c2431d6edddc23f65c82c3d8b70eceab7dbe39eda035788ec76a6d62445dc41cf61e932789645343b716fb0e58cfb4c410688684dc6cd100661757261209697880800000000045250535290defb26188a078ef1ffa72a92f2f498d024d38c4947a71b5af42a47456a767c2a9a5e0b050449534d508000000000000000000000000000000000000000000000000000000000000000000561757261010190979d8adb39ba2be5ffa6edfe5e4813def0926d3a1d2893acc573b43ec0a6369badb35382d7676187a5c12e27ae25acc2b2257f147a013964808c10e3b5e78300000000a6d742011402fe1c61695167b0b5981398db38f66cdedc779c37af0668bb8441af874fe32e385581602ff70f6ba143feac88bdcbc715b6ee44cb8e2c6348cfee75d18c1cb48d0214ebc6bcd3a36118079ea607caeed5afc9410a7d2a85d1caa1c33bef3becb532ead49d5d871e667f4d3a4ef9253f483abeee6af6b4104df8a4ed53cac3fd6a8001e42340310a67b808b0a5110e4a486d247d63971c8dfd366010e046edf2abf25e734a7058e3604d6b0d7d0f91f94f9a95cf4692e23b7e6c361b9af8789546738e02a6e55b400d5dca783af8822b5b3fd82c802c67bae499280ea72e27060af967106f3ff69ae0d4e558e852b22e4a1377ca21cf310a15f2b46f35c1375e1fa9ab8c02bc211f02359b0aeecb9e8c8350e3270be18965ce21eb976cb0ef88c2f102ee4e30ddd3416e7fd23fa94de444f07297ebbd17845d548a91b987d388ba8462e882141f290d0000190e08744a8fe2b70706303e4b4f12596c491ca4eaed0102a0df453db2066dbace471bf18910450fbe6cf9edcca5371416fce0eafba69c30ba40c0737bfe4e2990eca9a9d30c8a015dc8e7fcbde911256c615f1abd86737968fa452c84e757f62641772bc87e120d686c9ebd5634f665d83b94ee21bfd9327b2794d73e8924419c69957692e7e26c5bb69295e272736bc623ea5acd4ac38c3afe6f290cca7da8de70aabdcae16a5839ac299142d7fdb1360d342804d197692e9493d44a7e7011c7542da530c4e3bd4da1197b7f93a7e22f75ba3d4b54e2f25acb00166b0d368a5ec82f276e0118a87d3f0b1f1061fe1278a6b0a83ea73d302da4e327f8b44838a3c66d6caefecb8b3777fda9c067c3f2345df24e690f5ae93f027dbbd310d670000000910372c4fc909c66cba8f994ea6271ccdb6eb55d4f09577c685ee1a44e9317bbd8c0d6c323004673430b42e9e9e171587579fa658b6cac8b577a66254091dc6b526375367496e20a2ef5a7dc6560883e87421d10a54ff7942187010518e3cdf3ed132be17b4a0c0661757261209797880800000000045250535290060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52e9e5e0b050561757261010140d4a1e660e759cc9ebee6adf492c22b1610a1a1f06998d2bd4919a30917457040ff14c3d2e7a401a76738adf47e431af567c74d991fe56c8bb92c2545bd7c8100000000a7d7420114014899f3781cdcc0b8920da2a1f0b68e4529ef6332edc6ec55324e03ad4be0453e7c9972ee0f69baf27da47be9c87a0cb474abe466a8aab7aab55256255c1d3f8a01322156552ebef857f579db3440faabd0b5dbe2a57cfedea4f201e1d357e691326bd682c68b8d6693d1a036550ec43e13e030dee808b36c27289aca1caf26e98b026cbb00e72736b1159561b5c4a0a6e79498e8e2d4fe457dc623534d4f636e6d03182a2202241866f9bd67133ff13fff0c337987aff6ae462ffc7171698cbb588101ee8f90ae65a6cc20a6dfe1dd0e32114adc01e1f5f124c8f1694ca6668c4e05379e7809e706a87c959f8b495212eaacdd54d890ccfd2e6c602433a1ed141a308c0232a4dd5debc1fcf0bfa231475331fa1a868b671d12f814b93a1dddff70a2b1678bf16ad0e46183a3b5e01b422176d4fd004365376b1729f9987e5d5d66929c80141f00bcd5107ae78a43906eac4f0866c062ec90c14baf227d5978209321c6502487459e5e0b05060ca207cd9711ad17e24a37c17d87ac4f3f535b7e658e59cc7adea6c73ca52eaf4721f2b7dc35834636407d4cafb3a5e46b394d8418ffbafeb368d77c23b1670c0642414245b50103200100002e2f111100000000fc2d16f5d66921eca17c7fd28404854882df25869f42d176daf1b70311332408e6d9a8c1f1650014238b30fa077038ac2db8c67ab69bac73c9943e67ccc89802cfc77a9225ea70163d3eb2b7f7ad0838d8ce42bb462aacc331c51e218a6b400404424545468403f1225fd525230c5f891a9e5c25795009a8eb02d094108ca7a11c682747d5362005424142450101ec05277c6b3cd72eadc46dadf2649e5a14e0ca0700dc855b777211944694e1400a3700db68561e1200f75e24a2fd9a2d812f66d9b2eb23bc94ff687233492c87", + "0x1d0a8400722390361d12b7204267c0f53aa8899bb236a9b154491e12447ce452f1cdc9eb00211523bd124c9dd3c9cba88fda328c647df650a0f28242bfa356ea60afe58d21751c7d8652cbfc02335db871e2b14c54da42180b242fd0d80bbb17a6afdf5209b5010c001a000807000b0040e59c30120007054000605fd1308af1ce85bab5ba3fb19b330ab7dac29e01ad501420560f44df7e0e1c0038a295559d8977464fd8cdd133f8805f2388e42a6e009219247048a27d9ac06b00f58927b296a23cbf25794b7cbb8fe31c5e68f2bcd2c2483e9c9cd0712216f23200d880b45154006c09eb568c69f1febc0dadccaa59723dcd058cdae45c9c13ae68001bbdfb8e2904d640a26915c57200ac20ee110d6490d5e5129271b09d2ebf2c3600c2eea43fd0e45e0e756130e01667533bcaa001e29e0192501e7ce2186ec3554a00e8c7ad65c15fa3ba64424a61b177382a0c5468135aecca9ca454f5e7ce4d305b008c038403fe48ee0068a652cfe2593d30d5701f508e38ef676f392fdc85f8065800c65de6003709aa5a6b81354c00fb13e281ac05e852cb4194c69f78566e8ac828001600e09e1d8a1324934f83d55d5f6f503e2d91bf4270eeaefd462f24e4487e290020ac6c23e69518f5c048cdd4341f431d23f1bdcba3abfaf7349241db61ce1317002c2a55b5a609baff13899d4ba4bafec105038d66a716494968fae1a849d2dd5a00d88e71e550f7c318065fe4ce9c7d58430af17fa534f87d27195dd93cce667719002c057adfe2964a58e311013d80e9955a8896ee86be537ef9c6bd983122d6ee5f00cc2dde4403d477d784abb0486ce18908af209f2c9d8581d33f7e847608b5d124000238a0a2b0989bb426df8ac92118b4228a81b354d0c87d8acd25c8de509f2226", + "0xc1018400cc9e0d9384509ed8ef444bf534bbc86666b2fd4d5570658c25444c2e2ba6985b014a339b254c69f7d8e19f9996eca1c8ace229da7481e213d8f77f2c8cb4d37716f88d44090de97b0660c3479b5bf7536bae3027a7aadac7b4ce4f3970f342d78c550275050007020700e40b5402" + ] +} \ No newline at end of file diff --git a/src/services/test-helpers/mock/index.ts b/src/services/test-helpers/mock/index.ts index 29b1d8b10..17db01727 100644 --- a/src/services/test-helpers/mock/index.ts +++ b/src/services/test-helpers/mock/index.ts @@ -19,6 +19,7 @@ export * from './mockApi'; export * from './mockApiBlock18468942'; export * from './mockApiBlock19772575'; export * from './mockApiKusamaBlock22939322'; +export * from './mockApiPolkadotBlock21157800'; export * from './mockAssetHubKusamaApi'; export * from './mockAssetHubKusamaApiBlock3356195'; export * from './mockAssetHubKusamaApiBlock6202603'; @@ -31,6 +32,7 @@ export * from './mockBlock6202603'; export * from './mockBlock13641102'; export * from './mockBlock18468942'; export * from './mockBlock19772575'; +export * from './mockBlock21157800'; export * from './mockBlock22939322'; export * from './mockBlockHashes'; export * from './transactions'; diff --git a/src/services/test-helpers/mock/mockApiKusamaBlock22939322.ts b/src/services/test-helpers/mock/mockApiKusamaBlock22939322.ts index cf71fec90..ceb650c39 100644 --- a/src/services/test-helpers/mock/mockApiKusamaBlock22939322.ts +++ b/src/services/test-helpers/mock/mockApiKusamaBlock22939322.ts @@ -31,7 +31,7 @@ import { import BN from 'bn.js'; import { kusamaMetadataV1002000 } from '../../../test-helpers/metadata/kusamaV1002000Metadata'; -import { kusamRegistryV1002000 } from '../../../test-helpers/registries'; +import { kusamaRegistryV1002000 } from '../../../test-helpers/registries'; import { balancesTransferValid, blockHash22939322, mockBlock22939322, testAddressControllerKusama } from '.'; import { localListenAddressesHex } from './data/localListenAddresses'; import { getPalletDispatchables } from './data/mockDispatchablesData'; @@ -40,7 +40,7 @@ import traceBlockRPC from './data/traceBlock.json'; const chain = () => Promise.resolve().then(() => { - return kusamRegistryV1002000.createType('Text', 'Kusama'); + return kusamaRegistryV1002000.createType('Text', 'Kusama'); }); export const getBlock22939322 = (_hash: Hash): Promise<{ block: Block }> => @@ -53,7 +53,7 @@ export const getBlock22939322 = (_hash: Hash): Promise<{ block: Block }> => export const deriveGetBlock22939322 = (_hash: Hash): Promise<{ block: Block; author: AccountId }> => Promise.resolve().then(() => { return { - author: kusamRegistryV1002000.createType('AccountId', '1zugcajGg5yDD9TEqKKzGx7iKuGWZMkRbYcyaFnaUaEkwMK'), + author: kusamaRegistryV1002000.createType('AccountId', '1zugcajGg5yDD9TEqKKzGx7iKuGWZMkRbYcyaFnaUaEkwMK'), block: mockBlock22939322, }; }); @@ -61,12 +61,12 @@ export const deriveGetBlock22939322 = (_hash: Hash): Promise<{ block: Block; aut const getHeader = (_hash: Hash) => Promise.resolve().then(() => mockBlock22939322.header); const runtimeVersion = { - specName: kusamRegistryV1002000.createType('Text', 'kusama'), - specVersion: kusamRegistryV1002000.createType('u32', 1002000), - transactionVersion: kusamRegistryV1002000.createType('u32', 25), - implVersion: kusamRegistryV1002000.createType('u32', 0), - implName: kusamRegistryV1002000.createType('Text', 'parity-kusama'), - authoringVersion: kusamRegistryV1002000.createType('u32', 2), + specName: kusamaRegistryV1002000.createType('Text', 'kusama'), + specVersion: kusamaRegistryV1002000.createType('u32', 1002000), + transactionVersion: kusamaRegistryV1002000.createType('u32', 25), + implVersion: kusamaRegistryV1002000.createType('u32', 0), + implName: kusamaRegistryV1002000.createType('Text', 'parity-kusama'), + authoringVersion: kusamaRegistryV1002000.createType('u32', 2), }; const getRuntimeVersion = () => @@ -79,33 +79,33 @@ const getMetadata = () => Promise.resolve().then(() => kusamaMetadataV1002000); const deriveGetHeader = () => Promise.resolve().then(() => { return { - author: kusamRegistryV1002000.createType('AccountId', '1zugcajGg5yDD9TEqKKzGx7iKuGWZMkRbYcyaFnaUaEkwMK'), + author: kusamaRegistryV1002000.createType('AccountId', '1zugcajGg5yDD9TEqKKzGx7iKuGWZMkRbYcyaFnaUaEkwMK'), }; }); const version = () => - Promise.resolve().then(() => kusamRegistryV1002000.createType('Text', '0.8.22-c6ee8675-x86_64-linux-gnu')); + Promise.resolve().then(() => kusamaRegistryV1002000.createType('Text', '0.8.22-c6ee8675-x86_64-linux-gnu')); export const activeEraAt22939322 = (_hash: Hash): Promise> => Promise.resolve().then(() => - kusamRegistryV1002000.createType('Option', { + kusamaRegistryV1002000.createType('Option', { index: 6555, start: 1714328874000, }), ); export const currentEraAt22939322 = (_hash: Hash): Promise> => - Promise.resolve().then(() => kusamRegistryV1002000.createType('Option', 6555)); + Promise.resolve().then(() => kusamaRegistryV1002000.createType('Option', 6555)); export const erasStartSessionIndexAt22939322 = (_hash: Hash, _activeEra: EraIndex): Promise> => - Promise.resolve().then(() => kusamRegistryV1002000.createType('Option', 38713)); + Promise.resolve().then(() => kusamaRegistryV1002000.createType('Option', 38713)); export const bondedAt22939322 = (_hash: Hash, _address: string): Promise> => - Promise.resolve().then(() => kusamRegistryV1002000.createType('Option', testAddressControllerKusama)); + Promise.resolve().then(() => kusamaRegistryV1002000.createType('Option', testAddressControllerKusama)); export const ledgerAt22939322 = (_hash: Hash, _address: string): Promise> => Promise.resolve().then(() => - kusamRegistryV1002000.createType( + kusamaRegistryV1002000.createType( 'Option', '0x2c2a55b5e0d28cc772b47bb9b25981cbb69eca73f7c3388fb6464e7d24be470e0700e87648170700e8764817008c000000000100000002000000030000000400000005000000060000000700000008000000090000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000', ), @@ -114,22 +114,25 @@ export const ledgerAt22939322 = (_hash: Hash, _address: string): Promise Promise.resolve().then(() => - kusamRegistryV1002000.createType('BlockHash', '0xc0096358534ec8d21d01d34b836eed476a1c343f8724fa2153dc0725ad797a90'), + kusamaRegistryV1002000.createType( + 'BlockHash', + '0xc0096358534ec8d21d01d34b836eed476a1c343f8724fa2153dc0725ad797a90', + ), ); const queryFeeDetails = () => Promise.resolve().then(() => { - const inclusionFee = kusamRegistryV1002000.createType('Option', { + const inclusionFee = kusamaRegistryV1002000.createType('Option', { baseFee: 10000000, lenFee: 143000000, adjustedWeightFee: 20, }); - return kusamRegistryV1002000.createType('FeeDetails', { + return kusamaRegistryV1002000.createType('FeeDetails', { inclusionFee, }); }); -const runtimeDispatchInfo = kusamRegistryV1002000.createType('RuntimeDispatchInfo', { +const runtimeDispatchInfo = kusamaRegistryV1002000.createType('RuntimeDispatchInfo', { weight: { refTime: 1200000000, proofSize: 20000, @@ -147,20 +150,20 @@ export const queryInfoAt22939322 = (_extrinsic: string, _hash: Hash): Promise runtimeDispatchInfo); export const submitExtrinsic22939322 = (_extrinsic: string): Promise => - Promise.resolve().then(() => kusamRegistryV1002000.createType('Hash')); + Promise.resolve().then(() => kusamaRegistryV1002000.createType('Hash')); -const getStorage = () => Promise.resolve().then(() => kusamRegistryV1002000.createType('Option', '0x00')); +const getStorage = () => Promise.resolve().then(() => kusamaRegistryV1002000.createType('Option', '0x00')); const chainType = () => Promise.resolve().then(() => - kusamRegistryV1002000.createType('ChainType', { + kusamaRegistryV1002000.createType('ChainType', { Live: null, }), ); const properties = () => Promise.resolve().then(() => - kusamRegistryV1002000.createType('ChainProperties', { + kusamaRegistryV1002000.createType('ChainProperties', { ss58Format: '2', tokenDecimals: '12', tokenSymbol: 'KSM', @@ -169,28 +172,29 @@ const properties = () => const getFinalizedHead = () => Promise.resolve().then(() => blockHash22939322); -const health = () => Promise.resolve().then(() => kusamRegistryV1002000.createType('Health', '0x7a000000000000000001')); +const health = () => + Promise.resolve().then(() => kusamaRegistryV1002000.createType('Health', '0x7a000000000000000001')); const localListenAddresses = () => - Promise.resolve().then(() => kusamRegistryV1002000.createType('Vec', localListenAddressesHex)); + Promise.resolve().then(() => kusamaRegistryV1002000.createType('Vec', localListenAddressesHex)); -const nodeRoles = () => Promise.resolve().then(() => kusamRegistryV1002000.createType('Vec', '0x0400')); +const nodeRoles = () => Promise.resolve().then(() => kusamaRegistryV1002000.createType('Vec', '0x0400')); const localPeerId = () => Promise.resolve().then(() => - kusamRegistryV1002000.createType( + kusamaRegistryV1002000.createType( 'Text', '0x313244334b6f6f57415a66686a79717a4674796435357665424a78545969516b5872614d584c704d4d6a355a6f3471756431485a', ), ); export const pendingExtrinsics22939322 = (): Promise> => - Promise.resolve().then(() => kusamRegistryV1002000.createType('Vec')); + Promise.resolve().then(() => kusamaRegistryV1002000.createType('Vec')); -export const tx22939322 = (): Extrinsic => kusamRegistryV1002000.createType('Extrinsic', balancesTransferValid); +export const tx22939322 = (): Extrinsic => kusamaRegistryV1002000.createType('Extrinsic', balancesTransferValid); const traceBlock = () => - Promise.resolve().then(() => kusamRegistryV1002000.createType('TraceBlockResponse', traceBlockRPC.result)); + Promise.resolve().then(() => kusamaRegistryV1002000.createType('TraceBlockResponse', traceBlockRPC.result)); /** * Deafult Mock polkadot-js ApiPromise. Values are largely meant to be accurate for block @@ -215,7 +219,7 @@ export const defaultMockApi22939322 = { }, blockWeights: { baseBlock: new BN(5481991000), - maxBlock: kusamRegistryV1002000.createType('u64', 15), + maxBlock: kusamaRegistryV1002000.createType('u64', 15), perClass: { normal: { baseExtrinsic: new BN(85212000), @@ -242,14 +246,14 @@ export const defaultMockApi22939322 = { operationalFeeMultiplier: new BN(5), }, staking: { - historyDepth: kusamRegistryV1002000.createType('u32', 84), + historyDepth: kusamaRegistryV1002000.createType('u32', 84), }, }, - createType: kusamRegistryV1002000.createType.bind(kusamRegistryV1002000), - registry: kusamRegistryV1002000, + createType: kusamaRegistryV1002000.createType.bind(kusamaRegistryV1002000), + registry: kusamaRegistryV1002000, tx: getPalletDispatchables, - runtimeMetadata: kusamRegistryV1002000, + runtimeMetadata: kusamaRegistryV1002000, rpc: { chain: { getHeader, diff --git a/src/services/test-helpers/mock/mockApiPolkadotBlock21157800.ts b/src/services/test-helpers/mock/mockApiPolkadotBlock21157800.ts new file mode 100644 index 000000000..d15d58e01 --- /dev/null +++ b/src/services/test-helpers/mock/mockApiPolkadotBlock21157800.ts @@ -0,0 +1,300 @@ +// Copyright 2017-2024 Parity Technologies (UK) Ltd. +// This file is part of Substrate API Sidecar. +// +// Substrate API Sidecar is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +import { ApiPromise } from '@polkadot/api'; +import { GenericExtrinsic, u32, Vec } from '@polkadot/types'; +import { Option } from '@polkadot/types/codec'; +import { + AccountId, + ActiveEraInfo, + Block, + EraIndex, + Extrinsic, + Hash, + RuntimeDispatchInfo, + SessionIndex, + StakingLedger, +} from '@polkadot/types/interfaces'; +import BN from 'bn.js'; + +import { polkadotMetadataRpcV1002000 } from '../../../test-helpers/metadata/polkadotV1002000Metadata'; +import { polkadotRegistryV1002000 } from '../../../test-helpers/registries'; +import { balancesTransferValid, blockHash21157800, mockBlock21157800, testAddressControllerPolkadot } from '.'; +import { localListenAddressesHex } from './data/localListenAddresses'; +import { getPalletDispatchables } from './data/mockDispatchablesData'; +import { getMetadata as mockMetaData } from './data/mockNonimationPoolResponseData'; +import traceBlockRPC from './data/traceBlock.json'; + +const chain = () => + Promise.resolve().then(() => { + return polkadotRegistryV1002000.createType('Text', 'Kusama'); + }); + +export const getBlock21157800 = (_hash: Hash): Promise<{ block: Block }> => + Promise.resolve().then(() => { + return { + block: mockBlock21157800, + }; + }); + +export const deriveGetBlock21157800 = (_hash: Hash): Promise<{ block: Block; author: AccountId }> => + Promise.resolve().then(() => { + return { + author: polkadotRegistryV1002000.createType('AccountId', '1zugcajGg5yDD9TEqKKzGx7iKuGWZMkRbYcyaFnaUaEkwMK'), + block: mockBlock21157800, + }; + }); + +const getHeader = (_hash: Hash) => Promise.resolve().then(() => mockBlock21157800.header); + +const runtimeVersion = { + specName: polkadotRegistryV1002000.createType('Text', 'kusama'), + specVersion: polkadotRegistryV1002000.createType('u32', 1002000), + transactionVersion: polkadotRegistryV1002000.createType('u32', 25), + implVersion: polkadotRegistryV1002000.createType('u32', 0), + implName: polkadotRegistryV1002000.createType('Text', 'parity-kusama'), + authoringVersion: polkadotRegistryV1002000.createType('u32', 2), +}; + +const getRuntimeVersion = () => + Promise.resolve().then(() => { + return runtimeVersion; + }); + +const getMetadata = () => Promise.resolve().then(() => polkadotMetadataRpcV1002000); + +const deriveGetHeader = () => + Promise.resolve().then(() => { + return { + author: polkadotRegistryV1002000.createType('AccountId', '13ogHzWQksuwuw4dv6jph1GHGBxjSP8qzwRJzT69dhnhYEv2'), + }; + }); + +const version = () => + Promise.resolve().then(() => polkadotRegistryV1002000.createType('Text', '0.8.22-c6ee8675-x86_64-linux-gnu')); + +export const activeEraAt21157800 = (_hash: Hash): Promise> => + Promise.resolve().then(() => + polkadotRegistryV1002000.createType('Option', { + index: 1469, + start: 1717947378000, + }), + ); + +export const currentEraAt21157800 = (_hash: Hash): Promise> => + Promise.resolve().then(() => polkadotRegistryV1002000.createType('Option', 1470)); + +export const erasStartSessionIndexAt21157800 = (_hash: Hash, _activeEra: EraIndex): Promise> => + Promise.resolve().then(() => polkadotRegistryV1002000.createType('Option', 38713)); + +export const bondedAt21157800 = (_hash: Hash, _address: string): Promise> => + Promise.resolve().then(() => polkadotRegistryV1002000.createType('Option', testAddressControllerPolkadot)); + +export const ledgerAt21157800 = (_hash: Hash, _address: string): Promise> => + Promise.resolve().then(() => + polkadotRegistryV1002000.createType( + 'Option', + '0x2c2a55b5e0d28cc772b47bb9b25981cbb69eca73f7c3388fb6464e7d24be470e0700e87648170700e8764817008c000000000100000002000000030000000400000005000000060000000700000008000000090000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000', + ), + ); + +// For getting the blockhash of the genesis block +const getBlockHashGenesis = (_zero: number) => + Promise.resolve().then(() => + polkadotRegistryV1002000.createType( + 'BlockHash', + '0xc0096358534ec8d21d01d34b836eed476a1c343f8724fa2153dc0725ad797a90', + ), + ); + +const queryFeeDetails = () => + Promise.resolve().then(() => { + const inclusionFee = polkadotRegistryV1002000.createType('Option', { + baseFee: 10000000, + lenFee: 143000000, + adjustedWeightFee: 20, + }); + return polkadotRegistryV1002000.createType('FeeDetails', { + inclusionFee, + }); + }); + +const runtimeDispatchInfo = polkadotRegistryV1002000.createType('RuntimeDispatchInfo', { + weight: { + refTime: 1200000000, + proofSize: 20000, + }, + class: 'Normal', + partialFee: 149000000, +}); + +export const queryInfoCall21157800 = ( + _extrinsic: GenericExtrinsic, + _length: Uint8Array, +): Promise => Promise.resolve().then(() => runtimeDispatchInfo); + +export const queryInfoAt21157800 = (_extrinsic: string, _hash: Hash): Promise => + Promise.resolve().then(() => runtimeDispatchInfo); + +export const submitExtrinsic21157800 = (_extrinsic: string): Promise => + Promise.resolve().then(() => polkadotRegistryV1002000.createType('Hash')); + +const getStorage = () => Promise.resolve().then(() => polkadotRegistryV1002000.createType('Option', '0x00')); + +const chainType = () => + Promise.resolve().then(() => + polkadotRegistryV1002000.createType('ChainType', { + Live: null, + }), + ); + +const properties = () => + Promise.resolve().then(() => + polkadotRegistryV1002000.createType('ChainProperties', { + ss58Format: '2', + tokenDecimals: '12', + tokenSymbol: 'KSM', + }), + ); + +const getFinalizedHead = () => Promise.resolve().then(() => blockHash21157800); + +const health = () => + Promise.resolve().then(() => polkadotRegistryV1002000.createType('Health', '0x7a000000000000000001')); + +const localListenAddresses = () => + Promise.resolve().then(() => polkadotRegistryV1002000.createType('Vec', localListenAddressesHex)); + +const nodeRoles = () => Promise.resolve().then(() => polkadotRegistryV1002000.createType('Vec', '0x0400')); + +const localPeerId = () => + Promise.resolve().then(() => + polkadotRegistryV1002000.createType( + 'Text', + '0x313244334b6f6f57415a66686a79717a4674796435357665424a78545969516b5872614d584c704d4d6a355a6f3471756431485a', + ), + ); + +export const pendingExtrinsics21157800 = (): Promise> => + Promise.resolve().then(() => polkadotRegistryV1002000.createType('Vec')); + +export const tx21157800 = (): Extrinsic => polkadotRegistryV1002000.createType('Extrinsic', balancesTransferValid); + +const traceBlock = () => + Promise.resolve().then(() => polkadotRegistryV1002000.createType('TraceBlockResponse', traceBlockRPC.result)); + +/** + * Deafult Mock polkadot-js ApiPromise. Values are largely meant to be accurate for block + * #21157800, which is what most Service unit tests are based on. + */ +export const defaultMockApi21157800 = { + runtimeVersion, + call: { + transactionPaymentApi: { + queryInfo: queryInfoCall21157800, + queryFeeDetails, + }, + }, + consts: { + system: { + blockLength: { + max: { + normal: new BN(3932160), + operational: new BN(5242880), + mandatory: new BN(5242880), + }, + }, + blockWeights: { + baseBlock: new BN(5481991000), + maxBlock: polkadotRegistryV1002000.createType('u64', 15), + perClass: { + normal: { + baseExtrinsic: new BN(85212000), + maxExtrinsic: new BN(1479914788000), + maxTotal: new BN(1500000000000), + reserved: new BN(0), + }, + operational: { + baseExtrinsic: new BN(85212000), + maxExtrinsic: new BN(1979914788000), + maxTotal: new BN(2000000000000), + reserved: new BN(500000000000), + }, + mandatory: { + baseExtrinsic: new BN(85212000), + maxExtrinsic: null, + maxTotal: null, + reserved: null, + }, + }, + }, + }, + transactionPayment: { + operationalFeeMultiplier: new BN(5), + }, + staking: { + historyDepth: polkadotRegistryV1002000.createType('u32', 84), + }, + }, + createType: polkadotRegistryV1002000.createType.bind(polkadotRegistryV1002000), + registry: polkadotRegistryV1002000, + + tx: getPalletDispatchables, + runtimeMetadata: polkadotRegistryV1002000, + rpc: { + chain: { + getHeader, + getBlock21157800, + getBlockHash: getBlockHashGenesis, + getFinalizedHead, + }, + state: { + getRuntimeVersion, + getMetadata, + getStorage, + traceBlock, + }, + system: { + chain, + health, + localListenAddresses, + nodeRoles, + localPeerId, + version, + chainType, + properties, + }, + payment: { + queryInfo: queryInfoAt21157800, + queryFeeDetails, + }, + author: { + submitExtrinsic21157800, + pendingExtrinsics21157800, + }, + }, + derive: { + chain: { + getHeader: deriveGetHeader, + getBlock: deriveGetBlock21157800, + }, + }, + query: { + nominationPools: { + metadata: mockMetaData, + }, + }, +} as unknown as ApiPromise; diff --git a/src/services/test-helpers/mock/mockBlock21157800.ts b/src/services/test-helpers/mock/mockBlock21157800.ts new file mode 100644 index 000000000..14d07496d --- /dev/null +++ b/src/services/test-helpers/mock/mockBlock21157800.ts @@ -0,0 +1,31 @@ +// Copyright 2017-2024 Parity Technologies (UK) Ltd. +// This file is part of Substrate API Sidecar. +// +// Substrate API Sidecar is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +import { polkadotRegistryV1002000 } from '../../../test-helpers/registries'; +import block21157800 from './data/block21157800.json'; + +/** + * Mock for Polkadot block #21157800. + */ +export const mockBlock21157800 = polkadotRegistryV1002000.createType('Block', block21157800); + +/** + * BlockHash for Polkadot block #21157800. + */ +export const blockHash21157800 = polkadotRegistryV1002000.createType( + 'BlockHash', + '0x59de258cf9999635c866df7bc5f397d152892827f887d3629344cb3cebba134f', +); diff --git a/src/services/test-helpers/mock/mockBlock22939322.ts b/src/services/test-helpers/mock/mockBlock22939322.ts index 76f600e7e..a9a831d22 100644 --- a/src/services/test-helpers/mock/mockBlock22939322.ts +++ b/src/services/test-helpers/mock/mockBlock22939322.ts @@ -14,18 +14,18 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -import { kusamRegistryV1002000 } from '../../../test-helpers/registries'; +import { kusamaRegistryV1002000 } from '../../../test-helpers/registries'; import block22939322 from './data/block22939322.json'; /** * Mock for Kusama block #22939322. */ -export const mockBlock22939322 = kusamRegistryV1002000.createType('Block', block22939322); +export const mockBlock22939322 = kusamaRegistryV1002000.createType('Block', block22939322); /** * BlockHash for Kusama block #22939322. */ -export const blockHash22939322 = kusamRegistryV1002000.createType( +export const blockHash22939322 = kusamaRegistryV1002000.createType( 'BlockHash', '0x1ef674fffb042c9016987e0e3995a36401a7e2b66e0b6c0bb111a0b049857098', ); diff --git a/src/services/test-helpers/responses/accounts/stakingInfo21157800.json b/src/services/test-helpers/responses/accounts/stakingInfo21157800.json new file mode 100644 index 000000000..903e021e7 --- /dev/null +++ b/src/services/test-helpers/responses/accounts/stakingInfo21157800.json @@ -0,0 +1,363 @@ +{ + "at": { + "hash": "0x59de258cf9999635c866df7bc5f397d152892827f887d3629344cb3cebba134f", + "height": "21157800" + }, + "controller": "13vxvvF6uQpxq6eEp94TrDZfR6afFfbBeipnJwCgctyc7bNX", + "rewardDestination": { + "account": "144A3ErZsuQsHauKCRxbrcySvTPEnQNVshpxa2kQ1DrYPPG" + }, + "numSlashingSpans": "2", + "staking": { + "stash": "11VR4pF6c7kfBhfmuwwjWY3FodeYBKWx7ix2rsRCU2q6hqJ", + "total": "7749798828817", + "active": "7749798828817", + "unlocking": [], + "claimedRewards": [ + { + "era": "1385", + "status": "claimed" + }, + { + "era": "1386", + "status": "claimed" + }, + { + "era": "1387", + "status": "claimed" + }, + { + "era": "1388", + "status": "claimed" + }, + { + "era": "1389", + "status": "claimed" + }, + { + "era": "1390", + "status": "claimed" + }, + { + "era": "1391", + "status": "claimed" + }, + { + "era": "1392", + "status": "claimed" + }, + { + "era": "1393", + "status": "claimed" + }, + { + "era": "1394", + "status": "claimed" + }, + { + "era": "1395", + "status": "claimed" + }, + { + "era": "1396", + "status": "claimed" + }, + { + "era": "1397", + "status": "claimed" + }, + { + "era": "1398", + "status": "claimed" + }, + { + "era": "1399", + "status": "claimed" + }, + { + "era": "1400", + "status": "claimed" + }, + { + "era": "1401", + "status": "claimed" + }, + { + "era": "1402", + "status": "claimed" + }, + { + "era": "1403", + "status": "claimed" + }, + { + "era": "1404", + "status": "claimed" + }, + { + "era": "1405", + "status": "claimed" + }, + { + "era": "1406", + "status": "claimed" + }, + { + "era": "1407", + "status": "claimed" + }, + { + "era": "1408", + "status": "claimed" + }, + { + "era": "1409", + "status": "claimed" + }, + { + "era": "1410", + "status": "claimed" + }, + { + "era": "1411", + "status": "claimed" + }, + { + "era": "1412", + "status": "claimed" + }, + { + "era": "1413", + "status": "claimed" + }, + { + "era": "1414", + "status": "claimed" + }, + { + "era": "1415", + "status": "claimed" + }, + { + "era": "1416", + "status": "claimed" + }, + { + "era": "1417", + "status": "claimed" + }, + { + "era": "1418", + "status": "claimed" + }, + { + "era": "1419", + "status": "claimed" + }, + { + "era": "1420", + "status": "claimed" + }, + { + "era": "1421", + "status": "claimed" + }, + { + "era": "1422", + "status": "claimed" + }, + { + "era": "1423", + "status": "claimed" + }, + { + "era": "1424", + "status": "claimed" + }, + { + "era": "1425", + "status": "claimed" + }, + { + "era": "1426", + "status": "claimed" + }, + { + "era": "1427", + "status": "claimed" + }, + { + "era": "1428", + "status": "claimed" + }, + { + "era": "1429", + "status": "claimed" + }, + { + "era": "1430", + "status": "claimed" + }, + { + "era": "1431", + "status": "claimed" + }, + { + "era": "1432", + "status": "claimed" + }, + { + "era": "1433", + "status": "claimed" + }, + { + "era": "1434", + "status": "claimed" + }, + { + "era": "1435", + "status": "claimed" + }, + { + "era": "1436", + "status": "claimed" + }, + { + "era": "1437", + "status": "claimed" + }, + { + "era": "1438", + "status": "claimed" + }, + { + "era": "1439", + "status": "claimed" + }, + { + "era": "1440", + "status": "claimed" + }, + { + "era": "1441", + "status": "claimed" + }, + { + "era": "1442", + "status": "claimed" + }, + { + "era": "1443", + "status": "claimed" + }, + { + "era": "1444", + "status": "claimed" + }, + { + "era": "1445", + "status": "claimed" + }, + { + "era": "1446", + "status": "claimed" + }, + { + "era": "1447", + "status": "claimed" + }, + { + "era": "1448", + "status": "claimed" + }, + { + "era": "1449", + "status": "claimed" + }, + { + "era": "1450", + "status": "claimed" + }, + { + "era": "1451", + "status": "claimed" + }, + { + "era": "1452", + "status": "claimed" + }, + { + "era": "1453", + "status": "claimed" + }, + { + "era": "1454", + "status": "claimed" + }, + { + "era": "1455", + "status": "claimed" + }, + { + "era": "1456", + "status": "claimed" + }, + { + "era": "1457", + "status": "claimed" + }, + { + "era": "1458", + "status": "claimed" + }, + { + "era": "1459", + "status": "claimed" + }, + { + "era": "1460", + "status": "claimed" + }, + { + "era": "1461", + "status": "claimed" + }, + { + "era": "1462", + "status": "claimed" + }, + { + "era": "1463", + "status": "claimed" + }, + { + "era": "1464", + "status": "claimed" + }, + { + "era": "1465", + "status": "claimed" + }, + { + "era": "1466", + "status": "claimed" + }, + { + "era": "1467", + "status": "claimed" + }, + { + "era": "1468", + "status": "partially claimed" + }, + { + "era": "1469", + "status": "unclaimed" + }, + { + "era": "1470", + "status": "unclaimed" + } + ] + } +} \ No newline at end of file diff --git a/src/test-helpers/metadata/polkadotV1002000Metadata.ts b/src/test-helpers/metadata/polkadotV1002000Metadata.ts new file mode 100644 index 000000000..bba3fdaef --- /dev/null +++ b/src/test-helpers/metadata/polkadotV1002000Metadata.ts @@ -0,0 +1,18 @@ +// Copyright 2017-2024 Parity Technologies (UK) Ltd. +// This file is part of Substrate API Sidecar. +// +// Substrate API Sidecar is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +export const polkadotMetadataRpcV1002000 = + '0x6d6574610e910d000c1c73705f636f72651863727970746f2c4163636f756e7449643332000004000401205b75383b2033325d0000040000032000000008000800000503000c08306672616d655f73797374656d2c4163636f756e74496e666f08144e6f6e636501102c4163636f756e74446174610114001401146e6f6e63651001144e6f6e6365000124636f6e73756d657273100120526566436f756e7400012470726f766964657273100120526566436f756e7400012c73756666696369656e7473100120526566436f756e740001106461746114012c4163636f756e74446174610000100000050500140c3c70616c6c65745f62616c616e6365731474797065732c4163636f756e7444617461041c42616c616e63650118001001106672656518011c42616c616e6365000120726573657276656418011c42616c616e636500011866726f7a656e18011c42616c616e6365000114666c6167731c01284578747261466c61677300001800000507001c0c3c70616c6c65745f62616c616e636573147479706573284578747261466c61677300000400180110753132380000200c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540124000c01186e6f726d616c2401045400012c6f7065726174696f6e616c240104540001246d616e6461746f7279240104540000240c2873705f77656967687473247765696768745f76321857656967687400000801207265665f74696d6528010c75363400012870726f6f665f73697a6528010c7536340000280000062c002c000005060030083c7072696d69746976655f74797065731048323536000004000401205b75383b2033325d000034000002080038102873705f72756e74696d651c67656e65726963186469676573741844696765737400000401106c6f67733c013c5665633c4469676573744974656d3e00003c000002400040102873705f72756e74696d651c67656e6572696318646967657374284469676573744974656d0001142850726552756e74696d650800440144436f6e73656e737573456e67696e654964000034011c5665633c75383e00060024436f6e73656e7375730800440144436f6e73656e737573456e67696e654964000034011c5665633c75383e000400105365616c0800440144436f6e73656e737573456e67696e654964000034011c5665633c75383e000500144f74686572040034011c5665633c75383e0000006452756e74696d65456e7669726f6e6d656e74557064617465640008000044000003040000000800480000024c004c08306672616d655f73797374656d2c4576656e745265636f7264080445015004540130000c011470686173652108011450686173650001146576656e7450010445000118746f70696373b90101185665633c543e0000500840706f6c6b61646f745f72756e74696d653052756e74696d654576656e7400019c1853797374656d04005401706672616d655f73797374656d3a3a4576656e743c52756e74696d653e000000245363686564756c657204007c018070616c6c65745f7363686564756c65723a3a4576656e743c52756e74696d653e00010020507265696d616765040090017c70616c6c65745f707265696d6167653a3a4576656e743c52756e74696d653e000a001c496e6469636573040094017870616c6c65745f696e64696365733a3a4576656e743c52756e74696d653e0004002042616c616e636573040098017c70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d653e000500485472616e73616374696f6e5061796d656e740400a001a870616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4576656e743c52756e74696d653e0020001c5374616b696e670400a4017870616c6c65745f7374616b696e673a3a4576656e743c52756e74696d653e000700204f6666656e6365730400bc015870616c6c65745f6f6666656e6365733a3a4576656e740008001c53657373696f6e0400c4015470616c6c65745f73657373696f6e3a3a4576656e740009001c4772616e6470610400c8015470616c6c65745f6772616e6470613a3a4576656e74000b0020496d4f6e6c696e650400dc018070616c6c65745f696d5f6f6e6c696e653a3a4576656e743c52756e74696d653e000c0020547265617375727904000101017c70616c6c65745f74726561737572793a3a4576656e743c52756e74696d653e00130040436f6e76696374696f6e566f74696e670400890101a070616c6c65745f636f6e76696374696f6e5f766f74696e673a3a4576656e743c52756e74696d653e001400245265666572656e646104008d01018070616c6c65745f7265666572656e64613a3a4576656e743c52756e74696d653e0015002457686974656c69737404007d07018070616c6c65745f77686974656c6973743a3a4576656e743c52756e74696d653e00170018436c61696d73040091070158636c61696d733a3a4576656e743c52756e74696d653e0018001c56657374696e6704009507017870616c6c65745f76657374696e673a3a4576656e743c52756e74696d653e0019001c5574696c69747904009907015470616c6c65745f7574696c6974793a3a4576656e74001a00204964656e7469747904009d07017c70616c6c65745f6964656e746974793a3a4576656e743c52756e74696d653e001c001450726f78790400a107017070616c6c65745f70726f78793a3a4576656e743c52756e74696d653e001d00204d756c74697369670400a507017c70616c6c65745f6d756c74697369673a3a4576656e743c52756e74696d653e001e0020426f756e746965730400a907017c70616c6c65745f626f756e746965733a3a4576656e743c52756e74696d653e002200344368696c64426f756e746965730400ad07019470616c6c65745f6368696c645f626f756e746965733a3a4576656e743c52756e74696d653e00260068456c656374696f6e50726f76696465724d756c746950686173650400b10701d070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173653a3a4576656e743c52756e74696d653e00240024566f7465724c6973740400c10701f470616c6c65745f626167735f6c6973743a3a4576656e743c52756e74696d652c2070616c6c65745f626167735f6c6973743a3a496e7374616e6365313e0025003c4e6f6d696e6174696f6e506f6f6c730400c507019c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c733a3a4576656e743c52756e74696d653e0027002c46617374556e7374616b650400c907018c70616c6c65745f666173745f756e7374616b653a3a4576656e743c52756e74696d653e0028003450617261496e636c7573696f6e0400cd07019070617261636861696e735f696e636c7573696f6e3a3a4576656e743c52756e74696d653e0035001450617261730400dd07015c70617261636861696e735f70617261733a3a4576656e740038001048726d700400e107017c70617261636861696e735f68726d703a3a4576656e743c52756e74696d653e003c0034506172617344697370757465730400e507018c70617261636861696e735f64697370757465733a3a4576656e743c52756e74696d653e003e00245265676973747261720400f107017c70617261735f7265676973747261723a3a4576656e743c52756e74696d653e00460014536c6f74730400f5070154736c6f74733a3a4576656e743c52756e74696d653e0047002041756374696f6e730400f907016061756374696f6e733a3a4576656e743c52756e74696d653e0048002443726f77646c6f616e0400fd07016463726f77646c6f616e3a3a4576656e743c52756e74696d653e004900485374617465547269654d6967726174696f6e0400010801ac70616c6c65745f73746174655f747269655f6d6967726174696f6e3a3a4576656e743c52756e74696d653e0062002458636d50616c6c657404000d08016870616c6c65745f78636d3a3a4576656e743c52756e74696d653e006300304d657373616765517565756504001508019070616c6c65745f6d6573736167655f71756575653a3a4576656e743c52756e74696d653e0064002441737365745261746504001d08018470616c6c65745f61737365745f726174653a3a4576656e743c52756e74696d653e00650000540c306672616d655f73797374656d1870616c6c6574144576656e7404045400011c4045787472696e7369635375636365737304013464697370617463685f696e666f5801304469737061746368496e666f00000490416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e3c45787472696e7369634661696c656408013864697370617463685f6572726f7264013444697370617463684572726f7200013464697370617463685f696e666f5801304469737061746368496e666f00010450416e2065787472696e736963206661696c65642e2c436f64655570646174656400020450603a636f6465602077617320757064617465642e284e65774163636f756e7404011c6163636f756e74000130543a3a4163636f756e7449640003046841206e6577206163636f756e742077617320637265617465642e344b696c6c65644163636f756e7404011c6163636f756e74000130543a3a4163636f756e74496400040458416e206163636f756e7420776173207265617065642e2052656d61726b656408011873656e646572000130543a3a4163636f756e7449640001106861736830011c543a3a48617368000504704f6e206f6e2d636861696e2072656d61726b2068617070656e65642e4455706772616465417574686f72697a6564080124636f64655f6861736830011c543a3a48617368000134636865636b5f76657273696f6e780110626f6f6c00060468416e20757067726164652077617320617574686f72697a65642e04704576656e7420666f72207468652053797374656d2070616c6c65742e580c346672616d655f737570706f7274206469737061746368304469737061746368496e666f00000c0118776569676874240118576569676874000114636c6173735c01344469737061746368436c617373000120706179735f6665656001105061797300005c0c346672616d655f737570706f7274206469737061746368344469737061746368436c61737300010c184e6f726d616c0000002c4f7065726174696f6e616c000100244d616e6461746f727900020000600c346672616d655f737570706f727420646973706174636810506179730001080c596573000000084e6f0001000064082873705f72756e74696d653444697370617463684572726f72000138144f746865720000003043616e6e6f744c6f6f6b7570000100244261644f726967696e000200184d6f64756c65040068012c4d6f64756c654572726f7200030044436f6e73756d657252656d61696e696e670004002c4e6f50726f76696465727300050040546f6f4d616e79436f6e73756d65727300060014546f6b656e04006c0128546f6b656e4572726f720007002841726974686d65746963040070013c41726974686d657469634572726f72000800345472616e73616374696f6e616c04007401485472616e73616374696f6e616c4572726f7200090024457868617573746564000a0028436f7272757074696f6e000b002c556e617661696c61626c65000c0038526f6f744e6f74416c6c6f776564000d000068082873705f72756e74696d652c4d6f64756c654572726f720000080114696e64657808010875380001146572726f7244018c5b75383b204d41585f4d4f44554c455f4552524f525f454e434f4445445f53495a455d00006c082873705f72756e74696d6528546f6b656e4572726f720001284046756e6473556e617661696c61626c65000000304f6e6c7950726f76696465720001003042656c6f774d696e696d756d0002003043616e6e6f7443726561746500030030556e6b6e6f776e41737365740004001846726f7a656e0005002c556e737570706f727465640006004043616e6e6f74437265617465486f6c64000700344e6f74457870656e6461626c650008001c426c6f636b65640009000070083473705f61726974686d657469633c41726974686d657469634572726f7200010c24556e646572666c6f77000000204f766572666c6f77000100384469766973696f6e42795a65726f0002000074082873705f72756e74696d65485472616e73616374696f6e616c4572726f72000108304c696d6974526561636865640000001c4e6f4c61796572000100007800000500007c0c4070616c6c65745f7363686564756c65721870616c6c6574144576656e74040454000118245363686564756c65640801107768656e100144426c6f636b4e756d626572466f723c543e000114696e64657810010c753332000004505363686564756c656420736f6d65207461736b2e2043616e63656c65640801107768656e100144426c6f636b4e756d626572466f723c543e000114696e64657810010c7533320001044c43616e63656c656420736f6d65207461736b2e28446973706174636865640c01107461736b8001785461736b416464726573733c426c6f636b4e756d626572466f723c543e3e00010869648401404f7074696f6e3c5461736b4e616d653e000118726573756c748801384469737061746368526573756c74000204544469737061746368656420736f6d65207461736b2e3c43616c6c556e617661696c61626c650801107461736b8001785461736b416464726573733c426c6f636b4e756d626572466f723c543e3e00010869648401404f7074696f6e3c5461736b4e616d653e00030429015468652063616c6c20666f72207468652070726f7669646564206861736820776173206e6f7420666f756e6420736f20746865207461736b20686173206265656e2061626f727465642e38506572696f6469634661696c65640801107461736b8001785461736b416464726573733c426c6f636b4e756d626572466f723c543e3e00010869648401404f7074696f6e3c5461736b4e616d653e0004043d0154686520676976656e207461736b2077617320756e61626c6520746f2062652072656e657765642073696e636520746865206167656e64612069732066756c6c206174207468617420626c6f636b2e545065726d616e656e746c794f7665727765696768740801107461736b8001785461736b416464726573733c426c6f636b4e756d626572466f723c543e3e00010869648401404f7074696f6e3c5461736b4e616d653e000504f054686520676976656e207461736b2063616e206e657665722062652065786563757465642073696e6365206974206973206f7665727765696768742e04304576656e747320747970652e80000004081010008404184f7074696f6e04045401040108104e6f6e6500000010536f6d650400040000010000880418526573756c74080454018c044501640108084f6b04008c000000000c45727204006400000100008c0000040000900c3c70616c6c65745f707265696d6167651870616c6c6574144576656e7404045400010c144e6f7465640401106861736830011c543a3a48617368000004684120707265696d61676520686173206265656e206e6f7465642e245265717565737465640401106861736830011c543a3a48617368000104784120707265696d61676520686173206265656e207265717565737465642e1c436c65617265640401106861736830011c543a3a486173680002046c4120707265696d616765206861732062656e20636c65617265642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574940c3870616c6c65745f696e64696365731870616c6c6574144576656e7404045400010c34496e64657841737369676e656408010c77686f000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e6465780000047441206163636f756e7420696e646578207761732061737369676e65642e28496e6465784672656564040114696e64657810013c543a3a4163636f756e74496e646578000104bc41206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e2c496e64657846726f7a656e080114696e64657810013c543a3a4163636f756e74496e64657800010c77686f000130543a3a4163636f756e744964000204e841206163636f756e7420696e64657820686173206265656e2066726f7a656e20746f206974732063757272656e74206163636f756e742049442e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574980c3c70616c6c65745f62616c616e6365731870616c6c6574144576656e740804540004490001581c456e646f77656408011c6163636f756e74000130543a3a4163636f756e744964000130667265655f62616c616e6365180128543a3a42616c616e6365000004b8416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e20447573744c6f737408011c6163636f756e74000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650001083d01416e206163636f756e74207761732072656d6f7665642077686f73652062616c616e636520776173206e6f6e2d7a65726f206275742062656c6f77204578697374656e7469616c4465706f7369742c78726573756c74696e6720696e20616e206f75747269676874206c6f73732e205472616e736665720c011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650002044c5472616e73666572207375636365656465642e2842616c616e636553657408010c77686f000130543a3a4163636f756e74496400011066726565180128543a3a42616c616e636500030468412062616c616e6365207761732073657420627920726f6f742e20526573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000404e0536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e28556e726573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000504e8536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e4852657365727665526570617472696174656410011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500014864657374696e6174696f6e5f7374617475739c01185374617475730006084d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652e1c4465706f73697408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000704d8536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e20576974686472617708010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650008041d01536f6d6520616d6f756e74207761732077697468647261776e2066726f6d20746865206163636f756e742028652e672e20666f72207472616e73616374696f6e2066656573292e1c536c617368656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650009040101536f6d6520616d6f756e74207761732072656d6f7665642066726f6d20746865206163636f756e742028652e672e20666f72206d69736265686176696f72292e184d696e74656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000a049c536f6d6520616d6f756e7420776173206d696e74656420696e746f20616e206163636f756e742e184275726e656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000b049c536f6d6520616d6f756e7420776173206275726e65642066726f6d20616e206163636f756e742e2453757370656e64656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000c041501536f6d6520616d6f756e74207761732073757370656e6465642066726f6d20616e206163636f756e74202869742063616e20626520726573746f726564206c61746572292e20526573746f72656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000d04a4536f6d6520616d6f756e742077617320726573746f72656420696e746f20616e206163636f756e742e20557067726164656404010c77686f000130543a3a4163636f756e744964000e0460416e206163636f756e74207761732075706772616465642e18497373756564040118616d6f756e74180128543a3a42616c616e6365000f042d01546f74616c2069737375616e63652077617320696e637265617365642062792060616d6f756e74602c206372656174696e6720612063726564697420746f2062652062616c616e6365642e2452657363696e646564040118616d6f756e74180128543a3a42616c616e63650010042501546f74616c2069737375616e636520776173206465637265617365642062792060616d6f756e74602c206372656174696e672061206465627420746f2062652062616c616e6365642e184c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500110460536f6d652062616c616e636520776173206c6f636b65642e20556e6c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500120468536f6d652062616c616e63652077617320756e6c6f636b65642e1846726f7a656e08010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500130460536f6d652062616c616e6365207761732066726f7a656e2e1854686177656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500140460536f6d652062616c616e636520776173207468617765642e4c546f74616c49737375616e6365466f7263656408010c6f6c64180128543a3a42616c616e636500010c6e6577180128543a3a42616c616e6365001504ac5468652060546f74616c49737375616e6365602077617320666f72636566756c6c79206368616e6765642e047c54686520604576656e746020656e756d206f6620746869732070616c6c65749c14346672616d655f737570706f72741874726169747318746f6b656e73106d6973633442616c616e6365537461747573000108104672656500000020526573657276656400010000a00c6870616c6c65745f7472616e73616374696f6e5f7061796d656e741870616c6c6574144576656e74040454000104485472616e73616374696f6e466565506169640c010c77686f000130543a3a4163636f756e74496400012861637475616c5f66656518013042616c616e63654f663c543e00010c74697018013042616c616e63654f663c543e000008590141207472616e73616374696f6e20666565206061637475616c5f666565602c206f662077686963682060746970602077617320616464656420746f20746865206d696e696d756d20696e636c7573696f6e206665652c5c686173206265656e2070616964206279206077686f602e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574a4103870616c6c65745f7374616b696e671870616c6c65741870616c6c6574144576656e740404540001481c457261506169640c01246572615f696e646578100120457261496e64657800014076616c696461746f725f7061796f757418013042616c616e63654f663c543e00012472656d61696e64657218013042616c616e63654f663c543e000008550154686520657261207061796f757420686173206265656e207365743b207468652066697273742062616c616e6365206973207468652076616c696461746f722d7061796f75743b20746865207365636f6e64206973c07468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642e2052657761726465640c01147374617368000130543a3a4163636f756e74496400011064657374a8017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000118616d6f756e7418013042616c616e63654f663c543e0001040d01546865206e6f6d696e61746f7220686173206265656e207265776172646564206279207468697320616d6f756e7420746f20746869732064657374696e6174696f6e2e1c536c61736865640801187374616b6572000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e0002041d0141207374616b6572202876616c696461746f72206f72206e6f6d696e61746f722920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e34536c6173685265706f727465640c012476616c696461746f72000130543a3a4163636f756e7449640001206672616374696f6eac011c50657262696c6c000124736c6173685f657261100120457261496e64657800030859014120736c61736820666f722074686520676976656e2076616c696461746f722c20666f722074686520676976656e2070657263656e74616765206f66207468656972207374616b652c2061742074686520676976656e54657261206173206265656e207265706f727465642e684f6c64536c617368696e675265706f727444697363617264656404013473657373696f6e5f696e64657810013053657373696f6e496e6465780004081901416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c64446e6f742062652070726f6365737365642e385374616b657273456c65637465640005048441206e657720736574206f66207374616b6572732077617320656c65637465642e18426f6e6465640801147374617368000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e000610d0416e206163636f756e742068617320626f6e646564207468697320616d6f756e742e205c5b73746173682c20616d6f756e745c5d004d014e4f54453a2054686973206576656e74206973206f6e6c7920656d6974746564207768656e2066756e64732061726520626f6e64656420766961206120646973706174636861626c652e204e6f7461626c792c210169742077696c6c206e6f7420626520656d697474656420666f72207374616b696e672072657761726473207768656e20746865792061726520616464656420746f207374616b652e20556e626f6e6465640801147374617368000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e00070490416e206163636f756e742068617320756e626f6e646564207468697320616d6f756e742e2457697468647261776e0801147374617368000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e0008085901416e206163636f756e74206861732063616c6c6564206077697468647261775f756e626f6e6465646020616e642072656d6f76656420756e626f6e64696e67206368756e6b7320776f727468206042616c616e6365606466726f6d2074686520756e6c6f636b696e672071756575652e184b69636b65640801246e6f6d696e61746f72000130543a3a4163636f756e7449640001147374617368000130543a3a4163636f756e744964000904b441206e6f6d696e61746f7220686173206265656e206b69636b65642066726f6d20612076616c696461746f722e545374616b696e67456c656374696f6e4661696c6564000a04ac54686520656c656374696f6e206661696c65642e204e6f206e65772065726120697320706c616e6e65642e1c4368696c6c65640401147374617368000130543a3a4163636f756e744964000b042101416e206163636f756e74206861732073746f707065642070617274696369706174696e672061732065697468657220612076616c696461746f72206f72206e6f6d696e61746f722e345061796f7574537461727465640801246572615f696e646578100120457261496e64657800013c76616c696461746f725f7374617368000130543a3a4163636f756e744964000c0498546865207374616b657273272072657761726473206172652067657474696e6720706169642e4456616c696461746f7250726566735365740801147374617368000130543a3a4163636f756e7449640001147072656673b0013856616c696461746f725072656673000d0498412076616c696461746f72206861732073657420746865697220707265666572656e6365732e68536e617073686f74566f7465727353697a65457863656564656404011073697a6510010c753332000e0468566f746572732073697a65206c696d697420726561636865642e6c536e617073686f745461726765747353697a65457863656564656404011073697a6510010c753332000f046c546172676574732073697a65206c696d697420726561636865642e20466f7263654572610401106d6f6465b8011c466f7263696e670010047441206e657720666f72636520657261206d6f646520776173207365742e64436f6e74726f6c6c65724261746368446570726563617465640401206661696c7572657310010c753332001104a45265706f7274206f66206120636f6e74726f6c6c6572206261746368206465707265636174696f6e2e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574a8083870616c6c65745f7374616b696e674452657761726444657374696e6174696f6e04244163636f756e74496401000114185374616b656400000014537461736800010028436f6e74726f6c6c65720002001c4163636f756e7404000001244163636f756e744964000300104e6f6e6500040000ac0c3473705f61726974686d65746963287065725f7468696e67731c50657262696c6c0000040010010c7533320000b0083870616c6c65745f7374616b696e673856616c696461746f7250726566730000080128636f6d6d697373696f6eb4011c50657262696c6c00011c626c6f636b6564780110626f6f6c0000b4000006ac00b8083870616c6c65745f7374616b696e671c466f7263696e67000110284e6f74466f7263696e6700000020466f7263654e657700010024466f7263654e6f6e650002002c466f726365416c7761797300030000bc0c3c70616c6c65745f6f6666656e6365731870616c6c6574144576656e740001041c4f6666656e63650801106b696e64c001104b696e6400012074696d65736c6f743401384f706171756554696d65536c6f7400000c5101546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e643501286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e4c5c5b6b696e642c2074696d65736c6f745c5d2e04304576656e747320747970652ec0000003100000000800c40c3870616c6c65745f73657373696f6e1870616c6c6574144576656e74000104284e657753657373696f6e04013473657373696f6e5f696e64657810013053657373696f6e496e64657800000839014e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e74206973207468652073657373696f6e20696e6465782c206e6f74207468659c626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574c80c3870616c6c65745f6772616e6470611870616c6c6574144576656e7400010c384e6577417574686f726974696573040134617574686f726974795f736574cc0134417574686f726974794c6973740000048c4e657720617574686f726974792073657420686173206265656e206170706c6965642e185061757365640001049843757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640002049c43757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574cc000002d000d000000408d42c00d40c5073705f636f6e73656e7375735f6772616e6470610c617070185075626c696300000400d8013c656432353531393a3a5075626c69630000d80c1c73705f636f72651c65643235353139185075626c6963000004000401205b75383b2033325d0000dc1040706f6c6b61646f745f72756e74696d654070616c6c65745f696d5f6f6e6c696e651870616c6c6574144576656e7404045400010c444865617274626561745265636569766564040130617574686f726974795f6964e0016c73757065723a3a737232353531393a3a417574686f7269747949640000001c416c6c476f6f640001002c536f6d654f66666c696e6504011c6f66666c696e65e801a073705f7374643a3a7665633a3a5665633c4964656e74696669636174696f6e5475706c653c543e3e000200047c54686520604576656e746020656e756d206f6620746869732070616c6c6574e01440706f6c6b61646f745f72756e74696d654070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139185075626c696300000400e4013c737232353531393a3a5075626c69630000e40c1c73705f636f72651c73723235353139185075626c6963000004000401205b75383b2033325d0000e8000002ec00ec0000040800f000f0082873705f7374616b696e67204578706f7375726508244163636f756e74496401001c42616c616e63650118000c0114746f74616cf4011c42616c616e636500010c6f776ef4011c42616c616e63650001186f7468657273f801ac5665633c496e646976696475616c4578706f737572653c4163636f756e7449642c2042616c616e63653e3e0000f40000061800f8000002fc00fc082873705f7374616b696e6748496e646976696475616c4578706f7375726508244163636f756e74496401001c42616c616e636501180008010c77686f0001244163636f756e74496400011476616c7565f4011c42616c616e6365000001010c3c70616c6c65745f74726561737572791870616c6c6574144576656e740804540004490001382050726f706f73656404013870726f706f73616c5f696e64657810013450726f706f73616c496e646578000004344e65772070726f706f73616c2e205370656e64696e670401406275646765745f72656d61696e696e6718013c42616c616e63654f663c542c20493e000104e45765206861766520656e6465642061207370656e6420706572696f6420616e642077696c6c206e6f7720616c6c6f636174652066756e64732e1c417761726465640c013870726f706f73616c5f696e64657810013450726f706f73616c496e646578000114617761726418013c42616c616e63654f663c542c20493e00011c6163636f756e74000130543a3a4163636f756e7449640002047c536f6d652066756e64732068617665206265656e20616c6c6f63617465642e2052656a656374656408013870726f706f73616c5f696e64657810013450726f706f73616c496e64657800011c736c617368656418013c42616c616e63654f663c542c20493e000304b0412070726f706f73616c207761732072656a65637465643b2066756e6473207765726520736c61736865642e144275726e7404012c6275726e745f66756e647318013c42616c616e63654f663c542c20493e00040488536f6d65206f66206f75722066756e64732068617665206265656e206275726e742e20526f6c6c6f766572040140726f6c6c6f7665725f62616c616e636518013c42616c616e63654f663c542c20493e0005042d015370656e64696e67206861732066696e69736865643b20746869732069732074686520616d6f756e74207468617420726f6c6c73206f76657220756e74696c206e657874207370656e642e1c4465706f73697404011476616c756518013c42616c616e63654f663c542c20493e0006047c536f6d652066756e64732068617665206265656e206465706f73697465642e345370656e64417070726f7665640c013870726f706f73616c5f696e64657810013450726f706f73616c496e646578000118616d6f756e7418013c42616c616e63654f663c542c20493e00012c62656e6566696369617279000130543a3a4163636f756e7449640007049c41206e6577207370656e642070726f706f73616c20686173206265656e20617070726f7665642e3c55706461746564496e61637469766508012c726561637469766174656418013c42616c616e63654f663c542c20493e00012c646561637469766174656418013c42616c616e63654f663c542c20493e000804cc54686520696e6163746976652066756e6473206f66207468652070616c6c65742068617665206265656e20757064617465642e4841737365745370656e64417070726f766564180114696e6465781001285370656e64496e64657800012861737365745f6b696e6405010130543a3a41737365744b696e64000118616d6f756e74180150417373657442616c616e63654f663c542c20493e00012c62656e656669636961727969010138543a3a42656e656669636961727900012876616c69645f66726f6d100144426c6f636b4e756d626572466f723c543e0001246578706972655f6174100144426c6f636b4e756d626572466f723c543e000904b441206e6577206173736574207370656e642070726f706f73616c20686173206265656e20617070726f7665642e4041737365745370656e64566f69646564040114696e6465781001285370656e64496e646578000a0474416e20617070726f766564207370656e642077617320766f696465642e1050616964080114696e6465781001285370656e64496e6465780001287061796d656e745f69642c01643c543a3a5061796d6173746572206173205061793e3a3a4964000b044c41207061796d656e742068617070656e65642e345061796d656e744661696c6564080114696e6465781001285370656e64496e6465780001287061796d656e745f69642c01643c543a3a5061796d6173746572206173205061793e3a3a4964000c049041207061796d656e74206661696c656420616e642063616e20626520726574726965642e385370656e6450726f636573736564040114696e6465781001285370656e64496e646578000d084d0141207370656e64207761732070726f63657373656420616e642072656d6f7665642066726f6d207468652073746f726167652e204974206d696768742068617665206265656e207375636365737366756c6c797070616964206f72206974206d6179206861766520657870697265642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657405010c5c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e14696d706c735c56657273696f6e65644c6f63617461626c6541737365740001080856330801206c6f636174696f6e0901015878636d3a3a76333a3a4d756c74694c6f636174696f6e00012061737365745f69642d01014078636d3a3a76333a3a417373657449640003000856340801206c6f636174696f6e3101014478636d3a3a76343a3a4c6f636174696f6e00012061737365745f69646501014078636d3a3a76343a3a41737365744964000400000901102c73746167696e675f78636d087633346d756c74696c6f636174696f6e344d756c74694c6f636174696f6e000008011c706172656e74730801087538000120696e746572696f720d0101244a756e6374696f6e7300000d01100c78636d087633246a756e6374696f6e73244a756e6374696f6e7300012410486572650000000858310400110101204a756e6374696f6e0001000858320800110101204a756e6374696f6e0000110101204a756e6374696f6e0002000858330c00110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e0003000858341000110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e0004000858351400110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e0005000858361800110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e0006000858371c00110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e0007000858382000110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e0000110101204a756e6374696f6e000800001101100c78636d087633206a756e6374696f6e204a756e6374696f6e0001282450617261636861696e04001501010c7533320000002c4163636f756e744964333208011c6e6574776f726b190101444f7074696f6e3c4e6574776f726b49643e00010869640401205b75383b2033325d000100384163636f756e74496e646578363408011c6e6574776f726b190101444f7074696f6e3c4e6574776f726b49643e000114696e64657828010c753634000200304163636f756e744b6579323008011c6e6574776f726b190101444f7074696f6e3c4e6574776f726b49643e00010c6b6579210101205b75383b2032305d0003003850616c6c6574496e7374616e6365040008010875380004003047656e6572616c496e6465780400f40110753132380005002847656e6572616c4b65790801186c656e6774680801087538000110646174610401205b75383b2033325d000600244f6e6c794368696c6400070024506c7572616c697479080108696425010118426f647949640001107061727429010120426f6479506172740008003c476c6f62616c436f6e73656e73757304001d0101244e6574776f726b49640009000015010000061000190104184f7074696f6e040454011d010108104e6f6e6500000010536f6d6504001d0100000100001d01100c78636d087633206a756e6374696f6e244e6574776f726b496400012c24427947656e6573697304000401205b75383b2033325d000000184279466f726b080130626c6f636b5f6e756d6265722c010c753634000128626c6f636b5f686173680401205b75383b2033325d00010020506f6c6b61646f74000200184b7573616d610003001c57657374656e6400040018526f636f636f00050018576f636f636f00060020457468657265756d040120636861696e5f696428010c7536340007002c426974636f696e436f72650008002c426974636f696e4361736800090040506f6c6b61646f7442756c6c6574696e000a000021010000031400000008002501100c78636d087633206a756e6374696f6e18426f6479496400012810556e69740000001c4d6f6e696b6572040044011c5b75383b20345d00010014496e64657804001501010c7533320002002445786563757469766500030024546563686e6963616c0004002c4c656769736c6174697665000500204a7564696369616c0006001c446566656e73650007003841646d696e697374726174696f6e000800205472656173757279000900002901100c78636d087633206a756e6374696f6e20426f64795061727400011414566f6963650000001c4d656d62657273040114636f756e741501010c753332000100204672616374696f6e08010c6e6f6d1501010c75333200011464656e6f6d1501010c7533320002004441744c6561737450726f706f7274696f6e08010c6e6f6d1501010c75333200011464656e6f6d1501010c753332000300484d6f72655468616e50726f706f7274696f6e08010c6e6f6d1501010c75333200011464656e6f6d1501010c753332000400002d01100c78636d087633286d756c746961737365741c4173736574496400010820436f6e63726574650400090101344d756c74694c6f636174696f6e00000020416273747261637404000401205b75383b2033325d000100003101102c73746167696e675f78636d087634206c6f636174696f6e204c6f636174696f6e000008011c706172656e74730801087538000120696e746572696f72350101244a756e6374696f6e7300003501102c73746167696e675f78636d087634246a756e6374696f6e73244a756e6374696f6e7300012410486572650000000858310400390101484172633c5b4a756e6374696f6e3b20315d3e0001000858320400490101484172633c5b4a756e6374696f6e3b20325d3e00020008583304004d0101484172633c5b4a756e6374696f6e3b20335d3e0003000858340400510101484172633c5b4a756e6374696f6e3b20345d3e0004000858350400550101484172633c5b4a756e6374696f6e3b20355d3e0005000858360400590101484172633c5b4a756e6374696f6e3b20365d3e00060008583704005d0101484172633c5b4a756e6374696f6e3b20375d3e0007000858380400610101484172633c5b4a756e6374696f6e3b20385d3e000800003901000003010000003d01003d01102c73746167696e675f78636d087634206a756e6374696f6e204a756e6374696f6e0001282450617261636861696e04001501010c7533320000002c4163636f756e744964333208011c6e6574776f726b410101444f7074696f6e3c4e6574776f726b49643e00010869640401205b75383b2033325d000100384163636f756e74496e646578363408011c6e6574776f726b410101444f7074696f6e3c4e6574776f726b49643e000114696e64657828010c753634000200304163636f756e744b6579323008011c6e6574776f726b410101444f7074696f6e3c4e6574776f726b49643e00010c6b6579210101205b75383b2032305d0003003850616c6c6574496e7374616e6365040008010875380004003047656e6572616c496e6465780400f40110753132380005002847656e6572616c4b65790801186c656e6774680801087538000110646174610401205b75383b2033325d000600244f6e6c794368696c6400070024506c7572616c697479080108696425010118426f647949640001107061727429010120426f6479506172740008003c476c6f62616c436f6e73656e7375730400450101244e6574776f726b496400090000410104184f7074696f6e0404540145010108104e6f6e6500000010536f6d650400450100000100004501102c73746167696e675f78636d087634206a756e6374696f6e244e6574776f726b496400012c24427947656e6573697304000401205b75383b2033325d000000184279466f726b080130626c6f636b5f6e756d6265722c010c753634000128626c6f636b5f686173680401205b75383b2033325d00010020506f6c6b61646f74000200184b7573616d610003001c57657374656e6400040018526f636f636f00050018576f636f636f00060020457468657265756d040120636861696e5f696428010c7536340007002c426974636f696e436f72650008002c426974636f696e4361736800090040506f6c6b61646f7442756c6c6574696e000a00004901000003020000003d01004d01000003030000003d01005101000003040000003d01005501000003050000003d01005901000003060000003d01005d01000003070000003d01006101000003080000003d01006501102c73746167696e675f78636d0876341461737365741c4173736574496400000400310101204c6f636174696f6e00006901080c78636d4456657273696f6e65644c6f636174696f6e00010c08563204006d01014476323a3a4d756c74694c6f636174696f6e00010008563304000901014476333a3a4d756c74694c6f636174696f6e00030008563404003101013076343a3a4c6f636174696f6e000400006d01100c78636d087632346d756c74696c6f636174696f6e344d756c74694c6f636174696f6e000008011c706172656e74730801087538000120696e746572696f72710101244a756e6374696f6e7300007101100c78636d087632346d756c74696c6f636174696f6e244a756e6374696f6e7300012410486572650000000858310400750101204a756e6374696f6e0001000858320800750101204a756e6374696f6e0000750101204a756e6374696f6e0002000858330c00750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e0003000858341000750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e0004000858351400750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e0005000858361800750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e0006000858371c00750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e0007000858382000750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e0000750101204a756e6374696f6e000800007501100c78636d087632206a756e6374696f6e204a756e6374696f6e0001242450617261636861696e04001501010c7533320000002c4163636f756e744964333208011c6e6574776f726b790101244e6574776f726b496400010869640401205b75383b2033325d000100384163636f756e74496e646578363408011c6e6574776f726b790101244e6574776f726b4964000114696e64657828010c753634000200304163636f756e744b6579323008011c6e6574776f726b790101244e6574776f726b496400010c6b6579210101205b75383b2032305d0003003850616c6c6574496e7374616e6365040008010875380004003047656e6572616c496e6465780400f40110753132380005002847656e6572616c4b657904007d0101805765616b426f756e6465645665633c75382c20436f6e73745533323c33323e3e000600244f6e6c794368696c6400070024506c7572616c697479080108696481010118426f647949640001107061727485010120426f6479506172740008000079010c0c78636d087632244e6574776f726b49640001100c416e79000000144e616d656404007d0101805765616b426f756e6465645665633c75382c20436f6e73745533323c33323e3e00010020506f6c6b61646f74000200184b7573616d61000300007d010c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401080453000004003401185665633c543e000081010c0c78636d08763218426f6479496400012810556e6974000000144e616d656404007d0101805765616b426f756e6465645665633c75382c20436f6e73745533323c33323e3e00010014496e64657804001501010c7533320002002445786563757469766500030024546563686e6963616c0004002c4c656769736c6174697665000500204a7564696369616c0006001c446566656e73650007003841646d696e697374726174696f6e0008002054726561737572790009000085010c0c78636d08763220426f64795061727400011414566f6963650000001c4d656d62657273040114636f756e741501010c753332000100204672616374696f6e08010c6e6f6d1501010c75333200011464656e6f6d1501010c7533320002004441744c6561737450726f706f7274696f6e08010c6e6f6d1501010c75333200011464656e6f6d1501010c753332000300484d6f72655468616e50726f706f7274696f6e08010c6e6f6d1501010c75333200011464656e6f6d1501010c7533320004000089010c6070616c6c65745f636f6e76696374696f6e5f766f74696e671870616c6c6574144576656e740804540004490001082444656c6567617465640800000130543a3a4163636f756e7449640000000130543a3a4163636f756e7449640000041d01416e206163636f756e74206861732064656c65676174656420746865697220766f746520746f20616e6f74686572206163636f756e742e205c5b77686f2c207461726765745c5d2c556e64656c6567617465640400000130543a3a4163636f756e744964000104f4416e205c5b6163636f756e745c5d206861732063616e63656c6c656420612070726576696f75732064656c65676174696f6e206f7065726174696f6e2e047c54686520604576656e746020656e756d206f6620746869732070616c6c65748d010c4070616c6c65745f7265666572656e64611870616c6c6574144576656e74080454000449000140245375626d69747465640c0114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e0114747261636b9101013c547261636b49644f663c542c20493e04250154686520747261636b2028616e6420627920657874656e73696f6e2070726f706f73616c206469737061746368206f726967696e29206f662074686973207265666572656e64756d2e012070726f706f73616c9501014c426f756e64656443616c6c4f663c542c20493e04805468652070726f706f73616c20666f7220746865207265666572656e64756d2e00048041207265666572656e64756d20686173206265656e207375626d69747465642e544465636973696f6e4465706f736974506c616365640c0114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e010c77686f000130543a3a4163636f756e744964048c546865206163636f756e742077686f20706c6163656420746865206465706f7369742e0118616d6f756e7418013c42616c616e63654f663c542c20493e048454686520616d6f756e7420706c6163656420627920746865206163636f756e742e010494546865206465636973696f6e206465706f73697420686173206265656e20706c616365642e5c4465636973696f6e4465706f736974526566756e6465640c0114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e010c77686f000130543a3a4163636f756e744964048c546865206163636f756e742077686f20706c6163656420746865206465706f7369742e0118616d6f756e7418013c42616c616e63654f663c542c20493e048454686520616d6f756e7420706c6163656420627920746865206163636f756e742e02049c546865206465636973696f6e206465706f73697420686173206265656e20726566756e6465642e384465706f736974536c617368656408010c77686f000130543a3a4163636f756e744964048c546865206163636f756e742077686f20706c6163656420746865206465706f7369742e0118616d6f756e7418013c42616c616e63654f663c542c20493e048454686520616d6f756e7420706c6163656420627920746865206163636f756e742e03046c41206465706f73697420686173206265656e20736c61736865642e3c4465636973696f6e53746172746564100114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e0114747261636b9101013c547261636b49644f663c542c20493e04250154686520747261636b2028616e6420627920657874656e73696f6e2070726f706f73616c206469737061746368206f726967696e29206f662074686973207265666572656e64756d2e012070726f706f73616c9501014c426f756e64656443616c6c4f663c542c20493e04805468652070726f706f73616c20666f7220746865207265666572656e64756d2e011474616c6c7979070120543a3a54616c6c7904b85468652063757272656e742074616c6c79206f6620766f74657320696e2074686973207265666572656e64756d2e0404bc41207265666572656e64756d20686173206d6f76656420696e746f20746865206465636964696e672070686173652e38436f6e6669726d53746172746564040114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e050038436f6e6669726d41626f72746564040114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e060024436f6e6669726d6564080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e011474616c6c7979070120543a3a54616c6c7904b05468652066696e616c2074616c6c79206f6620766f74657320696e2074686973207265666572656e64756d2e0704210141207265666572656e64756d2068617320656e6465642069747320636f6e6669726d6174696f6e20706861736520616e6420697320726561647920666f7220617070726f76616c2e20417070726f766564040114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e08040d0141207265666572656e64756d20686173206265656e20617070726f76656420616e64206974732070726f706f73616c20686173206265656e207363686564756c65642e2052656a6563746564080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e011474616c6c7979070120543a3a54616c6c7904b05468652066696e616c2074616c6c79206f6620766f74657320696e2074686973207265666572656e64756d2e0904ac412070726f706f73616c20686173206265656e2072656a6563746564206279207265666572656e64756d2e2054696d65644f7574080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e011474616c6c7979070120543a3a54616c6c7904b05468652066696e616c2074616c6c79206f6620766f74657320696e2074686973207265666572656e64756d2e0a04d841207265666572656e64756d20686173206265656e2074696d6564206f757420776974686f7574206265696e6720646563696465642e2443616e63656c6c6564080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e011474616c6c7979070120543a3a54616c6c7904b05468652066696e616c2074616c6c79206f6620766f74657320696e2074686973207265666572656e64756d2e0b048041207265666572656e64756d20686173206265656e2063616e63656c6c65642e184b696c6c6564080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e011474616c6c7979070120543a3a54616c6c7904b05468652066696e616c2074616c6c79206f6620766f74657320696e2074686973207265666572656e64756d2e0c047441207265666572656e64756d20686173206265656e206b696c6c65642e645375626d697373696f6e4465706f736974526566756e6465640c0114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e010c77686f000130543a3a4163636f756e744964048c546865206163636f756e742077686f20706c6163656420746865206465706f7369742e0118616d6f756e7418013c42616c616e63654f663c542c20493e048454686520616d6f756e7420706c6163656420627920746865206163636f756e742e0d04a4546865207375626d697373696f6e206465706f73697420686173206265656e20726566756e6465642e2c4d65746164617461536574080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e01106861736830011c543a3a486173680438507265696d61676520686173682e0e049c4d6574616461746120666f722061207265666572656e64756d20686173206265656e207365742e3c4d65746164617461436c6561726564080114696e64657810013c5265666572656e64756d496e6465780460496e646578206f6620746865207265666572656e64756d2e01106861736830011c543a3a486173680438507265696d61676520686173682e0f04ac4d6574616461746120666f722061207265666572656e64756d20686173206265656e20636c65617265642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657491010000050400950110346672616d655f737570706f72741874726169747324707265696d616765731c426f756e6465640804540199010448017107010c184c656761637904011068617368300124483a3a4f757470757400000018496e6c696e65040075070134426f756e646564496e6c696e65000100184c6f6f6b757008011068617368300124483a3a4f757470757400010c6c656e10010c7533320002000099010840706f6c6b61646f745f72756e74696d652c52756e74696d6543616c6c0001b01853797374656d04009d0101ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53797374656d2c2052756e74696d653e000000245363686564756c65720400ad0101b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5363686564756c65722c2052756e74696d653e00010020507265696d6167650400b50101b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c507265696d6167652c2052756e74696d653e000a0010426162650400bd0101a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426162652c2052756e74696d653e0002002454696d657374616d700400e10101b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54696d657374616d702c2052756e74696d653e0003001c496e64696365730400e50101b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496e64696365732c2052756e74696d653e0004002042616c616e6365730400f10101b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42616c616e6365732c2052756e74696d653e0005001c5374616b696e670400fd0101b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5374616b696e672c2052756e74696d653e0007001c53657373696f6e0400390201b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53657373696f6e2c2052756e74696d653e0009001c4772616e6470610400590201b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4772616e6470612c2052756e74696d653e000b002054726561737572790400890201b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54726561737572792c2052756e74696d653e00130040436f6e76696374696f6e566f74696e670400910201d50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6e76696374696f6e566f74696e672c2052756e74696d653e001400245265666572656e64610400a50201b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5265666572656e64612c2052756e74696d653e0015002457686974656c6973740400cd0201b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c57686974656c6973742c2052756e74696d653e00170018436c61696d730400d10201ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436c61696d732c2052756e74696d653e0018001c56657374696e670400f10201b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c56657374696e672c2052756e74696d653e0019001c5574696c6974790400f90201b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5574696c6974792c2052756e74696d653e001a00204964656e746974790400010301b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4964656e746974792c2052756e74696d653e001c001450726f78790400b10301a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50726f78792c2052756e74696d653e001d00204d756c74697369670400bd0301b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d756c74697369672c2052756e74696d653e001e0020426f756e746965730400c90301b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426f756e746965732c2052756e74696d653e002200344368696c64426f756e746965730400cd0301c90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4368696c64426f756e746965732c2052756e74696d653e00260068456c656374696f6e50726f76696465724d756c746950686173650400d10301fd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c456c656374696f6e50726f76696465724d756c746950686173652c2052756e74696d653e00240024566f7465724c6973740400c50401b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c566f7465724c6973742c2052756e74696d653e0025003c4e6f6d696e6174696f6e506f6f6c730400c90401d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4e6f6d696e6174696f6e506f6f6c732c2052756e74696d653e0027002c46617374556e7374616b650400fd0401c10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c46617374556e7374616b652c2052756e74696d653e00280034436f6e66696775726174696f6e0400010501c90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6e66696775726174696f6e2c2052756e74696d653e0033002c50617261735368617265640400210501c10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50617261735368617265642c2052756e74696d653e0034003450617261496e636c7573696f6e0400250501c90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50617261496e636c7573696f6e2c2052756e74696d653e0035003050617261496e686572656e740400290501c50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50617261496e686572656e742c2052756e74696d653e0036001450617261730400b50501a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50617261732c2052756e74696d653e0038002c496e697469616c697a65720400bd0501c10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496e697469616c697a65722c2052756e74696d653e0039001048726d700400c10501a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c48726d702c2052756e74696d653e003c0034506172617344697370757465730400c90501c90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506172617344697370757465732c2052756e74696d653e003e00345061726173536c617368696e670400cd0501c90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5061726173536c617368696e672c2052756e74696d653e003f00245265676973747261720400dd0501b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5265676973747261722c2052756e74696d653e00460014536c6f74730400e10501a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c536c6f74732c2052756e74696d653e0047002041756374696f6e730400e50501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c41756374696f6e732c2052756e74696d653e0048002443726f77646c6f616e0400ed0501b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c43726f77646c6f616e2c2052756e74696d653e004900485374617465547269654d6967726174696f6e0400f90501dd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5374617465547269654d6967726174696f6e2c2052756e74696d653e0062002458636d50616c6c65740400110601b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c58636d50616c6c65742c2052756e74696d653e006300304d657373616765517565756504003d0701c50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d65737361676551756575652c2052756e74696d653e006400244173736574526174650400490701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4173736574526174652c2052756e74696d653e0065001442656566790400510701a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42656566792c2052756e74696d653e00c800009d010c306672616d655f73797374656d1870616c6c65741043616c6c04045400012c1872656d61726b04011872656d61726b34011c5665633c75383e0000045c536565205b6050616c6c65743a3a72656d61726b605d2e387365745f686561705f706167657304011470616765732c010c7536340001047c536565205b6050616c6c65743a3a7365745f686561705f7061676573605d2e207365745f636f6465040110636f646534011c5665633c75383e00020464536565205b6050616c6c65743a3a7365745f636f6465605d2e5c7365745f636f64655f776974686f75745f636865636b73040110636f646534011c5665633c75383e000304a0536565205b6050616c6c65743a3a7365745f636f64655f776974686f75745f636865636b73605d2e2c7365745f73746f726167650401146974656d73a10101345665633c4b657956616c75653e00040470536565205b6050616c6c65743a3a7365745f73746f72616765605d2e306b696c6c5f73746f726167650401106b657973a90101205665633c4b65793e00050474536565205b6050616c6c65743a3a6b696c6c5f73746f72616765605d2e2c6b696c6c5f70726566697808011870726566697834010c4b657900011c7375626b65797310010c75333200060470536565205b6050616c6c65743a3a6b696c6c5f707265666978605d2e4472656d61726b5f776974685f6576656e7404011872656d61726b34011c5665633c75383e00070488536565205b6050616c6c65743a3a72656d61726b5f776974685f6576656e74605d2e44617574686f72697a655f75706772616465040124636f64655f6861736830011c543a3a4861736800090488536565205b6050616c6c65743a3a617574686f72697a655f75706772616465605d2e80617574686f72697a655f757067726164655f776974686f75745f636865636b73040124636f64655f6861736830011c543a3a48617368000a04c4536565205b6050616c6c65743a3a617574686f72697a655f757067726164655f776974686f75745f636865636b73605d2e606170706c795f617574686f72697a65645f75706772616465040110636f646534011c5665633c75383e000b04a4536565205b6050616c6c65743a3a6170706c795f617574686f72697a65645f75706772616465605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ea101000002a50100a50100000408343400a9010000023400ad010c4070616c6c65745f7363686564756c65721870616c6c65741043616c6c040454000118207363686564756c651001107768656e100144426c6f636b4e756d626572466f723c543e0001386d617962655f706572696f646963b10101ac4f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d626572466f723c543e3e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c9901017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00000464536565205b6050616c6c65743a3a7363686564756c65605d2e1863616e63656c0801107768656e100144426c6f636b4e756d626572466f723c543e000114696e64657810010c7533320001045c536565205b6050616c6c65743a3a63616e63656c605d2e387363686564756c655f6e616d656414010869640401205461736b4e616d650001107768656e100144426c6f636b4e756d626572466f723c543e0001386d617962655f706572696f646963b10101ac4f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d626572466f723c543e3e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c9901017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0002047c536565205b6050616c6c65743a3a7363686564756c655f6e616d6564605d2e3063616e63656c5f6e616d656404010869640401205461736b4e616d6500030474536565205b6050616c6c65743a3a63616e63656c5f6e616d6564605d2e387363686564756c655f61667465721001146166746572100144426c6f636b4e756d626572466f723c543e0001386d617962655f706572696f646963b10101ac4f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d626572466f723c543e3e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c9901017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0004047c536565205b6050616c6c65743a3a7363686564756c655f6166746572605d2e507363686564756c655f6e616d65645f616674657214010869640401205461736b4e616d650001146166746572100144426c6f636b4e756d626572466f723c543e0001386d617962655f706572696f646963b10101ac4f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d626572466f723c543e3e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c9901017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00050494536565205b6050616c6c65743a3a7363686564756c655f6e616d65645f6166746572605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732eb10104184f7074696f6e04045401800108104e6f6e6500000010536f6d650400800000010000b5010c3c70616c6c65745f707265696d6167651870616c6c65741043616c6c040454000114346e6f74655f707265696d616765040114627974657334011c5665633c75383e00000478536565205b6050616c6c65743a3a6e6f74655f707265696d616765605d2e3c756e6e6f74655f707265696d6167650401106861736830011c543a3a4861736800010480536565205b6050616c6c65743a3a756e6e6f74655f707265696d616765605d2e40726571756573745f707265696d6167650401106861736830011c543a3a4861736800020484536565205b6050616c6c65743a3a726571756573745f707265696d616765605d2e48756e726571756573745f707265696d6167650401106861736830011c543a3a486173680003048c536565205b6050616c6c65743a3a756e726571756573745f707265696d616765605d2e38656e737572655f75706461746564040118686173686573b90101305665633c543a3a486173683e0004047c536565205b6050616c6c65743a3a656e737572655f75706461746564605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732eb9010000023000bd010c2c70616c6c65745f626162651870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66c1010190426f783c45717569766f636174696f6e50726f6f663c486561646572466f723c543e3e3e00013c6b65795f6f776e65725f70726f6f66d1010140543a3a4b65794f776e657250726f6f6600000490536565205b6050616c6c65743a3a7265706f72745f65717569766f636174696f6e605d2e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66c1010190426f783c45717569766f636174696f6e50726f6f663c486561646572466f723c543e3e3e00013c6b65795f6f776e65725f70726f6f66d1010140543a3a4b65794f776e657250726f6f66000104b4536565205b6050616c6c65743a3a7265706f72745f65717569766f636174696f6e5f756e7369676e6564605d2e48706c616e5f636f6e6669675f6368616e6765040118636f6e666967d50101504e657874436f6e66696744657363726970746f720002048c536565205b6050616c6c65743a3a706c616e5f636f6e6669675f6368616e6765605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ec101084873705f636f6e73656e7375735f736c6f74734445717569766f636174696f6e50726f6f66081848656164657201c50108496401c901001001206f6666656e646572c90101084964000110736c6f74cd010110536c6f7400013066697273745f686561646572c50101184865616465720001347365636f6e645f686561646572c50101184865616465720000c501102873705f72756e74696d651c67656e65726963186865616465721848656164657208184e756d62657201101048617368000014012c706172656e745f68617368300130486173683a3a4f75747075740001186e756d626572150101184e756d62657200012873746174655f726f6f74300130486173683a3a4f757470757400013c65787472696e736963735f726f6f74300130486173683a3a4f75747075740001186469676573743801184469676573740000c9010c4473705f636f6e73656e7375735f626162650c617070185075626c696300000400e4013c737232353531393a3a5075626c69630000cd01084873705f636f6e73656e7375735f736c6f747310536c6f74000004002c010c7536340000d101082873705f73657373696f6e3c4d656d6265727368697050726f6f6600000c011c73657373696f6e10013053657373696f6e496e646578000128747269655f6e6f646573a90101305665633c5665633c75383e3e00013c76616c696461746f725f636f756e7410013856616c696461746f72436f756e740000d5010c4473705f636f6e73656e7375735f626162651c64696765737473504e657874436f6e66696744657363726970746f7200010408563108010463d9010128287536342c2075363429000134616c6c6f7765645f736c6f7473dd010130416c6c6f776564536c6f747300010000d901000004082c2c00dd01084473705f636f6e73656e7375735f6261626530416c6c6f776564536c6f747300010c305072696d617279536c6f7473000000745072696d617279416e645365636f6e64617279506c61696e536c6f74730001006c5072696d617279416e645365636f6e64617279565246536c6f747300020000e1010c4070616c6c65745f74696d657374616d701870616c6c65741043616c6c0404540001040c73657404010c6e6f77280124543a3a4d6f6d656e7400000450536565205b6050616c6c65743a3a736574605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ee5010c3870616c6c65745f696e64696365731870616c6c65741043616c6c04045400011414636c61696d040114696e64657810013c543a3a4163636f756e74496e64657800000458536565205b6050616c6c65743a3a636c61696d605d2e207472616e7366657208010c6e6577e90101504163636f756e7449644c6f6f6b75704f663c543e000114696e64657810013c543a3a4163636f756e74496e64657800010464536565205b6050616c6c65743a3a7472616e73666572605d2e1066726565040114696e64657810013c543a3a4163636f756e74496e64657800020454536565205b6050616c6c65743a3a66726565605d2e38666f7263655f7472616e736665720c010c6e6577e90101504163636f756e7449644c6f6f6b75704f663c543e000114696e64657810013c543a3a4163636f756e74496e646578000118667265657a65780110626f6f6c0003047c536565205b6050616c6c65743a3a666f7263655f7472616e73666572605d2e18667265657a65040114696e64657810013c543a3a4163636f756e74496e6465780004045c536565205b6050616c6c65743a3a667265657a65605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ee9010c2873705f72756e74696d65306d756c746961646472657373304d756c74694164647265737308244163636f756e7449640100304163636f756e74496e646578018c011408496404000001244163636f756e74496400000014496e6465780400ed0101304163636f756e74496e6465780001000c526177040034011c5665633c75383e0002002441646472657373333204000401205b75383b2033325d000300244164647265737332300400210101205b75383b2032305d00040000ed010000068c00f1010c3c70616c6c65745f62616c616e6365731870616c6c65741043616c6c080454000449000120507472616e736665725f616c6c6f775f646561746808011064657374e90101504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565f40128543a3a42616c616e636500000494536565205b6050616c6c65743a3a7472616e736665725f616c6c6f775f6465617468605d2e38666f7263655f7472616e736665720c0118736f75726365e90101504163636f756e7449644c6f6f6b75704f663c543e00011064657374e90101504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565f40128543a3a42616c616e63650002047c536565205b6050616c6c65743a3a666f7263655f7472616e73666572605d2e4c7472616e736665725f6b6565705f616c69766508011064657374e90101504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565f40128543a3a42616c616e636500030490536565205b6050616c6c65743a3a7472616e736665725f6b6565705f616c697665605d2e307472616e736665725f616c6c08011064657374e90101504163636f756e7449644c6f6f6b75704f663c543e0001286b6565705f616c697665780110626f6f6c00040474536565205b6050616c6c65743a3a7472616e736665725f616c6c605d2e3c666f7263655f756e7265736572766508010c77686fe90101504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e74180128543a3a42616c616e636500050480536565205b6050616c6c65743a3a666f7263655f756e72657365727665605d2e40757067726164655f6163636f756e747304010c77686ff50101445665633c543a3a4163636f756e7449643e00060484536565205b6050616c6c65743a3a757067726164655f6163636f756e7473605d2e44666f7263655f7365745f62616c616e636508010c77686fe90101504163636f756e7449644c6f6f6b75704f663c543e0001206e65775f66726565f40128543a3a42616c616e636500080488536565205b6050616c6c65743a3a666f7263655f7365745f62616c616e6365605d2e6c666f7263655f61646a7573745f746f74616c5f69737375616e6365080124646972656374696f6ef901014c41646a7573746d656e74446972656374696f6e00011464656c7461f40128543a3a42616c616e6365000904b0536565205b6050616c6c65743a3a666f7263655f61646a7573745f746f74616c5f69737375616e6365605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ef5010000020000f9010c3c70616c6c65745f62616c616e6365731474797065734c41646a7573746d656e74446972656374696f6e00010820496e63726561736500000020446563726561736500010000fd01103870616c6c65745f7374616b696e671870616c6c65741870616c6c65741043616c6c04045400017810626f6e6408011476616c7565f4013042616c616e63654f663c543e0001147061796565a8017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e00000454536565205b6050616c6c65743a3a626f6e64605d2e28626f6e645f65787472610401386d61785f6164646974696f6e616cf4013042616c616e63654f663c543e0001046c536565205b6050616c6c65743a3a626f6e645f6578747261605d2e18756e626f6e6404011476616c7565f4013042616c616e63654f663c543e0002045c536565205b6050616c6c65743a3a756e626f6e64605d2e4477697468647261775f756e626f6e6465640401486e756d5f736c617368696e675f7370616e7310010c75333200030488536565205b6050616c6c65743a3a77697468647261775f756e626f6e646564605d2e2076616c69646174650401147072656673b0013856616c696461746f72507265667300040464536565205b6050616c6c65743a3a76616c6964617465605d2e206e6f6d696e61746504011c74617267657473010201645665633c4163636f756e7449644c6f6f6b75704f663c543e3e00050464536565205b6050616c6c65743a3a6e6f6d696e617465605d2e146368696c6c00060458536565205b6050616c6c65743a3a6368696c6c605d2e247365745f70617965650401147061796565a8017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e00070468536565205b6050616c6c65743a3a7365745f7061796565605d2e387365745f636f6e74726f6c6c65720008047c536565205b6050616c6c65743a3a7365745f636f6e74726f6c6c6572605d2e4c7365745f76616c696461746f725f636f756e7404010c6e65771501010c75333200090490536565205b6050616c6c65743a3a7365745f76616c696461746f725f636f756e74605d2e60696e6372656173655f76616c696461746f725f636f756e740401286164646974696f6e616c1501010c753332000a04a4536565205b6050616c6c65743a3a696e6372656173655f76616c696461746f725f636f756e74605d2e547363616c655f76616c696461746f725f636f756e74040118666163746f720502011c50657263656e74000b0498536565205b6050616c6c65743a3a7363616c655f76616c696461746f725f636f756e74605d2e34666f7263655f6e6f5f65726173000c0478536565205b6050616c6c65743a3a666f7263655f6e6f5f65726173605d2e34666f7263655f6e65775f657261000d0478536565205b6050616c6c65743a3a666f7263655f6e65775f657261605d2e447365745f696e76756c6e657261626c6573040134696e76756c6e657261626c6573f50101445665633c543a3a4163636f756e7449643e000e0488536565205b6050616c6c65743a3a7365745f696e76756c6e657261626c6573605d2e34666f7263655f756e7374616b650801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c753332000f0478536565205b6050616c6c65743a3a666f7263655f756e7374616b65605d2e50666f7263655f6e65775f6572615f616c7761797300100494536565205b6050616c6c65743a3a666f7263655f6e65775f6572615f616c77617973605d2e5463616e63656c5f64656665727265645f736c61736808010c657261100120457261496e646578000134736c6173685f696e6469636573090201205665633c7533323e00110498536565205b6050616c6c65743a3a63616e63656c5f64656665727265645f736c617368605d2e387061796f75745f7374616b65727308013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e6465780012047c536565205b6050616c6c65743a3a7061796f75745f7374616b657273605d2e187265626f6e6404011476616c7565f4013042616c616e63654f663c543e0013045c536565205b6050616c6c65743a3a7265626f6e64605d2e28726561705f73746173680801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c7533320014046c536565205b6050616c6c65743a3a726561705f7374617368605d2e106b69636b04010c77686f010201645665633c4163636f756e7449644c6f6f6b75704f663c543e3e00150454536565205b6050616c6c65743a3a6b69636b605d2e4c7365745f7374616b696e675f636f6e666967731801486d696e5f6e6f6d696e61746f725f626f6e640d020158436f6e6669674f703c42616c616e63654f663c543e3e0001486d696e5f76616c696461746f725f626f6e640d020158436f6e6669674f703c42616c616e63654f663c543e3e00014c6d61785f6e6f6d696e61746f725f636f756e7411020134436f6e6669674f703c7533323e00014c6d61785f76616c696461746f725f636f756e7411020134436f6e6669674f703c7533323e00013c6368696c6c5f7468726573686f6c6415020144436f6e6669674f703c50657263656e743e0001386d696e5f636f6d6d697373696f6e19020144436f6e6669674f703c50657262696c6c3e00160490536565205b6050616c6c65743a3a7365745f7374616b696e675f636f6e66696773605d2e2c6368696c6c5f6f746865720401147374617368000130543a3a4163636f756e74496400170470536565205b6050616c6c65743a3a6368696c6c5f6f74686572605d2e68666f7263655f6170706c795f6d696e5f636f6d6d697373696f6e04013c76616c696461746f725f7374617368000130543a3a4163636f756e744964001804ac536565205b6050616c6c65743a3a666f7263655f6170706c795f6d696e5f636f6d6d697373696f6e605d2e487365745f6d696e5f636f6d6d697373696f6e04010c6e6577ac011c50657262696c6c0019048c536565205b6050616c6c65743a3a7365745f6d696e5f636f6d6d697373696f6e605d2e587061796f75745f7374616b6572735f62795f706167650c013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e6465780001107061676510011050616765001a049c536565205b6050616c6c65743a3a7061796f75745f7374616b6572735f62795f70616765605d2e307570646174655f7061796565040128636f6e74726f6c6c6572000130543a3a4163636f756e744964001b0474536565205b6050616c6c65743a3a7570646174655f7061796565605d2e686465707265636174655f636f6e74726f6c6c65725f626174636804012c636f6e74726f6c6c6572731d0201f4426f756e6465645665633c543a3a4163636f756e7449642c20543a3a4d6178436f6e74726f6c6c657273496e4465707265636174696f6e42617463683e001c04ac536565205b6050616c6c65743a3a6465707265636174655f636f6e74726f6c6c65725f6261746368605d2e38726573746f72655f6c65646765721001147374617368000130543a3a4163636f756e7449640001406d617962655f636f6e74726f6c6c6572210201504f7074696f6e3c543a3a4163636f756e7449643e00012c6d617962655f746f74616c250201504f7074696f6e3c42616c616e63654f663c543e3e00013c6d617962655f756e6c6f636b696e6729020115014f7074696f6e3c426f756e6465645665633c556e6c6f636b4368756e6b3c42616c616e63654f663c543e3e2c20543a3a4d6178556e6c6f636b696e674368756e6b730a3e3e001d047c536565205b6050616c6c65743a3a726573746f72655f6c6564676572605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e0102000002e9010005020c3473705f61726974686d65746963287065725f7468696e67731c50657263656e740000040008010875380000090200000210000d02103870616c6c65745f7374616b696e671870616c6c65741870616c6c657420436f6e6669674f700404540118010c104e6f6f700000000c5365740400180104540001001852656d6f7665000200001102103870616c6c65745f7374616b696e671870616c6c65741870616c6c657420436f6e6669674f700404540110010c104e6f6f700000000c5365740400100104540001001852656d6f7665000200001502103870616c6c65745f7374616b696e671870616c6c65741870616c6c657420436f6e6669674f70040454010502010c104e6f6f700000000c536574040005020104540001001852656d6f7665000200001902103870616c6c65745f7374616b696e671870616c6c65741870616c6c657420436f6e6669674f7004045401ac010c104e6f6f700000000c5365740400ac0104540001001852656d6f7665000200001d020c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400f50101185665633c543e0000210204184f7074696f6e04045401000108104e6f6e6500000010536f6d650400000000010000250204184f7074696f6e04045401180108104e6f6e6500000010536f6d650400180000010000290204184f7074696f6e040454012d020108104e6f6e6500000010536f6d6504002d0200000100002d020c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454013102045300000400350201185665633c543e00003102083870616c6c65745f7374616b696e672c556e6c6f636b4368756e6b041c42616c616e636501180008011476616c7565f4011c42616c616e636500010c65726115010120457261496e6465780000350200000231020039020c3870616c6c65745f73657373696f6e1870616c6c65741043616c6c040454000108207365745f6b6579730801106b6579733d02011c543a3a4b65797300011470726f6f6634011c5665633c75383e00000464536565205b6050616c6c65743a3a7365745f6b657973605d2e2870757267655f6b6579730001046c536565205b6050616c6c65743a3a70757267655f6b657973605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e3d020840706f6c6b61646f745f72756e74696d652c53657373696f6e4b657973000018011c6772616e647061d401d03c4772616e647061206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300011062616265c90101c43c42616265206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000138706172615f76616c696461746f72410201e03c496e697469616c697a6572206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300013c706172615f61737369676e6d656e74450201f03c5061726153657373696f6e496e666f206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300014c617574686f726974795f646973636f76657279490201fc3c417574686f72697479446973636f76657279206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300011462656566794d0201c83c4265656679206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300004102104c706f6c6b61646f745f7072696d6974697665730876363476616c696461746f725f617070185075626c696300000400e4013c737232353531393a3a5075626c696300004502104c706f6c6b61646f745f7072696d6974697665730876363861737369676e6d656e745f617070185075626c696300000400e4013c737232353531393a3a5075626c6963000049020c5873705f617574686f726974795f646973636f766572790c617070185075626c696300000400e4013c737232353531393a3a5075626c696300004d020c4873705f636f6e73656e7375735f62656566793065636473615f63727970746f185075626c6963000004005102013465636473613a3a5075626c6963000051020c1c73705f636f7265146563647361185075626c696300000400550201805b75383b205055424c49435f4b45595f53455249414c495a45445f53495a455d0000550200000321000000080059020c3870616c6c65745f6772616e6470611870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f665d0201c8426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20426c6f636b4e756d626572466f723c543e3e3e00013c6b65795f6f776e65725f70726f6f66d1010140543a3a4b65794f776e657250726f6f6600000490536565205b6050616c6c65743a3a7265706f72745f65717569766f636174696f6e605d2e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f665d0201c8426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20426c6f636b4e756d626572466f723c543e3e3e00013c6b65795f6f776e65725f70726f6f66d1010140543a3a4b65794f776e657250726f6f66000104b4536565205b6050616c6c65743a3a7265706f72745f65717569766f636174696f6e5f756e7369676e6564605d2e306e6f74655f7374616c6c656408011464656c6179100144426c6f636b4e756d626572466f723c543e00016c626573745f66696e616c697a65645f626c6f636b5f6e756d626572100144426c6f636b4e756d626572466f723c543e00020474536565205b6050616c6c65743a3a6e6f74655f7374616c6c6564605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e5d02085073705f636f6e73656e7375735f6772616e6470614445717569766f636174696f6e50726f6f660804480130044e0110000801187365745f69642c0114536574496400013065717569766f636174696f6e6102014845717569766f636174696f6e3c482c204e3e00006102085073705f636f6e73656e7375735f6772616e6470613045717569766f636174696f6e0804480130044e011001081c507265766f7465040065020139016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265766f74653c482c204e3e2c0a417574686f726974795369676e61747572653e00000024507265636f6d6d697404007d020141016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265636f6d6d69743c482c204e3e2c0a417574686f726974795369676e61747572653e000100006502084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401d404560169020453016d0200100130726f756e645f6e756d6265722c010c7536340001206964656e74697479d40108496400011466697273747902011828562c2053290001187365636f6e647902011828562c20532900006902084066696e616c6974795f6772616e6470611c507265766f74650804480130044e01100008012c7461726765745f68617368300104480001347461726765745f6e756d6265721001044e00006d020c5073705f636f6e73656e7375735f6772616e6470610c617070245369676e61747572650000040071020148656432353531393a3a5369676e6174757265000071020c1c73705f636f72651c65643235353139245369676e617475726500000400750201205b75383b2036345d0000750200000340000000080079020000040869026d02007d02084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401d404560181020453016d0200100130726f756e645f6e756d6265722c010c7536340001206964656e74697479d40108496400011466697273748502011828562c2053290001187365636f6e648502011828562c20532900008102084066696e616c6974795f6772616e64706124507265636f6d6d69740804480130044e01100008012c7461726765745f68617368300104480001347461726765745f6e756d6265721001044e000085020000040881026d020089020c3c70616c6c65745f74726561737572791870616c6c65741043616c6c0804540004490001243470726f706f73655f7370656e6408011476616c7565f4013c42616c616e63654f663c542c20493e00012c62656e6566696369617279e90101504163636f756e7449644c6f6f6b75704f663c543e00000478536565205b6050616c6c65743a3a70726f706f73655f7370656e64605d2e3c72656a6563745f70726f706f73616c04012c70726f706f73616c5f69641501013450726f706f73616c496e64657800010480536565205b6050616c6c65743a3a72656a6563745f70726f706f73616c605d2e40617070726f76655f70726f706f73616c04012c70726f706f73616c5f69641501013450726f706f73616c496e64657800020484536565205b6050616c6c65743a3a617070726f76655f70726f706f73616c605d2e2c7370656e645f6c6f63616c080118616d6f756e74f4013c42616c616e63654f663c542c20493e00012c62656e6566696369617279e90101504163636f756e7449644c6f6f6b75704f663c543e00030470536565205b6050616c6c65743a3a7370656e645f6c6f63616c605d2e3c72656d6f76655f617070726f76616c04012c70726f706f73616c5f69641501013450726f706f73616c496e64657800040480536565205b6050616c6c65743a3a72656d6f76655f617070726f76616c605d2e147370656e6410012861737365745f6b696e6405010144426f783c543a3a41737365744b696e643e000118616d6f756e74f40150417373657442616c616e63654f663c542c20493e00012c62656e656669636961727969010178426f783c42656e65666963696172794c6f6f6b75704f663c542c20493e3e00012876616c69645f66726f6d8d0201644f7074696f6e3c426c6f636b4e756d626572466f723c543e3e00050458536565205b6050616c6c65743a3a7370656e64605d2e187061796f7574040114696e6465781001285370656e64496e6465780006045c536565205b6050616c6c65743a3a7061796f7574605d2e30636865636b5f737461747573040114696e6465781001285370656e64496e64657800070474536565205b6050616c6c65743a3a636865636b5f737461747573605d2e28766f69645f7370656e64040114696e6465781001285370656e64496e6465780008046c536565205b6050616c6c65743a3a766f69645f7370656e64605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e8d0204184f7074696f6e04045401100108104e6f6e6500000010536f6d65040010000001000091020c6070616c6c65745f636f6e76696374696f6e5f766f74696e671870616c6c65741043616c6c08045400044900011810766f7465080128706f6c6c5f696e64657815010144506f6c6c496e6465784f663c542c20493e000110766f7465950201704163636f756e74566f74653c42616c616e63654f663c542c20493e3e00000454536565205b6050616c6c65743a3a766f7465605d2e2064656c6567617465100114636c61737391010134436c6173734f663c542c20493e000108746fe90101504163636f756e7449644c6f6f6b75704f663c543e000128636f6e76696374696f6e9d020128436f6e76696374696f6e00011c62616c616e636518013c42616c616e63654f663c542c20493e00010464536565205b6050616c6c65743a3a64656c6567617465605d2e28756e64656c6567617465040114636c61737391010134436c6173734f663c542c20493e0002046c536565205b6050616c6c65743a3a756e64656c6567617465605d2e18756e6c6f636b080114636c61737391010134436c6173734f663c542c20493e000118746172676574e90101504163636f756e7449644c6f6f6b75704f663c543e0003045c536565205b6050616c6c65743a3a756e6c6f636b605d2e2c72656d6f76655f766f7465080114636c617373a10201544f7074696f6e3c436c6173734f663c542c20493e3e000114696e646578100144506f6c6c496e6465784f663c542c20493e00040470536565205b6050616c6c65743a3a72656d6f76655f766f7465605d2e4472656d6f76655f6f746865725f766f74650c0118746172676574e90101504163636f756e7449644c6f6f6b75704f663c543e000114636c61737391010134436c6173734f663c542c20493e000114696e646578100144506f6c6c496e6465784f663c542c20493e00050488536565205b6050616c6c65743a3a72656d6f76655f6f746865725f766f7465605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e95020c6070616c6c65745f636f6e76696374696f6e5f766f74696e6710766f74652c4163636f756e74566f7465041c42616c616e63650118010c205374616e64617264080110766f746599020110566f746500011c62616c616e636518011c42616c616e63650000001453706c697408010c61796518011c42616c616e636500010c6e617918011c42616c616e63650001003053706c69744162737461696e0c010c61796518011c42616c616e636500010c6e617918011c42616c616e636500011c6162737461696e18011c42616c616e63650002000099020c6070616c6c65745f636f6e76696374696f6e5f766f74696e6710766f746510566f746500000400080000009d020c6070616c6c65745f636f6e76696374696f6e5f766f74696e6728636f6e76696374696f6e28436f6e76696374696f6e00011c104e6f6e65000000204c6f636b65643178000100204c6f636b65643278000200204c6f636b65643378000300204c6f636b65643478000400204c6f636b65643578000500204c6f636b6564367800060000a10204184f7074696f6e0404540191010108104e6f6e6500000010536f6d65040091010000010000a5020c4070616c6c65745f7265666572656e64611870616c6c65741043616c6c080454000449000124187375626d69740c013c70726f706f73616c5f6f726967696ea902015c426f783c50616c6c6574734f726967696e4f663c543e3e00012070726f706f73616c9501014c426f756e64656443616c6c4f663c542c20493e000140656e6163746d656e745f6d6f6d656e74c502017c446973706174636854696d653c426c6f636b4e756d626572466f723c543e3e0000045c536565205b6050616c6c65743a3a7375626d6974605d2e58706c6163655f6465636973696f6e5f6465706f736974040114696e64657810013c5265666572656e64756d496e6465780001049c536565205b6050616c6c65743a3a706c6163655f6465636973696f6e5f6465706f736974605d2e5c726566756e645f6465636973696f6e5f6465706f736974040114696e64657810013c5265666572656e64756d496e646578000204a0536565205b6050616c6c65743a3a726566756e645f6465636973696f6e5f6465706f736974605d2e1863616e63656c040114696e64657810013c5265666572656e64756d496e6465780003045c536565205b6050616c6c65743a3a63616e63656c605d2e106b696c6c040114696e64657810013c5265666572656e64756d496e64657800040454536565205b6050616c6c65743a3a6b696c6c605d2e406e756467655f7265666572656e64756d040114696e64657810013c5265666572656e64756d496e64657800050484536565205b6050616c6c65743a3a6e756467655f7265666572656e64756d605d2e486f6e655f66657765725f6465636964696e67040114747261636b9101013c547261636b49644f663c542c20493e0006048c536565205b6050616c6c65743a3a6f6e655f66657765725f6465636964696e67605d2e64726566756e645f7375626d697373696f6e5f6465706f736974040114696e64657810013c5265666572656e64756d496e646578000704a8536565205b6050616c6c65743a3a726566756e645f7375626d697373696f6e5f6465706f736974605d2e307365745f6d65746164617461080114696e64657810013c5265666572656e64756d496e6465780001286d617962655f68617368c902013c4f7074696f6e3c543a3a486173683e00080474536565205b6050616c6c65743a3a7365745f6d65746164617461605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ea9020840706f6c6b61646f745f72756e74696d65304f726967696e43616c6c65720001141873797374656d0400ad0201746672616d655f73797374656d3a3a4f726967696e3c52756e74696d653e0000001c4f726967696e730400b102017470616c6c65745f637573746f6d5f6f726967696e733a3a4f726967696e0016004050617261636861696e734f726967696e0400b502016470617261636861696e735f6f726967696e3a3a4f726967696e0032002458636d50616c6c65740400bd02014870616c6c65745f78636d3a3a4f726967696e00630010566f69640400c10201410173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a0a5f5f707269766174653a3a566f696400040000ad020c346672616d655f737570706f7274206469737061746368245261774f726967696e04244163636f756e7449640100010c10526f6f74000000185369676e656404000001244163636f756e744964000100104e6f6e6500020000b1021440706f6c6b61646f745f72756e74696d6528676f7665726e616e63651c6f726967696e735470616c6c65745f637573746f6d5f6f726967696e73184f726967696e00013c305374616b696e6741646d696e000000245472656173757265720001003c46656c6c6f777368697041646d696e0002003047656e6572616c41646d696e0003003041756374696f6e41646d696e000400284c6561736541646d696e0005004c5265666572656e64756d43616e63656c6c6572000600405265666572656e64756d4b696c6c65720007002c536d616c6c5469707065720008002442696754697070657200090030536d616c6c5370656e646572000a00344d656469756d5370656e646572000b00284269675370656e646572000c004457686974656c697374656443616c6c6572000d003457697368466f724368616e6765000e0000b502106c706f6c6b61646f745f72756e74696d655f70617261636861696e73186f726967696e1870616c6c6574184f726967696e0001042450617261636861696e0400b902011850617261496400000000b9020c74706f6c6b61646f745f70617261636861696e5f7072696d697469766573287072696d6974697665730849640000040010010c7533320000bd020c2870616c6c65745f78636d1870616c6c6574184f726967696e0001080c58636d0400310101204c6f636174696f6e00000020526573706f6e73650400310101204c6f636174696f6e00010000c102081c73705f636f726510566f696400010000c50210346672616d655f737570706f727418747261697473207363686564756c6530446973706174636854696d65042c426c6f636b4e756d62657201100108084174040010012c426c6f636b4e756d626572000000144166746572040010012c426c6f636b4e756d62657200010000c90204184f7074696f6e04045401300108104e6f6e6500000010536f6d650400300000010000cd020c4070616c6c65745f77686974656c6973741870616c6c65741043616c6c0404540001103877686974656c6973745f63616c6c04012463616c6c5f6861736830011c543a3a486173680000047c536565205b6050616c6c65743a3a77686974656c6973745f63616c6c605d2e5c72656d6f76655f77686974656c69737465645f63616c6c04012463616c6c5f6861736830011c543a3a48617368000104a0536565205b6050616c6c65743a3a72656d6f76655f77686974656c69737465645f63616c6c605d2e6464697370617463685f77686974656c69737465645f63616c6c0c012463616c6c5f6861736830011c543a3a4861736800014063616c6c5f656e636f6465645f6c656e10010c75333200014c63616c6c5f7765696768745f7769746e657373240118576569676874000204a8536565205b6050616c6c65743a3a64697370617463685f77686974656c69737465645f63616c6c605d2e9c64697370617463685f77686974656c69737465645f63616c6c5f776974685f707265696d61676504011063616c6c9901017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000304e0536565205b6050616c6c65743a3a64697370617463685f77686974656c69737465645f63616c6c5f776974685f707265696d616765605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ed102105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e18636c61696d731870616c6c65741043616c6c04045400011414636c61696d08011064657374000130543a3a4163636f756e744964000148657468657265756d5f7369676e6174757265d502013845636473615369676e617475726500000458536565205b6050616c6c65743a3a636c61696d605d2e286d696e745f636c61696d10010c77686fdd02013c457468657265756d4164647265737300011476616c756518013042616c616e63654f663c543e00014076657374696e675f7363686564756c65e10201dc4f7074696f6e3c2842616c616e63654f663c543e2c2042616c616e63654f663c543e2c20426c6f636b4e756d626572466f723c543e293e00012473746174656d656e74e90201544f7074696f6e3c53746174656d656e744b696e643e0001046c536565205b6050616c6c65743a3a6d696e745f636c61696d605d2e30636c61696d5f6174746573740c011064657374000130543a3a4163636f756e744964000148657468657265756d5f7369676e6174757265d502013845636473615369676e617475726500012473746174656d656e7434011c5665633c75383e00020474536565205b6050616c6c65743a3a636c61696d5f617474657374605d2e1861747465737404012473746174656d656e7434011c5665633c75383e0003045c536565205b6050616c6c65743a3a617474657374605d2e286d6f76655f636c61696d0c010c6f6c64dd02013c457468657265756d4164647265737300010c6e6577dd02013c457468657265756d416464726573730001386d617962655f707265636c61696d210201504f7074696f6e3c543a3a4163636f756e7449643e0004046c536565205b6050616c6c65743a3a6d6f76655f636c61696d605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ed5020c5c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e18636c61696d733845636473615369676e617475726500000400d90201205b75383b2036355d0000d902000003410000000800dd020c5c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e18636c61696d733c457468657265756d4164647265737300000400210101205b75383b2032305d0000e10204184f7074696f6e04045401e5020108104e6f6e6500000010536f6d650400e5020000010000e5020000040c18181000e90204184f7074696f6e04045401ed020108104e6f6e6500000010536f6d650400ed020000010000ed020c5c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e18636c61696d733453746174656d656e744b696e640001081c526567756c6172000000105361667400010000f1020c3870616c6c65745f76657374696e671870616c6c65741043616c6c040454000118107665737400000454536565205b6050616c6c65743a3a76657374605d2e28766573745f6f74686572040118746172676574e90101504163636f756e7449644c6f6f6b75704f663c543e0001046c536565205b6050616c6c65743a3a766573745f6f74686572605d2e3c7665737465645f7472616e73666572080118746172676574e90101504163636f756e7449644c6f6f6b75704f663c543e0001207363686564756c65f50201b056657374696e67496e666f3c42616c616e63654f663c543e2c20426c6f636b4e756d626572466f723c543e3e00020480536565205b6050616c6c65743a3a7665737465645f7472616e73666572605d2e54666f7263655f7665737465645f7472616e736665720c0118736f75726365e90101504163636f756e7449644c6f6f6b75704f663c543e000118746172676574e90101504163636f756e7449644c6f6f6b75704f663c543e0001207363686564756c65f50201b056657374696e67496e666f3c42616c616e63654f663c543e2c20426c6f636b4e756d626572466f723c543e3e00030498536565205b6050616c6c65743a3a666f7263655f7665737465645f7472616e73666572605d2e3c6d657267655f7363686564756c657308013c7363686564756c65315f696e64657810010c75333200013c7363686564756c65325f696e64657810010c75333200040480536565205b6050616c6c65743a3a6d657267655f7363686564756c6573605d2e74666f7263655f72656d6f76655f76657374696e675f7363686564756c65080118746172676574e901018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650001387363686564756c655f696e64657810010c753332000504b8536565205b6050616c6c65743a3a666f7263655f72656d6f76655f76657374696e675f7363686564756c65605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ef5020c3870616c6c65745f76657374696e673076657374696e675f696e666f2c56657374696e67496e666f081c42616c616e636501182c426c6f636b4e756d6265720110000c01186c6f636b656418011c42616c616e63650001247065725f626c6f636b18011c42616c616e63650001387374617274696e675f626c6f636b10012c426c6f636b4e756d6265720000f9020c3870616c6c65745f7574696c6974791870616c6c65741043616c6c04045400011814626174636804011463616c6c73fd02017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00000458536565205b6050616c6c65743a3a6261746368605d2e3461735f64657269766174697665080114696e6465789101010c75313600011063616c6c9901017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00010478536565205b6050616c6c65743a3a61735f64657269766174697665605d2e2462617463685f616c6c04011463616c6c73fd02017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00020468536565205b6050616c6c65743a3a62617463685f616c6c605d2e2c64697370617463685f617308012461735f6f726967696ea9020154426f783c543a3a50616c6c6574734f726967696e3e00011063616c6c9901017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00030470536565205b6050616c6c65743a3a64697370617463685f6173605d2e2c666f7263655f626174636804011463616c6c73fd02017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00040470536565205b6050616c6c65743a3a666f7263655f6261746368605d2e2c776974685f77656967687408011063616c6c9901017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00011877656967687424011857656967687400050470536565205b6050616c6c65743a3a776974685f776569676874605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732efd0200000299010001030c3c70616c6c65745f6964656e746974791870616c6c65741043616c6c040454000158346164645f72656769737472617204011c6163636f756e74e90101504163636f756e7449644c6f6f6b75704f663c543e00000478536565205b6050616c6c65743a3a6164645f726567697374726172605d2e307365745f6964656e74697479040110696e666f0503016c426f783c543a3a4964656e74697479496e666f726d6174696f6e3e00010474536565205b6050616c6c65743a3a7365745f6964656e74697479605d2e207365745f7375627304011073756273910301645665633c28543a3a4163636f756e7449642c2044617461293e00020464536565205b6050616c6c65743a3a7365745f73756273605d2e38636c6561725f6964656e746974790003047c536565205b6050616c6c65743a3a636c6561725f6964656e74697479605d2e44726571756573745f6a756467656d656e740801247265675f696e64657815010138526567697374726172496e64657800011c6d61785f666565f4013042616c616e63654f663c543e00040488536565205b6050616c6c65743a3a726571756573745f6a756467656d656e74605d2e3863616e63656c5f726571756573740401247265675f696e646578100138526567697374726172496e6465780005047c536565205b6050616c6c65743a3a63616e63656c5f72657175657374605d2e1c7365745f666565080114696e64657815010138526567697374726172496e64657800010c666565f4013042616c616e63654f663c543e00060460536565205b6050616c6c65743a3a7365745f666565605d2e387365745f6163636f756e745f6964080114696e64657815010138526567697374726172496e64657800010c6e6577e90101504163636f756e7449644c6f6f6b75704f663c543e0007047c536565205b6050616c6c65743a3a7365745f6163636f756e745f6964605d2e287365745f6669656c6473080114696e64657815010138526567697374726172496e6465780001186669656c64732c0129013c543a3a4964656e74697479496e666f726d6174696f6e206173204964656e74697479496e666f726d6174696f6e50726f76696465723e3a3a0a4669656c64734964656e7469666965720008046c536565205b6050616c6c65743a3a7365745f6669656c6473605d2e4470726f766964655f6a756467656d656e741001247265675f696e64657815010138526567697374726172496e646578000118746172676574e90101504163636f756e7449644c6f6f6b75704f663c543e0001246a756467656d656e749903015c4a756467656d656e743c42616c616e63654f663c543e3e0001206964656e7469747930011c543a3a4861736800090488536565205b6050616c6c65743a3a70726f766964655f6a756467656d656e74605d2e346b696c6c5f6964656e74697479040118746172676574e90101504163636f756e7449644c6f6f6b75704f663c543e000a0478536565205b6050616c6c65743a3a6b696c6c5f6964656e74697479605d2e1c6164645f73756208010c737562e90101504163636f756e7449644c6f6f6b75704f663c543e000110646174611103011044617461000b0460536565205b6050616c6c65743a3a6164645f737562605d2e2872656e616d655f73756208010c737562e90101504163636f756e7449644c6f6f6b75704f663c543e000110646174611103011044617461000c046c536565205b6050616c6c65743a3a72656e616d655f737562605d2e2872656d6f76655f73756204010c737562e90101504163636f756e7449644c6f6f6b75704f663c543e000d046c536565205b6050616c6c65743a3a72656d6f76655f737562605d2e20717569745f737562000e0464536565205b6050616c6c65743a3a717569745f737562605d2e586164645f757365726e616d655f617574686f726974790c0124617574686f72697479e90101504163636f756e7449644c6f6f6b75704f663c543e00011873756666697834011c5665633c75383e000128616c6c6f636174696f6e10010c753332000f049c536565205b6050616c6c65743a3a6164645f757365726e616d655f617574686f72697479605d2e6472656d6f76655f757365726e616d655f617574686f72697479040124617574686f72697479e90101504163636f756e7449644c6f6f6b75704f663c543e001004a8536565205b6050616c6c65743a3a72656d6f76655f757365726e616d655f617574686f72697479605d2e407365745f757365726e616d655f666f720c010c77686fe90101504163636f756e7449644c6f6f6b75704f663c543e000120757365726e616d6534011c5665633c75383e0001247369676e61747572659d0301704f7074696f6e3c543a3a4f6666636861696e5369676e61747572653e00110484536565205b6050616c6c65743a3a7365745f757365726e616d655f666f72605d2e3c6163636570745f757365726e616d65040120757365726e616d65ad03012c557365726e616d653c543e00120480536565205b6050616c6c65743a3a6163636570745f757365726e616d65605d2e5c72656d6f76655f657870697265645f617070726f76616c040120757365726e616d65ad03012c557365726e616d653c543e001304a0536565205b6050616c6c65743a3a72656d6f76655f657870697265645f617070726f76616c605d2e507365745f7072696d6172795f757365726e616d65040120757365726e616d65ad03012c557365726e616d653c543e00140494536565205b6050616c6c65743a3a7365745f7072696d6172795f757365726e616d65605d2e6072656d6f76655f64616e676c696e675f757365726e616d65040120757365726e616d65ad03012c557365726e616d653c543e001504a4536565205b6050616c6c65743a3a72656d6f76655f64616e676c696e675f757365726e616d65605d2e04704964656e746974792070616c6c6574206465636c61726174696f6e2e05030c3c70616c6c65745f6964656e74697479186c6567616379304964656e74697479496e666f04284669656c644c696d697400002401286164646974696f6e616c09030190426f756e6465645665633c28446174612c2044617461292c204669656c644c696d69743e00011c646973706c617911030110446174610001146c6567616c110301104461746100010c776562110301104461746100011072696f741103011044617461000114656d61696c110301104461746100013c7067705f66696e6765727072696e748d0301404f7074696f6e3c5b75383b2032305d3e000114696d616765110301104461746100011c747769747465721103011044617461000009030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454010d03045300000400890301185665633c543e00000d0300000408110311030011030c3c70616c6c65745f6964656e746974791474797065731044617461000198104e6f6e650000001052617730040015030000010010526177310400190300000200105261773204001d0300000300105261773304002103000004001052617734040044000005001052617735040025030000060010526177360400290300000700105261773704002d03000008001052617738040031030000090010526177390400350300000a001452617731300400390300000b0014526177313104003d0300000c001452617731320400410300000d001452617731330400450300000e001452617731340400490300000f0014526177313504004d03000010001452617731360400c000001100145261773137040051030000120014526177313804005503000013001452617731390400590300001400145261773230040021010000150014526177323104005d030000160014526177323204006103000017001452617732330400650300001800145261773234040069030000190014526177323504006d0300001a001452617732360400710300001b001452617732370400750300001c001452617732380400790300001d0014526177323904007d0300001e001452617733300400810300001f001452617733310400850300002000145261773332040004000021002c426c616b6554776f323536040004000022001853686132353604000400002300244b656363616b323536040004000024002c53686154687265653235360400040000250000150300000300000000080019030000030100000008001d030000030200000008002103000003030000000800250300000305000000080029030000030600000008002d030000030700000008003103000003080000000800350300000309000000080039030000030a00000008003d030000030b000000080041030000030c000000080045030000030d000000080049030000030e00000008004d030000030f00000008005103000003110000000800550300000312000000080059030000031300000008005d030000031500000008006103000003160000000800650300000317000000080069030000031800000008006d0300000319000000080071030000031a000000080075030000031b000000080079030000031c00000008007d030000031d000000080081030000031e000000080085030000031f000000080089030000020d03008d0304184f7074696f6e0404540121010108104e6f6e6500000010536f6d6504002101000001000091030000029503009503000004080011030099030c3c70616c6c65745f6964656e74697479147479706573244a756467656d656e74041c42616c616e63650118011c1c556e6b6e6f776e0000001c46656550616964040018011c42616c616e636500010028526561736f6e61626c65000200244b6e6f776e476f6f64000300244f75744f6644617465000400284c6f775175616c697479000500244572726f6e656f7573000600009d0304184f7074696f6e04045401a1030108104e6f6e6500000010536f6d650400a1030000010000a103082873705f72756e74696d65384d756c74695369676e617475726500010c1c45643235353139040071020148656432353531393a3a5369676e61747572650000001c537232353531390400a5030148737232353531393a3a5369676e61747572650001001445636473610400a903014065636473613a3a5369676e617475726500020000a5030c1c73705f636f72651c73723235353139245369676e617475726500000400750201205b75383b2036345d0000a9030c1c73705f636f7265146563647361245369676e617475726500000400d902017c5b75383b205349474e41545552455f53455249414c495a45445f53495a455d0000ad030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e0000b1030c3070616c6c65745f70726f78791870616c6c65741043616c6c0404540001281470726f78790c01107265616ce90101504163636f756e7449644c6f6f6b75704f663c543e000140666f7263655f70726f78795f74797065b50301504f7074696f6e3c543a3a50726f7879547970653e00011063616c6c9901017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00000458536565205b6050616c6c65743a3a70726f7879605d2e246164645f70726f78790c012064656c6567617465e90101504163636f756e7449644c6f6f6b75704f663c543e00012870726f78795f74797065b9030130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e00010468536565205b6050616c6c65743a3a6164645f70726f7879605d2e3072656d6f76655f70726f78790c012064656c6567617465e90101504163636f756e7449644c6f6f6b75704f663c543e00012870726f78795f74797065b9030130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e00020474536565205b6050616c6c65743a3a72656d6f76655f70726f7879605d2e3872656d6f76655f70726f786965730003047c536565205b6050616c6c65743a3a72656d6f76655f70726f78696573605d2e2c6372656174655f707572650c012870726f78795f74797065b9030130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e000114696e6465789101010c75313600040470536565205b6050616c6c65743a3a6372656174655f70757265605d2e246b696c6c5f7075726514011c737061776e6572e90101504163636f756e7449644c6f6f6b75704f663c543e00012870726f78795f74797065b9030130543a3a50726f787954797065000114696e6465789101010c75313600011868656967687415010144426c6f636b4e756d626572466f723c543e0001246578745f696e6465781501010c75333200050468536565205b6050616c6c65743a3a6b696c6c5f70757265605d2e20616e6e6f756e63650801107265616ce90101504163636f756e7449644c6f6f6b75704f663c543e00012463616c6c5f6861736830013443616c6c486173684f663c543e00060464536565205b6050616c6c65743a3a616e6e6f756e6365605d2e4c72656d6f76655f616e6e6f756e63656d656e740801107265616ce90101504163636f756e7449644c6f6f6b75704f663c543e00012463616c6c5f6861736830013443616c6c486173684f663c543e00070490536565205b6050616c6c65743a3a72656d6f76655f616e6e6f756e63656d656e74605d2e4c72656a6563745f616e6e6f756e63656d656e7408012064656c6567617465e90101504163636f756e7449644c6f6f6b75704f663c543e00012463616c6c5f6861736830013443616c6c486173684f663c543e00080490536565205b6050616c6c65743a3a72656a6563745f616e6e6f756e63656d656e74605d2e3c70726f78795f616e6e6f756e63656410012064656c6567617465e90101504163636f756e7449644c6f6f6b75704f663c543e0001107265616ce90101504163636f756e7449644c6f6f6b75704f663c543e000140666f7263655f70726f78795f74797065b50301504f7074696f6e3c543a3a50726f7879547970653e00011063616c6c9901017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00090480536565205b6050616c6c65743a3a70726f78795f616e6e6f756e636564605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732eb50304184f7074696f6e04045401b9030108104e6f6e6500000010536f6d650400b9030000010000b9030840706f6c6b61646f745f72756e74696d652450726f7879547970650001200c416e790000002c4e6f6e5472616e7366657200010028476f7665726e616e63650002001c5374616b696e67000300444964656e746974794a756467656d656e740005002c43616e63656c50726f78790006001c41756374696f6e0007003c4e6f6d696e6174696f6e506f6f6c7300080000bd030c3c70616c6c65745f6d756c74697369671870616c6c65741043616c6c0404540001105061735f6d756c74695f7468726573686f6c645f310801446f746865725f7369676e61746f72696573f50101445665633c543a3a4163636f756e7449643e00011063616c6c9901017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00000494536565205b6050616c6c65743a3a61735f6d756c74695f7468726573686f6c645f31605d2e2061735f6d756c74691401247468726573686f6c649101010c7531360001446f746865725f7369676e61746f72696573f50101445665633c543a3a4163636f756e7449643e00013c6d617962655f74696d65706f696e74c10301904f7074696f6e3c54696d65706f696e743c426c6f636b4e756d626572466f723c543e3e3e00011063616c6c9901017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0001286d61785f77656967687424011857656967687400010464536565205b6050616c6c65743a3a61735f6d756c7469605d2e40617070726f76655f61735f6d756c74691401247468726573686f6c649101010c7531360001446f746865725f7369676e61746f72696573f50101445665633c543a3a4163636f756e7449643e00013c6d617962655f74696d65706f696e74c10301904f7074696f6e3c54696d65706f696e743c426c6f636b4e756d626572466f723c543e3e3e00012463616c6c5f686173680401205b75383b2033325d0001286d61785f77656967687424011857656967687400020484536565205b6050616c6c65743a3a617070726f76655f61735f6d756c7469605d2e3c63616e63656c5f61735f6d756c74691001247468726573686f6c649101010c7531360001446f746865725f7369676e61746f72696573f50101445665633c543a3a4163636f756e7449643e00012474696d65706f696e74c503017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e00012463616c6c5f686173680401205b75383b2033325d00030480536565205b6050616c6c65743a3a63616e63656c5f61735f6d756c7469605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ec10304184f7074696f6e04045401c5030108104e6f6e6500000010536f6d650400c5030000010000c503083c70616c6c65745f6d756c74697369672454696d65706f696e74042c426c6f636b4e756d62657201100008011868656967687410012c426c6f636b4e756d626572000114696e64657810010c7533320000c9030c3c70616c6c65745f626f756e746965731870616c6c65741043616c6c0804540004490001243870726f706f73655f626f756e747908011476616c7565f4013c42616c616e63654f663c542c20493e00012c6465736372697074696f6e34011c5665633c75383e0000047c536565205b6050616c6c65743a3a70726f706f73655f626f756e7479605d2e38617070726f76655f626f756e7479040124626f756e74795f69641501012c426f756e7479496e6465780001047c536565205b6050616c6c65743a3a617070726f76655f626f756e7479605d2e3c70726f706f73655f63757261746f720c0124626f756e74795f69641501012c426f756e7479496e64657800011c63757261746f72e90101504163636f756e7449644c6f6f6b75704f663c543e00010c666565f4013c42616c616e63654f663c542c20493e00020480536565205b6050616c6c65743a3a70726f706f73655f63757261746f72605d2e40756e61737369676e5f63757261746f72040124626f756e74795f69641501012c426f756e7479496e64657800030484536565205b6050616c6c65743a3a756e61737369676e5f63757261746f72605d2e386163636570745f63757261746f72040124626f756e74795f69641501012c426f756e7479496e6465780004047c536565205b6050616c6c65743a3a6163636570745f63757261746f72605d2e3061776172645f626f756e7479080124626f756e74795f69641501012c426f756e7479496e64657800012c62656e6566696369617279e90101504163636f756e7449644c6f6f6b75704f663c543e00050474536565205b6050616c6c65743a3a61776172645f626f756e7479605d2e30636c61696d5f626f756e7479040124626f756e74795f69641501012c426f756e7479496e64657800060474536565205b6050616c6c65743a3a636c61696d5f626f756e7479605d2e30636c6f73655f626f756e7479040124626f756e74795f69641501012c426f756e7479496e64657800070474536565205b6050616c6c65743a3a636c6f73655f626f756e7479605d2e50657874656e645f626f756e74795f657870697279080124626f756e74795f69641501012c426f756e7479496e64657800011872656d61726b34011c5665633c75383e00080494536565205b6050616c6c65743a3a657874656e645f626f756e74795f657870697279605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ecd030c5470616c6c65745f6368696c645f626f756e746965731870616c6c65741043616c6c04045400011c406164645f6368696c645f626f756e74790c0140706172656e745f626f756e74795f69641501012c426f756e7479496e64657800011476616c7565f4013042616c616e63654f663c543e00012c6465736372697074696f6e34011c5665633c75383e00000484536565205b6050616c6c65743a3a6164645f6368696c645f626f756e7479605d2e3c70726f706f73655f63757261746f72100140706172656e745f626f756e74795f69641501012c426f756e7479496e64657800013c6368696c645f626f756e74795f69641501012c426f756e7479496e64657800011c63757261746f72e90101504163636f756e7449644c6f6f6b75704f663c543e00010c666565f4013042616c616e63654f663c543e00010480536565205b6050616c6c65743a3a70726f706f73655f63757261746f72605d2e386163636570745f63757261746f72080140706172656e745f626f756e74795f69641501012c426f756e7479496e64657800013c6368696c645f626f756e74795f69641501012c426f756e7479496e6465780002047c536565205b6050616c6c65743a3a6163636570745f63757261746f72605d2e40756e61737369676e5f63757261746f72080140706172656e745f626f756e74795f69641501012c426f756e7479496e64657800013c6368696c645f626f756e74795f69641501012c426f756e7479496e64657800030484536565205b6050616c6c65743a3a756e61737369676e5f63757261746f72605d2e4861776172645f6368696c645f626f756e74790c0140706172656e745f626f756e74795f69641501012c426f756e7479496e64657800013c6368696c645f626f756e74795f69641501012c426f756e7479496e64657800012c62656e6566696369617279e90101504163636f756e7449644c6f6f6b75704f663c543e0004048c536565205b6050616c6c65743a3a61776172645f6368696c645f626f756e7479605d2e48636c61696d5f6368696c645f626f756e7479080140706172656e745f626f756e74795f69641501012c426f756e7479496e64657800013c6368696c645f626f756e74795f69641501012c426f756e7479496e6465780005048c536565205b6050616c6c65743a3a636c61696d5f6368696c645f626f756e7479605d2e48636c6f73655f6368696c645f626f756e7479080140706172656e745f626f756e74795f69641501012c426f756e7479496e64657800013c6368696c645f626f756e74795f69641501012c426f756e7479496e6465780006048c536565205b6050616c6c65743a3a636c6f73655f6368696c645f626f756e7479605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ed1030c9070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173651870616c6c65741043616c6c0404540001143c7375626d69745f756e7369676e65640801307261775f736f6c7574696f6ed50301b0426f783c526177536f6c7574696f6e3c536f6c7574696f6e4f663c543a3a4d696e6572436f6e6669673e3e3e00011c7769746e657373a9040158536f6c7574696f6e4f72536e617073686f7453697a6500000480536565205b6050616c6c65743a3a7375626d69745f756e7369676e6564605d2e6c7365745f6d696e696d756d5f756e747275737465645f73636f72650401406d617962655f6e6578745f73636f7265ad0401544f7074696f6e3c456c656374696f6e53636f72653e000104b0536565205b6050616c6c65743a3a7365745f6d696e696d756d5f756e747275737465645f73636f7265605d2e747365745f656d657267656e63795f656c656374696f6e5f726573756c74040120737570706f727473b1040158537570706f7274733c543a3a4163636f756e7449643e000204b8536565205b6050616c6c65743a3a7365745f656d657267656e63795f656c656374696f6e5f726573756c74605d2e187375626d69740401307261775f736f6c7574696f6ed50301b0426f783c526177536f6c7574696f6e3c536f6c7574696f6e4f663c543a3a4d696e6572436f6e6669673e3e3e0003045c536565205b6050616c6c65743a3a7375626d6974605d2e4c676f7665726e616e63655f66616c6c6261636b0801406d617962655f6d61785f766f746572738d02012c4f7074696f6e3c7533323e0001446d617962655f6d61785f746172676574738d02012c4f7074696f6e3c7533323e00040490536565205b6050616c6c65743a3a676f7665726e616e63655f66616c6c6261636b605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ed503089070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173652c526177536f6c7574696f6e04045301d903000c0120736f6c7574696f6ed90301045300011473636f7265a5040134456c656374696f6e53636f7265000114726f756e6410010c7533320000d9030840706f6c6b61646f745f72756e74696d65544e706f73436f6d70616374536f6c7574696f6e31360000400118766f74657331dd0300000118766f74657332e90300000118766f74657333fd0300000118766f74657334090400000118766f74657335150400000118766f74657336210400000118766f746573372d0400000118766f74657338390400000118766f7465733945040000011c766f746573313051040000011c766f74657331315d040000011c766f746573313269040000011c766f746573313375040000011c766f746573313481040000011c766f74657331358d040000011c766f74657331369904000000dd03000002e10300e103000004081501e50300e503000006910100e903000002ed0300ed030000040c1501f103e50300f10300000408e503f50300f503000006f90300f9030c3473705f61726974686d65746963287065725f7468696e677318506572553136000004009101010c7531360000fd0300000201040001040000040c15010504e50300050400000302000000f1030009040000020d04000d040000040c15011104e50300110400000303000000f10300150400000219040019040000040c15011d04e503001d0400000304000000f10300210400000225040025040000040c15012904e50300290400000305000000f103002d0400000231040031040000040c15013504e50300350400000306000000f1030039040000023d04003d040000040c15014104e50300410400000307000000f10300450400000249040049040000040c15014d04e503004d0400000308000000f10300510400000255040055040000040c15015904e50300590400000309000000f103005d0400000261040061040000040c15016504e5030065040000030a000000f1030069040000026d04006d040000040c15017104e5030071040000030b000000f10300750400000279040079040000040c15017d04e503007d040000030c000000f10300810400000285040085040000040c15018904e5030089040000030d000000f103008d0400000291040091040000040c15019504e5030095040000030e000000f1030099040000029d04009d040000040c1501a104e50300a1040000030f000000f10300a504084473705f6e706f735f656c656374696f6e7334456c656374696f6e53636f726500000c01346d696e696d616c5f7374616b6518013c457874656e64656442616c616e636500012473756d5f7374616b6518013c457874656e64656442616c616e636500014473756d5f7374616b655f7371756172656418013c457874656e64656442616c616e63650000a904089070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f706861736558536f6c7574696f6e4f72536e617073686f7453697a650000080118766f746572731501010c75333200011c746172676574731501010c7533320000ad0404184f7074696f6e04045401a5040108104e6f6e6500000010536f6d650400a5040000010000b104000002b50400b5040000040800b90400b904084473705f6e706f735f656c656374696f6e731c537570706f727404244163636f756e744964010000080114746f74616c18013c457874656e64656442616c616e6365000118766f74657273bd0401845665633c284163636f756e7449642c20457874656e64656442616c616e6365293e0000bd04000002c10400c10400000408001800c5040c4070616c6c65745f626167735f6c6973741870616c6c65741043616c6c08045400044900010c1472656261670401286469736c6f6361746564e90101504163636f756e7449644c6f6f6b75704f663c543e00000458536565205b6050616c6c65743a3a7265626167605d2e3c7075745f696e5f66726f6e745f6f6604011c6c696768746572e90101504163636f756e7449644c6f6f6b75704f663c543e00010480536565205b6050616c6c65743a3a7075745f696e5f66726f6e745f6f66605d2e547075745f696e5f66726f6e745f6f665f6f7468657208011c68656176696572e90101504163636f756e7449644c6f6f6b75704f663c543e00011c6c696768746572e90101504163636f756e7449644c6f6f6b75704f663c543e00020498536565205b6050616c6c65743a3a7075745f696e5f66726f6e745f6f665f6f74686572605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ec9040c5c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c731870616c6c65741043616c6c04045400015c106a6f696e080118616d6f756e74f4013042616c616e63654f663c543e00011c706f6f6c5f6964100118506f6f6c496400000454536565205b6050616c6c65743a3a6a6f696e605d2e28626f6e645f65787472610401146578747261cd04015c426f6e6445787472613c42616c616e63654f663c543e3e0001046c536565205b6050616c6c65743a3a626f6e645f6578747261605d2e30636c61696d5f7061796f757400020474536565205b6050616c6c65743a3a636c61696d5f7061796f7574605d2e18756e626f6e640801386d656d6265725f6163636f756e74e90101504163636f756e7449644c6f6f6b75704f663c543e000140756e626f6e64696e675f706f696e7473f4013042616c616e63654f663c543e0003045c536565205b6050616c6c65743a3a756e626f6e64605d2e58706f6f6c5f77697468647261775f756e626f6e64656408011c706f6f6c5f6964100118506f6f6c49640001486e756d5f736c617368696e675f7370616e7310010c7533320004049c536565205b6050616c6c65743a3a706f6f6c5f77697468647261775f756e626f6e646564605d2e4477697468647261775f756e626f6e6465640801386d656d6265725f6163636f756e74e90101504163636f756e7449644c6f6f6b75704f663c543e0001486e756d5f736c617368696e675f7370616e7310010c75333200050488536565205b6050616c6c65743a3a77697468647261775f756e626f6e646564605d2e18637265617465100118616d6f756e74f4013042616c616e63654f663c543e000110726f6f74e90101504163636f756e7449644c6f6f6b75704f663c543e0001246e6f6d696e61746f72e90101504163636f756e7449644c6f6f6b75704f663c543e00011c626f756e636572e90101504163636f756e7449644c6f6f6b75704f663c543e0006045c536565205b6050616c6c65743a3a637265617465605d2e4c6372656174655f776974685f706f6f6c5f6964140118616d6f756e74f4013042616c616e63654f663c543e000110726f6f74e90101504163636f756e7449644c6f6f6b75704f663c543e0001246e6f6d696e61746f72e90101504163636f756e7449644c6f6f6b75704f663c543e00011c626f756e636572e90101504163636f756e7449644c6f6f6b75704f663c543e00011c706f6f6c5f6964100118506f6f6c496400070490536565205b6050616c6c65743a3a6372656174655f776974685f706f6f6c5f6964605d2e206e6f6d696e61746508011c706f6f6c5f6964100118506f6f6c496400012876616c696461746f7273f50101445665633c543a3a4163636f756e7449643e00080464536565205b6050616c6c65743a3a6e6f6d696e617465605d2e247365745f737461746508011c706f6f6c5f6964100118506f6f6c49640001147374617465d1040124506f6f6c537461746500090468536565205b6050616c6c65743a3a7365745f7374617465605d2e307365745f6d6574616461746108011c706f6f6c5f6964100118506f6f6c49640001206d6574616461746134011c5665633c75383e000a0474536565205b6050616c6c65743a3a7365745f6d65746164617461605d2e2c7365745f636f6e666967731801346d696e5f6a6f696e5f626f6e64d5040158436f6e6669674f703c42616c616e63654f663c543e3e00013c6d696e5f6372656174655f626f6e64d5040158436f6e6669674f703c42616c616e63654f663c543e3e0001246d61785f706f6f6c73d9040134436f6e6669674f703c7533323e00012c6d61785f6d656d62657273d9040134436f6e6669674f703c7533323e0001506d61785f6d656d626572735f7065725f706f6f6cd9040134436f6e6669674f703c7533323e000154676c6f62616c5f6d61785f636f6d6d697373696f6edd040144436f6e6669674f703c50657262696c6c3e000b0470536565205b6050616c6c65743a3a7365745f636f6e66696773605d2e307570646174655f726f6c657310011c706f6f6c5f6964100118506f6f6c49640001206e65775f726f6f74e1040158436f6e6669674f703c543a3a4163636f756e7449643e0001346e65775f6e6f6d696e61746f72e1040158436f6e6669674f703c543a3a4163636f756e7449643e00012c6e65775f626f756e636572e1040158436f6e6669674f703c543a3a4163636f756e7449643e000c0474536565205b6050616c6c65743a3a7570646174655f726f6c6573605d2e146368696c6c04011c706f6f6c5f6964100118506f6f6c4964000d0458536565205b6050616c6c65743a3a6368696c6c605d2e40626f6e645f65787472615f6f746865720801186d656d626572e90101504163636f756e7449644c6f6f6b75704f663c543e0001146578747261cd04015c426f6e6445787472613c42616c616e63654f663c543e3e000e0484536565205b6050616c6c65743a3a626f6e645f65787472615f6f74686572605d2e507365745f636c61696d5f7065726d697373696f6e0401287065726d697373696f6ee504013c436c61696d5065726d697373696f6e000f0494536565205b6050616c6c65743a3a7365745f636c61696d5f7065726d697373696f6e605d2e48636c61696d5f7061796f75745f6f746865720401146f74686572000130543a3a4163636f756e7449640010048c536565205b6050616c6c65743a3a636c61696d5f7061796f75745f6f74686572605d2e387365745f636f6d6d697373696f6e08011c706f6f6c5f6964100118506f6f6c49640001386e65775f636f6d6d697373696f6ee904017c4f7074696f6e3c2850657262696c6c2c20543a3a4163636f756e744964293e0011047c536565205b6050616c6c65743a3a7365745f636f6d6d697373696f6e605d2e487365745f636f6d6d697373696f6e5f6d617808011c706f6f6c5f6964100118506f6f6c49640001386d61785f636f6d6d697373696f6eac011c50657262696c6c0012048c536565205b6050616c6c65743a3a7365745f636f6d6d697373696f6e5f6d6178605d2e687365745f636f6d6d697373696f6e5f6368616e67655f7261746508011c706f6f6c5f6964100118506f6f6c496400012c6368616e67655f72617465f104019c436f6d6d697373696f6e4368616e6765526174653c426c6f636b4e756d626572466f723c543e3e001304ac536565205b6050616c6c65743a3a7365745f636f6d6d697373696f6e5f6368616e67655f72617465605d2e40636c61696d5f636f6d6d697373696f6e04011c706f6f6c5f6964100118506f6f6c496400140484536565205b6050616c6c65743a3a636c61696d5f636f6d6d697373696f6e605d2e4c61646a7573745f706f6f6c5f6465706f73697404011c706f6f6c5f6964100118506f6f6c496400150490536565205b6050616c6c65743a3a61646a7573745f706f6f6c5f6465706f736974605d2e7c7365745f636f6d6d697373696f6e5f636c61696d5f7065726d697373696f6e08011c706f6f6c5f6964100118506f6f6c49640001287065726d697373696f6ef50401bc4f7074696f6e3c436f6d6d697373696f6e436c61696d5065726d697373696f6e3c543a3a4163636f756e7449643e3e001604c0536565205b6050616c6c65743a3a7365745f636f6d6d697373696f6e5f636c61696d5f7065726d697373696f6e605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ecd04085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7324426f6e644578747261041c42616c616e6365011801082c4672656542616c616e6365040018011c42616c616e63650000001c5265776172647300010000d104085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7324506f6f6c537461746500010c104f70656e0000001c426c6f636b65640001002844657374726f79696e6700020000d504085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7320436f6e6669674f700404540118010c104e6f6f700000000c5365740400180104540001001852656d6f766500020000d904085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7320436f6e6669674f700404540110010c104e6f6f700000000c5365740400100104540001001852656d6f766500020000dd04085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7320436f6e6669674f7004045401ac010c104e6f6f700000000c5365740400ac0104540001001852656d6f766500020000e104085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7320436f6e6669674f700404540100010c104e6f6f700000000c5365740400000104540001001852656d6f766500020000e504085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c733c436c61696d5065726d697373696f6e000110305065726d697373696f6e6564000000585065726d697373696f6e6c657373436f6d706f756e64000100585065726d697373696f6e6c6573735769746864726177000200445065726d697373696f6e6c657373416c6c00030000e90404184f7074696f6e04045401ed040108104e6f6e6500000010536f6d650400ed040000010000ed0400000408ac0000f104085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7350436f6d6d697373696f6e4368616e676552617465042c426c6f636b4e756d6265720110000801306d61785f696e637265617365ac011c50657262696c6c0001246d696e5f64656c617910012c426c6f636b4e756d6265720000f50404184f7074696f6e04045401f9040108104e6f6e6500000010536f6d650400f9040000010000f904085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7364436f6d6d697373696f6e436c61696d5065726d697373696f6e04244163636f756e74496401000108385065726d697373696f6e6c6573730000001c4163636f756e7404000001244163636f756e74496400010000fd040c4c70616c6c65745f666173745f756e7374616b651870616c6c65741043616c6c04045400010c5472656769737465725f666173745f756e7374616b6500000498536565205b6050616c6c65743a3a72656769737465725f666173745f756e7374616b65605d2e28646572656769737465720001046c536565205b6050616c6c65743a3a64657265676973746572605d2e1c636f6e74726f6c040134657261735f746f5f636865636b100120457261496e64657800020460536565205b6050616c6c65743a3a636f6e74726f6c605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e0105106c706f6c6b61646f745f72756e74696d655f70617261636861696e7334636f6e66696775726174696f6e1870616c6c65741043616c6c0404540001bc7c7365745f76616c69646174696f6e5f757067726164655f636f6f6c646f776e04010c6e6577100144426c6f636b4e756d626572466f723c543e000004c0536565205b6050616c6c65743a3a7365745f76616c69646174696f6e5f757067726164655f636f6f6c646f776e605d2e707365745f76616c69646174696f6e5f757067726164655f64656c617904010c6e6577100144426c6f636b4e756d626572466f723c543e000104b4536565205b6050616c6c65743a3a7365745f76616c69646174696f6e5f757067726164655f64656c6179605d2e647365745f636f64655f726574656e74696f6e5f706572696f6404010c6e6577100144426c6f636b4e756d626572466f723c543e000204a8536565205b6050616c6c65743a3a7365745f636f64655f726574656e74696f6e5f706572696f64605d2e447365745f6d61785f636f64655f73697a6504010c6e657710010c75333200030488536565205b6050616c6c65743a3a7365745f6d61785f636f64655f73697a65605d2e407365745f6d61785f706f765f73697a6504010c6e657710010c75333200040484536565205b6050616c6c65743a3a7365745f6d61785f706f765f73697a65605d2e587365745f6d61785f686561645f646174615f73697a6504010c6e657710010c7533320005049c536565205b6050616c6c65743a3a7365745f6d61785f686561645f646174615f73697a65605d2e487365745f636f726574696d655f636f72657304010c6e657710010c7533320006048c536565205b6050616c6c65743a3a7365745f636f726574696d655f636f726573605d2e547365745f6f6e5f64656d616e645f7265747269657304010c6e657710010c75333200070498536565205b6050616c6c65743a3a7365745f6f6e5f64656d616e645f72657472696573605d2e707365745f67726f75705f726f746174696f6e5f6672657175656e637904010c6e6577100144426c6f636b4e756d626572466f723c543e000804b4536565205b6050616c6c65743a3a7365745f67726f75705f726f746174696f6e5f6672657175656e6379605d2e747365745f70617261735f617661696c6162696c6974795f706572696f6404010c6e6577100144426c6f636b4e756d626572466f723c543e000904b8536565205b6050616c6c65743a3a7365745f70617261735f617661696c6162696c6974795f706572696f64605d2e607365745f7363686564756c696e675f6c6f6f6b616865616404010c6e657710010c753332000b04a4536565205b6050616c6c65743a3a7365745f7363686564756c696e675f6c6f6f6b6168656164605d2e6c7365745f6d61785f76616c696461746f72735f7065725f636f726504010c6e65778d02012c4f7074696f6e3c7533323e000c04b0536565205b6050616c6c65743a3a7365745f6d61785f76616c696461746f72735f7065725f636f7265605d2e487365745f6d61785f76616c696461746f727304010c6e65778d02012c4f7074696f6e3c7533323e000d048c536565205b6050616c6c65743a3a7365745f6d61785f76616c696461746f7273605d2e487365745f646973707574655f706572696f6404010c6e657710013053657373696f6e496e646578000e048c536565205b6050616c6c65743a3a7365745f646973707574655f706572696f64605d2eb47365745f646973707574655f706f73745f636f6e636c7573696f6e5f616363657074616e63655f706572696f6404010c6e6577100144426c6f636b4e756d626572466f723c543e000f04f8536565205b6050616c6c65743a3a7365745f646973707574655f706f73745f636f6e636c7573696f6e5f616363657074616e63655f706572696f64605d2e447365745f6e6f5f73686f775f736c6f747304010c6e657710010c75333200120488536565205b6050616c6c65743a3a7365745f6e6f5f73686f775f736c6f7473605d2e507365745f6e5f64656c61795f7472616e6368657304010c6e657710010c75333200130494536565205b6050616c6c65743a3a7365745f6e5f64656c61795f7472616e63686573605d2e787365745f7a65726f74685f64656c61795f7472616e6368655f776964746804010c6e657710010c753332001404bc536565205b6050616c6c65743a3a7365745f7a65726f74685f64656c61795f7472616e6368655f7769647468605d2e507365745f6e65656465645f617070726f76616c7304010c6e657710010c75333200150494536565205b6050616c6c65743a3a7365745f6e65656465645f617070726f76616c73605d2e707365745f72656c61795f7672665f6d6f64756c6f5f73616d706c657304010c6e657710010c753332001604b4536565205b6050616c6c65743a3a7365745f72656c61795f7672665f6d6f64756c6f5f73616d706c6573605d2e687365745f6d61785f7570776172645f71756575655f636f756e7404010c6e657710010c753332001704ac536565205b6050616c6c65743a3a7365745f6d61785f7570776172645f71756575655f636f756e74605d2e647365745f6d61785f7570776172645f71756575655f73697a6504010c6e657710010c753332001804a8536565205b6050616c6c65743a3a7365745f6d61785f7570776172645f71756575655f73697a65605d2e747365745f6d61785f646f776e776172645f6d6573736167655f73697a6504010c6e657710010c753332001904b8536565205b6050616c6c65743a3a7365745f6d61785f646f776e776172645f6d6573736167655f73697a65605d2e6c7365745f6d61785f7570776172645f6d6573736167655f73697a6504010c6e657710010c753332001b04b0536565205b6050616c6c65743a3a7365745f6d61785f7570776172645f6d6573736167655f73697a65605d2ea07365745f6d61785f7570776172645f6d6573736167655f6e756d5f7065725f63616e64696461746504010c6e657710010c753332001c04e4536565205b6050616c6c65743a3a7365745f6d61785f7570776172645f6d6573736167655f6e756d5f7065725f63616e646964617465605d2e647365745f68726d705f6f70656e5f726571756573745f74746c04010c6e657710010c753332001d04a8536565205b6050616c6c65743a3a7365745f68726d705f6f70656e5f726571756573745f74746c605d2e5c7365745f68726d705f73656e6465725f6465706f73697404010c6e657718011c42616c616e6365001e04a0536565205b6050616c6c65743a3a7365745f68726d705f73656e6465725f6465706f736974605d2e687365745f68726d705f726563697069656e745f6465706f73697404010c6e657718011c42616c616e6365001f04ac536565205b6050616c6c65743a3a7365745f68726d705f726563697069656e745f6465706f736974605d2e747365745f68726d705f6368616e6e656c5f6d61785f636170616369747904010c6e657710010c753332002004b8536565205b6050616c6c65743a3a7365745f68726d705f6368616e6e656c5f6d61785f6361706163697479605d2e7c7365745f68726d705f6368616e6e656c5f6d61785f746f74616c5f73697a6504010c6e657710010c753332002104c0536565205b6050616c6c65743a3a7365745f68726d705f6368616e6e656c5f6d61785f746f74616c5f73697a65605d2e9c7365745f68726d705f6d61785f70617261636861696e5f696e626f756e645f6368616e6e656c7304010c6e657710010c753332002204e0536565205b6050616c6c65743a3a7365745f68726d705f6d61785f70617261636861696e5f696e626f756e645f6368616e6e656c73605d2e847365745f68726d705f6368616e6e656c5f6d61785f6d6573736167655f73697a6504010c6e657710010c753332002404c8536565205b6050616c6c65743a3a7365745f68726d705f6368616e6e656c5f6d61785f6d6573736167655f73697a65605d2ea07365745f68726d705f6d61785f70617261636861696e5f6f7574626f756e645f6368616e6e656c7304010c6e657710010c753332002504e4536565205b6050616c6c65743a3a7365745f68726d705f6d61785f70617261636861696e5f6f7574626f756e645f6368616e6e656c73605d2e987365745f68726d705f6d61785f6d6573736167655f6e756d5f7065725f63616e64696461746504010c6e657710010c753332002704dc536565205b6050616c6c65743a3a7365745f68726d705f6d61785f6d6573736167655f6e756d5f7065725f63616e646964617465605d2e487365745f7076665f766f74696e675f74746c04010c6e657710013053657373696f6e496e646578002a048c536565205b6050616c6c65743a3a7365745f7076665f766f74696e675f74746c605d2e907365745f6d696e696d756d5f76616c69646174696f6e5f757067726164655f64656c617904010c6e6577100144426c6f636b4e756d626572466f723c543e002b04d4536565205b6050616c6c65743a3a7365745f6d696e696d756d5f76616c69646174696f6e5f757067726164655f64656c6179605d2e707365745f6279706173735f636f6e73697374656e63795f636865636b04010c6e6577780110626f6f6c002c04b4536565205b6050616c6c65743a3a7365745f6279706173735f636f6e73697374656e63795f636865636b605d2e607365745f6173796e635f6261636b696e675f706172616d7304010c6e6577050501484173796e634261636b696e67506172616d73002d04a4536565205b6050616c6c65743a3a7365745f6173796e635f6261636b696e675f706172616d73605d2e4c7365745f6578656375746f725f706172616d7304010c6e6577090501384578656375746f72506172616d73002e0490536565205b6050616c6c65743a3a7365745f6578656375746f725f706172616d73605d2e587365745f6f6e5f64656d616e645f626173655f66656504010c6e657718011c42616c616e6365002f049c536565205b6050616c6c65743a3a7365745f6f6e5f64656d616e645f626173655f666565605d2e747365745f6f6e5f64656d616e645f6665655f766172696162696c69747904010c6e6577ac011c50657262696c6c003004b8536565205b6050616c6c65743a3a7365745f6f6e5f64656d616e645f6665655f766172696162696c697479605d2e707365745f6f6e5f64656d616e645f71756575655f6d61785f73697a6504010c6e657710010c753332003104b4536565205b6050616c6c65743a3a7365745f6f6e5f64656d616e645f71756575655f6d61785f73697a65605d2e987365745f6f6e5f64656d616e645f7461726765745f71756575655f7574696c697a6174696f6e04010c6e6577ac011c50657262696c6c003204dc536565205b6050616c6c65743a3a7365745f6f6e5f64656d616e645f7461726765745f71756575655f7574696c697a6174696f6e605d2e447365745f6f6e5f64656d616e645f74746c04010c6e6577100144426c6f636b4e756d626572466f723c543e00330488536565205b6050616c6c65743a3a7365745f6f6e5f64656d616e645f74746c605d2e647365745f6d696e696d756d5f6261636b696e675f766f74657304010c6e657710010c753332003404a8536565205b6050616c6c65743a3a7365745f6d696e696d756d5f6261636b696e675f766f746573605d2e407365745f6e6f64655f66656174757265080114696e646578080108753800011476616c7565780110626f6f6c00350484536565205b6050616c6c65743a3a7365745f6e6f64655f66656174757265605d2e687365745f617070726f76616c5f766f74696e675f706172616d7304010c6e65771d050150417070726f76616c566f74696e67506172616d73003604ac536565205b6050616c6c65743a3a7365745f617070726f76616c5f766f74696e675f706172616d73605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e0505104c706f6c6b61646f745f7072696d697469766573087636346173796e635f6261636b696e67484173796e634261636b696e67506172616d73000008014c6d61785f63616e6469646174655f646570746810010c753332000150616c6c6f7765645f616e6365737472795f6c656e10010c75333200000905104c706f6c6b61646f745f7072696d6974697665730876363c6578656375746f725f706172616d73384578656375746f72506172616d73000004000d0501485665633c4578656375746f72506172616d3e00000d050000021105001105104c706f6c6b61646f745f7072696d6974697665730876363c6578656375746f725f706172616d73344578656375746f72506172616d00011c384d61784d656d6f72795061676573040010010c7533320001003c537461636b4c6f676963616c4d6178040010010c75333200020038537461636b4e61746976654d6178040010010c75333200030050507265636865636b696e674d61784d656d6f727904002c010c753634000400385076665072657054696d656f757408001505012c507666507265704b696e6400002c010c753634000500385076664578656354696d656f757408001905012c507666457865634b696e6400002c010c753634000600445761736d45787442756c6b4d656d6f72790007000015050c4c706f6c6b61646f745f7072696d6974697665730876362c507666507265704b696e6400010820507265636865636b0000001c507265706172650001000019050c4c706f6c6b61646f745f7072696d6974697665730876362c507666457865634b696e640001081c4261636b696e6700000020417070726f76616c000100001d050c4c706f6c6b61646f745f7072696d697469766573207673746167696e6750417070726f76616c566f74696e67506172616d73000004016c6d61785f617070726f76616c5f636f616c657363655f636f756e7410010c75333200002105106c706f6c6b61646f745f72756e74696d655f70617261636861696e73187368617265641870616c6c65741043616c6c040454000100040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e2505106c706f6c6b61646f745f72756e74696d655f70617261636861696e7324696e636c7573696f6e1870616c6c65741043616c6c040454000100040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e2905106c706f6c6b61646f745f72756e74696d655f70617261636861696e733870617261735f696e686572656e741870616c6c65741043616c6c04045400010414656e746572040110646174612d05019050617261636861696e73496e686572656e74446174613c486561646572466f723c543e3e00000458536565205b6050616c6c65743a3a656e746572605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e2d050c4c706f6c6b61646f745f7072696d69746976657308763630496e686572656e7444617461040c48445201c501001001246269746669656c647331050190556e636865636b65645369676e6564417661696c6162696c6974794269746669656c64730001446261636b65645f63616e646964617465734d05017c5665633c4261636b656443616e6469646174653c4844523a3a486173683e3e0001206469737075746573910501604d756c74694469737075746553746174656d656e74536574000134706172656e745f686561646572c501010c484452000031050000023505003505104c706f6c6b61646f745f7072696d697469766573087636187369676e65643c556e636865636b65645369676e6564081c5061796c6f61640139052c5265616c5061796c6f6164013905000c011c7061796c6f61643905011c5061796c6f616400013c76616c696461746f725f696e6465784505013856616c696461746f72496e6465780001247369676e61747572654905014856616c696461746f725369676e6174757265000039050c4c706f6c6b61646f745f7072696d69746976657308763650417661696c6162696c6974794269746669656c64000004003d05017c4269745665633c75382c206269747665633a3a6f726465723a3a4c7362303e00003d050000070841050041050c18626974766563146f72646572104c7362300000000045050c4c706f6c6b61646f745f7072696d6974697665730876363856616c696461746f72496e6465780000040010010c75333200004905104c706f6c6b61646f745f7072696d6974697665730876363476616c696461746f725f617070245369676e617475726500000400a5030148737232353531393a3a5369676e617475726500004d0500000251050051050c4c706f6c6b61646f745f7072696d6974697665730876363c4261636b656443616e6469646174650404480130000c012463616e64696461746555050170436f6d6d697474656443616e646964617465526563656970743c483e00013876616c69646974795f766f746573890501605665633c56616c69646974794174746573746174696f6e3e00014476616c696461746f725f696e64696365733d05017c4269745665633c75382c206269747665633a3a6f726465723a3a4c7362303e000055050c4c706f6c6b61646f745f7072696d69746976657308763664436f6d6d697474656443616e6469646174655265636569707404044801300008012864657363726970746f725905015843616e64696461746544657363726970746f723c483e00012c636f6d6d69746d656e74736905015043616e646964617465436f6d6d69746d656e7473000059050c4c706f6c6b61646f745f7072696d6974697665730876364c43616e64696461746544657363726970746f7204044801300024011c706172615f6964b9020108496400013072656c61795f706172656e7430010448000120636f6c6c61746f725d050128436f6c6c61746f7249640001787065727369737465645f76616c69646174696f6e5f646174615f6861736830011048617368000120706f765f6861736830011048617368000130657261737572655f726f6f74300110486173680001247369676e617475726561050144436f6c6c61746f725369676e6174757265000124706172615f686561643001104861736800015076616c69646174696f6e5f636f64655f686173686505014856616c69646174696f6e436f64654861736800005d05104c706f6c6b61646f745f7072696d69746976657308763630636f6c6c61746f725f617070185075626c696300000400e4013c737232353531393a3a5075626c696300006105104c706f6c6b61646f745f7072696d69746976657308763630636f6c6c61746f725f617070245369676e617475726500000400a5030148737232353531393a3a5369676e6174757265000065050c74706f6c6b61646f745f70617261636861696e5f7072696d697469766573287072696d6974697665734856616c69646174696f6e436f6465486173680000040030011048617368000069050c4c706f6c6b61646f745f7072696d6974697665730876365043616e646964617465436f6d6d69746d656e747304044e01100018013c7570776172645f6d657373616765736d0501385570776172644d6573736167657300014c686f72697a6f6e74616c5f6d6573736167657371050148486f72697a6f6e74616c4d6573736167657300014c6e65775f76616c69646174696f6e5f636f64657d0501584f7074696f6e3c56616c69646174696f6e436f64653e000124686561645f6461746185050120486561644461746100016c70726f6365737365645f646f776e776172645f6d6573736167657310010c75333200013868726d705f77617465726d61726b1001044e00006d050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540134045300000400a90101185665633c543e000071050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454017505045300000400790501185665633c543e000075050860706f6c6b61646f745f636f72655f7072696d6974697665734c4f7574626f756e6448726d704d6573736167650408496401b90200080124726563697069656e74b902010849640001106461746134015073705f7374643a3a7665633a3a5665633c75383e000079050000027505007d0504184f7074696f6e0404540181050108104e6f6e6500000010536f6d6504008105000001000081050c74706f6c6b61646f745f70617261636861696e5f7072696d697469766573287072696d6974697665733856616c69646174696f6e436f64650000040034011c5665633c75383e000085050c74706f6c6b61646f745f70617261636861696e5f7072696d697469766573287072696d6974697665732048656164446174610000040034011c5665633c75383e000089050000028d05008d050c4c706f6c6b61646f745f7072696d6974697665730876364c56616c69646974794174746573746174696f6e00010820496d706c6963697404004905014856616c696461746f725369676e6174757265000100204578706c6963697404004905014856616c696461746f725369676e617475726500020000910500000295050095050c4c706f6c6b61646f745f7072696d6974697665730876364c4469737075746553746174656d656e7453657400000c013863616e6469646174655f686173689905013443616e6469646174654861736800011c73657373696f6e10013053657373696f6e496e64657800012873746174656d656e74739d0501ec5665633c284469737075746553746174656d656e742c2056616c696461746f72496e6465782c2056616c696461746f725369676e6174757265293e000099050860706f6c6b61646f745f636f72655f7072696d6974697665733443616e64696461746548617368000004003001104861736800009d05000002a10500a1050000040ca5054505490500a5050c4c706f6c6b61646f745f7072696d697469766573087636404469737075746553746174656d656e740001081456616c69640400a905016456616c69644469737075746553746174656d656e744b696e640000001c496e76616c69640400b105016c496e76616c69644469737075746553746174656d656e744b696e6400010000a9050c4c706f6c6b61646f745f7072696d6974697665730876366456616c69644469737075746553746174656d656e744b696e64000114204578706c696369740000003c4261636b696e675365636f6e646564040030011048617368000100304261636b696e6756616c696404003001104861736800020040417070726f76616c436865636b696e6700030088417070726f76616c436865636b696e674d756c7469706c6543616e646964617465730400ad0501485665633c43616e646964617465486173683e00040000ad05000002990500b1050c4c706f6c6b61646f745f7072696d6974697665730876366c496e76616c69644469737075746553746174656d656e744b696e64000104204578706c6963697400000000b505106c706f6c6b61646f745f72756e74696d655f70617261636861696e731470617261731870616c6c65741043616c6c04045400012458666f7263655f7365745f63757272656e745f636f646508011070617261b90201185061726149640001206e65775f636f64658105013856616c69646174696f6e436f64650000049c536565205b6050616c6c65743a3a666f7263655f7365745f63757272656e745f636f6465605d2e58666f7263655f7365745f63757272656e745f6865616408011070617261b90201185061726149640001206e65775f686561648505012048656164446174610001049c536565205b6050616c6c65743a3a666f7263655f7365745f63757272656e745f68656164605d2e6c666f7263655f7363686564756c655f636f64655f757067726164650c011070617261b90201185061726149640001206e65775f636f64658105013856616c69646174696f6e436f646500014c72656c61795f706172656e745f6e756d626572100144426c6f636b4e756d626572466f723c543e000204b0536565205b6050616c6c65743a3a666f7263655f7363686564756c655f636f64655f75706772616465605d2e4c666f7263655f6e6f74655f6e65775f6865616408011070617261b90201185061726149640001206e65775f6865616485050120486561644461746100030490536565205b6050616c6c65743a3a666f7263655f6e6f74655f6e65775f68656164605d2e48666f7263655f71756575655f616374696f6e04011070617261b90201185061726149640004048c536565205b6050616c6c65743a3a666f7263655f71756575655f616374696f6e605d2e6c6164645f747275737465645f76616c69646174696f6e5f636f646504013c76616c69646174696f6e5f636f64658105013856616c69646174696f6e436f6465000504b0536565205b6050616c6c65743a3a6164645f747275737465645f76616c69646174696f6e5f636f6465605d2e6c706f6b655f756e757365645f76616c69646174696f6e5f636f646504015076616c69646174696f6e5f636f64655f686173686505014856616c69646174696f6e436f646548617368000604b0536565205b6050616c6c65743a3a706f6b655f756e757365645f76616c69646174696f6e5f636f6465605d2e6c696e636c7564655f7076665f636865636b5f73746174656d656e7408011073746d74b9050144507666436865636b53746174656d656e740001247369676e61747572654905014856616c696461746f725369676e6174757265000704b0536565205b6050616c6c65743a3a696e636c7564655f7076665f636865636b5f73746174656d656e74605d2e74666f7263655f7365745f6d6f73745f726563656e745f636f6e7465787408011070617261b902011850617261496400011c636f6e74657874100144426c6f636b4e756d626572466f723c543e000804b8536565205b6050616c6c65743a3a666f7263655f7365745f6d6f73745f726563656e745f636f6e74657874605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732eb9050c4c706f6c6b61646f745f7072696d69746976657308763644507666436865636b53746174656d656e740000100118616363657074780110626f6f6c00011c7375626a6563746505014856616c69646174696f6e436f64654861736800013473657373696f6e5f696e64657810013053657373696f6e496e64657800013c76616c696461746f725f696e6465784505013856616c696461746f72496e6465780000bd05106c706f6c6b61646f745f72756e74696d655f70617261636861696e732c696e697469616c697a65721870616c6c65741043616c6c04045400010434666f7263655f617070726f766504011475705f746f10012c426c6f636b4e756d62657200000478536565205b6050616c6c65743a3a666f7263655f617070726f7665605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ec105106c706f6c6b61646f745f72756e74696d655f70617261636861696e731068726d701870616c6c65741043616c6c0404540001285868726d705f696e69745f6f70656e5f6368616e6e656c0c0124726563697069656e74b902011850617261496400015470726f706f7365645f6d61785f636170616369747910010c75333200016470726f706f7365645f6d61785f6d6573736167655f73697a6510010c7533320000049c536565205b6050616c6c65743a3a68726d705f696e69745f6f70656e5f6368616e6e656c605d2e6068726d705f6163636570745f6f70656e5f6368616e6e656c04011873656e646572b9020118506172614964000104a4536565205b6050616c6c65743a3a68726d705f6163636570745f6f70656e5f6368616e6e656c605d2e4868726d705f636c6f73655f6368616e6e656c0401286368616e6e656c5f6964c505013448726d704368616e6e656c49640002048c536565205b6050616c6c65743a3a68726d705f636c6f73655f6368616e6e656c605d2e40666f7263655f636c65616e5f68726d700c011070617261b902011850617261496400012c6e756d5f696e626f756e6410010c7533320001306e756d5f6f7574626f756e6410010c75333200030484536565205b6050616c6c65743a3a666f7263655f636c65616e5f68726d70605d2e5c666f7263655f70726f636573735f68726d705f6f70656e0401206368616e6e656c7310010c753332000404a0536565205b6050616c6c65743a3a666f7263655f70726f636573735f68726d705f6f70656e605d2e60666f7263655f70726f636573735f68726d705f636c6f73650401206368616e6e656c7310010c753332000504a4536565205b6050616c6c65743a3a666f7263655f70726f636573735f68726d705f636c6f7365605d2e6068726d705f63616e63656c5f6f70656e5f726571756573740801286368616e6e656c5f6964c505013448726d704368616e6e656c49640001346f70656e5f726571756573747310010c753332000604a4536565205b6050616c6c65743a3a68726d705f63616e63656c5f6f70656e5f72657175657374605d2e5c666f7263655f6f70656e5f68726d705f6368616e6e656c10011873656e646572b9020118506172614964000124726563697069656e74b90201185061726149640001306d61785f636170616369747910010c7533320001406d61785f6d6573736167655f73697a6510010c753332000704a0536565205b6050616c6c65743a3a666f7263655f6f70656e5f68726d705f6368616e6e656c605d2e6065737461626c6973685f73797374656d5f6368616e6e656c08011873656e646572b9020118506172614964000124726563697069656e74b9020118506172614964000804a4536565205b6050616c6c65743a3a65737461626c6973685f73797374656d5f6368616e6e656c605d2e54706f6b655f6368616e6e656c5f6465706f7369747308011873656e646572b9020118506172614964000124726563697069656e74b902011850617261496400090498536565205b6050616c6c65743a3a706f6b655f6368616e6e656c5f6465706f73697473605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ec5050c74706f6c6b61646f745f70617261636861696e5f7072696d697469766573287072696d6974697665733448726d704368616e6e656c4964000008011873656e646572b90201084964000124726563697069656e74b902010849640000c905106c706f6c6b61646f745f72756e74696d655f70617261636861696e732064697370757465731870616c6c65741043616c6c04045400010438666f7263655f756e667265657a650000047c536565205b6050616c6c65743a3a666f7263655f756e667265657a65605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ecd05146c706f6c6b61646f745f72756e74696d655f70617261636861696e7320646973707574657320736c617368696e671870616c6c65741043616c6c040454000104707265706f72745f646973707574655f6c6f73745f756e7369676e6564080134646973707574655f70726f6f66d1050144426f783c4469737075746550726f6f663e00013c6b65795f6f776e65725f70726f6f66d1010140543a3a4b65794f776e657250726f6f66000004b4536565205b6050616c6c65743a3a7265706f72745f646973707574655f6c6f73745f756e7369676e6564605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ed105104c706f6c6b61646f745f7072696d69746976657308763620736c617368696e67304469737075746550726f6f66000010012474696d655f736c6f74d5050140446973707574657354696d65536c6f740001106b696e64d905014c536c617368696e674f6666656e63654b696e6400013c76616c696461746f725f696e6465784505013856616c696461746f72496e64657800013076616c696461746f725f69644102012c56616c696461746f7249640000d505104c706f6c6b61646f745f7072696d69746976657308763620736c617368696e6740446973707574657354696d65536c6f74000008013473657373696f6e5f696e64657810013053657373696f6e496e64657800013863616e6469646174655f686173689905013443616e646964617465486173680000d905104c706f6c6b61646f745f7072696d69746976657308763620736c617368696e674c536c617368696e674f6666656e63654b696e6400010828466f72496e76616c696400000030416761696e737456616c696400010000dd05105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3c70617261735f7265676973747261721870616c6c65741043616c6c0404540001242072656769737465720c01086964b902011850617261496400013067656e657369735f6865616485050120486561644461746100013c76616c69646174696f6e5f636f64658105013856616c69646174696f6e436f646500000464536565205b6050616c6c65743a3a7265676973746572605d2e38666f7263655f726567697374657214010c77686f000130543a3a4163636f756e74496400011c6465706f73697418013042616c616e63654f663c543e0001086964b902011850617261496400013067656e657369735f6865616485050120486561644461746100013c76616c69646174696f6e5f636f64658105013856616c69646174696f6e436f64650001047c536565205b6050616c6c65743a3a666f7263655f7265676973746572605d2e28646572656769737465720401086964b90201185061726149640002046c536565205b6050616c6c65743a3a64657265676973746572605d2e10737761700801086964b90201185061726149640001146f74686572b902011850617261496400030454536565205b6050616c6c65743a3a73776170605d2e2c72656d6f76655f6c6f636b04011070617261b902011850617261496400040470536565205b6050616c6c65743a3a72656d6f76655f6c6f636b605d2e1c7265736572766500050460536565205b6050616c6c65743a3a72657365727665605d2e206164645f6c6f636b04011070617261b902011850617261496400060464536565205b6050616c6c65743a3a6164645f6c6f636b605d2e547363686564756c655f636f64655f7570677261646508011070617261b90201185061726149640001206e65775f636f64658105013856616c69646174696f6e436f646500070498536565205b6050616c6c65743a3a7363686564756c655f636f64655f75706772616465605d2e407365745f63757272656e745f6865616408011070617261b90201185061726149640001206e65775f6865616485050120486561644461746100080484536565205b6050616c6c65743a3a7365745f63757272656e745f68656164605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ee105105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e14736c6f74731870616c6c65741043616c6c04045400010c2c666f7263655f6c6561736514011070617261b90201185061726149640001186c6561736572000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e000130706572696f645f626567696e1001404c65617365506572696f644f663c543e000130706572696f645f636f756e741001404c65617365506572696f644f663c543e00000470536565205b6050616c6c65743a3a666f7263655f6c65617365605d2e40636c6561725f616c6c5f6c656173657304011070617261b902011850617261496400010484536565205b6050616c6c65743a3a636c6561725f616c6c5f6c6561736573605d2e3c747269676765725f6f6e626f61726404011070617261b902011850617261496400020480536565205b6050616c6c65743a3a747269676765725f6f6e626f617264605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ee505105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e2061756374696f6e731870616c6c65741043616c6c04045400010c2c6e65775f61756374696f6e0801206475726174696f6e15010144426c6f636b4e756d626572466f723c543e0001486c656173655f706572696f645f696e646578150101404c65617365506572696f644f663c543e00000470536565205b6050616c6c65743a3a6e65775f61756374696f6e605d2e0c62696414011070617261e905011850617261496400013461756374696f6e5f696e6465781501013041756374696f6e496e64657800012866697273745f736c6f74150101404c65617365506572696f644f663c543e0001246c6173745f736c6f74150101404c65617365506572696f644f663c543e000118616d6f756e74f4013042616c616e63654f663c543e00010450536565205b6050616c6c65743a3a626964605d2e3863616e63656c5f61756374696f6e0002047c536565205b6050616c6c65743a3a63616e63656c5f61756374696f6e605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ee905000006b90200ed05105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e2463726f77646c6f616e1870616c6c65741043616c6c04045400012418637265617465180114696e646578e905011850617261496400010c636170f4013042616c616e63654f663c543e00013066697273745f706572696f64150101404c65617365506572696f644f663c543e00012c6c6173745f706572696f64150101404c65617365506572696f644f663c543e00010c656e6415010144426c6f636b4e756d626572466f723c543e0001207665726966696572f105014c4f7074696f6e3c4d756c74695369676e65723e0000045c536565205b6050616c6c65743a3a637265617465605d2e28636f6e747269627574650c0114696e646578e905011850617261496400011476616c7565f4013042616c616e63654f663c543e0001247369676e61747572659d0301584f7074696f6e3c4d756c74695369676e61747572653e0001046c536565205b6050616c6c65743a3a636f6e74726962757465605d2e20776974686472617708010c77686f000130543a3a4163636f756e744964000114696e646578e905011850617261496400020464536565205b6050616c6c65743a3a7769746864726177605d2e18726566756e64040114696e646578e90501185061726149640003045c536565205b6050616c6c65743a3a726566756e64605d2e20646973736f6c7665040114696e646578e905011850617261496400040464536565205b6050616c6c65743a3a646973736f6c7665605d2e1065646974180114696e646578e905011850617261496400010c636170f4013042616c616e63654f663c543e00013066697273745f706572696f64150101404c65617365506572696f644f663c543e00012c6c6173745f706572696f64150101404c65617365506572696f644f663c543e00010c656e6415010144426c6f636b4e756d626572466f723c543e0001207665726966696572f105014c4f7074696f6e3c4d756c74695369676e65723e00050454536565205b6050616c6c65743a3a65646974605d2e206164645f6d656d6f080114696e646578b90201185061726149640001106d656d6f34011c5665633c75383e00060464536565205b6050616c6c65743a3a6164645f6d656d6f605d2e10706f6b65040114696e646578b902011850617261496400070454536565205b6050616c6c65743a3a706f6b65605d2e38636f6e747269627574655f616c6c080114696e646578e90501185061726149640001247369676e61747572659d0301584f7074696f6e3c4d756c74695369676e61747572653e0008047c536565205b6050616c6c65743a3a636f6e747269627574655f616c6c605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ef10504184f7074696f6e04045401f5050108104e6f6e6500000010536f6d650400f5050000010000f505082873705f72756e74696d652c4d756c74695369676e657200010c1c456432353531390400d8013c656432353531393a3a5075626c69630000001c537232353531390400e4013c737232353531393a3a5075626c696300010014456364736104005102013465636473613a3a5075626c696300020000f9050c6c70616c6c65745f73746174655f747269655f6d6967726174696f6e1870616c6c65741043616c6c04045400011858636f6e74726f6c5f6175746f5f6d6967726174696f6e0401306d617962655f636f6e666967fd05015c4f7074696f6e3c4d6967726174696f6e4c696d6974733e0000049c536565205b6050616c6c65743a3a636f6e74726f6c5f6175746f5f6d6967726174696f6e605d2e40636f6e74696e75655f6d6967726174650c01186c696d6974730106013c4d6967726174696f6e4c696d69747300013c7265616c5f73697a655f757070657210010c7533320001307769746e6573735f7461736b050601404d6967726174696f6e5461736b3c543e00010484536565205b6050616c6c65743a3a636f6e74696e75655f6d696772617465605d2e486d6967726174655f637573746f6d5f746f700801106b657973a90101305665633c5665633c75383e3e0001307769746e6573735f73697a6510010c7533320002048c536565205b6050616c6c65743a3a6d6967726174655f637573746f6d5f746f70605d2e506d6967726174655f637573746f6d5f6368696c640c0110726f6f7434011c5665633c75383e0001286368696c645f6b657973a90101305665633c5665633c75383e3e000128746f74616c5f73697a6510010c75333200030494536565205b6050616c6c65743a3a6d6967726174655f637573746f6d5f6368696c64605d2e547365745f7369676e65645f6d61785f6c696d6974730401186c696d6974730106013c4d6967726174696f6e4c696d69747300040498536565205b6050616c6c65743a3a7365745f7369676e65645f6d61785f6c696d697473605d2e48666f7263655f7365745f70726f677265737308013070726f67726573735f746f700906013450726f67726573734f663c543e00013870726f67726573735f6368696c640906013450726f67726573734f663c543e0005048c536565205b6050616c6c65743a3a666f7263655f7365745f70726f6772657373605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732efd0504184f7074696f6e0404540101060108104e6f6e6500000010536f6d6504000106000001000001060c6c70616c6c65745f73746174655f747269655f6d6967726174696f6e1870616c6c65743c4d6967726174696f6e4c696d697473000008011073697a6510010c7533320001106974656d10010c753332000005060c6c70616c6c65745f73746174655f747269655f6d6967726174696f6e1870616c6c6574344d6967726174696f6e5461736b040454000014013070726f67726573735f746f700906013450726f67726573734f663c543e00013870726f67726573735f6368696c640906013450726f67726573734f663c543e00011073697a6510010c753332000124746f705f6974656d7310010c75333200012c6368696c645f6974656d7310010c753332000009060c6c70616c6c65745f73746174655f747269655f6d6967726174696f6e1870616c6c65742050726f677265737304244d61784b65794c656e00010c1c546f53746172740000001c4c6173744b657904000d060164426f756e6465645665633c75382c204d61784b65794c656e3e00010020436f6d706c657465000200000d060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e000011060c2870616c6c65745f78636d1870616c6c65741043616c6c0404540001341073656e640801106465737469010158426f783c56657273696f6e65644c6f636174696f6e3e00011c6d65737361676515060154426f783c56657273696f6e656458636d3c28293e3e00000454536565205b6050616c6c65743a3a73656e64605d2e3c74656c65706f72745f6173736574731001106465737469010158426f783c56657273696f6e65644c6f636174696f6e3e00012c62656e656669636961727969010158426f783c56657273696f6e65644c6f636174696f6e3e0001186173736574730d070150426f783c56657273696f6e65644173736574733e0001386665655f61737365745f6974656d10010c75333200010480536565205b6050616c6c65743a3a74656c65706f72745f617373657473605d2e5c726573657276655f7472616e736665725f6173736574731001106465737469010158426f783c56657273696f6e65644c6f636174696f6e3e00012c62656e656669636961727969010158426f783c56657273696f6e65644c6f636174696f6e3e0001186173736574730d070150426f783c56657273696f6e65644173736574733e0001386665655f61737365745f6974656d10010c753332000204a0536565205b6050616c6c65743a3a726573657276655f7472616e736665725f617373657473605d2e1c6578656375746508011c6d657373616765110701b4426f783c56657273696f6e656458636d3c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e3e0001286d61785f77656967687424011857656967687400030460536565205b6050616c6c65743a3a65786563757465605d2e44666f7263655f78636d5f76657273696f6e0801206c6f636174696f6e31010134426f783c4c6f636174696f6e3e00011c76657273696f6e10012858636d56657273696f6e00040488536565205b6050616c6c65743a3a666f7263655f78636d5f76657273696f6e605d2e64666f7263655f64656661756c745f78636d5f76657273696f6e0401446d617962655f78636d5f76657273696f6e8d0201484f7074696f6e3c58636d56657273696f6e3e000504a8536565205b6050616c6c65743a3a666f7263655f64656661756c745f78636d5f76657273696f6e605d2e78666f7263655f7375627363726962655f76657273696f6e5f6e6f746966790401206c6f636174696f6e69010158426f783c56657273696f6e65644c6f636174696f6e3e000604bc536565205b6050616c6c65743a3a666f7263655f7375627363726962655f76657273696f6e5f6e6f74696679605d2e80666f7263655f756e7375627363726962655f76657273696f6e5f6e6f746966790401206c6f636174696f6e69010158426f783c56657273696f6e65644c6f636174696f6e3e000704c4536565205b6050616c6c65743a3a666f7263655f756e7375627363726962655f76657273696f6e5f6e6f74696679605d2e7c6c696d697465645f726573657276655f7472616e736665725f6173736574731401106465737469010158426f783c56657273696f6e65644c6f636174696f6e3e00012c62656e656669636961727969010158426f783c56657273696f6e65644c6f636174696f6e3e0001186173736574730d070150426f783c56657273696f6e65644173736574733e0001386665655f61737365745f6974656d10010c7533320001307765696768745f6c696d6974c106012c5765696768744c696d6974000804c0536565205b6050616c6c65743a3a6c696d697465645f726573657276655f7472616e736665725f617373657473605d2e5c6c696d697465645f74656c65706f72745f6173736574731401106465737469010158426f783c56657273696f6e65644c6f636174696f6e3e00012c62656e656669636961727969010158426f783c56657273696f6e65644c6f636174696f6e3e0001186173736574730d070150426f783c56657273696f6e65644173736574733e0001386665655f61737365745f6974656d10010c7533320001307765696768745f6c696d6974c106012c5765696768744c696d6974000904a0536565205b6050616c6c65743a3a6c696d697465645f74656c65706f72745f617373657473605d2e40666f7263655f73757370656e73696f6e04012473757370656e646564780110626f6f6c000a0484536565205b6050616c6c65743a3a666f7263655f73757370656e73696f6e605d2e3c7472616e736665725f6173736574731401106465737469010158426f783c56657273696f6e65644c6f636174696f6e3e00012c62656e656669636961727969010158426f783c56657273696f6e65644c6f636174696f6e3e0001186173736574730d070150426f783c56657273696f6e65644173736574733e0001386665655f61737365745f6974656d10010c7533320001307765696768745f6c696d6974c106012c5765696768744c696d6974000b0480536565205b6050616c6c65743a3a7472616e736665725f617373657473605d2e30636c61696d5f6173736574730801186173736574730d070150426f783c56657273696f6e65644173736574733e00012c62656e656669636961727969010158426f783c56657273696f6e65644c6f636174696f6e3e000c0474536565205b6050616c6c65743a3a636c61696d5f617373657473605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e1506080c78636d3056657273696f6e656458636d042c52756e74696d6543616c6c00010c08563204001906015076323a3a58636d3c52756e74696d6543616c6c3e00020008563304006506015076333a3a58636d3c52756e74696d6543616c6c3e0003000856340400c506015076343a3a58636d3c52756e74696d6543616c6c3e0004000019060c0c78636d0876320c58636d042c52756e74696d6543616c6c000004001d0601745665633c496e737472756374696f6e3c52756e74696d6543616c6c3e3e00001d0600000221060021060c0c78636d0876322c496e737472756374696f6e042c52756e74696d6543616c6c000170345769746864726177417373657404002506012c4d756c7469417373657473000000545265736572766541737365744465706f736974656404002506012c4d756c7469417373657473000100585265636569766554656c65706f72746564417373657404002506012c4d756c7469417373657473000200345175657279526573706f6e73650c012071756572795f696428011c51756572794964000120726573706f6e73653d060120526573706f6e73650001286d61785f77656967687428010c753634000300345472616e7366657241737365740801186173736574732506012c4d756c746941737365747300012c62656e65666963696172796d0101344d756c74694c6f636174696f6e000400505472616e736665725265736572766541737365740c01186173736574732506012c4d756c7469417373657473000110646573746d0101344d756c74694c6f636174696f6e00010c78636d1906011c58636d3c28293e000500205472616e736163740c012c6f726967696e5f747970654d0601284f726967696e4b696e64000158726571756972655f7765696768745f61745f6d6f737428010c75363400011063616c6c51060168446f75626c65456e636f6465643c52756e74696d6543616c6c3e0006006448726d704e65774368616e6e656c4f70656e526571756573740c011873656e6465721501010c7533320001406d61785f6d6573736167655f73697a651501010c7533320001306d61785f63617061636974791501010c7533320007004c48726d704368616e6e656c4163636570746564040124726563697069656e741501010c7533320008004848726d704368616e6e656c436c6f73696e670c0124696e69746961746f721501010c75333200011873656e6465721501010c753332000124726563697069656e741501010c7533320009002c436c6561724f726967696e000a003444657363656e644f726967696e040071010154496e746572696f724d756c74694c6f636174696f6e000b002c5265706f72744572726f720c012071756572795f696428011c51756572794964000110646573746d0101344d756c74694c6f636174696f6e00014c6d61785f726573706f6e73655f77656967687428010c753634000c00304465706f73697441737365740c0118617373657473550601404d756c7469417373657446696c7465720001286d61785f6173736574731501010c75333200012c62656e65666963696172796d0101344d756c74694c6f636174696f6e000d004c4465706f736974526573657276654173736574100118617373657473550601404d756c7469417373657446696c7465720001286d61785f6173736574731501010c753332000110646573746d0101344d756c74694c6f636174696f6e00010c78636d1906011c58636d3c28293e000e003445786368616e6765417373657408011067697665550601404d756c7469417373657446696c74657200011c726563656976652506012c4d756c7469417373657473000f005c496e6974696174655265736572766557697468647261770c0118617373657473550601404d756c7469417373657446696c74657200011c726573657276656d0101344d756c74694c6f636174696f6e00010c78636d1906011c58636d3c28293e00100040496e69746961746554656c65706f72740c0118617373657473550601404d756c7469417373657446696c746572000110646573746d0101344d756c74694c6f636174696f6e00010c78636d1906011c58636d3c28293e001100305175657279486f6c64696e6710012071756572795f696428011c51756572794964000110646573746d0101344d756c74694c6f636174696f6e000118617373657473550601404d756c7469417373657446696c74657200014c6d61785f726573706f6e73655f77656967687428010c75363400120030427579457865637574696f6e080110666565732d0601284d756c746941737365740001307765696768745f6c696d69746106012c5765696768744c696d697400130034526566756e64537572706c75730014003c5365744572726f7248616e646c657204001906014058636d3c52756e74696d6543616c6c3e0015002c536574417070656e64697804001906014058636d3c52756e74696d6543616c6c3e00160028436c6561724572726f7200170028436c61696d41737365740801186173736574732506012c4d756c74694173736574730001187469636b65746d0101344d756c74694c6f636174696f6e0018001054726170040028010c7536340019004053756273637269626556657273696f6e08012071756572795f696428011c5175657279496400014c6d61785f726573706f6e73655f77656967687428010c753634001a0048556e73756273637269626556657273696f6e001b00002506100c78636d087632286d756c746961737365742c4d756c7469417373657473000004002906013c5665633c4d756c746941737365743e000029060000022d06002d06100c78636d087632286d756c74696173736574284d756c74694173736574000008010869643106011c4173736574496400010c66756e3506012c46756e676962696c69747900003106100c78636d087632286d756c746961737365741c4173736574496400010820436f6e637265746504006d0101344d756c74694c6f636174696f6e000000204162737472616374040034011c5665633c75383e000100003506100c78636d087632286d756c746961737365742c46756e676962696c6974790001082046756e6769626c650400f40110753132380000002c4e6f6e46756e6769626c650400390601344173736574496e7374616e6365000100003906100c78636d087632286d756c74696173736574344173736574496e7374616e636500011c24556e646566696e656400000014496e6465780400f401107531323800010018417272617934040044011c5b75383b20345d0002001841727261793804003103011c5b75383b20385d0003001c417272617931360400c001205b75383b2031365d0004001c4172726179333204000401205b75383b2033325d00050010426c6f62040034011c5665633c75383e000600003d060c0c78636d08763220526573706f6e7365000110104e756c6c0000001841737365747304002506012c4d756c74694173736574730001003c457865637574696f6e526573756c740400410601504f7074696f6e3c287533322c204572726f72293e0002001c56657273696f6e040010013873757065723a3a56657273696f6e00030000410604184f7074696f6e0404540145060108104e6f6e6500000010536f6d65040045060000010000450600000408104906004906100c78636d08763218747261697473144572726f72000168204f766572666c6f7700000034556e696d706c656d656e74656400010060556e74727573746564526573657276654c6f636174696f6e00020064556e7472757374656454656c65706f72744c6f636174696f6e000300444d756c74694c6f636174696f6e46756c6c000400684d756c74694c6f636174696f6e4e6f74496e7665727469626c65000500244261644f726967696e0006003c496e76616c69644c6f636174696f6e0007003441737365744e6f74466f756e64000800544661696c6564546f5472616e7361637441737365740009003c4e6f74576974686472617761626c65000a00484c6f636174696f6e43616e6e6f74486f6c64000b0054457863656564734d61784d65737361676553697a65000c005844657374696e6174696f6e556e737570706f72746564000d00245472616e73706f7274000e0028556e726f757461626c65000f0030556e6b6e6f776e436c61696d001000384661696c6564546f4465636f6465001100404d6178576569676874496e76616c6964001200384e6f74486f6c64696e674665657300130030546f6f457870656e73697665001400105472617004002c010c7536340015004c556e68616e646c656458636d56657273696f6e001600485765696768744c696d69745265616368656404002c01185765696768740017001c426172726965720018004c5765696768744e6f74436f6d70757461626c65001900004d060c0c78636d087632284f726967696e4b696e64000110184e617469766500000040536f7665726569676e4163636f756e74000100245375706572757365720002000c58636d0003000051060c0c78636d38646f75626c655f656e636f64656434446f75626c65456e636f646564040454000004011c656e636f64656434011c5665633c75383e00005506100c78636d087632286d756c74696173736574404d756c7469417373657446696c74657200010820446566696e69746504002506012c4d756c74694173736574730000001057696c6404005906013857696c644d756c74694173736574000100005906100c78636d087632286d756c746961737365743857696c644d756c746941737365740001080c416c6c00000014416c6c4f6608010869643106011c4173736574496400010c66756e5d06013c57696c6446756e676962696c697479000100005d06100c78636d087632286d756c746961737365743c57696c6446756e676962696c6974790001082046756e6769626c650000002c4e6f6e46756e6769626c650001000061060c0c78636d0876322c5765696768744c696d697400010824556e6c696d697465640000001c4c696d69746564040028010c7536340001000065060c0c78636d0876330c58636d041043616c6c00000400690601585665633c496e737472756374696f6e3c43616c6c3e3e000069060000026d06006d060c0c78636d0876332c496e737472756374696f6e041043616c6c0001c0345769746864726177417373657404007106012c4d756c7469417373657473000000545265736572766541737365744465706f736974656404007106012c4d756c7469417373657473000100585265636569766554656c65706f72746564417373657404007106012c4d756c7469417373657473000200345175657279526573706f6e736510012071756572795f696428011c51756572794964000120726573706f6e736585060120526573706f6e73650001286d61785f77656967687424011857656967687400011c71756572696572ad0601544f7074696f6e3c4d756c74694c6f636174696f6e3e000300345472616e7366657241737365740801186173736574737106012c4d756c746941737365747300012c62656e6566696369617279090101344d756c74694c6f636174696f6e000400505472616e736665725265736572766541737365740c01186173736574737106012c4d756c746941737365747300011064657374090101344d756c74694c6f636174696f6e00010c78636d6506011c58636d3c28293e000500205472616e736163740c012c6f726967696e5f6b696e644d0601284f726967696e4b696e64000158726571756972655f7765696768745f61745f6d6f737424011857656967687400011063616c6c5106014c446f75626c65456e636f6465643c43616c6c3e0006006448726d704e65774368616e6e656c4f70656e526571756573740c011873656e6465721501010c7533320001406d61785f6d6573736167655f73697a651501010c7533320001306d61785f63617061636974791501010c7533320007004c48726d704368616e6e656c4163636570746564040124726563697069656e741501010c7533320008004848726d704368616e6e656c436c6f73696e670c0124696e69746961746f721501010c75333200011873656e6465721501010c753332000124726563697069656e741501010c7533320009002c436c6561724f726967696e000a003444657363656e644f726967696e04000d010154496e746572696f724d756c74694c6f636174696f6e000b002c5265706f72744572726f720400b10601445175657279526573706f6e7365496e666f000c00304465706f7369744173736574080118617373657473b50601404d756c7469417373657446696c74657200012c62656e6566696369617279090101344d756c74694c6f636174696f6e000d004c4465706f7369745265736572766541737365740c0118617373657473b50601404d756c7469417373657446696c74657200011064657374090101344d756c74694c6f636174696f6e00010c78636d6506011c58636d3c28293e000e003445786368616e676541737365740c011067697665b50601404d756c7469417373657446696c74657200011077616e747106012c4d756c746941737365747300011c6d6178696d616c780110626f6f6c000f005c496e6974696174655265736572766557697468647261770c0118617373657473b50601404d756c7469417373657446696c74657200011c72657365727665090101344d756c74694c6f636174696f6e00010c78636d6506011c58636d3c28293e00100040496e69746961746554656c65706f72740c0118617373657473b50601404d756c7469417373657446696c74657200011064657374090101344d756c74694c6f636174696f6e00010c78636d6506011c58636d3c28293e001100345265706f7274486f6c64696e67080134726573706f6e73655f696e666fb10601445175657279526573706f6e7365496e666f000118617373657473b50601404d756c7469417373657446696c74657200120030427579457865637574696f6e08011066656573790601284d756c746941737365740001307765696768745f6c696d6974c106012c5765696768744c696d697400130034526566756e64537572706c75730014003c5365744572726f7248616e646c657204006506012458636d3c43616c6c3e0015002c536574417070656e64697804006506012458636d3c43616c6c3e00160028436c6561724572726f7200170028436c61696d41737365740801186173736574737106012c4d756c74694173736574730001187469636b6574090101344d756c74694c6f636174696f6e0018001054726170040028010c7536340019004053756273637269626556657273696f6e08012071756572795f696428011c5175657279496400014c6d61785f726573706f6e73655f776569676874240118576569676874001a0048556e73756273637269626556657273696f6e001b00244275726e417373657404007106012c4d756c7469417373657473001c002c457870656374417373657404007106012c4d756c7469417373657473001d00304578706563744f726967696e0400ad0601544f7074696f6e3c4d756c74694c6f636174696f6e3e001e002c4578706563744572726f720400890601504f7074696f6e3c287533322c204572726f72293e001f00504578706563745472616e736163745374617475730400a50601384d617962654572726f72436f64650020002c517565727950616c6c657408012c6d6f64756c655f6e616d6534011c5665633c75383e000134726573706f6e73655f696e666fb10601445175657279526573706f6e7365496e666f0021003045787065637450616c6c6574140114696e6465781501010c7533320001106e616d6534011c5665633c75383e00012c6d6f64756c655f6e616d6534011c5665633c75383e00012c63726174655f6d616a6f721501010c75333200013c6d696e5f63726174655f6d696e6f721501010c753332002200505265706f72745472616e736163745374617475730400b10601445175657279526573706f6e7365496e666f0023004c436c6561725472616e736163745374617475730024003c556e6976657273616c4f726967696e0400110101204a756e6374696f6e002500344578706f72744d6573736167650c011c6e6574776f726b1d0101244e6574776f726b496400012c64657374696e6174696f6e0d010154496e746572696f724d756c74694c6f636174696f6e00010c78636d6506011c58636d3c28293e002600244c6f636b41737365740801146173736574790601284d756c74694173736574000120756e6c6f636b6572090101344d756c74694c6f636174696f6e0027002c556e6c6f636b41737365740801146173736574790601284d756c74694173736574000118746172676574090101344d756c74694c6f636174696f6e002800384e6f7465556e6c6f636b61626c650801146173736574790601284d756c746941737365740001146f776e6572090101344d756c74694c6f636174696f6e0029003452657175657374556e6c6f636b0801146173736574790601284d756c746941737365740001186c6f636b6572090101344d756c74694c6f636174696f6e002a002c536574466565734d6f64650401306a69745f7769746864726177780110626f6f6c002b0020536574546f70696304000401205b75383b2033325d002c0028436c656172546f706963002d002c416c6961734f726967696e0400090101344d756c74694c6f636174696f6e002e003c556e70616964457865637574696f6e0801307765696768745f6c696d6974c106012c5765696768744c696d6974000130636865636b5f6f726967696ead0601544f7074696f6e3c4d756c74694c6f636174696f6e3e002f00007106100c78636d087633286d756c746961737365742c4d756c7469417373657473000004007506013c5665633c4d756c746941737365743e000075060000027906007906100c78636d087633286d756c74696173736574284d756c74694173736574000008010869642d01011c4173736574496400010c66756e7d06012c46756e676962696c69747900007d06100c78636d087633286d756c746961737365742c46756e676962696c6974790001082046756e6769626c650400f40110753132380000002c4e6f6e46756e6769626c650400810601344173736574496e7374616e6365000100008106100c78636d087633286d756c74696173736574344173736574496e7374616e636500011824556e646566696e656400000014496e6465780400f401107531323800010018417272617934040044011c5b75383b20345d0002001841727261793804003103011c5b75383b20385d0003001c417272617931360400c001205b75383b2031365d0004001c4172726179333204000401205b75383b2033325d0005000085060c0c78636d08763320526573706f6e7365000118104e756c6c0000001841737365747304007106012c4d756c74694173736574730001003c457865637574696f6e526573756c740400890601504f7074696f6e3c287533322c204572726f72293e0002001c56657273696f6e040010013873757065723a3a56657273696f6e0003002c50616c6c657473496e666f040095060198426f756e6465645665633c50616c6c6574496e666f2c204d617850616c6c657473496e666f3e000400384469737061746368526573756c740400a50601384d617962654572726f72436f646500050000890604184f7074696f6e040454018d060108104e6f6e6500000010536f6d6504008d0600000100008d0600000408109106009106100c78636d08763318747261697473144572726f720001a0204f766572666c6f7700000034556e696d706c656d656e74656400010060556e74727573746564526573657276654c6f636174696f6e00020064556e7472757374656454656c65706f72744c6f636174696f6e000300304c6f636174696f6e46756c6c000400544c6f636174696f6e4e6f74496e7665727469626c65000500244261644f726967696e0006003c496e76616c69644c6f636174696f6e0007003441737365744e6f74466f756e64000800544661696c6564546f5472616e7361637441737365740009003c4e6f74576974686472617761626c65000a00484c6f636174696f6e43616e6e6f74486f6c64000b0054457863656564734d61784d65737361676553697a65000c005844657374696e6174696f6e556e737570706f72746564000d00245472616e73706f7274000e0028556e726f757461626c65000f0030556e6b6e6f776e436c61696d001000384661696c6564546f4465636f6465001100404d6178576569676874496e76616c6964001200384e6f74486f6c64696e674665657300130030546f6f457870656e73697665001400105472617004002c010c753634001500404578706563746174696f6e46616c73650016003850616c6c65744e6f74466f756e64001700304e616d654d69736d617463680018004c56657273696f6e496e636f6d70617469626c6500190050486f6c64696e67576f756c644f766572666c6f77001a002c4578706f72744572726f72001b00385265616e63686f724661696c6564001c00184e6f4465616c001d0028466565734e6f744d6574001e00244c6f636b4572726f72001f00304e6f5065726d697373696f6e00200028556e616e63686f726564002100384e6f744465706f73697461626c650022004c556e68616e646c656458636d56657273696f6e002300485765696768744c696d69745265616368656404002401185765696768740024001c426172726965720025004c5765696768744e6f74436f6d70757461626c650026004445786365656473537461636b4c696d69740027000095060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454019906045300000400a10601185665633c543e000099060c0c78636d0876332850616c6c6574496e666f0000180114696e6465781501010c7533320001106e616d659d060180426f756e6465645665633c75382c204d617850616c6c65744e616d654c656e3e00012c6d6f64756c655f6e616d659d060180426f756e6465645665633c75382c204d617850616c6c65744e616d654c656e3e0001146d616a6f721501010c7533320001146d696e6f721501010c75333200011470617463681501010c75333200009d060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e0000a106000002990600a5060c0c78636d087633384d617962654572726f72436f646500010c1c53756363657373000000144572726f720400a906018c426f756e6465645665633c75382c204d617844697370617463684572726f724c656e3e000100385472756e63617465644572726f720400a906018c426f756e6465645665633c75382c204d617844697370617463684572726f724c656e3e00020000a9060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e0000ad0604184f7074696f6e0404540109010108104e6f6e6500000010536f6d65040009010000010000b1060c0c78636d087633445175657279526573706f6e7365496e666f00000c012c64657374696e6174696f6e090101344d756c74694c6f636174696f6e00012071756572795f696428011c517565727949640001286d61785f7765696768742401185765696768740000b506100c78636d087633286d756c74696173736574404d756c7469417373657446696c74657200010820446566696e69746504007106012c4d756c74694173736574730000001057696c640400b906013857696c644d756c7469417373657400010000b906100c78636d087633286d756c746961737365743857696c644d756c746941737365740001100c416c6c00000014416c6c4f6608010869642d01011c4173736574496400010c66756ebd06013c57696c6446756e676962696c69747900010028416c6c436f756e74656404001501010c75333200020030416c6c4f66436f756e7465640c010869642d01011c4173736574496400010c66756ebd06013c57696c6446756e676962696c697479000114636f756e741501010c75333200030000bd06100c78636d087633286d756c746961737365743c57696c6446756e676962696c6974790001082046756e6769626c650000002c4e6f6e46756e6769626c6500010000c1060c0c78636d0876332c5765696768744c696d697400010824556e6c696d697465640000001c4c696d69746564040024011857656967687400010000c5060c2c73746167696e675f78636d0876340c58636d041043616c6c00000400c90601585665633c496e737472756374696f6e3c43616c6c3e3e0000c906000002cd0600cd060c2c73746167696e675f78636d0876342c496e737472756374696f6e041043616c6c0001c034576974686472617741737365740400d1060118417373657473000000545265736572766541737365744465706f73697465640400d1060118417373657473000100585265636569766554656c65706f7274656441737365740400d1060118417373657473000200345175657279526573706f6e736510012071756572795f696428011c51756572794964000120726573706f6e7365e5060120526573706f6e73650001286d61785f77656967687424011857656967687400011c71756572696572f90601404f7074696f6e3c4c6f636174696f6e3e000300345472616e736665724173736574080118617373657473d106011841737365747300012c62656e6566696369617279310101204c6f636174696f6e000400505472616e736665725265736572766541737365740c0118617373657473d106011841737365747300011064657374310101204c6f636174696f6e00010c78636dc506011c58636d3c28293e000500205472616e736163740c012c6f726967696e5f6b696e644d0601284f726967696e4b696e64000158726571756972655f7765696768745f61745f6d6f737424011857656967687400011063616c6c5106014c446f75626c65456e636f6465643c43616c6c3e0006006448726d704e65774368616e6e656c4f70656e526571756573740c011873656e6465721501010c7533320001406d61785f6d6573736167655f73697a651501010c7533320001306d61785f63617061636974791501010c7533320007004c48726d704368616e6e656c4163636570746564040124726563697069656e741501010c7533320008004848726d704368616e6e656c436c6f73696e670c0124696e69746961746f721501010c75333200011873656e6465721501010c753332000124726563697069656e741501010c7533320009002c436c6561724f726967696e000a003444657363656e644f726967696e040035010140496e746572696f724c6f636174696f6e000b002c5265706f72744572726f720400fd0601445175657279526573706f6e7365496e666f000c00304465706f73697441737365740801186173736574730107012c417373657446696c74657200012c62656e6566696369617279310101204c6f636174696f6e000d004c4465706f7369745265736572766541737365740c01186173736574730107012c417373657446696c74657200011064657374310101204c6f636174696f6e00010c78636dc506011c58636d3c28293e000e003445786368616e676541737365740c0110676976650107012c417373657446696c74657200011077616e74d106011841737365747300011c6d6178696d616c780110626f6f6c000f005c496e6974696174655265736572766557697468647261770c01186173736574730107012c417373657446696c74657200011c72657365727665310101204c6f636174696f6e00010c78636dc506011c58636d3c28293e00100040496e69746961746554656c65706f72740c01186173736574730107012c417373657446696c74657200011064657374310101204c6f636174696f6e00010c78636dc506011c58636d3c28293e001100345265706f7274486f6c64696e67080134726573706f6e73655f696e666ffd0601445175657279526573706f6e7365496e666f0001186173736574730107012c417373657446696c74657200120030427579457865637574696f6e08011066656573d906011441737365740001307765696768745f6c696d6974c106012c5765696768744c696d697400130034526566756e64537572706c75730014003c5365744572726f7248616e646c65720400c506012458636d3c43616c6c3e0015002c536574417070656e6469780400c506012458636d3c43616c6c3e00160028436c6561724572726f7200170028436c61696d4173736574080118617373657473d10601184173736574730001187469636b6574310101204c6f636174696f6e0018001054726170040028010c7536340019004053756273637269626556657273696f6e08012071756572795f696428011c5175657279496400014c6d61785f726573706f6e73655f776569676874240118576569676874001a0048556e73756273637269626556657273696f6e001b00244275726e41737365740400d1060118417373657473001c002c45787065637441737365740400d1060118417373657473001d00304578706563744f726967696e0400f90601404f7074696f6e3c4c6f636174696f6e3e001e002c4578706563744572726f720400890601504f7074696f6e3c287533322c204572726f72293e001f00504578706563745472616e736163745374617475730400a50601384d617962654572726f72436f64650020002c517565727950616c6c657408012c6d6f64756c655f6e616d6534011c5665633c75383e000134726573706f6e73655f696e666ffd0601445175657279526573706f6e7365496e666f0021003045787065637450616c6c6574140114696e6465781501010c7533320001106e616d6534011c5665633c75383e00012c6d6f64756c655f6e616d6534011c5665633c75383e00012c63726174655f6d616a6f721501010c75333200013c6d696e5f63726174655f6d696e6f721501010c753332002200505265706f72745472616e736163745374617475730400fd0601445175657279526573706f6e7365496e666f0023004c436c6561725472616e736163745374617475730024003c556e6976657273616c4f726967696e04003d0101204a756e6374696f6e002500344578706f72744d6573736167650c011c6e6574776f726b450101244e6574776f726b496400012c64657374696e6174696f6e35010140496e746572696f724c6f636174696f6e00010c78636dc506011c58636d3c28293e002600244c6f636b41737365740801146173736574d90601144173736574000120756e6c6f636b6572310101204c6f636174696f6e0027002c556e6c6f636b41737365740801146173736574d90601144173736574000118746172676574310101204c6f636174696f6e002800384e6f7465556e6c6f636b61626c650801146173736574d906011441737365740001146f776e6572310101204c6f636174696f6e0029003452657175657374556e6c6f636b0801146173736574d906011441737365740001186c6f636b6572310101204c6f636174696f6e002a002c536574466565734d6f64650401306a69745f7769746864726177780110626f6f6c002b0020536574546f70696304000401205b75383b2033325d002c0028436c656172546f706963002d002c416c6961734f726967696e0400310101204c6f636174696f6e002e003c556e70616964457865637574696f6e0801307765696768745f6c696d6974c106012c5765696768744c696d6974000130636865636b5f6f726967696ef90601404f7074696f6e3c4c6f636174696f6e3e002f0000d106102c73746167696e675f78636d0876341461737365741841737365747300000400d50601285665633c41737365743e0000d506000002d90600d906102c73746167696e675f78636d087634146173736574144173736574000008010869646501011c4173736574496400010c66756edd06012c46756e676962696c6974790000dd06102c73746167696e675f78636d0876341461737365742c46756e676962696c6974790001082046756e6769626c650400f40110753132380000002c4e6f6e46756e6769626c650400e10601344173736574496e7374616e636500010000e106102c73746167696e675f78636d087634146173736574344173736574496e7374616e636500011824556e646566696e656400000014496e6465780400f401107531323800010018417272617934040044011c5b75383b20345d0002001841727261793804003103011c5b75383b20385d0003001c417272617931360400c001205b75383b2031365d0004001c4172726179333204000401205b75383b2033325d00050000e5060c2c73746167696e675f78636d08763420526573706f6e7365000118104e756c6c000000184173736574730400d10601184173736574730001003c457865637574696f6e526573756c740400890601504f7074696f6e3c287533322c204572726f72293e0002001c56657273696f6e040010013873757065723a3a56657273696f6e0003002c50616c6c657473496e666f0400e9060198426f756e6465645665633c50616c6c6574496e666f2c204d617850616c6c657473496e666f3e000400384469737061746368526573756c740400a50601384d617962654572726f72436f646500050000e9060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401ed06045300000400f50601185665633c543e0000ed060c2c73746167696e675f78636d0876342850616c6c6574496e666f0000180114696e6465781501010c7533320001106e616d65f1060180426f756e6465645665633c75382c204d617850616c6c65744e616d654c656e3e00012c6d6f64756c655f6e616d65f1060180426f756e6465645665633c75382c204d617850616c6c65744e616d654c656e3e0001146d616a6f721501010c7533320001146d696e6f721501010c75333200011470617463681501010c7533320000f1060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e0000f506000002ed0600f90604184f7074696f6e0404540131010108104e6f6e6500000010536f6d65040031010000010000fd060c2c73746167696e675f78636d087634445175657279526573706f6e7365496e666f00000c012c64657374696e6174696f6e310101204c6f636174696f6e00012071756572795f696428011c517565727949640001286d61785f77656967687424011857656967687400000107102c73746167696e675f78636d0876341461737365742c417373657446696c74657200010820446566696e6974650400d10601184173736574730000001057696c6404000507012457696c644173736574000100000507102c73746167696e675f78636d0876341461737365742457696c6441737365740001100c416c6c00000014416c6c4f6608010869646501011c4173736574496400010c66756e0907013c57696c6446756e676962696c69747900010028416c6c436f756e74656404001501010c75333200020030416c6c4f66436f756e7465640c010869646501011c4173736574496400010c66756e0907013c57696c6446756e676962696c697479000114636f756e741501010c753332000300000907102c73746167696e675f78636d0876341461737365743c57696c6446756e676962696c6974790001082046756e6769626c650000002c4e6f6e46756e6769626c65000100000d07080c78636d3c56657273696f6e656441737365747300010c08563204002506013c76323a3a4d756c746941737365747300010008563304007106013c76333a3a4d756c74694173736574730003000856340400d106012876343a3a417373657473000400001107080c78636d3056657273696f6e656458636d042c52756e74696d6543616c6c00010c08563204001507015076323a3a58636d3c52756e74696d6543616c6c3e00020008563304002507015076333a3a58636d3c52756e74696d6543616c6c3e00030008563404003107015076343a3a58636d3c52756e74696d6543616c6c3e0004000015070c0c78636d0876320c58636d042c52756e74696d6543616c6c00000400190701745665633c496e737472756374696f6e3c52756e74696d6543616c6c3e3e000019070000021d07001d070c0c78636d0876322c496e737472756374696f6e042c52756e74696d6543616c6c000170345769746864726177417373657404002506012c4d756c7469417373657473000000545265736572766541737365744465706f736974656404002506012c4d756c7469417373657473000100585265636569766554656c65706f72746564417373657404002506012c4d756c7469417373657473000200345175657279526573706f6e73650c012071756572795f696428011c51756572794964000120726573706f6e73653d060120526573706f6e73650001286d61785f77656967687428010c753634000300345472616e7366657241737365740801186173736574732506012c4d756c746941737365747300012c62656e65666963696172796d0101344d756c74694c6f636174696f6e000400505472616e736665725265736572766541737365740c01186173736574732506012c4d756c7469417373657473000110646573746d0101344d756c74694c6f636174696f6e00010c78636d1906011c58636d3c28293e000500205472616e736163740c012c6f726967696e5f747970654d0601284f726967696e4b696e64000158726571756972655f7765696768745f61745f6d6f737428010c75363400011063616c6c21070168446f75626c65456e636f6465643c52756e74696d6543616c6c3e0006006448726d704e65774368616e6e656c4f70656e526571756573740c011873656e6465721501010c7533320001406d61785f6d6573736167655f73697a651501010c7533320001306d61785f63617061636974791501010c7533320007004c48726d704368616e6e656c4163636570746564040124726563697069656e741501010c7533320008004848726d704368616e6e656c436c6f73696e670c0124696e69746961746f721501010c75333200011873656e6465721501010c753332000124726563697069656e741501010c7533320009002c436c6561724f726967696e000a003444657363656e644f726967696e040071010154496e746572696f724d756c74694c6f636174696f6e000b002c5265706f72744572726f720c012071756572795f696428011c51756572794964000110646573746d0101344d756c74694c6f636174696f6e00014c6d61785f726573706f6e73655f77656967687428010c753634000c00304465706f73697441737365740c0118617373657473550601404d756c7469417373657446696c7465720001286d61785f6173736574731501010c75333200012c62656e65666963696172796d0101344d756c74694c6f636174696f6e000d004c4465706f736974526573657276654173736574100118617373657473550601404d756c7469417373657446696c7465720001286d61785f6173736574731501010c753332000110646573746d0101344d756c74694c6f636174696f6e00010c78636d1906011c58636d3c28293e000e003445786368616e6765417373657408011067697665550601404d756c7469417373657446696c74657200011c726563656976652506012c4d756c7469417373657473000f005c496e6974696174655265736572766557697468647261770c0118617373657473550601404d756c7469417373657446696c74657200011c726573657276656d0101344d756c74694c6f636174696f6e00010c78636d1906011c58636d3c28293e00100040496e69746961746554656c65706f72740c0118617373657473550601404d756c7469417373657446696c746572000110646573746d0101344d756c74694c6f636174696f6e00010c78636d1906011c58636d3c28293e001100305175657279486f6c64696e6710012071756572795f696428011c51756572794964000110646573746d0101344d756c74694c6f636174696f6e000118617373657473550601404d756c7469417373657446696c74657200014c6d61785f726573706f6e73655f77656967687428010c75363400120030427579457865637574696f6e080110666565732d0601284d756c746941737365740001307765696768745f6c696d69746106012c5765696768744c696d697400130034526566756e64537572706c75730014003c5365744572726f7248616e646c657204001507014058636d3c52756e74696d6543616c6c3e0015002c536574417070656e64697804001507014058636d3c52756e74696d6543616c6c3e00160028436c6561724572726f7200170028436c61696d41737365740801186173736574732506012c4d756c74694173736574730001187469636b65746d0101344d756c74694c6f636174696f6e0018001054726170040028010c7536340019004053756273637269626556657273696f6e08012071756572795f696428011c5175657279496400014c6d61785f726573706f6e73655f77656967687428010c753634001a0048556e73756273637269626556657273696f6e001b000021070c0c78636d38646f75626c655f656e636f64656434446f75626c65456e636f646564040454000004011c656e636f64656434011c5665633c75383e000025070c0c78636d0876330c58636d041043616c6c00000400290701585665633c496e737472756374696f6e3c43616c6c3e3e000029070000022d07002d070c0c78636d0876332c496e737472756374696f6e041043616c6c0001c0345769746864726177417373657404007106012c4d756c7469417373657473000000545265736572766541737365744465706f736974656404007106012c4d756c7469417373657473000100585265636569766554656c65706f72746564417373657404007106012c4d756c7469417373657473000200345175657279526573706f6e736510012071756572795f696428011c51756572794964000120726573706f6e736585060120526573706f6e73650001286d61785f77656967687424011857656967687400011c71756572696572ad0601544f7074696f6e3c4d756c74694c6f636174696f6e3e000300345472616e7366657241737365740801186173736574737106012c4d756c746941737365747300012c62656e6566696369617279090101344d756c74694c6f636174696f6e000400505472616e736665725265736572766541737365740c01186173736574737106012c4d756c746941737365747300011064657374090101344d756c74694c6f636174696f6e00010c78636d6506011c58636d3c28293e000500205472616e736163740c012c6f726967696e5f6b696e644d0601284f726967696e4b696e64000158726571756972655f7765696768745f61745f6d6f737424011857656967687400011063616c6c2107014c446f75626c65456e636f6465643c43616c6c3e0006006448726d704e65774368616e6e656c4f70656e526571756573740c011873656e6465721501010c7533320001406d61785f6d6573736167655f73697a651501010c7533320001306d61785f63617061636974791501010c7533320007004c48726d704368616e6e656c4163636570746564040124726563697069656e741501010c7533320008004848726d704368616e6e656c436c6f73696e670c0124696e69746961746f721501010c75333200011873656e6465721501010c753332000124726563697069656e741501010c7533320009002c436c6561724f726967696e000a003444657363656e644f726967696e04000d010154496e746572696f724d756c74694c6f636174696f6e000b002c5265706f72744572726f720400b10601445175657279526573706f6e7365496e666f000c00304465706f7369744173736574080118617373657473b50601404d756c7469417373657446696c74657200012c62656e6566696369617279090101344d756c74694c6f636174696f6e000d004c4465706f7369745265736572766541737365740c0118617373657473b50601404d756c7469417373657446696c74657200011064657374090101344d756c74694c6f636174696f6e00010c78636d6506011c58636d3c28293e000e003445786368616e676541737365740c011067697665b50601404d756c7469417373657446696c74657200011077616e747106012c4d756c746941737365747300011c6d6178696d616c780110626f6f6c000f005c496e6974696174655265736572766557697468647261770c0118617373657473b50601404d756c7469417373657446696c74657200011c72657365727665090101344d756c74694c6f636174696f6e00010c78636d6506011c58636d3c28293e00100040496e69746961746554656c65706f72740c0118617373657473b50601404d756c7469417373657446696c74657200011064657374090101344d756c74694c6f636174696f6e00010c78636d6506011c58636d3c28293e001100345265706f7274486f6c64696e67080134726573706f6e73655f696e666fb10601445175657279526573706f6e7365496e666f000118617373657473b50601404d756c7469417373657446696c74657200120030427579457865637574696f6e08011066656573790601284d756c746941737365740001307765696768745f6c696d6974c106012c5765696768744c696d697400130034526566756e64537572706c75730014003c5365744572726f7248616e646c657204002507012458636d3c43616c6c3e0015002c536574417070656e64697804002507012458636d3c43616c6c3e00160028436c6561724572726f7200170028436c61696d41737365740801186173736574737106012c4d756c74694173736574730001187469636b6574090101344d756c74694c6f636174696f6e0018001054726170040028010c7536340019004053756273637269626556657273696f6e08012071756572795f696428011c5175657279496400014c6d61785f726573706f6e73655f776569676874240118576569676874001a0048556e73756273637269626556657273696f6e001b00244275726e417373657404007106012c4d756c7469417373657473001c002c457870656374417373657404007106012c4d756c7469417373657473001d00304578706563744f726967696e0400ad0601544f7074696f6e3c4d756c74694c6f636174696f6e3e001e002c4578706563744572726f720400890601504f7074696f6e3c287533322c204572726f72293e001f00504578706563745472616e736163745374617475730400a50601384d617962654572726f72436f64650020002c517565727950616c6c657408012c6d6f64756c655f6e616d6534011c5665633c75383e000134726573706f6e73655f696e666fb10601445175657279526573706f6e7365496e666f0021003045787065637450616c6c6574140114696e6465781501010c7533320001106e616d6534011c5665633c75383e00012c6d6f64756c655f6e616d6534011c5665633c75383e00012c63726174655f6d616a6f721501010c75333200013c6d696e5f63726174655f6d696e6f721501010c753332002200505265706f72745472616e736163745374617475730400b10601445175657279526573706f6e7365496e666f0023004c436c6561725472616e736163745374617475730024003c556e6976657273616c4f726967696e0400110101204a756e6374696f6e002500344578706f72744d6573736167650c011c6e6574776f726b1d0101244e6574776f726b496400012c64657374696e6174696f6e0d010154496e746572696f724d756c74694c6f636174696f6e00010c78636d6506011c58636d3c28293e002600244c6f636b41737365740801146173736574790601284d756c74694173736574000120756e6c6f636b6572090101344d756c74694c6f636174696f6e0027002c556e6c6f636b41737365740801146173736574790601284d756c74694173736574000118746172676574090101344d756c74694c6f636174696f6e002800384e6f7465556e6c6f636b61626c650801146173736574790601284d756c746941737365740001146f776e6572090101344d756c74694c6f636174696f6e0029003452657175657374556e6c6f636b0801146173736574790601284d756c746941737365740001186c6f636b6572090101344d756c74694c6f636174696f6e002a002c536574466565734d6f64650401306a69745f7769746864726177780110626f6f6c002b0020536574546f70696304000401205b75383b2033325d002c0028436c656172546f706963002d002c416c6961734f726967696e0400090101344d756c74694c6f636174696f6e002e003c556e70616964457865637574696f6e0801307765696768745f6c696d6974c106012c5765696768744c696d6974000130636865636b5f6f726967696ead0601544f7074696f6e3c4d756c74694c6f636174696f6e3e002f000031070c2c73746167696e675f78636d0876340c58636d041043616c6c00000400350701585665633c496e737472756374696f6e3c43616c6c3e3e0000350700000239070039070c2c73746167696e675f78636d0876342c496e737472756374696f6e041043616c6c0001c034576974686472617741737365740400d1060118417373657473000000545265736572766541737365744465706f73697465640400d1060118417373657473000100585265636569766554656c65706f7274656441737365740400d1060118417373657473000200345175657279526573706f6e736510012071756572795f696428011c51756572794964000120726573706f6e7365e5060120526573706f6e73650001286d61785f77656967687424011857656967687400011c71756572696572f90601404f7074696f6e3c4c6f636174696f6e3e000300345472616e736665724173736574080118617373657473d106011841737365747300012c62656e6566696369617279310101204c6f636174696f6e000400505472616e736665725265736572766541737365740c0118617373657473d106011841737365747300011064657374310101204c6f636174696f6e00010c78636dc506011c58636d3c28293e000500205472616e736163740c012c6f726967696e5f6b696e644d0601284f726967696e4b696e64000158726571756972655f7765696768745f61745f6d6f737424011857656967687400011063616c6c2107014c446f75626c65456e636f6465643c43616c6c3e0006006448726d704e65774368616e6e656c4f70656e526571756573740c011873656e6465721501010c7533320001406d61785f6d6573736167655f73697a651501010c7533320001306d61785f63617061636974791501010c7533320007004c48726d704368616e6e656c4163636570746564040124726563697069656e741501010c7533320008004848726d704368616e6e656c436c6f73696e670c0124696e69746961746f721501010c75333200011873656e6465721501010c753332000124726563697069656e741501010c7533320009002c436c6561724f726967696e000a003444657363656e644f726967696e040035010140496e746572696f724c6f636174696f6e000b002c5265706f72744572726f720400fd0601445175657279526573706f6e7365496e666f000c00304465706f73697441737365740801186173736574730107012c417373657446696c74657200012c62656e6566696369617279310101204c6f636174696f6e000d004c4465706f7369745265736572766541737365740c01186173736574730107012c417373657446696c74657200011064657374310101204c6f636174696f6e00010c78636dc506011c58636d3c28293e000e003445786368616e676541737365740c0110676976650107012c417373657446696c74657200011077616e74d106011841737365747300011c6d6178696d616c780110626f6f6c000f005c496e6974696174655265736572766557697468647261770c01186173736574730107012c417373657446696c74657200011c72657365727665310101204c6f636174696f6e00010c78636dc506011c58636d3c28293e00100040496e69746961746554656c65706f72740c01186173736574730107012c417373657446696c74657200011064657374310101204c6f636174696f6e00010c78636dc506011c58636d3c28293e001100345265706f7274486f6c64696e67080134726573706f6e73655f696e666ffd0601445175657279526573706f6e7365496e666f0001186173736574730107012c417373657446696c74657200120030427579457865637574696f6e08011066656573d906011441737365740001307765696768745f6c696d6974c106012c5765696768744c696d697400130034526566756e64537572706c75730014003c5365744572726f7248616e646c657204003107012458636d3c43616c6c3e0015002c536574417070656e64697804003107012458636d3c43616c6c3e00160028436c6561724572726f7200170028436c61696d4173736574080118617373657473d10601184173736574730001187469636b6574310101204c6f636174696f6e0018001054726170040028010c7536340019004053756273637269626556657273696f6e08012071756572795f696428011c5175657279496400014c6d61785f726573706f6e73655f776569676874240118576569676874001a0048556e73756273637269626556657273696f6e001b00244275726e41737365740400d1060118417373657473001c002c45787065637441737365740400d1060118417373657473001d00304578706563744f726967696e0400f90601404f7074696f6e3c4c6f636174696f6e3e001e002c4578706563744572726f720400890601504f7074696f6e3c287533322c204572726f72293e001f00504578706563745472616e736163745374617475730400a50601384d617962654572726f72436f64650020002c517565727950616c6c657408012c6d6f64756c655f6e616d6534011c5665633c75383e000134726573706f6e73655f696e666ffd0601445175657279526573706f6e7365496e666f0021003045787065637450616c6c6574140114696e6465781501010c7533320001106e616d6534011c5665633c75383e00012c6d6f64756c655f6e616d6534011c5665633c75383e00012c63726174655f6d616a6f721501010c75333200013c6d696e5f63726174655f6d696e6f721501010c753332002200505265706f72745472616e736163745374617475730400fd0601445175657279526573706f6e7365496e666f0023004c436c6561725472616e736163745374617475730024003c556e6976657273616c4f726967696e04003d0101204a756e6374696f6e002500344578706f72744d6573736167650c011c6e6574776f726b450101244e6574776f726b496400012c64657374696e6174696f6e35010140496e746572696f724c6f636174696f6e00010c78636dc506011c58636d3c28293e002600244c6f636b41737365740801146173736574d90601144173736574000120756e6c6f636b6572310101204c6f636174696f6e0027002c556e6c6f636b41737365740801146173736574d90601144173736574000118746172676574310101204c6f636174696f6e002800384e6f7465556e6c6f636b61626c650801146173736574d906011441737365740001146f776e6572310101204c6f636174696f6e0029003452657175657374556e6c6f636b0801146173736574d906011441737365740001186c6f636b6572310101204c6f636174696f6e002a002c536574466565734d6f64650401306a69745f7769746864726177780110626f6f6c002b0020536574546f70696304000401205b75383b2033325d002c0028436c656172546f706963002d002c416c6961734f726967696e0400310101204c6f636174696f6e002e003c556e70616964457865637574696f6e0801307765696768745f6c696d6974c106012c5765696768744c696d6974000130636865636b5f6f726967696ef90601404f7074696f6e3c4c6f636174696f6e3e002f00003d070c5070616c6c65745f6d6573736167655f71756575651870616c6c65741043616c6c04045400010824726561705f706167650801386d6573736167655f6f726967696e410701484d6573736167654f726967696e4f663c543e000128706167655f696e64657810012450616765496e64657800000468536565205b6050616c6c65743a3a726561705f70616765605d2e48657865637574655f6f7665727765696768741001386d6573736167655f6f726967696e410701484d6573736167654f726967696e4f663c543e0001107061676510012450616765496e646578000114696e64657810011c543a3a53697a650001307765696768745f6c696d69742401185765696768740001048c536565205b6050616c6c65743a3a657865637574655f6f766572776569676874605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e41070c6c706f6c6b61646f745f72756e74696d655f70617261636861696e7324696e636c7573696f6e584167677265676174654d6573736167654f726967696e0001040c556d70040045070128556d70517565756549640000000045070c6c706f6c6b61646f745f72756e74696d655f70617261636861696e7324696e636c7573696f6e28556d705175657565496400010410506172610400b90201185061726149640000000049070c4470616c6c65745f61737365745f726174651870616c6c65741043616c6c04045400010c1863726561746508012861737365745f6b696e6405010144426f783c543a3a41737365744b696e643e000110726174654d0701244669786564553132380000045c536565205b6050616c6c65743a3a637265617465605d2e1875706461746508012861737365745f6b696e6405010144426f783c543a3a41737365744b696e643e000110726174654d0701244669786564553132380001045c536565205b6050616c6c65743a3a757064617465605d2e1872656d6f766504012861737365745f6b696e6405010144426f783c543a3a41737365744b696e643e0002045c536565205b6050616c6c65743a3a72656d6f7665605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e4d070c3473705f61726974686d657469632c66697865645f706f696e74244669786564553132380000040018011075313238000051070c3070616c6c65745f62656566791870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f665507018d01426f783c45717569766f636174696f6e50726f6f663c426c6f636b4e756d626572466f723c543e2c20543a3a426565667949642c3c543a3a426565667949640a61732052756e74696d654170705075626c69633e3a3a5369676e61747572652c3e2c3e00013c6b65795f6f776e65725f70726f6f66d1010140543a3a4b65794f776e657250726f6f6600000490536565205b6050616c6c65743a3a7265706f72745f65717569766f636174696f6e605d2e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f665507018d01426f783c45717569766f636174696f6e50726f6f663c426c6f636b4e756d626572466f723c543e2c20543a3a426565667949642c3c543a3a426565667949640a61732052756e74696d654170705075626c69633e3a3a5369676e61747572652c3e2c3e00013c6b65795f6f776e65725f70726f6f66d1010140543a3a4b65794f776e657250726f6f66000104b4536565205b6050616c6c65743a3a7265706f72745f65717569766f636174696f6e5f756e7369676e6564605d2e3c7365745f6e65775f67656e6573697304013c64656c61795f696e5f626c6f636b73100144426c6f636b4e756d626572466f723c543e00020480536565205b6050616c6c65743a3a7365745f6e65775f67656e65736973605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e5507084873705f636f6e73656e7375735f62656566794445717569766f636174696f6e50726f6f660c184e756d6265720110084964014d02245369676e61747572650159070008011466697273745d070188566f74654d6573736167653c4e756d6265722c2049642c205369676e61747572653e0001187365636f6e645d070188566f74654d6573736167653c4e756d6265722c2049642c205369676e61747572653e000059070c4873705f636f6e73656e7375735f62656566793065636473615f63727970746f245369676e617475726500000400a903014065636473613a3a5369676e617475726500005d07084873705f636f6e73656e7375735f62656566792c566f74654d6573736167650c184e756d6265720110084964014d02245369676e6174757265015907000c0128636f6d6d69746d656e7461070148436f6d6d69746d656e743c4e756d6265723e00010869644d02010849640001247369676e6174757265590701245369676e6174757265000061070c4873705f636f6e73656e7375735f626565667928636f6d6d69746d656e7428436f6d6d69746d656e74043054426c6f636b4e756d6265720110000c011c7061796c6f61646507011c5061796c6f6164000130626c6f636b5f6e756d62657210013054426c6f636b4e756d62657200014076616c696461746f725f7365745f69642c013856616c696461746f725365744964000065070c4873705f636f6e73656e7375735f62656566791c7061796c6f61641c5061796c6f616400000400690701785665633c2842656566795061796c6f616449642c205665633c75383e293e000069070000026d07006d07000004081d03340071070c2873705f72756e74696d65187472616974732c426c616b6554776f3235360000000075070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e000079070c6070616c6c65745f636f6e76696374696f6e5f766f74696e671474797065731454616c6c790814566f746573011814546f74616c00000c011061796573180114566f7465730001106e617973180114566f74657300011c737570706f7274180114566f74657300007d070c4070616c6c65745f77686974656c6973741870616c6c6574144576656e7404045400010c3c43616c6c57686974656c697374656404012463616c6c5f6861736830011c543a3a486173680000005857686974656c697374656443616c6c52656d6f76656404012463616c6c5f6861736830011c543a3a486173680001006457686974656c697374656443616c6c4469737061746368656408012463616c6c5f6861736830011c543a3a48617368000118726573756c74810701684469737061746368526573756c7457697468506f7374496e666f000200047c54686520604576656e746020656e756d206f6620746869732070616c6c657481070418526573756c740804540185070445018d070108084f6b04008507000000000c45727204008d07000001000085070c346672616d655f737570706f727420646973706174636840506f73744469737061746368496e666f000008013461637475616c5f776569676874890701384f7074696f6e3c5765696768743e000120706179735f666565600110506179730000890704184f7074696f6e04045401240108104e6f6e6500000010536f6d6504002400000100008d07082873705f72756e74696d656444697370617463684572726f7257697468506f7374496e666f0410496e666f01850700080124706f73745f696e666f85070110496e666f0001146572726f7264013444697370617463684572726f7200009107105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e18636c61696d731870616c6c6574144576656e740404540001041c436c61696d65640c010c77686f000130543a3a4163636f756e744964000140657468657265756d5f61646472657373dd02013c457468657265756d41646472657373000118616d6f756e7418013042616c616e63654f663c543e00000468536f6d656f6e6520636c61696d656420736f6d6520444f54732e047c54686520604576656e746020656e756d206f6620746869732070616c6c657495070c3870616c6c65745f76657374696e671870616c6c6574144576656e740404540001083856657374696e675570646174656408011c6163636f756e74000130543a3a4163636f756e744964000120756e76657374656418013042616c616e63654f663c543e000008510154686520616d6f756e742076657374656420686173206265656e20757064617465642e205468697320636f756c6420696e6469636174652061206368616e676520696e2066756e647320617661696c61626c652e25015468652062616c616e636520676976656e2069732074686520616d6f756e74207768696368206973206c65667420756e7665737465642028616e642074687573206c6f636b6564292e4056657374696e67436f6d706c6574656404011c6163636f756e74000130543a3a4163636f756e7449640001049c416e205c5b6163636f756e745c5d20686173206265636f6d652066756c6c79207665737465642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657499070c3870616c6c65745f7574696c6974791870616c6c6574144576656e74000118404261746368496e746572727570746564080114696e64657810010c7533320001146572726f7264013444697370617463684572726f7200000855014261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792e20496e646578206f66206669727374206661696c696e6720646973706174636820676976656e2c2061734877656c6c20617320746865206572726f722e384261746368436f6d706c65746564000104c84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722e604261746368436f6d706c65746564576974684572726f7273000204b44261746368206f66206469737061746368657320636f6d706c657465642062757420686173206572726f72732e344974656d436f6d706c657465640003041d01412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206e6f206572726f722e284974656d4661696c65640401146572726f7264013444697370617463684572726f720004041101412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206572726f722e30446973706174636865644173040118726573756c748801384469737061746368526573756c7400050458412063616c6c2077617320646973706174636865642e047c54686520604576656e746020656e756d206f6620746869732070616c6c65749d070c3c70616c6c65745f6964656e746974791870616c6c6574144576656e740404540001442c4964656e7469747953657404010c77686f000130543a3a4163636f756e744964000004ec41206e616d652077617320736574206f72207265736574202877686963682077696c6c2072656d6f766520616c6c206a756467656d656e7473292e3c4964656e74697479436c656172656408010c77686f000130543a3a4163636f756e74496400011c6465706f73697418013042616c616e63654f663c543e000104cc41206e616d652077617320636c65617265642c20616e642074686520676976656e2062616c616e63652072657475726e65642e384964656e746974794b696c6c656408010c77686f000130543a3a4163636f756e74496400011c6465706f73697418013042616c616e63654f663c543e000204c441206e616d65207761732072656d6f76656420616e642074686520676976656e2062616c616e636520736c61736865642e484a756467656d656e7452657175657374656408010c77686f000130543a3a4163636f756e74496400013c7265676973747261725f696e646578100138526567697374726172496e6465780003049c41206a756467656d656e74207761732061736b65642066726f6d2061207265676973747261722e504a756467656d656e74556e72657175657374656408010c77686f000130543a3a4163636f756e74496400013c7265676973747261725f696e646578100138526567697374726172496e6465780004048841206a756467656d656e74207265717565737420776173207265747261637465642e384a756467656d656e74476976656e080118746172676574000130543a3a4163636f756e74496400013c7265676973747261725f696e646578100138526567697374726172496e6465780005049441206a756467656d656e742077617320676976656e2062792061207265676973747261722e38526567697374726172416464656404013c7265676973747261725f696e646578100138526567697374726172496e646578000604584120726567697374726172207761732061646465642e405375624964656e7469747941646465640c010c737562000130543a3a4163636f756e7449640001106d61696e000130543a3a4163636f756e74496400011c6465706f73697418013042616c616e63654f663c543e000704f441207375622d6964656e746974792077617320616464656420746f20616e206964656e7469747920616e6420746865206465706f73697420706169642e485375624964656e7469747952656d6f7665640c010c737562000130543a3a4163636f756e7449640001106d61696e000130543a3a4163636f756e74496400011c6465706f73697418013042616c616e63654f663c543e000804090141207375622d6964656e74697479207761732072656d6f7665642066726f6d20616e206964656e7469747920616e6420746865206465706f7369742066726565642e485375624964656e746974795265766f6b65640c010c737562000130543a3a4163636f756e7449640001106d61696e000130543a3a4163636f756e74496400011c6465706f73697418013042616c616e63654f663c543e000908190141207375622d6964656e746974792077617320636c65617265642c20616e642074686520676976656e206465706f7369742072657061747269617465642066726f6d20746865c86d61696e206964656e74697479206163636f756e7420746f20746865207375622d6964656e74697479206163636f756e742e38417574686f726974794164646564040124617574686f72697479000130543a3a4163636f756e744964000a047c4120757365726e616d6520617574686f72697479207761732061646465642e40417574686f7269747952656d6f766564040124617574686f72697479000130543a3a4163636f756e744964000b04844120757365726e616d6520617574686f72697479207761732072656d6f7665642e2c557365726e616d6553657408010c77686f000130543a3a4163636f756e744964000120757365726e616d65ad03012c557365726e616d653c543e000c04744120757365726e616d65207761732073657420666f72206077686f602e38557365726e616d655175657565640c010c77686f000130543a3a4163636f756e744964000120757365726e616d65ad03012c557365726e616d653c543e00012865787069726174696f6e100144426c6f636b4e756d626572466f723c543e000d0419014120757365726e616d6520776173207175657565642c20627574206077686f60206d75737420616363657074206974207072696f7220746f206065787069726174696f6e602e48507265617070726f76616c4578706972656404011477686f7365000130543a3a4163636f756e744964000e043901412071756575656420757365726e616d6520706173736564206974732065787069726174696f6e20776974686f7574206265696e6720636c61696d656420616e64207761732072656d6f7665642e485072696d617279557365726e616d6553657408010c77686f000130543a3a4163636f756e744964000120757365726e616d65ad03012c557365726e616d653c543e000f0401014120757365726e616d6520776173207365742061732061207072696d61727920616e642063616e206265206c6f6f6b65642075702066726f6d206077686f602e5c44616e676c696e67557365726e616d6552656d6f76656408010c77686f000130543a3a4163636f756e744964000120757365726e616d65ad03012c557365726e616d653c543e0010085d01412064616e676c696e6720757365726e616d652028617320696e2c206120757365726e616d6520636f72726573706f6e64696e6720746f20616e206163636f756e742074686174206861732072656d6f766564206974736c6964656e746974792920686173206265656e2072656d6f7665642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574a1070c3070616c6c65745f70726f78791870616c6c6574144576656e740404540001143450726f78794578656375746564040118726573756c748801384469737061746368526573756c74000004bc412070726f78792077617320657865637574656420636f72726563746c792c20776974682074686520676976656e2e2c507572654372656174656410011070757265000130543a3a4163636f756e74496400010c77686f000130543a3a4163636f756e74496400012870726f78795f74797065b9030130543a3a50726f787954797065000150646973616d626967756174696f6e5f696e6465789101010c753136000108dc412070757265206163636f756e7420686173206265656e2063726561746564206279206e65772070726f7879207769746820676976656e90646973616d626967756174696f6e20696e64657820616e642070726f787920747970652e24416e6e6f756e6365640c01107265616c000130543a3a4163636f756e74496400011470726f7879000130543a3a4163636f756e74496400012463616c6c5f6861736830013443616c6c486173684f663c543e000204e0416e20616e6e6f756e63656d656e742077617320706c6163656420746f206d616b6520612063616c6c20696e20746865206675747572652e2850726f7879416464656410012464656c656761746f72000130543a3a4163636f756e74496400012464656c656761746565000130543a3a4163636f756e74496400012870726f78795f74797065b9030130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e00030448412070726f7879207761732061646465642e3050726f787952656d6f76656410012464656c656761746f72000130543a3a4163636f756e74496400012464656c656761746565000130543a3a4163636f756e74496400012870726f78795f74797065b9030130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e00040450412070726f7879207761732072656d6f7665642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574a5070c3c70616c6c65745f6d756c74697369671870616c6c6574144576656e740404540001102c4e65774d756c74697369670c0124617070726f76696e67000130543a3a4163636f756e7449640001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c486173680000048c41206e6577206d756c7469736967206f7065726174696f6e2068617320626567756e2e404d756c7469736967417070726f76616c100124617070726f76696e67000130543a3a4163636f756e74496400012474696d65706f696e74c503017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e0001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c48617368000104c841206d756c7469736967206f7065726174696f6e20686173206265656e20617070726f76656420627920736f6d656f6e652e404d756c74697369674578656375746564140124617070726f76696e67000130543a3a4163636f756e74496400012474696d65706f696e74c503017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e0001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c48617368000118726573756c748801384469737061746368526573756c740002049c41206d756c7469736967206f7065726174696f6e20686173206265656e2065786563757465642e444d756c746973696743616e63656c6c656410012863616e63656c6c696e67000130543a3a4163636f756e74496400012474696d65706f696e74c503017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e0001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c48617368000304a041206d756c7469736967206f7065726174696f6e20686173206265656e2063616e63656c6c65642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574a9070c3c70616c6c65745f626f756e746965731870616c6c6574144576656e7408045400044900012c38426f756e747950726f706f736564040114696e64657810012c426f756e7479496e646578000004504e657720626f756e74792070726f706f73616c2e38426f756e747952656a6563746564080114696e64657810012c426f756e7479496e646578000110626f6e6418013c42616c616e63654f663c542c20493e000104cc4120626f756e74792070726f706f73616c207761732072656a65637465643b2066756e6473207765726520736c61736865642e48426f756e7479426563616d65416374697665040114696e64657810012c426f756e7479496e646578000204b84120626f756e74792070726f706f73616c2069732066756e64656420616e6420626563616d65206163746976652e34426f756e747941776172646564080114696e64657810012c426f756e7479496e64657800012c62656e6566696369617279000130543a3a4163636f756e744964000304944120626f756e7479206973206177617264656420746f20612062656e65666963696172792e34426f756e7479436c61696d65640c0114696e64657810012c426f756e7479496e6465780001187061796f757418013c42616c616e63654f663c542c20493e00012c62656e6566696369617279000130543a3a4163636f756e7449640004048c4120626f756e747920697320636c61696d65642062792062656e65666963696172792e38426f756e747943616e63656c6564040114696e64657810012c426f756e7479496e646578000504584120626f756e74792069732063616e63656c6c65642e38426f756e7479457874656e646564040114696e64657810012c426f756e7479496e646578000604704120626f756e74792065787069727920697320657874656e6465642e38426f756e7479417070726f766564040114696e64657810012c426f756e7479496e646578000704544120626f756e747920697320617070726f7665642e3c43757261746f7250726f706f736564080124626f756e74795f696410012c426f756e7479496e64657800011c63757261746f72000130543a3a4163636f756e744964000804744120626f756e74792063757261746f722069732070726f706f7365642e4443757261746f72556e61737369676e6564040124626f756e74795f696410012c426f756e7479496e6465780009047c4120626f756e74792063757261746f7220697320756e61737369676e65642e3c43757261746f724163636570746564080124626f756e74795f696410012c426f756e7479496e64657800011c63757261746f72000130543a3a4163636f756e744964000a04744120626f756e74792063757261746f722069732061636365707465642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574ad070c5470616c6c65745f6368696c645f626f756e746965731870616c6c6574144576656e74040454000110144164646564080114696e64657810012c426f756e7479496e64657800012c6368696c645f696e64657810012c426f756e7479496e6465780000046041206368696c642d626f756e74792069732061646465642e1c417761726465640c0114696e64657810012c426f756e7479496e64657800012c6368696c645f696e64657810012c426f756e7479496e64657800012c62656e6566696369617279000130543a3a4163636f756e744964000104ac41206368696c642d626f756e7479206973206177617264656420746f20612062656e65666963696172792e1c436c61696d6564100114696e64657810012c426f756e7479496e64657800012c6368696c645f696e64657810012c426f756e7479496e6465780001187061796f757418013042616c616e63654f663c543e00012c62656e6566696369617279000130543a3a4163636f756e744964000204a441206368696c642d626f756e747920697320636c61696d65642062792062656e65666963696172792e2043616e63656c6564080114696e64657810012c426f756e7479496e64657800012c6368696c645f696e64657810012c426f756e7479496e6465780003047041206368696c642d626f756e74792069732063616e63656c6c65642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574b1070c9070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173651870616c6c6574144576656e7404045400011838536f6c7574696f6e53746f7265640c011c636f6d70757465b507013c456c656374696f6e436f6d707574650001186f726967696e210201504f7074696f6e3c543a3a4163636f756e7449643e000130707265765f656a6563746564780110626f6f6c00001cb44120736f6c7574696f6e207761732073746f72656420776974682074686520676976656e20636f6d707574652e00510154686520606f726967696e6020696e6469636174657320746865206f726967696e206f662074686520736f6c7574696f6e2e20496620606f726967696e602069732060536f6d65284163636f756e74496429602c55017468652073746f72656420736f6c7574696f6e20776173207375626d6974656420696e20746865207369676e65642070686173652062792061206d696e657220776974682074686520604163636f756e744964602e25014f74686572776973652c2074686520736f6c7574696f6e207761732073746f7265642065697468657220647572696e672074686520756e7369676e6564207068617365206f722062794d0160543a3a466f7263654f726967696e602e205468652060626f6f6c6020697320607472756560207768656e20612070726576696f757320736f6c7574696f6e2077617320656a656374656420746f206d616b6548726f6f6d20666f722074686973206f6e652e44456c656374696f6e46696e616c697a656408011c636f6d70757465b507013c456c656374696f6e436f6d7075746500011473636f7265a5040134456c656374696f6e53636f7265000104190154686520656c656374696f6e20686173206265656e2066696e616c697a65642c20776974682074686520676976656e20636f6d7075746174696f6e20616e642073636f72652e38456c656374696f6e4661696c656400020c4c416e20656c656374696f6e206661696c65642e0001014e6f74206d7563682063616e20626520736169642061626f757420776869636820636f6d7075746573206661696c656420696e207468652070726f636573732e20526577617264656408011c6163636f756e740001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e74496400011476616c756518013042616c616e63654f663c543e0003042501416e206163636f756e7420686173206265656e20726577617264656420666f72207468656972207369676e6564207375626d697373696f6e206265696e672066696e616c697a65642e1c536c617368656408011c6163636f756e740001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e74496400011476616c756518013042616c616e63654f663c543e0004042101416e206163636f756e7420686173206265656e20736c617368656420666f72207375626d697474696e6720616e20696e76616c6964207369676e6564207375626d697373696f6e2e4450686173655472616e736974696f6e65640c011066726f6db907016050686173653c426c6f636b4e756d626572466f723c543e3e000108746fb907016050686173653c426c6f636b4e756d626572466f723c543e3e000114726f756e6410010c753332000504b85468657265207761732061207068617365207472616e736974696f6e20696e206120676976656e20726f756e642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574b507089070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173653c456c656374696f6e436f6d707574650001141c4f6e436861696e000000185369676e656400010020556e7369676e65640002002046616c6c6261636b00030024456d657267656e637900040000b907089070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173651450686173650408426e011001100c4f6666000000185369676e656400010020556e7369676e65640400bd07012828626f6f6c2c20426e2900020024456d657267656e637900030000bd0700000408781000c1070c4070616c6c65745f626167735f6c6973741870616c6c6574144576656e740804540004490001082052656261676765640c010c77686f000130543a3a4163636f756e74496400011066726f6d2c0120543a3a53636f7265000108746f2c0120543a3a53636f7265000004a44d6f76656420616e206163636f756e742066726f6d206f6e652062616720746f20616e6f746865722e3053636f72655570646174656408010c77686f000130543a3a4163636f756e7449640001246e65775f73636f72652c0120543a3a53636f7265000104d855706461746564207468652073636f7265206f6620736f6d65206163636f756e7420746f2074686520676976656e20616d6f756e742e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574c5070c5c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c731870616c6c6574144576656e740404540001481c437265617465640801246465706f7369746f72000130543a3a4163636f756e74496400011c706f6f6c5f6964100118506f6f6c4964000004604120706f6f6c20686173206265656e20637265617465642e18426f6e6465641001186d656d626572000130543a3a4163636f756e74496400011c706f6f6c5f6964100118506f6f6c4964000118626f6e64656418013042616c616e63654f663c543e0001186a6f696e6564780110626f6f6c0001049441206d656d6265722068617320626563616d6520626f6e64656420696e206120706f6f6c2e1c506169644f75740c01186d656d626572000130543a3a4163636f756e74496400011c706f6f6c5f6964100118506f6f6c49640001187061796f757418013042616c616e63654f663c543e0002048c41207061796f757420686173206265656e206d61646520746f2061206d656d6265722e20556e626f6e6465641401186d656d626572000130543a3a4163636f756e74496400011c706f6f6c5f6964100118506f6f6c496400011c62616c616e636518013042616c616e63654f663c543e000118706f696e747318013042616c616e63654f663c543e00010c657261100120457261496e64657800032c9841206d656d6265722068617320756e626f6e6465642066726f6d20746865697220706f6f6c2e0039012d206062616c616e6365602069732074686520636f72726573706f6e64696e672062616c616e6365206f6620746865206e756d626572206f6620706f696e7473207468617420686173206265656e5501202072657175657374656420746f20626520756e626f6e646564202874686520617267756d656e74206f66207468652060756e626f6e6460207472616e73616374696f6e292066726f6d2074686520626f6e6465641c2020706f6f6c2e45012d2060706f696e74736020697320746865206e756d626572206f6620706f696e747320746861742061726520697373756564206173206120726573756c74206f66206062616c616e636560206265696e67c0646973736f6c76656420696e746f2074686520636f72726573706f6e64696e6720756e626f6e64696e6720706f6f6c2ee42d206065726160206973207468652065726120696e207768696368207468652062616c616e63652077696c6c20626520756e626f6e6465642e5501496e2074686520616273656e6365206f6620736c617368696e672c2074686573652076616c7565732077696c6c206d617463682e20496e207468652070726573656e6365206f6620736c617368696e672c207468654d016e756d626572206f6620706f696e74732074686174206172652069737375656420696e2074686520756e626f6e64696e6720706f6f6c2077696c6c206265206c657373207468616e2074686520616d6f756e746472657175657374656420746f20626520756e626f6e6465642e2457697468647261776e1001186d656d626572000130543a3a4163636f756e74496400011c706f6f6c5f6964100118506f6f6c496400011c62616c616e636518013042616c616e63654f663c543e000118706f696e747318013042616c616e63654f663c543e0004189c41206d656d626572206861732077697468647261776e2066726f6d20746865697220706f6f6c2e00210154686520676976656e206e756d626572206f662060706f696e7473602068617665206265656e20646973736f6c76656420696e2072657475726e206f66206062616c616e6365602e00590153696d696c617220746f2060556e626f6e64656460206576656e742c20696e2074686520616273656e6365206f6620736c617368696e672c2074686520726174696f206f6620706f696e7420746f2062616c616e63652877696c6c20626520312e2444657374726f79656404011c706f6f6c5f6964100118506f6f6c4964000504684120706f6f6c20686173206265656e2064657374726f7965642e3053746174654368616e67656408011c706f6f6c5f6964100118506f6f6c49640001246e65775f7374617465d1040124506f6f6c53746174650006047c546865207374617465206f66206120706f6f6c20686173206368616e676564344d656d62657252656d6f76656408011c706f6f6c5f6964100118506f6f6c49640001186d656d626572000130543a3a4163636f756e74496400070c9841206d656d62657220686173206265656e2072656d6f7665642066726f6d206120706f6f6c2e0051015468652072656d6f76616c2063616e20626520766f6c756e74617279202877697468647261776e20616c6c20756e626f6e6465642066756e647329206f7220696e766f6c756e7461727920286b69636b6564292e30526f6c6573557064617465640c0110726f6f74210201504f7074696f6e3c543a3a4163636f756e7449643e00011c626f756e636572210201504f7074696f6e3c543a3a4163636f756e7449643e0001246e6f6d696e61746f72210201504f7074696f6e3c543a3a4163636f756e7449643e000808550154686520726f6c6573206f66206120706f6f6c2068617665206265656e207570646174656420746f2074686520676976656e206e657720726f6c65732e204e6f7465207468617420746865206465706f7369746f724463616e206e65766572206368616e67652e2c506f6f6c536c617368656408011c706f6f6c5f6964100118506f6f6c496400011c62616c616e636518013042616c616e63654f663c543e0009040d01546865206163746976652062616c616e6365206f6620706f6f6c2060706f6f6c5f69646020686173206265656e20736c617368656420746f206062616c616e6365602e50556e626f6e64696e67506f6f6c536c61736865640c011c706f6f6c5f6964100118506f6f6c496400010c657261100120457261496e64657800011c62616c616e636518013042616c616e63654f663c543e000a04250154686520756e626f6e6420706f6f6c206174206065726160206f6620706f6f6c2060706f6f6c5f69646020686173206265656e20736c617368656420746f206062616c616e6365602e54506f6f6c436f6d6d697373696f6e5570646174656408011c706f6f6c5f6964100118506f6f6c496400011c63757272656e74e904017c4f7074696f6e3c2850657262696c6c2c20543a3a4163636f756e744964293e000b04b44120706f6f6c277320636f6d6d697373696f6e2073657474696e6720686173206265656e206368616e6765642e60506f6f6c4d6178436f6d6d697373696f6e5570646174656408011c706f6f6c5f6964100118506f6f6c49640001386d61785f636f6d6d697373696f6eac011c50657262696c6c000c04d44120706f6f6c2773206d6178696d756d20636f6d6d697373696f6e2073657474696e6720686173206265656e206368616e6765642e7c506f6f6c436f6d6d697373696f6e4368616e6765526174655570646174656408011c706f6f6c5f6964100118506f6f6c496400012c6368616e67655f72617465f104019c436f6d6d697373696f6e4368616e6765526174653c426c6f636b4e756d626572466f723c543e3e000d04cc4120706f6f6c277320636f6d6d697373696f6e20606368616e67655f726174656020686173206265656e206368616e6765642e90506f6f6c436f6d6d697373696f6e436c61696d5065726d697373696f6e5570646174656408011c706f6f6c5f6964100118506f6f6c49640001287065726d697373696f6ef50401bc4f7074696f6e3c436f6d6d697373696f6e436c61696d5065726d697373696f6e3c543a3a4163636f756e7449643e3e000e04c8506f6f6c20636f6d6d697373696f6e20636c61696d207065726d697373696f6e20686173206265656e20757064617465642e54506f6f6c436f6d6d697373696f6e436c61696d656408011c706f6f6c5f6964100118506f6f6c4964000128636f6d6d697373696f6e18013042616c616e63654f663c543e000f0484506f6f6c20636f6d6d697373696f6e20686173206265656e20636c61696d65642e644d696e42616c616e63654465666963697441646a757374656408011c706f6f6c5f6964100118506f6f6c4964000118616d6f756e7418013042616c616e63654f663c543e001004c8546f70706564207570206465666963697420696e2066726f7a656e204544206f66207468652072657761726420706f6f6c2e604d696e42616c616e636545786365737341646a757374656408011c706f6f6c5f6964100118506f6f6c4964000118616d6f756e7418013042616c616e63654f663c543e001104bc436c61696d6564206578636573732066726f7a656e204544206f66206166207468652072657761726420706f6f6c2e04584576656e7473206f6620746869732070616c6c65742ec9070c4c70616c6c65745f666173745f756e7374616b651870616c6c6574144576656e7404045400011420556e7374616b65640801147374617368000130543a3a4163636f756e744964000118726573756c748801384469737061746368526573756c740000045841207374616b65722077617320756e7374616b65642e1c536c61736865640801147374617368000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e000104190141207374616b65722077617320736c617368656420666f722072657175657374696e6720666173742d756e7374616b65207768696c7374206265696e67206578706f7365642e304261746368436865636b656404011065726173090201345665633c457261496e6465783e00020445014120626174636820776173207061727469616c6c7920636865636b656420666f722074686520676976656e20657261732c20627574207468652070726f6365737320646964206e6f742066696e6973682e34426174636846696e697368656404011073697a6510010c7533320003109c41206261746368206f66206120676976656e2073697a6520776173207465726d696e617465642e0055015468697320697320616c7761797320666f6c6c6f77732062792061206e756d626572206f662060556e7374616b656460206f722060536c617368656460206576656e74732c206d61726b696e672074686520656e64e86f66207468652062617463682e2041206e65772062617463682077696c6c20626520637265617465642075706f6e206e65787420626c6f636b2e34496e7465726e616c4572726f72000404e8416e20696e7465726e616c206572726f722068617070656e65642e204f7065726174696f6e732077696c6c20626520706175736564206e6f772e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574cd07106c706f6c6b61646f745f72756e74696d655f70617261636861696e7324696e636c7573696f6e1870616c6c6574144576656e740404540001103c43616e6469646174654261636b65641000d107016443616e646964617465526563656970743c543a3a486173683e00008505012048656164446174610000d5070124436f7265496e6465780000d907012847726f7570496e646578000004c0412063616e64696461746520776173206261636b65642e20605b63616e6469646174652c20686561645f646174615d604443616e646964617465496e636c756465641000d107016443616e646964617465526563656970743c543a3a486173683e00008505012048656164446174610000d5070124436f7265496e6465780000d907012847726f7570496e646578000104c8412063616e6469646174652077617320696e636c756465642e20605b63616e6469646174652c20686561645f646174615d604443616e64696461746554696d65644f75740c00d107016443616e646964617465526563656970743c543a3a486173683e00008505012048656164446174610000d5070124436f7265496e646578000204bc412063616e6469646174652074696d6564206f75742e20605b63616e6469646174652c20686561645f646174615d60585570776172644d65737361676573526563656976656408011066726f6db9020118506172614964000114636f756e7410010c753332000304f8536f6d6520757077617264206d657373616765732068617665206265656e20726563656976656420616e642077696c6c2062652070726f6365737365642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574d1070c4c706f6c6b61646f745f7072696d6974697665730876364043616e6469646174655265636569707404044801300008012864657363726970746f725905015843616e64696461746544657363726970746f723c483e000140636f6d6d69746d656e74735f68617368300110486173680000d5070c4c706f6c6b61646f745f7072696d69746976657308763624436f7265496e6465780000040010010c7533320000d9070c4c706f6c6b61646f745f7072696d6974697665730876362847726f7570496e6465780000040010010c7533320000dd07106c706f6c6b61646f745f72756e74696d655f70617261636861696e731470617261731870616c6c6574144576656e740001204843757272656e74436f6465557064617465640400b9020118506172614964000004cc43757272656e7420636f646520686173206265656e207570646174656420666f72206120506172612e2060706172615f6964604843757272656e7448656164557064617465640400b9020118506172614964000104cc43757272656e74206865616420686173206265656e207570646174656420666f72206120506172612e2060706172615f69646050436f6465557067726164655363686564756c65640400b9020118506172614964000204dc4120636f6465207570677261646520686173206265656e207363686564756c656420666f72206120506172612e2060706172615f696460304e6577486561644e6f7465640400b9020118506172614964000304bc41206e6577206865616420686173206265656e206e6f74656420666f72206120506172612e2060706172615f69646030416374696f6e5175657565640800b9020118506172614964000010013053657373696f6e496e646578000404f041207061726120686173206265656e2071756575656420746f20657865637574652070656e64696e6720616374696f6e732e2060706172615f6964603c507666436865636b5374617274656408006505014856616c69646174696f6e436f6465486173680000b9020118506172614964000508550154686520676976656e20706172612065697468657220696e69746961746564206f72207375627363726962656420746f20612050564620636865636b20666f722074686520676976656e2076616c69646174696f6e6c636f64652e2060636f64655f68617368602060706172615f69646040507666436865636b416363657074656408006505014856616c69646174696f6e436f6465486173680000b9020118506172614964000608110154686520676976656e2076616c69646174696f6e20636f6465207761732061636365707465642062792074686520505646207072652d636865636b696e6720766f74652e5460636f64655f68617368602060706172615f69646040507666436865636b52656a656374656408006505014856616c69646174696f6e436f6465486173680000b9020118506172614964000708110154686520676976656e2076616c69646174696f6e20636f6465207761732072656a65637465642062792074686520505646207072652d636865636b696e6720766f74652e5460636f64655f68617368602060706172615f696460047c54686520604576656e746020656e756d206f6620746869732070616c6c6574e107106c706f6c6b61646f745f72756e74696d655f70617261636861696e731068726d701870616c6c6574144576656e7404045400011c504f70656e4368616e6e656c52657175657374656410011873656e646572b9020118506172614964000124726563697069656e74b902011850617261496400015470726f706f7365645f6d61785f636170616369747910010c75333200016470726f706f7365645f6d61785f6d6573736167655f73697a6510010c753332000004704f70656e2048524d50206368616e6e656c207265717565737465642e4c4f70656e4368616e6e656c43616e63656c656408013062795f70617261636861696eb90201185061726149640001286368616e6e656c5f6964c505013448726d704368616e6e656c49640001042901416e2048524d50206368616e6e656c20726571756573742073656e7420627920746865207265636569766572207761732063616e63656c6564206279206569746865722070617274792e4c4f70656e4368616e6e656c416363657074656408011873656e646572b9020118506172614964000124726563697069656e74b90201185061726149640002046c4f70656e2048524d50206368616e6e656c2061636365707465642e344368616e6e656c436c6f73656408013062795f70617261636861696eb90201185061726149640001286368616e6e656c5f6964c505013448726d704368616e6e656c49640003045048524d50206368616e6e656c20636c6f7365642e5848726d704368616e6e656c466f7263654f70656e656410011873656e646572b9020118506172614964000124726563697069656e74b902011850617261496400015470726f706f7365645f6d61785f636170616369747910010c75333200016470726f706f7365645f6d61785f6d6573736167655f73697a6510010c753332000404ac416e2048524d50206368616e6e656c20776173206f70656e65642076696120526f6f74206f726967696e2e5c48726d7053797374656d4368616e6e656c4f70656e656410011873656e646572b9020118506172614964000124726563697069656e74b902011850617261496400015470726f706f7365645f6d61785f636170616369747910010c75333200016470726f706f7365645f6d61785f6d6573736167655f73697a6510010c753332000504d4416e2048524d50206368616e6e656c20776173206f70656e6564206265747765656e2074776f2073797374656d20636861696e732e684f70656e4368616e6e656c4465706f736974735570646174656408011873656e646572b9020118506172614964000124726563697069656e74b9020118506172614964000604a0416e2048524d50206368616e6e656c2773206465706f73697473207765726520757064617465642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574e507106c706f6c6b61646f745f72756e74696d655f70617261636861696e732064697370757465731870616c6c6574144576656e7404045400010c4044697370757465496e6974696174656408009905013443616e646964617465486173680000e907013c446973707574654c6f636174696f6e000004090141206469737075746520686173206265656e20696e697469617465642e205c5b63616e64696461746520686173682c2064697370757465206c6f636174696f6e5c5d4044697370757465436f6e636c7564656408009905013443616e646964617465486173680000ed07013444697370757465526573756c74000108cc4120646973707574652068617320636f6e636c7564656420666f72206f7220616761696e737420612063616e6469646174652eb4605c5b706172612069642c2063616e64696461746520686173682c206469737075746520726573756c745c5d60185265766572740400100144426c6f636b4e756d626572466f723c543e000210fc4120646973707574652068617320636f6e636c7564656420776974682073757065726d616a6f7269747920616761696e737420612063616e6469646174652e0d01426c6f636b20617574686f72732073686f756c64206e6f206c6f6e676572206275696c64206f6e20746f70206f662074686973206865616420616e642073686f756c640101696e7374656164207265766572742074686520626c6f636b2061742074686520676976656e206865696768742e20546869732073686f756c6420626520746865fc6e756d626572206f6620746865206368696c64206f6620746865206c617374206b6e6f776e2076616c696420626c6f636b20696e2074686520636861696e2e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574e9070c6c706f6c6b61646f745f72756e74696d655f70617261636861696e732064697370757465733c446973707574654c6f636174696f6e000108144c6f63616c0000001852656d6f746500010000ed070c6c706f6c6b61646f745f72756e74696d655f70617261636861696e732064697370757465733444697370757465526573756c740001081456616c69640000001c496e76616c696400010000f107105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3c70617261735f7265676973747261721870616c6c6574144576656e74040454000110285265676973746572656408011c706172615f6964b902011850617261496400011c6d616e61676572000130543a3a4163636f756e7449640000003044657265676973746572656404011c706172615f6964b902011850617261496400010020526573657276656408011c706172615f6964b902011850617261496400010c77686f000130543a3a4163636f756e7449640002001c5377617070656408011c706172615f6964b90201185061726149640001206f746865725f6964b9020118506172614964000300047c54686520604576656e746020656e756d206f6620746869732070616c6c6574f507105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e14736c6f74731870616c6c6574144576656e74040454000108384e65774c65617365506572696f640401306c656173655f706572696f641001404c65617365506572696f644f663c543e0000049041206e657720605b6c656173655f706572696f645d6020697320626567696e6e696e672e184c656173656418011c706172615f6964b90201185061726149640001186c6561736572000130543a3a4163636f756e744964000130706572696f645f626567696e1001404c65617365506572696f644f663c543e000130706572696f645f636f756e741001404c65617365506572696f644f663c543e00013865787472615f726573657276656418013042616c616e63654f663c543e000130746f74616c5f616d6f756e7418013042616c616e63654f663c543e00010c35014120706172612068617320776f6e2074686520726967687420746f206120636f6e74696e756f757320736574206f66206c6561736520706572696f647320617320612070617261636861696e2e450146697273742062616c616e636520697320616e7920657874726120616d6f756e74207265736572766564206f6e20746f70206f662074686520706172612773206578697374696e67206465706f7369742eb05365636f6e642062616c616e63652069732074686520746f74616c20616d6f756e742072657365727665642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574f907105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e2061756374696f6e731870616c6c6574144576656e7404045400011c3841756374696f6e537461727465640c013461756374696f6e5f696e64657810013041756374696f6e496e6465780001306c656173655f706572696f641001404c65617365506572696f644f663c543e000118656e64696e67100144426c6f636b4e756d626572466f723c543e0000084901416e2061756374696f6e20737461727465642e2050726f76696465732069747320696e64657820616e642074686520626c6f636b206e756d6265722077686572652069742077696c6c20626567696e20746f1501636c6f736520616e6420746865206669727374206c6561736520706572696f64206f662074686520717561647275706c657420746861742069732061756374696f6e65642e3441756374696f6e436c6f73656404013461756374696f6e5f696e64657810013041756374696f6e496e646578000104b8416e2061756374696f6e20656e6465642e20416c6c2066756e6473206265636f6d6520756e72657365727665642e2052657365727665640c0118626964646572000130543a3a4163636f756e74496400013865787472615f726573657276656418013042616c616e63654f663c543e000130746f74616c5f616d6f756e7418013042616c616e63654f663c543e000208490146756e6473207765726520726573657276656420666f7220612077696e6e696e67206269642e2046697273742062616c616e63652069732074686520657874726120616d6f756e742072657365727665642e505365636f6e642069732074686520746f74616c2e28556e7265736572766564080118626964646572000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e000304290146756e6473207765726520756e72657365727665642073696e636520626964646572206973206e6f206c6f6e676572206163746976652e20605b6269646465722c20616d6f756e745d604852657365727665436f6e66697363617465640c011c706172615f6964b90201185061726149640001186c6561736572000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e0004085501536f6d656f6e6520617474656d7074656420746f206c65617365207468652073616d6520736c6f7420747769636520666f7220612070617261636861696e2e2054686520616d6f756e742069732068656c6420696eb87265736572766520627574206e6f2070617261636861696e20736c6f7420686173206265656e206c65617365642e2c4269644163636570746564140118626964646572000130543a3a4163636f756e74496400011c706172615f6964b9020118506172614964000118616d6f756e7418013042616c616e63654f663c543e00012866697273745f736c6f741001404c65617365506572696f644f663c543e0001246c6173745f736c6f741001404c65617365506572696f644f663c543e000504c841206e65772062696420686173206265656e206163636570746564206173207468652063757272656e742077696e6e65722e3457696e6e696e674f666673657408013461756374696f6e5f696e64657810013041756374696f6e496e646578000130626c6f636b5f6e756d626572100144426c6f636b4e756d626572466f723c543e00060859015468652077696e6e696e67206f6666736574207761732063686f73656e20666f7220616e2061756374696f6e2e20546869732077696c6c206d617020696e746f20746865206057696e6e696e67602073746f72616765106d61702e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574fd07105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e2463726f77646c6f616e1870616c6c6574144576656e740404540001281c4372656174656404011c706172615f6964b90201185061726149640000048c4372656174652061206e65772063726f77646c6f616e696e672063616d706169676e2e2c436f6e74726962757465640c010c77686f000130543a3a4163636f756e74496400012866756e645f696e646578b9020118506172614964000118616d6f756e7418013042616c616e63654f663c543e00010470436f6e747269627574656420746f20612063726f77642073616c652e2057697468647265770c010c77686f000130543a3a4163636f756e74496400012866756e645f696e646578b9020118506172614964000118616d6f756e7418013042616c616e63654f663c543e0002049c57697468647265772066756c6c2062616c616e6365206f66206120636f6e7472696275746f722e445061727469616c6c79526566756e64656404011c706172615f6964b90201185061726149640003082d01546865206c6f616e7320696e20612066756e642068617665206265656e207061727469616c6c7920646973736f6c7665642c20692e652e2074686572652061726520736f6d65206c656674b46f766572206368696c64206b6579732074686174207374696c6c206e65656420746f206265206b696c6c65642e2c416c6c526566756e64656404011c706172615f6964b90201185061726149640004049c416c6c206c6f616e7320696e20612066756e642068617665206265656e20726566756e6465642e24446973736f6c76656404011c706172615f6964b90201185061726149640005044846756e6420697320646973736f6c7665642e3c48616e646c65426964526573756c7408011c706172615f6964b9020118506172614964000118726573756c748801384469737061746368526573756c74000604f454686520726573756c74206f6620747279696e6720746f207375626d69742061206e65772062696420746f2074686520536c6f74732070616c6c65742e1845646974656404011c706172615f6964b9020118506172614964000704c454686520636f6e66696775726174696f6e20746f20612063726f77646c6f616e20686173206265656e206564697465642e2c4d656d6f557064617465640c010c77686f000130543a3a4163636f756e74496400011c706172615f6964b90201185061726149640001106d656d6f34011c5665633c75383e0008046041206d656d6f20686173206265656e20757064617465642e3c4164646564546f4e6577526169736504011c706172615f6964b9020118506172614964000904a0412070617261636861696e20686173206265656e206d6f76656420746f20604e6577526169736560047c54686520604576656e746020656e756d206f6620746869732070616c6c657401080c6c70616c6c65745f73746174655f747269655f6d6967726174696f6e1870616c6c6574144576656e74040454000110204d696772617465640c010c746f7010010c7533320001146368696c6410010c75333200011c636f6d70757465050801404d6967726174696f6e436f6d707574650000083901476976656e206e756d626572206f66206028746f702c206368696c642960206b6579732077657265206d6967726174656420726573706563746976656c792c20776974682074686520676976656e2860636f6d70757465602e1c536c617368656408010c77686f000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e000104b4536f6d65206163636f756e7420676f7420736c61736865642062792074686520676976656e20616d6f756e742e544175746f4d6967726174696f6e46696e697368656400020484546865206175746f206d6967726174696f6e207461736b2066696e69736865642e1848616c7465640401146572726f72090801204572726f723c543e000304ec4d6967726174696f6e20676f742068616c7465642064756520746f20616e206572726f72206f72206d6973732d636f6e66696775726174696f6e2e0470496e6e6572206576656e7473206f6620746869732070616c6c65742e05080c6c70616c6c65745f73746174655f747269655f6d6967726174696f6e1870616c6c6574404d6967726174696f6e436f6d70757465000108185369676e6564000000104175746f0001000009080c6c70616c6c65745f73746174655f747269655f6d6967726174696f6e1870616c6c6574144572726f720404540001183c4d61785369676e65644c696d697473000004804d6178207369676e6564206c696d697473206e6f74207265737065637465642e284b6579546f6f4c6f6e6700011cb441206b657920776173206c6f6e676572207468616e2074686520636f6e66696775726564206d6178696d756d2e00110154686973206d65616e73207468617420746865206d6967726174696f6e2068616c746564206174207468652063757272656e74205b6050726f6772657373605d20616e64010163616e20626520726573756d656420776974682061206c6172676572205b6063726174653a3a436f6e6669673a3a4d61784b65794c656e605d2076616c75652e21015265747279696e672077697468207468652073616d65205b6063726174653a3a436f6e6669673a3a4d61784b65794c656e605d2076616c75652077696c6c206e6f7420776f726b2e45015468652076616c75652073686f756c64206f6e6c7920626520696e6372656173656420746f2061766f696420612073746f72616765206d6967726174696f6e20666f72207468652063757272656e746c799073746f726564205b6063726174653a3a50726f67726573733a3a4c6173744b6579605d2e384e6f74456e6f75676846756e6473000204947375626d697474657220646f6573206e6f74206861766520656e6f7567682066756e64732e284261645769746e65737300030468426164207769746e65737320646174612070726f76696465642e645369676e65644d6967726174696f6e4e6f74416c6c6f77656400040425015369676e6564206d6967726174696f6e206973206e6f7420616c6c6f776564206265636175736520746865206d6178696d756d206c696d6974206973206e6f7420736574207965742e304261644368696c64526f6f7400050460426164206368696c6420726f6f742070726f76696465642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e0d080c2870616c6c65745f78636d1870616c6c6574144576656e7404045400016024417474656d7074656404011c6f7574636f6d651108015078636d3a3a6c61746573743a3a4f7574636f6d65000004a8457865637574696f6e206f6620616e2058434d206d6573736167652077617320617474656d707465642e1053656e741001186f726967696e310101204c6f636174696f6e00012c64657374696e6174696f6e310101204c6f636174696f6e00011c6d657373616765c506011c58636d3c28293e0001286d6573736167655f696404011c58636d486173680001045c412058434d206d657373616765207761732073656e742e48556e6578706563746564526573706f6e73650801186f726967696e310101204c6f636174696f6e00012071756572795f69642c011c5175657279496400020c5901517565727920726573706f6e736520726563656976656420776869636820646f6573206e6f74206d61746368206120726567697374657265642071756572792e2054686973206d61792062652062656361757365206155016d61746368696e6720717565727920776173206e6576657220726567697374657265642c206974206d617920626520626563617573652069742069732061206475706c696361746520726573706f6e73652c206f727062656361757365207468652071756572792074696d6564206f75742e34526573706f6e7365526561647908012071756572795f69642c011c51756572794964000120726573706f6e7365e5060120526573706f6e73650003085d01517565727920726573706f6e736520686173206265656e20726563656976656420616e6420697320726561647920666f722074616b696e672077697468206074616b655f726573706f6e7365602e205468657265206973806e6f2072656769737465726564206e6f74696669636174696f6e2063616c6c2e204e6f7469666965640c012071756572795f69642c011c5175657279496400013070616c6c65745f696e646578080108753800012863616c6c5f696e64657808010875380004085901517565727920726573706f6e736520686173206265656e20726563656976656420616e642071756572792069732072656d6f7665642e205468652072656769737465726564206e6f74696669636174696f6e20686173a86265656e206469737061746368656420616e64206578656375746564207375636365737366756c6c792e404e6f746966794f76657277656967687414012071756572795f69642c011c5175657279496400013070616c6c65745f696e646578080108753800012863616c6c5f696e646578080108753800013461637475616c5f77656967687424011857656967687400014c6d61785f62756467657465645f77656967687424011857656967687400050c4901517565727920726573706f6e736520686173206265656e20726563656976656420616e642071756572792069732072656d6f7665642e205468652072656769737465726564206e6f74696669636174696f6e5901636f756c64206e6f742062652064697370617463686564206265636175736520746865206469737061746368207765696768742069732067726561746572207468616e20746865206d6178696d756d20776569676874e46f726967696e616c6c7920627564676574656420627920746869732072756e74696d6520666f722074686520717565727920726573756c742e4c4e6f7469667944697370617463684572726f720c012071756572795f69642c011c5175657279496400013070616c6c65745f696e646578080108753800012863616c6c5f696e64657808010875380006085501517565727920726573706f6e736520686173206265656e20726563656976656420616e642071756572792069732072656d6f7665642e2054686572652077617320612067656e6572616c206572726f722077697468886469737061746368696e6720746865206e6f74696669636174696f6e2063616c6c2e484e6f746966794465636f64654661696c65640c012071756572795f69642c011c5175657279496400013070616c6c65745f696e646578080108753800012863616c6c5f696e646578080108753800070c5101517565727920726573706f6e736520686173206265656e20726563656976656420616e642071756572792069732072656d6f7665642e205468652064697370617463682077617320756e61626c6520746f20626559016465636f64656420696e746f2061206043616c6c603b2074686973206d696768742062652064756520746f2064697370617463682066756e6374696f6e20686176696e672061207369676e6174757265207768696368946973206e6f742060286f726967696e2c20517565727949642c20526573706f6e736529602e40496e76616c6964526573706f6e6465720c01186f726967696e310101204c6f636174696f6e00012071756572795f69642c011c5175657279496400014465787065637465645f6c6f636174696f6ef90601404f7074696f6e3c4c6f636174696f6e3e00080c5901457870656374656420717565727920726573706f6e736520686173206265656e2072656365697665642062757420746865206f726967696e206c6f636174696f6e206f662074686520726573706f6e736520646f657355016e6f74206d6174636820746861742065787065637465642e205468652071756572792072656d61696e73207265676973746572656420666f722061206c617465722c2076616c69642c20726573706f6e736520746f6c626520726563656976656420616e642061637465642075706f6e2e5c496e76616c6964526573706f6e64657256657273696f6e0801186f726967696e310101204c6f636174696f6e00012071756572795f69642c011c5175657279496400091c5101457870656374656420717565727920726573706f6e736520686173206265656e2072656365697665642062757420746865206578706563746564206f726967696e206c6f636174696f6e20706c6163656420696e4d0173746f7261676520627920746869732072756e74696d652070726576696f75736c792063616e6e6f74206265206465636f6465642e205468652071756572792072656d61696e7320726567697374657265642e0041015468697320697320756e6578706563746564202873696e63652061206c6f636174696f6e20706c6163656420696e2073746f7261676520696e20612070726576696f75736c7920657865637574696e674d0172756e74696d652073686f756c64206265207265616461626c65207072696f7220746f2071756572792074696d656f75742920616e642064616e6765726f75732073696e63652074686520706f737369626c79590176616c696420726573706f6e73652077696c6c2062652064726f707065642e204d616e75616c20676f7665726e616e636520696e74657276656e74696f6e2069732070726f6261626c7920676f696e6720746f2062651c6e65656465642e34526573706f6e736554616b656e04012071756572795f69642c011c51756572794964000a04c8526563656976656420717565727920726573706f6e736520686173206265656e207265616420616e642072656d6f7665642e34417373657473547261707065640c011068617368300110483235360001186f726967696e310101204c6f636174696f6e0001186173736574730d07013c56657273696f6e6564417373657473000b04b8536f6d65206173736574732068617665206265656e20706c6163656420696e20616e20617373657420747261702e5456657273696f6e4368616e67654e6f74696669656410012c64657374696e6174696f6e310101204c6f636174696f6e000118726573756c7410012858636d56657273696f6e000110636f7374d10601184173736574730001286d6573736167655f696404011c58636d48617368000c0c2501416e2058434d2076657273696f6e206368616e6765206e6f74696669636174696f6e206d65737361676520686173206265656e20617474656d7074656420746f2062652073656e742e00e054686520636f7374206f662073656e64696e672069742028626f726e652062792074686520636861696e2920697320696e636c756465642e5c537570706f7274656456657273696f6e4368616e6765640801206c6f636174696f6e310101204c6f636174696f6e00011c76657273696f6e10012858636d56657273696f6e000d08390154686520737570706f727465642076657273696f6e206f662061206c6f636174696f6e20686173206265656e206368616e6765642e2054686973206d69676874206265207468726f75676820616ec06175746f6d61746963206e6f74696669636174696f6e206f722061206d616e75616c20696e74657276656e74696f6e2e504e6f7469667954617267657453656e644661696c0c01206c6f636174696f6e310101204c6f636174696f6e00012071756572795f69642c011c517565727949640001146572726f729106012058636d4572726f72000e0859014120676976656e206c6f636174696f6e2077686963682068616420612076657273696f6e206368616e676520737562736372697074696f6e207761732064726f70706564206f77696e6720746f20616e206572726f727c73656e64696e6720746865206e6f74696669636174696f6e20746f2069742e644e6f746966795461726765744d6967726174696f6e4661696c0801206c6f636174696f6e6901014456657273696f6e65644c6f636174696f6e00012071756572795f69642c011c51756572794964000f0859014120676976656e206c6f636174696f6e2077686963682068616420612076657273696f6e206368616e676520737562736372697074696f6e207761732064726f70706564206f77696e6720746f20616e206572726f72b46d6967726174696e6720746865206c6f636174696f6e20746f206f7572206e65772058434d20666f726d61742e54496e76616c69645175657269657256657273696f6e0801186f726967696e310101204c6f636174696f6e00012071756572795f69642c011c5175657279496400101c5501457870656374656420717565727920726573706f6e736520686173206265656e20726563656976656420627574207468652065787065637465642071756572696572206c6f636174696f6e20706c6163656420696e4d0173746f7261676520627920746869732072756e74696d652070726576696f75736c792063616e6e6f74206265206465636f6465642e205468652071756572792072656d61696e7320726567697374657265642e0041015468697320697320756e6578706563746564202873696e63652061206c6f636174696f6e20706c6163656420696e2073746f7261676520696e20612070726576696f75736c7920657865637574696e674d0172756e74696d652073686f756c64206265207265616461626c65207072696f7220746f2071756572792074696d656f75742920616e642064616e6765726f75732073696e63652074686520706f737369626c79590176616c696420726573706f6e73652077696c6c2062652064726f707065642e204d616e75616c20676f7665726e616e636520696e74657276656e74696f6e2069732070726f6261626c7920676f696e6720746f2062651c6e65656465642e38496e76616c6964517565726965721001186f726967696e310101204c6f636174696f6e00012071756572795f69642c011c5175657279496400014065787065637465645f71756572696572310101204c6f636174696f6e0001506d617962655f61637475616c5f71756572696572f90601404f7074696f6e3c4c6f636174696f6e3e00110c5d01457870656374656420717565727920726573706f6e736520686173206265656e20726563656976656420627574207468652071756572696572206c6f636174696f6e206f662074686520726573706f6e736520646f657351016e6f74206d61746368207468652065787065637465642e205468652071756572792072656d61696e73207265676973746572656420666f722061206c617465722c2076616c69642c20726573706f6e736520746f6c626520726563656976656420616e642061637465642075706f6e2e5056657273696f6e4e6f74696679537461727465640c012c64657374696e6174696f6e310101204c6f636174696f6e000110636f7374d10601184173736574730001286d6573736167655f696404011c58636d486173680012085901412072656d6f746520686173207265717565737465642058434d2076657273696f6e206368616e6765206e6f74696669636174696f6e2066726f6d20757320616e64207765206861766520686f6e6f7265642069742e1d01412076657273696f6e20696e666f726d6174696f6e206d6573736167652069732073656e7420746f207468656d20616e642069747320636f737420697320696e636c756465642e5856657273696f6e4e6f746966795265717565737465640c012c64657374696e6174696f6e310101204c6f636174696f6e000110636f7374d10601184173736574730001286d6573736167655f696404011c58636d486173680013043d015765206861766520726571756573746564207468617420612072656d6f746520636861696e2073656e642075732058434d2076657273696f6e206368616e6765206e6f74696669636174696f6e732e6056657273696f6e4e6f74696679556e7265717565737465640c012c64657374696e6174696f6e310101204c6f636174696f6e000110636f7374d10601184173736574730001286d6573736167655f696404011c58636d4861736800140825015765206861766520726571756573746564207468617420612072656d6f746520636861696e2073746f70732073656e64696e672075732058434d2076657273696f6e206368616e6765386e6f74696669636174696f6e732e204665657350616964080118706179696e67310101204c6f636174696f6e00011066656573d1060118417373657473001504310146656573207765726520706169642066726f6d2061206c6f636174696f6e20666f7220616e206f7065726174696f6e20286f6674656e20666f72207573696e67206053656e6458636d60292e34417373657473436c61696d65640c011068617368300110483235360001186f726967696e310101204c6f636174696f6e0001186173736574730d07013c56657273696f6e6564417373657473001604c0536f6d65206173736574732068617665206265656e20636c61696d65642066726f6d20616e20617373657420747261706056657273696f6e4d6967726174696f6e46696e697368656404011c76657273696f6e10012858636d56657273696f6e00170484412058434d2076657273696f6e206d6967726174696f6e2066696e69736865642e047c54686520604576656e746020656e756d206f6620746869732070616c6c65741108102c73746167696e675f78636d087634187472616974731c4f7574636f6d6500010c20436f6d706c6574650401107573656424011857656967687400000028496e636f6d706c657465080110757365642401185765696768740001146572726f72910601144572726f72000100144572726f720401146572726f72910601144572726f720002000015080c5070616c6c65745f6d6573736167655f71756575651870616c6c6574144576656e740404540001104050726f63657373696e674661696c65640c010869643001104832353604945468652060626c616b65325f323536602068617368206f6620746865206d6573736167652e01186f726967696e410701484d6573736167654f726967696e4f663c543e0464546865207175657565206f6620746865206d6573736167652e01146572726f721908014c50726f636573734d6573736167654572726f721060546865206572726f722074686174206f636375727265642e00490154686973206572726f7220697320707265747479206f70617175652e204d6f72652066696e652d677261696e6564206572726f7273206e65656420746f20626520656d6974746564206173206576656e74736862792074686520604d65737361676550726f636573736f72602e000455014d657373616765206469736361726465642064756520746f20616e206572726f7220696e2074686520604d65737361676550726f636573736f72602028757375616c6c79206120666f726d6174206572726f72292e2450726f63657373656410010869643001104832353604945468652060626c616b65325f323536602068617368206f6620746865206d6573736167652e01186f726967696e410701484d6573736167654f726967696e4f663c543e0464546865207175657565206f6620746865206d6573736167652e012c7765696768745f7573656424011857656967687404c0486f77206d7563682077656967687420776173207573656420746f2070726f6365737320746865206d6573736167652e011c73756363657373780110626f6f6c18885768657468657220746865206d657373616765207761732070726f6365737365642e0049014e6f74652074686174207468697320646f6573206e6f74206d65616e20746861742074686520756e6465726c79696e6720604d65737361676550726f636573736f72602077617320696e7465726e616c6c7935017375636365737366756c2e204974202a736f6c656c792a206d65616e73207468617420746865204d512070616c6c65742077696c6c2074726561742074686973206173206120737563636573734d01636f6e646974696f6e20616e64206469736361726420746865206d6573736167652e20416e7920696e7465726e616c206572726f72206e6565647320746f20626520656d6974746564206173206576656e74736862792074686520604d65737361676550726f636573736f72602e0104544d6573736167652069732070726f6365737365642e484f766572776569676874456e71756575656410010869640401205b75383b2033325d04945468652060626c616b65325f323536602068617368206f6620746865206d6573736167652e01186f726967696e410701484d6573736167654f726967696e4f663c543e0464546865207175657565206f6620746865206d6573736167652e0128706167655f696e64657810012450616765496e64657804605468652070616765206f6620746865206d6573736167652e01346d6573736167655f696e64657810011c543a3a53697a6504a454686520696e646578206f6620746865206d6573736167652077697468696e2074686520706167652e02048c4d65737361676520706c6163656420696e206f7665727765696768742071756575652e28506167655265617065640801186f726967696e410701484d6573736167654f726967696e4f663c543e0458546865207175657565206f662074686520706167652e0114696e64657810012450616765496e646578045854686520696e646578206f662074686520706167652e03045454686973207061676520776173207265617065642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574190810346672616d655f737570706f727418747261697473206d657373616765734c50726f636573734d6573736167654572726f7200011424426164466f726d61740000001c436f72727570740001002c556e737570706f72746564000200284f7665727765696768740400240118576569676874000300145969656c64000400001d080c4470616c6c65745f61737365745f726174651870616c6c6574144576656e7404045400010c404173736574526174654372656174656408012861737365745f6b696e6405010130543a3a41737365744b696e64000110726174654d0701244669786564553132380000004041737365745261746552656d6f76656404012861737365745f6b696e6405010130543a3a41737365744b696e6400010040417373657452617465557064617465640c012861737365745f6b696e6405010130543a3a41737365744b696e6400010c6f6c644d07012446697865645531323800010c6e65774d070124466978656455313238000200047c54686520604576656e746020656e756d206f6620746869732070616c6c6574210808306672616d655f73797374656d14506861736500010c384170706c7945787472696e736963040010010c7533320000003046696e616c697a6174696f6e00010038496e697469616c697a6174696f6e0002000025080000028000290808306672616d655f73797374656d584c61737452756e74696d6555706772616465496e666f0000080130737065635f76657273696f6e1501014c636f6465633a3a436f6d706163743c7533323e000124737065635f6e616d652d08016473705f72756e74696d653a3a52756e74696d65537472696e6700002d080000050200310808306672616d655f73797374656d60436f646555706772616465417574686f72697a6174696f6e0404540000080124636f64655f6861736830011c543a3a48617368000134636865636b5f76657273696f6e780110626f6f6c000035080c306672616d655f73797374656d186c696d69747330426c6f636b5765696768747300000c0128626173655f626c6f636b2401185765696768740001246d61785f626c6f636b2401185765696768740001247065725f636c617373390801845065724469737061746368436c6173733c57656967687473506572436c6173733e000039080c346672616d655f737570706f7274206469737061746368405065724469737061746368436c617373040454013d08000c01186e6f726d616c3d0801045400012c6f7065726174696f6e616c3d080104540001246d616e6461746f72793d0801045400003d080c306672616d655f73797374656d186c696d6974733c57656967687473506572436c6173730000100138626173655f65787472696e7369632401185765696768740001346d61785f65787472696e736963890701384f7074696f6e3c5765696768743e0001246d61785f746f74616c890701384f7074696f6e3c5765696768743e0001207265736572766564890701384f7074696f6e3c5765696768743e000041080c306672616d655f73797374656d186c696d6974732c426c6f636b4c656e677468000004010c6d6178450801545065724469737061746368436c6173733c7533323e000045080c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540110000c01186e6f726d616c1001045400012c6f7065726174696f6e616c100104540001246d616e6461746f72791001045400004908082873705f776569676874733c52756e74696d6544625765696768740000080110726561642c010c75363400011477726974652c010c75363400004d08082873705f76657273696f6e3852756e74696d6556657273696f6e0000200124737065635f6e616d652d08013452756e74696d65537472696e67000124696d706c5f6e616d652d08013452756e74696d65537472696e67000144617574686f72696e675f76657273696f6e10010c753332000130737065635f76657273696f6e10010c753332000130696d706c5f76657273696f6e10010c753332000110617069735108011c4170697356656300014c7472616e73616374696f6e5f76657273696f6e10010c75333200013473746174655f76657273696f6e080108753800005108040c436f7704045401550800040055080000005508000002590800590800000408310310005d080c306672616d655f73797374656d1870616c6c6574144572726f720404540001203c496e76616c6964537065634e616d650000081101546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e63726561736500010841015468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e00020cec4661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e0009014569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f73697465000304fc537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e74000404350154686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e3043616c6c46696c7465726564000504d0546865206f726967696e2066696c7465722070726576656e74207468652063616c6c20746f20626520646973706174636865642e444e6f7468696e67417574686f72697a6564000604584e6f207570677261646520617574686f72697a65642e30556e617574686f72697a656400070494546865207375626d697474656420636f6465206973206e6f7420617574686f72697a65642e046c4572726f7220666f72207468652053797374656d2070616c6c657461080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540165080453000004006d0801185665633c543e0000650804184f7074696f6e0404540169080108104e6f6e6500000010536f6d650400690800000100006908084070616c6c65745f7363686564756c6572245363686564756c656414104e616d6501041043616c6c0195012c426c6f636b4e756d62657201103450616c6c6574734f726967696e01a902244163636f756e7449640100001401206d617962655f69648401304f7074696f6e3c4e616d653e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c9501011043616c6c0001386d617962655f706572696f646963b10101944f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d6265723e3e0001186f726967696ea902013450616c6c6574734f726967696e00006d0800000265080071080c4070616c6c65745f7363686564756c65721870616c6c6574144572726f72040454000114404661696c6564546f5363686564756c65000004644661696c656420746f207363686564756c6520612063616c6c204e6f74466f756e640001047c43616e6e6f742066696e6420746865207363686564756c65642063616c6c2e5c546172676574426c6f636b4e756d626572496e50617374000204a4476976656e2074617267657420626c6f636b206e756d62657220697320696e2074686520706173742e4852657363686564756c654e6f4368616e6765000304f052657363686564756c65206661696c6564206265636175736520697420646f6573206e6f74206368616e6765207363686564756c65642074696d652e144e616d6564000404d0417474656d707420746f207573652061206e6f6e2d6e616d65642066756e6374696f6e206f6e2061206e616d6564207461736b2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e7508083c70616c6c65745f707265696d616765404f6c645265717565737453746174757308244163636f756e74496401001c42616c616e6365011801082c556e72657175657374656408011c6465706f736974c1040150284163636f756e7449642c2042616c616e63652900010c6c656e10010c753332000000245265717565737465640c011c6465706f736974790801704f7074696f6e3c284163636f756e7449642c2042616c616e6365293e000114636f756e7410010c75333200010c6c656e8d02012c4f7074696f6e3c7533323e00010000790804184f7074696f6e04045401c1040108104e6f6e6500000010536f6d650400c10400000100007d08083c70616c6c65745f707265696d616765345265717565737453746174757308244163636f756e7449640100185469636b657401810801082c556e7265717565737465640801187469636b65748508014c284163636f756e7449642c205469636b65742900010c6c656e10010c753332000000245265717565737465640c01306d617962655f7469636b65748908016c4f7074696f6e3c284163636f756e7449642c205469636b6574293e000114636f756e7410010c7533320001246d617962655f6c656e8d02012c4f7074696f6e3c7533323e00010000810814346672616d655f737570706f72741874726169747318746f6b656e732066756e6769626c6544486f6c64436f6e73696465726174696f6e10044100044600045200044400000400180128463a3a42616c616e6365000085080000040800810800890804184f7074696f6e0404540185080108104e6f6e6500000010536f6d650400850800000100008d080000040830100091080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e000095080c3c70616c6c65745f707265696d6167651870616c6c6574144572726f7204045400012018546f6f426967000004a0507265696d61676520697320746f6f206c6172676520746f2073746f7265206f6e2d636861696e2e30416c72656164794e6f746564000104a4507265696d6167652068617320616c7265616479206265656e206e6f746564206f6e2d636861696e2e344e6f74417574686f72697a6564000204c85468652075736572206973206e6f7420617574686f72697a656420746f20706572666f726d207468697320616374696f6e2e204e6f744e6f746564000304fc54686520707265696d6167652063616e6e6f742062652072656d6f7665642073696e636520697420686173206e6f7420796574206265656e206e6f7465642e2452657175657374656400040409014120707265696d616765206d6179206e6f742062652072656d6f766564207768656e20746865726520617265206f75747374616e64696e672072657175657374732e304e6f745265717565737465640005042d0154686520707265696d61676520726571756573742063616e6e6f742062652072656d6f7665642073696e6365206e6f206f75747374616e64696e672072657175657374732065786973742e1c546f6f4d616e7900060455014d6f7265207468616e20604d41585f484153485f555047524144455f42554c4b5f434f554e54602068617368657320776572652072657175657374656420746f206265207570677261646564206174206f6e63652e18546f6f466577000704e4546f6f206665772068617368657320776572652072657175657374656420746f2062652075706772616465642028692e652e207a65726f292e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e99080c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454019d08045300000400a10801185665633c543e00009d0800000408c9012c00a1080000029d0800a5080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540104045300000400a90801185665633c543e0000a9080000020400ad0804184f7074696f6e04045401b1080108104e6f6e6500000010536f6d650400b1080000010000b1080c4473705f636f6e73656e7375735f626162651c646967657374732450726544696765737400010c1c5072696d6172790400b50801405072696d617279507265446967657374000100385365636f6e64617279506c61696e0400bd08015c5365636f6e64617279506c61696e507265446967657374000200305365636f6e646172795652460400c10801545365636f6e6461727956524650726544696765737400030000b5080c4473705f636f6e73656e7375735f626162651c64696765737473405072696d61727950726544696765737400000c013c617574686f726974795f696e64657810015473757065723a3a417574686f72697479496e646578000110736c6f74cd010110536c6f740001347672665f7369676e6174757265b90801305672665369676e61747572650000b908101c73705f636f72651c737232353531390c767266305672665369676e617475726500000801287072655f6f75747075740401305672665072654f757470757400011470726f6f667502012056726650726f6f660000bd080c4473705f636f6e73656e7375735f626162651c646967657374735c5365636f6e64617279506c61696e507265446967657374000008013c617574686f726974795f696e64657810015473757065723a3a417574686f72697479496e646578000110736c6f74cd010110536c6f740000c1080c4473705f636f6e73656e7375735f626162651c64696765737473545365636f6e6461727956524650726544696765737400000c013c617574686f726974795f696e64657810015473757065723a3a417574686f72697479496e646578000110736c6f74cd010110536c6f740001347672665f7369676e6174757265b90801305672665369676e61747572650000c508084473705f636f6e73656e7375735f62616265584261626545706f6368436f6e66696775726174696f6e000008010463d9010128287536342c2075363429000134616c6c6f7765645f736c6f7473dd010130416c6c6f776564536c6f74730000c9080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401cd08045300000400d10801185665633c543e0000cd08000004082c1000d108000002cd0800d5080c2c70616c6c65745f626162651870616c6c6574144572726f7204045400011060496e76616c696445717569766f636174696f6e50726f6f660000043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c69644b65794f776e65727368697050726f6f66000104310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400020415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e50496e76616c6964436f6e66696775726174696f6e0003048c5375626d697474656420636f6e66696775726174696f6e20697320696e76616c69642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ed9080000040c00187800dd080c3870616c6c65745f696e64696365731870616c6c6574144572726f720404540001142c4e6f7441737369676e65640000048c54686520696e64657820776173206e6f7420616c72656164792061737369676e65642e204e6f744f776e6572000104a454686520696e6465782069732061737369676e656420746f20616e6f74686572206163636f756e742e14496e5573650002047054686520696e64657820776173206e6f7420617661696c61626c652e2c4e6f745472616e73666572000304c854686520736f7572636520616e642064657374696e6174696f6e206163636f756e747320617265206964656e746963616c2e245065726d616e656e74000404d054686520696e646578206973207065726d616e656e7420616e64206d6179206e6f742062652066726565642f6368616e6765642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ee1080c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401e508045300000400ed0801185665633c543e0000e5080c3c70616c6c65745f62616c616e6365731474797065732c42616c616e63654c6f636b041c42616c616e63650118000c01086964310301384c6f636b4964656e746966696572000118616d6f756e7418011c42616c616e636500011c726561736f6e73e908011c526561736f6e730000e9080c3c70616c6c65745f62616c616e6365731474797065731c526561736f6e7300010c0c466565000000104d6973630001000c416c6c00020000ed08000002e50800f1080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401f508045300000400f90801185665633c543e0000f5080c3c70616c6c65745f62616c616e6365731474797065732c52657365727665446174610844526573657276654964656e7469666965720131031c42616c616e6365011800080108696431030144526573657276654964656e746966696572000118616d6f756e7418011c42616c616e63650000f908000002f50800fd080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454010109045300000400110901185665633c543e000001090c3c70616c6c65745f62616c616e636573147479706573204964416d6f756e74080849640105091c42616c616e63650118000801086964050901084964000118616d6f756e7418011c42616c616e6365000005090840706f6c6b61646f745f72756e74696d654452756e74696d65486f6c64526561736f6e00010820507265696d61676504000909016c70616c6c65745f707265696d6167653a3a486f6c64526561736f6e000a00485374617465547269654d6967726174696f6e04000d09019c70616c6c65745f73746174655f747269655f6d6967726174696f6e3a3a486f6c64526561736f6e0062000009090c3c70616c6c65745f707265696d6167651870616c6c657428486f6c64526561736f6e00010420507265696d616765000000000d090c6c70616c6c65745f73746174655f747269655f6d6967726174696f6e1870616c6c657428486f6c64526561736f6e0001043c536c617368466f724d69677261746500000000110900000201090015090c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011909045300000400250901185665633c543e000019090c3c70616c6c65745f62616c616e636573147479706573204964416d6f756e7408084964011d091c42616c616e636501180008010869641d0901084964000118616d6f756e7418011c42616c616e636500001d090840706f6c6b61646f745f72756e74696d654c52756e74696d65467265657a65526561736f6e0001043c4e6f6d696e6174696f6e506f6f6c7304002109019470616c6c65745f6e6f6d696e6174696f6e5f706f6f6c733a3a467265657a65526561736f6e0027000021090c5c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c731870616c6c657430467265657a65526561736f6e00010438506f6f6c4d696e42616c616e636500000000250900000219090029090c3c70616c6c65745f62616c616e6365731870616c6c6574144572726f720804540004490001303856657374696e6742616c616e63650000049c56657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c75652e544c69717569646974795265737472696374696f6e73000104c84163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c2e4c496e73756666696369656e7442616c616e63650002047842616c616e636520746f6f206c6f7720746f2073656e642076616c75652e484578697374656e7469616c4465706f736974000304ec56616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369742e34457870656e646162696c697479000404905472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e742e5c4578697374696e6756657374696e675363686564756c65000504cc412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e742e2c446561644163636f756e740006048c42656e6566696369617279206163636f756e74206d757374207072652d65786973742e3c546f6f4d616e795265736572766573000704b84e756d626572206f66206e616d65642072657365727665732065786365656420604d61785265736572766573602e30546f6f4d616e79486f6c6473000804f84e756d626572206f6620686f6c647320657863656564206056617269616e74436f756e744f663c543a3a52756e74696d65486f6c64526561736f6e3e602e38546f6f4d616e79467265657a6573000904984e756d626572206f6620667265657a65732065786365656420604d6178467265657a6573602e4c49737375616e63654465616374697661746564000a0401015468652069737375616e63652063616e6e6f74206265206d6f6469666965642073696e636520697420697320616c72656164792064656163746976617465642e2444656c74615a65726f000b04645468652064656c74612063616e6e6f74206265207a65726f2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e2d09086870616c6c65745f7472616e73616374696f6e5f7061796d656e742052656c6561736573000108245631416e6369656e74000000085632000100003109083870616c6c65745f7374616b696e67345374616b696e674c656467657204045400001401147374617368000130543a3a4163636f756e744964000114746f74616cf4013042616c616e63654f663c543e000118616374697665f4013042616c616e63654f663c543e000124756e6c6f636b696e672d0201f0426f756e6465645665633c556e6c6f636b4368756e6b3c42616c616e63654f663c543e3e2c20543a3a4d6178556e6c6f636b696e674368756e6b733e0001586c65676163795f636c61696d65645f7265776172647335090194426f756e6465645665633c457261496e6465782c20543a3a486973746f727944657074683e000035090c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540110045300000400090201185665633c543e00003909083870616c6c65745f7374616b696e672c4e6f6d696e6174696f6e7304045400000c011c746172676574733d0901b4426f756e6465645665633c543a3a4163636f756e7449642c204d61784e6f6d696e6174696f6e734f663c543e3e0001307375626d69747465645f696e100120457261496e64657800012873757070726573736564780110626f6f6c00003d090c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400f50101185665633c543e00004109083870616c6c65745f7374616b696e6734416374697665457261496e666f0000080114696e646578100120457261496e64657800011473746172744509012c4f7074696f6e3c7536343e0000450904184f7074696f6e040454012c0108104e6f6e6500000010536f6d6504002c00000100004909000004081000004d09082873705f7374616b696e675450616765644578706f737572654d65746164617461041c42616c616e6365011800100114746f74616cf4011c42616c616e636500010c6f776ef4011c42616c616e636500013c6e6f6d696e61746f725f636f756e7410010c753332000128706167655f636f756e7410011050616765000051090000040c100010005509082873705f7374616b696e67304578706f737572655061676508244163636f756e74496401001c42616c616e6365011800080128706167655f746f74616cf4011c42616c616e63650001186f7468657273f801ac5665633c496e646976696475616c4578706f737572653c4163636f756e7449642c2042616c616e63653e3e00005909083870616c6c65745f7374616b696e673c457261526577617264506f696e747304244163636f756e744964010000080114746f74616c10012c526577617264506f696e74000128696e646976696475616c5d09018042547265654d61703c4163636f756e7449642c20526577617264506f696e743e00005d09042042547265654d617008044b0100045601100004006109000000610900000265090065090000040800100069090000026d09006d09083870616c6c65745f7374616b696e6738556e6170706c696564536c61736808244163636f756e74496401001c42616c616e636501180014012476616c696461746f720001244163636f756e74496400010c6f776e18011c42616c616e63650001186f7468657273bd0401645665633c284163636f756e7449642c2042616c616e6365293e0001247265706f7274657273f50101385665633c4163636f756e7449643e0001187061796f757418011c42616c616e63650000710900000408ac180075090c3870616c6c65745f7374616b696e6720736c617368696e6734536c617368696e675370616e7300001001287370616e5f696e6465781001245370616e496e6465780001286c6173745f7374617274100120457261496e6465780001486c6173745f6e6f6e7a65726f5f736c617368100120457261496e6465780001147072696f72090201345665633c457261496e6465783e000079090c3870616c6c65745f7374616b696e6720736c617368696e67285370616e5265636f7264041c42616c616e636501180008011c736c617368656418011c42616c616e6365000120706169645f6f757418011c42616c616e636500007d090000028109008109000004081078008509103870616c6c65745f7374616b696e671870616c6c65741870616c6c6574144572726f72040454000170344e6f74436f6e74726f6c6c6572000004644e6f74206120636f6e74726f6c6c6572206163636f756e742e204e6f745374617368000104504e6f742061207374617368206163636f756e742e34416c7265616479426f6e64656400020460537461736820697320616c726561647920626f6e6465642e34416c726561647950616972656400030474436f6e74726f6c6c657220697320616c7265616479207061697265642e30456d7074795461726765747300040460546172676574732063616e6e6f7420626520656d7074792e384475706c6963617465496e646578000504404475706c696361746520696e6465782e44496e76616c6964536c617368496e64657800060484536c617368207265636f726420696e646578206f7574206f6620626f756e64732e40496e73756666696369656e74426f6e6400070c590143616e6e6f74206861766520612076616c696461746f72206f72206e6f6d696e61746f7220726f6c652c20776974682076616c7565206c657373207468616e20746865206d696e696d756d20646566696e65642062793d01676f7665726e616e6365202873656520604d696e56616c696461746f72426f6e646020616e6420604d696e4e6f6d696e61746f72426f6e6460292e20496620756e626f6e64696e67206973207468651501696e74656e74696f6e2c20606368696c6c6020666972737420746f2072656d6f7665206f6e65277320726f6c652061732076616c696461746f722f6e6f6d696e61746f722e304e6f4d6f72654368756e6b730008049043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e344e6f556e6c6f636b4368756e6b000904a043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e3046756e646564546172676574000a04c8417474656d7074696e6720746f2074617267657420612073746173682074686174207374696c6c206861732066756e64732e48496e76616c6964457261546f526577617264000b0458496e76616c69642065726120746f207265776172642e68496e76616c69644e756d6265724f664e6f6d696e6174696f6e73000c0478496e76616c6964206e756d626572206f66206e6f6d696e6174696f6e732e484e6f74536f72746564416e64556e69717565000d04804974656d7320617265206e6f7420736f7274656420616e6420756e697175652e38416c7265616479436c61696d6564000e0409015265776172647320666f72207468697320657261206861766520616c7265616479206265656e20636c61696d656420666f7220746869732076616c696461746f722e2c496e76616c696450616765000f04844e6f206e6f6d696e61746f7273206578697374206f6e207468697320706167652e54496e636f7272656374486973746f72794465707468001004c0496e636f72726563742070726576696f757320686973746f727920646570746820696e7075742070726f76696465642e58496e636f7272656374536c617368696e675370616e73001104b0496e636f7272656374206e756d626572206f6620736c617368696e67207370616e732070726f76696465642e2042616453746174650012043901496e7465726e616c20737461746520686173206265636f6d6520736f6d65686f7720636f7272757074656420616e6420746865206f7065726174696f6e2063616e6e6f7420636f6e74696e75652e38546f6f4d616e795461726765747300130494546f6f206d616e79206e6f6d696e6174696f6e207461726765747320737570706c6965642e244261645461726765740014043d0141206e6f6d696e6174696f6e207461726765742077617320737570706c69656420746861742077617320626c6f636b6564206f72206f7468657277697365206e6f7420612076616c696461746f722e4043616e6e6f744368696c6c4f74686572001504550154686520757365722068617320656e6f75676820626f6e6420616e6420746875732063616e6e6f74206265206368696c6c656420666f72636566756c6c7920627920616e2065787465726e616c20706572736f6e2e44546f6f4d616e794e6f6d696e61746f72730016084d0154686572652061726520746f6f206d616e79206e6f6d696e61746f727320696e207468652073797374656d2e20476f7665726e616e6365206e6565647320746f2061646a75737420746865207374616b696e67b473657474696e677320746f206b656570207468696e6773207361666520666f72207468652072756e74696d652e44546f6f4d616e7956616c696461746f7273001708550154686572652061726520746f6f206d616e792076616c696461746f722063616e6469646174657320696e207468652073797374656d2e20476f7665726e616e6365206e6565647320746f2061646a75737420746865d47374616b696e672073657474696e677320746f206b656570207468696e6773207361666520666f72207468652072756e74696d652e40436f6d6d697373696f6e546f6f4c6f77001804e0436f6d6d697373696f6e20697320746f6f206c6f772e204d757374206265206174206c6561737420604d696e436f6d6d697373696f6e602e2c426f756e644e6f744d657400190458536f6d6520626f756e64206973206e6f74206d65742e50436f6e74726f6c6c657244657072656361746564001a04010155736564207768656e20617474656d7074696e6720746f20757365206465707265636174656420636f6e74726f6c6c6572206163636f756e74206c6f6769632e4c43616e6e6f74526573746f72654c6564676572001b045843616e6e6f742072657365742061206c65646765722e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e89090c2873705f7374616b696e671c6f6666656e6365384f6666656e636544657461696c7308205265706f727465720100204f6666656e64657201ec000801206f6666656e646572ec01204f6666656e6465720001247265706f7274657273f50101345665633c5265706f727465723e00008d0900000408c034009109000002950900950900000408003d02009909000004089d0934009d090c1c73705f636f72651863727970746f244b65795479706549640000040044011c5b75383b20345d0000a1090c3870616c6c65745f73657373696f6e1870616c6c6574144572726f7204045400011430496e76616c696450726f6f6600000460496e76616c6964206f776e6572736869702070726f6f662e5c4e6f4173736f63696174656456616c696461746f7249640001049c4e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e344475706c6963617465644b65790002046452656769737465726564206475706c6963617465206b65792e184e6f4b657973000304a44e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e244e6f4163636f756e7400040419014b65792073657474696e67206163636f756e74206973206e6f74206c6976652c20736f206974277320696d706f737369626c6520746f206173736f6369617465206b6579732e04744572726f7220666f72207468652073657373696f6e2070616c6c65742ea509083870616c6c65745f6772616e6470612c53746f726564537461746504044e01100110104c6976650000003050656e64696e6750617573650801307363686564756c65645f61741001044e00011464656c61791001044e000100185061757365640002003450656e64696e67526573756d650801307363686564756c65645f61741001044e00011464656c61791001044e00030000a909083870616c6c65745f6772616e6470614c53746f72656450656e64696e674368616e676508044e0110144c696d697400001001307363686564756c65645f61741001044e00011464656c61791001044e0001406e6578745f617574686f726974696573ad09016c426f756e646564417574686f726974794c6973743c4c696d69743e000118666f726365648d0201244f7074696f6e3c4e3e0000ad090c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401d0045300000400cc01185665633c543e0000b1090c3870616c6c65745f6772616e6470611870616c6c6574144572726f7204045400011c2c50617573654661696c65640000080501417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a42865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c65640001081101417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e67000204e8417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e000304bc43616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f66000404310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660005043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400060415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742eb5090c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454014902045300000400b90901185665633c543e0000b909000002490200bd09083c70616c6c65745f74726561737572792050726f706f73616c08244163636f756e74496401001c42616c616e636501180010012070726f706f7365720001244163636f756e74496400011476616c756518011c42616c616e636500012c62656e65666963696172790001244163636f756e744964000110626f6e6418011c42616c616e63650000c1090c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540110045300000400090201185665633c543e0000c509083c70616c6c65745f74726561737572792c5370656e64537461747573142441737365744b696e6401050130417373657442616c616e636501182c42656e65666963696172790169012c426c6f636b4e756d6265720110245061796d656e744964012c0018012861737365745f6b696e640501012441737365744b696e64000118616d6f756e74180130417373657442616c616e636500012c62656e65666963696172796901012c42656e656669636961727900012876616c69645f66726f6d10012c426c6f636b4e756d6265720001246578706972655f617410012c426c6f636b4e756d626572000118737461747573c909015c5061796d656e7453746174653c5061796d656e7449643e0000c909083c70616c6c65745f7472656173757279305061796d656e74537461746504084964012c010c1c50656e64696e6700000024417474656d7074656404010869642c01084964000100184661696c656400020000cd090c3473705f61726974686d65746963287065725f7468696e67731c5065726d696c6c0000040010010c7533320000d10908346672616d655f737570706f72742050616c6c65744964000004003103011c5b75383b20385d0000d5090c3c70616c6c65745f74726561737572791870616c6c6574144572726f7208045400044900013070496e73756666696369656e7450726f706f7365727342616c616e63650000047850726f706f73657227732062616c616e636520697320746f6f206c6f772e30496e76616c6964496e646578000104ac4e6f2070726f706f73616c2c20626f756e7479206f72207370656e64206174207468617420696e6465782e40546f6f4d616e79417070726f76616c7300020480546f6f206d616e7920617070726f76616c7320696e207468652071756575652e58496e73756666696369656e745065726d697373696f6e0003084501546865207370656e64206f726967696e2069732076616c6964206275742074686520616d6f756e7420697420697320616c6c6f77656420746f207370656e64206973206c6f776572207468616e207468654c616d6f756e7420746f206265207370656e742e4c50726f706f73616c4e6f74417070726f7665640004047c50726f706f73616c20686173206e6f74206265656e20617070726f7665642e584661696c6564546f436f6e7665727442616c616e636500050451015468652062616c616e6365206f6620746865206173736574206b696e64206973206e6f7420636f6e7665727469626c6520746f207468652062616c616e6365206f6620746865206e61746976652061737365742e305370656e6445787069726564000604b0546865207370656e6420686173206578706972656420616e642063616e6e6f7420626520636c61696d65642e2c4561726c795061796f7574000704a4546865207370656e64206973206e6f742079657420656c696769626c6520666f72207061796f75742e40416c7265616479417474656d707465640008049c546865207061796d656e742068617320616c7265616479206265656e20617474656d707465642e2c5061796f75744572726f72000904cc54686572652077617320736f6d65206973737565207769746820746865206d656368616e69736d206f66207061796d656e742e304e6f74417474656d70746564000a04a4546865207061796f757420776173206e6f742079657420617474656d707465642f636c61696d65642e30496e636f6e636c7573697665000b04c4546865207061796d656e7420686173206e656974686572206661696c6564206e6f7220737563636565646564207965742e04784572726f7220666f72207468652074726561737572792070616c6c65742ed9090000040800910100dd090c6070616c6c65745f636f6e76696374696f6e5f766f74696e6710766f746518566f74696e67141c42616c616e63650118244163636f756e74496401002c426c6f636b4e756d626572011024506f6c6c496e6465780110204d6178566f7465730001081c43617374696e670400e10901c843617374696e673c42616c616e63652c20426c6f636b4e756d6265722c20506f6c6c496e6465782c204d6178566f7465733e0000002844656c65676174696e670400f90901ac44656c65676174696e673c42616c616e63652c204163636f756e7449642c20426c6f636b4e756d6265723e00010000e1090c6070616c6c65745f636f6e76696374696f6e5f766f74696e6710766f74651c43617374696e67101c42616c616e636501182c426c6f636b4e756d626572011024506f6c6c496e6465780110204d6178566f74657300000c0114766f746573e50901dc426f756e6465645665633c28506f6c6c496e6465782c204163636f756e74566f74653c42616c616e63653e292c204d6178566f7465733e00012c64656c65676174696f6e73f109015044656c65676174696f6e733c42616c616e63653e0001147072696f72f509017c5072696f724c6f636b3c426c6f636b4e756d6265722c2042616c616e63653e0000e5090c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401e909045300000400ed0901185665633c543e0000e9090000040810950200ed09000002e90900f1090c6070616c6c65745f636f6e76696374696f6e5f766f74696e671474797065732c44656c65676174696f6e73041c42616c616e6365011800080114766f74657318011c42616c616e636500011c6361706974616c18011c42616c616e63650000f5090c6070616c6c65745f636f6e76696374696f6e5f766f74696e6710766f7465245072696f724c6f636b082c426c6f636b4e756d62657201101c42616c616e6365011800080010012c426c6f636b4e756d626572000018011c42616c616e63650000f9090c6070616c6c65745f636f6e76696374696f6e5f766f74696e6710766f74652844656c65676174696e670c1c42616c616e63650118244163636f756e74496401002c426c6f636b4e756d62657201100014011c62616c616e636518011c42616c616e63650001187461726765740001244163636f756e744964000128636f6e76696374696f6e9d020128436f6e76696374696f6e00012c64656c65676174696f6e73f109015044656c65676174696f6e733c42616c616e63653e0001147072696f72f509017c5072696f724c6f636b3c426c6f636b4e756d6265722c2042616c616e63653e0000fd090c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401010a045300000400050a01185665633c543e0000010a0000040891011800050a000002010a00090a0c6070616c6c65745f636f6e76696374696f6e5f766f74696e671870616c6c6574144572726f72080454000449000130284e6f744f6e676f696e6700000450506f6c6c206973206e6f74206f6e676f696e672e204e6f74566f746572000104ac54686520676976656e206163636f756e7420646964206e6f7420766f7465206f6e2074686520706f6c6c2e304e6f5065726d697373696f6e000204c8546865206163746f7220686173206e6f207065726d697373696f6e20746f20636f6e647563742074686520616374696f6e2e3c4e6f5065726d697373696f6e5965740003045901546865206163746f7220686173206e6f207065726d697373696f6e20746f20636f6e647563742074686520616374696f6e207269676874206e6f77206275742077696c6c20646f20696e20746865206675747572652e44416c726561647944656c65676174696e6700040488546865206163636f756e7420697320616c72656164792064656c65676174696e672e34416c7265616479566f74696e670005085501546865206163636f756e742063757272656e746c792068617320766f74657320617474616368656420746f20697420616e6420746865206f7065726174696f6e2063616e6e6f74207375636365656420756e74696ce87468657365206172652072656d6f7665642c20656974686572207468726f7567682060756e766f746560206f722060726561705f766f7465602e44496e73756666696369656e7446756e6473000604fc546f6f206869676820612062616c616e6365207761732070726f7669646564207468617420746865206163636f756e742063616e6e6f74206166666f72642e344e6f7444656c65676174696e67000704a0546865206163636f756e74206973206e6f742063757272656e746c792064656c65676174696e672e204e6f6e73656e73650008049444656c65676174696f6e20746f206f6e6573656c66206d616b6573206e6f2073656e73652e3c4d6178566f74657352656163686564000904804d6178696d756d206e756d626572206f6620766f74657320726561636865642e2c436c6173734e6565646564000a04390154686520636c617373206d75737420626520737570706c6965642073696e6365206974206973206e6f7420656173696c792064657465726d696e61626c652066726f6d207468652073746174652e20426164436c617373000b048454686520636c61737320494420737570706c69656420697320696e76616c69642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e0d0a0c4070616c6c65745f7265666572656e6461147479706573385265666572656e64756d496e666f201c547261636b49640191013452756e74696d654f726967696e01a902184d6f6d656e7401101043616c6c0195011c42616c616e636501181454616c6c79017907244163636f756e74496401003c5363686564756c6541646472657373018001181c4f6e676f696e670400110a018d015265666572656e64756d5374617475733c547261636b49642c2052756e74696d654f726967696e2c204d6f6d656e742c2043616c6c2c2042616c616e63652c2054616c6c792c0a4163636f756e7449642c205363686564756c65416464726573732c3e00000020417070726f7665640c001001184d6f6d656e740000190a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e0000190a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e0001002052656a65637465640c001001184d6f6d656e740000190a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e0000190a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e0002002443616e63656c6c65640c001001184d6f6d656e740000190a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e0000190a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e0003002054696d65644f75740c001001184d6f6d656e740000190a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e0000190a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e000400184b696c6c656404001001184d6f6d656e7400050000110a0c4070616c6c65745f7265666572656e6461147479706573405265666572656e64756d537461747573201c547261636b49640191013452756e74696d654f726967696e01a902184d6f6d656e7401101043616c6c0195011c42616c616e636501181454616c6c79017907244163636f756e74496401003c5363686564756c65416464726573730180002c0114747261636b9101011c547261636b49640001186f726967696ea902013452756e74696d654f726967696e00012070726f706f73616c9501011043616c6c000124656e6163746d656e74c5020150446973706174636854696d653c4d6f6d656e743e0001247375626d69747465641001184d6f6d656e740001487375626d697373696f6e5f6465706f736974150a016c4465706f7369743c4163636f756e7449642c2042616c616e63653e0001406465636973696f6e5f6465706f736974190a018c4f7074696f6e3c4465706f7369743c4163636f756e7449642c2042616c616e63653e3e0001206465636964696e671d0a01784f7074696f6e3c4465636964696e675374617475733c4d6f6d656e743e3e00011474616c6c797907011454616c6c79000120696e5f7175657565780110626f6f6c000114616c61726d250a01844f7074696f6e3c284d6f6d656e742c205363686564756c6541646472657373293e0000150a0c4070616c6c65745f7265666572656e64611474797065731c4465706f73697408244163636f756e74496401001c42616c616e636501180008010c77686f0001244163636f756e744964000118616d6f756e7418011c42616c616e63650000190a04184f7074696f6e04045401150a0108104e6f6e6500000010536f6d650400150a00000100001d0a04184f7074696f6e04045401210a0108104e6f6e6500000010536f6d650400210a0000010000210a0c4070616c6c65745f7265666572656e6461147479706573384465636964696e67537461747573042c426c6f636b4e756d62657201100008011473696e636510012c426c6f636b4e756d626572000128636f6e6669726d696e678d02014c4f7074696f6e3c426c6f636b4e756d6265723e0000250a04184f7074696f6e04045401290a0108104e6f6e6500000010536f6d650400290a0000010000290a000004081080002d0a0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401310a045300000400350a01185665633c543e0000310a00000408101800350a000002310a00390a0000023d0a003d0a000004089101410a00410a0c4070616c6c65745f7265666572656e646114747970657324547261636b496e666f081c42616c616e63650118184d6f6d656e740110002401106e616d652d0801302627737461746963207374720001306d61785f6465636964696e6710010c7533320001406465636973696f6e5f6465706f73697418011c42616c616e6365000138707265706172655f706572696f641001184d6f6d656e7400013c6465636973696f6e5f706572696f641001184d6f6d656e74000138636f6e6669726d5f706572696f641001184d6f6d656e740001506d696e5f656e6163746d656e745f706572696f641001184d6f6d656e740001306d696e5f617070726f76616c450a0114437572766500012c6d696e5f737570706f7274450a011443757276650000450a0c4070616c6c65745f7265666572656e646114747970657314437572766500010c404c696e65617244656372656173696e670c01186c656e677468ac011c50657262696c6c000114666c6f6f72ac011c50657262696c6c0001106365696cac011c50657262696c6c000000445374657070656444656372656173696e67100114626567696eac011c50657262696c6c00010c656e64ac011c50657262696c6c00011073746570ac011c50657262696c6c000118706572696f64ac011c50657262696c6c000100285265636970726f63616c0c0118666163746f72490a01204669786564493634000120785f6f6666736574490a01204669786564493634000120795f6f6666736574490a0120466978656449363400020000490a0c3473705f61726974686d657469632c66697865645f706f696e74204669786564493634000004004d0a010c69363400004d0a0000050c00510a0c4070616c6c65745f7265666572656e64611870616c6c6574144572726f72080454000449000134284e6f744f6e676f696e67000004685265666572656e64756d206973206e6f74206f6e676f696e672e284861734465706f736974000104b85265666572656e64756d2773206465636973696f6e206465706f73697420697320616c726561647920706169642e20426164547261636b0002049c54686520747261636b206964656e74696669657220676976656e2077617320696e76616c69642e1046756c6c000304310154686572652061726520616c726561647920612066756c6c20636f6d706c656d656e74206f66207265666572656e646120696e2070726f677265737320666f72207468697320747261636b2e285175657565456d70747900040480546865207175657565206f662074686520747261636b20697320656d7074792e344261645265666572656e64756d000504e4546865207265666572656e64756d20696e6465782070726f766964656420697320696e76616c696420696e207468697320636f6e746578742e2c4e6f7468696e67546f446f000604ac546865726520776173206e6f7468696e6720746f20646f20696e2074686520616476616e63656d656e742e1c4e6f547261636b000704a04e6f20747261636b2065786973747320666f72207468652070726f706f73616c206f726967696e2e28556e66696e69736865640008040101416e79206465706f7369742063616e6e6f7420626520726566756e64656420756e74696c20616674657220746865206465636973696f6e206973206f7665722e304e6f5065726d697373696f6e000904a8546865206465706f73697420726566756e646572206973206e6f7420746865206465706f7369746f722e244e6f4465706f736974000a04cc546865206465706f7369742063616e6e6f7420626520726566756e6465642073696e6365206e6f6e6520776173206d6164652e24426164537461747573000b04d0546865207265666572656e64756d2073746174757320697320696e76616c696420666f722074686973206f7065726174696f6e2e40507265696d6167654e6f744578697374000c047054686520707265696d61676520646f6573206e6f742065786973742e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e550a0c4070616c6c65745f77686974656c6973741870616c6c6574144572726f720404540001144c556e617661696c61626c65507265496d616765000004c854686520707265696d616765206f66207468652063616c6c206861736820636f756c64206e6f74206265206c6f616465642e3c556e6465636f6461626c6543616c6c000104785468652063616c6c20636f756c64206e6f74206265206465636f6465642e60496e76616c696443616c6c5765696768745769746e657373000204ec54686520776569676874206f6620746865206465636f6465642063616c6c2077617320686967686572207468616e20746865207769746e6573732e5043616c6c49734e6f7457686974656c6973746564000304745468652063616c6c20776173206e6f742077686974656c69737465642e5843616c6c416c726561647957686974656c6973746564000404a05468652063616c6c2077617320616c72656164792077686974656c69737465643b204e6f2d4f702e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e590a105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e18636c61696d731870616c6c6574144572726f7204045400011860496e76616c6964457468657265756d5369676e61747572650000046c496e76616c696420457468657265756d207369676e61747572652e405369676e65724861734e6f436c61696d00010478457468657265756d206164647265737320686173206e6f20636c61696d2e4053656e6465724861734e6f436c61696d000204b04163636f756e742049442073656e64696e67207472616e73616374696f6e20686173206e6f20636c61696d2e30506f74556e646572666c6f77000308490154686572652773206e6f7420656e6f75676820696e2074686520706f7420746f20706179206f757420736f6d6520756e76657374656420616d6f756e742e2047656e6572616c6c7920696d706c6965732061306c6f676963206572726f722e40496e76616c696453746174656d656e740004049041206e65656465642073746174656d656e7420776173206e6f7420696e636c756465642e4c56657374656442616c616e6365457869737473000504a4546865206163636f756e7420616c7265616479206861732061207665737465642062616c616e63652e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e5d0a0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401f502045300000400610a01185665633c543e0000610a000002f50200650a083870616c6c65745f76657374696e672052656c656173657300010808563000000008563100010000690a0c3870616c6c65745f76657374696e671870616c6c6574144572726f72040454000114284e6f7456657374696e6700000484546865206163636f756e7420676976656e206973206e6f742076657374696e672e5441744d617856657374696e675363686564756c65730001082501546865206163636f756e7420616c72656164792068617320604d617856657374696e675363686564756c65736020636f756e74206f66207363686564756c657320616e642074687573510163616e6e6f742061646420616e6f74686572206f6e652e20436f6e7369646572206d657267696e67206578697374696e67207363686564756c657320696e206f7264657220746f2061646420616e6f746865722e24416d6f756e744c6f770002040501416d6f756e74206265696e67207472616e7366657272656420697320746f6f206c6f7720746f2063726561746520612076657374696e67207363686564756c652e605363686564756c65496e6465784f75744f66426f756e6473000304d0416e20696e64657820776173206f7574206f6620626f756e6473206f66207468652076657374696e67207363686564756c65732e54496e76616c69645363686564756c65506172616d730004040d014661696c656420746f206372656174652061206e6577207363686564756c65206265636175736520736f6d6520706172616d657465722077617320696e76616c69642e04744572726f7220666f72207468652076657374696e672070616c6c65742e6d0a0c3870616c6c65745f7574696c6974791870616c6c6574144572726f7204045400010430546f6f4d616e7943616c6c730000045c546f6f206d616e792063616c6c7320626174636865642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e710a00000408750a850a00750a0c3c70616c6c65745f6964656e7469747914747970657330526567697374726174696f6e0c1c42616c616e63650118344d61784a756467656d656e747300304964656e74697479496e666f010503000c01286a756467656d656e7473790a01fc426f756e6465645665633c28526567697374726172496e6465782c204a756467656d656e743c42616c616e63653e292c204d61784a756467656d656e74733e00011c6465706f73697418011c42616c616e6365000110696e666f050301304964656e74697479496e666f0000790a0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454017d0a045300000400810a01185665633c543e00007d0a0000040810990300810a0000027d0a00850a04184f7074696f6e04045401ad030108104e6f6e6500000010536f6d650400ad030000010000890a00000408188d0a008d0a0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400f50101185665633c543e0000910a0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401950a0453000004009d0a01185665633c543e0000950a04184f7074696f6e04045401990a0108104e6f6e6500000010536f6d650400990a0000010000990a0c3c70616c6c65745f6964656e7469747914747970657334526567697374726172496e666f0c1c42616c616e63650118244163636f756e74496401001c49644669656c64012c000c011c6163636f756e740001244163636f756e74496400010c66656518011c42616c616e63650001186669656c64732c011c49644669656c6400009d0a000002950a00a10a0c3c70616c6c65745f6964656e746974791474797065734c417574686f7269747950726f70657274696573041853756666697801a50a00080118737566666978a50a0118537566666978000128616c6c6f636174696f6e100128416c6c6f636174696f6e0000a50a0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e0000a90a0c3c70616c6c65745f6964656e746974791870616c6c6574144572726f7204045400016848546f6f4d616e795375624163636f756e74730000045c546f6f206d616e7920737562732d6163636f756e74732e204e6f74466f756e64000104504163636f756e742069736e277420666f756e642e204e6f744e616d6564000204504163636f756e742069736e2774206e616d65642e28456d707479496e64657800030430456d70747920696e6465782e284665654368616e6765640004043c466565206973206368616e6765642e284e6f4964656e74697479000504484e6f206964656e7469747920666f756e642e3c537469636b794a756467656d656e7400060444537469636b79206a756467656d656e742e384a756467656d656e74476976656e000704404a756467656d656e7420676976656e2e40496e76616c69644a756467656d656e7400080448496e76616c6964206a756467656d656e742e30496e76616c6964496e6465780009045454686520696e64657820697320696e76616c69642e34496e76616c6964546172676574000a04585468652074617267657420697320696e76616c69642e44546f6f4d616e7952656769737472617273000b04e84d6178696d756d20616d6f756e74206f66207265676973747261727320726561636865642e2043616e6e6f742061646420616e79206d6f72652e38416c7265616479436c61696d6564000c04704163636f756e7420494420697320616c7265616479206e616d65642e184e6f74537562000d047053656e646572206973206e6f742061207375622d6163636f756e742e204e6f744f776e6564000e04885375622d6163636f756e742069736e2774206f776e65642062792073656e6465722e744a756467656d656e74466f72446966666572656e744964656e74697479000f04d05468652070726f7669646564206a756467656d656e742077617320666f72206120646966666572656e74206964656e746974792e584a756467656d656e745061796d656e744661696c6564001004f84572726f722074686174206f6363757273207768656e20746865726520697320616e20697373756520706179696e6720666f72206a756467656d656e742e34496e76616c6964537566666978001104805468652070726f76696465642073756666697820697320746f6f206c6f6e672e504e6f74557365726e616d65417574686f72697479001204e05468652073656e64657220646f6573206e6f742068617665207065726d697373696f6e20746f206973737565206120757365726e616d652e304e6f416c6c6f636174696f6e001304c454686520617574686f726974792063616e6e6f7420616c6c6f6361746520616e79206d6f726520757365726e616d65732e40496e76616c69645369676e6174757265001404a8546865207369676e6174757265206f6e206120757365726e616d6520776173206e6f742076616c69642e4452657175697265735369676e6174757265001504090153657474696e67207468697320757365726e616d652072657175697265732061207369676e61747572652c20627574206e6f6e65207761732070726f76696465642e3c496e76616c6964557365726e616d65001604b054686520757365726e616d6520646f6573206e6f74206d6565742074686520726571756972656d656e74732e34557365726e616d6554616b656e0017047854686520757365726e616d6520697320616c72656164792074616b656e2e284e6f557365726e616d65001804985468652072657175657374656420757365726e616d6520646f6573206e6f742065786973742e284e6f74457870697265640019042d0154686520757365726e616d652063616e6e6f7420626520666f72636566756c6c792072656d6f76656420626563617573652069742063616e207374696c6c2062652061636365707465642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ead0a00000408b10a1800b10a0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401b50a045300000400b90a01185665633c543e0000b50a083070616c6c65745f70726f78793c50726f7879446566696e6974696f6e0c244163636f756e74496401002450726f78795479706501b9032c426c6f636b4e756d6265720110000c012064656c65676174650001244163636f756e74496400012870726f78795f74797065b903012450726f78795479706500011464656c617910012c426c6f636b4e756d6265720000b90a000002b50a00bd0a00000408c10a1800c10a0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401c50a045300000400c90a01185665633c543e0000c50a083070616c6c65745f70726f787930416e6e6f756e63656d656e740c244163636f756e7449640100104861736801302c426c6f636b4e756d6265720110000c01107265616c0001244163636f756e74496400012463616c6c5f686173683001104861736800011868656967687410012c426c6f636b4e756d6265720000c90a000002c50a00cd0a0c3070616c6c65745f70726f78791870616c6c6574144572726f720404540001201c546f6f4d616e79000004210154686572652061726520746f6f206d616e792070726f786965732072656769737465726564206f7220746f6f206d616e7920616e6e6f756e63656d656e74732070656e64696e672e204e6f74466f756e640001047450726f787920726567697374726174696f6e206e6f7420666f756e642e204e6f7450726f7879000204cc53656e646572206973206e6f7420612070726f7879206f6620746865206163636f756e7420746f2062652070726f786965642e2c556e70726f787961626c650003042101412063616c6c20776869636820697320696e636f6d70617469626c652077697468207468652070726f7879207479706527732066696c7465722077617320617474656d707465642e244475706c69636174650004046c4163636f756e7420697320616c726561647920612070726f78792e304e6f5065726d697373696f6e000504150143616c6c206d6179206e6f74206265206d6164652062792070726f78792062656361757365206974206d617920657363616c617465206974732070726976696c656765732e2c556e616e6e6f756e636564000604d0416e6e6f756e63656d656e742c206966206d61646520617420616c6c2c20776173206d61646520746f6f20726563656e746c792e2c4e6f53656c6650726f78790007046443616e6e6f74206164642073656c662061732070726f78792e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ed10a00000408000400d50a083c70616c6c65745f6d756c7469736967204d756c7469736967102c426c6f636b4e756d62657201101c42616c616e63650118244163636f756e7449640100304d6178417070726f76616c7300001001107768656ec503015854696d65706f696e743c426c6f636b4e756d6265723e00011c6465706f73697418011c42616c616e63650001246465706f7369746f720001244163636f756e744964000124617070726f76616c73d90a018c426f756e6465645665633c4163636f756e7449642c204d6178417070726f76616c733e0000d90a0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400f50101185665633c543e0000dd0a0c3c70616c6c65745f6d756c74697369671870616c6c6574144572726f72040454000138404d696e696d756d5468726573686f6c640000047c5468726573686f6c64206d7573742062652032206f7220677265617465722e3c416c7265616479417070726f766564000104ac43616c6c20697320616c726561647920617070726f7665642062792074686973207369676e61746f72792e444e6f417070726f76616c734e65656465640002049c43616c6c20646f65736e2774206e65656420616e7920286d6f72652920617070726f76616c732e44546f6f4665775369676e61746f72696573000304a854686572652061726520746f6f20666577207369676e61746f7269657320696e20746865206c6973742e48546f6f4d616e795369676e61746f72696573000404ac54686572652061726520746f6f206d616e79207369676e61746f7269657320696e20746865206c6973742e545369676e61746f726965734f75744f664f726465720005040d01546865207369676e61746f7269657320776572652070726f7669646564206f7574206f66206f726465723b20746865792073686f756c64206265206f7264657265642e4c53656e646572496e5369676e61746f726965730006040d015468652073656e6465722077617320636f6e7461696e656420696e20746865206f74686572207369676e61746f726965733b2069742073686f756c646e27742062652e204e6f74466f756e64000704dc4d756c7469736967206f7065726174696f6e206e6f7420666f756e64207768656e20617474656d7074696e6720746f2063616e63656c2e204e6f744f776e65720008042d014f6e6c7920746865206163636f756e742074686174206f726967696e616c6c79206372656174656420746865206d756c74697369672069732061626c6520746f2063616e63656c2069742e2c4e6f54696d65706f696e740009041d014e6f2074696d65706f696e742077617320676976656e2c2079657420746865206d756c7469736967206f7065726174696f6e20697320616c726561647920756e6465727761792e3857726f6e6754696d65706f696e74000a042d014120646966666572656e742074696d65706f696e742077617320676976656e20746f20746865206d756c7469736967206f7065726174696f6e207468617420697320756e6465727761792e4c556e657870656374656454696d65706f696e74000b04f4412074696d65706f696e742077617320676976656e2c20796574206e6f206d756c7469736967206f7065726174696f6e20697320756e6465727761792e3c4d6178576569676874546f6f4c6f77000c04d0546865206d6178696d756d2077656967687420696e666f726d6174696f6e2070726f76696465642077617320746f6f206c6f772e34416c726561647953746f726564000d04a0546865206461746120746f2062652073746f72656420697320616c72656164792073746f7265642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ee10a083c70616c6c65745f626f756e7469657318426f756e74790c244163636f756e74496401001c42616c616e636501182c426c6f636b4e756d62657201100018012070726f706f7365720001244163636f756e74496400011476616c756518011c42616c616e636500010c66656518011c42616c616e636500013c63757261746f725f6465706f73697418011c42616c616e6365000110626f6e6418011c42616c616e6365000118737461747573e50a0190426f756e74795374617475733c4163636f756e7449642c20426c6f636b4e756d6265723e0000e50a083c70616c6c65745f626f756e7469657330426f756e747953746174757308244163636f756e74496401002c426c6f636b4e756d626572011001182050726f706f73656400000020417070726f7665640001001846756e6465640002003c43757261746f7250726f706f73656404011c63757261746f720001244163636f756e7449640003001841637469766508011c63757261746f720001244163636f756e7449640001287570646174655f64756510012c426c6f636b4e756d6265720004003450656e64696e675061796f75740c011c63757261746f720001244163636f756e74496400012c62656e65666963696172790001244163636f756e744964000124756e6c6f636b5f617410012c426c6f636b4e756d62657200050000e90a0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e0000ed0a0c3c70616c6c65745f626f756e746965731870616c6c6574144572726f7208045400044900012c70496e73756666696369656e7450726f706f7365727342616c616e63650000047850726f706f73657227732062616c616e636520697320746f6f206c6f772e30496e76616c6964496e646578000104904e6f2070726f706f73616c206f7220626f756e7479206174207468617420696e6465782e30526561736f6e546f6f4269670002048454686520726561736f6e20676976656e206973206a75737420746f6f206269672e40556e65787065637465645374617475730003048054686520626f756e74792073746174757320697320756e65787065637465642e385265717569726543757261746f720004045c5265717569726520626f756e74792063757261746f722e30496e76616c696456616c756500050454496e76616c696420626f756e74792076616c75652e28496e76616c69644665650006044c496e76616c696420626f756e7479206665652e3450656e64696e675061796f75740007086c4120626f756e7479207061796f75742069732070656e64696e672ef8546f2063616e63656c2074686520626f756e74792c20796f75206d75737420756e61737369676e20616e6420736c617368207468652063757261746f722e245072656d6174757265000804450154686520626f756e746965732063616e6e6f7420626520636c61696d65642f636c6f73656420626563617573652069742773207374696c6c20696e2074686520636f756e74646f776e20706572696f642e504861734163746976654368696c64426f756e7479000904050154686520626f756e74792063616e6e6f7420626520636c6f73656420626563617573652069742068617320616374697665206368696c6420626f756e746965732e34546f6f4d616e79517565756564000a0498546f6f206d616e7920617070726f76616c732061726520616c7265616479207175657565642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ef10a085470616c6c65745f6368696c645f626f756e746965732c4368696c64426f756e74790c244163636f756e74496401001c42616c616e636501182c426c6f636b4e756d626572011000140134706172656e745f626f756e747910012c426f756e7479496e64657800011476616c756518011c42616c616e636500010c66656518011c42616c616e636500013c63757261746f725f6465706f73697418011c42616c616e6365000118737461747573f50a01a44368696c64426f756e74795374617475733c4163636f756e7449642c20426c6f636b4e756d6265723e0000f50a085470616c6c65745f6368696c645f626f756e74696573444368696c64426f756e747953746174757308244163636f756e74496401002c426c6f636b4e756d626572011001101441646465640000003c43757261746f7250726f706f73656404011c63757261746f720001244163636f756e7449640001001841637469766504011c63757261746f720001244163636f756e7449640002003450656e64696e675061796f75740c011c63757261746f720001244163636f756e74496400012c62656e65666963696172790001244163636f756e744964000124756e6c6f636b5f617410012c426c6f636b4e756d62657200030000f90a0c5470616c6c65745f6368696c645f626f756e746965731870616c6c6574144572726f7204045400010c54506172656e74426f756e74794e6f74416374697665000004a454686520706172656e7420626f756e7479206973206e6f7420696e206163746976652073746174652e64496e73756666696369656e74426f756e747942616c616e6365000104e454686520626f756e74792062616c616e6365206973206e6f7420656e6f75676820746f20616464206e6577206368696c642d626f756e74792e50546f6f4d616e794368696c64426f756e746965730002040d014e756d626572206f66206368696c6420626f756e746965732065786365656473206c696d697420604d61784163746976654368696c64426f756e7479436f756e74602e048054686520604572726f726020656e756d206f6620746869732070616c6c65742efd0a089070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f7068617365345265616479536f6c7574696f6e08244163636f756e74496400284d617857696e6e65727300000c0120737570706f727473010b0198426f756e646564537570706f7274733c4163636f756e7449642c204d617857696e6e6572733e00011473636f7265a5040134456c656374696f6e53636f726500011c636f6d70757465b507013c456c656374696f6e436f6d707574650000010b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401b504045300000400b10401185665633c543e0000050b089070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f706861736534526f756e64536e617073686f7408244163636f756e7449640100304461746150726f766964657201090b00080118766f746572730d0b01445665633c4461746150726f76696465723e00011c74617267657473f50101385665633c4163636f756e7449643e0000090b0000040c002c3d09000d0b000002090b00110b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401150b045300000400190b01185665633c543e0000150b0000040ca504101000190b000002150b001d0b0c9070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f7068617365187369676e6564405369676e65645375626d697373696f6e0c244163636f756e74496401001c42616c616e6365011820536f6c7574696f6e01d9030010010c77686f0001244163636f756e74496400011c6465706f73697418011c42616c616e63650001307261775f736f6c7574696f6ed5030154526177536f6c7574696f6e3c536f6c7574696f6e3e00012063616c6c5f66656518011c42616c616e63650000210b0c9070616c6c65745f656c656374696f6e5f70726f76696465725f6d756c74695f70686173651870616c6c6574144572726f7204045400013c6850726544697370617463684561726c795375626d697373696f6e000004645375626d697373696f6e2077617320746f6f206561726c792e6c507265446973706174636857726f6e6757696e6e6572436f756e740001048857726f6e67206e756d626572206f662077696e6e6572732070726573656e7465642e6450726544697370617463685765616b5375626d697373696f6e000204905375626d697373696f6e2077617320746f6f207765616b2c2073636f72652d776973652e3c5369676e6564517565756546756c6c0003044901546865207175657565207761732066756c6c2c20616e642074686520736f6c7574696f6e20776173206e6f7420626574746572207468616e20616e79206f6620746865206578697374696e67206f6e65732e585369676e656443616e6e6f745061794465706f73697400040494546865206f726967696e206661696c656420746f2070617920746865206465706f7369742e505369676e6564496e76616c69645769746e657373000504a05769746e657373206461746120746f20646973706174636861626c6520697320696e76616c69642e4c5369676e6564546f6f4d756368576569676874000604b8546865207369676e6564207375626d697373696f6e20636f6e73756d657320746f6f206d756368207765696768743c4f637743616c6c57726f6e67457261000704984f4357207375626d697474656420736f6c7574696f6e20666f722077726f6e6720726f756e645c4d697373696e67536e617073686f744d65746164617461000804a8536e617073686f74206d657461646174612073686f756c6420657869737420627574206469646e27742e58496e76616c69645375626d697373696f6e496e646578000904d06053656c663a3a696e736572745f7375626d697373696f6e602072657475726e656420616e20696e76616c696420696e6465782e3843616c6c4e6f74416c6c6f776564000a04985468652063616c6c206973206e6f7420616c6c6f776564206174207468697320706f696e742e3846616c6c6261636b4661696c6564000b044c5468652066616c6c6261636b206661696c65642c426f756e644e6f744d6574000c0448536f6d6520626f756e64206e6f74206d657438546f6f4d616e7957696e6e657273000d049c5375626d697474656420736f6c7574696f6e2068617320746f6f206d616e792077696e6e657273645072654469737061746368446966666572656e74526f756e64000e04b453756d697373696f6e2077617320707265706172656420666f72206120646966666572656e7420726f756e642e040d014572726f72206f66207468652070616c6c657420746861742063616e2062652072657475726e656420696e20726573706f6e736520746f20646973706174636865732e250b0c4070616c6c65745f626167735f6c697374106c697374104e6f646508045400044900001401086964000130543a3a4163636f756e74496400011070726576210201504f7074696f6e3c543a3a4163636f756e7449643e0001106e657874210201504f7074696f6e3c543a3a4163636f756e7449643e0001246261675f75707065722c0120543a3a53636f726500011473636f72652c0120543a3a53636f72650000290b0c4070616c6c65745f626167735f6c697374106c6973740c426167080454000449000008011068656164210201504f7074696f6e3c543a3a4163636f756e7449643e0001107461696c210201504f7074696f6e3c543a3a4163636f756e7449643e00002d0b0000022c00310b0c4070616c6c65745f626167735f6c6973741870616c6c6574144572726f72080454000449000104104c6973740400350b01244c6973744572726f72000004b441206572726f7220696e20746865206c69737420696e7465726661636520696d706c656d656e746174696f6e2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e350b0c4070616c6c65745f626167735f6c697374106c697374244c6973744572726f72000110244475706c6963617465000000284e6f7448656176696572000100304e6f74496e53616d65426167000200304e6f64654e6f74466f756e6400030000390b085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7328506f6f6c4d656d626572040454000010011c706f6f6c5f6964100118506f6f6c4964000118706f696e747318013042616c616e63654f663c543e0001706c6173745f7265636f726465645f7265776172645f636f756e7465724d070140543a3a526577617264436f756e746572000138756e626f6e64696e675f657261733d0b01e0426f756e64656442547265654d61703c457261496e6465782c2042616c616e63654f663c543e2c20543a3a4d6178556e626f6e64696e673e00003d0b0c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b011004560118045300000400410b013842547265654d61703c4b2c20563e0000410b042042547265654d617008044b011004560118000400350a000000450b085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c733c426f6e646564506f6f6c496e6e65720404540000140128636f6d6d697373696f6e490b0134436f6d6d697373696f6e3c543e0001386d656d6265725f636f756e74657210010c753332000118706f696e747318013042616c616e63654f663c543e000114726f6c6573550b015c506f6f6c526f6c65733c543a3a4163636f756e7449643e0001147374617465d1040124506f6f6c53746174650000490b085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7328436f6d6d697373696f6e040454000014011c63757272656e74e904017c4f7074696f6e3c2850657262696c6c2c20543a3a4163636f756e744964293e00010c6d61784d0b013c4f7074696f6e3c50657262696c6c3e00012c6368616e67655f72617465510b01bc4f7074696f6e3c436f6d6d697373696f6e4368616e6765526174653c426c6f636b4e756d626572466f723c543e3e3e0001347468726f74746c655f66726f6d8d0201644f7074696f6e3c426c6f636b4e756d626572466f723c543e3e000140636c61696d5f7065726d697373696f6ef50401bc4f7074696f6e3c436f6d6d697373696f6e436c61696d5065726d697373696f6e3c543a3a4163636f756e7449643e3e00004d0b04184f7074696f6e04045401ac0108104e6f6e6500000010536f6d650400ac0000010000510b04184f7074696f6e04045401f1040108104e6f6e6500000010536f6d650400f1040000010000550b085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7324506f6f6c526f6c657304244163636f756e7449640100001001246465706f7369746f720001244163636f756e744964000110726f6f74210201444f7074696f6e3c4163636f756e7449643e0001246e6f6d696e61746f72210201444f7074696f6e3c4163636f756e7449643e00011c626f756e636572210201444f7074696f6e3c4163636f756e7449643e0000590b085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7328526577617264506f6f6c04045400001401706c6173745f7265636f726465645f7265776172645f636f756e7465724d070140543a3a526577617264436f756e74657200016c6c6173745f7265636f726465645f746f74616c5f7061796f75747318013042616c616e63654f663c543e000154746f74616c5f726577617264735f636c61696d656418013042616c616e63654f663c543e000160746f74616c5f636f6d6d697373696f6e5f70656e64696e6718013042616c616e63654f663c543e000160746f74616c5f636f6d6d697373696f6e5f636c61696d656418013042616c616e63654f663c543e00005d0b085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7320537562506f6f6c7304045400000801186e6f5f657261610b0134556e626f6e64506f6f6c3c543e000120776974685f657261650b010101426f756e64656442547265654d61703c457261496e6465782c20556e626f6e64506f6f6c3c543e2c20546f74616c556e626f6e64696e67506f6f6c733c543e3e0000610b085c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c7328556e626f6e64506f6f6c0404540000080118706f696e747318013042616c616e63654f663c543e00011c62616c616e636518013042616c616e63654f663c543e0000650b0c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0110045601610b045300000400690b013842547265654d61703c4b2c20563e0000690b042042547265654d617008044b0110045601610b0004006d0b0000006d0b000002710b00710b0000040810610b00750b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e0000790b0c5c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c731870616c6c6574144572726f7204045400018030506f6f6c4e6f74466f756e6400000488412028626f6e6465642920706f6f6c20696420646f6573206e6f742065786973742e48506f6f6c4d656d6265724e6f74466f756e640001046c416e206163636f756e74206973206e6f742061206d656d6265722e48526577617264506f6f6c4e6f74466f756e640002042101412072657761726420706f6f6c20646f6573206e6f742065786973742e20496e20616c6c206361736573207468697320697320612073797374656d206c6f676963206572726f722e40537562506f6f6c734e6f74466f756e6400030468412073756220706f6f6c20646f6573206e6f742065786973742e644163636f756e7442656c6f6e6773546f4f74686572506f6f6c0004084d01416e206163636f756e7420697320616c72656164792064656c65676174696e6720696e20616e6f7468657220706f6f6c2e20416e206163636f756e74206d6179206f6e6c792062656c6f6e6720746f206f6e653c706f6f6c20617420612074696d652e3846756c6c79556e626f6e64696e670005083d01546865206d656d6265722069732066756c6c7920756e626f6e6465642028616e6420746875732063616e6e6f74206163636573732074686520626f6e64656420616e642072657761726420706f6f6ca8616e796d6f726520746f2c20666f72206578616d706c652c20636f6c6c6563742072657761726473292e444d6178556e626f6e64696e674c696d69740006040901546865206d656d6265722063616e6e6f7420756e626f6e642066757274686572206368756e6b732064756520746f207265616368696e6720746865206c696d69742e4443616e6e6f745769746864726177416e790007044d014e6f6e65206f66207468652066756e64732063616e2062652077697468647261776e2079657420626563617573652074686520626f6e64696e67206475726174696f6e20686173206e6f74207061737365642e444d696e696d756d426f6e644e6f744d6574000814290154686520616d6f756e7420646f6573206e6f74206d65657420746865206d696e696d756d20626f6e6420746f20656974686572206a6f696e206f7220637265617465206120706f6f6c2e005501546865206465706f7369746f722063616e206e6576657220756e626f6e6420746f20612076616c7565206c657373207468616e206050616c6c65743a3a6465706f7369746f725f6d696e5f626f6e64602e205468655d0163616c6c657220646f6573206e6f742068617665206e6f6d696e6174696e67207065726d697373696f6e7320666f722074686520706f6f6c2e204d656d626572732063616e206e6576657220756e626f6e6420746f20616876616c75652062656c6f7720604d696e4a6f696e426f6e64602e304f766572666c6f775269736b0009042101546865207472616e73616374696f6e20636f756c64206e6f742062652065786563757465642064756520746f206f766572666c6f77207269736b20666f722074686520706f6f6c2e344e6f7444657374726f79696e67000a085d014120706f6f6c206d75737420626520696e205b60506f6f6c53746174653a3a44657374726f79696e67605d20696e206f7264657220666f7220746865206465706f7369746f7220746f20756e626f6e64206f7220666f72b86f74686572206d656d6265727320746f206265207065726d697373696f6e6c6573736c7920756e626f6e6465642e304e6f744e6f6d696e61746f72000b04f45468652063616c6c657220646f6573206e6f742068617665206e6f6d696e6174696e67207065726d697373696f6e7320666f722074686520706f6f6c2e544e6f744b69636b65724f7244657374726f79696e67000c043d01456974686572206129207468652063616c6c65722063616e6e6f74206d616b6520612076616c6964206b69636b206f722062292074686520706f6f6c206973206e6f742064657374726f79696e672e1c4e6f744f70656e000d047054686520706f6f6c206973206e6f74206f70656e20746f206a6f696e204d6178506f6f6c73000e04845468652073797374656d206973206d61786564206f7574206f6e20706f6f6c732e384d6178506f6f6c4d656d62657273000f049c546f6f206d616e79206d656d6265727320696e2074686520706f6f6c206f722073797374656d2e4443616e4e6f744368616e676553746174650010048854686520706f6f6c732073746174652063616e6e6f74206265206368616e6765642e54446f65734e6f74486176655065726d697373696f6e001104b85468652063616c6c657220646f6573206e6f742068617665206164657175617465207065726d697373696f6e732e544d65746164617461457863656564734d61784c656e001204ac4d657461646174612065786365656473205b60436f6e6669673a3a4d61784d657461646174614c656e605d24446566656e7369766504007d0b0138446566656e736976654572726f720013083101536f6d65206572726f72206f6363757272656420746861742073686f756c64206e657665722068617070656e2e20546869732073686f756c64206265207265706f7274656420746f20746865306d61696e7461696e6572732e9c5061727469616c556e626f6e644e6f74416c6c6f7765645065726d697373696f6e6c6573736c79001404bc5061727469616c20756e626f6e64696e67206e6f7720616c6c6f776564207065726d697373696f6e6c6573736c792e5c4d6178436f6d6d697373696f6e526573747269637465640015041d0154686520706f6f6c2773206d617820636f6d6d697373696f6e2063616e6e6f742062652073657420686967686572207468616e20746865206578697374696e672076616c75652e60436f6d6d697373696f6e457863656564734d6178696d756d001604ec54686520737570706c69656420636f6d6d697373696f6e206578636565647320746865206d617820616c6c6f77656420636f6d6d697373696f6e2e78436f6d6d697373696f6e45786365656473476c6f62616c4d6178696d756d001704e854686520737570706c69656420636f6d6d697373696f6e206578636565647320676c6f62616c206d6178696d756d20636f6d6d697373696f6e2e64436f6d6d697373696f6e4368616e67655468726f74746c656400180409014e6f7420656e6f75676820626c6f636b732068617665207375727061737365642073696e636520746865206c61737420636f6d6d697373696f6e207570646174652e78436f6d6d697373696f6e4368616e6765526174654e6f74416c6c6f7765640019040101546865207375626d6974746564206368616e67657320746f20636f6d6d697373696f6e206368616e6765207261746520617265206e6f7420616c6c6f7765642e4c4e6f50656e64696e67436f6d6d697373696f6e001a04a05468657265206973206e6f2070656e64696e6720636f6d6d697373696f6e20746f20636c61696d2e584e6f436f6d6d697373696f6e43757272656e74536574001b048c4e6f20636f6d6d697373696f6e2063757272656e7420686173206265656e207365742e2c506f6f6c4964496e557365001c0464506f6f6c2069642063757272656e746c7920696e207573652e34496e76616c6964506f6f6c4964001d049c506f6f6c2069642070726f7669646564206973206e6f7420636f72726563742f757361626c652e4c426f6e64457874726152657374726963746564001e04fc426f6e64696e67206578747261206973207265737472696374656420746f207468652065786163742070656e64696e672072657761726420616d6f756e742e3c4e6f7468696e67546f41646a757374001f04b04e6f20696d62616c616e636520696e20746865204544206465706f73697420666f722074686520706f6f6c2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e7d0b0c5c70616c6c65745f6e6f6d696e6174696f6e5f706f6f6c731870616c6c657438446566656e736976654572726f72000114684e6f74456e6f7567685370616365496e556e626f6e64506f6f6c00000030506f6f6c4e6f74466f756e6400010048526577617264506f6f6c4e6f74466f756e6400020040537562506f6f6c734e6f74466f756e6400030070426f6e64656453746173684b696c6c65645072656d61747572656c7900040000810b0c4c70616c6c65745f666173745f756e7374616b6514747970657338556e7374616b6552657175657374040454000008011c73746173686573850b01d8426f756e6465645665633c28543a3a4163636f756e7449642c2042616c616e63654f663c543e292c20543a3a426174636853697a653e00011c636865636b6564890b0190426f756e6465645665633c457261496e6465782c204d6178436865636b696e673c543e3e0000850b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401c104045300000400bd0401185665633c543e0000890b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540110045300000400090201185665633c543e00008d0b0c4c70616c6c65745f666173745f756e7374616b651870616c6c6574144572726f72040454000118344e6f74436f6e74726f6c6c657200000cb85468652070726f766964656420436f6e74726f6c6c6572206163636f756e7420776173206e6f7420666f756e642e00c054686973206d65616e7320746861742074686520676976656e206163636f756e74206973206e6f7420626f6e6465642e34416c7265616479517565756564000104ac54686520626f6e646564206163636f756e742068617320616c7265616479206265656e207175657565642e384e6f7446756c6c79426f6e646564000204bc54686520626f6e646564206163636f756e74206861732061637469766520756e6c6f636b696e67206368756e6b732e244e6f74517565756564000304b45468652070726f766964656420756e2d7374616b6572206973206e6f7420696e2074686520605175657565602e2c416c72656164794865616400040405015468652070726f766964656420756e2d7374616b657220697320616c726561647920696e20486561642c20616e642063616e6e6f7420646572656769737465722e3843616c6c4e6f74416c6c6f7765640005041d015468652063616c6c206973206e6f7420616c6c6f776564206174207468697320706f696e742062656361757365207468652070616c6c6574206973206e6f74206163746976652e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e910b0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e7334636f6e66696775726174696f6e44486f7374436f6e66696775726174696f6e042c426c6f636b4e756d626572011000b401346d61785f636f64655f73697a6510010c7533320001486d61785f686561645f646174615f73697a6510010c7533320001586d61785f7570776172645f71756575655f636f756e7410010c7533320001546d61785f7570776172645f71756575655f73697a6510010c75333200015c6d61785f7570776172645f6d6573736167655f73697a6510010c7533320001906d61785f7570776172645f6d6573736167655f6e756d5f7065725f63616e64696461746510010c75333200018868726d705f6d61785f6d6573736167655f6e756d5f7065725f63616e64696461746510010c75333200016c76616c69646174696f6e5f757067726164655f636f6f6c646f776e10012c426c6f636b4e756d62657200016076616c69646174696f6e5f757067726164655f64656c617910012c426c6f636b4e756d6265720001506173796e635f6261636b696e675f706172616d73050501484173796e634261636b696e67506172616d730001306d61785f706f765f73697a6510010c7533320001646d61785f646f776e776172645f6d6573736167655f73697a6510010c75333200019068726d705f6d61785f70617261636861696e5f6f7574626f756e645f6368616e6e656c7310010c75333200014c68726d705f73656e6465725f6465706f73697418011c42616c616e636500015868726d705f726563697069656e745f6465706f73697418011c42616c616e636500016468726d705f6368616e6e656c5f6d61785f636170616369747910010c75333200016c68726d705f6368616e6e656c5f6d61785f746f74616c5f73697a6510010c75333200018c68726d705f6d61785f70617261636861696e5f696e626f756e645f6368616e6e656c7310010c75333200017468726d705f6368616e6e656c5f6d61785f6d6573736167655f73697a6510010c75333200013c6578656375746f725f706172616d73090501384578656375746f72506172616d73000154636f64655f726574656e74696f6e5f706572696f6410012c426c6f636b4e756d626572000138636f726574696d655f636f72657310010c7533320001446f6e5f64656d616e645f7265747269657310010c7533320001606f6e5f64656d616e645f71756575655f6d61785f73697a6510010c7533320001886f6e5f64656d616e645f7461726765745f71756575655f7574696c697a6174696f6eac011c50657262696c6c0001646f6e5f64656d616e645f6665655f766172696162696c697479ac011c50657262696c6c0001486f6e5f64656d616e645f626173655f66656518011c42616c616e63650001346f6e5f64656d616e645f74746c10012c426c6f636b4e756d62657200016067726f75705f726f746174696f6e5f6672657175656e637910012c426c6f636b4e756d62657200016470617261735f617661696c6162696c6974795f706572696f6410012c426c6f636b4e756d6265720001507363686564756c696e675f6c6f6f6b616865616410010c75333200015c6d61785f76616c696461746f72735f7065725f636f72658d02012c4f7074696f6e3c7533323e0001386d61785f76616c696461746f72738d02012c4f7074696f6e3c7533323e000138646973707574655f706572696f6410013053657373696f6e496e6465780001a4646973707574655f706f73745f636f6e636c7573696f6e5f616363657074616e63655f706572696f6410012c426c6f636b4e756d6265720001346e6f5f73686f775f736c6f747310010c7533320001406e5f64656c61795f7472616e6368657310010c7533320001687a65726f74685f64656c61795f7472616e6368655f776964746810010c7533320001406e65656465645f617070726f76616c7310010c75333200016072656c61795f7672665f6d6f64756c6f5f73616d706c657310010c7533320001387076665f766f74696e675f74746c10013053657373696f6e496e6465780001806d696e696d756d5f76616c69646174696f6e5f757067726164655f64656c617910012c426c6f636b4e756d6265720001546d696e696d756d5f6261636b696e675f766f74657310010c7533320001346e6f64655f66656174757265733d0501304e6f64654665617475726573000158617070726f76616c5f766f74696e675f706172616d731d050150417070726f76616c566f74696e67506172616d730000950b000002990b00990b0000040810910b009d0b106c706f6c6b61646f745f72756e74696d655f70617261636861696e7334636f6e66696775726174696f6e1870616c6c6574144572726f720404540001043c496e76616c69644e657756616c7565000004dc546865206e65772076616c756520666f72206120636f6e66696775726174696f6e20706172616d6574657220697320696e76616c69642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ea10b000002450500a50b000002410200a90b0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e731873686172656468416c6c6f77656452656c6179506172656e7473547261636b657208104861736801302c426c6f636b4e756d626572011000080118627566666572ad0b015856656344657175653c28486173682c2048617368293e0001346c61746573745f6e756d62657210012c426c6f636b4e756d6265720000ad0b000002b10b00b10b00000408303000b50b0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e7324696e636c7573696f6e68417661696c6162696c6974794269746669656c645265636f726404044e0110000801206269746669656c6439050150417661696c6162696c6974794269746669656c640001307375626d69747465645f61741001044e0000b90b0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e7324696e636c7573696f6e7043616e64696461746550656e64696e67417661696c6162696c6974790804480130044e011000200110636f7265d5070124436f7265496e646578000110686173689905013443616e6469646174654861736800012864657363726970746f725905015843616e64696461746544657363726970746f723c483e000148617661696c6162696c6974795f766f7465733d0501604269745665633c75382c204269744f726465724c7362303e00011c6261636b6572733d0501604269745665633c75382c204269744f726465724c7362303e00014c72656c61795f706172656e745f6e756d6265721001044e0001406261636b65645f696e5f6e756d6265721001044e0001346261636b696e675f67726f7570d907012847726f7570496e6465780000bd0b106c706f6c6b61646f745f72756e74696d655f70617261636861696e7324696e636c7573696f6e1870616c6c6574144572726f720404540001748c556e736f727465644f724475706c696361746556616c696461746f72496e6469636573000004e856616c696461746f7220696e646963657320617265206f7574206f66206f72646572206f7220636f6e7461696e73206475706c6963617465732e98556e736f727465644f724475706c69636174654469737075746553746174656d656e74536574000104f8446973707574652073746174656d656e74207365747320617265206f7574206f66206f72646572206f7220636f6e7461696e206475706c6963617465732e8c556e736f727465644f724475706c69636174654261636b656443616e6469646174657300020419014261636b65642063616e6469646174657320617265206f7574206f66206f726465722028636f726520696e64657829206f7220636f6e7461696e206475706c6963617465732e54556e657870656374656452656c6179506172656e7400030429014120646966666572656e742072656c617920706172656e74207761732070726f766964656420636f6d706172656420746f20746865206f6e2d636861696e2073746f726564206f6e652e4457726f6e674269746669656c6453697a65000404a8417661696c6162696c697479206269746669656c642068617320756e65787065637465642073697a652e404269746669656c64416c6c5a65726f73000504804269746669656c6420636f6e7369737473206f66207a65726f73206f6e6c792e704269746669656c644475706c69636174654f72556e6f7264657265640006044d014d756c7469706c65206269746669656c6473207375626d69747465642062792073616d652076616c696461746f72206f722076616c696461746f7273206f7574206f66206f7264657220627920696e6465782e6456616c696461746f72496e6465784f75744f66426f756e64730007047856616c696461746f7220696e646578206f7574206f6620626f756e64732e60496e76616c69644269746669656c645369676e617475726500080444496e76616c6964207369676e617475726550556e7363686564756c656443616e646964617465000904ac43616e646964617465207375626d6974746564206275742070617261206e6f74207363686564756c65642e8043616e6469646174655363686564756c65644265666f72655061726146726565000a04310143616e646964617465207363686564756c656420646573706974652070656e64696e672063616e64696461746520616c7265616479206578697374696e6720666f722074686520706172612e4c5363686564756c65644f75744f664f72646572000b04745363686564756c656420636f726573206f7574206f66206f726465722e404865616444617461546f6f4c61726765000c04a448656164206461746120657863656564732074686520636f6e66696775726564206d6178696d756d2e505072656d6174757265436f646555706772616465000d0464436f64652075706772616465207072656d61747572656c792e3c4e6577436f6465546f6f4c61726765000e04604f757470757420636f646520697320746f6f206c6172676554446973616c6c6f77656452656c6179506172656e74000f08ec5468652063616e64696461746527732072656c61792d706172656e7420776173206e6f7420616c6c6f7765642e204569746865722069742077617325016e6f7420726563656e7420656e6f756768206f72206974206469646e277420616476616e6365206261736564206f6e20746865206c6173742070617261636861696e20626c6f636b2e44496e76616c696441737369676e6d656e7400100815014661696c656420746f20636f6d707574652067726f757020696e64657820666f722074686520636f72653a206569746865722069742773206f7574206f6620626f756e6473e86f72207468652072656c617920706172656e7420646f65736e27742062656c6f6e6720746f207468652063757272656e742073657373696f6e2e44496e76616c696447726f7570496e6465780011049c496e76616c69642067726f757020696e64657820696e20636f72652061737369676e6d656e742e4c496e73756666696369656e744261636b696e6700120490496e73756666696369656e7420286e6f6e2d6d616a6f7269747929206261636b696e672e38496e76616c69644261636b696e67001304e4496e76616c69642028626164207369676e61747572652c20756e6b6e6f776e2076616c696461746f722c206574632e29206261636b696e672e444e6f74436f6c6c61746f725369676e656400140468436f6c6c61746f7220646964206e6f74207369676e20506f562e6856616c69646174696f6e44617461486173684d69736d61746368001504c45468652076616c69646174696f6e2064617461206861736820646f6573206e6f74206d617463682065787065637465642e80496e636f7272656374446f776e776172644d65737361676548616e646c696e67001604d854686520646f776e77617264206d657373616765207175657565206973206e6f742070726f63657373656420636f72726563746c792e54496e76616c69645570776172644d657373616765730017041d014174206c65617374206f6e6520757077617264206d6573736167652073656e7420646f6573206e6f7420706173732074686520616363657074616e63652063726974657269612e6048726d7057617465726d61726b4d697368616e646c696e6700180411015468652063616e646964617465206469646e277420666f6c6c6f77207468652072756c6573206f662048524d502077617465726d61726b20616476616e63656d656e742e4c496e76616c69644f7574626f756e6448726d70001904d45468652048524d50206d657373616765732073656e74206279207468652063616e646964617465206973206e6f742076616c69642e64496e76616c696456616c69646174696f6e436f646548617368001a04dc5468652076616c69646174696f6e20636f64652068617368206f66207468652063616e646964617465206973206e6f742076616c69642e4050617261486561644d69736d61746368001b0855015468652060706172615f6865616460206861736820696e207468652063616e6469646174652064657363726970746f7220646f65736e2774206d61746368207468652068617368206f66207468652061637475616c7470617261206865616420696e2074686520636f6d6d69746d656e74732e6c4269746669656c645265666572656e6365734672656564436f7265001c0ca041206269746669656c642074686174207265666572656e636573206120667265656420636f72652cb865697468657220696e74656e74696f6e616c6c79206f722061732070617274206f66206120636f6e636c7564656440696e76616c696420646973707574652e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ec10b0c4c706f6c6b61646f745f7072696d6974697665730876364c536372617065644f6e436861696e566f7465730404480130000c011c73657373696f6e10013053657373696f6e496e6465780001806261636b696e675f76616c696461746f72735f7065725f63616e646964617465c50b011d015665633c2843616e646964617465526563656970743c483e2c205665633c2856616c696461746f72496e6465782c2056616c69646974794174746573746174696f6e293e290a3e0001206469737075746573910501604d756c74694469737075746553746174656d656e745365740000c50b000002c90b00c90b00000408d107cd0b00cd0b000002d10b00d10b0000040845058d0500d50b106c706f6c6b61646f745f72756e74696d655f70617261636861696e733870617261735f696e686572656e741870616c6c6574144572726f7204045400012464546f6f4d616e79496e636c7573696f6e496e686572656e7473000004cc496e636c7573696f6e20696e686572656e742063616c6c6564206d6f7265207468616e206f6e63652070657220626c6f636b2e4c496e76616c6964506172656e7448656164657200010855015468652068617368206f6620746865207375626d697474656420706172656e742068656164657220646f65736e277420636f72726573706f6e6420746f2074686520736176656420626c6f636b2068617368206f662c74686520706172656e742e6443616e646964617465436f6e636c75646564496e76616c6964000204b844697370757465642063616e64696461746520746861742077617320636f6e636c7564656420696e76616c69642e48496e686572656e744f7665727765696768740003040901546865206461746120676976656e20746f2074686520696e686572656e742077696c6c20726573756c7420696e20616e206f76657277656967687420626c6f636b2e944469737075746553746174656d656e7473556e736f727465644f724475706c696361746573000404bc546865206f72646572696e67206f6620646973707574652073746174656d656e74732077617320696e76616c69642e3844697370757465496e76616c6964000504804120646973707574652073746174656d656e742077617320696e76616c69642e404261636b6564427944697361626c6564000604b8412063616e64696461746520776173206261636b656420627920612064697361626c65642076616c696461746f725c4261636b65644f6e556e7363686564756c6564436f72650007040101412063616e64696461746520776173206261636b6564206576656e2074686f756768207468652070617261696420776173206e6f74207363686564756c65642e50556e7363686564756c656443616e64696461746500080474546f6f206d616e792063616e6469646174657320737570706c6965642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ed90b000002a10b00dd0b000002e10b00e10b106c706f6c6b61646f745f72756e74696d655f70617261636861696e73247363686564756c65721870616c6c657430436f72654f6363757069656404044e0110010810467265650000001450617261730400e50b01345061726173456e7472793c4e3e00010000e50b106c706f6c6b61646f745f72756e74696d655f70617261636861696e73247363686564756c65721870616c6c6574285061726173456e74727904044e0110000c012861737369676e6d656e74e90b012841737369676e6d656e74000154617661696c6162696c6974795f74696d656f75747310010c75333200010c74746c1001044e0000e90b106c706f6c6b61646f745f72756e74696d655f70617261636861696e73247363686564756c657218636f6d6d6f6e2841737369676e6d656e7400010810506f6f6c08011c706172615f6964b9020118506172614964000128636f72655f696e646578d5070124436f7265496e6465780000001042756c6b0400b902011850617261496400010000ed0b042042547265654d617008044b01d507045601f10b000400f50b000000f10b000002e50b00f50b000002f90b00f90b00000408d507f10b00fd0b0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e731470617261735c507666436865636b416374697665566f74655374617465042c426c6f636b4e756d626572011000140130766f7465735f6163636570743d0501604269745665633c75382c204269744f726465724c7362303e000130766f7465735f72656a6563743d0501604269745665633c75382c204269744f726465724c7362303e00010c61676510013053657373696f6e496e646578000128637265617465645f617410012c426c6f636b4e756d626572000118636175736573010c017c5665633c507666436865636b43617573653c426c6f636b4e756d6265723e3e0000010c000002050c00050c0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e7314706172617334507666436865636b4361757365042c426c6f636b4e756d62657201100108284f6e626f617264696e670400b90201185061726149640000001c557067726164650c01086964b902011850617261496400012c696e636c756465645f617410012c426c6f636b4e756d6265720001307365745f676f5f6168656164090c0128536574476f416865616400010000090c0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e7314706172617328536574476f41686561640001080c596573000000084e6f000100000d0c000002650500110c000002b90200150c0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e7314706172617334506172614c6966656379636c6500011c284f6e626f617264696e6700000028506172617468726561640001002450617261636861696e0002004c557067726164696e675061726174687265616400030050446f776e67726164696e6750617261636861696e000400544f6666626f617264696e6750617261746872656164000500504f6666626f617264696e6750617261636861696e00060000190c00000408b90210001d0c0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e73147061726173405061726150617374436f64654d65746104044e011000080134757067726164655f74696d6573210c01605665633c5265706c6163656d656e7454696d65733c4e3e3e00012c6c6173745f7072756e65648d0201244f7074696f6e3c4e3e0000210c000002250c00250c0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e73147061726173405265706c6163656d656e7454696d657304044e01100008012c65787065637465645f61741001044e0001306163746976617465645f61741001044e0000290c000002190c002d0c0c4c706f6c6b61646f745f7072696d6974697665730876363855706772616465476f41686561640001081441626f72740000001c476f416865616400010000310c0c4c706f6c6b61646f745f7072696d69746976657308763648557067726164655265737472696374696f6e0001041c50726573656e7400000000350c0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e731470617261733c5061726147656e657369734172677300000c013067656e657369735f6865616485050120486561644461746100013c76616c69646174696f6e5f636f64658105013856616c69646174696f6e436f6465000124706172615f6b696e64780120506172614b696e640000390c106c706f6c6b61646f745f72756e74696d655f70617261636861696e731470617261731870616c6c6574144572726f72040454000130344e6f74526567697374657265640000049450617261206973206e6f74207265676973746572656420696e206f75722073797374656d2e3443616e6e6f744f6e626f6172640001041501506172612063616e6e6f74206265206f6e626f6172646564206265636175736520697420697320616c726561647920747261636b6564206279206f75722073797374656d2e3843616e6e6f744f6666626f6172640002049c506172612063616e6e6f74206265206f6666626f617264656420617420746869732074696d652e3443616e6e6f7455706772616465000304d4506172612063616e6e6f7420626520757067726164656420746f2061206c6561736520686f6c64696e672070617261636861696e2e3c43616e6e6f74446f776e6772616465000404d0506172612063616e6e6f7420626520646f776e67726164656420746f20616e206f6e2d64656d616e642070617261636861696e2e58507666436865636b53746174656d656e745374616c65000504b05468652073746174656d656e7420666f7220505646207072652d636865636b696e67206973207374616c652e5c507666436865636b53746174656d656e74467574757265000604ec5468652073746174656d656e7420666f7220505646207072652d636865636b696e6720697320666f722061206675747572652073657373696f6e2e84507666436865636b56616c696461746f72496e6465784f75744f66426f756e6473000704a4436c61696d65642076616c696461746f7220696e646578206973206f7574206f6620626f756e64732e60507666436865636b496e76616c69645369676e6174757265000804c8546865207369676e617475726520666f722074686520505646207072652d636865636b696e6720697320696e76616c69642e48507666436865636b446f75626c65566f7465000904b054686520676976656e2076616c696461746f7220616c7265616479206861732063617374206120766f74652e58507666436865636b5375626a656374496e76616c6964000a04f454686520676976656e2050564620646f6573206e6f7420657869737420617420746865206d6f6d656e74206f662070726f63657373206120766f74652e4443616e6e6f7455706772616465436f6465000b04cc50617261636861696e2063616e6e6f742063757272656e746c79207363686564756c65206120636f646520757067726164652e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e3d0c000002410c00410c0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e732c696e697469616c697a657254427566666572656453657373696f6e4368616e676500000c012876616c696461746f7273a50b01405665633c56616c696461746f7249643e000118717565756564a50b01405665633c56616c696461746f7249643e00013473657373696f6e5f696e64657810013053657373696f6e496e6465780000450c000002490c00490c0860706f6c6b61646f745f636f72655f7072696d69746976657358496e626f756e64446f776e776172644d657373616765042c426c6f636b4e756d62657201100008011c73656e745f617410012c426c6f636b4e756d62657200010c6d736734013c446f776e776172644d65737361676500004d0c0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e731068726d705848726d704f70656e4368616e6e656c526571756573740000180124636f6e6669726d6564780110626f6f6c0001105f61676510013053657373696f6e496e64657800013873656e6465725f6465706f73697418011c42616c616e63650001406d61785f6d6573736167655f73697a6510010c7533320001306d61785f636170616369747910010c7533320001386d61785f746f74616c5f73697a6510010c7533320000510c000002c50500550c0c6c706f6c6b61646f745f72756e74696d655f70617261636861696e731068726d702c48726d704368616e6e656c00002001306d61785f636170616369747910010c7533320001386d61785f746f74616c5f73697a6510010c7533320001406d61785f6d6573736167655f73697a6510010c7533320001246d73675f636f756e7410010c753332000128746f74616c5f73697a6510010c7533320001206d71635f68656164c90201304f7074696f6e3c486173683e00013873656e6465725f6465706f73697418011c42616c616e6365000144726563697069656e745f6465706f73697418011c42616c616e63650000590c0000025d0c005d0c0860706f6c6b61646f745f636f72655f7072696d69746976657348496e626f756e6448726d704d657373616765042c426c6f636b4e756d62657201100008011c73656e745f617410012c426c6f636b4e756d6265720001106461746134015073705f7374643a3a7665633a3a5665633c75383e0000610c000002650c00650c0000040810110c00690c106c706f6c6b61646f745f72756e74696d655f70617261636861696e731068726d701870616c6c6574144572726f72040454000150544f70656e48726d704368616e6e656c546f53656c66000004c45468652073656e64657220747269656420746f206f70656e2061206368616e6e656c20746f207468656d73656c7665732e7c4f70656e48726d704368616e6e656c496e76616c6964526563697069656e740001048854686520726563697069656e74206973206e6f7420612076616c696420706172612e6c4f70656e48726d704368616e6e656c5a65726f43617061636974790002047c54686520726571756573746564206361706163697479206973207a65726f2e8c4f70656e48726d704368616e6e656c4361706163697479457863656564734c696d6974000304c05468652072657175657374656420636170616369747920657863656564732074686520676c6f62616c206c696d69742e784f70656e48726d704368616e6e656c5a65726f4d65737361676553697a65000404a054686520726571756573746564206d6178696d756d206d6573736167652073697a6520697320302e984f70656e48726d704368616e6e656c4d65737361676553697a65457863656564734c696d69740005042901546865206f70656e20726571756573742072657175657374656420746865206d6573736167652073697a65207468617420657863656564732074686520676c6f62616c206c696d69742e704f70656e48726d704368616e6e656c416c726561647945786973747300060468546865206368616e6e656c20616c7265616479206578697374737c4f70656e48726d704368616e6e656c416c7265616479526571756573746564000704d0546865726520697320616c72656164792061207265717565737420746f206f70656e207468652073616d65206368616e6e656c2e704f70656e48726d704368616e6e656c4c696d697445786365656465640008041d015468652073656e64657220616c72656164792068617320746865206d6178696d756d206e756d626572206f6620616c6c6f776564206f7574626f756e64206368616e6e656c732e7041636365707448726d704368616e6e656c446f65736e744578697374000904e0546865206368616e6e656c2066726f6d207468652073656e64657220746f20746865206f726967696e20646f65736e27742065786973742e8441636365707448726d704368616e6e656c416c7265616479436f6e6669726d6564000a0484546865206368616e6e656c20697320616c726561647920636f6e6669726d65642e7841636365707448726d704368616e6e656c4c696d69744578636565646564000b04250154686520726563697069656e7420616c72656164792068617320746865206d6178696d756d206e756d626572206f6620616c6c6f77656420696e626f756e64206368616e6e656c732e70436c6f736548726d704368616e6e656c556e617574686f72697a6564000c045501546865206f726967696e20747269657320746f20636c6f73652061206368616e6e656c207768657265206974206973206e656974686572207468652073656e646572206e6f722074686520726563697069656e742e6c436c6f736548726d704368616e6e656c446f65736e744578697374000d049c546865206368616e6e656c20746f20626520636c6f73656420646f65736e27742065786973742e7c436c6f736548726d704368616e6e656c416c7265616479556e646572776179000e04bc546865206368616e6e656c20636c6f7365207265717565737420697320616c7265616479207265717565737465642e8443616e63656c48726d704f70656e4368616e6e656c556e617574686f72697a6564000f045d0143616e63656c696e6720697320726571756573746564206279206e656974686572207468652073656e646572206e6f7220726563697069656e74206f6620746865206f70656e206368616e6e656c20726571756573742e684f70656e48726d704368616e6e656c446f65736e7445786973740010047c546865206f70656e207265717565737420646f65736e27742065786973742e7c4f70656e48726d704368616e6e656c416c7265616479436f6e6669726d65640011042d0143616e6e6f742063616e63656c20616e2048524d50206f70656e206368616e6e656c2072657175657374206265636175736520697420697320616c726561647920636f6e6669726d65642e3057726f6e675769746e6573730012048c5468652070726f7669646564207769746e65737320646174612069732077726f6e672e704368616e6e656c4372656174696f6e4e6f74417574686f72697a6564001304e8546865206368616e6e656c206265747765656e2074686573652074776f20636861696e732063616e6e6f7420626520617574686f72697a65642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e6d0c000002450200710c0c4c706f6c6b61646f745f7072696d6974697665730876362c53657373696f6e496e666f00003401606163746976655f76616c696461746f725f696e6469636573a10b014c5665633c56616c696461746f72496e6465783e00012c72616e646f6d5f736565640401205b75383b2033325d000138646973707574655f706572696f6410013053657373696f6e496e64657800012876616c696461746f7273750c019c496e64657865645665633c56616c696461746f72496e6465782c2056616c696461746f7249643e000138646973636f766572795f6b657973b90901645665633c417574686f72697479446973636f7665727949643e00013c61737369676e6d656e745f6b6579736d0c01445665633c41737369676e6d656e7449643e00014076616c696461746f725f67726f757073790c01ac496e64657865645665633c47726f7570496e6465782c205665633c56616c696461746f72496e6465783e3e00011c6e5f636f72657310010c7533320001687a65726f74685f64656c61795f7472616e6368655f776964746810010c75333200016072656c61795f7672665f6d6f64756c6f5f73616d706c657310010c7533320001406e5f64656c61795f7472616e6368657310010c7533320001346e6f5f73686f775f736c6f747310010c7533320001406e65656465645f617070726f76616c7310010c7533320000750c0c4c706f6c6b61646f745f7072696d69746976657308763628496e646578656456656308044b0145050456014102000400a50b01185665633c563e0000790c0c4c706f6c6b61646f745f7072696d69746976657308763628496e646578656456656308044b01d907045601a10b000400d90b01185665633c563e00007d0c0000040810990500810c0c4c706f6c6b61646f745f7072696d6974697665730876363044697370757465537461746504044e01100010013876616c696461746f72735f666f723d05017c4269745665633c75382c206269747665633a3a6f726465723a3a4c7362303e00014876616c696461746f72735f616761696e73743d05017c4269745665633c75382c206269747665633a3a6f726465723a3a4c7362303e00011473746172741001044e000130636f6e636c756465645f61748d0201244f7074696f6e3c4e3e0000850c04204254726565536574040454014505000400a10b000000890c106c706f6c6b61646f745f72756e74696d655f70617261636861696e732064697370757465731870616c6c6574144572726f72040454000124744475706c69636174654469737075746553746174656d656e7453657473000004a84475706c696361746520646973707574652073746174656d656e7420736574732070726f76696465642e5c416e6369656e744469737075746553746174656d656e740001048c416e6369656e7420646973707574652073746174656d656e742070726f76696465642e6456616c696461746f72496e6465784f75744f66426f756e6473000204e856616c696461746f7220696e646578206f6e2073746174656d656e74206973206f7574206f6620626f756e647320666f722073657373696f6e2e40496e76616c69645369676e61747572650003047c496e76616c6964207369676e6174757265206f6e2073746174656d656e742e484475706c696361746553746174656d656e74000404cc56616c696461746f7220766f7465207375626d6974746564206d6f7265207468616e206f6e636520746f20646973707574652e4853696e676c65536964656444697370757465000504c441206469737075746520776865726520746865726520617265206f6e6c7920766f746573206f6e206f6e6520736964652e3c4d616c6963696f75734261636b65720006049c41206469737075746520766f74652066726f6d2061206d616c6963696f7573206261636b65722e4c4d697373696e674261636b696e67566f746573000704e04e6f206261636b696e6720766f74657320776572652070726f766964657320616c6f6e6720646973707574652073746174656d656e74732e48556e636f6e6669726d656444697370757465000804b0556e636f6e6669726d656420646973707574652073746174656d656e7420736574732070726f76696465642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e8d0c104c706f6c6b61646f745f7072696d69746976657308763620736c617368696e673850656e64696e67536c617368657300000801106b657973910c019442547265654d61703c56616c696461746f72496e6465782c2056616c696461746f7249643e0001106b696e64d905014c536c617368696e674f6666656e63654b696e640000910c042042547265654d617008044b0145050456014102000400950c000000950c000002990c00990c0000040845054102009d0c146c706f6c6b61646f745f72756e74696d655f70617261636861696e7320646973707574657320736c617368696e671870616c6c6574144572726f7204045400011860496e76616c69644b65794f776e65727368697050726f6f660000048c546865206b6579206f776e6572736869702070726f6f6620697320696e76616c69642e4c496e76616c696453657373696f6e496e646578000104a05468652073657373696f6e20696e64657820697320746f6f206f6c64206f7220696e76616c69642e50496e76616c696443616e64696461746548617368000204785468652063616e646964617465206861736820697320696e76616c69642e54496e76616c696456616c696461746f72496e64657800030801015468657265206973206e6f2070656e64696e6720736c61736820666f722074686520676976656e2076616c696461746f7220696e64657820616e642074696d6514736c6f742e6056616c696461746f72496e64657849644d69736d61746368000404d05468652076616c696461746f7220696e64657820646f6573206e6f74206d61746368207468652076616c696461746f722069642e5c4475706c6963617465536c617368696e675265706f72740005040d0154686520676976656e20736c617368696e67207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ea10c0c5c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3c70617261735f7265676973747261722050617261496e666f081c4163636f756e7401001c42616c616e63650118000c011c6d616e6167657200011c4163636f756e7400011c6465706f73697418011c42616c616e63650001186c6f636b6564a50c01304f7074696f6e3c626f6f6c3e0000a50c04184f7074696f6e04045401780108104e6f6e6500000010536f6d650400780000010000a90c105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e3c70617261735f7265676973747261721870616c6c6574144572726f72040454000138344e6f745265676973746572656400000464546865204944206973206e6f7420726567697374657265642e44416c7265616479526567697374657265640001047454686520494420697320616c726561647920726567697374657265642e204e6f744f776e65720002049c5468652063616c6c6572206973206e6f7420746865206f776e6572206f6620746869732049642e30436f6465546f6f4c617267650003045c496e76616c6964207061726120636f64652073697a652e404865616444617461546f6f4c6172676500040470496e76616c69642070617261206865616420646174612073697a652e304e6f7450617261636861696e0005046050617261206973206e6f7420612050617261636861696e2e344e6f7450617261746872656164000604bc50617261206973206e6f742061205061726174687265616420286f6e2d64656d616e642070617261636861696e292e4043616e6e6f74446572656769737465720007045843616e6e6f74206465726567697374657220706172613c43616e6e6f74446f776e67726164650008042d0143616e6e6f74207363686564756c6520646f776e6772616465206f66206c6561736520686f6c64696e672070617261636861696e20746f206f6e2d64656d616e642070617261636861696e3443616e6e6f7455706772616465000904250143616e6e6f74207363686564756c652075706772616465206f66206f6e2d64656d616e642070617261636861696e20746f206c6561736520686f6c64696e672070617261636861696e28506172614c6f636b6564000a08490150617261206973206c6f636b65642066726f6d206d616e6970756c6174696f6e20627920746865206d616e616765722e204d757374207573652070617261636861696e206f722072656c617920636861696e2c676f7665726e616e63652e2c4e6f745265736572766564000b04d054686520494420676976656e20666f7220726567697374726174696f6e20686173206e6f74206265656e2072657365727665642e24456d707479436f6465000c04d45265676973746572696e672070617261636861696e207769746820656d70747920636f6465206973206e6f7420616c6c6f7765642e2843616e6e6f7453776170000d08510143616e6e6f7420706572666f726d20612070617261636861696e20736c6f74202f206c6966656379636c6520737761702e20436865636b207468617420746865207374617465206f6620626f74682070617261738461726520636f727265637420666f7220746865207377617020746f20776f726b2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ead0c000002790800b10c105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e14736c6f74731870616c6c6574144572726f7204045400010844506172614e6f744f6e626f617264696e670000048c5468652070617261636861696e204944206973206e6f74206f6e626f617264696e672e284c656173654572726f720001048854686572652077617320616e206572726f72207769746820746865206c656173652e048054686520604572726f726020656e756d206f6620746869732070616c6c65742eb50c0000040800b90200b90c00000324000000bd0c00bd0c04184f7074696f6e04045401c10c0108104e6f6e6500000010536f6d650400c10c0000010000c10c0000040c00b9021800c50c105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e2061756374696f6e731870616c6c6574144572726f7204045400011c4441756374696f6e496e50726f677265737300000490546869732061756374696f6e20697320616c726561647920696e2070726f67726573732e444c65617365506572696f64496e5061737400010480546865206c6561736520706572696f6420697320696e2074686520706173742e44506172614e6f74526567697374657265640002045850617261206973206e6f742072656769737465726564444e6f7443757272656e7441756374696f6e000304584e6f7420612063757272656e742061756374696f6e2e284e6f7441756374696f6e0004043c4e6f7420616e2061756374696f6e2e3041756374696f6e456e6465640005046841756374696f6e2068617320616c726561647920656e6465642e40416c72656164794c65617365644f7574000604d8546865207061726120697320616c7265616479206c6561736564206f757420666f722070617274206f6620746869732072616e67652e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ec90c0c5c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e2463726f77646c6f616e2046756e64496e666f10244163636f756e74496401001c42616c616e636501182c426c6f636b4e756d62657201102c4c65617365506572696f640110002801246465706f7369746f720001244163636f756e7449640001207665726966696572f105014c4f7074696f6e3c4d756c74695369676e65723e00011c6465706f73697418011c42616c616e636500011872616973656418011c42616c616e636500010c656e6410012c426c6f636b4e756d62657200010c63617018011c42616c616e63650001446c6173745f636f6e747269627574696f6ecd0c01744c617374436f6e747269627574696f6e3c426c6f636b4e756d6265723e00013066697273745f706572696f6410012c4c65617365506572696f6400012c6c6173745f706572696f6410012c4c65617365506572696f6400012866756e645f696e64657810012446756e64496e6465780000cd0c0c5c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e2463726f77646c6f616e404c617374436f6e747269627574696f6e042c426c6f636b4e756d6265720110010c144e6576657200000024507265456e64696e67040010010c75333200010018456e64696e67040010012c426c6f636b4e756d62657200020000d10c105c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e2463726f77646c6f616e1870616c6c6574144572726f7204045400015c444669727374506572696f64496e50617374000004f45468652063757272656e74206c6561736520706572696f64206973206d6f7265207468616e20746865206669727374206c6561736520706572696f642e644669727374506572696f64546f6f466172496e4675747572650001041101546865206669727374206c6561736520706572696f64206e6565647320746f206174206c65617374206265206c657373207468616e203320606d61785f76616c7565602e6c4c617374506572696f644265666f72654669727374506572696f64000204e84c617374206c6561736520706572696f64206d7573742062652067726561746572207468616e206669727374206c6561736520706572696f642e604c617374506572696f64546f6f466172496e4675747572650003042d01546865206c617374206c6561736520706572696f642063616e6e6f74206265206d6f7265207468616e203320706572696f64732061667465722074686520666972737420706572696f642e3c43616e6e6f74456e64496e5061737400040445015468652063616d706169676e20656e6473206265666f7265207468652063757272656e7420626c6f636b206e756d6265722e2054686520656e64206d75737420626520696e20746865206675747572652e44456e64546f6f466172496e467574757265000504c054686520656e64206461746520666f7220746869732063726f77646c6f616e206973206e6f742073656e7369626c652e204f766572666c6f770006045854686572652077617320616e206f766572666c6f772e50436f6e747269627574696f6e546f6f536d616c6c000704e854686520636f6e747269627574696f6e207761732062656c6f7720746865206d696e696d756d2c20604d696e436f6e747269627574696f6e602e34496e76616c69645061726149640008044c496e76616c69642066756e6420696e6465782e2c436170457863656564656400090490436f6e747269627574696f6e7320657863656564206d6178696d756d20616d6f756e742e58436f6e747269627574696f6e506572696f644f766572000a04a854686520636f6e747269627574696f6e20706572696f642068617320616c726561647920656e6465642e34496e76616c69644f726967696e000b048c546865206f726967696e206f6620746869732063616c6c20697320696e76616c69642e304e6f7450617261636861696e000c04c8546869732063726f77646c6f616e20646f6573206e6f7420636f72726573706f6e6420746f20612070617261636861696e2e2c4c65617365416374697665000d041501546869732070617261636861696e206c65617365206973207374696c6c2061637469766520616e64207265746972656d656e742063616e6e6f742079657420626567696e2e404269644f724c65617365416374697665000e043101546869732070617261636861696e277320626964206f72206c65617365206973207374696c6c2061637469766520616e642077697468647261772063616e6e6f742079657420626567696e2e3046756e644e6f74456e646564000f04805468652063726f77646c6f616e20686173206e6f742079657420656e6465642e3c4e6f436f6e747269627574696f6e73001004d0546865726520617265206e6f20636f6e747269627574696f6e732073746f72656420696e20746869732063726f77646c6f616e2e484e6f745265616479546f446973736f6c766500110855015468652063726f77646c6f616e206973206e6f7420726561647920746f20646973736f6c76652e20506f74656e7469616c6c79207374696c6c20686173206120736c6f74206f7220696e207265746972656d656e741c706572696f642e40496e76616c69645369676e617475726500120448496e76616c6964207369676e61747572652e304d656d6f546f6f4c617267650013047c5468652070726f7669646564206d656d6f20697320746f6f206c617267652e44416c7265616479496e4e65775261697365001404845468652066756e6420697320616c726561647920696e20604e65775261697365604856726644656c6179496e50726f6772657373001504b44e6f20636f6e747269627574696f6e7320616c6c6f77656420647572696e6720746865205652462064656c6179344e6f4c65617365506572696f640016042d0141206c6561736520706572696f6420686173206e6f742073746172746564207965742c2064756520746f20616e206f666673657420696e20746865207374617274696e6720626c6f636b2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ed50c0c2870616c6c65745f78636d1870616c6c65742c5175657279537461747573042c426c6f636b4e756d6265720110010c1c50656e64696e67100124726573706f6e6465726901014456657273696f6e65644c6f636174696f6e00014c6d617962655f6d617463685f71756572696572d90c01644f7074696f6e3c56657273696f6e65644c6f636174696f6e3e0001306d617962655f6e6f74696679dd0c01404f7074696f6e3c2875382c207538293e00011c74696d656f757410012c426c6f636b4e756d6265720000003c56657273696f6e4e6f7469666965720801186f726967696e6901014456657273696f6e65644c6f636174696f6e00012469735f616374697665780110626f6f6c000100145265616479080120726573706f6e7365e50c014456657273696f6e6564526573706f6e7365000108617410012c426c6f636b4e756d62657200020000d90c04184f7074696f6e0404540169010108104e6f6e6500000010536f6d65040069010000010000dd0c04184f7074696f6e04045401e10c0108104e6f6e6500000010536f6d650400e10c0000010000e10c00000408080800e50c080c78636d4456657273696f6e6564526573706f6e736500010c08563204003d06013076323a3a526573706f6e736500020008563304008506013076333a3a526573706f6e73650003000856340400e506013076343a3a526573706f6e736500040000e90c0000040810690100ed0c0000040c2c241000f10c0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401f50c045300000400f90c01185665633c543e0000f50c0000040869011000f90c000002f50c00fd0c0c2870616c6c65745f78636d1870616c6c65745456657273696f6e4d6967726174696f6e53746167650001105c4d696772617465537570706f7274656456657273696f6e0000005c4d69677261746556657273696f6e4e6f74696669657273000100504e6f7469667943757272656e74546172676574730400010d013c4f7074696f6e3c5665633c75383e3e000200684d696772617465416e644e6f746966794f6c645461726765747300030000010d04184f7074696f6e04045401340108104e6f6e6500000010536f6d650400340000010000050d0000040c1000090d00090d080c78636d4056657273696f6e65644173736574496400010808563304002d01012c76333a3a4173736574496400030008563404006501012c76343a3a41737365744964000400000d0d0c2870616c6c65745f78636d1870616c6c65746852656d6f74654c6f636b656446756e6769626c655265636f72640848436f6e73756d65724964656e746966696572018c304d6178436f6e73756d6572730000100118616d6f756e74180110753132380001146f776e65726901014456657273696f6e65644c6f636174696f6e0001186c6f636b65726901014456657273696f6e65644c6f636174696f6e000124636f6e73756d657273110d01d0426f756e6465645665633c28436f6e73756d65724964656e7469666965722c2075313238292c204d6178436f6e73756d6572733e0000110d0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401150d045300000400190d01185665633c543e0000150d000004088c1800190d000002150d001d0d0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401210d045300000400250d01185665633c543e0000210d0000040818690100250d000002210d00290d0c2870616c6c65745f78636d1870616c6c6574144572726f720404540001642c556e726561636861626c650000085d0154686520646573697265642064657374696e6174696f6e2077617320756e726561636861626c652c2067656e6572616c6c7920626563617573652074686572652069732061206e6f20776179206f6620726f7574696e6718746f2069742e2c53656e644661696c757265000108410154686572652077617320736f6d65206f746865722069737375652028692e652e206e6f7420746f20646f207769746820726f7574696e672920696e2073656e64696e6720746865206d6573736167652ec8506572686170732061206c61636b206f6620737061636520666f7220627566666572696e6720746865206d6573736167652e2046696c74657265640002049c546865206d65737361676520657865637574696f6e206661696c73207468652066696c7465722e48556e776569676861626c654d657373616765000304b4546865206d65737361676527732077656967687420636f756c64206e6f742062652064657465726d696e65642e6044657374696e6174696f6e4e6f74496e7665727469626c65000404dc5468652064657374696e6174696f6e20604c6f636174696f6e602070726f76696465642063616e6e6f7420626520696e7665727465642e14456d707479000504805468652061737365747320746f2062652073656e742061726520656d7074792e3843616e6e6f745265616e63686f720006043501436f756c64206e6f742072652d616e63686f72207468652061737365747320746f206465636c61726520746865206665657320666f72207468652064657374696e6174696f6e20636861696e2e34546f6f4d616e79417373657473000704c4546f6f206d616e79206173736574732068617665206265656e20617474656d7074656420666f72207472616e736665722e34496e76616c69644f726967696e000804784f726967696e20697320696e76616c696420666f722073656e64696e672e2842616456657273696f6e00090421015468652076657273696f6e206f6620746865206056657273696f6e6564602076616c75652075736564206973206e6f742061626c6520746f20626520696e7465727072657465642e2c4261644c6f636174696f6e000a08410154686520676976656e206c6f636174696f6e20636f756c64206e6f7420626520757365642028652e672e20626563617573652069742063616e6e6f742062652065787072657373656420696e2074686560646573697265642076657273696f6e206f662058434d292e384e6f537562736372697074696f6e000b04bc546865207265666572656e63656420737562736372697074696f6e20636f756c64206e6f7420626520666f756e642e44416c726561647953756273637269626564000c041101546865206c6f636174696f6e20697320696e76616c69642073696e636520697420616c726561647920686173206120737562736372697074696f6e2066726f6d2075732e5843616e6e6f74436865636b4f757454656c65706f7274000d042901436f756c64206e6f7420636865636b2d6f7574207468652061737365747320666f722074656c65706f72746174696f6e20746f207468652064657374696e6174696f6e20636861696e2e284c6f7742616c616e6365000e044101546865206f776e657220646f6573206e6f74206f776e2028616c6c29206f662074686520617373657420746861742074686579207769736820746f20646f20746865206f7065726174696f6e206f6e2e30546f6f4d616e794c6f636b73000f04c0546865206173736574206f776e65722068617320746f6f206d616e79206c6f636b73206f6e207468652061737365742e4c4163636f756e744e6f74536f7665726569676e001004310154686520676976656e206163636f756e74206973206e6f7420616e206964656e7469666961626c6520736f7665726569676e206163636f756e7420666f7220616e79206c6f636174696f6e2e28466565734e6f744d65740011042901546865206f7065726174696f6e207265717569726564206665657320746f20626520706169642077686963682074686520696e69746961746f7220636f756c64206e6f74206d6565742e304c6f636b4e6f74466f756e64001204f4412072656d6f7465206c6f636b20776974682074686520636f72726573706f6e64696e67206461746120636f756c64206e6f7420626520666f756e642e14496e557365001304490154686520756e6c6f636b206f7065726174696f6e2063616e6e6f742073756363656564206265636175736520746865726520617265207374696c6c20636f6e73756d657273206f6620746865206c6f636b2e5c496e76616c696441737365744e6f74436f6e63726574650014046c496e76616c6964206e6f6e2d636f6e63726574652061737365742e68496e76616c69644173736574556e6b6e6f776e52657365727665001504f0496e76616c69642061737365742c207265736572766520636861696e20636f756c64206e6f742062652064657465726d696e656420666f722069742e78496e76616c69644173736574556e737570706f72746564526573657276650016044501496e76616c69642061737365742c20646f206e6f7420737570706f72742072656d6f7465206173736574207265736572766573207769746820646966666572656e7420666565732072657365727665732e3c546f6f4d616e7952657365727665730017044901546f6f206d616e7920617373657473207769746820646966666572656e742072657365727665206c6f636174696f6e732068617665206265656e20617474656d7074656420666f72207472616e736665722e604c6f63616c457865637574696f6e496e636f6d706c6574650018047c4c6f63616c2058434d20657865637574696f6e20696e636f6d706c6574652e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e2d0d085070616c6c65745f6d6573736167655f717565756524426f6f6b537461746504344d6573736167654f726967696e01410700180114626567696e10012450616765496e64657800010c656e6410012450616765496e646578000114636f756e7410012450616765496e64657800014072656164795f6e65696768626f757273310d01844f7074696f6e3c4e65696768626f7572733c4d6573736167654f726967696e3e3e0001346d6573736167655f636f756e742c010c75363400011073697a652c010c7536340000310d04184f7074696f6e04045401350d0108104e6f6e6500000010536f6d650400350d0000010000350d085070616c6c65745f6d6573736167655f7175657565284e65696768626f75727304344d6573736167654f726967696e0141070008011070726576410701344d6573736167654f726967696e0001106e657874410701344d6573736167654f726967696e0000390d00000408410710003d0d085070616c6c65745f6d6573736167655f71756575651050616765081053697a650110204865617053697a65000018012472656d61696e696e6710011053697a6500013872656d61696e696e675f73697a6510011053697a6500012c66697273745f696e64657810011053697a65000114666972737410011053697a650001106c61737410011053697a6500011068656170410d019c426f756e6465645665633c75382c20496e746f5533323c4865617053697a652c2053697a653e3e0000410d0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e0000450d0c5070616c6c65745f6d6573736167655f71756575651870616c6c6574144572726f720404540001242c4e6f745265617061626c65000008490150616765206973206e6f74207265617061626c65206265636175736520697420686173206974656d732072656d61696e696e6720746f2062652070726f63657373656420616e64206973206e6f74206f6c641c656e6f7567682e184e6f50616765000104845061676520746f2062652072656170656420646f6573206e6f742065786973742e244e6f4d657373616765000204a8546865207265666572656e636564206d65737361676520636f756c64206e6f7420626520666f756e642e40416c726561647950726f6365737365640003040101546865206d6573736167652077617320616c72656164792070726f63657373656420616e642063616e6e6f742062652070726f63657373656420616761696e2e18517565756564000404ac546865206d6573736167652069732071756575656420666f722066757475726520657865637574696f6e2e48496e73756666696369656e74576569676874000504190154686572652069732074656d706f726172696c79206e6f7420656e6f7567682077656967687420746f20636f6e74696e756520736572766963696e67206d657373616765732e6054656d706f726172696c79556e70726f6365737361626c65000610a854686973206d6573736167652069732074656d706f726172696c7920756e70726f6365737361626c652e00590153756368206572726f7273206172652065787065637465642c20627574206e6f742067756172616e746565642c20746f207265736f6c7665207468656d73656c766573206576656e7475616c6c79207468726f756768247265747279696e672e2c517565756550617573656400070cec5468652071756575652069732070617573656420616e64206e6f206d6573736167652063616e2062652065786563757465642066726f6d2069742e001d01546869732063616e206368616e676520617420616e792074696d6520616e64206d6179207265736f6c766520696e20746865206675747572652062792072652d747279696e672e4c526563757273697665446973616c6c6f7765640008043101416e6f746865722063616c6c20697320696e2070726f677265737320616e64206e6565647320746f2066696e697368206265666f726520746869732063616c6c2063616e2068617070656e2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e490d0c4470616c6c65745f61737365745f726174651870616c6c6574144572726f7204045400010840556e6b6e6f776e41737365744b696e640000047854686520676976656e20617373657420494420697320756e6b6e6f776e2e34416c7265616479457869737473000104510154686520676976656e20617373657420494420616c72656164792068617320616e2061737369676e656420636f6e76657273696f6e207261746520616e642063616e6e6f742062652072652d637265617465642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e4d0d0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454014d02045300000400510d01185665633c543e0000510d0000024d0200550d0c3070616c6c65745f62656566791870616c6c6574144572726f7204045400011060496e76616c69644b65794f776e65727368697050726f6f66000004310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660001043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400020415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e50496e76616c6964436f6e66696775726174696f6e0003048c5375626d697474656420636f6e66696775726174696f6e20697320696e76616c69642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e590d0c4873705f636f6e73656e7375735f62656566790c6d6d72444265656679417574686f726974795365740458417574686f72697479536574436f6d6d69746d656e740130000c010869642c015463726174653a3a56616c696461746f72536574496400010c6c656e10010c7533320001446b65797365745f636f6d6d69746d656e74300158417574686f72697479536574436f6d6d69746d656e7400005d0d102873705f72756e74696d651c67656e657269634c756e636865636b65645f65787472696e73696348556e636865636b656445787472696e736963101c4164647265737301e9011043616c6c019901245369676e617475726501a10314457874726101610d00040034000000610d00000424650d690d6d0d710d750d7d0d810d850d890d00650d10306672616d655f73797374656d28657874656e73696f6e7354636865636b5f6e6f6e5f7a65726f5f73656e64657248436865636b4e6f6e5a65726f53656e64657204045400000000690d10306672616d655f73797374656d28657874656e73696f6e7348636865636b5f737065635f76657273696f6e40436865636b5370656356657273696f6e040454000000006d0d10306672616d655f73797374656d28657874656e73696f6e7340636865636b5f74785f76657273696f6e38436865636b547856657273696f6e04045400000000710d10306672616d655f73797374656d28657874656e73696f6e7334636865636b5f67656e6573697330436865636b47656e6573697304045400000000750d10306672616d655f73797374656d28657874656e73696f6e733c636865636b5f6d6f7274616c69747938436865636b4d6f7274616c69747904045400000400790d010c4572610000790d102873705f72756e74696d651c67656e657269630c6572610c4572610001010420496d6d6f7274616c0000001c4d6f7274616c31040008000001001c4d6f7274616c32040008000002001c4d6f7274616c33040008000003001c4d6f7274616c34040008000004001c4d6f7274616c35040008000005001c4d6f7274616c36040008000006001c4d6f7274616c37040008000007001c4d6f7274616c38040008000008001c4d6f7274616c3904000800000900204d6f7274616c313004000800000a00204d6f7274616c313104000800000b00204d6f7274616c313204000800000c00204d6f7274616c313304000800000d00204d6f7274616c313404000800000e00204d6f7274616c313504000800000f00204d6f7274616c313604000800001000204d6f7274616c313704000800001100204d6f7274616c313804000800001200204d6f7274616c313904000800001300204d6f7274616c323004000800001400204d6f7274616c323104000800001500204d6f7274616c323204000800001600204d6f7274616c323304000800001700204d6f7274616c323404000800001800204d6f7274616c323504000800001900204d6f7274616c323604000800001a00204d6f7274616c323704000800001b00204d6f7274616c323804000800001c00204d6f7274616c323904000800001d00204d6f7274616c333004000800001e00204d6f7274616c333104000800001f00204d6f7274616c333204000800002000204d6f7274616c333304000800002100204d6f7274616c333404000800002200204d6f7274616c333504000800002300204d6f7274616c333604000800002400204d6f7274616c333704000800002500204d6f7274616c333804000800002600204d6f7274616c333904000800002700204d6f7274616c343004000800002800204d6f7274616c343104000800002900204d6f7274616c343204000800002a00204d6f7274616c343304000800002b00204d6f7274616c343404000800002c00204d6f7274616c343504000800002d00204d6f7274616c343604000800002e00204d6f7274616c343704000800002f00204d6f7274616c343804000800003000204d6f7274616c343904000800003100204d6f7274616c353004000800003200204d6f7274616c353104000800003300204d6f7274616c353204000800003400204d6f7274616c353304000800003500204d6f7274616c353404000800003600204d6f7274616c353504000800003700204d6f7274616c353604000800003800204d6f7274616c353704000800003900204d6f7274616c353804000800003a00204d6f7274616c353904000800003b00204d6f7274616c363004000800003c00204d6f7274616c363104000800003d00204d6f7274616c363204000800003e00204d6f7274616c363304000800003f00204d6f7274616c363404000800004000204d6f7274616c363504000800004100204d6f7274616c363604000800004200204d6f7274616c363704000800004300204d6f7274616c363804000800004400204d6f7274616c363904000800004500204d6f7274616c373004000800004600204d6f7274616c373104000800004700204d6f7274616c373204000800004800204d6f7274616c373304000800004900204d6f7274616c373404000800004a00204d6f7274616c373504000800004b00204d6f7274616c373604000800004c00204d6f7274616c373704000800004d00204d6f7274616c373804000800004e00204d6f7274616c373904000800004f00204d6f7274616c383004000800005000204d6f7274616c383104000800005100204d6f7274616c383204000800005200204d6f7274616c383304000800005300204d6f7274616c383404000800005400204d6f7274616c383504000800005500204d6f7274616c383604000800005600204d6f7274616c383704000800005700204d6f7274616c383804000800005800204d6f7274616c383904000800005900204d6f7274616c393004000800005a00204d6f7274616c393104000800005b00204d6f7274616c393204000800005c00204d6f7274616c393304000800005d00204d6f7274616c393404000800005e00204d6f7274616c393504000800005f00204d6f7274616c393604000800006000204d6f7274616c393704000800006100204d6f7274616c393804000800006200204d6f7274616c393904000800006300244d6f7274616c31303004000800006400244d6f7274616c31303104000800006500244d6f7274616c31303204000800006600244d6f7274616c31303304000800006700244d6f7274616c31303404000800006800244d6f7274616c31303504000800006900244d6f7274616c31303604000800006a00244d6f7274616c31303704000800006b00244d6f7274616c31303804000800006c00244d6f7274616c31303904000800006d00244d6f7274616c31313004000800006e00244d6f7274616c31313104000800006f00244d6f7274616c31313204000800007000244d6f7274616c31313304000800007100244d6f7274616c31313404000800007200244d6f7274616c31313504000800007300244d6f7274616c31313604000800007400244d6f7274616c31313704000800007500244d6f7274616c31313804000800007600244d6f7274616c31313904000800007700244d6f7274616c31323004000800007800244d6f7274616c31323104000800007900244d6f7274616c31323204000800007a00244d6f7274616c31323304000800007b00244d6f7274616c31323404000800007c00244d6f7274616c31323504000800007d00244d6f7274616c31323604000800007e00244d6f7274616c31323704000800007f00244d6f7274616c31323804000800008000244d6f7274616c31323904000800008100244d6f7274616c31333004000800008200244d6f7274616c31333104000800008300244d6f7274616c31333204000800008400244d6f7274616c31333304000800008500244d6f7274616c31333404000800008600244d6f7274616c31333504000800008700244d6f7274616c31333604000800008800244d6f7274616c31333704000800008900244d6f7274616c31333804000800008a00244d6f7274616c31333904000800008b00244d6f7274616c31343004000800008c00244d6f7274616c31343104000800008d00244d6f7274616c31343204000800008e00244d6f7274616c31343304000800008f00244d6f7274616c31343404000800009000244d6f7274616c31343504000800009100244d6f7274616c31343604000800009200244d6f7274616c31343704000800009300244d6f7274616c31343804000800009400244d6f7274616c31343904000800009500244d6f7274616c31353004000800009600244d6f7274616c31353104000800009700244d6f7274616c31353204000800009800244d6f7274616c31353304000800009900244d6f7274616c31353404000800009a00244d6f7274616c31353504000800009b00244d6f7274616c31353604000800009c00244d6f7274616c31353704000800009d00244d6f7274616c31353804000800009e00244d6f7274616c31353904000800009f00244d6f7274616c3136300400080000a000244d6f7274616c3136310400080000a100244d6f7274616c3136320400080000a200244d6f7274616c3136330400080000a300244d6f7274616c3136340400080000a400244d6f7274616c3136350400080000a500244d6f7274616c3136360400080000a600244d6f7274616c3136370400080000a700244d6f7274616c3136380400080000a800244d6f7274616c3136390400080000a900244d6f7274616c3137300400080000aa00244d6f7274616c3137310400080000ab00244d6f7274616c3137320400080000ac00244d6f7274616c3137330400080000ad00244d6f7274616c3137340400080000ae00244d6f7274616c3137350400080000af00244d6f7274616c3137360400080000b000244d6f7274616c3137370400080000b100244d6f7274616c3137380400080000b200244d6f7274616c3137390400080000b300244d6f7274616c3138300400080000b400244d6f7274616c3138310400080000b500244d6f7274616c3138320400080000b600244d6f7274616c3138330400080000b700244d6f7274616c3138340400080000b800244d6f7274616c3138350400080000b900244d6f7274616c3138360400080000ba00244d6f7274616c3138370400080000bb00244d6f7274616c3138380400080000bc00244d6f7274616c3138390400080000bd00244d6f7274616c3139300400080000be00244d6f7274616c3139310400080000bf00244d6f7274616c3139320400080000c000244d6f7274616c3139330400080000c100244d6f7274616c3139340400080000c200244d6f7274616c3139350400080000c300244d6f7274616c3139360400080000c400244d6f7274616c3139370400080000c500244d6f7274616c3139380400080000c600244d6f7274616c3139390400080000c700244d6f7274616c3230300400080000c800244d6f7274616c3230310400080000c900244d6f7274616c3230320400080000ca00244d6f7274616c3230330400080000cb00244d6f7274616c3230340400080000cc00244d6f7274616c3230350400080000cd00244d6f7274616c3230360400080000ce00244d6f7274616c3230370400080000cf00244d6f7274616c3230380400080000d000244d6f7274616c3230390400080000d100244d6f7274616c3231300400080000d200244d6f7274616c3231310400080000d300244d6f7274616c3231320400080000d400244d6f7274616c3231330400080000d500244d6f7274616c3231340400080000d600244d6f7274616c3231350400080000d700244d6f7274616c3231360400080000d800244d6f7274616c3231370400080000d900244d6f7274616c3231380400080000da00244d6f7274616c3231390400080000db00244d6f7274616c3232300400080000dc00244d6f7274616c3232310400080000dd00244d6f7274616c3232320400080000de00244d6f7274616c3232330400080000df00244d6f7274616c3232340400080000e000244d6f7274616c3232350400080000e100244d6f7274616c3232360400080000e200244d6f7274616c3232370400080000e300244d6f7274616c3232380400080000e400244d6f7274616c3232390400080000e500244d6f7274616c3233300400080000e600244d6f7274616c3233310400080000e700244d6f7274616c3233320400080000e800244d6f7274616c3233330400080000e900244d6f7274616c3233340400080000ea00244d6f7274616c3233350400080000eb00244d6f7274616c3233360400080000ec00244d6f7274616c3233370400080000ed00244d6f7274616c3233380400080000ee00244d6f7274616c3233390400080000ef00244d6f7274616c3234300400080000f000244d6f7274616c3234310400080000f100244d6f7274616c3234320400080000f200244d6f7274616c3234330400080000f300244d6f7274616c3234340400080000f400244d6f7274616c3234350400080000f500244d6f7274616c3234360400080000f600244d6f7274616c3234370400080000f700244d6f7274616c3234380400080000f800244d6f7274616c3234390400080000f900244d6f7274616c3235300400080000fa00244d6f7274616c3235310400080000fb00244d6f7274616c3235320400080000fc00244d6f7274616c3235330400080000fd00244d6f7274616c3235340400080000fe00244d6f7274616c3235350400080000ff00007d0d10306672616d655f73797374656d28657874656e73696f6e732c636865636b5f6e6f6e636528436865636b4e6f6e63650404540000040015010120543a3a4e6f6e63650000810d10306672616d655f73797374656d28657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000000850d086870616c6c65745f7472616e73616374696f6e5f7061796d656e74604368617267655472616e73616374696f6e5061796d656e7404045400000400f4013042616c616e63654f663c543e0000890d0c5c706f6c6b61646f745f72756e74696d655f636f6d6d6f6e18636c61696d734850726576616c696461746541747465737473040454000000008d0d0840706f6c6b61646f745f72756e74696d651c52756e74696d6500000000e41853797374656d011853797374656d441c4163636f756e7401010402000c4101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e74000010040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2c426c6f636b576569676874010020180000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e40416c6c45787472696e736963734c656e000010040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b486173680101040510308000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101040510340400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d6265720100101000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801003080000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e18446967657374010038040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e747301004804001ca0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e001d01204e4f54453a20546865206974656d20697320756e626f756e6420616e642073686f756c64207468657265666f7265206e657665722062652072656164206f6e20636861696e2ed020497420636f756c64206f746865727769736520696e666c6174652074686520506f562073697a65206f66206120626c6f636b2e002d01204576656e747320686176652061206c6172676520696e2d6d656d6f72792073697a652e20426f7820746865206576656e747320746f206e6f7420676f206f75742d6f662d6d656d6f7279fc206a75737420696e206361736520736f6d656f6e65207374696c6c207265616473207468656d2066726f6d2077697468696e207468652072756e74696d652e284576656e74436f756e74010010100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f70696373010104023025080400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e005901205468652076616c756520686173207468652074797065206028426c6f636b4e756d626572466f723c543e2c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d65557067726164650000290804000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e545570677261646564546f553332526566436f756e740100780400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e605570677261646564546f547269706c65526566436f756e740100780400085d012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e506861736500002108040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e44417574686f72697a65645570677261646500003108040004b82060536f6d6560206966206120636f6465207570677261646520686173206265656e20617574686f72697a65642e019d0101541830426c6f636b576569676874733508010207b0bde93603000b00204aa9d10113ffffffffffffffff222d0d1e00010bb8845c8f580113a3703d0ad7a370bd010b0098f73e5d0113ffffffffffffffbf010000222d0d1e00010bb80caff9cc0113a3703d0ad7a370fd010b00204aa9d10113ffffffffffffffff01070088526a74130000000000000040222d0d1e0000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e67746841083000003c00000050000000500004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e74101000100000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e20446257656967687449084038ca38010000000098aaf904000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6e4d083d0420706f6c6b61646f743c7061726974792d706f6c6b61646f7400000000104a0f00000000004cdf6acb689907609b0400000037e397fc7c91f5e40200000040fe3ad401f8959a0600000017a6bc0d0062aeb30100000018ef58a3b67ba77001000000d2bc9897eed08f1503000000f78b278be53f454c02000000af2c0297a23e6d3d0a00000049eaaf1b548a0cb00300000091d5df18b0d2cf58020000002a5e924655399e6001000000ed99c5acb25eedf503000000cbca25e39f14238702000000687ad44ad37f03c201000000ab3c0572291feb8b01000000bc9d89904f5b923f0100000037c8bb1350a9a2a804000000f3ff14d5ab52705903000000fbc577b9d747efd60100000019000000010484204765742074686520636861696e27732063757272656e742076657273696f6e2e2853533538507265666978910108000014a8205468652064657369676e61746564205353353820707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e015d0800245363686564756c657201245363686564756c65720c3c496e636f6d706c65746553696e6365000010040000184167656e6461010104051061080400044d01204974656d7320746f2062652065786563757465642c20696e64657865642062792074686520626c6f636b206e756d626572207468617420746865792073686f756c64206265206578656375746564206f6e2e184c6f6f6b7570000104050480040010f8204c6f6f6b75702066726f6d2061206e616d6520746f2074686520626c6f636b206e756d62657220616e6420696e646578206f6620746865207461736b2e00590120466f72207633202d3e207634207468652070726576696f75736c7920756e626f756e646564206964656e7469746965732061726520426c616b65322d3235362068617368656420746f20666f726d2074686520763430206964656e7469746965732e01ad01017c08344d6178696d756d57656967687424400b00806e87740113cccccccccccccccc04290120546865206d6178696d756d207765696768742074686174206d6179206265207363686564756c65642070657220626c6f636b20666f7220616e7920646973706174636861626c65732e504d61785363686564756c6564506572426c6f636b101032000000141d0120546865206d6178696d756d206e756d626572206f66207363686564756c65642063616c6c7320696e2074686520717565756520666f7220612073696e676c6520626c6f636b2e0018204e4f54453a5101202b20446570656e64656e742070616c6c657473272062656e63686d61726b73206d696768742072657175697265206120686967686572206c696d697420666f72207468652073657474696e672e205365742061c420686967686572206c696d697420756e646572206072756e74696d652d62656e63686d61726b736020666561747572652e0171080120507265696d6167650120507265696d6167650c24537461747573466f72000104063075080400049020546865207265717565737420737461747573206f66206120676976656e20686173682e4052657175657374537461747573466f7200010406307d080400049020546865207265717565737420737461747573206f66206120676976656e20686173682e2c507265696d616765466f72000104068d08910804000001b5010190000195080a1042616265011042616265442845706f6368496e64657801002c20000000000000000004542043757272656e742065706f636820696e6465782e2c417574686f726974696573010099080400046c2043757272656e742065706f636820617574686f7269746965732e2c47656e65736973536c6f740100cd0120000000000000000008f82054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e205468697320697320309020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2c43757272656e74536c6f740100cd0120000000000000000004542043757272656e7420736c6f74206e756d6265722e2852616e646f6d6e65737301000480000000000000000000000000000000000000000000000000000000000000000028b8205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e002c20232053656375726974790005012054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061f8206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e7915012063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d6265727320746861742074686973150120286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e206265050120757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e0d01206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e6050656e64696e6745706f6368436f6e6669674368616e67650000d50104000461012050656e64696e672065706f636820636f6e66696775726174696f6e206368616e676520746861742077696c6c206265206170706c696564207768656e20746865206e6578742065706f636820697320656e61637465642e384e65787452616e646f6d6e657373010004800000000000000000000000000000000000000000000000000000000000000000045c204e6578742065706f63682072616e646f6d6e6573732e3c4e657874417574686f7269746965730100990804000460204e6578742065706f636820617574686f7269746965732e305365676d656e74496e6465780100101000000000247c2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e00f8205765206d616b6520612074726164652d6f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e01012057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f942060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e00ec204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e090120576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572791c2065706f63682e44556e646572436f6e737472756374696f6e0101040510a50804000415012054574f582d4e4f54453a20605365676d656e74496e6465786020697320616e20696e6372656173696e6720696e74656765722c20736f2074686973206973206f6b61792e2c496e697469616c697a65640000ad0804000801012054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d65601d01206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e4c417574686f7256726652616e646f6d6e65737301008404001015012054686973206669656c642073686f756c6420616c7761797320626520706f70756c6174656420647572696e6720626c6f636b2070726f63657373696e6720756e6c6573731901207365636f6e6461727920706c61696e20736c6f74732061726520656e61626c65642028776869636820646f6e277420636f6e7461696e206120565246206f7574707574292e0049012049742069732073657420696e20606f6e5f66696e616c697a65602c206265666f72652069742077696c6c20636f6e7461696e207468652076616c75652066726f6d20746865206c61737420626c6f636b2e2845706f63685374617274010080200000000000000000145d012054686520626c6f636b206e756d62657273207768656e20746865206c61737420616e642063757272656e742065706f6368206861766520737461727465642c20726573706563746976656c7920604e2d316020616e641420604e602e4901204e4f54453a20576520747261636b207468697320697320696e206f7264657220746f20616e6e6f746174652074686520626c6f636b206e756d626572207768656e206120676976656e20706f6f6c206f66590120656e74726f7079207761732066697865642028692e652e20697420776173206b6e6f776e20746f20636861696e206f6273657276657273292e2053696e63652065706f6368732061726520646566696e656420696e590120736c6f74732c207768696368206d617920626520736b69707065642c2074686520626c6f636b206e756d62657273206d6179206e6f74206c696e6520757020776974682074686520736c6f74206e756d626572732e204c6174656e657373010010100000000014d820486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e001501205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e65642075701101206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636bb020657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e2c45706f6368436f6e6669670000c50804000861012054686520636f6e66696775726174696f6e20666f72207468652063757272656e742065706f63682e2053686f756c64206e6576657220626520604e6f6e656020617320697420697320696e697469616c697a656420696e242067656e657369732e3c4e65787445706f6368436f6e6669670000c5080400082d012054686520636f6e66696775726174696f6e20666f7220746865206e6578742065706f63682c20604e6f6e65602069662074686520636f6e6669672077696c6c206e6f74206368616e6765e82028796f752063616e2066616c6c6261636b20746f206045706f6368436f6e6669676020696e737465616420696e20746861742063617365292e34536b697070656445706f6368730100c90804002029012041206c697374206f6620746865206c6173742031303020736b69707065642065706f63687320616e642074686520636f72726573706f6e64696e672073657373696f6e20696e64657870207768656e207468652065706f63682077617320736b69707065642e0031012054686973206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e2070726f6f66732e20416e2065717569766f636174696f6e2070726f6f663501206d75737420636f6e7461696e732061206b65792d6f776e6572736869702070726f6f6620666f72206120676976656e2073657373696f6e2c207468657265666f7265207765206e656564206139012077617920746f2074696520746f6765746865722073657373696f6e7320616e642065706f636820696e64696365732c20692e652e207765206e65656420746f2076616c69646174652074686174290120612076616c696461746f722077617320746865206f776e6572206f66206120676976656e206b6579206f6e206120676976656e2073657373696f6e2c20616e64207768617420746865b0206163746976652065706f636820696e6465782077617320647572696e6720746861742073657373696f6e2e01bd0100103445706f63684475726174696f6e2c2060090000000000000cec2054686520616d6f756e74206f662074696d652c20696e20736c6f74732c207468617420656163682065706f63682073686f756c64206c6173742e1901204e4f54453a2043757272656e746c79206974206973206e6f7420706f737369626c6520746f206368616e6765207468652065706f6368206475726174696f6e20616674657221012074686520636861696e2068617320737461727465642e20417474656d7074696e6720746f20646f20736f2077696c6c20627269636b20626c6f636b2070726f64756374696f6e2e444578706563746564426c6f636b54696d652c20701700000000000014050120546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e67110120626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f75740501207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f740901206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473a0207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e384d6178417574686f7269746965731010a08601000488204d6178206e756d626572206f6620617574686f72697469657320616c6c6f776564344d61784e6f6d696e61746f727310100002000004d420546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320666f7220656163682076616c696461746f722e01d508022454696d657374616d70012454696d657374616d70080c4e6f7701002c20000000000000000004a0205468652063757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e24446964557064617465010078040010d82057686574686572207468652074696d657374616d7020686173206265656e207570646174656420696e207468697320626c6f636b2e00550120546869732076616c7565206973207570646174656420746f206074727565602075706f6e207375636365737366756c207375626d697373696f6e206f6620612074696d657374616d702062792061206e6f64652e4501204974206973207468656e20636865636b65642061742074686520656e64206f66206561636820626c6f636b20657865637574696f6e20696e2074686520606f6e5f66696e616c697a656020686f6f6b2e01e1010004344d696e696d756d506572696f642c20b80b000000000000188c20546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e004d012042652061776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f6420746861742074686520626c6f636b2070726f64756374696f6e4901206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c7920776f726b2077697468207468697320746f61012064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20466f72206578616d706c652c20696e2074686520417572612070616c6c65742069742077696c6c20626520646f75626c6520746869737020706572696f64206f6e2064656661756c742073657474696e67732e00031c496e6469636573011c496e646963657304204163636f756e74730001040210d9080400048820546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e01e5010194041c4465706f736974184000e8764817000000000000000000000004ac20546865206465706f736974206e656564656420666f7220726573657276696e6720616e20696e6465782e01dd08042042616c616e636573012042616c616e6365731c34546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e40496e61637469766549737375616e636501001840000000000000000000000000000000000409012054686520746f74616c20756e697473206f66206f75747374616e64696e672064656163746976617465642062616c616e636520696e207468652073797374656d2e1c4163636f756e74010104020014010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080600901205468652042616c616e6365732070616c6c6574206578616d706c65206f662073746f72696e67207468652062616c616e6365206f6620616e206163636f756e742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b19022020202074797065204163636f756e7453746f7265203d2053746f726167654d61705368696d3c53656c663a3a4163636f756e743c52756e74696d653e2c206672616d655f73797374656d3a3a50726f76696465723c52756e74696d653e2c204163636f756e7449642c2053656c663a3a4163636f756e74446174613c42616c616e63653e3e0c20207d102060606000150120596f752063616e20616c736f2073746f7265207468652062616c616e6365206f6620616e206163636f756e7420696e20746865206053797374656d602070616c6c65742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b7420202074797065204163636f756e7453746f7265203d2053797374656d0c20207d102060606000510120427574207468697320636f6d657320776974682074726164656f6666732c2073746f72696e67206163636f756e742062616c616e63657320696e207468652073797374656d2070616c6c65742073746f7265736d0120606672616d655f73797374656d60206461746120616c6f6e677369646520746865206163636f756e74206461746120636f6e747261727920746f2073746f72696e67206163636f756e742062616c616e63657320696e207468652901206042616c616e636573602070616c6c65742c20776869636820757365732061206053746f726167654d61706020746f2073746f72652062616c616e6365732064617461206f6e6c792e4101204e4f54453a2054686973206973206f6e6c79207573656420696e207468652063617365207468617420746869732070616c6c6574206973207573656420746f2073746f72652062616c616e6365732e144c6f636b730101040200e108040008b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e2052657365727665730101040200f108040004a4204e616d6564207265736572766573206f6e20736f6d65206163636f756e742062616c616e6365732e14486f6c64730101040200fd080400046c20486f6c6473206f6e206163636f756e742062616c616e6365732e1c467265657a6573010104020015090400048820467265657a65206c6f636b73206f6e206163636f756e742062616c616e6365732e01f101019810484578697374656e7469616c4465706f736974184000e40b5402000000000000000000000020410120546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e204d5553542042452047524541544552205448414e205a45524f2100590120496620796f75202a7265616c6c792a206e65656420697420746f206265207a65726f2c20796f752063616e20656e61626c652074686520666561747572652060696e7365637572655f7a65726f5f65646020666f72610120746869732070616c6c65742e20486f77657665722c20796f7520646f20736f20617420796f7572206f776e207269736b3a20746869732077696c6c206f70656e2075702061206d616a6f7220446f5320766563746f722e590120496e206361736520796f752068617665206d756c7469706c6520736f7572636573206f662070726f7669646572207265666572656e6365732c20796f75206d617920616c736f2067657420756e65787065637465648c206265686176696f757220696620796f7520736574207468697320746f207a65726f2e00f020426f74746f6d206c696e653a20446f20796f757273656c662061206661766f757220616e64206d616b65206974206174206c65617374206f6e6521204d61784c6f636b7310103200000008f420546865206d6178696d756d206e756d626572206f66206c6f636b7320746861742073686f756c64206578697374206f6e20616e206163636f756e742edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e2c4d61785265736572766573101032000000040d0120546865206d6178696d756d206e756d626572206f66206e616d656420726573657276657320746861742063616e206578697374206f6e20616e206163636f756e742e284d6178467265657a657310100800000004610120546865206d6178696d756d206e756d626572206f6620696e646976696475616c20667265657a65206c6f636b7320746861742063616e206578697374206f6e20616e206163636f756e7420617420616e792074696d652e01290905485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e7408444e6578744665654d756c7469706c69657201004d0740000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e01002d090400000001a004604f7065726174696f6e616c4665654d756c7469706c696572080405545901204120666565206d756c7469706c69657220666f7220604f7065726174696f6e616c602065787472696e7369637320746f20636f6d7075746520227669727475616c207469702220746f20626f6f73742074686569722c20607072696f726974796000510120546869732076616c7565206973206d756c7469706c69656420627920746865206066696e616c5f6665656020746f206f627461696e206120227669727475616c20746970222074686174206973206c61746572f420616464656420746f20612074697020636f6d706f6e656e7420696e20726567756c617220607072696f72697479602063616c63756c6174696f6e732e4d01204974206d65616e732074686174206120604e6f726d616c60207472616e73616374696f6e2063616e2066726f6e742d72756e20612073696d696c61726c792d73697a656420604f7065726174696f6e616c6041012065787472696e736963202877697468206e6f20746970292c20627920696e636c7564696e672061207469702076616c75652067726561746572207468616e20746865207669727475616c207469702e003c20606060727573742c69676e6f726540202f2f20466f7220604e6f726d616c608c206c6574207072696f72697479203d207072696f726974795f63616c6328746970293b0054202f2f20466f7220604f7065726174696f6e616c601101206c6574207669727475616c5f746970203d2028696e636c7573696f6e5f666565202b2074697029202a204f7065726174696f6e616c4665654d756c7469706c6965723bc4206c6574207072696f72697479203d207072696f726974795f63616c6328746970202b207669727475616c5f746970293b1020606060005101204e6f746520746861742073696e636520776520757365206066696e616c5f6665656020746865206d756c7469706c696572206170706c69657320616c736f20746f2074686520726567756c61722060746970605d012073656e74207769746820746865207472616e73616374696f6e2e20536f2c206e6f74206f6e6c7920646f657320746865207472616e73616374696f6e206765742061207072696f726974792062756d702062617365646101206f6e207468652060696e636c7573696f6e5f666565602c2062757420776520616c736f20616d706c6966792074686520696d70616374206f662074697073206170706c69656420746f20604f7065726174696f6e616c6038207472616e73616374696f6e732e002028417574686f72736869700128417574686f72736869700418417574686f720000000400046420417574686f72206f662063757272656e7420626c6f636b2e00000000061c5374616b696e67011c5374616b696e67a03856616c696461746f72436f756e740100101000000000049c2054686520696465616c206e756d626572206f66206163746976652076616c696461746f72732e544d696e696d756d56616c696461746f72436f756e740100101000000000044101204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e34496e76756c6e657261626c65730100f50104000c590120416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e636520746865792772654d01206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f7572ac20696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e18426f6e64656400010405000004000c0101204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e00d02054574f582d4e4f54453a20534146452073696e636520604163636f756e7449646020697320612073656375726520686173682e404d696e4e6f6d696e61746f72426f6e64010018400000000000000000000000000000000004210120546865206d696e696d756d2061637469766520626f6e6420746f206265636f6d6520616e64206d61696e7461696e2074686520726f6c65206f662061206e6f6d696e61746f722e404d696e56616c696461746f72426f6e64010018400000000000000000000000000000000004210120546865206d696e696d756d2061637469766520626f6e6420746f206265636f6d6520616e64206d61696e7461696e2074686520726f6c65206f6620612076616c696461746f722e484d696e696d756d4163746976655374616b65010018400000000000000000000000000000000004110120546865206d696e696d756d20616374697665206e6f6d696e61746f72207374616b65206f6620746865206c617374207375636365737366756c20656c656374696f6e2e344d696e436f6d6d697373696f6e0100ac10000000000ce820546865206d696e696d756d20616d6f756e74206f6620636f6d6d697373696f6e20746861742076616c696461746f72732063616e207365742e00802049662073657420746f206030602c206e6f206c696d6974206578697374732e184c6564676572000104020031090400104501204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e007501204e6f74653a20416c6c2074686520726561647320616e64206d75746174696f6e7320746f20746869732073746f72616765202a4d5553542a20626520646f6e65207468726f75676820746865206d6574686f6473206578706f736564e8206279205b605374616b696e674c6564676572605d20746f20656e73757265206461746120616e64206c6f636b20636f6e73697374656e63792e1450617965650001040500a804000ce42057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e00d02054574f582d4e4f54453a20534146452073696e636520604163636f756e7449646020697320612073656375726520686173682e2856616c696461746f72730101040500b00800000c450120546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e00d02054574f582d4e4f54453a20534146452073696e636520604163636f756e7449646020697320612073656375726520686173682e50436f756e746572466f7256616c696461746f7273010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d6170484d617856616c696461746f7273436f756e7400001004000c310120546865206d6178696d756d2076616c696461746f7220636f756e74206265666f72652077652073746f7020616c6c6f77696e67206e65772076616c696461746f727320746f206a6f696e2e00d0205768656e20746869732076616c7565206973206e6f74207365742c206e6f206c696d6974732061726520656e666f726365642e284e6f6d696e61746f72730001040500390904004c750120546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f207468656972206e6f6d696e6174696f6e20707265666572656e6365732c206e616d656c79207468652076616c696461746f72732074686174582074686579207769736820746f20737570706f72742e003901204e6f7465207468617420746865206b657973206f6620746869732073746f72616765206d6170206d69676874206265636f6d65206e6f6e2d6465636f6461626c6520696e2063617365207468652d01206163636f756e742773205b604e6f6d696e6174696f6e7351756f74613a3a4d61784e6f6d696e6174696f6e73605d20636f6e66696775726174696f6e206973206465637265617365642e9020496e2074686973207261726520636173652c207468657365206e6f6d696e61746f7273650120617265207374696c6c206578697374656e7420696e2073746f726167652c207468656972206b657920697320636f727265637420616e64207265747269657661626c652028692e652e2060636f6e7461696e735f6b657960710120696e6469636174657320746861742074686579206578697374292c206275742074686569722076616c75652063616e6e6f74206265206465636f6465642e205468657265666f72652c20746865206e6f6e2d6465636f6461626c656d01206e6f6d696e61746f72732077696c6c206566666563746976656c79206e6f742d65786973742c20756e74696c20746865792072652d7375626d697420746865697220707265666572656e6365732073756368207468617420697401012069732077697468696e2074686520626f756e6473206f6620746865206e65776c79207365742060436f6e6669673a3a4d61784e6f6d696e6174696f6e73602e006101205468697320696d706c696573207468617420603a3a697465725f6b65797328292e636f756e7428296020616e6420603a3a6974657228292e636f756e74282960206d696768742072657475726e20646966666572656e746d012076616c75657320666f722074686973206d61702e204d6f72656f7665722c20746865206d61696e20603a3a636f756e7428296020697320616c69676e656420776974682074686520666f726d65722c206e616d656c79207468656c206e756d626572206f66206b65797320746861742065786973742e006d01204c6173746c792c20696620616e79206f6620746865206e6f6d696e61746f7273206265636f6d65206e6f6e2d6465636f6461626c652c20746865792063616e206265206368696c6c656420696d6d6564696174656c7920766961b8205b6043616c6c3a3a6368696c6c5f6f74686572605d20646973706174636861626c6520627920616e796f6e652e00d02054574f582d4e4f54453a20534146452073696e636520604163636f756e7449646020697320612073656375726520686173682e50436f756e746572466f724e6f6d696e61746f7273010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d6170484d61784e6f6d696e61746f7273436f756e7400001004000c310120546865206d6178696d756d206e6f6d696e61746f7220636f756e74206265666f72652077652073746f7020616c6c6f77696e67206e65772076616c696461746f727320746f206a6f696e2e00d0205768656e20746869732076616c7565206973206e6f74207365742c206e6f206c696d6974732061726520656e666f726365642e2843757272656e744572610000100400105c205468652063757272656e742065726120696e6465782e006501205468697320697320746865206c617465737420706c616e6e6564206572612c20646570656e64696e67206f6e20686f77207468652053657373696f6e2070616c6c657420717565756573207468652076616c696461746f7280207365742c206974206d6967687420626520616374697665206f72206e6f742e2441637469766545726100004109040010d820546865206163746976652065726120696e666f726d6174696f6e2c20697420686f6c647320696e64657820616e642073746172742e0059012054686520616374697665206572612069732074686520657261206265696e672063757272656e746c792072657761726465642e2056616c696461746f7220736574206f66207468697320657261206d757374206265ac20657175616c20746f205b6053657373696f6e496e746572666163653a3a76616c696461746f7273605d2e5445726173537461727453657373696f6e496e6465780001040510100400105501205468652073657373696f6e20696e646578206174207768696368207468652065726120737461727420666f7220746865206c617374205b60436f6e6669673a3a486973746f72794465707468605d20657261732e006101204e6f74653a205468697320747261636b7320746865207374617274696e672073657373696f6e2028692e652e2073657373696f6e20696e646578207768656e20657261207374617274206265696e672061637469766529f020666f7220746865206572617320696e20605b43757272656e74457261202d20484953544f52595f44455054482c2043757272656e744572615d602e2c457261735374616b65727301010805054909f00c0000002078204578706f73757265206f662076616c696461746f72206174206572612e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00cc2049732069742072656d6f766564206166746572205b60436f6e6669673a3a486973746f72794465707468605d20657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e002901204e6f74653a20446570726563617465642073696e6365207631342e205573652060457261496e666f6020696e737465616420746f20776f726b2077697468206578706f73757265732e4c457261735374616b6572734f76657276696577000108050549094d09040030b82053756d6d617279206f662076616c696461746f72206578706f73757265206174206120676976656e206572612e007101205468697320636f6e7461696e732074686520746f74616c207374616b6520696e20737570706f7274206f66207468652076616c696461746f7220616e64207468656972206f776e207374616b652e20496e206164646974696f6e2c75012069742063616e20616c736f206265207573656420746f2067657420746865206e756d626572206f66206e6f6d696e61746f7273206261636b696e6720746869732076616c696461746f7220616e6420746865206e756d626572206f666901206578706f73757265207061676573207468657920617265206469766964656420696e746f2e20546865207061676520636f756e742069732075736566756c20746f2064657465726d696e6520746865206e756d626572206f66ac207061676573206f6620726577617264732074686174206e6565647320746f20626520636c61696d65642e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742eac2053686f756c64206f6e6c79206265206163636573736564207468726f7567682060457261496e666f602e00cc2049732069742072656d6f766564206166746572205b60436f6e6669673a3a486973746f72794465707468605d20657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206f766572766965772069732072657475726e65642e48457261735374616b657273436c697070656401010805054909f00c000000409820436c6970706564204578706f73757265206f662076616c696461746f72206174206572612e006501204e6f74653a205468697320697320646570726563617465642c2073686f756c64206265207573656420617320726561642d6f6e6c7920616e642077696c6c2062652072656d6f76656420696e20746865206675747572652e3101204e657720604578706f737572656073206172652073746f72656420696e2061207061676564206d616e6e657220696e2060457261735374616b65727350616765646020696e73746561642e00590120546869732069732073696d696c617220746f205b60457261735374616b657273605d20627574206e756d626572206f66206e6f6d696e61746f7273206578706f736564206973207265647563656420746f20746865a82060543a3a4d61784578706f737572655061676553697a65602062696767657374207374616b6572732e1d0120284e6f74653a20746865206669656c642060746f74616c6020616e6420606f776e60206f6620746865206578706f737572652072656d61696e7320756e6368616e676564292ef42054686973206973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e005d012054686973206973206b657965642066697374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00cc2049742069732072656d6f766564206166746572205b60436f6e6669673a3a486973746f72794465707468605d20657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e002901204e6f74653a20446570726563617465642073696e6365207631342e205573652060457261496e666f6020696e737465616420746f20776f726b2077697468206578706f73757265732e40457261735374616b657273506167656400010c05050551095509040018c020506167696e61746564206578706f73757265206f6620612076616c696461746f7220617420676976656e206572612e0071012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e2c207468656e207374617368206163636f756e7420616e642066696e616c6c79d42074686520706167652e2053686f756c64206f6e6c79206265206163636573736564207468726f7567682060457261496e666f602e00d4205468697320697320636c6561726564206166746572205b60436f6e6669673a3a486973746f72794465707468605d20657261732e38436c61696d656452657761726473010108050549090902040018dc20486973746f7279206f6620636c61696d656420706167656420726577617264732062792065726120616e642076616c696461746f722e0069012054686973206973206b657965642062792065726120616e642076616c696461746f72207374617368207768696368206d61707320746f2074686520736574206f66207061676520696e6465786573207768696368206861766538206265656e20636c61696d65642e00cc2049742069732072656d6f766564206166746572205b60436f6e6669673a3a486973746f72794465707468605d20657261732e484572617356616c696461746f72507265667301010805054909b00800001411012053696d696c617220746f2060457261735374616b657273602c207468697320686f6c64732074686520707265666572656e636573206f662076616c696461746f72732e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00cc2049732069742072656d6f766564206166746572205b60436f6e6669673a3a486973746f72794465707468605d20657261732e4c4572617356616c696461746f7252657761726400010405101804000c2d012054686520746f74616c2076616c696461746f7220657261207061796f757420666f7220746865206c617374205b60436f6e6669673a3a486973746f72794465707468605d20657261732e0021012045726173207468617420686176656e27742066696e697368656420796574206f7220686173206265656e2072656d6f76656420646f65736e27742068617665207265776172642e4045726173526577617264506f696e74730101040510590914000000000008d0205265776172647320666f7220746865206c617374205b60436f6e6669673a3a486973746f72794465707468605d20657261732e250120496620726577617264206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207265776172642069732072657475726e65642e3845726173546f74616c5374616b6501010405101840000000000000000000000000000000000811012054686520746f74616c20616d6f756e74207374616b656420666f7220746865206c617374205b60436f6e6669673a3a486973746f72794465707468605d20657261732e1d0120496620746f74616c206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207374616b652069732072657475726e65642e20466f7263654572610100b804000454204d6f6465206f662065726120666f7263696e672e4c536c6173685265776172644672616374696f6e0100ac10000000000cf8205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e00e4205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e4c43616e63656c6564536c6173685061796f757401001840000000000000000000000000000000000815012054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e7420776869636820776173ec2063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e40556e6170706c696564536c617368657301010405106909040004c420416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e28426f6e646564457261730100250804001025012041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e00c8204d75737420636f6e7461696e7320696e666f726d6174696f6e20666f72206572617320666f72207468652072616e67653abc20605b6163746976655f657261202d20626f756e64696e675f6475726174696f6e3b206163746976655f6572615d604c56616c696461746f72536c617368496e457261000108050549097109040008450120416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e7020616e6420736c6173682076616c7565206f6620746865206572612e4c4e6f6d696e61746f72536c617368496e4572610001080505490918040004610120416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e34536c617368696e675370616e73000104050075090400048c20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e245370616e536c6173680101040565097909800000000000000000000000000000000000000000000000000000000000000000083d01205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2cb82061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e5443757272656e74506c616e6e656453657373696f6e01001010000000000ce820546865206c61737420706c616e6e65642073657373696f6e207363686564756c6564206279207468652073657373696f6e2070616c6c65742e0071012054686973206973206261736963616c6c7920696e2073796e632077697468207468652063616c6c20746f205b6070616c6c65745f73657373696f6e3a3a53657373696f6e4d616e616765723a3a6e65775f73657373696f6e605d2e4c4f6666656e64696e6756616c696461746f727301007d09040024690120496e6469636573206f662076616c696461746f727320746861742068617665206f6666656e64656420696e20746865206163746976652065726120616e6420776865746865722074686579206172652063757272656e746c79282064697361626c65642e00690120546869732076616c75652073686f756c642062652061207375706572736574206f662064697361626c65642076616c696461746f72732073696e6365206e6f7420616c6c206f6666656e636573206c65616420746f2074686571012076616c696461746f72206265696e672064697361626c65642028696620746865726520776173206e6f20736c617368292e2054686973206973206e656564656420746f20747261636b207468652070657263656e74616765206f6649012076616c696461746f727320746861742068617665206f6666656e64656420696e207468652063757272656e74206572612c20656e737572696e672061206e65772065726120697320666f72636564206966750120604f6666656e64696e6756616c696461746f72735468726573686f6c646020697320726561636865642e205468652076656320697320616c77617973206b65707420736f7274656420736f20746861742077652063616e2066696e6471012077686574686572206120676976656e2076616c696461746f72206861732070726576696f75736c79206f6666656e646564207573696e672062696e617279207365617263682e204974206765747320636c6561726564207768656e38207468652065726120656e64732e384368696c6c5468726573686f6c640000050204000c510120546865207468726573686f6c6420666f72207768656e2075736572732063616e2073746172742063616c6c696e6720606368696c6c5f6f746865726020666f72206f746865722076616c696461746f7273202f5901206e6f6d696e61746f72732e20546865207468726573686f6c6420697320636f6d706172656420746f207468652061637475616c206e756d626572206f662076616c696461746f7273202f206e6f6d696e61746f72732901202860436f756e74466f722a602920696e207468652073797374656d20636f6d706172656420746f2074686520636f6e66696775726564206d61782028604d61782a436f756e7460292e01fd0101a41830486973746f72794465707468101054000000508c204e756d626572206f66206572617320746f206b65657020696e20686973746f72792e00e820466f6c6c6f77696e6720696e666f726d6174696f6e206973206b65707420666f72206572617320696e20605b63757272656e745f657261202d090120486973746f727944657074682c2063757272656e745f6572615d603a2060457261735374616b657273602c2060457261735374616b657273436c6970706564602c050120604572617356616c696461746f725072656673602c20604572617356616c696461746f72526577617264602c206045726173526577617264506f696e7473602c4501206045726173546f74616c5374616b65602c206045726173537461727453657373696f6e496e646578602c2060436c61696d656452657761726473602c2060457261735374616b6572735061676564602c5c2060457261735374616b6572734f76657276696577602e00e4204d757374206265206d6f7265207468616e20746865206e756d626572206f6620657261732064656c617965642062792073657373696f6e2ef820492e652e2061637469766520657261206d75737420616c7761797320626520696e20686973746f72792e20492e652e20606163746976655f657261203ec42063757272656e745f657261202d20686973746f72795f646570746860206d7573742062652067756172616e746565642e001101204966206d6967726174696e6720616e206578697374696e672070616c6c65742066726f6d2073746f726167652076616c756520746f20636f6e6669672076616c75652cec20746869732073686f756c642062652073657420746f2073616d652076616c7565206f72206772656174657220617320696e2073746f726167652e001501204e6f74653a2060486973746f727944657074686020697320757365642061732074686520757070657220626f756e6420666f72207468652060426f756e646564566563602d01206974656d20605374616b696e674c65646765722e6c65676163795f636c61696d65645f72657761726473602e2053657474696e6720746869732076616c7565206c6f776572207468616ed820746865206578697374696e672076616c75652063616e206c65616420746f20696e636f6e73697374656e6369657320696e20746865150120605374616b696e674c65646765726020616e642077696c6c206e65656420746f2062652068616e646c65642070726f7065726c7920696e2061206d6967726174696f6e2ef020546865207465737420607265647563696e675f686973746f72795f64657074685f616272757074602073686f77732074686973206566666563742e3853657373696f6e735065724572611010060000000470204e756d626572206f662073657373696f6e7320706572206572612e3c426f6e64696e674475726174696f6e10101c00000004e4204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e48536c61736844656665724475726174696f6e10101b000000100101204e756d626572206f662065726173207468617420736c6173686573206172652064656665727265642062792c20616674657220636f6d7075746174696f6e2e000d0120546869732073686f756c64206265206c657373207468616e2074686520626f6e64696e67206475726174696f6e2e2053657420746f203020696620736c617368657315012073686f756c64206265206170706c69656420696d6d6564696174656c792c20776974686f7574206f70706f7274756e69747920666f7220696e74657276656e74696f6e2e4c4d61784578706f737572655061676553697a651010000200002cb020546865206d6178696d756d2073697a65206f6620656163682060543a3a4578706f7375726550616765602e00290120416e20604578706f737572655061676560206973207765616b6c7920626f756e64656420746f2061206d6178696d756d206f6620604d61784578706f737572655061676553697a656030206e6f6d696e61746f72732e00210120466f72206f6c646572206e6f6e2d7061676564206578706f737572652c206120726577617264207061796f757420776173207265737472696374656420746f2074686520746f70210120604d61784578706f737572655061676553697a6560206e6f6d696e61746f72732e205468697320697320746f206c696d69742074686520692f6f20636f737420666f722074686548206e6f6d696e61746f72207061796f75742e005901204e6f74653a20604d61784578706f737572655061676553697a6560206973207573656420746f20626f756e642060436c61696d6564526577617264736020616e6420697320756e7361666520746f207265647563659020776974686f75742068616e646c696e6720697420696e2061206d6967726174696f6e2e484d6178556e6c6f636b696e674368756e6b7310102000000028050120546865206d6178696d756d206e756d626572206f662060756e6c6f636b696e6760206368756e6b732061205b605374616b696e674c6564676572605d2063616e090120686176652e204566666563746976656c792064657465726d696e657320686f77206d616e7920756e6971756520657261732061207374616b6572206d61792062653820756e626f6e64696e6720696e2e00f8204e6f74653a20604d6178556e6c6f636b696e674368756e6b736020697320757365642061732074686520757070657220626f756e6420666f722074686501012060426f756e64656456656360206974656d20605374616b696e674c65646765722e756e6c6f636b696e67602e2053657474696e6720746869732076616c75650501206c6f776572207468616e20746865206578697374696e672076616c75652063616e206c65616420746f20696e636f6e73697374656e6369657320696e20746865090120605374616b696e674c65646765726020616e642077696c6c206e65656420746f2062652068616e646c65642070726f7065726c7920696e20612072756e74696d650501206d6967726174696f6e2e20546865207465737420607265647563696e675f6d61785f756e6c6f636b696e675f6368756e6b735f616272757074602073686f7773342074686973206566666563742e01850907204f6666656e63657301204f6666656e636573081c5265706f72747300010405308909040004490120546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e58436f6e63757272656e745265706f727473496e64657801010805058d09b9010400042901204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e0001bc00000828486973746f726963616c0128486973746f726963616c0848486973746f726963616c53657373696f6e7300010405108d080400045d01204d617070696e672066726f6d20686973746f726963616c2073657373696f6e20696e646963657320746f2073657373696f6e2d6461746120726f6f74206861736820616e642076616c696461746f7220636f756e742e2c53746f72656452616e6765000080040004e4205468652072616e6765206f6620686973746f726963616c2073657373696f6e732077652073746f72652e205b66697273742c206c6173742900000000211c53657373696f6e011c53657373696f6e1c2856616c696461746f72730100f5010400047c205468652063757272656e7420736574206f662076616c696461746f72732e3043757272656e74496e646578010010100000000004782043757272656e7420696e646578206f66207468652073657373696f6e2e345175657565644368616e676564010078040008390120547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f7273a420686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e285175657565644b657973010091090400083d012054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b657973e02077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e4844697361626c656456616c696461746f7273010009020400148020496e6469636573206f662064697361626c65642076616c696461746f72732e003d01205468652076656320697320616c77617973206b65707420736f7274656420736f20746861742077652063616e2066696e642077686574686572206120676976656e2076616c696461746f722069733d012064697361626c6564207573696e672062696e617279207365617263682e204974206765747320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e73642061206e657720736574206f66206964656e7469746965732e204e6578744b65797300010405003d020400049c20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e204b65794f776e657200010405990900040004090120546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e01390201c40001a109091c4772616e647061011c4772616e6470611c1453746174650100a50904000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e67650000a909040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000010040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c65640000800400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e74536574496401002c200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e000104052c1004002859012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e0045012054686973206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e2070726f6f66732e20416e2065717569766f636174696f6e2070726f6f66206d7573744d0120636f6e7461696e732061206b65792d6f776e6572736869702070726f6f6620666f72206120676976656e2073657373696f6e2c207468657265666f7265207765206e65656420612077617920746f20746965450120746f6765746865722073657373696f6e7320616e64204752414e44504120736574206964732c20692e652e207765206e65656420746f2076616c6964617465207468617420612076616c696461746f7241012077617320746865206f776e6572206f66206120676976656e206b6579206f6e206120676976656e2073657373696f6e2c20616e642077686174207468652061637469766520736574204944207761735420647572696e6720746861742073657373696f6e2e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e2c417574686f7269746965730100ad0904000484205468652063757272656e74206c697374206f6620617574686f7269746965732e01590201c80c384d6178417574686f7269746965731010a0860100045c204d617820417574686f72697469657320696e20757365344d61784e6f6d696e61746f727310100002000004d420546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320666f7220656163682076616c696461746f722e584d6178536574496453657373696f6e456e74726965732c20a80000000000000018390120546865206d6178696d756d206e756d626572206f6620656e747269657320746f206b65657020696e207468652073657420696420746f2073657373696f6e20696e646578206d617070696e672e0031012053696e6365207468652060536574496453657373696f6e60206d6170206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e73207468697329012076616c75652073686f756c642072656c61746520746f2074686520626f6e64696e67206475726174696f6e206f66207768617465766572207374616b696e672073797374656d2069733501206265696e6720757365642028696620616e79292e2049662065717569766f636174696f6e2068616e646c696e67206973206e6f7420656e61626c6564207468656e20746869732076616c7565342063616e206265207a65726f2e01b1090b48417574686f72697479446973636f766572790148417574686f72697479446973636f7665727908104b6579730100b5090400048c204b657973206f66207468652063757272656e7420617574686f72697479207365742e204e6578744b6579730100b50904000480204b657973206f6620746865206e65787420617574686f72697479207365742e000000000d20547265617375727901205472656173757279183450726f706f73616c436f756e74010010100000000004a4204e756d626572206f662070726f706f73616c7320746861742068617665206265656e206d6164652e2450726f706f73616c730001040510bd090400047c2050726f706f73616c7320746861742068617665206265656e206d6164652e2c4465616374697661746564010018400000000000000000000000000000000004f02054686520616d6f756e7420776869636820686173206265656e207265706f7274656420617320696e61637469766520746f2043757272656e63792e24417070726f76616c730100c109040004f82050726f706f73616c20696e646963657320746861742068617665206265656e20617070726f76656420627574206e6f742079657420617761726465642e285370656e64436f756e74010010100000000004a42054686520636f756e74206f66207370656e647320746861742068617665206265656e206d6164652e185370656e64730001040510c509040004d0205370656e647320746861742068617665206265656e20617070726f76656420616e64206265696e672070726f6365737365642e018902010101203050726f706f73616c426f6e64cd091050c30000085501204672616374696f6e206f6620612070726f706f73616c27732076616c756520746861742073686f756c6420626520626f6e64656420696e206f7264657220746f20706c616365207468652070726f706f73616c2e110120416e2061636365707465642070726f706f73616c2067657473207468657365206261636b2e20412072656a65637465642070726f706f73616c20646f6573206e6f742e4c50726f706f73616c426f6e644d696e696d756d18400010a5d4e80000000000000000000000044901204d696e696d756d20616d6f756e74206f662066756e647320746861742073686f756c6420626520706c6163656420696e2061206465706f73697420666f72206d616b696e6720612070726f706f73616c2e4c50726f706f73616c426f6e644d6178696d756d25024401005039278c0400000000000000000000044901204d6178696d756d20616d6f756e74206f662066756e647320746861742073686f756c6420626520706c6163656420696e2061206465706f73697420666f72206d616b696e6720612070726f706f73616c2e2c5370656e64506572696f64101000460500048820506572696f64206265747765656e2073756363657373697665207370656e64732e104275726ecd0910102700000411012050657263656e74616765206f662073706172652066756e64732028696620616e7929207468617420617265206275726e7420706572207370656e6420706572696f642e2050616c6c65744964d1092070792f74727372790419012054686520747265617375727927732070616c6c65742069642c207573656420666f72206465726976696e672069747320736f7665726569676e206163636f756e742049442e304d6178417070726f76616c731010640000000c150120546865206d6178696d756d206e756d626572206f6620617070726f76616c7320746861742063616e207761697420696e20746865207370656e64696e672071756575652e004d01204e4f54453a205468697320706172616d6574657220697320616c736f20757365642077697468696e2074686520426f756e746965732050616c6c657420657874656e73696f6e20696620656e61626c65642e305061796f7574506572696f641010809706000419012054686520706572696f6420647572696e6720776869636820616e20617070726f766564207472656173757279207370656e642068617320746f20626520636c61696d65642e01d5091340436f6e76696374696f6e566f74696e670140436f6e76696374696f6e566f74696e670824566f74696e67466f720101080505d909dd09d800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008750120416c6c20766f74696e6720666f72206120706172746963756c617220766f74657220696e206120706172746963756c617220766f74696e6720636c6173732e2057652073746f7265207468652062616c616e636520666f72207468659c206e756d626572206f6620766f74657320746861742077652068617665207265636f726465642e34436c6173734c6f636b73466f720101040500fd0904000c69012054686520766f74696e6720636c617373657320776869636820686176652061206e6f6e2d7a65726f206c6f636b20726571756972656d656e7420616e6420746865206c6f636b20616d6f756e747320776869636820746865796d0120726571756972652e205468652061637475616c20616d6f756e74206c6f636b6564206f6e20626568616c66206f6620746869732070616c6c65742073686f756c6420616c7761797320626520746865206d6178696d756d206f662c2074686973206c6973742e01910201890108204d6178566f74657310100002000010f020546865206d6178696d756d206e756d626572206f6620636f6e63757272656e7420766f74657320616e206163636f756e74206d617920686176652e00550120416c736f207573656420746f20636f6d70757465207765696768742c20616e206f7665726c79206c617267652076616c75652063616e206c65616420746f2065787472696e736963732077697468206c61726765c02077656967687420657374696d6174696f6e3a20736565206064656c65676174656020666f7220696e7374616e63652e44566f74654c6f636b696e67506572696f641010c0890100109020546865206d696e696d756d20706572696f64206f6620766f7465206c6f636b696e672e0065012049742073686f756c64206265206e6f2073686f72746572207468616e20656e6163746d656e7420706572696f6420746f20656e73757265207468617420696e207468652063617365206f6620616e20617070726f76616c2c49012074686f7365207375636365737366756c20766f7465727320617265206c6f636b656420696e746f2074686520636f6e73657175656e636573207468617420746865697220766f74657320656e7461696c2e01090a14245265666572656e646101245265666572656e6461143c5265666572656e64756d436f756e74010010100000000004310120546865206e6578742066726565207265666572656e64756d20696e6465782c20616b6120746865206e756d626572206f66207265666572656e6461207374617274656420736f206661722e445265666572656e64756d496e666f466f7200010402100d0a040004b420496e666f726d6174696f6e20636f6e6365726e696e6720616e7920676976656e207265666572656e64756d2e28547261636b51756575650101040591012d0a0400105d012054686520736f72746564206c697374206f66207265666572656e646120726561647920746f206265206465636964656420627574206e6f7420796574206265696e6720646563696465642c206f7264657265642062797c20636f6e76696374696f6e2d776569676874656420617070726f76616c732e00410120546869732073686f756c6420626520656d70747920696620604465636964696e67436f756e7460206973206c657373207468616e2060547261636b496e666f3a3a6d61785f6465636964696e67602e344465636964696e67436f756e7401010405910110100000000004c420546865206e756d626572206f66207265666572656e6461206265696e6720646563696465642063757272656e746c792e284d657461646174614f66000104021030040018050120546865206d6574616461746120697320612067656e6572616c20696e666f726d6174696f6e20636f6e6365726e696e6720746865207265666572656e64756d2e490120546865206048617368602072656665727320746f2074686520707265696d616765206f66207468652060507265696d61676573602070726f76696465722077686963682063616e2062652061204a534f4e882064756d70206f7220495046532068617368206f662061204a534f4e2066696c652e00750120436f6e73696465722061206761726261676520636f6c6c656374696f6e20666f722061206d65746164617461206f662066696e6973686564207265666572656e64756d7320746f2060756e7265717565737460202872656d6f76652944206c6172676520707265696d616765732e01a502018d0114445375626d697373696f6e4465706f736974184000e40b5402000000000000000000000004350120546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f722061207075626c6963207265666572656e64756d2070726f706f73616c2e244d617851756575656410106400000004e4204d6178696d756d2073697a65206f6620746865207265666572656e64756d20717565756520666f7220612073696e676c6520747261636b2e44556e6465636964696e6754696d656f757410108013030008550120546865206e756d626572206f6620626c6f636b73206166746572207375626d697373696f6e20746861742061207265666572656e64756d206d75737420626567696e206265696e6720646563696465642062792ee4204f6e63652074686973207061737365732c207468656e20616e796f6e65206d61792063616e63656c20746865207265666572656e64756d2e34416c61726d496e74657276616c1010010000000c5d01205175616e74697a6174696f6e206c6576656c20666f7220746865207265666572656e64756d2077616b657570207363686564756c65722e204120686967686572206e756d6265722077696c6c20726573756c7420696e5d012066657765722073746f726167652072656164732f777269746573206e656564656420666f7220736d616c6c657220766f746572732c2062757420616c736f20726573756c7420696e2064656c61797320746f207468655501206175746f6d61746963207265666572656e64756d20737461747573206368616e6765732e204578706c6963697420736572766963696e6720696e737472756374696f6e732061726520756e61666665637465642e18547261636b73390a191740000010726f6f74010000000080c6a47e8d03000000000000000000b00400000027060040380000403800000290d73e0d000000005743de13000000005443de13000000000000ca9a3b000000000065cd1d01004877686974656c69737465645f63616c6c65726400000000407a10f35a000000000000000000002c01000000270600640000006400000002ec972510000000007b573c170000000042392f1200000000020e00840000000000d6e61f0100000000396279020000000002003c776973685f666f725f6368616e67650a0000000080f420e6b500000000000000000000b00400000027060040380000640000000290d73e0d000000005743de13000000005443de13000000000000ca9a3b000000000065cd1d0a00347374616b696e675f61646d696e0a00000000203d88792d00000000000000000000b004000000270600080700006400000000c94330240065cd1d00ca9a3b025d6f780000000000e82eed00000000008c6889ffffffffff0b00247472656173757265720a00000000a0724e180900000000000000000000b004000000270600c0890100403800000290d73e0d000000005743de13000000005443de13000000000000ca9a3b000000000065cd1d0c002c6c656173655f61646d696e0a00000000203d88792d00000000000000000000b004000000270600080700006400000000c94330240065cd1d00ca9a3b025d6f780000000000e82eed00000000008c6889ffffffffff0d004066656c6c6f77736869705f61646d696e0a00000000203d88792d00000000000000000000b004000000270600080700006400000000c94330240065cd1d00ca9a3b025d6f780000000000e82eed00000000008c6889ffffffffff0e003467656e6572616c5f61646d696e0a00000000203d88792d00000000000000000000b00400000027060008070000640000000290d73e0d000000005743de13000000005443de13000000000259a2f40200000000a3296b05000000002e6b4afdffffffff0f003461756374696f6e5f61646d696e0a00000000203d88792d00000000000000000000b00400000027060008070000640000000290d73e0d000000005743de13000000005443de13000000000259a2f40200000000a3296b05000000002e6b4afdffffffff1400507265666572656e64756d5f63616e63656c6c6572e803000000407a10f35a00000000000000000000b0040000c0890100080700006400000000c94330240065cd1d00ca9a3b025d6f780000000000e82eed00000000008c6889ffffffffff1500447265666572656e64756d5f6b696c6c6572e803000000406352bfc601000000000000000000b004000000270600080700006400000000c94330240065cd1d00ca9a3b025d6f780000000000e82eed00000000008c6889ffffffffff1e0030736d616c6c5f746970706572c800000000e40b540200000000000000000000000a000000c0890100640000000a00000000499149150065cd1d00ca9a3b02f9ba1800000000002a4d3100000000006b59e7ffffffffff1f00286269675f7469707065726400000000e8764817000000000000000000000064000000c0890100580200006400000000499149150065cd1d00ca9a3b02694f3f000000000035967d0000000000e534c1ffffffffff200034736d616c6c5f7370656e646572320000000010a5d4e800000000000000000000006009000000270600807000004038000000c94330240065cd1d00ca9a3b025d6f780000000000e82eed00000000008c6889ffffffffff2100386d656469756d5f7370656e6465723200000000204aa9d10100000000000000000000600900000027060000e1000040380000005b01f6300065cd1d00ca9a3b021161db0000000000bfd1aa010000000020972affffffffff22002c6269675f7370656e6465723200000000409452a303000000000000000000006009000000270600c0890100403800000000ca9a3b0065cd1d00ca9a3b02413cb00100000000755d34030000000045d165feffffffff04e020496e666f726d6174696f6e20636f6e6365726e696e672074686520646966666572656e74207265666572656e64756d20747261636b732e01510a151c4f726967696e730000000000162457686974656c697374012457686974656c697374043c57686974656c697374656443616c6c00010405308c04000001cd02017d070001550a1718436c61696d730118436c61696d731418436c61696d7300010406dd021804000014546f74616c0100184000000000000000000000000000000000001c56657374696e6700010406dd02e502040010782056657374696e67207363686564756c6520666f72206120636c61696d2e0d012046697273742062616c616e63652069732074686520746f74616c20616d6f756e7420746861742073686f756c642062652068656c6420666f722076657374696e672ee4205365636f6e642062616c616e636520697320686f77206d7563682073686f756c6420626520756e6c6f636b65642070657220626c6f636b2ecc2054686520626c6f636b206e756d626572206973207768656e207468652076657374696e672073686f756c642073746172742e1c5369676e696e6700010406dd02ed02040004c0205468652073746174656d656e74206b696e642074686174206d757374206265207369676e65642c20696620616e792e24507265636c61696d730001040600dd020400042d01205072652d636c61696d656420457468657265756d206163636f756e74732c20627920746865204163636f756e74204944207468617420746865792061726520636c61696d656420746f2e01d102019107041850726566697834888450617920444f547320746f2074686520506f6c6b61646f74206163636f756e743a0001590a181c56657374696e67011c56657374696e67081c56657374696e6700010402005d0a040004d820496e666f726d6174696f6e20726567617264696e67207468652076657374696e67206f66206120676976656e206163636f756e742e3853746f7261676556657273696f6e0100650a04000c7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e003101204e6577206e6574776f726b732073746172742077697468206c61746573742076657273696f6e2c2061732064657465726d696e6564206279207468652067656e65736973206275696c642e01f10201950708444d696e5665737465645472616e73666572184000e40b5402000000000000000000000004e820546865206d696e696d756d20616d6f756e74207472616e7366657272656420746f2063616c6c20607665737465645f7472616e73666572602e4c4d617856657374696e675363686564756c657310101c0000000001690a191c5574696c6974790001f902019907044c626174636865645f63616c6c735f6c696d69741010aa2a000004a820546865206c696d6974206f6e20746865206e756d626572206f6620626174636865642063616c6c732e016d0a1a204964656e7469747901204964656e746974791c284964656e746974794f660001040500710a040010690120496e666f726d6174696f6e20746861742069732070657274696e656e7420746f206964656e746966792074686520656e7469747920626568696e6420616e206163636f756e742e204669727374206974656d20697320746865e020726567697374726174696f6e2c207365636f6e6420697320746865206163636f756e742773207072696d61727920757365726e616d652e00c02054574f582d4e4f54453a204f4b20e2809520604163636f756e7449646020697320612073656375726520686173682e1c53757065724f66000104020095030400086101205468652073757065722d6964656e74697479206f6620616e20616c7465726e6174697665202273756222206964656e7469747920746f676574686572207769746820697473206e616d652c2077697468696e2074686174510120636f6e746578742e20496620746865206163636f756e74206973206e6f7420736f6d65206f74686572206163636f756e742773207375622d6964656e746974792c207468656e206a75737420604e6f6e65602e18537562734f660101040500890a44000000000000000000000000000000000014b820416c7465726e6174697665202273756222206964656e746974696573206f662074686973206163636f756e742e001d0120546865206669727374206974656d20697320746865206465706f7369742c20746865207365636f6e64206973206120766563746f72206f6620746865206163636f756e74732e00c02054574f582d4e4f54453a204f4b20e2809520604163636f756e7449646020697320612073656375726520686173682e28526567697374726172730100910a0400104d012054686520736574206f6620726567697374726172732e204e6f7420657870656374656420746f206765742076657279206269672061732063616e206f6e6c79206265206164646564207468726f7567682061a8207370656369616c206f726967696e20286c696b656c79206120636f756e63696c206d6f74696f6e292e0029012054686520696e64657820696e746f20746869732063616e206265206361737420746f2060526567697374726172496e6465786020746f2067657420612076616c69642076616c75652e4c557365726e616d65417574686f7269746965730001040500a10a040004f42041206d6170206f6620746865206163636f756e74732077686f2061726520617574686f72697a656420746f206772616e7420757365726e616d65732e444163636f756e744f66557365726e616d6500010402ad03000400146d012052657665727365206c6f6f6b75702066726f6d2060757365726e616d656020746f2074686520604163636f756e7449646020746861742068617320726567697374657265642069742e205468652076616c75652073686f756c6465012062652061206b657920696e2074686520604964656e746974794f6660206d61702c20627574206974206d6179206e6f742069662074686520757365722068617320636c6561726564207468656972206964656e746974792e006901204d756c7469706c6520757365726e616d6573206d6179206d617020746f207468652073616d6520604163636f756e744964602c2062757420604964656e746974794f66602077696c6c206f6e6c79206d617020746f206f6e6548207072696d61727920757365726e616d652e4050656e64696e67557365726e616d657300010402ad0365090400186d0120557365726e616d6573207468617420616e20617574686f7269747920686173206772616e7465642c20627574207468617420746865206163636f756e7420636f6e74726f6c6c657220686173206e6f7420636f6e6669726d65647101207468617420746865792077616e742069742e2055736564207072696d6172696c7920696e2063617365732077686572652074686520604163636f756e744964602063616e6e6f742070726f766964652061207369676e61747572655d012062656361757365207468657920617265206120707572652070726f78792c206d756c74697369672c206574632e20496e206f7264657220746f20636f6e6669726d2069742c20746865792073686f756c642063616c6c6c205b6043616c6c3a3a6163636570745f757365726e616d65605d2e001d01204669727374207475706c65206974656d20697320746865206163636f756e7420616e64207365636f6e642069732074686520616363657074616e636520646561646c696e652e010103019d07203042617369634465706f7369741840007db52a2f000000000000000000000004d82054686520616d6f756e742068656c64206f6e206465706f73697420666f7220612072656769737465726564206964656e746974792e2c427974654465706f736974184080969800000000000000000000000000041d012054686520616d6f756e742068656c64206f6e206465706f7369742070657220656e636f646564206279746520666f7220612072656769737465726564206964656e746974792e445375624163636f756e744465706f736974184080f884b02e00000000000000000000000c65012054686520616d6f756e742068656c64206f6e206465706f73697420666f7220612072656769737465726564207375626163636f756e742e20546869732073686f756c64206163636f756e7420666f7220746865206661637465012074686174206f6e652073746f72616765206974656d27732076616c75652077696c6c20696e637265617365206279207468652073697a65206f6620616e206163636f756e742049442c20616e642074686572652077696c6c350120626520616e6f746865722074726965206974656d2077686f73652076616c7565206973207468652073697a65206f6620616e206163636f756e7420494420706c75732033322062797465732e384d61785375624163636f756e7473101064000000040d0120546865206d6178696d756d206e756d626572206f66207375622d6163636f756e747320616c6c6f77656420706572206964656e746966696564206163636f756e742e344d617852656769737472617273101014000000085101204d61786d696d756d206e756d626572206f66207265676973747261727320616c6c6f77656420696e207468652073797374656d2e204e656564656420746f20626f756e642074686520636f6d706c65786974797c206f662c20652e672e2c207570646174696e67206a756467656d656e74732e6450656e64696e67557365726e616d6545787069726174696f6e1010c089010004150120546865206e756d626572206f6620626c6f636b732077697468696e207768696368206120757365726e616d65206772616e74206d7573742062652061636365707465642e3c4d61785375666669784c656e677468101007000000048020546865206d6178696d756d206c656e677468206f662061207375666669782e444d6178557365726e616d654c656e67746810102000000004610120546865206d6178696d756d206c656e677468206f66206120757365726e616d652c20696e636c7564696e67206974732073756666697820616e6420616e792073797374656d2d61646465642064656c696d69746572732e01a90a1c1450726f7879011450726f7879081c50726f786965730101040500ad0a4400000000000000000000000000000000000845012054686520736574206f66206163636f756e742070726f786965732e204d61707320746865206163636f756e74207768696368206861732064656c65676174656420746f20746865206163636f756e7473210120776869636820617265206265696e672064656c65676174656420746f2c20746f67657468657220776974682074686520616d6f756e742068656c64206f6e206465706f7369742e34416e6e6f756e63656d656e74730101040500bd0a44000000000000000000000000000000000004ac2054686520616e6e6f756e63656d656e7473206d616465206279207468652070726f787920286b6579292e01b10301a107184050726f78794465706f7369744261736518400084b2952e000000000000000000000010110120546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e6720612070726f78792e00010120546869732069732068656c6420666f7220616e206164646974696f6e616c2073746f72616765206974656d2077686f73652076616c75652073697a652069732501206073697a656f662842616c616e6365296020627974657320616e642077686f7365206b65792073697a65206973206073697a656f66284163636f756e74496429602062797465732e4850726f78794465706f736974466163746f7218408066ab1300000000000000000000000014bc2054686520616d6f756e74206f662063757272656e6379206e6565646564207065722070726f78792061646465642e00350120546869732069732068656c6420666f7220616464696e6720333220627974657320706c757320616e20696e7374616e6365206f66206050726f78795479706560206d6f726520696e746f20616101207072652d6578697374696e672073746f726167652076616c75652e20546875732c207768656e20636f6e6669677572696e67206050726f78794465706f736974466163746f7260206f6e652073686f756c642074616b65f420696e746f206163636f756e7420603332202b2070726f78795f747970652e656e636f646528292e6c656e282960206279746573206f6620646174612e284d617850726f7869657310102000000004f020546865206d6178696d756d20616d6f756e74206f662070726f7869657320616c6c6f77656420666f7220612073696e676c65206163636f756e742e284d617850656e64696e6710102000000004450120546865206d6178696d756d20616d6f756e74206f662074696d652d64656c6179656420616e6e6f756e63656d656e747320746861742061726520616c6c6f77656420746f2062652070656e64696e672e5c416e6e6f756e63656d656e744465706f7369744261736518400084b2952e000000000000000000000010310120546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e6720616e20616e6e6f756e63656d656e742e00490120546869732069732068656c64207768656e2061206e65772073746f72616765206974656d20686f6c64696e672061206042616c616e636560206973206372656174656420287479706963616c6c7920313620206279746573292e64416e6e6f756e63656d656e744465706f736974466163746f72184000cd562700000000000000000000000010d42054686520616d6f756e74206f662063757272656e6379206e65656465642070657220616e6e6f756e63656d656e74206d6164652e00590120546869732069732068656c6420666f7220616464696e6720616e20604163636f756e744964602c2060486173686020616e642060426c6f636b4e756d6265726020287479706963616c6c79203638206279746573298c20696e746f2061207072652d6578697374696e672073746f726167652076616c75652e01cd0a1d204d756c746973696701204d756c746973696704244d756c7469736967730001080502d10ad50a040004942054686520736574206f66206f70656e206d756c7469736967206f7065726174696f6e732e01bd0301a5070c2c4465706f736974426173651840008c61c52e000000000000000000000018590120546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e672061206d756c746973696720657865637574696f6e206f7220746f842073746f726520612064697370617463682063616c6c20666f72206c617465722e00010120546869732069732068656c6420666f7220616e206164646974696f6e616c2073746f72616765206974656d2077686f73652076616c75652073697a652069733101206034202b2073697a656f662828426c6f636b4e756d6265722c2042616c616e63652c204163636f756e74496429296020627974657320616e642077686f7365206b65792073697a652069738020603332202b2073697a656f66284163636f756e74496429602062797465732e344465706f736974466163746f72184000d012130000000000000000000000000c55012054686520616d6f756e74206f662063757272656e6379206e65656465642070657220756e6974207468726573686f6c64207768656e206372656174696e672061206d756c746973696720657865637574696f6e2e00250120546869732069732068656c6420666f7220616464696e67203332206279746573206d6f726520696e746f2061207072652d6578697374696e672073746f726167652076616c75652e384d61785369676e61746f7269657310106400000004ec20546865206d6178696d756d20616d6f756e74206f66207369676e61746f7269657320616c6c6f77656420696e20746865206d756c74697369672e01dd0a1e20426f756e746965730120426f756e74696573102c426f756e7479436f756e74010010100000000004c0204e756d626572206f6620626f756e74792070726f706f73616c7320746861742068617665206265656e206d6164652e20426f756e746965730001040510e10a0400047820426f756e7469657320746861742068617665206265656e206d6164652e48426f756e74794465736372697074696f6e730001040510e90a0400048020546865206465736372697074696f6e206f66206561636820626f756e74792e3c426f756e7479417070726f76616c730100c109040004ec20426f756e747920696e646963657320746861742068617665206265656e20617070726f76656420627574206e6f74207965742066756e6465642e01c90301a9072444426f756e74794465706f73697442617365184000e40b5402000000000000000000000004e82054686520616d6f756e742068656c64206f6e206465706f73697420666f7220706c6163696e67206120626f756e74792070726f706f73616c2e60426f756e74794465706f7369745061796f757444656c6179101000c20100045901205468652064656c617920706572696f6420666f72207768696368206120626f756e74792062656e6566696369617279206e65656420746f2077616974206265666f726520636c61696d20746865207061796f75742e48426f756e7479557064617465506572696f64101080c61300046c20426f756e7479206475726174696f6e20696e20626c6f636b732e6043757261746f724465706f7369744d756c7469706c696572cd091020a10700101901205468652063757261746f72206465706f7369742069732063616c63756c6174656420617320612070657263656e74616765206f66207468652063757261746f72206665652e0039012054686973206465706f73697420686173206f7074696f6e616c20757070657220616e64206c6f77657220626f756e64732077697468206043757261746f724465706f7369744d61786020616e6454206043757261746f724465706f7369744d696e602e4443757261746f724465706f7369744d61782502440100204aa9d10100000000000000000000044901204d6178696d756d20616d6f756e74206f662066756e647320746861742073686f756c6420626520706c6163656420696e2061206465706f73697420666f72206d616b696e6720612070726f706f73616c2e4443757261746f724465706f7369744d696e2502440100e87648170000000000000000000000044901204d696e696d756d20616d6f756e74206f662066756e647320746861742073686f756c6420626520706c6163656420696e2061206465706f73697420666f72206d616b696e6720612070726f706f73616c2e48426f756e747956616c75654d696e696d756d184000e876481700000000000000000000000470204d696e696d756d2076616c756520666f72206120626f756e74792e48446174614465706f73697450657242797465184000e1f5050000000000000000000000000461012054686520616d6f756e742068656c64206f6e206465706f7369742070657220627974652077697468696e2074686520746970207265706f727420726561736f6e206f7220626f756e7479206465736372697074696f6e2e4c4d6178696d756d526561736f6e4c656e6774681010004000000c88204d6178696d756d2061636365707461626c6520726561736f6e206c656e6774682e0065012042656e63686d61726b7320646570656e64206f6e20746869732076616c75652c206265207375726520746f2075706461746520776569676874732066696c65207768656e206368616e67696e6720746869732076616c756501ed0a22344368696c64426f756e7469657301344368696c64426f756e7469657314404368696c64426f756e7479436f756e7401001010000000000480204e756d626572206f6620746f74616c206368696c6420626f756e746965732e4c506172656e744368696c64426f756e74696573010104051010100000000008b0204e756d626572206f66206368696c6420626f756e746965732070657220706172656e7420626f756e74792ee0204d6170206f6620706172656e7420626f756e747920696e64657820746f206e756d626572206f66206368696c6420626f756e746965732e344368696c64426f756e74696573000108050580f10a04000494204368696c6420626f756e7469657320746861742068617665206265656e2061646465642e5c4368696c64426f756e74794465736372697074696f6e730001040510e90a0400049820546865206465736372697074696f6e206f662065616368206368696c642d626f756e74792e4c4368696c6472656e43757261746f72466565730101040510184000000000000000000000000000000000040101205468652063756d756c6174697665206368696c642d626f756e74792063757261746f722066656520666f72206561636820706172656e7420626f756e74792e01cd0301ad0708644d61784163746976654368696c64426f756e7479436f756e74101064000000041d01204d6178696d756d206e756d626572206f66206368696c6420626f756e7469657320746861742063616e20626520616464656420746f206120706172656e7420626f756e74792e5c4368696c64426f756e747956616c75654d696e696d756d184000e40b540200000000000000000000000488204d696e696d756d2076616c756520666f722061206368696c642d626f756e74792e01f90a2668456c656374696f6e50726f76696465724d756c746950686173650168456c656374696f6e50726f76696465724d756c746950686173652814526f756e64010010100100000018ac20496e7465726e616c20636f756e74657220666f7220746865206e756d626572206f6620726f756e64732e00550120546869732069732075736566756c20666f722064652d6475706c69636174696f6e206f66207472616e73616374696f6e73207375626d697474656420746f2074686520706f6f6c2c20616e642067656e6572616c6c20646961676e6f7374696373206f66207468652070616c6c65742e004d012054686973206973206d6572656c7920696e6372656d656e746564206f6e6365207065722065766572792074696d65207468617420616e20757073747265616d2060656c656374602069732063616c6c65642e3043757272656e7450686173650100b9070400043c2043757272656e742070686173652e38517565756564536f6c7574696f6e0000fd0a04000c3d012043757272656e74206265737420736f6c7574696f6e2c207369676e6564206f7220756e7369676e65642c2071756575656420746f2062652072657475726e65642075706f6e2060656c656374602e006020416c7761797320736f727465642062792073636f72652e20536e617073686f740000050b0400107020536e617073686f742064617461206f662074686520726f756e642e005d01205468697320697320637265617465642061742074686520626567696e6e696e67206f6620746865207369676e656420706861736520616e6420636c65617265642075706f6e2063616c6c696e672060656c656374602e2901204e6f74653a20546869732073746f726167652074797065206d757374206f6e6c79206265206d757461746564207468726f756768205b60536e617073686f7457726170706572605d2e384465736972656454617267657473000010040010cc2044657369726564206e756d626572206f66207461726765747320746f20656c65637420666f72207468697320726f756e642e00a8204f6e6c7920657869737473207768656e205b60536e617073686f74605d2069732070726573656e742e2901204e6f74653a20546869732073746f726167652074797065206d757374206f6e6c79206265206d757461746564207468726f756768205b60536e617073686f7457726170706572605d2e40536e617073686f744d657461646174610000a9040400109820546865206d65746164617461206f6620746865205b60526f756e64536e617073686f74605d00a8204f6e6c7920657869737473207768656e205b60536e617073686f74605d2069732070726573656e742e2901204e6f74653a20546869732073746f726167652074797065206d757374206f6e6c79206265206d757461746564207468726f756768205b60536e617073686f7457726170706572605d2e645369676e65645375626d697373696f6e4e657874496e646578010010100000000024010120546865206e65787420696e64657820746f2062652061737369676e656420746f20616e20696e636f6d696e67207369676e6564207375626d697373696f6e2e007501204576657279206163636570746564207375626d697373696f6e2069732061737369676e6564206120756e6971756520696e6465783b207468617420696e64657820697320626f756e6420746f207468617420706172746963756c61726501207375626d697373696f6e20666f7220746865206475726174696f6e206f662074686520656c656374696f6e2e204f6e20656c656374696f6e2066696e616c697a6174696f6e2c20746865206e65787420696e6465782069733020726573657420746f20302e0069012057652063616e2774206a7573742075736520605369676e65645375626d697373696f6e496e64696365732e6c656e2829602c206265636175736520746861742773206120626f756e646564207365743b20706173742069747359012063617061636974792c2069742077696c6c2073696d706c792073617475726174652e2057652063616e2774206a7573742069746572617465206f76657220605369676e65645375626d697373696f6e734d6170602cf4206265636175736520697465726174696f6e20697320736c6f772e20496e73746561642c2077652073746f7265207468652076616c756520686572652e5c5369676e65645375626d697373696f6e496e64696365730100110b0400186d01204120736f727465642c20626f756e64656420766563746f72206f6620602873636f72652c20626c6f636b5f6e756d6265722c20696e64657829602c20776865726520656163682060696e6465786020706f696e747320746f2061782076616c756520696e20605369676e65645375626d697373696f6e73602e007101205765206e65766572206e65656420746f2070726f63657373206d6f7265207468616e20612073696e676c65207369676e6564207375626d697373696f6e20617420612074696d652e205369676e6564207375626d697373696f6e7375012063616e206265207175697465206c617267652c20736f2077652772652077696c6c696e6720746f207061792074686520636f7374206f66206d756c7469706c6520646174616261736520616363657373657320746f206163636573732101207468656d206f6e6520617420612074696d6520696e7374656164206f662072656164696e6720616e64206465636f64696e6720616c6c206f66207468656d206174206f6e63652e505369676e65645375626d697373696f6e734d617000010405101d0b04001c7420556e636865636b65642c207369676e656420736f6c7574696f6e732e00690120546f676574686572207769746820605375626d697373696f6e496e6469636573602c20746869732073746f726573206120626f756e64656420736574206f6620605369676e65645375626d697373696f6e7360207768696c65ec20616c6c6f77696e6720757320746f206b656570206f6e6c7920612073696e676c65206f6e6520696e206d656d6f727920617420612074696d652e0069012054776f78206e6f74653a20746865206b6579206f6620746865206d617020697320616e206175746f2d696e6372656d656e74696e6720696e6465782077686963682075736572732063616e6e6f7420696e7370656374206f72f4206166666563743b2077652073686f756c646e2774206e65656420612063727970746f67726170686963616c6c7920736563757265206861736865722e544d696e696d756d556e7472757374656453636f72650000a5040400105d0120546865206d696e696d756d2073636f7265207468617420656163682027756e747275737465642720736f6c7574696f6e206d7573742061747461696e20696e206f7264657220746f20626520636f6e7369646572656428206665617369626c652e00b82043616e206265207365742076696120607365745f6d696e696d756d5f756e747275737465645f73636f7265602e01d10301b1074034556e7369676e656450686173651010580200000480204475726174696f6e206f662074686520756e7369676e65642070686173652e2c5369676e656450686173651010580200000478204475726174696f6e206f6620746865207369676e65642070686173652e544265747465725369676e65645468726573686f6c64ac1000000000084d0120546865206d696e696d756d20616d6f756e74206f6620696d70726f76656d656e7420746f2074686520736f6c7574696f6e2073636f7265207468617420646566696e6573206120736f6c7574696f6e2061737820226265747465722220696e20746865205369676e65642070686173652e384f6666636861696e52657065617410101200000010b42054686520726570656174207468726573686f6c64206f6620746865206f6666636861696e20776f726b65722e00610120466f72206578616d706c652c20696620697420697320352c2074686174206d65616e732074686174206174206c65617374203520626c6f636b732077696c6c20656c61707365206265747765656e20617474656d7074738420746f207375626d69742074686520776f726b6572277320736f6c7574696f6e2e3c4d696e657254785072696f726974792c2065666666666666e604250120546865207072696f72697479206f662074686520756e7369676e6564207472616e73616374696f6e207375626d697474656420696e2074686520756e7369676e65642d7068617365505369676e65644d61785375626d697373696f6e731010100000001ce4204d6178696d756d206e756d626572206f66207369676e6564207375626d697373696f6e7320746861742063616e206265207175657565642e005501204974206973206265737420746f2061766f69642061646a757374696e67207468697320647572696e6720616e20656c656374696f6e2c20617320697420696d706163747320646f776e73747265616d2064617461650120737472756374757265732e20496e20706172746963756c61722c20605369676e65645375626d697373696f6e496e64696365733c543e6020697320626f756e646564206f6e20746869732076616c75652e20496620796f75f42075706461746520746869732076616c756520647572696e6720616e20656c656374696f6e2c20796f75205f6d7573745f20656e7375726520746861744d0120605369676e65645375626d697373696f6e496e64696365732e6c656e282960206973206c657373207468616e206f7220657175616c20746f20746865206e65772076616c75652e204f74686572776973652cf020617474656d70747320746f207375626d6974206e657720736f6c7574696f6e73206d617920636175736520612072756e74696d652070616e69632e3c5369676e65644d617857656967687424400b08c77258550113a3703d0ad7a370bd1494204d6178696d756d20776569676874206f662061207369676e656420736f6c7574696f6e2e005d01204966205b60436f6e6669673a3a4d696e6572436f6e666967605d206973206265696e6720696d706c656d656e74656420746f207375626d6974207369676e656420736f6c7574696f6e7320286f757473696465206f663d0120746869732070616c6c6574292c207468656e205b604d696e6572436f6e6669673a3a736f6c7574696f6e5f776569676874605d206973207573656420746f20636f6d7061726520616761696e73743020746869732076616c75652e405369676e65644d6178526566756e647310100400000004190120546865206d6178696d756d20616d6f756e74206f6620756e636865636b656420736f6c7574696f6e7320746f20726566756e64207468652063616c6c2066656520666f722e405369676e656452657761726442617365184000e40b54020000000000000000000000048820426173652072657761726420666f722061207369676e656420736f6c7574696f6e445369676e65644465706f736974427974651840787d010000000000000000000000000004a0205065722d62797465206465706f73697420666f722061207369676e656420736f6c7574696f6e2e4c5369676e65644465706f73697457656967687418400000000000000000000000000000000004a8205065722d776569676874206465706f73697420666f722061207369676e656420736f6c7574696f6e2e284d617857696e6e6572731010b004000010350120546865206d6178696d756d206e756d626572206f662077696e6e65727320746861742063616e20626520656c656374656420627920746869732060456c656374696f6e50726f7669646572604020696d706c656d656e746174696f6e2e005101204e6f74653a2054686973206d75737420616c776179732062652067726561746572206f7220657175616c20746f2060543a3a4461746150726f76696465723a3a646573697265645f746172676574732829602e384d696e65724d61784c656e67746810100000360000384d696e65724d617857656967687424400b08c77258550113a3703d0ad7a370bd00544d696e65724d6178566f746573506572566f746572101010000000003c4d696e65724d617857696e6e6572731010b00400000001210b2424566f7465724c6973740124566f7465724c6973740c244c6973744e6f6465730001040500250b04000c8020412073696e676c65206e6f64652c2077697468696e20736f6d65206261672e000501204e6f6465732073746f7265206c696e6b7320666f727761726420616e64206261636b2077697468696e207468656972207265737065637469766520626167732e4c436f756e746572466f724c6973744e6f646573010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d6170204c69737442616773000104052c290b04000c642041206261672073746f72656420696e2073746f726167652e0019012053746f7265732061206042616760207374727563742c2077686963682073746f726573206865616420616e64207461696c20706f696e7465727320746f20697473656c662e01c50401c10704344261675468726573686f6c64732d0b0919210300e40b5402000000f39e809702000000a8b197e20200000094492e3603000000279c3a930300000003bccefa0300000042c01b6e040000001b4775ee04000000385e557d0500000046dc601c0600000089386ccd06000000b6ee809207000000fe7ee36d08000000e81b1a6209000000b019f4710a000000103592a00b000000cfc96ff10c00000041146d680e000000e79bda0910000000cee885da1100000028a9c7df13000000bb70931f160000008e4089a018000000810a096a1b000000366a48841e0000005bd36af821000000807c9cd025000000c95530182a000000bd63c1db2e00000071e0572934000000689092103a000000edc4d4a240000000699379f3470000008fd80c18500000004baf8a28590000006a16a63f630000000995177b6e00000078c5f4fb7a00000062c811e78800000051bf6d6598000000048eaba4a9000000544698d7bc00000091cac036d2000000175f1801ea000000bd15b27c0401000043358ff721010000b8fc84c84201000099673c506701000007e44efa8f010000b341833ebd010000027f2ea2ef0100009883bcb927020000164d652a66020000b49513acab0200002d8e820bf9020000a1e6982c4f030000a616080daf030000cc9d37c719040000a0d584959004000042e7e0d514050000028cd70da80500000f750aef4b060000ea8d2e5c02070000c3cb996ecd070000b1e5717caf080000aa2b8e1fab090000b5c1203dc30a000026d03d0efb0b000070c75929560d0000ebadda8cd80e0000f797dbaa86100000cff04476651200001f2660717a14000009a611becb1600001dfbe82f60190000943a3c603f1c00008afe89c4711f0000ced963c70023000003a92ae4f6260000fe72eec55f2b000036c9cc6948300000dae33245bf350000062a7470d43b00007c9732d69942000084a32468234a0000571ad45987520000e7f10262de5b00000db8760344660000ae0401ded67100007d9eb308b97e00001e044a76108d00003a1df064079d0000e04fafdaccae00005679f02f95c2000095c3aaa99ad80000967c05251ef10000177a66d6670c010028cb1f1ec82a0100fa282f75984c0100d57dc8743c7201007dc4b3fb229c0100365cde74c7ca01009eb8e142b3fe01000c31ae547f3802005fe101e8d57802006373da7e74c0020051d1a60d2e100300c7e9a468ed68030061c091f7b7cb0300bf27a1b7b03904007b1499941bb404008523ed22613c050069a5d4c512d40500ec8c934def7c0600f5aa901be83807008cbe5ddb260a080002978ce113f30800fae314435df60900ddf12dbafe160b002ebadc6f4a580c000c5518c4f2bd0d00f0bb5431154c0f00498e866b46071100b2c153de9ff41200278a2fb2ce191500b2399f84247d1700e199e704aa251a00ba13f5ab331b1d00264785cc7866200088bf803f2d1124001c9823f81d262800ccc422d450b12c00f088820528c03100367c6d7e896137006e9329d30aa63d008cbc6c1322a044000070f32a5c644c00b43b84699909550080b4abe450a95e00a0cda979db5f69004cc27f4cc74c7500d0ac0eba34938200483e0ccf3d5a910068c68e7469cda100281e6fa52b1db40098a92326747fc800f09a74634d30df0080cdfc4b8d72f8009014602d9a901401f0b413d945dd330120973596c1b4560150dcfbaead7d7d01e01198b947aaa80130c7ee16bbb9d801206e488697390e02a0fa4b1d72c74902c0117170b5128c02808a1643a6ded502c0f823b1a204280380af5970a2768303c06f2d87ff41e90340937fac8f925a040091097117b6d804400fdf5b212065050049c149446e0106008ebca6e56caf0600595686851c71078068aa34a4b7480880a1e29e52b9380900bdabe880e4430a002a72b4204c6d0b80f1c013335cb80c00a03ccbdce3280e80b8629a9e20c30f00de5693d2ca8b11005d7f4c93238813001a87df3504be1500a7ce4b84ef3318000110fbea24f11a00802ae5d1b5fd1d0022a134609d62210044216bf0da2925000261f1828f5e29006620cf851e0d2e008410195252433300a0c18fca8410390026ad1493cc853f00d0cd24662fb646009ce19a1cdab64e0058ccc20c5f9f5700200a7578fb89610030bbbbd6e4936c0060cba7dc9edd7800b83bc0425b8b8600b886236164c59500f8f15fdc93b8a600206a91c0d696b900d8efe28fc097ce0068299bf52ef9e5ffffffffffffffffacd020546865206c697374206f66207468726573686f6c64732073657061726174696e672074686520766172696f757320626167732e00490120496473206172652073657061726174656420696e746f20756e736f727465642062616773206163636f7264696e6720746f2074686569722073636f72652e205468697320737065636966696573207468656101207468726573686f6c64732073657061726174696e672074686520626167732e20416e20696427732062616720697320746865206c6172676573742062616720666f722077686963682074686520696427732073636f7265b8206973206c657373207468616e206f7220657175616c20746f20697473207570706572207468726573686f6c642e006501205768656e20696473206172652069746572617465642c2068696768657220626167732061726520697465726174656420636f6d706c6574656c79206265666f7265206c6f77657220626167732e2054686973206d65616e735901207468617420697465726174696f6e206973205f73656d692d736f727465645f3a20696473206f66206869676865722073636f72652074656e6420746f20636f6d65206265666f726520696473206f66206c6f7765722d012073636f72652c206275742070656572206964732077697468696e206120706172746963756c6172206261672061726520736f7274656420696e20696e73657274696f6e206f726465722e006820232045787072657373696e672074686520636f6e7374616e74004d01205468697320636f6e7374616e74206d75737420626520736f7274656420696e207374726963746c7920696e6372656173696e67206f726465722e204475706c6963617465206974656d7320617265206e6f742c207065726d69747465642e00410120546865726520697320616e20696d706c696564207570706572206c696d6974206f66206053636f72653a3a4d4158603b20746861742076616c756520646f6573206e6f74206e65656420746f2062652101207370656369666965642077697468696e20746865206261672e20466f7220616e792074776f207468726573686f6c64206c697374732c206966206f6e6520656e647320776974683101206053636f72653a3a4d4158602c20746865206f74686572206f6e6520646f6573206e6f742c20616e64207468657920617265206f746865727769736520657175616c2c207468652074776f7c206c697374732077696c6c20626568617665206964656e746963616c6c792e003820232043616c63756c6174696f6e005501204974206973207265636f6d6d656e64656420746f2067656e65726174652074686520736574206f66207468726573686f6c647320696e20612067656f6d6574726963207365726965732c2073756368207468617441012074686572652065786973747320736f6d6520636f6e7374616e7420726174696f2073756368207468617420607468726573686f6c645b6b202b20315d203d3d20287468726573686f6c645b6b5d202ad020636f6e7374616e745f726174696f292e6d6178287468726573686f6c645b6b5d202b2031296020666f7220616c6c20606b602e005901205468652068656c7065727320696e2074686520602f7574696c732f6672616d652f67656e65726174652d6261677360206d6f64756c652063616e2073696d706c69667920746869732063616c63756c6174696f6e2e002c2023204578616d706c6573005101202d20496620604261675468726573686f6c64733a3a67657428292e69735f656d7074792829602c207468656e20616c6c20696473206172652070757420696e746f207468652073616d65206261672c20616e64b0202020697465726174696f6e206973207374726963746c7920696e20696e73657274696f6e206f726465722e6101202d20496620604261675468726573686f6c64733a3a67657428292e6c656e2829203d3d203634602c20616e6420746865207468726573686f6c6473206172652064657465726d696e6564206163636f7264696e6720746f11012020207468652070726f63656475726520676976656e2061626f76652c207468656e2074686520636f6e7374616e7420726174696f20697320657175616c20746f20322e6501202d20496620604261675468726573686f6c64733a3a67657428292e6c656e2829203d3d20323030602c20616e6420746865207468726573686f6c6473206172652064657465726d696e6564206163636f7264696e6720746f59012020207468652070726f63656475726520676976656e2061626f76652c207468656e2074686520636f6e7374616e7420726174696f20697320617070726f78696d6174656c7920657175616c20746f20312e3234382e6101202d20496620746865207468726573686f6c64206c69737420626567696e7320605b312c20322c20332c202e2e2e5d602c207468656e20616e20696420776974682073636f72652030206f7220312077696c6c2066616c6cf0202020696e746f2062616720302c20616e20696420776974682073636f726520322077696c6c2066616c6c20696e746f2062616720312c206574632e00302023204d6967726174696f6e00610120496e20746865206576656e7420746861742074686973206c6973742065766572206368616e6765732c206120636f7079206f6620746865206f6c642062616773206c697374206d7573742062652072657461696e65642e5d012057697468207468617420604c6973743a3a6d696772617465602063616e2062652063616c6c65642c2077686963682077696c6c20706572666f726d2074686520617070726f707269617465206d6967726174696f6e2e01310b253c4e6f6d696e6174696f6e506f6f6c73013c4e6f6d696e6174696f6e506f6f6c735440546f74616c56616c75654c6f636b65640100184000000000000000000000000000000000148c205468652073756d206f662066756e6473206163726f737320616c6c20706f6f6c732e0071012054686973206d69676874206265206c6f77657220627574206e6576657220686967686572207468616e207468652073756d206f662060746f74616c5f62616c616e636560206f6620616c6c205b60506f6f6c4d656d62657273605d590120626563617573652063616c6c696e672060706f6f6c5f77697468647261775f756e626f6e64656460206d696768742064656372656173652074686520746f74616c207374616b65206f662074686520706f6f6c277329012060626f6e6465645f6163636f756e746020776974686f75742061646a757374696e67207468652070616c6c65742d696e7465726e616c2060556e626f6e64696e67506f6f6c6027732e2c4d696e4a6f696e426f6e640100184000000000000000000000000000000000049c204d696e696d756d20616d6f756e7420746f20626f6e6420746f206a6f696e206120706f6f6c2e344d696e437265617465426f6e6401001840000000000000000000000000000000001ca0204d696e696d756d20626f6e6420726571756972656420746f20637265617465206120706f6f6c2e00650120546869732069732074686520616d6f756e74207468617420746865206465706f7369746f72206d7573742070757420617320746865697220696e697469616c207374616b6520696e2074686520706f6f6c2c20617320616e8820696e6469636174696f6e206f662022736b696e20696e207468652067616d65222e0069012054686973206973207468652076616c756520746861742077696c6c20616c7761797320657869737420696e20746865207374616b696e67206c6564676572206f662074686520706f6f6c20626f6e646564206163636f756e7480207768696c6520616c6c206f74686572206163636f756e7473206c656176652e204d6178506f6f6c730000100400086901204d6178696d756d206e756d626572206f66206e6f6d696e6174696f6e20706f6f6c7320746861742063616e2065786973742e20496620604e6f6e65602c207468656e20616e20756e626f756e646564206e756d626572206f664420706f6f6c732063616e2065786973742e384d6178506f6f6c4d656d626572730000100400084901204d6178696d756d206e756d626572206f66206d656d6265727320746861742063616e20657869737420696e207468652073797374656d2e20496620604e6f6e65602c207468656e2074686520636f756e74b8206d656d6265727320617265206e6f7420626f756e64206f6e20612073797374656d20776964652062617369732e544d6178506f6f6c4d656d62657273506572506f6f6c0000100400084101204d6178696d756d206e756d626572206f66206d656d626572732074686174206d61792062656c6f6e6720746f20706f6f6c2e20496620604e6f6e65602c207468656e2074686520636f756e74206f66a8206d656d62657273206973206e6f7420626f756e64206f6e20612070657220706f6f6c2062617369732e4c476c6f62616c4d6178436f6d6d697373696f6e0000ac04000c690120546865206d6178696d756d20636f6d6d697373696f6e20746861742063616e2062652063686172676564206279206120706f6f6c2e2055736564206f6e20636f6d6d697373696f6e207061796f75747320746f20626f756e64250120706f6f6c20636f6d6d697373696f6e73207468617420617265203e2060476c6f62616c4d6178436f6d6d697373696f6e602c206e65636573736172792069662061206675747572650d012060476c6f62616c4d6178436f6d6d697373696f6e60206973206c6f776572207468616e20736f6d652063757272656e7420706f6f6c20636f6d6d697373696f6e732e2c506f6f6c4d656d626572730001040500390b04000c4020416374697665206d656d626572732e00d02054574f582d4e4f54453a20534146452073696e636520604163636f756e7449646020697320612073656375726520686173682e54436f756e746572466f72506f6f6c4d656d62657273010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d61702c426f6e646564506f6f6c730001040510450b040004682053746f7261676520666f7220626f6e64656420706f6f6c732e54436f756e746572466f72426f6e646564506f6f6c73010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d61702c526577617264506f6f6c730001040510590b04000875012052657761726420706f6f6c732e2054686973206973207768657265207468657265207265776172647320666f72206561636820706f6f6c20616363756d756c6174652e205768656e2061206d656d62657273207061796f7574206973590120636c61696d65642c207468652062616c616e636520636f6d6573206f757420666f207468652072657761726420706f6f6c2e204b657965642062792074686520626f6e64656420706f6f6c73206163636f756e742e54436f756e746572466f72526577617264506f6f6c73010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d61703c537562506f6f6c7353746f7261676500010405105d0b04000819012047726f757073206f6620756e626f6e64696e6720706f6f6c732e20456163682067726f7570206f6620756e626f6e64696e6720706f6f6c732062656c6f6e677320746f2061290120626f6e64656420706f6f6c2c2068656e636520746865206e616d65207375622d706f6f6c732e204b657965642062792074686520626f6e64656420706f6f6c73206163636f756e742e64436f756e746572466f72537562506f6f6c7353746f72616765010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d6170204d657461646174610101040510750b0400045c204d6574616461746120666f722074686520706f6f6c2e48436f756e746572466f724d65746164617461010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d6170284c617374506f6f6c4964010010100000000004d0204576657220696e6372656173696e67206e756d626572206f6620616c6c20706f6f6c73206372656174656420736f206661722e4c52657665727365506f6f6c49644c6f6f6b7570000104050010040010dc20412072657665727365206c6f6f6b75702066726f6d2074686520706f6f6c2773206163636f756e7420696420746f206974732069642e0055012054686973206973206f6e6c79207573656420666f7220736c617368696e672e20496e20616c6c206f7468657220696e7374616e6365732c2074686520706f6f6c20696420697320757365642c20616e6420746865c0206163636f756e7473206172652064657465726d696e6973746963616c6c7920646572697665642066726f6d2069742e74436f756e746572466f7252657665727365506f6f6c49644c6f6f6b7570010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d617040436c61696d5065726d697373696f6e730101040500e5040400040101204d61702066726f6d206120706f6f6c206d656d626572206163636f756e7420746f207468656972206f7074656420636c61696d207065726d697373696f6e2e01c90401c5070c2050616c6c65744964d1092070792f6e6f706c73048420546865206e6f6d696e6174696f6e20706f6f6c27732070616c6c65742069642e484d6178506f696e7473546f42616c616e636508040a301d0120546865206d6178696d756d20706f6f6c20706f696e74732d746f2d62616c616e636520726174696f207468617420616e20606f70656e6020706f6f6c2063616e20686176652e005501205468697320697320696d706f7274616e7420696e20746865206576656e7420736c617368696e672074616b657320706c61636520616e642074686520706f6f6c277320706f696e74732d746f2d62616c616e63657c20726174696f206265636f6d65732064697370726f706f7274696f6e616c2e006501204d6f72656f7665722c20746869732072656c6174657320746f207468652060526577617264436f756e7465726020747970652061732077656c6c2c206173207468652061726974686d65746963206f7065726174696f6e7355012061726520612066756e6374696f6e206f66206e756d626572206f6620706f696e74732c20616e642062792073657474696e6720746869732076616c756520746f20652e672e2031302c20796f7520656e73757265650120746861742074686520746f74616c206e756d626572206f6620706f696e747320696e207468652073797374656d20617265206174206d6f73742031302074696d65732074686520746f74616c5f69737375616e6365206f669c2074686520636861696e2c20696e20746865206162736f6c75746520776f72736520636173652e00490120466f7220612076616c7565206f662031302c20746865207468726573686f6c6420776f756c64206265206120706f6f6c20706f696e74732d746f2d62616c616e636520726174696f206f662031303a312e310120537563682061207363656e6172696f20776f756c6420616c736f20626520746865206571756976616c656e74206f662074686520706f6f6c206265696e672039302520736c61736865642e304d6178556e626f6e64696e67101020000000043d0120546865206d6178696d756d206e756d626572206f662073696d756c74616e656f757320756e626f6e64696e67206368756e6b7320746861742063616e20657869737420706572206d656d6265722e01790b272c46617374556e7374616b65012c46617374556e7374616b651010486561640000810b04000cc0205468652063757272656e74202268656164206f662074686520717565756522206265696e6720756e7374616b65642e00290120546865206865616420696e20697473656c662063616e2062652061206261746368206f6620757020746f205b60436f6e6669673a3a426174636853697a65605d207374616b6572732e14517565756500010405001804000cc020546865206d6170206f6620616c6c206163636f756e74732077697368696e6720746f20626520756e7374616b65642e003901204b6565707320747261636b206f6620604163636f756e744964602077697368696e6720746f20756e7374616b6520616e64206974277320636f72726573706f6e64696e67206465706f7369742e3c436f756e746572466f725175657565010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d61704c45726173546f436865636b506572426c6f636b0100101000000000208c204e756d626572206f66206572617320746f20636865636b2070657220626c6f636b2e0035012049662073657420746f20302c20746869732070616c6c657420646f6573206162736f6c7574656c79206e6f7468696e672e2043616e6e6f742062652073657420746f206d6f7265207468616e90205b60436f6e6669673a3a4d617845726173546f436865636b506572426c6f636b605d2e006501204261736564206f6e2074686520616d6f756e74206f662077656967687420617661696c61626c65206174205b6050616c6c65743a3a6f6e5f69646c65605d2c20757020746f2074686973206d616e792065726173206172655d0120636865636b65642e2054686520636865636b696e6720697320726570726573656e746564206279207570646174696e67205b60556e7374616b65526571756573743a3a636865636b6564605d2c207768696368206973502073746f72656420696e205b6048656164605d2e01fd0401c907041c4465706f736974184000e40b54020000000000000000000000086501204465706f73697420746f2074616b6520666f7220756e7374616b696e672c20746f206d616b6520737572652077652772652061626c6520746f20736c6173682074686520697420696e206f7264657220746f20636f766572c02074686520636f737473206f66207265736f7572636573206f6e20756e7375636365737366756c20756e7374616b652e018d0b284050617261636861696e734f726967696e00000000003234436f6e66696775726174696f6e0134436f6e66696775726174696f6e0c30416374697665436f6e6669670100910b41030000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001027000080b2e60e80c3c9018096980000000000000000000000000005000000010000000100000001000000000006000000640000000100000000000000000000000000000000000000020000000200000002000000000100000004c8205468652061637469766520636f6e66696775726174696f6e20666f72207468652063757272656e742073657373696f6e2e3850656e64696e67436f6e666967730100950b04001c7c2050656e64696e6720636f6e66696775726174696f6e206368616e6765732e00590120546869732069732061206c697374206f6620636f6e66696775726174696f6e206368616e6765732c2065616368207769746820612073657373696f6e20696e6465782061742077686963682069742073686f756c6430206265206170706c6965642e00610120546865206c69737420697320736f7274656420617363656e64696e672062792073657373696f6e20696e6465782e20416c736f2c2074686973206c6973742063616e206f6e6c7920636f6e7461696e206174206d6f7374fc2032206974656d733a20666f7220746865206e6578742073657373696f6e20616e6420666f722074686520607363686564756c65645f73657373696f6e602e58427970617373436f6e73697374656e6379436865636b01007804000861012049662074686973206973207365742c207468656e2074686520636f6e66696775726174696f6e20736574746572732077696c6c206279706173732074686520636f6e73697374656e637920636865636b732e2054686973b4206973206d65616e7420746f2062652075736564206f6e6c7920617320746865206c617374207265736f72742e0101050000019d0b332c5061726173536861726564012c5061726173536861726564104c43757272656e7453657373696f6e496e6465780100101000000000046c205468652063757272656e742073657373696f6e20696e6465782e5841637469766556616c696461746f72496e64696365730100a10b040008090120416c6c207468652076616c696461746f7273206163746976656c792070617274696369706174696e6720696e2070617261636861696e20636f6e73656e7375732eb020496e64696365732061726520696e746f207468652062726f616465722076616c696461746f72207365742e4c41637469766556616c696461746f724b6579730100a50b0400085501205468652070617261636861696e206174746573746174696f6e206b657973206f66207468652076616c696461746f7273206163746976656c792070617274696369706174696e6720696e2070617261636861696e1d0120636f6e73656e7375732e20546869732073686f756c64206265207468652073616d65206c656e677468206173206041637469766556616c696461746f72496e6469636573602e4c416c6c6f77656452656c6179506172656e74730100a90b140000000000046c20416c6c20616c6c6f7765642072656c61792d706172656e74732e012105000000343450617261496e636c7573696f6e013450617261496e636c7573696f6e0c54417661696c6162696c6974794269746669656c6473000104054505b50b040004650120546865206c6174657374206269746669656c6420666f7220656163682076616c696461746f722c20726566657272656420746f20627920746865697220696e64657820696e207468652076616c696461746f72207365742e4c50656e64696e67417661696c6162696c69747900010405b902b90b040004b42043616e646964617465732070656e64696e6720617661696c6162696c6974792062792060506172614964602e7850656e64696e67417661696c6162696c697479436f6d6d69746d656e747300010405b902690504000405012054686520636f6d6d69746d656e7473206f662063616e646964617465732070656e64696e6720617661696c6162696c6974792c2062792060506172614964602e01250501cd070001bd0b353050617261496e686572656e74013050617261496e686572656e740820496e636c7564656400008c040018ec20576865746865722074686520706172617320696e686572656e742077617320696e636c756465642077697468696e207468697320626c6f636b2e0069012054686520604f7074696f6e3c28293e60206973206566666563746976656c7920612060626f6f6c602c20627574206974206e6576657220686974732073746f7261676520696e2074686520604e6f6e65602076617269616e74bc2064756520746f207468652067756172616e74656573206f66204652414d4527732073746f7261676520415049732e004901204966207468697320697320604e6f6e65602061742074686520656e64206f662074686520626c6f636b2c2077652070616e696320616e642072656e6465722074686520626c6f636b20696e76616c69642e304f6e436861696e566f7465730000c10b04000445012053637261706564206f6e20636861696e206461746120666f722065787472616374696e67207265736f6c7665642064697370757465732061732077656c6c206173206261636b696e6720766f7465732e012905000001d50b3634506172615363686564756c65720134506172615363686564756c6572103c56616c696461746f7247726f7570730100d90b04001c6d0120416c6c207468652076616c696461746f722067726f7570732e204f6e6520666f72206561636820636f72652e20496e64696365732061726520696e746f206041637469766556616c696461746f727360202d206e6f74207468656d012062726f6164657220736574206f6620506f6c6b61646f742076616c696461746f72732c2062757420696e7374656164206a7573742074686520737562736574207573656420666f722070617261636861696e7320647572696e673820746869732073657373696f6e2e00490120426f756e643a20546865206e756d626572206f6620636f726573206973207468652073756d206f6620746865206e756d62657273206f662070617261636861696e7320616e6420706172617468726561646901206d756c7469706c65786572732e20526561736f6e61626c792c203130302d313030302e2054686520646f6d696e616e7420666163746f7220697320746865206e756d626572206f662076616c696461746f72733a20736166655020757070657220626f756e642061742031306b2e44417661696c6162696c697479436f7265730100dd0b0400205901204f6e6520656e74727920666f72206561636820617661696c6162696c69747920636f72652e20456e74726965732061726520604e6f6e65602069662074686520636f7265206973206e6f742063757272656e746c790d01206f636375706965642e2043616e2062652074656d706f726172696c792060536f6d6560206966207363686564756c656420627574206e6f74206f636375706965642e41012054686520692774682070617261636861696e2062656c6f6e677320746f20746865206927746820636f72652c2077697468207468652072656d61696e696e6720636f72657320616c6c206265696e676420706172617468726561642d6d756c7469706c65786572732e00d820426f756e64656420627920746865206d6178696d756d206f6620656974686572206f662074686573652074776f2076616c7565733ae42020202a20546865206e756d626572206f662070617261636861696e7320616e642070617261746872656164206d756c7469706c657865727345012020202a20546865206e756d626572206f662076616c696461746f727320646976696465642062792060636f6e66696775726174696f6e2e6d61785f76616c696461746f72735f7065725f636f7265602e4453657373696f6e5374617274426c6f636b01001010000000001c69012054686520626c6f636b206e756d626572207768657265207468652073657373696f6e207374617274206f636375727265642e205573656420746f20747261636b20686f77206d616e792067726f757020726f746174696f6e733c2068617665206f636375727265642e005501204e6f7465207468617420696e2074686520636f6e74657874206f662070617261636861696e73206d6f64756c6573207468652073657373696f6e206368616e6765206973207369676e616c656420647572696e6761012074686520626c6f636b20616e6420656e61637465642061742074686520656e64206f662074686520626c6f636b20286174207468652066696e616c697a6174696f6e2073746167652c20746f206265206578616374292e5901205468757320666f7220616c6c20696e74656e747320616e6420707572706f7365732074686520656666656374206f66207468652073657373696f6e206368616e6765206973206f6273657276656420617420746865650120626c6f636b20666f6c6c6f77696e67207468652073657373696f6e206368616e67652c20626c6f636b206e756d626572206f66207768696368207765207361766520696e20746869732073746f726167652076616c75652e28436c61696d51756575650100ed0b0400145901204f6e6520656e74727920666f72206561636820617661696c6162696c69747920636f72652e20546865206056656344657175656020726570726573656e7473207468652061737369676e6d656e747320746f2062656d01207363686564756c6564206f6e207468617420636f72652e20604e6f6e6560206973207573656420746f207369676e616c20746f206e6f74207363686564756c6520746865206e6578742070617261206f662074686520636f72655501206173207468657265206973206f6e652063757272656e746c79206265696e67207363686564756c65642e204e6f74207573696e6720604e6f6e6560206865726520776f756c64206f76657277726974652074686571012060436f726553746174656020696e207468652072756e74696d65204150492e205468652076616c756520636f6e7461696e656420686572652077696c6c206e6f742062652076616c69642061667465722074686520656e64206f666d01206120626c6f636b2e2052756e74696d6520415049732073686f756c64206265207573656420746f2064657465726d696e65207363686564756c656420636f7265732f20666f7220746865207570636f6d696e6720626c6f636b2e0000000037145061726173011450617261735040507666416374697665566f74654d6170000104056505fd0b040010b420416c6c2063757272656e746c792061637469766520505646207072652d636865636b696e6720766f7465732e002c20496e76617269616e743a7501202d20546865726520617265206e6f20505646207072652d636865636b696e6720766f74657320746861742065786973747320696e206c69737420627574206e6f7420696e207468652073657420616e6420766963652076657273612e44507666416374697665566f74654c69737401000d0c040004350120546865206c697374206f6620616c6c2063757272656e746c79206163746976652050564620766f7465732e20417578696c6961727920746f2060507666416374697665566f74654d6170602e2850617261636861696e730100110c040010690120416c6c206c6561736520686f6c64696e672070617261636861696e732e204f72646572656420617363656e64696e672062792060506172614964602e204f6e2064656d616e642070617261636861696e7320617265206e6f742820696e636c756465642e00e820436f6e7369646572207573696e6720746865205b6050617261636861696e734361636865605d2074797065206f66206d6f64696679696e672e38506172614c6966656379636c657300010405b902150c040004bc205468652063757272656e74206c6966656379636c65206f66206120616c6c206b6e6f776e2050617261204944732e14486561647300010405b9028505040004a02054686520686561642d64617461206f66206576657279207265676973746572656420706172612e444d6f7374526563656e74436f6e7465787400010405b9021004000429012054686520636f6e74657874202872656c61792d636861696e20626c6f636b206e756d62657229206f6620746865206d6f737420726563656e742070617261636861696e20686561642e3c43757272656e74436f64654861736800010405b902650504000cb4205468652076616c69646174696f6e20636f64652068617368206f66206576657279206c69766520706172612e00e420436f72726573706f6e64696e6720636f64652063616e206265207265747269657665642077697468205b60436f6465427948617368605d2e3050617374436f64654861736800010405190c650504001061012041637475616c207061737420636f646520686173682c20696e646963617465642062792074686520706172612069642061732077656c6c2061732074686520626c6f636b206e756d6265722061742077686963682069744420626563616d65206f757464617465642e00e420436f72726573706f6e64696e6720636f64652063616e206265207265747269657665642077697468205b60436f6465427948617368605d2e3050617374436f64654d65746101010405b9021d0c0800000c4901205061737420636f6465206f662070617261636861696e732e205468652070617261636861696e73207468656d73656c766573206d6179206e6f74206265207265676973746572656420616e796d6f72652c49012062757420776520616c736f206b65657020746865697220636f6465206f6e2d636861696e20666f72207468652073616d6520616d6f756e74206f662074696d65206173206f7574646174656420636f6465b020746f206b65657020697420617661696c61626c6520666f7220617070726f76616c20636865636b6572732e3c50617374436f64655072756e696e670100290c04001869012057686963682070617261732068617665207061737420636f64652074686174206e65656473207072756e696e6720616e64207468652072656c61792d636861696e20626c6f636b2061742077686963682074686520636f6465690120776173207265706c616365642e204e6f746520746861742074686973206973207468652061637475616c20686569676874206f662074686520696e636c7564656420626c6f636b2c206e6f74207468652065787065637465643d01206865696768742061742077686963682074686520636f6465207570677261646520776f756c64206265206170706c6965642c20616c74686f7567682074686579206d617920626520657175616c2e6d01205468697320697320746f20656e737572652074686520656e7469726520616363657074616e636520706572696f6420697320636f76657265642c206e6f7420616e206f666673657420616363657074616e636520706572696f646d01207374617274696e672066726f6d207468652074696d65206174207768696368207468652070617261636861696e20706572636569766573206120636f6465207570677261646520617320686176696e67206f636375727265642e5501204d756c7469706c6520656e747269657320666f7220612073696e676c65207061726120617265207065726d69747465642e204f72646572656420617363656e64696e6720627920626c6f636b206e756d6265722e48467574757265436f6465557067726164657300010405b9021004000c29012054686520626c6f636b206e756d6265722061742077686963682074686520706c616e6e656420636f6465206368616e676520697320657870656374656420666f72206120706172612e650120546865206368616e67652077696c6c206265206170706c696564206166746572207468652066697273742070617261626c6f636b20666f72207468697320494420696e636c75646564207768696368206578656375746573190120696e2074686520636f6e74657874206f6620612072656c617920636861696e20626c6f636b20776974682061206e756d626572203e3d206065787065637465645f6174602e38467574757265436f64654861736800010405b902650504000c9c205468652061637475616c2066757475726520636f64652068617368206f66206120706172612e00e420436f72726573706f6e64696e6720636f64652063616e206265207265747269657665642077697468205b60436f6465427948617368605d2e5055706772616465476f41686561645369676e616c00010405b9022d0c040028750120546869732069732075736564206279207468652072656c61792d636861696e20746f20636f6d6d756e696361746520746f20612070617261636861696e206120676f2d6168656164207769746820696e2074686520757067726164652c2070726f6365647572652e00750120546869732076616c756520697320616273656e74207768656e20746865726520617265206e6f207570677261646573207363686564756c6564206f7220647572696e67207468652074696d65207468652072656c617920636861696e550120706572666f726d732074686520636865636b732e20497420697320736574206174207468652066697273742072656c61792d636861696e20626c6f636b207768656e2074686520636f72726573706f6e64696e6775012070617261636861696e2063616e207377697463682069747320757067726164652066756e6374696f6e2e20417320736f6f6e206173207468652070617261636861696e277320626c6f636b20697320696e636c756465642c20746865702076616c7565206765747320726573657420746f20604e6f6e65602e006501204e4f544520746861742074686973206669656c6420697320757365642062792070617261636861696e7320766961206d65726b6c652073746f726167652070726f6f66732c207468657265666f7265206368616e67696e67c42074686520666f726d61742077696c6c2072657175697265206d6967726174696f6e206f662070617261636861696e732e60557067726164655265737472696374696f6e5369676e616c00010405b902310c040024690120546869732069732075736564206279207468652072656c61792d636861696e20746f20636f6d6d756e6963617465207468617420746865726520617265207265737472696374696f6e7320666f7220706572666f726d696e677c20616e207570677261646520666f7220746869732070617261636861696e2e0059012054686973206d617920626520612062656361757365207468652070617261636861696e20776169747320666f7220746865207570677261646520636f6f6c646f776e20746f206578706972652e20416e6f746865726d0120706f74656e7469616c207573652063617365206973207768656e2077652077616e7420746f20706572666f726d20736f6d65206d61696e74656e616e63652028737563682061732073746f72616765206d6967726174696f6e29e020776520636f756c6420726573747269637420757067726164657320746f206d616b65207468652070726f636573732073696d706c65722e006501204e4f544520746861742074686973206669656c6420697320757365642062792070617261636861696e7320766961206d65726b6c652073746f726167652070726f6f66732c207468657265666f7265206368616e67696e67c42074686520666f726d61742077696c6c2072657175697265206d6967726174696f6e206f662070617261636861696e732e4055706772616465436f6f6c646f776e730100290c04000c510120546865206c697374206f662070617261636861696e73207468617420617265206177616974696e6720666f722074686569722075706772616465207265737472696374696f6e20746f20636f6f6c646f776e2e008c204f72646572656420617363656e64696e6720627920626c6f636b206e756d6265722e405570636f6d696e6755706772616465730100290c040010590120546865206c697374206f66207570636f6d696e6720636f64652075706772616465732e2045616368206974656d20697320612070616972206f66207768696368207061726120706572666f726d73206120636f6465e8207570677261646520616e642061742077686963682072656c61792d636861696e20626c6f636b2069742069732065787065637465642061742e008c204f72646572656420617363656e64696e6720627920626c6f636b206e756d6265722e30416374696f6e7351756575650101040510110c04000415012054686520616374696f6e7320746f20706572666f726d20647572696e6720746865207374617274206f6620612073706563696669632073657373696f6e20696e6465782e505570636f6d696e67506172617347656e6573697300010405b902350c040010a0205570636f6d696e6720706172617320696e7374616e74696174696f6e20617267756d656e74732e006501204e4f5445207468617420616674657220505646207072652d636865636b696e6720697320656e61626c65642074686520706172612067656e65736973206172672077696c6c2068617665206974277320636f646520736574610120746f20656d7074792e20496e73746561642c2074686520636f64652077696c6c20626520736176656420696e746f207468652073746f726167652072696768742061776179207669612060436f6465427948617368602e38436f64654279486173685265667301010406650510100000000004290120546865206e756d626572206f66207265666572656e6365206f6e207468652076616c69646174696f6e20636f646520696e205b60436f6465427948617368605d2073746f726167652e28436f64654279486173680001040665058105040010902056616c69646174696f6e20636f64652073746f7265642062792069747320686173682e00310120546869732073746f7261676520697320636f6e73697374656e742077697468205b60467574757265436f646548617368605d2c205b6043757272656e74436f646548617368605d20616e6448205b6050617374436f646548617368605d2e01b50501dd070440556e7369676e65645072696f726974792c20ffffffffffffffff0001390c382c496e697469616c697a6572012c496e697469616c697a65720838486173496e697469616c697a656400008c04002021012057686574686572207468652070617261636861696e73206d6f64756c65732068617665206265656e20696e697469616c697a65642077697468696e207468697320626c6f636b2e0025012053656d616e746963616c6c7920612060626f6f6c602c2062757420746869732067756172616e746565732069742073686f756c64206e65766572206869742074686520747269652c6901206173207468697320697320636c656172656420696e20606f6e5f66696e616c697a656020616e64204672616d65206f7074696d697a657320604e6f6e65602076616c75657320746f20626520656d7074792076616c7565732e00710120417320612060626f6f6c602c20607365742866616c7365296020616e64206072656d6f766528296020626f7468206c65616420746f20746865206e6578742060676574282960206265696e672066616c73652c20627574206f6e657501206f66207468656d2077726974657320746f20746865207472696520616e64206f6e6520646f6573206e6f742e205468697320636f6e667573696f6e206d616b657320604f7074696f6e3c28293e60206d6f7265207375697461626c659020666f72207468652073656d616e74696373206f662074686973207661726961626c652e58427566666572656453657373696f6e4368616e67657301003d0c04001c59012042756666657265642073657373696f6e206368616e67657320616c6f6e6720776974682074686520626c6f636b206e756d62657220617420776869636820746865792073686f756c64206265206170706c6965642e005d01205479706963616c6c7920746869732077696c6c20626520656d707479206f72206f6e6520656c656d656e74206c6f6e672e2041706172742066726f6d20746861742074686973206974656d206e65766572206869747334207468652073746f726167652e00690120486f776576657220746869732069732061206056656360207265676172646c65737320746f2068616e646c6520766172696f757320656467652063617365732074686174206d6179206f636375722061742072756e74696d65c0207570677261646520626f756e646172696573206f7220696620676f7665726e616e636520696e74657276656e65732e01bd05000000390c446d70010c446d700c54446f776e776172644d65737361676551756575657301010405b902450c040004d02054686520646f776e77617264206d657373616765732061646472657373656420666f722061206365727461696e20706172612e64446f776e776172644d6573736167655175657565486561647301010405b902308000000000000000000000000000000000000000000000000000000000000000001c25012041206d617070696e6720746861742073746f7265732074686520646f776e77617264206d657373616765207175657565204d5143206865616420666f72206561636820706172612e00902045616368206c696e6b20696e207468697320636861696e20686173206120666f726d3a78206028707265765f686561642c20422c2048284d2929602c207768657265e8202d2060707265765f68656164603a206973207468652070726576696f757320686561642068617368206f72207a65726f206966206e6f6e652e2101202d206042603a206973207468652072656c61792d636861696e20626c6f636b206e756d62657220696e2077686963682061206d6573736167652077617320617070656e6465642ed4202d206048284d29603a206973207468652068617368206f6620746865206d657373616765206265696e6720617070656e6465642e4444656c6976657279466565466163746f7201010405b9024d0740000064a7b3b6e00d000000000000000004c42054686520666163746f7220746f206d756c7469706c792074686520626173652064656c6976657279206665652062792e000000003a1048726d70011048726d70305c48726d704f70656e4368616e6e656c526571756573747300010405c5054d0c040018bc2054686520736574206f662070656e64696e672048524d50206f70656e206368616e6e656c2072657175657374732e00c02054686520736574206973206163636f6d70616e6965642062792061206c69737420666f7220697465726174696f6e2e002c20496e76617269616e743a3d01202d20546865726520617265206e6f206368616e6e656c7320746861742065786973747320696e206c69737420627574206e6f7420696e207468652073657420616e6420766963652076657273612e6c48726d704f70656e4368616e6e656c52657175657374734c6973740100510c0400006c48726d704f70656e4368616e6e656c52657175657374436f756e7401010405b9021010000000000c65012054686973206d617070696e6720747261636b7320686f77206d616e79206f70656e206368616e6e656c2072657175657374732061726520696e69746961746564206279206120676976656e2073656e64657220706172612e590120496e76617269616e743a206048726d704f70656e4368616e6e656c5265717565737473602073686f756c6420636f6e7461696e207468652073616d65206e756d626572206f66206974656d732074686174206861730501206028582c205f296020617320746865206e756d626572206f66206048726d704f70656e4368616e6e656c52657175657374436f756e746020666f72206058602e7c48726d7041636365707465644368616e6e656c52657175657374436f756e7401010405b9021010000000000c71012054686973206d617070696e6720747261636b7320686f77206d616e79206f70656e206368616e6e656c2072657175657374732077657265206163636570746564206279206120676976656e20726563697069656e7420706172612e6d0120496e76617269616e743a206048726d704f70656e4368616e6e656c5265717565737473602073686f756c6420636f6e7461696e207468652073616d65206e756d626572206f66206974656d732060285f2c20582960207769746855012060636f6e6669726d6564602073657420746f20747275652c20617320746865206e756d626572206f66206048726d7041636365707465644368616e6e656c52657175657374436f756e746020666f72206058602e6048726d70436c6f73654368616e6e656c526571756573747300010405c5058c04001c7101204120736574206f662070656e64696e672048524d5020636c6f7365206368616e6e656c20726571756573747320746861742061726520676f696e6720746f20626520636c6f73656420647572696e67207468652073657373696f6e2101206368616e67652e205573656420666f7220636865636b696e67206966206120676976656e206368616e6e656c206973207265676973746572656420666f7220636c6f737572652e00c02054686520736574206973206163636f6d70616e6965642062792061206c69737420666f7220697465726174696f6e2e002c20496e76617269616e743a3d01202d20546865726520617265206e6f206368616e6e656c7320746861742065786973747320696e206c69737420627574206e6f7420696e207468652073657420616e6420766963652076657273612e7048726d70436c6f73654368616e6e656c52657175657374734c6973740100510c0400003848726d7057617465726d61726b7300010405b90210040010b8205468652048524d502077617465726d61726b206173736f6369617465642077697468206561636820706172612e2c20496e76617269616e743a5501202d2065616368207061726120605060207573656420686572652061732061206b65792073686f756c642073617469736679206050617261733a3a69735f76616c69645f70617261285029602077697468696e20612c20202073657373696f6e2e3048726d704368616e6e656c7300010405c505550c04000cb42048524d50206368616e6e656c2064617461206173736f6369617465642077697468206561636820706172612e2c20496e76617269616e743a7501202d2065616368207061727469636970616e7420696e20746865206368616e6e656c2073686f756c642073617469736679206050617261733a3a69735f76616c69645f70617261285029602077697468696e20612073657373696f6e2e6048726d70496e67726573734368616e6e656c73496e64657801010405b902110c040034710120496e67726573732f65677265737320696e646578657320616c6c6f7720746f2066696e6420616c6c207468652073656e6465727320616e642072656365697665727320676976656e20746865206f70706f7369746520736964652e1420492e652e0021012028612920696e677265737320696e64657820616c6c6f777320746f2066696e6420616c6c207468652073656e6465727320666f72206120676976656e20726563697069656e742e1d01202862292065677265737320696e64657820616c6c6f777320746f2066696e6420616c6c2074686520726563697069656e747320666f72206120676976656e2073656e6465722e003020496e76617269616e74733a5101202d20666f72206561636820696e677265737320696e64657820656e74727920666f72206050602065616368206974656d2060496020696e2074686520696e6465782073686f756c642070726573656e7420696e782020206048726d704368616e6e656c7360206173206028492c205029602e4d01202d20666f7220656163682065677265737320696e64657820656e74727920666f72206050602065616368206974656d2060456020696e2074686520696e6465782073686f756c642070726573656e7420696e782020206048726d704368616e6e656c7360206173206028502c204529602e0101202d2074686572652073686f756c64206265206e6f206f746865722064616e676c696e67206368616e6e656c7320696e206048726d704368616e6e656c73602e68202d2074686520766563746f72732061726520736f727465642e5c48726d704567726573734368616e6e656c73496e64657801010405b902110c0400004c48726d704368616e6e656c436f6e74656e747301010405c505590c040008ac2053746f7261676520666f7220746865206d6573736167657320666f722065616368206368616e6e656c2e650120496e76617269616e743a2063616e6e6f74206265206e6f6e2d656d7074792069662074686520636f72726573706f6e64696e67206368616e6e656c20696e206048726d704368616e6e656c736020697320604e6f6e65602e4848726d704368616e6e656c4469676573747301010405b902610c0400186901204d61696e7461696e732061206d617070696e6720746861742063616e206265207573656420746f20616e7377657220746865207175657374696f6e3a20576861742070617261732073656e742061206d657373616765206174e42074686520676976656e20626c6f636b206e756d62657220666f72206120676976656e2072656365697665722e20496e76617269616e74733aa8202d2054686520696e6e657220605665633c5061726149643e60206973206e6576657220656d7074792ee8202d2054686520696e6e657220605665633c5061726149643e602063616e6e6f742073746f72652074776f2073616d652060506172614964602e6d01202d20546865206f7574657220766563746f7220697320736f7274656420617363656e64696e6720627920626c6f636b206e756d62657220616e642063616e6e6f742073746f72652074776f206974656d732077697468207468655420202073616d6520626c6f636b206e756d6265722e01c10501e1070001690c3c3c5061726153657373696f6e496e666f013c5061726153657373696f6e496e666f145041737369676e6d656e744b657973556e7361666501006d0c04000ca42041737369676e6d656e74206b65797320666f72207468652063757272656e742073657373696f6e2e6d01204e6f7465207468617420746869732041504920697320707269766174652064756520746f206974206265696e672070726f6e6520746f20276f66662d62792d6f6e65272061742073657373696f6e20626f756e6461726965732eac205768656e20696e20646f7562742c20757365206053657373696f6e73602041504920696e73746561642e544561726c6965737453746f72656453657373696f6e010010100000000004010120546865206561726c696573742073657373696f6e20666f722077686963682070726576696f75732073657373696f6e20696e666f2069732073746f7265642e2053657373696f6e730001040610710c04000ca42053657373696f6e20696e666f726d6174696f6e20696e206120726f6c6c696e672077696e646f772e35012053686f756c64206861766520616e20656e74727920696e2072616e676520604561726c6965737453746f72656453657373696f6e2e2e3d43757272656e7453657373696f6e496e646578602e750120446f6573206e6f74206861766520616e7920656e7472696573206265666f7265207468652073657373696f6e20696e64657820696e207468652066697273742073657373696f6e206368616e6765206e6f74696669636174696f6e2e2c4163636f756e744b6579730001040610f5010400047101205468652076616c696461746f72206163636f756e74206b657973206f66207468652076616c696461746f7273206163746976656c792070617274696369706174696e6720696e2070617261636861696e20636f6e73656e7375732e5453657373696f6e4578656375746f72506172616d7300010406100905040004c4204578656375746f7220706172616d657465722073657420666f72206120676976656e2073657373696f6e20696e646578000000003d345061726173446973707574657301345061726173446973707574657314444c6173745072756e656453657373696f6e000010040008010120546865206c617374207072756e65642073657373696f6e2c20696620616e792e20416c6c20646174612073746f7265642062792074686973206d6f64756c6554207265666572656e6365732073657373696f6e732e20446973707574657300010805027d0c810c040004050120416c6c206f6e676f696e67206f7220636f6e636c7564656420646973707574657320666f7220746865206c617374207365766572616c2073657373696f6e732e444261636b6572734f6e446973707574657300010805027d0c850c0400089c204261636b696e6720766f7465732073746f72656420666f72206561636820646973707574652e8c20546869732073746f72616765206973207573656420666f7220736c617368696e672e20496e636c7564656400010805027d0c10040008450120416c6c20696e636c7564656420626c6f636b73206f6e2074686520636861696e2c2061732077656c6c2061732074686520626c6f636b206e756d62657220696e207468697320636861696e207468617459012073686f756c64206265207265766572746564206261636b20746f206966207468652063616e64696461746520697320646973707574656420616e642064657465726d696e656420746f20626520696e76616c69642e1846726f7a656e01008d02040010110120576865746865722074686520636861696e2069732066726f7a656e2e2053746172747320617320604e6f6e65602e205768656e20746869732069732060536f6d65602c35012074686520636861696e2077696c6c206e6f742061636365707420616e79206e65772070617261636861696e20626c6f636b7320666f72206261636b696e67206f7220696e636c7573696f6e2c090120616e64206974732076616c756520696e6469636174657320746865206c6173742076616c696420626c6f636b206e756d62657220696e2074686520636861696e2ef82049742063616e206f6e6c7920626520736574206261636b20746f20604e6f6e656020627920676f7665726e616e636520696e74657276656e74696f6e2e01c90501e5070001890c3e345061726173536c617368696e6701345061726173536c617368696e670840556e6170706c696564536c617368657300010805027d0c8d0c040004902056616c696461746f72732070656e64696e67206469737075746520736c61736865732e4856616c696461746f72536574436f756e747300010405101004000484206056616c696461746f72536574436f756e7460207065722073657373696f6e2e01cd050000019d0c3f585061726141737369676e6d656e7450726f76696465720000000000402452656769737472617201245265676973747261720c2c50656e64696e675377617000010405b902b902040004642050656e64696e672073776170206f7065726174696f6e732e14506172617300010405b902a10c040010050120416d6f756e742068656c64206f6e206465706f73697420666f722065616368207061726120616e6420746865206f726967696e616c206465706f7369746f722e0071012054686520676976656e206163636f756e7420494420697320726573706f6e7369626c6520666f72207265676973746572696e672074686520636f646520616e6420696e697469616c206865616420646174612c20627574206d61795501206f6e6c7920646f20736f2069662069742069736e27742079657420726567697374657265642e2028416674657220746861742c206974277320757020746f20676f7665726e616e636520746f20646f20736f2e29384e657874467265655061726149640100b9021000000000046020546865206e65787420667265652060506172614964602e01dd0501f107082c506172614465706f73697418400010a5d4e8000000000000000000000008d420546865206465706f73697420746f206265207061696420746f2072756e2061206f6e2d64656d616e642070617261636861696e2e3d0120546869732073686f756c6420696e636c7564652074686520636f737420666f722073746f72696e67207468652067656e65736973206865616420616e642076616c69646174696f6e20636f64652e48446174614465706f7369745065724279746518408096980000000000000000000000000004c420546865206465706f73697420746f20626520706169642070657220627974652073746f726564206f6e20636861696e2e01a90c4614536c6f74730114536c6f747304184c656173657301010405b902ad0c040040150120416d6f756e74732068656c64206f6e206465706f73697420666f7220656163682028706f737369626c792066757475726529206c65617365642070617261636861696e2e006101205468652061637475616c20616d6f756e74206c6f636b6564206f6e2069747320626568616c6620627920616e79206163636f756e7420617420616e792074696d6520697320746865206d6178696d756d206f66207468652901207365636f6e642076616c756573206f6620746865206974656d7320696e2074686973206c6973742077686f73652066697273742076616c756520697320746865206163636f756e742e00610120546865206669727374206974656d20696e20746865206c6973742069732074686520616d6f756e74206c6f636b656420666f72207468652063757272656e74204c6561736520506572696f642e20466f6c6c6f77696e67b0206974656d732061726520666f72207468652073756273657175656e74206c6561736520706572696f64732e006101205468652064656661756c742076616c75652028616e20656d707479206c6973742920696d706c6965732074686174207468652070617261636861696e206e6f206c6f6e6765722065786973747320286f72206e65766572b42065786973746564292061732066617220617320746869732070616c6c657420697320636f6e6365726e65642e00510120496620612070617261636861696e20646f65736e2774206578697374202a7965742a20627574206973207363686564756c656420746f20657869737420696e20746865206675747572652c207468656e20697461012077696c6c206265206c6566742d7061646465642077697468206f6e65206f72206d6f726520604e6f6e65607320746f2064656e6f74652074686520666163742074686174206e6f7468696e672069732068656c64206f6e5d01206465706f73697420666f7220746865206e6f6e2d6578697374656e7420636861696e2063757272656e746c792c206275742069732068656c6420617420736f6d6520706f696e7420696e20746865206675747572652e00dc20497420697320696c6c6567616c20666f72206120604e6f6e65602076616c756520746f20747261696c20696e20746865206c6973742e01e10501f507082c4c65617365506572696f6410100075120004dc20546865206e756d626572206f6620626c6f636b73206f76657220776869636820612073696e676c6520706572696f64206c617374732e2c4c656173654f6666736574101000100e0004d420546865206e756d626572206f6620626c6f636b7320746f206f66667365742065616368206c6561736520706572696f642062792e01b10c472041756374696f6e73012041756374696f6e73103841756374696f6e436f756e7465720100101000000000048c204e756d626572206f662061756374696f6e73207374617274656420736f206661722e2c41756374696f6e496e666f000080040014f820496e666f726d6174696f6e2072656c6174696e6720746f207468652063757272656e742061756374696f6e2c206966207468657265206973206f6e652e00450120546865206669727374206974656d20696e20746865207475706c6520697320746865206c6561736520706572696f6420696e646578207468617420746865206669727374206f662074686520666f7572510120636f6e746967756f7573206c6561736520706572696f6473206f6e2061756374696f6e20697320666f722e20546865207365636f6e642069732074686520626c6f636b206e756d626572207768656e207468655d012061756374696f6e2077696c6c2022626567696e20746f20656e64222c20692e652e2074686520666972737420626c6f636b206f662074686520456e64696e6720506572696f64206f66207468652061756374696f6e2e3c5265736572766564416d6f756e747300010405b50c18040008310120416d6f756e74732063757272656e746c7920726573657276656420696e20746865206163636f756e7473206f662074686520626964646572732063757272656e746c792077696e6e696e673820287375622d2972616e6765732e1c57696e6e696e670001040510b90c04000c6101205468652077696e6e696e67206269647320666f722065616368206f66207468652031302072616e67657320617420656163682073616d706c6520696e207468652066696e616c20456e64696e6720506572696f64206f664901207468652063757272656e742061756374696f6e2e20546865206d61702773206b65792069732074686520302d626173656420696e64657820696e746f207468652053616d706c652053697a652e205468651d012066697273742073616d706c65206f662074686520656e64696e6720706572696f6420697320303b20746865206c617374206973206053616d706c652053697a65202d2031602e01e50501f9071030456e64696e67506572696f64101040190100041d0120546865206e756d626572206f6620626c6f636b73206f76657220776869636820616e2061756374696f6e206d617920626520726574726f6163746976656c7920656e6465642e3053616d706c654c656e6774681010140000000cf020546865206c656e677468206f6620656163682073616d706c6520746f2074616b6520647572696e672074686520656e64696e6720706572696f642e00d42060456e64696e67506572696f6460202f206053616d706c654c656e67746860203d20546f74616c2023206f662053616d706c657338536c6f7452616e6765436f756e74101024000000004c4c65617365506572696f6473506572536c6f741010080000000001c50c482443726f77646c6f616e012443726f77646c6f616e101446756e647300010405b902c90c0400046820496e666f206f6e20616c6c206f66207468652066756e64732e204e657752616973650100110c0400085501205468652066756e64732074686174206861766520686164206164646974696f6e616c20636f6e747269627574696f6e7320647572696e6720746865206c61737420626c6f636b2e20546869732069732075736564150120696e206f7264657220746f2064657465726d696e652077686963682066756e64732073686f756c64207375626d6974206e6577206f72207570646174656420626964732e30456e64696e6773436f756e74010010100000000004290120546865206e756d626572206f662061756374696f6e732074686174206861766520656e746572656420696e746f20746865697220656e64696e6720706572696f6420736f206661722e344e65787446756e64496e646578010010100000000004a820547261636b657220666f7220746865206e65787420617661696c61626c652066756e6420696e64657801ed0501fd070c2050616c6c65744964d1092070792f6366756e64080d01206050616c6c657449646020666f72207468652063726f77646c6f616e2070616c6c65742e20416e20617070726f7072696174652076616c756520636f756c6420626564206050616c6c65744964282a622270792f6366756e642229603c4d696e436f6e747269627574696f6e184000743ba40b000000000000000000000008610120546865206d696e696d756d20616d6f756e742074686174206d617920626520636f6e747269627574656420696e746f20612063726f77646c6f616e2e2053686f756c6420616c6d6f7374206365727461696e6c792062657c206174206c6561737420604578697374656e7469616c4465706f736974602e3c52656d6f76654b6579734c696d69741010e803000004e4204d6178206e756d626572206f662073746f72616765206b65797320746f2072656d6f7665207065722065787472696e7369632063616c6c2e01d10c49485374617465547269654d6967726174696f6e01485374617465547269654d6967726174696f6e0c404d6967726174696f6e50726f63657373010005063800000000000000000000000000001050204d6967726174696f6e2070726f67726573732e005d0120546869732073746f7265732074686520736e617073686f74206f6620746865206c617374206d69677261746564206b6579732e2049742063616e2062652073657420696e746f206d6f74696f6e20616e64206d6f7665d420666f727761726420627920616e79206f6620746865206d65616e732070726f766964656420627920746869732070616c6c65742e284175746f4c696d6974730100fd0504000cd420546865206c696d69747320746861742061726520696d706f736564206f6e206175746f6d61746963206d6967726174696f6e732e00d42049662073657420746f204e6f6e652c207468656e206e6f206175746f6d61746963206d6967726174696f6e2068617070656e732e605369676e65644d6967726174696f6e4d61784c696d6974730000010604000ce020546865206d6178696d756d206c696d697473207468617420746865207369676e6564206d6967726174696f6e20636f756c64207573652e00b4204966206e6f74207365742c206e6f207369676e6564207375626d697373696f6e20697320616c6c6f7765642e01f90501010804244d61784b65794c656e10100002000054b4204d6178696d616c206e756d626572206f6620627974657320746861742061206b65792063616e20686176652e00b0204652414d4520697473656c6620646f6573206e6f74206c696d697420746865206b6579206c656e6774682e01012054686520636f6e63726574652076616c7565206d757374207468657265666f726520646570656e64206f6e20796f75722073746f726167652075736167652e59012041205b606672616d655f737570706f72743a3a73746f726167653a3a53746f726167654e4d6170605d20666f72206578616d706c652063616e206861766520616e20617262697472617279206e756d626572206f664501206b65797320776869636820617265207468656e2068617368656420616e6420636f6e636174656e617465642c20726573756c74696e6720696e206172626974726172696c79206c6f6e67206b6579732e0041012055736520746865202a7374617465206d6967726174696f6e205250432a20746f20726574726965766520746865206c656e677468206f6620746865206c6f6e67657374206b657920696e20796f757201012073746f726167653a203c68747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f6973737565732f31313634323e00290120546865206d6967726174696f6e2077696c6c2068616c7420776974682061206048616c74656460206576656e7420696620746869732076616c756520697320746f6f20736d616c6c2e49012053696e6365207468657265206973206e6f207265616c2070656e616c74792066726f6d206f7665722d657374696d6174696e672c206974206973206164766973656420746f207573652061206c61726765802076616c75652e205468652064656661756c742069732035313220627974652e008020536f6d65206b6579206c656e6774687320666f72207265666572656e63653ad0202d205b606672616d655f737570706f72743a3a73746f726167653a3a53746f7261676556616c7565605d3a2033322062797465c8202d205b606672616d655f737570706f72743a3a73746f726167653a3a53746f726167654d6170605d3a2036342062797465e0202d205b606672616d655f737570706f72743a3a73746f726167653a3a53746f72616765446f75626c654d6170605d3a2039362062797465004820466f72206d6f726520696e666f207365654901203c68747470733a2f2f7777772e736861776e74616272697a692e636f6d2f626c6f672f7375627374726174652f7175657279696e672d7375627374726174652d73746f726167652d7669612d7270632f3e010908622458636d50616c6c6574012458636d50616c6c657430305175657279436f756e74657201002c200000000000000000048820546865206c617465737420617661696c61626c6520717565727920696e6465782e1c51756572696573000104022cd50c0400045420546865206f6e676f696e6720717565726965732e28417373657454726170730101040630101000000000106820546865206578697374696e672061737365742074726170732e006101204b65792069732074686520626c616b6532203235362068617368206f6620286f726967696e2c2076657273696f6e65642060417373657473602920706169722e2056616c756520697320746865206e756d626572206f661d012074696d65732074686973207061697220686173206265656e20747261707065642028757375616c6c79206a75737420312069662069742065786973747320617420616c6c292e385361666558636d56657273696f6e00001004000861012044656661756c742076657273696f6e20746f20656e636f64652058434d207768656e206c61746573742076657273696f6e206f662064657374696e6174696f6e20697320756e6b6e6f776e2e20496620604e6f6e65602c3d01207468656e207468652064657374696e6174696f6e732077686f73652058434d2076657273696f6e20697320756e6b6e6f776e2061726520636f6e7369646572656420756e726561636861626c652e40537570706f7274656456657273696f6e0001080502e90c10040004f020546865204c61746573742076657273696f6e732074686174207765206b6e6f7720766172696f7573206c6f636174696f6e7320737570706f72742e4056657273696f6e4e6f746966696572730001080502e90c2c040004050120416c6c206c6f636174696f6e7320746861742077652068617665207265717565737465642076657273696f6e206e6f74696669636174696f6e732066726f6d2e5056657273696f6e4e6f74696679546172676574730001080502e90ced0c04000871012054686520746172676574206c6f636174696f6e73207468617420617265207375627363726962656420746f206f75722076657273696f6e206368616e6765732c2061732077656c6c20617320746865206d6f737420726563656e7494206f66206f75722076657273696f6e7320776520696e666f726d6564207468656d206f662e5456657273696f6e446973636f7665727951756575650100f10c04000c65012044657374696e6174696f6e732077686f7365206c61746573742058434d2076657273696f6e20776520776f756c64206c696b6520746f206b6e6f772e204475706c696361746573206e6f7420616c6c6f7765642c20616e6471012074686520607533326020636f756e74657220697320746865206e756d626572206f662074696d6573207468617420612073656e6420746f207468652064657374696e6174696f6e20686173206265656e20617474656d707465642c8c20776869636820697320757365642061732061207072696f726974697a6174696f6e2e4043757272656e744d6967726174696f6e0000fd0c0400049c205468652063757272656e74206d6967726174696f6e27732073746167652c20696620616e792e5452656d6f74654c6f636b656446756e6769626c657300010c050202050d0d0d040004f02046756e6769626c6520617373657473207768696368207765206b6e6f7720617265206c6f636b6564206f6e20612072656d6f746520636861696e2e3c4c6f636b656446756e6769626c657300010402001d0d040004e02046756e6769626c6520617373657473207768696368207765206b6e6f7720617265206c6f636b6564206f6e207468697320636861696e2e5458636d457865637574696f6e53757370656e646564010078040004b420476c6f62616c2073757370656e73696f6e207374617465206f66207468652058434d206578656375746f722e011106010d080001290d63304d657373616765517565756501304d65737361676551756575650c30426f6f6b5374617465466f720101040541072d0d74000000000000000000000000000000000000000000000000000000000004cc2054686520696e646578206f662074686520666972737420616e64206c61737420286e6f6e2d656d707479292070616765732e2c536572766963654865616400004107040004bc20546865206f726967696e2061742077686963682077652073686f756c6420626567696e20736572766963696e672e1450616765730001080505390d3d0d0400048820546865206d6170206f66207061676520696e646963657320746f2070616765732e013d070115080c204865617053697a65101000000100143d01205468652073697a65206f662074686520706167653b207468697320696d706c69657320746865206d6178696d756d206d6573736167652073697a652077686963682063616e2062652073656e742e005901204120676f6f642076616c756520646570656e6473206f6e20746865206578706563746564206d6573736167652073697a65732c20746865697220776569676874732c207468652077656967687420746861742069735d0120617661696c61626c6520666f722070726f63657373696e67207468656d20616e6420746865206d6178696d616c206e6565646564206d6573736167652073697a652e20546865206d6178696d616c206d65737361676511012073697a6520697320736c696768746c79206c6f776572207468616e207468697320617320646566696e6564206279205b604d61784d6573736167654c656e4f66605d2e204d61785374616c651010080000000c5d0120546865206d6178696d756d206e756d626572206f66207374616c652070616765732028692e652e206f66206f766572776569676874206d657373616765732920616c6c6f776564206265666f72652063756c6c696e6751012063616e2068617070656e2e204f6e636520746865726520617265206d6f7265207374616c65207061676573207468616e20746869732c207468656e20686973746f726963616c207061676573206d6179206265fc2064726f707065642c206576656e206966207468657920636f6e7461696e20756e70726f636573736564206f766572776569676874206d657373616765732e3453657276696365576569676874890740010700a0db215d1333333333333333331441012054686520616d6f756e74206f66207765696768742028696620616e79292077686963682073686f756c642062652070726f766964656420746f20746865206d65737361676520717565756520666f726820736572766963696e6720656e717565756564206974656d732e00fc2054686973206d6179206265206c65676974696d6174656c7920604e6f6e656020696e207468652063617365207468617420796f752077696c6c2063616c6ca82060536572766963655175657565733a3a736572766963655f71756575657360206d616e75616c6c792e01450d642441737365745261746501244173736574526174650458436f6e76657273696f6e52617465546f4e61746976650001040205014d0704000c1d01204d61707320616e20617373657420746f2069747320666978656420706f696e7420726570726573656e746174696f6e20696e20746865206e61746976652062616c616e63652e004d0120452e672e20606e61746976655f616d6f756e74203d2061737365745f616d6f756e74202a20436f6e76657273696f6e52617465546f4e61746976653a3a3c543e3a3a6765742861737365745f6b696e642960014907011d080001490d6514426565667901144265656679142c417574686f72697469657301004d0d04000470205468652063757272656e7420617574686f726974696573207365743856616c696461746f72536574496401002c2000000000000000000474205468652063757272656e742076616c696461746f72207365742069643c4e657874417574686f72697469657301004d0d040004ec20417574686f72697469657320736574207363686564756c656420746f2062652075736564207769746820746865206e6578742073657373696f6e30536574496453657373696f6e000104052c1004002851012041206d617070696e672066726f6d2042454546592073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e0045012054686973206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e2070726f6f66732e20416e2065717569766f636174696f6e2070726f6f66206d7573744d0120636f6e7461696e732061206b65792d6f776e6572736869702070726f6f6620666f72206120676976656e2073657373696f6e2c207468657265666f7265207765206e65656420612077617920746f207469653d0120746f6765746865722073657373696f6e7320616e6420424545465920736574206964732c20692e652e207765206e65656420746f2076616c6964617465207468617420612076616c696461746f7241012077617320746865206f776e6572206f66206120676976656e206b6579206f6e206120676976656e2073657373696f6e2c20616e642077686174207468652061637469766520736574204944207761735420647572696e6720746861742073657373696f6e2e00dc2054574f582d4e4f54453a206056616c696461746f72536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e3047656e65736973426c6f636b01008d0204000cdc20426c6f636b206e756d62657220776865726520424545465920636f6e73656e73757320697320656e61626c65642f737461727465642e6901204279206368616e67696e67207468697320287468726f7567682070726976696c6567656420607365745f6e65775f67656e65736973282960292c20424545465920636f6e73656e737573206973206566666563746976656c79ac207265737461727465642066726f6d20746865206e65776c792073657420626c6f636b206e756d6265722e015107000c384d6178417574686f7269746965731010a086010004d420546865206d6178696d756d206e756d626572206f6620617574686f72697469657320746861742063616e2062652061646465642e344d61784e6f6d696e61746f727310100002000004d420546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320666f7220656163682076616c696461746f722e584d6178536574496453657373696f6e456e74726965732c20a80000000000000018390120546865206d6178696d756d206e756d626572206f6620656e747269657320746f206b65657020696e207468652073657420696420746f2073657373696f6e20696e646578206d617070696e672e0031012053696e6365207468652060536574496453657373696f6e60206d6170206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e73207468697329012076616c75652073686f756c642072656c61746520746f2074686520626f6e64696e67206475726174696f6e206f66207768617465766572207374616b696e672073797374656d2069733501206265696e6720757365642028696620616e79292e2049662065717569766f636174696f6e2068616e646c696e67206973206e6f7420656e61626c6564207468656e20746869732076616c7565342063616e206265207a65726f2e01550dc80c4d6d72010c4d6d720c20526f6f74486173680100308000000000000000000000000000000000000000000000000000000000000000000458204c6174657374204d4d5220526f6f7420686173682e384e756d6265724f664c656176657301002c20000000000000000004b02043757272656e742073697a65206f6620746865204d4d5220286e756d626572206f66206c6561766573292e144e6f646573000104062c300400108020486173686573206f6620746865206e6f64657320696e20746865204d4d522e002d01204e6f7465207468697320636f6c6c656374696f6e206f6e6c7920636f6e7461696e73204d4d52207065616b732c2074686520696e6e6572206e6f6465732028616e64206c656176657329bc20617265207072756e656420616e64206f6e6c792073746f72656420696e20746865204f6666636861696e2044422e00000000c93042656566794d6d724c656166013042656566794d6d724c65616608404265656679417574686f7269746965730100590db0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004a02044657461696c73206f662063757272656e7420424545465920617574686f72697479207365742e5042656566794e657874417574686f7269746965730100590db000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c942044657461696c73206f66206e65787420424545465920617574686f72697479207365742e00510120546869732073746f7261676520656e747279206973207573656420617320636163686520666f722063616c6c7320746f20607570646174655f62656566795f6e6578745f617574686f726974795f736574602e00000000ca5d0d042448436865636b4e6f6e5a65726f53656e646572650d8c40436865636b5370656356657273696f6e690d1038436865636b547856657273696f6e6d0d1030436865636b47656e65736973710d3038436865636b4d6f7274616c697479750d3028436865636b4e6f6e63657d0d8c2c436865636b576569676874810d8c604368617267655472616e73616374696f6e5061796d656e74850d8c4850726576616c696461746541747465737473890d8c8d0d'; diff --git a/src/test-helpers/registries/kusamaRegistry.ts b/src/test-helpers/registries/kusamaRegistry.ts index 4728e42d9..d1ea58764 100644 --- a/src/test-helpers/registries/kusamaRegistry.ts +++ b/src/test-helpers/registries/kusamaRegistry.ts @@ -69,9 +69,9 @@ export const kusamaRegistry = createKusamaRegistryDeprecated(); /** * Kusama v2025 TypeRegistry. */ -export const kusamRegistryV2025 = createKusamaRegistry(2025, kusamaMetadataV2008); +export const kusamaRegistryV2025 = createKusamaRegistry(2025, kusamaMetadataV2008); /** * Kusama v1002000 TypeRegistry. */ -export const kusamRegistryV1002000 = createKusamaRegistry(1002000, kusamaMetadataV1002000); +export const kusamaRegistryV1002000 = createKusamaRegistry(1002000, kusamaMetadataV1002000); diff --git a/src/test-helpers/registries/polkadotRegistry.ts b/src/test-helpers/registries/polkadotRegistry.ts index 152f5ffa6..7a6c7ba43 100644 --- a/src/test-helpers/registries/polkadotRegistry.ts +++ b/src/test-helpers/registries/polkadotRegistry.ts @@ -26,6 +26,7 @@ import { polkadotMetadataRpcV9190 } from '../metadata/polkadotV9190Metadata'; import { polkadotMetadataRpcV9300 } from '../metadata/polkadotV9300Metadata'; import { polkadotMetadataRpcV9370 } from '../metadata/polkadotV9370Metadata'; import { polkadotMetadataRpcV1000001 } from '../metadata/polkadotV1000001Metadata'; +import { polkadotMetadataRpcV1002000 } from '../metadata/polkadotV1002000Metadata'; /** * Create a type registry for Polkadot. * Useful for creating types in order to facilitate testing. @@ -84,3 +85,8 @@ export const polkadotRegistryV9370 = createPolkadotRegistry(9370, polkadotMetada * Polkadot v1000001 TypeRegistry */ export const polkadotRegistryV1000001 = createPolkadotRegistry(1000001, polkadotMetadataRpcV1000001); + +/** + * Polkadot v1002000 TypeRegistry + */ +export const polkadotRegistryV1002000 = createPolkadotRegistry(1002000, polkadotMetadataRpcV1002000); From de06c6bea7cdc6a238b1e3227b8b536f2a7e7ada Mon Sep 17 00:00:00 2001 From: Imod7 Date: Tue, 18 Jun 2024 12:45:44 +0200 Subject: [PATCH 07/26] updated docs --- docs/dist/app.bundle.js | 2 +- docs/src/openapi-v1.yaml | 27 +++++++++++++++++++-------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/docs/dist/app.bundle.js b/docs/dist/app.bundle.js index 76492e4c4..de6e72364 100644 --- a/docs/dist/app.bundle.js +++ b/docs/dist/app.bundle.js @@ -682,7 +682,7 @@ eval("module.exports = function(data, filename, mime, bom) {\n var blobData = \*****************************/ /***/ ((module) => { -eval("module.exports = {\"openapi\":\"3.0.0\",\"info\":{\"title\":\"Substrate API Sidecar\",\"description\":\"Substrate API Sidecar is a REST service that makes it easy to interact with blockchain nodes built using Substrate's FRAME framework.\",\"contact\":{\"url\":\"https://github.com/paritytech/substrate-api-sidecar\"},\"license\":{\"name\":\"GPL-3.0-or-later\",\"url\":\"https://github.com/paritytech/substrate-api-sidecar/blob/master/LICENSE\"},\"version\":\"19.0.1\"},\"servers\":[{\"url\":\"https://polkadot-public-sidecar.parity-chains.parity.io/\",\"description\":\"Polkadot Parity public sidecar\"},{\"url\":\"https://kusama-public-sidecar.parity-chains.parity.io/\",\"description\":\"Kusama Parity public sidecar\"},{\"url\":\"https://polkadot-asset-hub-public-sidecar.parity-chains.parity.io/\",\"description\":\"Polkadot Asset Hub Parity public sidecar\"},{\"url\":\"https://kusama-asset-hub-public-sidecar.parity-chains.parity.io/\",\"description\":\"Kusama Asset Hub Parity public sidecar\"}],\"tags\":[{\"name\":\"accounts\"},{\"name\":\"blocks\"},{\"name\":\"contracts\"},{\"name\":\"node\",\"description\":\"node connected to sidecar\"},{\"name\":\"pallets\",\"description\":\"pallets employed in the runtime\"},{\"name\":\"runtime\"},{\"name\":\"transaction\"},{\"name\":\"paras\"},{\"name\":\"trace\"}],\"paths\":{\"/accounts/{accountId}/asset-balances\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an array of asset-balances for an account.\",\"description\":\"Returns information about an account's asset-balances. This is specific to the assets pallet for parachains. If no `assets` query parameter is provided, all asset-balances for the given account will be returned.\",\"operationId\":\"getAssetBalances\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset-balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a positive integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assets\",\"in\":\"query\",\"description\":\"An array of AssetId's to be queried. If not supplied, defaults to providing all asset balances associated with the `accountId` will be returned. The array query param format follows Express 4.x API. ex:`?assets[]=1&assets[]=2&assets[]=3`.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of assetId numbers represented as strings\",\"format\":\"Array of unsignedInteger's\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountAssetsBalances\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/asset-approvals\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an asset approval for an account.\",\"description\":\"Returns information about an account's asset approval transaction. It is required to pass in a delegate and an assetId as query parameters.\",\"operationId\":\"getAssetApprovals\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset approval info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assetId\",\"in\":\"query\",\"description\":\"The `assetId` associated with the asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"description\":\"An assetId represented as an unsignedInteger.\",\"format\":\"unsignedInteger\"}},{\"name\":\"delegate\",\"in\":\"query\",\"description\":\"The delegate's `accountId` associated with an asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountAssetsApproval\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/balance-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get balance information for an account.\",\"description\":\"Returns information about an account's balance. Replaces `/balance/{address}` from versions < v1.0.0.\",\"operationId\":\"getAccountBalanceInfo\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"token\",\"in\":\"query\",\"description\":\"Token to query the balance of. If not specified it will query the chains native token (e.g. DOT for Polkadot). Note: this is only relevant for chains that support multiple tokens through the ORML tokens pallet.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Token symbol\"}},{\"name\":\"denominated\",\"in\":\"query\",\"description\":\"When set to `true` it will denominate any balance's given atomic value using the chains given decimal value.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountBalanceInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/convert\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Convert a given AccountId to an SS58 address.\",\"description\":\"Returns the SS58 prefix, the network address format, the SS58 address, and the AccountId that was given as input parameter, the scheme that was used and if it is a public key or not (boolean).\",\"operationId\":\"accountConvert\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"AccountId or Public Key (hex).\",\"required\":true,\"schema\":{\"format\":\"AccountId or Hex\",\"type\":\"string\"}},{\"name\":\"scheme\",\"in\":\"query\",\"description\":\"The cryptographic scheme to be used in order to convert the AccountId to an SS58 address. It can take one of three values [sr25519, ed25519, ecdsa]. The default scheme that is used is `sr25519` (if it is not set in the query parameter).\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"string\",\"default\":\"sr25519\"}},{\"name\":\"prefix\",\"in\":\"query\",\"description\":\"The address prefix which can be one of the values found in the SS58-registry.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"number\",\"default\":42}},{\"name\":\"publicKey\",\"in\":\"query\",\"description\":\"Defines if the given value in the path parameter is a Public Key (hex) or not (hence AccountId).\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successfully converted the AccountId and retrieved the address info.\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountConvert\"}}}},\"400\":{\"description\":\"Invalid AccountId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"AccountId not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/pool-asset-balances\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an array of pool-asset-balances for an account.\",\"description\":\"Returns information about an account's pool-asset-balances. This is specific to the pool assets pallet for parachains. If no `assets` query parameter is provided, all pool-asset-balances for the given account will be returned.\",\"operationId\":\"getPoolAssetBalances\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query pool-asset-balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a positive integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assets\",\"in\":\"query\",\"description\":\"An array of AssetId's to be queried. If not supplied, defaults to providing all asset balances associated with the `accountId` will be returned. The array query param format follows Express 4.x API. ex:`?assets[]=1&assets[]=2&assets[]=3`.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"A list of assetId numbers represented as strings\",\"format\":\"Array of unsignedInteger's\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountPoolAssetsBalances\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/pool-asset-approvals\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an asset approval for an account.\",\"description\":\"Returns information about an account's asset approval transaction. It is required to pass in a delegate and an assetId as query parameters.\",\"operationId\":\"getPoolAssetApprovals\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset approval info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assetId\",\"in\":\"query\",\"description\":\"The `assetId` associated with the asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"description\":\"An assetId represented as an unsignedInteger.\",\"format\":\"unsignedInteger\"}},{\"name\":\"delegate\",\"in\":\"query\",\"description\":\"The delegate's `accountId` associated with an asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountAssetsApproval\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/proxy-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get proxy account information.\",\"description\":\"Returns information about a proxy account. This will include delegated accounts and deposits held.\",\"operationId\":\"getProxyInfo\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query proxy info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountProxyInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/staking-info\":{\"get\":{\"tags\":[\"staking\"],\"summary\":\"Get staking information for a _Stash_ account.\",\"description\":\"Returns information about a _Stash_ account's staking activity. Replaces `/staking/{address}` from versions < v1.0.0.\",\"operationId\":\"getStakingSummaryByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account. Must be a _Stash_ account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the staking info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountStakingInfo\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/staking-payouts\":{\"get\":{\"tags\":[\"staking\"],\"summary\":\"Get payout information for a _Stash_ account.\",\"description\":\"Returns payout information for the last specified eras. If specifying both the depth and era query params, this endpoint will return information for (era - depth) through era. (i.e. if depth=5 and era=20 information will be returned for eras 16 through 20). N.B. You cannot query eras less then `current_era - HISTORY_DEPTH`. N.B. The `nominator*` fields correspond to the address being queried, even if it is a validator's _Stash_ address. This is because a validator is technically nominating itself.\",\"operationId\":\"getStakingPayoutsByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account. Must be a _Stash_ account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query staking payouts.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"depth\",\"in\":\"query\",\"description\":\"The number of eras to query for payouts of. Must be less than or equal to `HISTORY_DEPTH`. In cases where `era - (depth -1)` is less than 0, the first era queried will be 0.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"default\":1}},{\"name\":\"era\",\"in\":\"query\",\"description\":\"The era to query at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"default\":\"`active_era - 1`\"}},{\"name\":\"unclaimedOnly\",\"in\":\"query\",\"description\":\"Only return unclaimed rewards.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountStakingPayouts\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/vesting-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get vesting information for an account.\",\"description\":\"Returns the vesting schedule for an account. Replaces `/vesting/{address}` from versions < v1.0.0.\",\"operationId\":\"getVestingSummaryByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the vesting info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountVestingInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{address}/validate\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Validate a given address.\",\"description\":\"Returns whether the given address is valid ss58 format, the ss58 prefix if the address has one, the network address format, and what the account ID is for this address.\",\"operationId\":\"getValidationByAccountId\",\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 or Hex address of the account.\",\"required\":true,\"schema\":{\"format\":\"SS58 or Hex\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successfully retrieved address info\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountValidation\"}}}}}}},\"/blocks\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a range of blocks by their height.\",\"description\":\"Given a range query parameter return an array of all the blocks within that range.\",\"operationId\":\"getBlock\",\"parameters\":[{\"name\":\"range\",\"in\":\"query\",\"description\":\"A range of integers. There is a max limit of 500 blocks per request.\",\"required\":true,\"example\":\"0-499\",\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Blocks\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a block by its height or hash.\",\"description\":\"Returns a single block. BlockId can either be a block hash or a block height. Replaces `/block/{number}` from versions < v1.0.0.\",\"operationId\":\"getBlockById\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"finalizedKey\",\"in\":\"query\",\"description\":\"When set to false, this will override the chain-config, and omit the finalized key in the response. This can increase performance slightly by avoiding an additional RPC call to the node.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"decodedXcmMsgs\",\"in\":\"query\",\"description\":\"When set to `true`, this will show the decoded XCM messages within the extrinsics of the requested block.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"paraId\",\"in\":\"query\",\"description\":\"When it is set, this will return only the decoded XCM messages for the specified origin Parachain Id (originParaId). To activate this functionality, ensure that the `decodedXcmMsgs` parameter is set to true.\",\"required\":false,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockWithDecodedXcmMsgs\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/header\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a block's header by its height or hash.\",\"description\":\"Returns a single block's header. BlockId can either be a block hash or a block height.\",\"operationId\":\"getBlockHeaderById\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockHeader\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/extrinsics/{extrinsicIndex}\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get an extrinsic by its extrinsicIndex and block height or hash. The pair blockId, extrinsicIndex is sometimes referred to as a Timepoint.\",\"description\":\"Returns a single extrinsic.\",\"operationId\":\"getExtrinsicByTimepoint\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"extrinsicIndex\",\"in\":\"path\",\"description\":\"The extrinsic's index within the block's body.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ExtrinsicIndex\"}}}},\"400\":{\"description\":\"Requested `extrinsicIndex` does not exist\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/head\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get the most recently finalized block.\",\"description\":\"Returns the most recently finalized block. Replaces `/block` from versions < v1.0.0.\",\"operationId\":\"getHeadBlock\",\"parameters\":[{\"name\":\"finalized\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to get the finalized head. If it is not set the value defaults to true. When set to false it will attempt to get the newest known block, which may not be finalized.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"decodedXcmMsgs\",\"in\":\"query\",\"description\":\"When set to `true`, this will show the decoded XCM messages within the extrinsics of the requested block.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"paraId\",\"in\":\"query\",\"description\":\"When it is set, this will return only the decoded XCM messages for the specified origin Parachain Id (originParaId). To activate this functionality, ensure that the `decodedXcmMsgs` parameter is set to true.\",\"required\":false,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockWithDecodedXcmMsgs\"}}}}}}},\"/blocks/head/header\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get information about the header of the most recent finalized block.\",\"description\":\"Returns the most recently finalized block's header.\",\"operationId\":\"getLatestBlockHeader\",\"parameters\":[{\"name\":\"finalized\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to get the finalized head. If it is not set the value defaults to true. When set to false it will attempt to get the newest known block, which may not be finalized.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockHeader\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/extrinsics-raw\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a blocks header & its extrinsics as hex values.\",\"description\":\"Returns a block & its extrinsics as hex values. BlockId can either be a block hash or a block height.\",\"operationId\":\"getBlockRawExtrinsics\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockRaw\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/contracts/ink/{address}/query\":{\"post\":{\"tags\":[\"contracts\"],\"summary\":\"Query an !Ink contract with a given message (method).\",\"description\":\"Will return a valid or invalid result.\",\"operationId\":\"callContractQuery\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/ContractMetadata\"},\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 or Hex address of the account associated with the contract.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"method\",\"in\":\"query\",\"description\":\"The message or method used to query.\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"get\"}},{\"name\":\"gasLimit\",\"in\":\"query\",\"description\":\"The gas limit to be used as an option for the queried message.\",\"required\":false,\"schema\":{\"default\":-1,\"type\":\"number\"}},{\"name\":\"storageDepositLimit\",\"in\":\"query\",\"description\":\"The storage deposit limit to be used as an option for the queried message.\",\"required\":false,\"schema\":{\"default\":null,\"type\":\"number\"}},{\"name\":\"args\",\"in\":\"query\",\"description\":\"Abi params used as args specified in the metadata to be passed into a query. The format to use this query param is ?args[]=1&args[]=2&args[]=3.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of Abi params.\"}}],\"responses\":{\"200\":{\"description\":\"succesful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ContractsInkQuery\"}}}},\"400\":{\"description\":\"Invalid Method\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/node/network\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get information about the Substrate node's activity in the peer-to-peer network.\",\"description\":\"Returns network related information of the node.\",\"operationId\":\"getNodeNetworking\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NodeNetwork\"}}}}}}},\"/node/transaction-pool\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get pending extrinsics from the Substrate node.\",\"description\":\"Returns the extrinsics that the node knows of that have not been included in a block.\",\"operationId\":\"getNodeTransactionPool\",\"parameters\":[{\"name\":\"includeFee\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to include tips, partialFee, and priority in each extrinsic.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionPool\"}}}}}}},\"/node/version\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get information about the Substrates node's implementation and versioning.\",\"description\":\"Returns versioning information of the node.\",\"operationId\":\"getNodeVersion\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NodeVersion\"}}}}}}},\"/transaction\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Submit a transaction to the node's transaction pool.\",\"description\":\"Accepts a valid signed extrinsic. Replaces `/tx` from versions < v1.0.0.\",\"operationId\":\"submitTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionSuccess\"}}}},\"400\":{\"description\":\"failed to parse or submit transaction\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFailure\"}}}}}}},\"/transaction/dry-run\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Dry run an extrinsic.\",\"description\":\"Use the dryrun call to practice submission of a transaction.\",\"operationId\":\"dryrunTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionDryRun\"}}}},\"400\":{\"description\":\"failed to dry-run transaction\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFailure\"}}}}}}},\"/transaction/fee-estimate\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Receive a fee estimate for a transaction.\",\"description\":\"Send a serialized transaction and receive back a naive fee estimate. Note: `partialFee` does not include any tips that you may add to increase a transaction's priority. See the reference on `compute_fee`. Replaces `/tx/fee-estimate` from versions < v1.0.0. Substrate Reference: - `RuntimeDispatchInfo`: https://crates.parity.io/pallet_transaction_payment_rpc_runtime_api/struct.RuntimeDispatchInfo.html - `query_info`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.query_info - `compute_fee`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee\",\"operationId\":\"feeEstimateTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFeeEstimate\"}}}},\"400\":{\"description\":\"fee estimation failure\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFeeEstimateFailure\"}}}}}}},\"/transaction/material\":{\"get\":{\"tags\":[\"transaction\"],\"summary\":\"Get all the network information needed to construct a transaction offline.\",\"description\":\"Returns the material that is universal to constructing any signed transaction offline. Replaces `/tx/artifacts` from versions < v1.0.0.\",\"operationId\":\"getTransactionMaterial\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the transaction construction material.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"noMeta\",\"in\":\"query\",\"description\":\"DEPRECATED! This is no longer supported\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Specifies the format of the metadata to be returned. Accepted values are 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata. When `metadata` is not inputted, the `metadata` field will be absent.\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionMaterial\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/transaction/material/{metadataVersion}\":{\"get\":{\"tags\":[\"transaction\"],\"summary\":\"Get all the network information needed to construct a transaction offline and the version of metadata specified in `metadataVersion`.\",\"description\":\"Returns all the materials necessary for constructing any signed transactions offline.\",\"operationId\":\"getTransactionMaterialwithVersionedMetadata\",\"parameters\":[{\"name\":\"metadataVersion\",\"in\":\"path\",\"description\":\"The version of metadata. The input is expected in a `vX` format, where `X` represents the version number (e.g. `v14`, `v15`). By default, metadata is outputted in 'json' format, unless the `metadata` query parameter is provided, in which case it can be either in 'json' or 'scale' format.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the transaction construction material.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Specifies the format of the metadata to be returned. Accepted values are 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata.\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionMaterial\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/assets/{assetId}/asset-info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with an asset.\",\"description\":\"Returns information associated with an asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getAssetById\",\"parameters\":[{\"name\":\"assetId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of an asset.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the assetInfo.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsAssetsInfo\"}}}}}}},\"/pallets/asset-conversion/liquidity-pools\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information related to existing liquidity pools.\",\"description\":\"Returns a list of the existing liquidity pools and its corresponding tokens at a given block height. If no block is specified, it returns the latest list available.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the liquidity pools information.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LiquidityPools\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/asset-conversion/next-available-id\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the next available liquidity pool id.\",\"description\":\"Returns the next available liquidity pool's id at a given block height. If no block is specified, it returns the latest list available.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the next liquidity pool's id.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NextAvailableId\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/foreign-assets\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with foreign assets.\",\"description\":\"Returns information associated with every foreign asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getForeignAssets\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the foreign assets.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"An array of foreign assets.\",\"$ref\":\"#/components/schemas/PalletsForeignAssets\"}}}}}}},\"/pallets/nomination-pools/info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information associated with nomination pools.\",\"description\":\"Returns information and metadata for nomination pools including pool counters and limits.\",\"operationId\":\"getNominationPoolInfo\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the nomination pool info.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsNominationPoolsInfo\"}}}}}}},\"/pallets/nomination-pools/{poolId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with a nomination pool.\",\"description\":\"Returns information associated with a nomination pool which includes the nomination pools' `bondedPool`, `rewardPool` and `metadata`.\",\"operationId\":\"getNominationPoolById\",\"parameters\":[{\"name\":\"poolId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of a nomination pool.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the nomination pool.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsNominationPool\"}}}}}}},\"/pallets/{palletId}/consts\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of constants for a pallet.\",\"description\":\"Returns a list of const item metadata for constant items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read constant metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the const items instead of every constant's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's constant items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of constantItemIds.\",\"$ref\":\"#/components/schemas/PalletConstants\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/consts/{constantItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a constant item.\",\"description\":\"Returns the value stored under the constantItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read constant metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"constantItemId\",\"in\":\"path\",\"description\":\"Id of the const item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the const item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the const items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletConstantsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/dispatchables\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of dispatchables for a pallet.\",\"description\":\"Returns a list of dispatchable item metadata for distpachable items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read dispatchable metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the dispatchable items instead of every dispatchable's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of dispatchableItemIds.\",\"$ref\":\"#/components/schemas/PalletDispatchables\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/dispatchables/{dispatchableItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a dispatchable item.\",\"description\":\"Returns the value stored under the dispatchableItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read dispatchable metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"dispatchableItemId\",\"in\":\"path\",\"description\":\"Id of the dispatchable item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the dispatchable items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/errors\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of errors for a pallet.\",\"description\":\"Returns a list of error item metadata for error items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read error metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the error items instead of every error's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's error items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of errorItemIds.\",\"$ref\":\"#/components/schemas/PalletErrors\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/errors/{errorItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of an error item.\",\"description\":\"Returns the value stored under the errorItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read error metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"errorItemId\",\"in\":\"path\",\"description\":\"Id of the error item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the error item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the error items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletErrorsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/events\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of events for a pallet.\",\"description\":\"Returns a list of event item metadata for event items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read event metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the event items instead of every event's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's event items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of eventItemIds.\",\"$ref\":\"#/components/schemas/PalletEvents\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/events/{eventItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of an event item.\",\"description\":\"Returns the value stored under the eventItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read event metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventItemId\",\"in\":\"path\",\"description\":\"Id of the event item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the event item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the event items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletEventsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/runtime/metadata\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the runtime metadata in decoded, JSON form.\",\"description\":\"Returns the runtime metadata as a JSON object. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\",\"description\":\"Response is dependent on the runtime metadata contents.\"}}}}}}},\"/runtime/metadata/{metadataVersion}\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the requested version of runtime metadata in decoded, JSON form.\",\"description\":\"Returns the requested version of runtime metadata as a JSON object. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"metadataVersion\",\"in\":\"path\",\"description\":\"The version of metadata. The input is expected in a `vX` format, where `X` represents the version number (e.g. `v14`, `v15`).\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\",\"description\":\"Response is dependent on the runtime metadata contents.\"}}}}}}},\"/runtime/metadata/versions\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the available versions of runtime metadata.\",\"description\":\"Returns the available versions of runtime metadata. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata versions at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array with the available metadata versions.\"}}}}}}},\"/runtime/code\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the runtime wasm blob.\",\"description\":\"Returns the runtime Wasm blob in hex format.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the runtime wasm blob at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeCode\"}}}}}}},\"/runtime/spec\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get version information of the Substrate runtime.\",\"description\":\"Returns version information related to the runtime.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve runtime version information at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeSpec\"}}}}}}},\"/pallets/{palletId}/storage\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of storage items for a pallet.\",\"description\":\"Returns a list of storage item metadata for storage items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to query the storage of. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the storage items instead of all of each storage item's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's storage items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of storageItemIds.\",\"$ref\":\"#/components/schemas/PalletStorage\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/storage/{storageItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a storage item.\",\"description\":\"Returns the value stored under the storageItemId. If it is a map, query param key1 is required. If the storage item is double map query params key1 and key2 are required.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to query the storage of. Note: pallet name aligns with pallet name as specified in runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"storageItemId\",\"in\":\"path\",\"description\":\"Id of the storage item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"keys\",\"in\":\"query\",\"description\":\"Set of N keys used for querying a storage map. It should be queried using the following format - ?keys[]=key1&keys[]=key2. Order matters, as it will determine the order the keys are passed into the storage calls.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of storage keys.\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the storage item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the storage items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletStorageItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/pool-assets/{assetId}/asset-info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with a pool asset.\",\"description\":\"Returns information associated with a pool asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getPoolAssetById\",\"parameters\":[{\"name\":\"assetId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of a pool asset.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the assetInfo.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsPoolAssetsInfo\"}}}}}}},\"/pallets/staking/progress\":{\"get\":{\"tags\":[\"staking\",\"pallets\"],\"summary\":\"Get progress on the general Staking pallet system.\",\"description\":\"Returns information on the progress of key components of the staking system and estimates of future points of interest. Replaces `/staking-info` from versions < v1.0.0.\",\"operationId\":\"getStakingProgress\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a staking progress report.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/StakingProgress\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/staking/validators\":{\"get\":{\"tags\":[\"staking\",\"pallets\"],\"summary\":\"Get all validators (active/waiting) of a specific chain.\",\"description\":\"Returns a list of all validators addresses and their corresponding status which can be either active or waiting. It will also return a list of active validators that will not be part of the next era for staking. They will be under the key \\\"validatorsToBeChilled\\\". It's important to note, that addresses can be present in both the \\\"validators\\\" key, and \\\"validatorsToBeChilled\\\".\",\"operationId\":\"getStakingValidators\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the list of validators.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/StakingValidators\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/paras\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] List all registered paras (parathreads & parachains).\\n\",\"description\":\"Returns all registered parachains and parathreads with lifecycle info.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve paras list at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Paras\"}}}}}}},\"/paras/leases/current\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get general information about the current lease period.\\n\",\"description\":\"Returns an overview of the current lease period, including lease holders.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve current lease period info at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"currentLeaseHolders\",\"in\":\"query\",\"description\":\"Wether or not to include the `currentLeaseHolders` property. Inclusion\\nof the property will likely result in a larger payload and increased\\nresponse time.\\n\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasLeasesCurrent\"}}}}}}},\"/paras/auctions/current\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the status of the current auction.\\n\",\"description\":\"Returns an overview of the current auction. There is only one auction\\nat a time. If there is no auction most fields will be `null`. If the current\\nauction phase is in `vrfDelay` and you are looking to retrieve the latest winning\\nbids, it is advised to query one block before `finishEnd` in the `endingPeriod` phase\\nfor that auction as there technically are no winners during the `vrfDelay` and thus\\nthe field is `null`.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve auction progress at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasAuctionsCurrent\"}}}}}}},\"/paras/crowdloans\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] List all stored crowdloans.\\n\",\"description\":\"Returns a list of all the crowdloans and their associated paraIds.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the list of paraIds that have crowdloans at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasCrowdloans\"}}}}}}},\"/paras/{paraId}/crowdloan-info\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get crowdloan information for a `paraId`.\\n\",\"description\":\"Returns crowdloan's `fundInfo` and the set of `leasePeriods` the crowdloan`\\ncovers.\\n\",\"parameters\":[{\"name\":\"paraId\",\"in\":\"path\",\"description\":\"paraId to query the crowdloan information of.\",\"required\":true,\"schema\":{\"type\":\"number\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve info at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasCrowdloanInfo\"}}}}}}},\"/paras/{paraId}/lease-info\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get current and future leases as well as the lifecycle stage for a given `paraId`.\\n\",\"description\":\"Returns a list of leases that belong to the `paraId` as well as the\\n`paraId`'s current lifecycle stage.\\n\",\"parameters\":[{\"name\":\"paraId\",\"in\":\"path\",\"description\":\"paraId to query the crowdloan information of.\",\"required\":true,\"schema\":{\"type\":\"number\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's leases at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasLeaseInfo\"}}}}}}},\"/paras/head/included-candidates\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the heads of the included (backed and considered available) parachain candidates at the\\nspecified block height or at the most recent finalized head otherwise.\\n\",\"description\":\"Returns an object with all the parachain id's as keys, and their headers as values.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's heads at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasHeaders\"}}}}}}},\"/paras/head/backed-candidates\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the heads of the backed parachain candidates at the specified block height or at the most recent finalized head otherwise.\\n\",\"description\":\"Returns an object with all the parachain id's as keys, and their headers as values.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's heads at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasHeaders\"}}}}}}},\"/experimental/blocks/head/traces\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get traces for the most\\nrecently finalized block.\\n\",\"description\":\"Returns traces (spans and events) of the most recently finalized block from\\nRPC `state_straceBlock`. Consult the [RPC docs](https://github.com/paritytech/substrate/blob/aba876001651506f85c14baf26e006b36092e1a0/client/rpc-api/src/state/mod.rs#L140)\\nfor conceptual info.\\n\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTrace\"}}}}}}},\"/experimental/blocks/{blockId}/traces\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get traces for the given `blockId`.\\n\",\"description\":\"Returns traces (spans and events) of the specified block from\\nRPC `state_straceBlock`. Consult the [RPC docs](https://github.com/paritytech/substrate/blob/aba876001651506f85c14baf26e006b36092e1a0/client/rpc-api/src/state/mod.rs#L140) for conceptual info.\\n\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTrace\"}}}}}}},\"/experimental/blocks/head/traces/operations\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get the operations from the\\nmost recently finalized block.\\n\",\"description\":\"Returns the operations from the most recently finalized block. Operations\\nrepresent one side of a balance change. For example if Alice transfers\\n100unit to Bob there will be two operations; 1) Alice - 100 2) Bob + 100.\\n\\nGiven account A and A's balance at block k0 (Ak0), if we sum all the\\noperations for A from block k1 through kn against Ak0, we will end up\\nwith A's balance at block kn (Akn). Thus, operations can be used to audit\\nthat balances change as expected.\\n\\nThis is useful for Substrate based chains because the advanced business\\nlogic can make it difficult to ensure auditable balance reconciliation\\nbased purely on events. Instead of using events one can use the\\noperations given from this endpoint.\\n\\nNote - each operation corresponds to a delta of a single field of the\\n`system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`\\nand `fee_frozen`).\\nNote - operations are assigned a block execution phase (and extrinsic index\\nfor those in the apply extrinsic phase) based on an \\\"action group\\\". For\\nexample all the operations for 1 extrinsic will be in the same action group.\\nThe action groups can optionally be fetched with the `action` query param\\nfor closer auditing.\\nNote - There are no 0 value operations (e.g. a transfer of 0, or a\\ntransfer to itself)\\n\\nTo learn more about operation and action group creation please consult\\n[this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)\\n\",\"parameters\":[{\"name\":\"actions\",\"in\":\"query\",\"description\":\"Whether or not to include action groups.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTraceOperations\"}}}}}}},\"/experimental/blocks/{blockId}/traces/operations\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get the operations from the\\nspecified block.\\n\",\"description\":\"Returns the operations from the most recently finalized block. Operations\\nrepresent one side of a balance change. For example if Alice transfers\\n100unit to Bob there will be two operations; 1) Alice - 100 2) Bob + 100.\\n\\nGiven account A and A's balance at block k0 (Ak0), if we sum all the\\noperations for A from block k1 through kn against Ak0, we will end up\\nwith A's balance at block kn (Akn). Thus, operations can be used to audit\\nthat balances change as expected.\\n\\nThis is useful for Substrate based chains because the advanced business\\nlogic can make it difficult to ensure auditable balance reconciliation\\nbased purely on events. Instead of using events one can use the\\noperations given from this endpoint.\\n\\nNote - each operation corresponds to a delta of a single field of the\\n`system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`\\nand `fee_frozen`).\\nNote - operations are assigned a block execution phase (and extrinsic index\\nfor those in the apply extrinsic phase) based on an \\\"action group\\\". For\\nexample all the operations for 1 extrinsic will be in the same action group.\\nThe action groups can optionally be fetched with the `action` query param\\nfor closer auditing.\\nNote - There are no 0 value operations (e.g. a transfer of 0, or a\\ntransfer to itself)\\n\\nTo learn more about operation and action group creation please consult\\n[this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)\\n\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"actions\",\"in\":\"query\",\"description\":\"Whether or not to include action groups.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTraceOperations\"}}}}}}}},\"components\":{\"schemas\":{\"AccountAssetsApproval\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"amount\":{\"type\":\"string\",\"description\":\"The amount of funds approved for the balance transfer from the owner to some delegated target.\",\"format\":\"unsignedInteger\"},\"deposit\":{\"type\":\"string\",\"description\":\"The amount reserved on the owner's account to hold this item in storage.\",\"format\":\"unsignedInteger\"}}},\"AccountAssetsBalances\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"assets\":{\"type\":\"array\",\"description\":\"An array of queried assets.\",\"items\":{\"$ref\":\"#/components/schemas/AssetsBalance\"}}}},\"AccountBalanceInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"nonce\":{\"type\":\"string\",\"description\":\"Account nonce.\",\"format\":\"unsignedInteger\"},\"tokenSymbol\":{\"type\":\"string\",\"description\":\"Token symbol of the balances displayed in this response.\",\"format\":\"unsignedInteger\"},\"free\":{\"type\":\"string\",\"description\":\"Free balance of the account. Not equivalent to _spendable_ balance. This is the only balance that matters in terms of most operations on tokens.\",\"format\":\"unsignedInteger\"},\"reserved\":{\"type\":\"string\",\"description\":\"Reserved balance of the account.\",\"format\":\"unsignedInteger\"},\"miscFrozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when withdrawing for anything except transaction fee payment. Note, that some runtimes may not have support for miscFrozen and if so the following will be returned `miscFrozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"feeFrozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when withdrawing specifically for transaction fee payment. Note, that some runtimes may not have support for feeFrozen and if so the following will be returned `feeFrozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"frozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when reducing the balance, except for actions where the account owner cannot reasonably benefit from the balance reduction, such as slashing. Note, that some runtimes may not have support for frozen and if so the following will be returned `frozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"locks\":{\"type\":\"array\",\"description\":\"Array of locks on a balance. There can be many of these on an account and they \\\"overlap\\\", so the same balance is frozen by multiple locks\",\"items\":{\"$ref\":\"#/components/schemas/BalanceLock\"}}}},\"AccountConvert\":{\"type\":\"object\",\"properties\":{\"ss58Prefix\":{\"type\":\"string\",\"description\":\"SS58 prefix based on which the account ID or Public Key (hex) is converted to an SS58 address.\",\"format\":\"unsignedInteger\"},\"network\":{\"type\":\"string\",\"description\":\"The network based on which the returned address is encoded. It depends on the prefix that was given as a query param.\"},\"address\":{\"type\":\"string\",\"description\":\"The returned SS58 address which is the result of the conversion of the account ID or Public Key (hex).\"},\"accountId\":{\"type\":\"string\",\"description\":\"The given account ID or Public Key (hex) that is converted to an SS58 address.\"},\"scheme\":{\"type\":\"string\",\"description\":\"The cryptographic scheme/algorithm used to encode the given account ID or Public Key (hex).\"},\"publicKey\":{\"type\":\"boolean\",\"description\":\"Whether the given path parameter is a Public Key (hex) or not.\"}}},\"AccountPoolAssetsBalances\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"poolAssets\":{\"type\":\"array\",\"description\":\"An array of queried assets.\",\"items\":{\"$ref\":\"#/components/schemas/AssetsBalance\"}}}},\"AccountProxyInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"delegatedAccounts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"delegate\":{\"type\":\"string\",\"description\":\"Delegate address for the given proxy.\",\"format\":\"ss58\"},\"delay\":{\"type\":\"string\",\"description\":\"The announcement period required of the initial proxy. Will generally be zero.\",\"format\":\"unsignedInteger\"},\"proxyType\":{\"type\":\"string\",\"description\":\"The permissions allowed for this proxy account.\"}}}},\"depositHeld\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The held deposit.\"}}},\"AccountStakingInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"rewardDestination\":{\"type\":\"string\",\"description\":\"The account to which rewards will be paid. Can be 'Staked' (Stash account, adding to the amount at stake), 'Stash' (Stash address, not adding to the amount at stake), or 'Controller' (Controller address).\",\"format\":\"ss58\",\"enum\":[\"Staked\",\"Stash\",\"Controller\"]},\"controller\":{\"type\":\"string\",\"description\":\"Controller address for the given Stash.\",\"format\":\"ss58\"},\"numSlashingSpans\":{\"type\":\"string\",\"description\":\"Number of slashing spans on Stash account; `null` if provided address is not a Controller.\",\"format\":\"unsignedInteger\"},\"nominations\":{\"$ref\":\"#/components/schemas/Nominations\"},\"stakingLedger\":{\"$ref\":\"#/components/schemas/StakingLedger\"}},\"description\":\"Note: Runtime versions of Kusama less than 1062 will either have `lastReward` in place of `claimedRewards`, or no field at all. This is related to changes in reward distribution. See: [Lazy Payouts](https://github.com/paritytech/substrate/pull/4474), [Simple Payouts](https://github.com/paritytech/substrate/pull/5406)\"},\"AccountStakingPayouts\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"erasPayouts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"era\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Era this information is associated with.\"},\"totalEraRewardPoints\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Total reward points for the era. Equals the sum of reward points for all the validators in the set.\"},\"totalEraPayout\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Total payout for the era. Validators split the payout based on the portion of `totalEraRewardPoints` they have.\"},\"payouts\":{\"$ref\":\"#/components/schemas/Payouts\"}}}}}},\"AccountValidation\":{\"type\":\"object\",\"properties\":{\"isValid\":{\"type\":\"boolean\",\"description\":\"Whether the given address is valid ss58 formatted.\"},\"ss58Prefix\":{\"type\":\"string\",\"description\":\"SS58 prefix of the given address. If the address is a valid base58 format, but incorrect ss58, a prefix for the given address will still be returned.\",\"format\":\"unsignedInteger\"},\"network\":{\"type\":\"string\",\"description\":\"The network based on which the given address is encoded.\"},\"accountId\":{\"type\":\"string\",\"description\":\"The account id of the given address.\"}}},\"AccountVestingInfo\":{\"type\":\"object\",\"description\":\"Sidecar version's <= v10.0.0 have a`vesting` return value that defaults to an object for when there is no available vesting-info data. It also returns a `VestingInfo` as an object. For Sidecar >=11.0.0, that value will now default as an array when there is no value, and `Vec` is returned when there is.\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"vesting\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/VestingSchedule\"}}}},\"AssetsBalance\":{\"type\":\"object\",\"properties\":{\"assetId\":{\"type\":\"string\",\"description\":\"The identifier of the asset.\",\"format\":\"unsignedInteger\"},\"balance\":{\"type\":\"string\",\"description\":\"The balance of the asset.\",\"format\":\"unsignedInteger\"},\"isFrozen\":{\"type\":\"boolean\",\"description\":\"Whether the asset is frozen for non-admin transfers. Note, that some runtimes may not have support for isFrozen and if so the following will be returned `isFrozen does not exist for this runtime`\"},\"isSufficient\":{\"type\":\"boolean\",\"description\":\"Whether a non-zero balance of this asset is a deposit of sufficient value to account for the state bloat associated with its balance storage. If set to `true`, then non-zero balances may be stored without a `consumer` reference (and thus an ED in the Balances pallet or whatever else is used to control user-account state growth).\"}}},\"AssetInfo\":{\"type\":\"object\",\"properties\":{\"owner\":{\"type\":\"string\",\"description\":\"Owner of the assets privileges.\",\"format\":\"SS58\"},\"issuer\":{\"type\":\"string\",\"description\":\"The `AccountId` able to mint tokens.\",\"format\":\"SS58\"},\"admin\":{\"type\":\"string\",\"description\":\"The `AccountId` that can thaw tokens, force transfers and burn token from any account.\",\"format\":\"SS58\"},\"freezer\":{\"type\":\"string\",\"description\":\"The `AccountId` that can freeze tokens.\",\"format\":\"SS58\"},\"supply\":{\"type\":\"string\",\"description\":\"The total supply across accounts.\",\"format\":\"unsignedInteger\"},\"deposit\":{\"type\":\"string\",\"description\":\"The balance deposited for this. This pays for the data stored.\",\"format\":\"unsignedInteger\"},\"minBalance\":{\"type\":\"string\",\"description\":\"The ED for virtual accounts.\",\"format\":\"unsignedInteger\"},\"isSufficient\":{\"type\":\"boolean\",\"description\":\"If `true`, then any account with this asset is given a provider reference. Otherwise, it requires a consumer reference.\"},\"accounts\":{\"type\":\"string\",\"description\":\"The total number of accounts.\",\"format\":\"unsignedInteger\"},\"sufficients\":{\"type\":\"string\",\"description\":\"The total number of accounts for which is placed a self-sufficient reference.\"},\"approvals\":{\"type\":\"string\",\"description\":\"The total number of approvals.\",\"format\":\"unsignedInteger\"},\"status\":{\"type\":\"string\",\"description\":\"The status of the asset.\"}}},\"AssetMetadata\":{\"type\":\"object\",\"properties\":{\"deposit\":{\"type\":\"string\",\"description\":\"The balance deposited for this metadata. This pays for the data stored in this struct.\",\"format\":\"unsignedInteger\"},\"name\":{\"type\":\"string\",\"description\":\"The user friendly name of this asset.\",\"format\":\"$hex\"},\"symbol\":{\"type\":\"string\",\"description\":\"The ticker symbol for this asset.\",\"format\":\"$hex\"},\"decimals\":{\"type\":\"string\",\"description\":\"The number of decimals this asset uses to represent one unit.\",\"format\":\"unsignedInteger\"},\"isFrozen\":{\"type\":\"boolean\",\"description\":\"Whether the asset metadata may be changed by a non Force origin. Note, that some runtimes may not have support for isFrozen and if so the following will be returned `isFrozen does not exist for this runtime`\"}}},\"BalanceLock\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"An identifier for this lock. Only one lock may be in existence for each identifier.\"},\"amount\":{\"type\":\"string\",\"description\":\"The amount below which the free balance may not drop with this lock in effect.\",\"format\":\"unsignedInteger\"},\"reasons\":{\"type\":\"string\",\"description\":\"Reasons for withdrawing balance.\",\"enum\":[\"Fee = 0\",\"Misc = 1\",\"All = 2\"]}}},\"Block\":{\"type\":\"object\",\"properties\":{\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"authorId\":{\"type\":\"string\",\"description\":\"The account ID of the block author (may be undefined for some chains).\",\"format\":\"ss58\"},\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"},\"onInitialize\":{\"$ref\":\"#/components/schemas/BlockInitialize\"},\"extrinsics\":{\"type\":\"array\",\"description\":\"Array of extrinsics (inherents and transactions) within the block.\",\"items\":{\"$ref\":\"#/components/schemas/Extrinsic\"}},\"onFinalize\":{\"$ref\":\"#/components/schemas/BlockFinalize\"},\"finalized\":{\"type\":\"boolean\",\"description\":\"A boolean identifying whether the block is finalized or not. Note: on chains that do not have deterministic finality this field is omitted.\"}},\"description\":\"Note: Block finalization does not correspond to consensus, i.e. whether the block is in the canonical chain. It denotes the finalization of block _construction._\"},\"BlockRaw\":{\"type\":\"object\",\"properties\":{\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}},\"extrinsics\":{\"type\":\"array\",\"description\":\"Array of raw extrinsics (inherents and transactions) within the block.\",\"items\":{\"type\":\"string\"}}}},\"Blocks\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Block\"}},\"BlockFinalize\":{\"type\":\"object\",\"properties\":{\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}}},\"description\":\"Object with an array of `SanitizedEvent`s that occurred during block construction finalization with the `method` and `data` for each.\"},\"BlockHeader\":{\"type\":\"object\",\"properties\":{\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}}}},\"BlockIdentifiers\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"height\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"}},\"description\":\"Block number and hash at which the call was made.\"},\"BlockInitialize\":{\"type\":\"object\",\"properties\":{\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}}},\"description\":\"Object with an array of `SanitizedEvent`s that occurred during block initialization with the `method` and `data` for each.\"},\"BlocksTrace\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"blockHash\":{\"type\":\"string\"},\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TraceEvent\"}},\"parentHash\":{\"type\":\"string\"},\"spans\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TraceSpan\"}},\"storageKeys\":{\"type\":\"string\",\"description\":\"Hex encoded storage keys used to filter events.\"},\"tracingTargets\":{\"type\":\"string\",\"description\":\"Targets used to filter spans and events.\"}}},\"BlocksTraceOperations\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"operations\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Operation\"}}}},\"BlockWithDecodedXcmMsgs\":{\"allOf\":[{\"$ref\":\"#/components/schemas/Block\"},{\"$ref\":\"#/components/schemas/DecodedXcmMsgs\"}],\"description\":\"Block information that includes the decoded XCM messages if any are found in the queried block. If not, the decodedXcmMsgs object will be returned with three empty arrays corresponding to each direction, horizontalMessages, downwardMessages, upwardMessages.\"},\"BondedPool\":{\"type\":\"object\",\"properties\":{\"points\":{\"type\":\"number\"},\"state\":{\"type\":\"string\"},\"memberCounter\":{\"type\":\"number\"},\"roles\":{\"type\":\"object\",\"properties\":{\"depositor\":{\"type\":\"string\"},\"root\":{\"type\":\"string\"},\"nominator\":{\"type\":\"string\"},\"stateToggler\":{\"type\":\"string\"}}}}},\"ChainType\":{\"type\":\"object\",\"description\":\"Type of the chain. It will return one of the following enum variants as a key. Live, Development, Local, or Custom. Each variant will have a value as null except when the ChainType is Custom, it will return a string.\",\"properties\":{\"live\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"development\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"local\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"custom\":{\"type\":\"string\"}},\"example\":\"{\\\"live\\\": null}\"},\"ContractsInkQuery\":{\"type\":\"object\",\"description\":\"Result from calling a query to a Ink contract.\",\"properties\":{\"debugMessage\":{\"type\":\"string\"},\"gasConsumed\":{\"type\":\"string\"},\"gasRequired\":{\"type\":\"string\"},\"output\":{\"type\":\"boolean\"},\"result\":{\"type\":\"object\",\"description\":\"Will result in an Ok or Err object depending on the result of the query.\"},\"storageDeposit\":{\"type\":\"object\"}}},\"ContractMetadata\":{\"type\":\"object\",\"description\":\"Metadata used to instantiate a ContractPromise. This metadata can be generated by compiling the contract you are querying.\"},\"DecodedXcmMsgs\":{\"type\":\"object\",\"properties\":{\"decodedXcmMsgs\":{\"type\":\"object\",\"properties\":{\"horizontalMessages\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/DecodedXcmMsgsHorizontalMessagesInRelay\"},{\"$ref\":\"#/components/schemas/DecodedXcmMsgsHorizontalMessagesInParachain\"}]},\"downwardMessages\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"sentAt\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Represents the block number that the XCM message was sent at on the relay chain.\"},\"msg\":{\"type\":\"string\",\"description\":\"Represents the XCM message.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}}}},\"upwardMessages\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}}}}}}},\"description\":\"Object with three arrays, one for every XCM direction. The arrays are populated or left empty based on the direction of the current XCM message that is being decoded. The XCM messages can be Upward and/or Horizontal (`in transit`) messages when connected to a Relay chain. When connected to a Parachain, the messages can be Downward and/or Horizontal. One or more messages can be present in a single block. In case of multiple messages from the same paraIds (originParaId and/or destinationParaId), the messages will be shown under the field `data`.\"},\"DecodedXcmMsgsHorizontalMessagesInRelay\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"destinationParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent to.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}},\"description\":\"Array that includes the Horizontal (`in transit`) messages when we are connected to a Relay Chain. Each block can contain one or more messages. If multiple messages share the same origin and destination paraId, they will be displayed within the data field.\"}},\"DecodedXcmMsgsHorizontalMessagesInParachain\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"sentAt\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Represents the block number that the XCM message was sent at on the relay chain.\"},\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}},\"description\":\"Array that includes the Horizontal Messages when we are connected to a Parachain. Each block can contain one or more messages. If multiple messages originate from the same parachain (originParaId), they will be displayed within the data field.\"}},\"DigestItem\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"index\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"value\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"ElectionStatus\":{\"type\":\"object\",\"properties\":{\"status\":{\"type\":\"object\",\"description\":\"[Deprecated](Works for polkadot runtimes before v0.8.30).\\nEra election status: either `Close: null` or `Open: `. A status of `Close` indicates that the submission window for solutions from off-chain Phragmen is not open. A status of `Open` indicates that the submission window for off-chain Phragmen solutions has been open since BlockNumber. N.B. when the submission window is open, certain extrinsics are not allowed because they would mutate the state that the off-chain Phragmen calculation relies on for calculating results.\"},\"toggleEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the `status` will switch.\",\"format\":\"unsignedInteger\"}},\"description\":\"Information about the off-chain election. Not included in response when `forceEra.isForceNone`.\"},\"Error\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"message\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"},\"level\":{\"type\":\"string\"}}},\"ExtrinsicMethod\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\"},\"method\":{\"type\":\"string\"}},\"description\":\"Extrinsic method\"},\"Extrinsic\":{\"type\":\"object\",\"properties\":{\"method\":{\"$ref\":\"#/components/schemas/ExtrinsicMethod\"},\"signature\":{\"$ref\":\"#/components/schemas/Signature\"},\"nonce\":{\"type\":\"string\",\"description\":\"Account nonce, if applicable.\",\"format\":\"unsignedInteger\"},\"args\":{\"type\":\"object\",\"description\":\"Object of arguments keyed by parameter name. Note: if you are expecting an [`OpaqueCall`](https://substrate.dev/rustdocs/v2.0.0/pallet_multisig/type.OpaqueCall.html) and it is not decoded in the response (i.e. it is just a hex string), then Sidecar was not able to decode it and likely that it is not a valid call for the runtime.\"},\"tip\":{\"type\":\"string\",\"description\":\"Any tip added to the transaction.\",\"format\":\"unsignedInteger\"},\"hash\":{\"type\":\"string\",\"description\":\"The transaction's hash.\",\"format\":\"hex\"},\"info\":{\"$ref\":\"#/components/schemas/RuntimeDispatchInfo\"},\"era\":{\"$ref\":\"#/components/schemas/GenericExtrinsicEra\"},\"events\":{\"type\":\"array\",\"description\":\"An array of `SanitizedEvent`s that occurred during extrinsic execution.\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}},\"success\":{\"type\":\"boolean\",\"description\":\"Whether or not the extrinsic succeeded.\"},\"paysFee\":{\"type\":\"boolean\",\"description\":\"Whether the extrinsic requires a fee. Careful! This field relates to whether or not the extrinsic requires a fee if called as a transaction. Block authors could insert the extrinsic as an inherent in the block and not pay a fee. Always check that `paysFee` is `true` and that the extrinsic is signed when reconciling old blocks.\"}}},\"ExtrinsicIndex\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"extrinsic\":{\"$ref\":\"#/components/schemas/Extrinsic\"}},\"description\":\"A single extrinsic at a given block.\"},\"FundInfo\":{\"type\":\"object\",\"properties\":{\"depositor\":{\"type\":\"string\"},\"verifier\":{\"type\":\"string\"},\"deposit\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"raised\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"end\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"cap\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"lastConstribution\":{\"type\":\"string\",\"enum\":[\"preEnding\",\"ending\"]},\"firstPeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"lastPeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"trieIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"GenericExtrinsicEra\":{\"type\":\"object\",\"description\":\"The return value for era can either be `mortalEra`, or `immortalEra` and is represented as an enum in substrate. `immortalEra` meaning\\nthe transaction is valid forever. `mortalEra` consists of a tuple containing a period and phase.\\nex: `\\\"{\\\"mortalEra\\\": [\\\"64\\\", \\\"11\\\"]}\\\"`. The Period is the period of validity from the block hash found in the signing material.\\nThe Phase is the period that this transaction's lifetime begins (and, importantly,\\nimplies which block hash is included in the signature material).\\n\",\"properties\":{\"mortalEra\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Tuple of a Phase, and Period. Each item in the array will be a string formatted as an integer.\"},\"immortalEra\":{\"type\":\"string\",\"description\":\"Hardcoded constant '0x00'.\",\"format\":\"hex\"}},\"example\":\"{\\\"mortalEra\\\":[\\\"64\\\", \\\"11\\\"]}\"},\"LiquidityPools\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pools\":{\"type\":\"array\",\"description\":\"Array containing existent liquidity pool's token id.\",\"items\":{\"$ref\":\"#/components/schemas/LiquidityPool\"},\"example\":\"[{\\\"reserves\\\":[{\\\"parents\\\":\\\"1\\\",\\\"interior\\\":{\\\"here\\\": null}},{\\\"parents\\\":\\\"0\\\",\\\"interior\\\":{\\\"x2\\\":[{\\\"palletInstance\\\": \\\"50\\\"},{\\\"generalIndex\\\":\\\"2\\\"}]}}],\\\"lpToken\\\":{\\\"lpToken\\\":\\\"1\\\"} },{\\\"lpToken\\\":{\\\"lpToken\\\":\\\"0\\\"}}]\"}}},\"LiquidityPool\":{\"type\":\"object\",\"properties\":{\"reserves\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"parents\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"interior\":{\"type\":\"object\"}}}},\"lpToken\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Liquidity pool token ID.\"}}},\"NextAvailableId\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"id\":{\"type\":\"string\",\"description\":\"Next availabe liquidity pool's id.\",\"example\":\"4\"}}},\"NodeNetwork\":{\"type\":\"object\",\"properties\":{\"nodeRoles\":{\"$ref\":\"#/components/schemas/NodeRole\"},\"numPeers\":{\"type\":\"string\",\"description\":\"Number of peers the node is connected to.\",\"format\":\"unsignedInteger\"},\"isSyncing\":{\"type\":\"boolean\",\"description\":\"Whether or not the node is syncing. `False` indicates that the node is in sync.\"},\"shouldHavePeers\":{\"type\":\"boolean\",\"description\":\"Whether or not the node should be connected to peers. Might be false for local chains or when running without discovery.\"},\"localPeerId\":{\"type\":\"string\",\"description\":\"Local copy of the `PeerId`.\"},\"localListenAddresses\":{\"type\":\"array\",\"description\":\"Multiaddresses that the local node is listening on. The addresses include a trailing `/p2p/` with the local PeerId, and are thus suitable to be passed to `system_addReservedPeer` or as a bootnode address for example.\",\"items\":{\"type\":\"string\"}},\"peersInfo\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PeerInfo\"}}}},\"NodeRole\":{\"type\":\"string\",\"description\":\"Role of this node. (N.B. Sentry nodes are being deprecated.)\",\"enum\":[\"Full\",\"LightClient\",\"Authority\",\"Sentry\"]},\"NodeVersion\":{\"type\":\"object\",\"properties\":{\"clientVersion\":{\"type\":\"string\",\"description\":\"Node's binary version.\"},\"clientImplName\":{\"type\":\"string\",\"description\":\"Node's implementation name.\"},\"chain\":{\"type\":\"string\",\"description\":\"Node's chain name.\"}},\"description\":\"Version information of the node.\"},\"Nominations\":{\"type\":\"object\",\"properties\":{\"targets\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"The targets of the nomination.\"},\"submittedIn\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The era the nominations were submitted. (Except for initial nominations which are considered submitted at era 0.)\"},\"suppressed\":{\"type\":\"boolean\",\"description\":\"Whether the nominations have been suppressed.\"}}},\"OnboardingAs\":{\"type\":\"string\",\"enum\":[\"parachain\",\"parathread\"],\"description\":\"This property only shows up when `paraLifecycle=onboarding`. It\\ndescribes if a particular para is onboarding as a `parachain` or a\\n`parathread`.\\n\"},\"Operation\":{\"type\":\"object\",\"properties\":{\"phase\":{\"$ref\":\"#/components/schemas/OperationPhase\"},\"parentSpanId\":{\"$ref\":\"#/components/schemas/SpanId\"},\"primarySpanId\":{\"$ref\":\"#/components/schemas/SpanId\"},\"eventIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Index of the underlying trace event.\"},\"address\":{\"type\":\"string\",\"description\":\"Account this operation affects. Note - this will be an object like\\n`{ id: address }` if the network uses `MultiAddress`\\n\"},\"storage\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\"},\"item\":{\"type\":\"string\"},\"field1\":{\"type\":\"string\",\"description\":\"A field of the storage item. (i.e `system::Account::get(address).data`)\\n\"},\"field2\":{\"type\":\"string\",\"description\":\"A field of the struct described by field1 (i.e\\n`system::Account::get(address).data.free`)\\n\"}}},\"amount\":{\"$ref\":\"#/components/schemas/OperationAmount\"}}},\"OperationAmount\":{\"type\":\"object\",\"properties\":{\"values\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"currency\":{\"$ref\":\"#/components/schemas/OperationAmountCurrency\"}}},\"OperationAmountCurrency\":{\"type\":\"object\",\"properties\":{\"symbol\":{\"type\":\"string\",\"example\":\"KSM\"}}},\"OperationPhase\":{\"type\":\"object\",\"properties\":{\"variant\":{\"type\":\"string\",\"enum\":[\"onInitialize\",\"initialChecks\",\"applyExtrinsic\",\"onFinalize\",\"finalChecks\"],\"description\":\"Phase of block execution pipeline.\"},\"extrinsicIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"If phase variant is `applyExtrinsic` this will be the index of\\nthe extrinsic. Otherwise this field will not be present.\\n\"}}},\"PalletsAssetsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"assetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"assetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"}}},\"PalletConstants\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up constants.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletConstantsItemMetadata\"},\"description\":\"Array containing metadata for each constant entry of the pallet.\"}}},\"PalletConstantsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up constants.\",\"example\":\"14\"},\"errorItem\":{\"type\":\"string\",\"description\":\"Name of the constant item.\",\"example\":\"EnactmentPeriod\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletConstantsItemMetadata\"}}},\"PalletConstantsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"VotingPeriod\",\"description\":\"The constant item's name (which is the same as the constant item's ID).\"},\"type\":{\"type\":\"string\",\"example\":\"4\"},\"value\":{\"type\":\"string\",\"example\":\"0x00270600\",\"description\":\"The hex value of the constant\"},\"docs\":{\"type\":\"string\",\"example\":\"Information concerning any given constant.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"}},\"description\":\"Metadata of an constant item from a FRAME pallet.\"},\"PalletDispatchables\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up dispatchables.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItemMetadata\"},\"description\":\"Array containing metadata for each dispatchable entry of the pallet.\"}}},\"PalletDispatchablesItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up dispatchables.\",\"example\":\"14\"},\"dispatchableItem\":{\"type\":\"string\",\"description\":\"Name of the dispatchable item.\",\"example\":\"vote\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItemMetadata\"}}},\"PalletDispatchablesItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"propose\",\"description\":\"The dispatchable item's name (which is the same as the dispatchable item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the dispatchable item in the lists of pallet dispatchables.\"},\"docs\":{\"type\":\"string\",\"example\":\"Information concerning any given dispatchable.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of a dispatchable item from a FRAME pallet.\"},\"PalletErrors\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up errors.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletErrorsItemMetadata\"},\"description\":\"Array containing metadata for each error entry of the pallet.\"}}},\"PalletErrorsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up errors.\",\"example\":\"14\"},\"errorItem\":{\"type\":\"string\",\"description\":\"Name of the error item.\",\"example\":\"ValueLow\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletErrorsItemMetadata\"}}},\"PalletErrorsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"InsufficientFunds\",\"description\":\"The error item's name (which is the same as the error item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the error item in the lists of pallet errors\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given error.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of an error item from a FRAME pallet.\"},\"PalletEvents\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up events.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletEventsItemMetadata\"}}}},\"PalletEventsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up events.\",\"example\":\"14\"},\"eventItem\":{\"type\":\"string\",\"description\":\"Name of the events item.\",\"example\":\"Proposed\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletEventsItemMetadata\"}}},\"PalletEventsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"Tabled\",\"description\":\"The event item's name (which is the same as the event item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the error item in the lists of pallet events\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given event.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of an event item from a FRAME pallet.\"},\"PalletsForeignAssets\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletsForeignAssetsInfo\"},\"description\":\"Array containing the `AssetDetails` and `AssetMetadata` of every foreign asset.\"}}},\"PalletsForeignAssetsInfo\":{\"type\":\"object\",\"properties\":{\"foreignAssetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"foreignAssetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"}}},\"PalletsNominationPool\":{\"type\":\"object\",\"properties\":{\"bondedPool\":{\"$ref\":\"#/components/schemas/BondedPool\"},\"rewardPool\":{\"$ref\":\"#/components/schemas/RewardPool\"}}},\"PalletsNominationPoolsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"counterForBondedPools\":{\"type\":\"number\"},\"counterForMetadata\":{\"type\":\"number\"},\"counterForPoolMembers\":{\"type\":\"number\"},\"counterForReversePoolIdLookup\":{\"type\":\"number\"},\"counterForRewardPools\":{\"type\":\"number\"},\"counterForSubPoolsStorage\":{\"type\":\"number\"},\"lastPoolId\":{\"type\":\"number\"},\"maxPoolMembers\":{\"type\":\"number\"},\"maxPoolMembersPerPool\":{\"type\":\"number\",\"nullable\":true},\"maxPools\":{\"type\":\"number\"},\"minCreateBond\":{\"type\":\"number\"},\"minJoinBond\":{\"type\":\"number\"}}},\"PalletsPoolAssetsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"poolAssetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"poolAssetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"}}},\"PalletStorage\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up storage.\",\"example\":\"15\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletStorageItemMetadata\"},\"description\":\"Array containing metadata for each storage entry of the pallet.\"}}},\"PalletStorageItem\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up storage.\",\"example\":\"15\"},\"storageItem\":{\"type\":\"string\",\"description\":\"Name of the storage item.\",\"example\":\"referendumInfoOf\"},\"keys\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"N Storage keys passed in as the `keys` query param.\",\"example\":[\"0x00\",\"0x01\"]},\"value\":{\"type\":\"object\",\"description\":\"Value returned by this storage query.\",\"example\":{\"Ongoing\":{\"end\":\"1612800\",\"proposalHash\":\"0x7de70fc8be782076d0b5772be77153d172a5381c72dd56d3385e25f62abf507e\",\"threshold\":\"Supermajorityapproval\",\"delay\":\"403200\",\"tally\":{\"ayes\":\"41925212461400000\",\"nays\":\"214535586500000\",\"turnout\":\"34485320658000000\"}}}},\"metadata\":{\"$ref\":\"#/components/schemas/PalletStorageItemMetadata\"}}},\"PalletStorageItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"ReferendumInfoOf\",\"description\":\"The storage item's name (which is the same as the storage item's ID).\"},\"modifier\":{\"type\":\"string\",\"example\":\"Optional\"},\"type\":{\"$ref\":\"#/components/schemas/PalletStorageType\"},\"fallback\":{\"type\":\"string\",\"example\":\"0x00\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given referendum.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"}},\"description\":\"Metadata of a storage item from a FRAME pallet.\"},\"PalletStorageType\":{\"type\":\"object\",\"description\":\"This is going to be formatted to the type of StorageEntryTypeV14.\"},\"Para\":{\"type\":\"object\",\"properties\":{\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"paraLifecycle\":{\"$ref\":\"#/components/schemas/ParaLifecycle\"},\"onboardingAs\":{\"$ref\":\"#/components/schemas/OnboardingAs\"}}},\"Paras\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paras\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Para\"}}}},\"ParasAuctionsCurrent\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"beginEnd\":{\"type\":\"string\",\"format\":\"unisgnedInteger or $null\",\"description\":\"Fist block (number) of the auction ending phase. `null` if there is no ongoing\\nauction.\\n\"},\"finishEnd\":{\"type\":\"string\",\"format\":\"unisgnedInteger or $null\",\"description\":\"Last block (number) of the auction ending phase. `null` if there is no ongoing\\nauction.\\n\"},\"phase\":{\"type\":\"string\",\"enum\":[\"startPeriod\",\"endPeriod\",\"vrfDelay\"],\"description\":\"An auction can be in one of 4 phases. Both `startingPeriod` () and `endingPeriod` indicate\\nan ongoing auction, while `vrfDelay` lines up with the `AuctionStatus::VrfDelay` . Finally, a value of `null`\\nindicates there is no ongoing auction. Keep in mind the that the `finishEnd` field is the block number the\\n`endingPeriod` finishes and the `vrfDelay` period begins. The `vrfDelay` period is typically about an\\nepoch long and no crowdloan contributions are accepted.\\n\"},\"auctionIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The auction number. If there is no current auction this will be the number\\nof the previous auction.\\n\"},\"leasePeriods\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"Lease period indexes that may be bid on in this auction. `null` if\\nthere is no ongoing auction.\\n\"},\"winning\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/WinningData\"}}}},\"ParasCrowdloans\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"funds\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"fundInfo\":{\"$ref\":\"#/components/schemas/FundInfo\"}}},\"description\":\"List of paras that have crowdloans.\\n\"}}},\"ParasCrowdloanInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"fundInfo\":{\"$ref\":\"#/components/schemas/FundInfo\"},\"leasePeriods\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"Lease periods the crowdloan can bid on.\"}}},\"ParasHeaders\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paraId\":{\"type\":\"object\",\"description\":\"The key is not named `paraId` and will be the number of the parachain. There is technically no limit to the number of paraId keys there can be. \\n\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicsRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}}}}}},\"ParasLeasesCurrent\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"leasePeriodIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Current lease period index. This value may be null when the current block now, substracted by the leaseOffset is less then zero.\"},\"endOfLeasePeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Last block (number) of the current lease period. This value may be null when `leasePeriodIndex` is null.\"},\"currentLeaseHolders\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"List of `paraId`s that currently hold a lease.\"}}},\"ParasLeaseInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paraLifecycle\":{\"$ref\":\"#/components/schemas/ParaLifecycle\"},\"onboardingAs\":{\"$ref\":\"#/components/schemas/OnboardingAs\"},\"leases\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"leasePeriodIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"account\":{\"type\":\"string\"},\"deposit\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"description\":\"List of lease periods for which the `paraId` holds a lease along with\\nthe deposit held and the associated `accountId`.\\n\"}}},\"ParaLifecycle\":{\"type\":\"string\",\"enum\":[\"onboarding\",\"parathread\",\"parachain\",\"upgradingParathread\",\"downgradingParachain\",\"offboardingParathread\",\"offboardingParachain\"],\"description\":\"The possible states of a para, to take into account delayed lifecycle\\nchanges.\\n\"},\"Payouts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"validatorId\":{\"type\":\"string\",\"description\":\"AccountId of the validator the payout is coming from.\"},\"nominatorStakingPayout\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Payout for the reward destination associated with the accountId the query was made for.\"},\"claimed\":{\"type\":\"boolean\",\"description\":\"Whether or not the reward has been claimed.\"},\"totalValidatorRewardPoints\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Number of reward points earned by the validator.\"},\"validatorCommission\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The percentage of the total payout that the validator takes as commission, expressed as a Perbill.\"},\"totalValidatorExposure\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The sum of the validator's and its nominators' stake.\"},\"nominatorExposure\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The amount of stake the nominator has behind the validator.\"}},\"description\":\"Payout for a nominating _Stash_ address and information about the validator they were nominating.\"}},\"PeerInfo\":{\"type\":\"object\",\"properties\":{\"peerId\":{\"type\":\"string\",\"description\":\"Peer ID.\"},\"roles\":{\"type\":\"string\",\"description\":\"Roles the peer is running\"},\"protocolVersion\":{\"type\":\"string\",\"description\":\"Peer's protocol version.\",\"format\":\"unsignedInteger\"},\"bestHash\":{\"type\":\"string\",\"description\":\"Hash of the best block on the peer's canon chain.\",\"format\":\"hex\"},\"bestNumber\":{\"type\":\"string\",\"description\":\"Height of the best block on the peer's canon chain.\",\"format\":\"unsignedInteger\"}}},\"RewardPool\":{\"type\":\"object\",\"properties\":{\"lastRecordedRewardCounter\":{\"type\":\"number\"},\"lastRecordedTotalPayouts\":{\"type\":\"number\"},\"totalRewardsClaimed\":{\"type\":\"number\"}}},\"RuntimeCode\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"code\":{\"type\":\"string\",\"format\":\"hex\"}}},\"RuntimeDispatchInfo\":{\"type\":\"object\",\"properties\":{\"weight\":{\"$ref\":\"#/components/schemas/WeightsV2\",\"description\":\"Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.\"},\"class\":{\"type\":\"string\",\"description\":\"Extrinsic class.\",\"enum\":[\"Normal\",\"Operational\",\"Mandatory\"]},\"partialFee\":{\"type\":\"string\",\"description\":\"The _inclusion fee_ of a transaction, i.e. the minimum fee required for a transaction. Includes weight and encoded length fees, but does not have access to any signed extensions, e.g. the `tip`.\",\"format\":\"unsignedInteger\"},\"kind\":{\"type\":\"string\",\"description\":\"Information on the partialFee that is collected. Can be either `preDispatch`, `postDispatch` or `fromEvent`. `preDispatch` means the information used to collect the fee was from `payment_queryInfo`, `postDispatch` means the information used to calculate the fee was from finalized weights for the extrinsic, and `fromEvent` means that the partialFee was abstracted from the `TransactionPayment::TransactionPaidFee` event.\"}},\"description\":\"RuntimeDispatchInfo for the transaction. Includes the `partialFee`.\"},\"RuntimeSpec\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"authoringVersion\":{\"type\":\"string\",\"description\":\"The version of the authorship interface. An authoring node will not attempt to author blocks unless this is equal to its native runtime.\"},\"chainType\":{\"$ref\":\"#/components/schemas/ChainType\"},\"implVersion\":{\"type\":\"string\",\"description\":\"Version of the implementation specification. Non-consensus-breaking optimizations are about the only changes that could be made which would result in only the `impl_version` changing. The `impl_version` is set to 0 when `spec_version` is incremented.\"},\"specName\":{\"type\":\"string\",\"description\":\"Identifies the different Substrate runtimes.\"},\"specVersion\":{\"type\":\"string\",\"description\":\"Version of the runtime specification.\"},\"transactionVersion\":{\"type\":\"string\",\"description\":\"All existing dispatches are fully compatible when this number doesn't change. This number must change when an existing dispatchable (module ID, dispatch ID) is changed, either through an alteration in its user-level semantics, a parameter added/removed/changed, a dispatchable being removed, a module being removed, or a dispatchable/module changing its index.\"},\"properties\":{\"type\":\"object\",\"description\":\"Arbitrary properties defined in the chain spec.\"}},\"description\":\"Version information related to the runtime.\"},\"SanitizedEvent\":{\"type\":\"object\",\"properties\":{\"method\":{\"type\":\"string\"},\"data\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"Signature\":{\"type\":\"object\",\"properties\":{\"signature\":{\"type\":\"string\",\"format\":\"hex\"},\"signer\":{\"type\":\"string\",\"format\":\"ss58\"}},\"description\":\"Object with `signature` and `signer`, or `null` if unsigned.\"},\"SpanId\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"target\":{\"type\":\"string\"},\"id\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"StakingLedger\":{\"type\":\"object\",\"properties\":{\"stash\":{\"type\":\"string\",\"description\":\"The _Stash_ account whose balance is actually locked and at stake.\",\"format\":\"ss58\"},\"total\":{\"type\":\"string\",\"description\":\"The total amount of the _Stash_'s balance that we are currently accounting for. Simply `active + unlocking`.\",\"format\":\"unsignedInteger\"},\"active\":{\"type\":\"string\",\"description\":\"The total amount of the _Stash_'s balance that will be at stake in any forthcoming eras.\",\"format\":\"unsignedInteger\"},\"unlocking\":{\"type\":\"string\",\"description\":\"Any balance that is becoming free, which may eventually be transferred out of the _Stash_ (assuming it doesn't get slashed first). Represented as an array of objects, each with an `era` at which `value` will be unlocked.\",\"format\":\"unsignedInteger\"},\"claimedRewards\":{\"type\":\"array\",\"description\":\"Array of eras for which the stakers behind a validator have claimed rewards. Only updated for _validators._ This array is populated with values from `stakingLedger.legacyClaimedRewards` or `stakingLedger.claimedRewards`, as well as the `query.staking.claimedRewards` call, depending on whether the queried block is before or after the migration. For more details on the implementation and the migration, refer to the related PR and linked issue.\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"description\":\"The staking ledger.\"},\"StakingProgress\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"activeEra\":{\"type\":\"string\",\"description\":\"`EraIndex` of the era being rewarded.\\n\",\"format\":\"unsignedInteger\"},\"forceEra\":{\"type\":\"string\",\"description\":\"Current status of era forcing.\",\"enum\":[\"ForceNone\",\"NotForcing\",\"ForceAlways\",\"ForceNew\"]},\"nextActiveEraEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the next active era will start. Not included in response when `forceEra.isForceNone`.\",\"format\":\"unsignedInteger\"},\"nextSessionEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the next session will start.\",\"format\":\"unsignedInteger\"},\"unappliedSlashes\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/UnappliedSlash\"},\"description\":\"Array of upcoming `UnappliedSlash` indexed by era.\"},\"electionStatus\":{\"$ref\":\"#/components/schemas/ElectionStatus\"},\"idealValidatorCount\":{\"type\":\"string\",\"description\":\"Upper bound of validator set size; considered the ideal size. Not included in response when `forceEra.isForceNone`.\",\"format\":\"unsignedInteger\"},\"validatorSet\":{\"type\":\"array\",\"description\":\"Stash account IDs of the validators for the current session. Not included in response when `forceEra.isForceNone`.\",\"items\":{\"type\":\"string\",\"format\":\"ss58\"}}}},\"StakingValidators\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"validators\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"address\":{\"type\":\"string\",\"description\":\"Address of validator.\"},\"status\":{\"type\":\"string\",\"description\":\"Status of individual validator (active/waiting).\"}}}},\"validatorsToBeChilled\":{\"description\":\"Validators that will not be participating in the next era.\",\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"address\":{\"type\":\"string\",\"description\":\"Address of validator.\"},\"status\":{\"type\":\"string\",\"description\":\"Status of individual validator (active/waiting).\"}}}}}},\"StorageEntryTypeV13\":{\"type\":\"object\",\"properties\":{\"hasher\":{\"type\":\"string\",\"description\":\"Returns a string deonting the storage hasher.\"},\"key\":{\"type\":\"string\",\"description\":\"Key of the queried pallet storageId.\"},\"value\":{\"type\":\"string\",\"description\":\"Value of the queried pallet storageId.\"},\"linked\":{\"type\":\"boolean\"}}},\"StorageEntryTypeV14\":{\"type\":\"object\",\"properties\":{\"hasher\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Returns a string denoting the storage hasher inside of an array.\"},\"key\":{\"type\":\"string\",\"description\":\"The SiLookupTypeId to identify the type.\"},\"value\":{\"type\":\"string\",\"description\":\"The SiLookupTypeId to identify the type.\"}}},\"TraceEvent\":{\"type\":\"object\",\"properties\":{\"data\":{\"type\":\"object\",\"properties\":{\"stringValues\":{\"$ref\":\"#/components/schemas/TraceEventDataStringValues\"}}},\"parentId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"target\":{\"type\":\"string\"}}},\"TraceEventDataStringValues\":{\"type\":\"object\",\"properties\":{\"key\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"The complete storage key for the entry.\"},\"method\":{\"type\":\"string\",\"description\":\"Normally one of Put or Get.\"},\"result\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"Hex scale encoded storage value.\"}},\"description\":\"Note these exact values will only be present for storage events.\"},\"TraceSpan\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"name\":{\"type\":\"string\"},\"parentId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"target\":{\"type\":\"string\"},\"wasm\":{\"type\":\"boolean\"}}},\"Transaction\":{\"type\":\"object\",\"properties\":{\"tx\":{\"type\":\"string\",\"format\":\"hex\"}}},\"TransactionDryRun\":{\"type\":\"object\",\"properties\":{\"resultType\":{\"type\":\"string\",\"enum\":[\"DispatchOutcome\",\"TransactionValidityError\"],\"description\":\"Either `DispatchOutcome` if the transaction is valid or `TransactionValidityError` if the result is invalid.\"},\"result\":{\"type\":\"string\",\"enum\":[\"Ok\",\"CannotLookup\",\"NoUnsignedValidator\",\"Custom(u8)\",\"Call\",\"Payment\",\"Future\",\"Stale\",\"BadProof\",\"AncientBirthBlock\",\"ExhaustsResources\",\"BadMandatory\",\"MandatoryDispatch\"],\"description\":\"If there was an error it will be the cause of the error. If the transaction executed correctly it will be `Ok: []`\"},\"validityErrorType\":{\"type\":\"string\",\"enum\":[\"InvalidTransaction\",\"UnknownTransaction\"]}},\"description\":\"References: - `UnknownTransaction`: https://crates.parity.io/sp_runtime/transaction_validity/enum.UnknownTransaction.html - `InvalidTransaction`: https://crates.parity.io/sp_runtime/transaction_validity/enum.InvalidTransaction.html\"},\"TransactionFailedToParse\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"error\":{\"type\":\"string\",\"description\":\"`Failed to parse a tx.`\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"cause\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"}},\"description\":\"Error message when Sidecar fails to parse the transaction.\"},\"TransactionFailedToSubmit\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"error\":{\"type\":\"string\",\"description\":\"Failed to submit transaction.\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"cause\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"}},\"description\":\"Error message when the node rejects the submitted transaction.\"},\"TransactionFailure\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/TransactionFailedToSubmit\"},{\"$ref\":\"#/components/schemas/TransactionFailedToParse\"}]},\"TransactionFeeEstimate\":{\"type\":\"object\",\"properties\":{\"weight\":{\"$ref\":\"#/components/schemas/WeightsV2\",\"description\":\"Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.\"},\"class\":{\"type\":\"string\",\"description\":\"Extrinsic class.\",\"enum\":[\"Normal\",\"Operational\",\"Mandatory\"]},\"partialFee\":{\"type\":\"string\",\"description\":\"Expected inclusion fee for the transaction. Note that the fee rate changes up to 30% in a 24 hour period and this will not be the exact fee.\",\"format\":\"unsignedInteger\"}},\"description\":\"Note: `partialFee` does not include any tips that you may add to increase a transaction's priority. See [compute_fee](https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee).\"},\"TransactionFeeEstimateFailure\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"at\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\"}}},\"error\":{\"type\":\"string\",\"description\":\"Error description.\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"block\":{\"type\":\"string\",\"description\":\"Block hash of the block fee estimation was attempted at.\"},\"cause\":{\"type\":\"string\",\"description\":\"Error message from the client.\"},\"stack\":{\"type\":\"string\"}}},\"TransactionMaterial\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"genesisHash\":{\"type\":\"string\",\"description\":\"The hash of the chain's genesis block.\",\"format\":\"blockHash\"},\"chainName\":{\"type\":\"string\",\"description\":\"The chain's name.\"},\"specName\":{\"type\":\"string\",\"description\":\"The chain's spec.\"},\"specVersion\":{\"type\":\"string\",\"description\":\"The spec version. Always increased in a runtime upgrade.\"},\"txVersion\":{\"type\":\"string\",\"description\":\"The transaction version. Common `txVersion` numbers indicate that the transaction encoding format and method indices are the same. Needed for decoding in an offline environment. Adding new transactions does not change `txVersion`.\"},\"metadata\":{\"type\":\"string\",\"description\":\"The chain's metadata. It will only be present when the metadata query param is used.\"}},\"description\":\"Note: `chainName`, `specName`, and `specVersion` are used to define a type registry with a set of signed extensions and types. For Polkadot and Kusama, `chainName` is not used in defining this registry, but in other Substrate-based chains that re-launch their network without changing the `specName`, the `chainName` would be needed to create the correct registry. Substrate Reference: - `RuntimeVersion`: https://crates.parity.io/sp_version/struct.RuntimeVersion.html - `SignedExtension`: https://crates.parity.io/sp_runtime/traits/trait.SignedExtension.html - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html\"},\"TransactionPool\":{\"type\":\"object\",\"properties\":{\"pool\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"H256 hash of the extrinsic.\"},\"encodedExtrinsic\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"Scale encoded extrinsic.\"},\"tip\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The tip included in the extrinsic. Only included if the query param `includeFee` is set to true.\"},\"priority\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Computed priority of an extrinsic. Only included if the query param `includeFee` is set to true.\"},\"partialFee\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Provided `partialFee` of an extrinsic. Only included if the query param `includeFee` is set to true.\"}}}}}},\"TransactionSuccess\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The hash of the encoded transaction.\"}}},\"UnappliedSlash\":{\"type\":\"object\",\"properties\":{\"validator\":{\"type\":\"string\",\"description\":\"Stash account ID of the offending validator.\",\"format\":\"ss58\"},\"own\":{\"type\":\"string\",\"description\":\"The amount the validator will be slashed.\",\"format\":\"unsignedInteger\"},\"others\":{\"type\":\"array\",\"description\":\"Array of tuples(`[accountId, amount]`) representing all the stashes of other slashed stakers and the amount they will be slashed.\",\"items\":{\"type\":\"string\",\"format\":\"tuple[ss58, unsignedInteger]\"}},\"reporters\":{\"type\":\"array\",\"description\":\"Array of account IDs of the reporters of the offense.\",\"items\":{\"type\":\"string\",\"format\":\"ss58\"}},\"payout\":{\"type\":\"string\",\"description\":\"Amount of bounty payout to reporters.\",\"format\":\"unsignedInteger\"}}},\"VestingSchedule\":{\"type\":\"object\",\"properties\":{\"locked\":{\"type\":\"string\",\"description\":\"Number of tokens locked at start.\",\"format\":\"unsignedInteger\"},\"perBlock\":{\"type\":\"string\",\"description\":\"Number of tokens that gets unlocked every block after `startingBlock`.\",\"format\":\"unsignedInteger\"},\"startingBlock\":{\"type\":\"string\",\"description\":\"Starting block for unlocking (vesting).\",\"format\":\"unsignedInteger\"}},\"description\":\"Vesting schedule for an account.\"},\"WeightsV2\":{\"type\":\"object\",\"properties\":{\"refTime\":{\"type\":\"string\",\"description\":\"The weight of computational time used based on some reference hardware.\"},\"proofSize\":{\"type\":\"string\",\"description\":\"The weight of storage space used by proof of validity.\"}}},\"WinningData\":{\"type\":\"object\",\"properties\":{\"bid\":{\"type\":\"object\",\"properties\":{\"accountId\":{\"type\":\"string\"},\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"amount\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"leaseSet\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"description\":\"A currently winning bid and the set of lease periods the bid is for. The\\n`amount` of the bid is per lease period. The `bid` property will be `null`\\nif no bid has been made for the corresponding `leaseSet`.\\n\"}},\"requestBodies\":{\"Transaction\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Transaction\"}}},\"required\":true},\"ContractMetadata\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ContractMetadata\"}}}}}}}\n\n//# sourceURL=webpack://sidecar-swagger-ui/./src/openapi-v1.yaml?"); +eval("module.exports = {\"openapi\":\"3.0.0\",\"info\":{\"title\":\"Substrate API Sidecar\",\"description\":\"Substrate API Sidecar is a REST service that makes it easy to interact with blockchain nodes built using Substrate's FRAME framework.\",\"contact\":{\"url\":\"https://github.com/paritytech/substrate-api-sidecar\"},\"license\":{\"name\":\"GPL-3.0-or-later\",\"url\":\"https://github.com/paritytech/substrate-api-sidecar/blob/master/LICENSE\"},\"version\":\"19.0.1\"},\"servers\":[{\"url\":\"https://polkadot-public-sidecar.parity-chains.parity.io/\",\"description\":\"Polkadot Parity public sidecar\"},{\"url\":\"https://kusama-public-sidecar.parity-chains.parity.io/\",\"description\":\"Kusama Parity public sidecar\"},{\"url\":\"https://polkadot-asset-hub-public-sidecar.parity-chains.parity.io/\",\"description\":\"Polkadot Asset Hub Parity public sidecar\"},{\"url\":\"https://kusama-asset-hub-public-sidecar.parity-chains.parity.io/\",\"description\":\"Kusama Asset Hub Parity public sidecar\"}],\"tags\":[{\"name\":\"accounts\"},{\"name\":\"blocks\"},{\"name\":\"contracts\"},{\"name\":\"node\",\"description\":\"node connected to sidecar\"},{\"name\":\"pallets\",\"description\":\"pallets employed in the runtime\"},{\"name\":\"runtime\"},{\"name\":\"transaction\"},{\"name\":\"paras\"},{\"name\":\"trace\"}],\"paths\":{\"/accounts/{accountId}/asset-balances\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an array of asset-balances for an account.\",\"description\":\"Returns information about an account's asset-balances. This is specific to the assets pallet for parachains. If no `assets` query parameter is provided, all asset-balances for the given account will be returned.\",\"operationId\":\"getAssetBalances\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset-balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a positive integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assets\",\"in\":\"query\",\"description\":\"An array of AssetId's to be queried. If not supplied, defaults to providing all asset balances associated with the `accountId` will be returned. The array query param format follows Express 4.x API. ex:`?assets[]=1&assets[]=2&assets[]=3`.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of assetId numbers represented as strings\",\"format\":\"Array of unsignedInteger's\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountAssetsBalances\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/asset-approvals\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an asset approval for an account.\",\"description\":\"Returns information about an account's asset approval transaction. It is required to pass in a delegate and an assetId as query parameters.\",\"operationId\":\"getAssetApprovals\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset approval info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assetId\",\"in\":\"query\",\"description\":\"The `assetId` associated with the asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"description\":\"An assetId represented as an unsignedInteger.\",\"format\":\"unsignedInteger\"}},{\"name\":\"delegate\",\"in\":\"query\",\"description\":\"The delegate's `accountId` associated with an asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountAssetsApproval\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/balance-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get balance information for an account.\",\"description\":\"Returns information about an account's balance. Replaces `/balance/{address}` from versions < v1.0.0.\",\"operationId\":\"getAccountBalanceInfo\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"token\",\"in\":\"query\",\"description\":\"Token to query the balance of. If not specified it will query the chains native token (e.g. DOT for Polkadot). Note: this is only relevant for chains that support multiple tokens through the ORML tokens pallet.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Token symbol\"}},{\"name\":\"denominated\",\"in\":\"query\",\"description\":\"When set to `true` it will denominate any balance's given atomic value using the chains given decimal value.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountBalanceInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/convert\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Convert a given AccountId to an SS58 address.\",\"description\":\"Returns the SS58 prefix, the network address format, the SS58 address, and the AccountId that was given as input parameter, the scheme that was used and if it is a public key or not (boolean).\",\"operationId\":\"accountConvert\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"AccountId or Public Key (hex).\",\"required\":true,\"schema\":{\"format\":\"AccountId or Hex\",\"type\":\"string\"}},{\"name\":\"scheme\",\"in\":\"query\",\"description\":\"The cryptographic scheme to be used in order to convert the AccountId to an SS58 address. It can take one of three values [sr25519, ed25519, ecdsa]. The default scheme that is used is `sr25519` (if it is not set in the query parameter).\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"string\",\"default\":\"sr25519\"}},{\"name\":\"prefix\",\"in\":\"query\",\"description\":\"The address prefix which can be one of the values found in the SS58-registry.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"number\",\"default\":42}},{\"name\":\"publicKey\",\"in\":\"query\",\"description\":\"Defines if the given value in the path parameter is a Public Key (hex) or not (hence AccountId).\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successfully converted the AccountId and retrieved the address info.\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountConvert\"}}}},\"400\":{\"description\":\"Invalid AccountId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"AccountId not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/pool-asset-balances\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an array of pool-asset-balances for an account.\",\"description\":\"Returns information about an account's pool-asset-balances. This is specific to the pool assets pallet for parachains. If no `assets` query parameter is provided, all pool-asset-balances for the given account will be returned.\",\"operationId\":\"getPoolAssetBalances\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query pool-asset-balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a positive integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assets\",\"in\":\"query\",\"description\":\"An array of AssetId's to be queried. If not supplied, defaults to providing all asset balances associated with the `accountId` will be returned. The array query param format follows Express 4.x API. ex:`?assets[]=1&assets[]=2&assets[]=3`.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"A list of assetId numbers represented as strings\",\"format\":\"Array of unsignedInteger's\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountPoolAssetsBalances\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/pool-asset-approvals\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an asset approval for an account.\",\"description\":\"Returns information about an account's asset approval transaction. It is required to pass in a delegate and an assetId as query parameters.\",\"operationId\":\"getPoolAssetApprovals\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset approval info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assetId\",\"in\":\"query\",\"description\":\"The `assetId` associated with the asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"description\":\"An assetId represented as an unsignedInteger.\",\"format\":\"unsignedInteger\"}},{\"name\":\"delegate\",\"in\":\"query\",\"description\":\"The delegate's `accountId` associated with an asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountAssetsApproval\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/proxy-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get proxy account information.\",\"description\":\"Returns information about a proxy account. This will include delegated accounts and deposits held.\",\"operationId\":\"getProxyInfo\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query proxy info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountProxyInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/staking-info\":{\"get\":{\"tags\":[\"staking\"],\"summary\":\"Get staking information for a _Stash_ account.\",\"description\":\"Returns information about a _Stash_ account's staking activity. Replaces `/staking/{address}` from versions < v1.0.0.\",\"operationId\":\"getStakingSummaryByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account. Must be a _Stash_ account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the staking info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountStakingInfo\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/staking-payouts\":{\"get\":{\"tags\":[\"staking\"],\"summary\":\"Get payout information for a _Stash_ account.\",\"description\":\"Returns payout information for the last specified eras. If specifying both the depth and era query params, this endpoint will return information for (era - depth) through era. (i.e. if depth=5 and era=20 information will be returned for eras 16 through 20). N.B. You cannot query eras less then `current_era - HISTORY_DEPTH`. N.B. The `nominator*` fields correspond to the address being queried, even if it is a validator's _Stash_ address. This is because a validator is technically nominating itself.\",\"operationId\":\"getStakingPayoutsByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account. Must be a _Stash_ account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query staking payouts.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"depth\",\"in\":\"query\",\"description\":\"The number of eras to query for payouts of. Must be less than or equal to `HISTORY_DEPTH`. In cases where `era - (depth -1)` is less than 0, the first era queried will be 0.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"default\":1}},{\"name\":\"era\",\"in\":\"query\",\"description\":\"The era to query at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"default\":\"`active_era - 1`\"}},{\"name\":\"unclaimedOnly\",\"in\":\"query\",\"description\":\"Only return unclaimed rewards.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountStakingPayouts\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/vesting-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get vesting information for an account.\",\"description\":\"Returns the vesting schedule for an account. Replaces `/vesting/{address}` from versions < v1.0.0.\",\"operationId\":\"getVestingSummaryByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the vesting info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountVestingInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{address}/validate\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Validate a given address.\",\"description\":\"Returns whether the given address is valid ss58 format, the ss58 prefix if the address has one, the network address format, and what the account ID is for this address.\",\"operationId\":\"getValidationByAccountId\",\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 or Hex address of the account.\",\"required\":true,\"schema\":{\"format\":\"SS58 or Hex\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successfully retrieved address info\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountValidation\"}}}}}}},\"/blocks\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a range of blocks by their height.\",\"description\":\"Given a range query parameter return an array of all the blocks within that range.\",\"operationId\":\"getBlock\",\"parameters\":[{\"name\":\"range\",\"in\":\"query\",\"description\":\"A range of integers. There is a max limit of 500 blocks per request.\",\"required\":true,\"example\":\"0-499\",\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Blocks\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a block by its height or hash.\",\"description\":\"Returns a single block. BlockId can either be a block hash or a block height. Replaces `/block/{number}` from versions < v1.0.0.\",\"operationId\":\"getBlockById\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"finalizedKey\",\"in\":\"query\",\"description\":\"When set to false, this will override the chain-config, and omit the finalized key in the response. This can increase performance slightly by avoiding an additional RPC call to the node.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"decodedXcmMsgs\",\"in\":\"query\",\"description\":\"When set to `true`, this will show the decoded XCM messages within the extrinsics of the requested block.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"paraId\",\"in\":\"query\",\"description\":\"When it is set, this will return only the decoded XCM messages for the specified origin Parachain Id (originParaId). To activate this functionality, ensure that the `decodedXcmMsgs` parameter is set to true.\",\"required\":false,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockWithDecodedXcmMsgs\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/header\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a block's header by its height or hash.\",\"description\":\"Returns a single block's header. BlockId can either be a block hash or a block height.\",\"operationId\":\"getBlockHeaderById\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockHeader\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/extrinsics/{extrinsicIndex}\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get an extrinsic by its extrinsicIndex and block height or hash. The pair blockId, extrinsicIndex is sometimes referred to as a Timepoint.\",\"description\":\"Returns a single extrinsic.\",\"operationId\":\"getExtrinsicByTimepoint\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"extrinsicIndex\",\"in\":\"path\",\"description\":\"The extrinsic's index within the block's body.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ExtrinsicIndex\"}}}},\"400\":{\"description\":\"Requested `extrinsicIndex` does not exist\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/head\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get the most recently finalized block.\",\"description\":\"Returns the most recently finalized block. Replaces `/block` from versions < v1.0.0.\",\"operationId\":\"getHeadBlock\",\"parameters\":[{\"name\":\"finalized\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to get the finalized head. If it is not set the value defaults to true. When set to false it will attempt to get the newest known block, which may not be finalized.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"decodedXcmMsgs\",\"in\":\"query\",\"description\":\"When set to `true`, this will show the decoded XCM messages within the extrinsics of the requested block.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"paraId\",\"in\":\"query\",\"description\":\"When it is set, this will return only the decoded XCM messages for the specified origin Parachain Id (originParaId). To activate this functionality, ensure that the `decodedXcmMsgs` parameter is set to true.\",\"required\":false,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockWithDecodedXcmMsgs\"}}}}}}},\"/blocks/head/header\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get information about the header of the most recent finalized block.\",\"description\":\"Returns the most recently finalized block's header.\",\"operationId\":\"getLatestBlockHeader\",\"parameters\":[{\"name\":\"finalized\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to get the finalized head. If it is not set the value defaults to true. When set to false it will attempt to get the newest known block, which may not be finalized.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockHeader\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/extrinsics-raw\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a blocks header & its extrinsics as hex values.\",\"description\":\"Returns a block & its extrinsics as hex values. BlockId can either be a block hash or a block height.\",\"operationId\":\"getBlockRawExtrinsics\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockRaw\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/contracts/ink/{address}/query\":{\"post\":{\"tags\":[\"contracts\"],\"summary\":\"Query an !Ink contract with a given message (method).\",\"description\":\"Will return a valid or invalid result.\",\"operationId\":\"callContractQuery\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/ContractMetadata\"},\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 or Hex address of the account associated with the contract.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"method\",\"in\":\"query\",\"description\":\"The message or method used to query.\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"get\"}},{\"name\":\"gasLimit\",\"in\":\"query\",\"description\":\"The gas limit to be used as an option for the queried message.\",\"required\":false,\"schema\":{\"default\":-1,\"type\":\"number\"}},{\"name\":\"storageDepositLimit\",\"in\":\"query\",\"description\":\"The storage deposit limit to be used as an option for the queried message.\",\"required\":false,\"schema\":{\"default\":null,\"type\":\"number\"}},{\"name\":\"args\",\"in\":\"query\",\"description\":\"Abi params used as args specified in the metadata to be passed into a query. The format to use this query param is ?args[]=1&args[]=2&args[]=3.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of Abi params.\"}}],\"responses\":{\"200\":{\"description\":\"succesful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ContractsInkQuery\"}}}},\"400\":{\"description\":\"Invalid Method\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/node/network\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get information about the Substrate node's activity in the peer-to-peer network.\",\"description\":\"Returns network related information of the node.\",\"operationId\":\"getNodeNetworking\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NodeNetwork\"}}}}}}},\"/node/transaction-pool\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get pending extrinsics from the Substrate node.\",\"description\":\"Returns the extrinsics that the node knows of that have not been included in a block.\",\"operationId\":\"getNodeTransactionPool\",\"parameters\":[{\"name\":\"includeFee\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to include tips, partialFee, and priority in each extrinsic.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionPool\"}}}}}}},\"/node/version\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get information about the Substrates node's implementation and versioning.\",\"description\":\"Returns versioning information of the node.\",\"operationId\":\"getNodeVersion\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NodeVersion\"}}}}}}},\"/transaction\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Submit a transaction to the node's transaction pool.\",\"description\":\"Accepts a valid signed extrinsic. Replaces `/tx` from versions < v1.0.0.\",\"operationId\":\"submitTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionSuccess\"}}}},\"400\":{\"description\":\"failed to parse or submit transaction\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFailure\"}}}}}}},\"/transaction/dry-run\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Dry run an extrinsic.\",\"description\":\"Use the dryrun call to practice submission of a transaction.\",\"operationId\":\"dryrunTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionDryRun\"}}}},\"400\":{\"description\":\"failed to dry-run transaction\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFailure\"}}}}}}},\"/transaction/fee-estimate\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Receive a fee estimate for a transaction.\",\"description\":\"Send a serialized transaction and receive back a naive fee estimate. Note: `partialFee` does not include any tips that you may add to increase a transaction's priority. See the reference on `compute_fee`. Replaces `/tx/fee-estimate` from versions < v1.0.0. Substrate Reference: - `RuntimeDispatchInfo`: https://crates.parity.io/pallet_transaction_payment_rpc_runtime_api/struct.RuntimeDispatchInfo.html - `query_info`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.query_info - `compute_fee`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee\",\"operationId\":\"feeEstimateTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFeeEstimate\"}}}},\"400\":{\"description\":\"fee estimation failure\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFeeEstimateFailure\"}}}}}}},\"/transaction/material\":{\"get\":{\"tags\":[\"transaction\"],\"summary\":\"Get all the network information needed to construct a transaction offline.\",\"description\":\"Returns the material that is universal to constructing any signed transaction offline. Replaces `/tx/artifacts` from versions < v1.0.0.\",\"operationId\":\"getTransactionMaterial\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the transaction construction material.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"noMeta\",\"in\":\"query\",\"description\":\"DEPRECATED! This is no longer supported\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Specifies the format of the metadata to be returned. Accepted values are 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata. When `metadata` is not inputted, the `metadata` field will be absent.\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionMaterial\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/transaction/material/{metadataVersion}\":{\"get\":{\"tags\":[\"transaction\"],\"summary\":\"Get all the network information needed to construct a transaction offline and the version of metadata specified in `metadataVersion`.\",\"description\":\"Returns all the materials necessary for constructing any signed transactions offline.\",\"operationId\":\"getTransactionMaterialwithVersionedMetadata\",\"parameters\":[{\"name\":\"metadataVersion\",\"in\":\"path\",\"description\":\"The version of metadata. The input is expected in a `vX` format, where `X` represents the version number (e.g. `v14`, `v15`). By default, metadata is outputted in 'json' format, unless the `metadata` query parameter is provided, in which case it can be either in 'json' or 'scale' format.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the transaction construction material.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Specifies the format of the metadata to be returned. Accepted values are 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata.\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionMaterial\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/assets/{assetId}/asset-info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with an asset.\",\"description\":\"Returns information associated with an asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getAssetById\",\"parameters\":[{\"name\":\"assetId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of an asset.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the assetInfo.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsAssetsInfo\"}}}}}}},\"/pallets/asset-conversion/liquidity-pools\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information related to existing liquidity pools.\",\"description\":\"Returns a list of the existing liquidity pools and its corresponding tokens at a given block height. If no block is specified, it returns the latest list available.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the liquidity pools information.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LiquidityPools\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/asset-conversion/next-available-id\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the next available liquidity pool id.\",\"description\":\"Returns the next available liquidity pool's id at a given block height. If no block is specified, it returns the latest list available.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the next liquidity pool's id.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NextAvailableId\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/foreign-assets\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with foreign assets.\",\"description\":\"Returns information associated with every foreign asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getForeignAssets\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the foreign assets.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"An array of foreign assets.\",\"$ref\":\"#/components/schemas/PalletsForeignAssets\"}}}}}}},\"/pallets/nomination-pools/info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information associated with nomination pools.\",\"description\":\"Returns information and metadata for nomination pools including pool counters and limits.\",\"operationId\":\"getNominationPoolInfo\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the nomination pool info.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsNominationPoolsInfo\"}}}}}}},\"/pallets/nomination-pools/{poolId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with a nomination pool.\",\"description\":\"Returns information associated with a nomination pool which includes the nomination pools' `bondedPool`, `rewardPool` and `metadata`.\",\"operationId\":\"getNominationPoolById\",\"parameters\":[{\"name\":\"poolId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of a nomination pool.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the nomination pool.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsNominationPool\"}}}}}}},\"/pallets/{palletId}/consts\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of constants for a pallet.\",\"description\":\"Returns a list of const item metadata for constant items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read constant metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the const items instead of every constant's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's constant items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of constantItemIds.\",\"$ref\":\"#/components/schemas/PalletConstants\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/consts/{constantItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a constant item.\",\"description\":\"Returns the value stored under the constantItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read constant metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"constantItemId\",\"in\":\"path\",\"description\":\"Id of the const item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the const item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the const items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletConstantsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/dispatchables\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of dispatchables for a pallet.\",\"description\":\"Returns a list of dispatchable item metadata for distpachable items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read dispatchable metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the dispatchable items instead of every dispatchable's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of dispatchableItemIds.\",\"$ref\":\"#/components/schemas/PalletDispatchables\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/dispatchables/{dispatchableItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a dispatchable item.\",\"description\":\"Returns the value stored under the dispatchableItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read dispatchable metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"dispatchableItemId\",\"in\":\"path\",\"description\":\"Id of the dispatchable item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the dispatchable items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/errors\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of errors for a pallet.\",\"description\":\"Returns a list of error item metadata for error items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read error metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the error items instead of every error's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's error items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of errorItemIds.\",\"$ref\":\"#/components/schemas/PalletErrors\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/errors/{errorItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of an error item.\",\"description\":\"Returns the value stored under the errorItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read error metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"errorItemId\",\"in\":\"path\",\"description\":\"Id of the error item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the error item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the error items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletErrorsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/events\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of events for a pallet.\",\"description\":\"Returns a list of event item metadata for event items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read event metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the event items instead of every event's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's event items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of eventItemIds.\",\"$ref\":\"#/components/schemas/PalletEvents\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/events/{eventItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of an event item.\",\"description\":\"Returns the value stored under the eventItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read event metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventItemId\",\"in\":\"path\",\"description\":\"Id of the event item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the event item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the event items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletEventsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/runtime/metadata\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the runtime metadata in decoded, JSON form.\",\"description\":\"Returns the runtime metadata as a JSON object. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\",\"description\":\"Response is dependent on the runtime metadata contents.\"}}}}}}},\"/runtime/metadata/{metadataVersion}\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the requested version of runtime metadata in decoded, JSON form.\",\"description\":\"Returns the requested version of runtime metadata as a JSON object. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"metadataVersion\",\"in\":\"path\",\"description\":\"The version of metadata. The input is expected in a `vX` format, where `X` represents the version number (e.g. `v14`, `v15`).\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\",\"description\":\"Response is dependent on the runtime metadata contents.\"}}}}}}},\"/runtime/metadata/versions\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the available versions of runtime metadata.\",\"description\":\"Returns the available versions of runtime metadata. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata versions at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array with the available metadata versions.\"}}}}}}},\"/runtime/code\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the runtime wasm blob.\",\"description\":\"Returns the runtime Wasm blob in hex format.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the runtime wasm blob at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeCode\"}}}}}}},\"/runtime/spec\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get version information of the Substrate runtime.\",\"description\":\"Returns version information related to the runtime.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve runtime version information at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeSpec\"}}}}}}},\"/pallets/{palletId}/storage\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of storage items for a pallet.\",\"description\":\"Returns a list of storage item metadata for storage items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to query the storage of. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the storage items instead of all of each storage item's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's storage items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of storageItemIds.\",\"$ref\":\"#/components/schemas/PalletStorage\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/storage/{storageItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a storage item.\",\"description\":\"Returns the value stored under the storageItemId. If it is a map, query param key1 is required. If the storage item is double map query params key1 and key2 are required.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to query the storage of. Note: pallet name aligns with pallet name as specified in runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"storageItemId\",\"in\":\"path\",\"description\":\"Id of the storage item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"keys\",\"in\":\"query\",\"description\":\"Set of N keys used for querying a storage map. It should be queried using the following format - ?keys[]=key1&keys[]=key2. Order matters, as it will determine the order the keys are passed into the storage calls.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of storage keys.\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the storage item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the storage items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletStorageItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/pool-assets/{assetId}/asset-info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with a pool asset.\",\"description\":\"Returns information associated with a pool asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getPoolAssetById\",\"parameters\":[{\"name\":\"assetId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of a pool asset.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the assetInfo.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsPoolAssetsInfo\"}}}}}}},\"/pallets/staking/progress\":{\"get\":{\"tags\":[\"staking\",\"pallets\"],\"summary\":\"Get progress on the general Staking pallet system.\",\"description\":\"Returns information on the progress of key components of the staking system and estimates of future points of interest. Replaces `/staking-info` from versions < v1.0.0.\",\"operationId\":\"getStakingProgress\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a staking progress report.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/StakingProgress\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/staking/validators\":{\"get\":{\"tags\":[\"staking\",\"pallets\"],\"summary\":\"Get all validators (active/waiting) of a specific chain.\",\"description\":\"Returns a list of all validators addresses and their corresponding status which can be either active or waiting. It will also return a list of active validators that will not be part of the next era for staking. They will be under the key \\\"validatorsToBeChilled\\\". It's important to note, that addresses can be present in both the \\\"validators\\\" key, and \\\"validatorsToBeChilled\\\".\",\"operationId\":\"getStakingValidators\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the list of validators.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/StakingValidators\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/paras\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] List all registered paras (parathreads & parachains).\\n\",\"description\":\"Returns all registered parachains and parathreads with lifecycle info.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve paras list at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Paras\"}}}}}}},\"/paras/leases/current\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get general information about the current lease period.\\n\",\"description\":\"Returns an overview of the current lease period, including lease holders.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve current lease period info at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"currentLeaseHolders\",\"in\":\"query\",\"description\":\"Wether or not to include the `currentLeaseHolders` property. Inclusion\\nof the property will likely result in a larger payload and increased\\nresponse time.\\n\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasLeasesCurrent\"}}}}}}},\"/paras/auctions/current\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the status of the current auction.\\n\",\"description\":\"Returns an overview of the current auction. There is only one auction\\nat a time. If there is no auction most fields will be `null`. If the current\\nauction phase is in `vrfDelay` and you are looking to retrieve the latest winning\\nbids, it is advised to query one block before `finishEnd` in the `endingPeriod` phase\\nfor that auction as there technically are no winners during the `vrfDelay` and thus\\nthe field is `null`.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve auction progress at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasAuctionsCurrent\"}}}}}}},\"/paras/crowdloans\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] List all stored crowdloans.\\n\",\"description\":\"Returns a list of all the crowdloans and their associated paraIds.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the list of paraIds that have crowdloans at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasCrowdloans\"}}}}}}},\"/paras/{paraId}/crowdloan-info\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get crowdloan information for a `paraId`.\\n\",\"description\":\"Returns crowdloan's `fundInfo` and the set of `leasePeriods` the crowdloan`\\ncovers.\\n\",\"parameters\":[{\"name\":\"paraId\",\"in\":\"path\",\"description\":\"paraId to query the crowdloan information of.\",\"required\":true,\"schema\":{\"type\":\"number\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve info at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasCrowdloanInfo\"}}}}}}},\"/paras/{paraId}/lease-info\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get current and future leases as well as the lifecycle stage for a given `paraId`.\\n\",\"description\":\"Returns a list of leases that belong to the `paraId` as well as the\\n`paraId`'s current lifecycle stage.\\n\",\"parameters\":[{\"name\":\"paraId\",\"in\":\"path\",\"description\":\"paraId to query the crowdloan information of.\",\"required\":true,\"schema\":{\"type\":\"number\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's leases at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasLeaseInfo\"}}}}}}},\"/paras/head/included-candidates\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the heads of the included (backed and considered available) parachain candidates at the\\nspecified block height or at the most recent finalized head otherwise.\\n\",\"description\":\"Returns an object with all the parachain id's as keys, and their headers as values.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's heads at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasHeaders\"}}}}}}},\"/paras/head/backed-candidates\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the heads of the backed parachain candidates at the specified block height or at the most recent finalized head otherwise.\\n\",\"description\":\"Returns an object with all the parachain id's as keys, and their headers as values.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's heads at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasHeaders\"}}}}}}},\"/experimental/blocks/head/traces\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get traces for the most\\nrecently finalized block.\\n\",\"description\":\"Returns traces (spans and events) of the most recently finalized block from\\nRPC `state_straceBlock`. Consult the [RPC docs](https://github.com/paritytech/substrate/blob/aba876001651506f85c14baf26e006b36092e1a0/client/rpc-api/src/state/mod.rs#L140)\\nfor conceptual info.\\n\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTrace\"}}}}}}},\"/experimental/blocks/{blockId}/traces\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get traces for the given `blockId`.\\n\",\"description\":\"Returns traces (spans and events) of the specified block from\\nRPC `state_straceBlock`. Consult the [RPC docs](https://github.com/paritytech/substrate/blob/aba876001651506f85c14baf26e006b36092e1a0/client/rpc-api/src/state/mod.rs#L140) for conceptual info.\\n\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTrace\"}}}}}}},\"/experimental/blocks/head/traces/operations\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get the operations from the\\nmost recently finalized block.\\n\",\"description\":\"Returns the operations from the most recently finalized block. Operations\\nrepresent one side of a balance change. For example if Alice transfers\\n100unit to Bob there will be two operations; 1) Alice - 100 2) Bob + 100.\\n\\nGiven account A and A's balance at block k0 (Ak0), if we sum all the\\noperations for A from block k1 through kn against Ak0, we will end up\\nwith A's balance at block kn (Akn). Thus, operations can be used to audit\\nthat balances change as expected.\\n\\nThis is useful for Substrate based chains because the advanced business\\nlogic can make it difficult to ensure auditable balance reconciliation\\nbased purely on events. Instead of using events one can use the\\noperations given from this endpoint.\\n\\nNote - each operation corresponds to a delta of a single field of the\\n`system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`\\nand `fee_frozen`).\\nNote - operations are assigned a block execution phase (and extrinsic index\\nfor those in the apply extrinsic phase) based on an \\\"action group\\\". For\\nexample all the operations for 1 extrinsic will be in the same action group.\\nThe action groups can optionally be fetched with the `action` query param\\nfor closer auditing.\\nNote - There are no 0 value operations (e.g. a transfer of 0, or a\\ntransfer to itself)\\n\\nTo learn more about operation and action group creation please consult\\n[this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)\\n\",\"parameters\":[{\"name\":\"actions\",\"in\":\"query\",\"description\":\"Whether or not to include action groups.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTraceOperations\"}}}}}}},\"/experimental/blocks/{blockId}/traces/operations\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get the operations from the\\nspecified block.\\n\",\"description\":\"Returns the operations from the most recently finalized block. Operations\\nrepresent one side of a balance change. For example if Alice transfers\\n100unit to Bob there will be two operations; 1) Alice - 100 2) Bob + 100.\\n\\nGiven account A and A's balance at block k0 (Ak0), if we sum all the\\noperations for A from block k1 through kn against Ak0, we will end up\\nwith A's balance at block kn (Akn). Thus, operations can be used to audit\\nthat balances change as expected.\\n\\nThis is useful for Substrate based chains because the advanced business\\nlogic can make it difficult to ensure auditable balance reconciliation\\nbased purely on events. Instead of using events one can use the\\noperations given from this endpoint.\\n\\nNote - each operation corresponds to a delta of a single field of the\\n`system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`\\nand `fee_frozen`).\\nNote - operations are assigned a block execution phase (and extrinsic index\\nfor those in the apply extrinsic phase) based on an \\\"action group\\\". For\\nexample all the operations for 1 extrinsic will be in the same action group.\\nThe action groups can optionally be fetched with the `action` query param\\nfor closer auditing.\\nNote - There are no 0 value operations (e.g. a transfer of 0, or a\\ntransfer to itself)\\n\\nTo learn more about operation and action group creation please consult\\n[this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)\\n\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"actions\",\"in\":\"query\",\"description\":\"Whether or not to include action groups.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTraceOperations\"}}}}}}}},\"components\":{\"schemas\":{\"AccountAssetsApproval\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"amount\":{\"type\":\"string\",\"description\":\"The amount of funds approved for the balance transfer from the owner to some delegated target.\",\"format\":\"unsignedInteger\"},\"deposit\":{\"type\":\"string\",\"description\":\"The amount reserved on the owner's account to hold this item in storage.\",\"format\":\"unsignedInteger\"}}},\"AccountAssetsBalances\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"assets\":{\"type\":\"array\",\"description\":\"An array of queried assets.\",\"items\":{\"$ref\":\"#/components/schemas/AssetsBalance\"}}}},\"AccountBalanceInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"nonce\":{\"type\":\"string\",\"description\":\"Account nonce.\",\"format\":\"unsignedInteger\"},\"tokenSymbol\":{\"type\":\"string\",\"description\":\"Token symbol of the balances displayed in this response.\",\"format\":\"unsignedInteger\"},\"free\":{\"type\":\"string\",\"description\":\"Free balance of the account. Not equivalent to _spendable_ balance. This is the only balance that matters in terms of most operations on tokens.\",\"format\":\"unsignedInteger\"},\"reserved\":{\"type\":\"string\",\"description\":\"Reserved balance of the account.\",\"format\":\"unsignedInteger\"},\"miscFrozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when withdrawing for anything except transaction fee payment. Note, that some runtimes may not have support for miscFrozen and if so the following will be returned `miscFrozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"feeFrozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when withdrawing specifically for transaction fee payment. Note, that some runtimes may not have support for feeFrozen and if so the following will be returned `feeFrozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"frozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when reducing the balance, except for actions where the account owner cannot reasonably benefit from the balance reduction, such as slashing. Note, that some runtimes may not have support for frozen and if so the following will be returned `frozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"locks\":{\"type\":\"array\",\"description\":\"Array of locks on a balance. There can be many of these on an account and they \\\"overlap\\\", so the same balance is frozen by multiple locks\",\"items\":{\"$ref\":\"#/components/schemas/BalanceLock\"}}}},\"AccountConvert\":{\"type\":\"object\",\"properties\":{\"ss58Prefix\":{\"type\":\"string\",\"description\":\"SS58 prefix based on which the account ID or Public Key (hex) is converted to an SS58 address.\",\"format\":\"unsignedInteger\"},\"network\":{\"type\":\"string\",\"description\":\"The network based on which the returned address is encoded. It depends on the prefix that was given as a query param.\"},\"address\":{\"type\":\"string\",\"description\":\"The returned SS58 address which is the result of the conversion of the account ID or Public Key (hex).\"},\"accountId\":{\"type\":\"string\",\"description\":\"The given account ID or Public Key (hex) that is converted to an SS58 address.\"},\"scheme\":{\"type\":\"string\",\"description\":\"The cryptographic scheme/algorithm used to encode the given account ID or Public Key (hex).\"},\"publicKey\":{\"type\":\"boolean\",\"description\":\"Whether the given path parameter is a Public Key (hex) or not.\"}}},\"AccountPoolAssetsBalances\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"poolAssets\":{\"type\":\"array\",\"description\":\"An array of queried assets.\",\"items\":{\"$ref\":\"#/components/schemas/AssetsBalance\"}}}},\"AccountProxyInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"delegatedAccounts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"delegate\":{\"type\":\"string\",\"description\":\"Delegate address for the given proxy.\",\"format\":\"ss58\"},\"delay\":{\"type\":\"string\",\"description\":\"The announcement period required of the initial proxy. Will generally be zero.\",\"format\":\"unsignedInteger\"},\"proxyType\":{\"type\":\"string\",\"description\":\"The permissions allowed for this proxy account.\"}}}},\"depositHeld\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The held deposit.\"}}},\"AccountStakingInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"rewardDestination\":{\"type\":\"string\",\"description\":\"The account to which rewards will be paid. Can be 'Staked' (Stash account, adding to the amount at stake), 'Stash' (Stash address, not adding to the amount at stake), or 'Controller' (Controller address).\",\"format\":\"ss58\",\"enum\":[\"Staked\",\"Stash\",\"Controller\"]},\"controller\":{\"type\":\"string\",\"description\":\"Controller address for the given Stash.\",\"format\":\"ss58\"},\"numSlashingSpans\":{\"type\":\"string\",\"description\":\"Number of slashing spans on Stash account; `null` if provided address is not a Controller.\",\"format\":\"unsignedInteger\"},\"nominations\":{\"$ref\":\"#/components/schemas/Nominations\"},\"stakingLedger\":{\"$ref\":\"#/components/schemas/StakingLedger\"}},\"description\":\"Note: Runtime versions of Kusama less than 1062 will either have `lastReward` in place of `claimedRewards`, or no field at all. This is related to changes in reward distribution. See: [Lazy Payouts](https://github.com/paritytech/substrate/pull/4474), [Simple Payouts](https://github.com/paritytech/substrate/pull/5406)\"},\"AccountStakingPayouts\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"erasPayouts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"era\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Era this information is associated with.\"},\"totalEraRewardPoints\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Total reward points for the era. Equals the sum of reward points for all the validators in the set.\"},\"totalEraPayout\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Total payout for the era. Validators split the payout based on the portion of `totalEraRewardPoints` they have.\"},\"payouts\":{\"$ref\":\"#/components/schemas/Payouts\"}}}}}},\"AccountValidation\":{\"type\":\"object\",\"properties\":{\"isValid\":{\"type\":\"boolean\",\"description\":\"Whether the given address is valid ss58 formatted.\"},\"ss58Prefix\":{\"type\":\"string\",\"description\":\"SS58 prefix of the given address. If the address is a valid base58 format, but incorrect ss58, a prefix for the given address will still be returned.\",\"format\":\"unsignedInteger\"},\"network\":{\"type\":\"string\",\"description\":\"The network based on which the given address is encoded.\"},\"accountId\":{\"type\":\"string\",\"description\":\"The account id of the given address.\"}}},\"AccountVestingInfo\":{\"type\":\"object\",\"description\":\"Sidecar version's <= v10.0.0 have a`vesting` return value that defaults to an object for when there is no available vesting-info data. It also returns a `VestingInfo` as an object. For Sidecar >=11.0.0, that value will now default as an array when there is no value, and `Vec` is returned when there is.\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"vesting\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/VestingSchedule\"}}}},\"AssetsBalance\":{\"type\":\"object\",\"properties\":{\"assetId\":{\"type\":\"string\",\"description\":\"The identifier of the asset.\",\"format\":\"unsignedInteger\"},\"balance\":{\"type\":\"string\",\"description\":\"The balance of the asset.\",\"format\":\"unsignedInteger\"},\"isFrozen\":{\"type\":\"boolean\",\"description\":\"Whether the asset is frozen for non-admin transfers. Note, that some runtimes may not have support for isFrozen and if so the following will be returned `isFrozen does not exist for this runtime`\"},\"isSufficient\":{\"type\":\"boolean\",\"description\":\"Whether a non-zero balance of this asset is a deposit of sufficient value to account for the state bloat associated with its balance storage. If set to `true`, then non-zero balances may be stored without a `consumer` reference (and thus an ED in the Balances pallet or whatever else is used to control user-account state growth).\"}}},\"AssetInfo\":{\"type\":\"object\",\"properties\":{\"owner\":{\"type\":\"string\",\"description\":\"Owner of the assets privileges.\",\"format\":\"SS58\"},\"issuer\":{\"type\":\"string\",\"description\":\"The `AccountId` able to mint tokens.\",\"format\":\"SS58\"},\"admin\":{\"type\":\"string\",\"description\":\"The `AccountId` that can thaw tokens, force transfers and burn token from any account.\",\"format\":\"SS58\"},\"freezer\":{\"type\":\"string\",\"description\":\"The `AccountId` that can freeze tokens.\",\"format\":\"SS58\"},\"supply\":{\"type\":\"string\",\"description\":\"The total supply across accounts.\",\"format\":\"unsignedInteger\"},\"deposit\":{\"type\":\"string\",\"description\":\"The balance deposited for this. This pays for the data stored.\",\"format\":\"unsignedInteger\"},\"minBalance\":{\"type\":\"string\",\"description\":\"The ED for virtual accounts.\",\"format\":\"unsignedInteger\"},\"isSufficient\":{\"type\":\"boolean\",\"description\":\"If `true`, then any account with this asset is given a provider reference. Otherwise, it requires a consumer reference.\"},\"accounts\":{\"type\":\"string\",\"description\":\"The total number of accounts.\",\"format\":\"unsignedInteger\"},\"sufficients\":{\"type\":\"string\",\"description\":\"The total number of accounts for which is placed a self-sufficient reference.\"},\"approvals\":{\"type\":\"string\",\"description\":\"The total number of approvals.\",\"format\":\"unsignedInteger\"},\"status\":{\"type\":\"string\",\"description\":\"The status of the asset.\"}}},\"AssetMetadata\":{\"type\":\"object\",\"properties\":{\"deposit\":{\"type\":\"string\",\"description\":\"The balance deposited for this metadata. This pays for the data stored in this struct.\",\"format\":\"unsignedInteger\"},\"name\":{\"type\":\"string\",\"description\":\"The user friendly name of this asset.\",\"format\":\"$hex\"},\"symbol\":{\"type\":\"string\",\"description\":\"The ticker symbol for this asset.\",\"format\":\"$hex\"},\"decimals\":{\"type\":\"string\",\"description\":\"The number of decimals this asset uses to represent one unit.\",\"format\":\"unsignedInteger\"},\"isFrozen\":{\"type\":\"boolean\",\"description\":\"Whether the asset metadata may be changed by a non Force origin. Note, that some runtimes may not have support for isFrozen and if so the following will be returned `isFrozen does not exist for this runtime`\"}}},\"BalanceLock\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"An identifier for this lock. Only one lock may be in existence for each identifier.\"},\"amount\":{\"type\":\"string\",\"description\":\"The amount below which the free balance may not drop with this lock in effect.\",\"format\":\"unsignedInteger\"},\"reasons\":{\"type\":\"string\",\"description\":\"Reasons for withdrawing balance.\",\"enum\":[\"Fee = 0\",\"Misc = 1\",\"All = 2\"]}}},\"Block\":{\"type\":\"object\",\"properties\":{\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"authorId\":{\"type\":\"string\",\"description\":\"The account ID of the block author (may be undefined for some chains).\",\"format\":\"ss58\"},\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"},\"onInitialize\":{\"$ref\":\"#/components/schemas/BlockInitialize\"},\"extrinsics\":{\"type\":\"array\",\"description\":\"Array of extrinsics (inherents and transactions) within the block.\",\"items\":{\"$ref\":\"#/components/schemas/Extrinsic\"}},\"onFinalize\":{\"$ref\":\"#/components/schemas/BlockFinalize\"},\"finalized\":{\"type\":\"boolean\",\"description\":\"A boolean identifying whether the block is finalized or not. Note: on chains that do not have deterministic finality this field is omitted.\"}},\"description\":\"Note: Block finalization does not correspond to consensus, i.e. whether the block is in the canonical chain. It denotes the finalization of block _construction._\"},\"BlockRaw\":{\"type\":\"object\",\"properties\":{\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}},\"extrinsics\":{\"type\":\"array\",\"description\":\"Array of raw extrinsics (inherents and transactions) within the block.\",\"items\":{\"type\":\"string\"}}}},\"Blocks\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Block\"}},\"BlockFinalize\":{\"type\":\"object\",\"properties\":{\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}}},\"description\":\"Object with an array of `SanitizedEvent`s that occurred during block construction finalization with the `method` and `data` for each.\"},\"BlockHeader\":{\"type\":\"object\",\"properties\":{\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}}}},\"BlockIdentifiers\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"height\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"}},\"description\":\"Block number and hash at which the call was made.\"},\"BlockInitialize\":{\"type\":\"object\",\"properties\":{\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}}},\"description\":\"Object with an array of `SanitizedEvent`s that occurred during block initialization with the `method` and `data` for each.\"},\"BlocksTrace\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"blockHash\":{\"type\":\"string\"},\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TraceEvent\"}},\"parentHash\":{\"type\":\"string\"},\"spans\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TraceSpan\"}},\"storageKeys\":{\"type\":\"string\",\"description\":\"Hex encoded storage keys used to filter events.\"},\"tracingTargets\":{\"type\":\"string\",\"description\":\"Targets used to filter spans and events.\"}}},\"BlocksTraceOperations\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"operations\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Operation\"}}}},\"BlockWithDecodedXcmMsgs\":{\"allOf\":[{\"$ref\":\"#/components/schemas/Block\"},{\"$ref\":\"#/components/schemas/DecodedXcmMsgs\"}],\"description\":\"Block information that includes the decoded XCM messages if any are found in the queried block. If not, the decodedXcmMsgs object will be returned with three empty arrays corresponding to each direction, horizontalMessages, downwardMessages, upwardMessages.\"},\"BondedPool\":{\"type\":\"object\",\"properties\":{\"points\":{\"type\":\"number\"},\"state\":{\"type\":\"string\"},\"memberCounter\":{\"type\":\"number\"},\"roles\":{\"type\":\"object\",\"properties\":{\"depositor\":{\"type\":\"string\"},\"root\":{\"type\":\"string\"},\"nominator\":{\"type\":\"string\"},\"stateToggler\":{\"type\":\"string\"}}}}},\"ChainType\":{\"type\":\"object\",\"description\":\"Type of the chain. It will return one of the following enum variants as a key. Live, Development, Local, or Custom. Each variant will have a value as null except when the ChainType is Custom, it will return a string.\",\"properties\":{\"live\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"development\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"local\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"custom\":{\"type\":\"string\"}},\"example\":\"{\\\"live\\\": null}\"},\"ContractsInkQuery\":{\"type\":\"object\",\"description\":\"Result from calling a query to a Ink contract.\",\"properties\":{\"debugMessage\":{\"type\":\"string\"},\"gasConsumed\":{\"type\":\"string\"},\"gasRequired\":{\"type\":\"string\"},\"output\":{\"type\":\"boolean\"},\"result\":{\"type\":\"object\",\"description\":\"Will result in an Ok or Err object depending on the result of the query.\"},\"storageDeposit\":{\"type\":\"object\"}}},\"ContractMetadata\":{\"type\":\"object\",\"description\":\"Metadata used to instantiate a ContractPromise. This metadata can be generated by compiling the contract you are querying.\"},\"DecodedXcmMsgs\":{\"type\":\"object\",\"properties\":{\"decodedXcmMsgs\":{\"type\":\"object\",\"properties\":{\"horizontalMessages\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/DecodedXcmMsgsHorizontalMessagesInRelay\"},{\"$ref\":\"#/components/schemas/DecodedXcmMsgsHorizontalMessagesInParachain\"}]},\"downwardMessages\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"sentAt\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Represents the block number that the XCM message was sent at on the relay chain.\"},\"msg\":{\"type\":\"string\",\"description\":\"Represents the XCM message.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}}}},\"upwardMessages\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}}}}}}},\"description\":\"Object with three arrays, one for every XCM direction. The arrays are populated or left empty based on the direction of the current XCM message that is being decoded. The XCM messages can be Upward and/or Horizontal (`in transit`) messages when connected to a Relay chain. When connected to a Parachain, the messages can be Downward and/or Horizontal. One or more messages can be present in a single block. In case of multiple messages from the same paraIds (originParaId and/or destinationParaId), the messages will be shown under the field `data`.\"},\"DecodedXcmMsgsHorizontalMessagesInRelay\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"destinationParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent to.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}},\"description\":\"Array that includes the Horizontal (`in transit`) messages when we are connected to a Relay Chain. Each block can contain one or more messages. If multiple messages share the same origin and destination paraId, they will be displayed within the data field.\"}},\"DecodedXcmMsgsHorizontalMessagesInParachain\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"sentAt\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Represents the block number that the XCM message was sent at on the relay chain.\"},\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}},\"description\":\"Array that includes the Horizontal Messages when we are connected to a Parachain. Each block can contain one or more messages. If multiple messages originate from the same parachain (originParaId), they will be displayed within the data field.\"}},\"DigestItem\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"index\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"value\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"ElectionStatus\":{\"type\":\"object\",\"properties\":{\"status\":{\"type\":\"object\",\"description\":\"[Deprecated](Works for polkadot runtimes before v0.8.30).\\nEra election status: either `Close: null` or `Open: `. A status of `Close` indicates that the submission window for solutions from off-chain Phragmen is not open. A status of `Open` indicates that the submission window for off-chain Phragmen solutions has been open since BlockNumber. N.B. when the submission window is open, certain extrinsics are not allowed because they would mutate the state that the off-chain Phragmen calculation relies on for calculating results.\"},\"toggleEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the `status` will switch.\",\"format\":\"unsignedInteger\"}},\"description\":\"Information about the off-chain election. Not included in response when `forceEra.isForceNone`.\"},\"Error\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"message\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"},\"level\":{\"type\":\"string\"}}},\"ExtrinsicMethod\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\"},\"method\":{\"type\":\"string\"}},\"description\":\"Extrinsic method\"},\"Extrinsic\":{\"type\":\"object\",\"properties\":{\"method\":{\"$ref\":\"#/components/schemas/ExtrinsicMethod\"},\"signature\":{\"$ref\":\"#/components/schemas/Signature\"},\"nonce\":{\"type\":\"string\",\"description\":\"Account nonce, if applicable.\",\"format\":\"unsignedInteger\"},\"args\":{\"type\":\"object\",\"description\":\"Object of arguments keyed by parameter name. Note: if you are expecting an [`OpaqueCall`](https://substrate.dev/rustdocs/v2.0.0/pallet_multisig/type.OpaqueCall.html) and it is not decoded in the response (i.e. it is just a hex string), then Sidecar was not able to decode it and likely that it is not a valid call for the runtime.\"},\"tip\":{\"type\":\"string\",\"description\":\"Any tip added to the transaction.\",\"format\":\"unsignedInteger\"},\"hash\":{\"type\":\"string\",\"description\":\"The transaction's hash.\",\"format\":\"hex\"},\"info\":{\"$ref\":\"#/components/schemas/RuntimeDispatchInfo\"},\"era\":{\"$ref\":\"#/components/schemas/GenericExtrinsicEra\"},\"events\":{\"type\":\"array\",\"description\":\"An array of `SanitizedEvent`s that occurred during extrinsic execution.\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}},\"success\":{\"type\":\"boolean\",\"description\":\"Whether or not the extrinsic succeeded.\"},\"paysFee\":{\"type\":\"boolean\",\"description\":\"Whether the extrinsic requires a fee. Careful! This field relates to whether or not the extrinsic requires a fee if called as a transaction. Block authors could insert the extrinsic as an inherent in the block and not pay a fee. Always check that `paysFee` is `true` and that the extrinsic is signed when reconciling old blocks.\"}}},\"ExtrinsicIndex\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"extrinsic\":{\"$ref\":\"#/components/schemas/Extrinsic\"}},\"description\":\"A single extrinsic at a given block.\"},\"FundInfo\":{\"type\":\"object\",\"properties\":{\"depositor\":{\"type\":\"string\"},\"verifier\":{\"type\":\"string\"},\"deposit\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"raised\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"end\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"cap\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"lastConstribution\":{\"type\":\"string\",\"enum\":[\"preEnding\",\"ending\"]},\"firstPeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"lastPeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"trieIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"GenericExtrinsicEra\":{\"type\":\"object\",\"description\":\"The return value for era can either be `mortalEra`, or `immortalEra` and is represented as an enum in substrate. `immortalEra` meaning\\nthe transaction is valid forever. `mortalEra` consists of a tuple containing a period and phase.\\nex: `\\\"{\\\"mortalEra\\\": [\\\"64\\\", \\\"11\\\"]}\\\"`. The Period is the period of validity from the block hash found in the signing material.\\nThe Phase is the period that this transaction's lifetime begins (and, importantly,\\nimplies which block hash is included in the signature material).\\n\",\"properties\":{\"mortalEra\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Tuple of a Phase, and Period. Each item in the array will be a string formatted as an integer.\"},\"immortalEra\":{\"type\":\"string\",\"description\":\"Hardcoded constant '0x00'.\",\"format\":\"hex\"}},\"example\":\"{\\\"mortalEra\\\":[\\\"64\\\", \\\"11\\\"]}\"},\"LiquidityPools\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pools\":{\"type\":\"array\",\"description\":\"Array containing existent liquidity pool's token id.\",\"items\":{\"$ref\":\"#/components/schemas/LiquidityPool\"},\"example\":\"[{\\\"reserves\\\":[{\\\"parents\\\":\\\"1\\\",\\\"interior\\\":{\\\"here\\\": null}},{\\\"parents\\\":\\\"0\\\",\\\"interior\\\":{\\\"x2\\\":[{\\\"palletInstance\\\": \\\"50\\\"},{\\\"generalIndex\\\":\\\"2\\\"}]}}],\\\"lpToken\\\":{\\\"lpToken\\\":\\\"1\\\"} },{\\\"lpToken\\\":{\\\"lpToken\\\":\\\"0\\\"}}]\"}}},\"LiquidityPool\":{\"type\":\"object\",\"properties\":{\"reserves\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"parents\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"interior\":{\"type\":\"object\"}}}},\"lpToken\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Liquidity pool token ID.\"}}},\"NextAvailableId\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"id\":{\"type\":\"string\",\"description\":\"Next availabe liquidity pool's id.\",\"example\":\"4\"}}},\"NodeNetwork\":{\"type\":\"object\",\"properties\":{\"nodeRoles\":{\"$ref\":\"#/components/schemas/NodeRole\"},\"numPeers\":{\"type\":\"string\",\"description\":\"Number of peers the node is connected to.\",\"format\":\"unsignedInteger\"},\"isSyncing\":{\"type\":\"boolean\",\"description\":\"Whether or not the node is syncing. `False` indicates that the node is in sync.\"},\"shouldHavePeers\":{\"type\":\"boolean\",\"description\":\"Whether or not the node should be connected to peers. Might be false for local chains or when running without discovery.\"},\"localPeerId\":{\"type\":\"string\",\"description\":\"Local copy of the `PeerId`.\"},\"localListenAddresses\":{\"type\":\"array\",\"description\":\"Multiaddresses that the local node is listening on. The addresses include a trailing `/p2p/` with the local PeerId, and are thus suitable to be passed to `system_addReservedPeer` or as a bootnode address for example.\",\"items\":{\"type\":\"string\"}},\"peersInfo\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PeerInfo\"}}}},\"NodeRole\":{\"type\":\"string\",\"description\":\"Role of this node. (N.B. Sentry nodes are being deprecated.)\",\"enum\":[\"Full\",\"LightClient\",\"Authority\",\"Sentry\"]},\"NodeVersion\":{\"type\":\"object\",\"properties\":{\"clientVersion\":{\"type\":\"string\",\"description\":\"Node's binary version.\"},\"clientImplName\":{\"type\":\"string\",\"description\":\"Node's implementation name.\"},\"chain\":{\"type\":\"string\",\"description\":\"Node's chain name.\"}},\"description\":\"Version information of the node.\"},\"Nominations\":{\"type\":\"object\",\"properties\":{\"targets\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"The targets of the nomination.\"},\"submittedIn\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The era the nominations were submitted. (Except for initial nominations which are considered submitted at era 0.)\"},\"suppressed\":{\"type\":\"boolean\",\"description\":\"Whether the nominations have been suppressed.\"}}},\"OnboardingAs\":{\"type\":\"string\",\"enum\":[\"parachain\",\"parathread\"],\"description\":\"This property only shows up when `paraLifecycle=onboarding`. It\\ndescribes if a particular para is onboarding as a `parachain` or a\\n`parathread`.\\n\"},\"Operation\":{\"type\":\"object\",\"properties\":{\"phase\":{\"$ref\":\"#/components/schemas/OperationPhase\"},\"parentSpanId\":{\"$ref\":\"#/components/schemas/SpanId\"},\"primarySpanId\":{\"$ref\":\"#/components/schemas/SpanId\"},\"eventIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Index of the underlying trace event.\"},\"address\":{\"type\":\"string\",\"description\":\"Account this operation affects. Note - this will be an object like\\n`{ id: address }` if the network uses `MultiAddress`\\n\"},\"storage\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\"},\"item\":{\"type\":\"string\"},\"field1\":{\"type\":\"string\",\"description\":\"A field of the storage item. (i.e `system::Account::get(address).data`)\\n\"},\"field2\":{\"type\":\"string\",\"description\":\"A field of the struct described by field1 (i.e\\n`system::Account::get(address).data.free`)\\n\"}}},\"amount\":{\"$ref\":\"#/components/schemas/OperationAmount\"}}},\"OperationAmount\":{\"type\":\"object\",\"properties\":{\"values\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"currency\":{\"$ref\":\"#/components/schemas/OperationAmountCurrency\"}}},\"OperationAmountCurrency\":{\"type\":\"object\",\"properties\":{\"symbol\":{\"type\":\"string\",\"example\":\"KSM\"}}},\"OperationPhase\":{\"type\":\"object\",\"properties\":{\"variant\":{\"type\":\"string\",\"enum\":[\"onInitialize\",\"initialChecks\",\"applyExtrinsic\",\"onFinalize\",\"finalChecks\"],\"description\":\"Phase of block execution pipeline.\"},\"extrinsicIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"If phase variant is `applyExtrinsic` this will be the index of\\nthe extrinsic. Otherwise this field will not be present.\\n\"}}},\"PalletsAssetsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"assetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"assetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"}}},\"PalletConstants\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up constants.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletConstantsItemMetadata\"},\"description\":\"Array containing metadata for each constant entry of the pallet.\"}}},\"PalletConstantsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up constants.\",\"example\":\"14\"},\"errorItem\":{\"type\":\"string\",\"description\":\"Name of the constant item.\",\"example\":\"EnactmentPeriod\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletConstantsItemMetadata\"}}},\"PalletConstantsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"VotingPeriod\",\"description\":\"The constant item's name (which is the same as the constant item's ID).\"},\"type\":{\"type\":\"string\",\"example\":\"4\"},\"value\":{\"type\":\"string\",\"example\":\"0x00270600\",\"description\":\"The hex value of the constant\"},\"docs\":{\"type\":\"string\",\"example\":\"Information concerning any given constant.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"}},\"description\":\"Metadata of an constant item from a FRAME pallet.\"},\"PalletDispatchables\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up dispatchables.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItemMetadata\"},\"description\":\"Array containing metadata for each dispatchable entry of the pallet.\"}}},\"PalletDispatchablesItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up dispatchables.\",\"example\":\"14\"},\"dispatchableItem\":{\"type\":\"string\",\"description\":\"Name of the dispatchable item.\",\"example\":\"vote\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItemMetadata\"}}},\"PalletDispatchablesItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"propose\",\"description\":\"The dispatchable item's name (which is the same as the dispatchable item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the dispatchable item in the lists of pallet dispatchables.\"},\"docs\":{\"type\":\"string\",\"example\":\"Information concerning any given dispatchable.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of a dispatchable item from a FRAME pallet.\"},\"PalletErrors\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up errors.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletErrorsItemMetadata\"},\"description\":\"Array containing metadata for each error entry of the pallet.\"}}},\"PalletErrorsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up errors.\",\"example\":\"14\"},\"errorItem\":{\"type\":\"string\",\"description\":\"Name of the error item.\",\"example\":\"ValueLow\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletErrorsItemMetadata\"}}},\"PalletErrorsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"InsufficientFunds\",\"description\":\"The error item's name (which is the same as the error item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the error item in the lists of pallet errors\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given error.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of an error item from a FRAME pallet.\"},\"PalletEvents\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up events.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletEventsItemMetadata\"}}}},\"PalletEventsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up events.\",\"example\":\"14\"},\"eventItem\":{\"type\":\"string\",\"description\":\"Name of the events item.\",\"example\":\"Proposed\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletEventsItemMetadata\"}}},\"PalletEventsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"Tabled\",\"description\":\"The event item's name (which is the same as the event item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the error item in the lists of pallet events\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given event.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of an event item from a FRAME pallet.\"},\"PalletsForeignAssets\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletsForeignAssetsInfo\"},\"description\":\"Array containing the `AssetDetails` and `AssetMetadata` of every foreign asset.\"}}},\"PalletsForeignAssetsInfo\":{\"type\":\"object\",\"properties\":{\"foreignAssetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"foreignAssetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"}}},\"PalletsNominationPool\":{\"type\":\"object\",\"properties\":{\"bondedPool\":{\"$ref\":\"#/components/schemas/BondedPool\"},\"rewardPool\":{\"$ref\":\"#/components/schemas/RewardPool\"}}},\"PalletsNominationPoolsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"counterForBondedPools\":{\"type\":\"number\"},\"counterForMetadata\":{\"type\":\"number\"},\"counterForPoolMembers\":{\"type\":\"number\"},\"counterForReversePoolIdLookup\":{\"type\":\"number\"},\"counterForRewardPools\":{\"type\":\"number\"},\"counterForSubPoolsStorage\":{\"type\":\"number\"},\"lastPoolId\":{\"type\":\"number\"},\"maxPoolMembers\":{\"type\":\"number\"},\"maxPoolMembersPerPool\":{\"type\":\"number\",\"nullable\":true},\"maxPools\":{\"type\":\"number\"},\"minCreateBond\":{\"type\":\"number\"},\"minJoinBond\":{\"type\":\"number\"}}},\"PalletsPoolAssetsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"poolAssetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"poolAssetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"}}},\"PalletStorage\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up storage.\",\"example\":\"15\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletStorageItemMetadata\"},\"description\":\"Array containing metadata for each storage entry of the pallet.\"}}},\"PalletStorageItem\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up storage.\",\"example\":\"15\"},\"storageItem\":{\"type\":\"string\",\"description\":\"Name of the storage item.\",\"example\":\"referendumInfoOf\"},\"keys\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"N Storage keys passed in as the `keys` query param.\",\"example\":[\"0x00\",\"0x01\"]},\"value\":{\"type\":\"object\",\"description\":\"Value returned by this storage query.\",\"example\":{\"Ongoing\":{\"end\":\"1612800\",\"proposalHash\":\"0x7de70fc8be782076d0b5772be77153d172a5381c72dd56d3385e25f62abf507e\",\"threshold\":\"Supermajorityapproval\",\"delay\":\"403200\",\"tally\":{\"ayes\":\"41925212461400000\",\"nays\":\"214535586500000\",\"turnout\":\"34485320658000000\"}}}},\"metadata\":{\"$ref\":\"#/components/schemas/PalletStorageItemMetadata\"}}},\"PalletStorageItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"ReferendumInfoOf\",\"description\":\"The storage item's name (which is the same as the storage item's ID).\"},\"modifier\":{\"type\":\"string\",\"example\":\"Optional\"},\"type\":{\"$ref\":\"#/components/schemas/PalletStorageType\"},\"fallback\":{\"type\":\"string\",\"example\":\"0x00\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given referendum.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"}},\"description\":\"Metadata of a storage item from a FRAME pallet.\"},\"PalletStorageType\":{\"type\":\"object\",\"description\":\"This is going to be formatted to the type of StorageEntryTypeV14.\"},\"Para\":{\"type\":\"object\",\"properties\":{\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"paraLifecycle\":{\"$ref\":\"#/components/schemas/ParaLifecycle\"},\"onboardingAs\":{\"$ref\":\"#/components/schemas/OnboardingAs\"}}},\"Paras\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paras\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Para\"}}}},\"ParasAuctionsCurrent\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"beginEnd\":{\"type\":\"string\",\"format\":\"unisgnedInteger or $null\",\"description\":\"Fist block (number) of the auction ending phase. `null` if there is no ongoing\\nauction.\\n\"},\"finishEnd\":{\"type\":\"string\",\"format\":\"unisgnedInteger or $null\",\"description\":\"Last block (number) of the auction ending phase. `null` if there is no ongoing\\nauction.\\n\"},\"phase\":{\"type\":\"string\",\"enum\":[\"startPeriod\",\"endPeriod\",\"vrfDelay\"],\"description\":\"An auction can be in one of 4 phases. Both `startingPeriod` () and `endingPeriod` indicate\\nan ongoing auction, while `vrfDelay` lines up with the `AuctionStatus::VrfDelay` . Finally, a value of `null`\\nindicates there is no ongoing auction. Keep in mind the that the `finishEnd` field is the block number the\\n`endingPeriod` finishes and the `vrfDelay` period begins. The `vrfDelay` period is typically about an\\nepoch long and no crowdloan contributions are accepted.\\n\"},\"auctionIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The auction number. If there is no current auction this will be the number\\nof the previous auction.\\n\"},\"leasePeriods\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"Lease period indexes that may be bid on in this auction. `null` if\\nthere is no ongoing auction.\\n\"},\"winning\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/WinningData\"}}}},\"ParasCrowdloans\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"funds\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"fundInfo\":{\"$ref\":\"#/components/schemas/FundInfo\"}}},\"description\":\"List of paras that have crowdloans.\\n\"}}},\"ParasCrowdloanInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"fundInfo\":{\"$ref\":\"#/components/schemas/FundInfo\"},\"leasePeriods\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"Lease periods the crowdloan can bid on.\"}}},\"ParasHeaders\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paraId\":{\"type\":\"object\",\"description\":\"The key is not named `paraId` and will be the number of the parachain. There is technically no limit to the number of paraId keys there can be. \\n\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicsRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}}}}}},\"ParasLeasesCurrent\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"leasePeriodIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Current lease period index. This value may be null when the current block now, substracted by the leaseOffset is less then zero.\"},\"endOfLeasePeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Last block (number) of the current lease period. This value may be null when `leasePeriodIndex` is null.\"},\"currentLeaseHolders\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"List of `paraId`s that currently hold a lease.\"}}},\"ParasLeaseInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paraLifecycle\":{\"$ref\":\"#/components/schemas/ParaLifecycle\"},\"onboardingAs\":{\"$ref\":\"#/components/schemas/OnboardingAs\"},\"leases\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"leasePeriodIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"account\":{\"type\":\"string\"},\"deposit\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"description\":\"List of lease periods for which the `paraId` holds a lease along with\\nthe deposit held and the associated `accountId`.\\n\"}}},\"ParaLifecycle\":{\"type\":\"string\",\"enum\":[\"onboarding\",\"parathread\",\"parachain\",\"upgradingParathread\",\"downgradingParachain\",\"offboardingParathread\",\"offboardingParachain\"],\"description\":\"The possible states of a para, to take into account delayed lifecycle\\nchanges.\\n\"},\"Payouts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"validatorId\":{\"type\":\"string\",\"description\":\"AccountId of the validator the payout is coming from.\"},\"nominatorStakingPayout\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Payout for the reward destination associated with the accountId the query was made for.\"},\"claimed\":{\"type\":\"boolean\",\"description\":\"Whether or not the reward has been claimed.\"},\"totalValidatorRewardPoints\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Number of reward points earned by the validator.\"},\"validatorCommission\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The percentage of the total payout that the validator takes as commission, expressed as a Perbill.\"},\"totalValidatorExposure\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The sum of the validator's and its nominators' stake.\"},\"nominatorExposure\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The amount of stake the nominator has behind the validator.\"}},\"description\":\"Payout for a nominating _Stash_ address and information about the validator they were nominating.\"}},\"PeerInfo\":{\"type\":\"object\",\"properties\":{\"peerId\":{\"type\":\"string\",\"description\":\"Peer ID.\"},\"roles\":{\"type\":\"string\",\"description\":\"Roles the peer is running\"},\"protocolVersion\":{\"type\":\"string\",\"description\":\"Peer's protocol version.\",\"format\":\"unsignedInteger\"},\"bestHash\":{\"type\":\"string\",\"description\":\"Hash of the best block on the peer's canon chain.\",\"format\":\"hex\"},\"bestNumber\":{\"type\":\"string\",\"description\":\"Height of the best block on the peer's canon chain.\",\"format\":\"unsignedInteger\"}}},\"RewardPool\":{\"type\":\"object\",\"properties\":{\"lastRecordedRewardCounter\":{\"type\":\"number\"},\"lastRecordedTotalPayouts\":{\"type\":\"number\"},\"totalRewardsClaimed\":{\"type\":\"number\"}}},\"RuntimeCode\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"code\":{\"type\":\"string\",\"format\":\"hex\"}}},\"RuntimeDispatchInfo\":{\"type\":\"object\",\"properties\":{\"weight\":{\"$ref\":\"#/components/schemas/WeightsV2\",\"description\":\"Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.\"},\"class\":{\"type\":\"string\",\"description\":\"Extrinsic class.\",\"enum\":[\"Normal\",\"Operational\",\"Mandatory\"]},\"partialFee\":{\"type\":\"string\",\"description\":\"The _inclusion fee_ of a transaction, i.e. the minimum fee required for a transaction. Includes weight and encoded length fees, but does not have access to any signed extensions, e.g. the `tip`.\",\"format\":\"unsignedInteger\"},\"kind\":{\"type\":\"string\",\"description\":\"Information on the partialFee that is collected. Can be either `preDispatch`, `postDispatch` or `fromEvent`. `preDispatch` means the information used to collect the fee was from `payment_queryInfo`, `postDispatch` means the information used to calculate the fee was from finalized weights for the extrinsic, and `fromEvent` means that the partialFee was abstracted from the `TransactionPayment::TransactionPaidFee` event.\"}},\"description\":\"RuntimeDispatchInfo for the transaction. Includes the `partialFee`.\"},\"RuntimeSpec\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"authoringVersion\":{\"type\":\"string\",\"description\":\"The version of the authorship interface. An authoring node will not attempt to author blocks unless this is equal to its native runtime.\"},\"chainType\":{\"$ref\":\"#/components/schemas/ChainType\"},\"implVersion\":{\"type\":\"string\",\"description\":\"Version of the implementation specification. Non-consensus-breaking optimizations are about the only changes that could be made which would result in only the `impl_version` changing. The `impl_version` is set to 0 when `spec_version` is incremented.\"},\"specName\":{\"type\":\"string\",\"description\":\"Identifies the different Substrate runtimes.\"},\"specVersion\":{\"type\":\"string\",\"description\":\"Version of the runtime specification.\"},\"transactionVersion\":{\"type\":\"string\",\"description\":\"All existing dispatches are fully compatible when this number doesn't change. This number must change when an existing dispatchable (module ID, dispatch ID) is changed, either through an alteration in its user-level semantics, a parameter added/removed/changed, a dispatchable being removed, a module being removed, or a dispatchable/module changing its index.\"},\"properties\":{\"type\":\"object\",\"description\":\"Arbitrary properties defined in the chain spec.\"}},\"description\":\"Version information related to the runtime.\"},\"SanitizedEvent\":{\"type\":\"object\",\"properties\":{\"method\":{\"type\":\"string\"},\"data\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"Signature\":{\"type\":\"object\",\"properties\":{\"signature\":{\"type\":\"string\",\"format\":\"hex\"},\"signer\":{\"type\":\"string\",\"format\":\"ss58\"}},\"description\":\"Object with `signature` and `signer`, or `null` if unsigned.\"},\"SpanId\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"target\":{\"type\":\"string\"},\"id\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"StakingLedger\":{\"type\":\"object\",\"properties\":{\"stash\":{\"type\":\"string\",\"description\":\"The _Stash_ account whose balance is actually locked and at stake.\",\"format\":\"ss58\"},\"total\":{\"type\":\"string\",\"description\":\"The total amount of the _Stash_'s balance that we are currently accounting for. Simply `active + unlocking`.\",\"format\":\"unsignedInteger\"},\"active\":{\"type\":\"string\",\"description\":\"The total amount of the _Stash_'s balance that will be at stake in any forthcoming eras.\",\"format\":\"unsignedInteger\"},\"unlocking\":{\"type\":\"string\",\"description\":\"Any balance that is becoming free, which may eventually be transferred out of the _Stash_ (assuming it doesn't get slashed first). Represented as an array of objects, each with an `era` at which `value` will be unlocked.\",\"format\":\"unsignedInteger\"},\"claimedRewards\":{\"type\":\"array\",\"description\":\"Array of objects, each containing an `era` and its corresponding `status`, which represents the rewards status of the stakers backing a validator. Only updated for _validators._ This array is populated with values from `stakingLedger.legacyClaimedRewards` or `stakingLedger.claimedRewards`, as well as the `query.staking.claimedRewards` call, depending on whether the queried block is before or after the migration. For more details on the implementation and the migration, refer to the related PR and linked issue.\",\"items\":{\"type\":\"object\",\"properties\":{\"era\":{\"type\":\"string\",\"description\":\"The era for which we check the rewards status.\",\"format\":\"unsignedInteger\"},\"status\":{\"type\":\"string\",\"description\":\"The rewards status of the stakers backing a validator.\",\"enum\":[\"claimed\",\"unclaimed\",\"partially claimed\"]}}}}},\"description\":\"The staking ledger.\"},\"StakingProgress\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"activeEra\":{\"type\":\"string\",\"description\":\"`EraIndex` of the era being rewarded.\\n\",\"format\":\"unsignedInteger\"},\"forceEra\":{\"type\":\"string\",\"description\":\"Current status of era forcing.\",\"enum\":[\"ForceNone\",\"NotForcing\",\"ForceAlways\",\"ForceNew\"]},\"nextActiveEraEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the next active era will start. Not included in response when `forceEra.isForceNone`.\",\"format\":\"unsignedInteger\"},\"nextSessionEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the next session will start.\",\"format\":\"unsignedInteger\"},\"unappliedSlashes\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/UnappliedSlash\"},\"description\":\"Array of upcoming `UnappliedSlash` indexed by era.\"},\"electionStatus\":{\"$ref\":\"#/components/schemas/ElectionStatus\"},\"idealValidatorCount\":{\"type\":\"string\",\"description\":\"Upper bound of validator set size; considered the ideal size. Not included in response when `forceEra.isForceNone`.\",\"format\":\"unsignedInteger\"},\"validatorSet\":{\"type\":\"array\",\"description\":\"Stash account IDs of the validators for the current session. Not included in response when `forceEra.isForceNone`.\",\"items\":{\"type\":\"string\",\"format\":\"ss58\"}}}},\"StakingValidators\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"validators\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"address\":{\"type\":\"string\",\"description\":\"Address of validator.\"},\"status\":{\"type\":\"string\",\"description\":\"Status of individual validator (active/waiting).\"}}}},\"validatorsToBeChilled\":{\"description\":\"Validators that will not be participating in the next era.\",\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"address\":{\"type\":\"string\",\"description\":\"Address of validator.\"},\"status\":{\"type\":\"string\",\"description\":\"Status of individual validator (active/waiting).\"}}}}}},\"StorageEntryTypeV13\":{\"type\":\"object\",\"properties\":{\"hasher\":{\"type\":\"string\",\"description\":\"Returns a string deonting the storage hasher.\"},\"key\":{\"type\":\"string\",\"description\":\"Key of the queried pallet storageId.\"},\"value\":{\"type\":\"string\",\"description\":\"Value of the queried pallet storageId.\"},\"linked\":{\"type\":\"boolean\"}}},\"StorageEntryTypeV14\":{\"type\":\"object\",\"properties\":{\"hasher\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Returns a string denoting the storage hasher inside of an array.\"},\"key\":{\"type\":\"string\",\"description\":\"The SiLookupTypeId to identify the type.\"},\"value\":{\"type\":\"string\",\"description\":\"The SiLookupTypeId to identify the type.\"}}},\"TraceEvent\":{\"type\":\"object\",\"properties\":{\"data\":{\"type\":\"object\",\"properties\":{\"stringValues\":{\"$ref\":\"#/components/schemas/TraceEventDataStringValues\"}}},\"parentId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"target\":{\"type\":\"string\"}}},\"TraceEventDataStringValues\":{\"type\":\"object\",\"properties\":{\"key\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"The complete storage key for the entry.\"},\"method\":{\"type\":\"string\",\"description\":\"Normally one of Put or Get.\"},\"result\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"Hex scale encoded storage value.\"}},\"description\":\"Note these exact values will only be present for storage events.\"},\"TraceSpan\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"name\":{\"type\":\"string\"},\"parentId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"target\":{\"type\":\"string\"},\"wasm\":{\"type\":\"boolean\"}}},\"Transaction\":{\"type\":\"object\",\"properties\":{\"tx\":{\"type\":\"string\",\"format\":\"hex\"}}},\"TransactionDryRun\":{\"type\":\"object\",\"properties\":{\"resultType\":{\"type\":\"string\",\"enum\":[\"DispatchOutcome\",\"TransactionValidityError\"],\"description\":\"Either `DispatchOutcome` if the transaction is valid or `TransactionValidityError` if the result is invalid.\"},\"result\":{\"type\":\"string\",\"enum\":[\"Ok\",\"CannotLookup\",\"NoUnsignedValidator\",\"Custom(u8)\",\"Call\",\"Payment\",\"Future\",\"Stale\",\"BadProof\",\"AncientBirthBlock\",\"ExhaustsResources\",\"BadMandatory\",\"MandatoryDispatch\"],\"description\":\"If there was an error it will be the cause of the error. If the transaction executed correctly it will be `Ok: []`\"},\"validityErrorType\":{\"type\":\"string\",\"enum\":[\"InvalidTransaction\",\"UnknownTransaction\"]}},\"description\":\"References: - `UnknownTransaction`: https://crates.parity.io/sp_runtime/transaction_validity/enum.UnknownTransaction.html - `InvalidTransaction`: https://crates.parity.io/sp_runtime/transaction_validity/enum.InvalidTransaction.html\"},\"TransactionFailedToParse\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"error\":{\"type\":\"string\",\"description\":\"`Failed to parse a tx.`\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"cause\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"}},\"description\":\"Error message when Sidecar fails to parse the transaction.\"},\"TransactionFailedToSubmit\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"error\":{\"type\":\"string\",\"description\":\"Failed to submit transaction.\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"cause\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"}},\"description\":\"Error message when the node rejects the submitted transaction.\"},\"TransactionFailure\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/TransactionFailedToSubmit\"},{\"$ref\":\"#/components/schemas/TransactionFailedToParse\"}]},\"TransactionFeeEstimate\":{\"type\":\"object\",\"properties\":{\"weight\":{\"$ref\":\"#/components/schemas/WeightsV2\",\"description\":\"Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.\"},\"class\":{\"type\":\"string\",\"description\":\"Extrinsic class.\",\"enum\":[\"Normal\",\"Operational\",\"Mandatory\"]},\"partialFee\":{\"type\":\"string\",\"description\":\"Expected inclusion fee for the transaction. Note that the fee rate changes up to 30% in a 24 hour period and this will not be the exact fee.\",\"format\":\"unsignedInteger\"}},\"description\":\"Note: `partialFee` does not include any tips that you may add to increase a transaction's priority. See [compute_fee](https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee).\"},\"TransactionFeeEstimateFailure\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"at\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\"}}},\"error\":{\"type\":\"string\",\"description\":\"Error description.\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"block\":{\"type\":\"string\",\"description\":\"Block hash of the block fee estimation was attempted at.\"},\"cause\":{\"type\":\"string\",\"description\":\"Error message from the client.\"},\"stack\":{\"type\":\"string\"}}},\"TransactionMaterial\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"genesisHash\":{\"type\":\"string\",\"description\":\"The hash of the chain's genesis block.\",\"format\":\"blockHash\"},\"chainName\":{\"type\":\"string\",\"description\":\"The chain's name.\"},\"specName\":{\"type\":\"string\",\"description\":\"The chain's spec.\"},\"specVersion\":{\"type\":\"string\",\"description\":\"The spec version. Always increased in a runtime upgrade.\"},\"txVersion\":{\"type\":\"string\",\"description\":\"The transaction version. Common `txVersion` numbers indicate that the transaction encoding format and method indices are the same. Needed for decoding in an offline environment. Adding new transactions does not change `txVersion`.\"},\"metadata\":{\"type\":\"string\",\"description\":\"The chain's metadata. It will only be present when the metadata query param is used.\"}},\"description\":\"Note: `chainName`, `specName`, and `specVersion` are used to define a type registry with a set of signed extensions and types. For Polkadot and Kusama, `chainName` is not used in defining this registry, but in other Substrate-based chains that re-launch their network without changing the `specName`, the `chainName` would be needed to create the correct registry. Substrate Reference: - `RuntimeVersion`: https://crates.parity.io/sp_version/struct.RuntimeVersion.html - `SignedExtension`: https://crates.parity.io/sp_runtime/traits/trait.SignedExtension.html - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html\"},\"TransactionPool\":{\"type\":\"object\",\"properties\":{\"pool\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"H256 hash of the extrinsic.\"},\"encodedExtrinsic\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"Scale encoded extrinsic.\"},\"tip\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The tip included in the extrinsic. Only included if the query param `includeFee` is set to true.\"},\"priority\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Computed priority of an extrinsic. Only included if the query param `includeFee` is set to true.\"},\"partialFee\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Provided `partialFee` of an extrinsic. Only included if the query param `includeFee` is set to true.\"}}}}}},\"TransactionSuccess\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The hash of the encoded transaction.\"}}},\"UnappliedSlash\":{\"type\":\"object\",\"properties\":{\"validator\":{\"type\":\"string\",\"description\":\"Stash account ID of the offending validator.\",\"format\":\"ss58\"},\"own\":{\"type\":\"string\",\"description\":\"The amount the validator will be slashed.\",\"format\":\"unsignedInteger\"},\"others\":{\"type\":\"array\",\"description\":\"Array of tuples(`[accountId, amount]`) representing all the stashes of other slashed stakers and the amount they will be slashed.\",\"items\":{\"type\":\"string\",\"format\":\"tuple[ss58, unsignedInteger]\"}},\"reporters\":{\"type\":\"array\",\"description\":\"Array of account IDs of the reporters of the offense.\",\"items\":{\"type\":\"string\",\"format\":\"ss58\"}},\"payout\":{\"type\":\"string\",\"description\":\"Amount of bounty payout to reporters.\",\"format\":\"unsignedInteger\"}}},\"VestingSchedule\":{\"type\":\"object\",\"properties\":{\"locked\":{\"type\":\"string\",\"description\":\"Number of tokens locked at start.\",\"format\":\"unsignedInteger\"},\"perBlock\":{\"type\":\"string\",\"description\":\"Number of tokens that gets unlocked every block after `startingBlock`.\",\"format\":\"unsignedInteger\"},\"startingBlock\":{\"type\":\"string\",\"description\":\"Starting block for unlocking (vesting).\",\"format\":\"unsignedInteger\"}},\"description\":\"Vesting schedule for an account.\"},\"WeightsV2\":{\"type\":\"object\",\"properties\":{\"refTime\":{\"type\":\"string\",\"description\":\"The weight of computational time used based on some reference hardware.\"},\"proofSize\":{\"type\":\"string\",\"description\":\"The weight of storage space used by proof of validity.\"}}},\"WinningData\":{\"type\":\"object\",\"properties\":{\"bid\":{\"type\":\"object\",\"properties\":{\"accountId\":{\"type\":\"string\"},\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"amount\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"leaseSet\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"description\":\"A currently winning bid and the set of lease periods the bid is for. The\\n`amount` of the bid is per lease period. The `bid` property will be `null`\\nif no bid has been made for the corresponding `leaseSet`.\\n\"}},\"requestBodies\":{\"Transaction\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Transaction\"}}},\"required\":true},\"ContractMetadata\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ContractMetadata\"}}}}}}}\n\n//# sourceURL=webpack://sidecar-swagger-ui/./src/openapi-v1.yaml?"); /***/ }), diff --git a/docs/src/openapi-v1.yaml b/docs/src/openapi-v1.yaml index 1d5465a1e..798c46a18 100755 --- a/docs/src/openapi-v1.yaml +++ b/docs/src/openapi-v1.yaml @@ -4259,15 +4259,26 @@ components: format: unsignedInteger claimedRewards: type: array - description: Array of eras for which the stakers behind a validator have - claimed rewards. Only updated for _validators._ This array is populated with - values from `stakingLedger.legacyClaimedRewards` or `stakingLedger.claimedRewards`, - as well as the `query.staking.claimedRewards` call, depending on whether the queried block - is before or after the migration. For more details on the implementation and the migration, - refer to the related PR and linked issue. + description: Array of objects, each containing an `era` and its corresponding `status`, + which represents the rewards status of the stakers backing a validator. Only updated + for _validators._ This array is populated with values from `stakingLedger.legacyClaimedRewards` + or `stakingLedger.claimedRewards`, as well as the `query.staking.claimedRewards` call, depending + on whether the queried block is before or after the migration. For more details on the implementation + and the migration, refer to the related PR and linked issue. items: - type: string - format: unsignedInteger + type: object + properties: + era: + type: string + description: The era for which we check the rewards status. + format: unsignedInteger + status: + type: string + description: The rewards status of the stakers backing a validator. + enum: + - claimed + - unclaimed + - partially claimed description: The staking ledger. StakingProgress: type: object From 8c47eda2beccfc10773de48ad9bdd6e02a0ecf7f Mon Sep 17 00:00:00 2001 From: Imod7 Date: Tue, 18 Jun 2024 15:10:27 +0200 Subject: [PATCH 08/26] output up until 84 eras & update tests --- .../accounts/AccountsStakingInfoService.spec.ts | 4 +++- .../accounts/AccountsStakingInfoService.ts | 9 ++++++--- .../test-helpers/mock/accounts/stakingInfo.ts | 14 ++++++++++++++ .../responses/accounts/stakingInfo21157800.json | 8 -------- .../responses/accounts/stakingInfo22939322.json | 8 ++++---- 5 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/services/accounts/AccountsStakingInfoService.spec.ts b/src/services/accounts/AccountsStakingInfoService.spec.ts index 06b117175..bd10a5991 100644 --- a/src/services/accounts/AccountsStakingInfoService.spec.ts +++ b/src/services/accounts/AccountsStakingInfoService.spec.ts @@ -45,6 +45,7 @@ import { testAddressPolkadot, } from '../test-helpers/mock'; import { + kusamaErasStakersMockedCall, polkadotClaimedRewardsMockedCall, polkadotErasStakersMockedCall, polkadotErasStakersOverviewMockedCall, @@ -157,6 +158,7 @@ const historicApi22939322 = { activeEra: activeEraAt22939322, currentEra: currentEraAt22939322, erasStakersOverview: stakingerasStakersOverviewMockedCall, + erasStakers: kusamaErasStakersMockedCall, }, }, } as unknown as ApiDecoration<'promise'>; @@ -202,7 +204,7 @@ describe('AccountsStakingInfoService', () => { (historicApi.query.staking.ledger as any) = ledgerAt; }); - it('works with a valid stash account (block 22939322) and returns eras claimed & unclaimed that include era 6514 (when the migration occurred in Kusama)', async () => { + it('works with a valid stash account (block 22939322) and returns eras claimed that include era 6514 (when the migration occurred in Kusama)', async () => { expect( sanitizeNumbers( await accountStakingInfoService22939322.fetchAccountStakingInfo(blockHash22939322, testAddressKusama), diff --git a/src/services/accounts/AccountsStakingInfoService.ts b/src/services/accounts/AccountsStakingInfoService.ts index 4be37467c..6159fbb54 100644 --- a/src/services/accounts/AccountsStakingInfoService.ts +++ b/src/services/accounts/AccountsStakingInfoService.ts @@ -82,17 +82,20 @@ export class AccountsStakingInfoService extends AbstractService { const currentEra = currentEraMaybeOption.unwrap().toNumber(); let depth = Number(api.consts.staking.historyDepth.toNumber()); + let eraStart = currentEra - depth; if (claimedRewards.length > 0) { - depth = currentEra - claimedRewards[claimedRewards.length - 1].era - 1; + depth = depth - claimedRewards.length; + eraStart = claimedRewards[claimedRewards.length - 1].era + 1; } - const eraStart = currentEra - depth; - for (let e = eraStart; e <= currentEra; e++) { + + for (let e = eraStart; e < eraStart + depth; e++) { const claimedRewardsPerEra = await historicApi.query.staking.claimedRewards(e, stash); const erasStakersOverview = await historicApi.query.staking.erasStakersOverview(e, stash); let erasStakers = null; if (historicApi.query.staking?.erasStakers) { erasStakers = await historicApi.query.staking.erasStakers(e, stash); } + if (erasStakersOverview.isSome) { const pageCount = erasStakersOverview.unwrap().pageCount.toNumber(); const eraStatus = diff --git a/src/services/test-helpers/mock/accounts/stakingInfo.ts b/src/services/test-helpers/mock/accounts/stakingInfo.ts index 88e63714a..b23bf0d0b 100644 --- a/src/services/test-helpers/mock/accounts/stakingInfo.ts +++ b/src/services/test-helpers/mock/accounts/stakingInfo.ts @@ -71,6 +71,20 @@ export const stakingPayeeMockedCall = ( }), ); +const kusamaStakersTotal = kusamaRegistryV1002000.createType('Compact', 1362722538670121); +const kusamaStakersOwn = kusamaRegistryV1002000.createType('Compact', 5340420989561); +const kusamaStakersOthers = kusamaRegistryV1002000.createType('Vec', []); + +export const kusamaErasStakersMockedCall = (_era: number, _address: string): Promise => { + return Promise.resolve().then(() => { + return polkadotRegistryV1002000.createType('SpStakingExposure', { + total: kusamaStakersTotal, + own: kusamaStakersOwn, + others: kusamaStakersOthers, + }); + }); +}; + export const polkadotClaimedRewardsMockedCall = (era: number): string[] => { if ( era === 1419 || diff --git a/src/services/test-helpers/responses/accounts/stakingInfo21157800.json b/src/services/test-helpers/responses/accounts/stakingInfo21157800.json index 903e021e7..c5709af57 100644 --- a/src/services/test-helpers/responses/accounts/stakingInfo21157800.json +++ b/src/services/test-helpers/responses/accounts/stakingInfo21157800.json @@ -349,14 +349,6 @@ { "era": "1468", "status": "partially claimed" - }, - { - "era": "1469", - "status": "unclaimed" - }, - { - "era": "1470", - "status": "unclaimed" } ] } diff --git a/src/services/test-helpers/responses/accounts/stakingInfo22939322.json b/src/services/test-helpers/responses/accounts/stakingInfo22939322.json index 1d1aca3c1..b9d3eefcf 100644 --- a/src/services/test-helpers/responses/accounts/stakingInfo22939322.json +++ b/src/services/test-helpers/responses/accounts/stakingInfo22939322.json @@ -182,6 +182,10 @@ "era": "6512", "status": "claimed" }, + { + "era": "6513", + "status": "claimed" + }, { "era": "6514", "status": "claimed" @@ -345,10 +349,6 @@ { "era": "6554", "status": "claimed" - }, - { - "era": "6555", - "status": "unclaimed" } ] } From 9e838e86c59f7e02cebf129dd05f78f9adb89312 Mon Sep 17 00:00:00 2001 From: Imod7 Date: Thu, 20 Jun 2024 14:51:59 +0200 Subject: [PATCH 09/26] Remove yarn.lock files from PR --- docs/yarn.lock | 24 ++++++++++++------------ yarn.lock | 22 +++++++++++----------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/yarn.lock b/docs/yarn.lock index 7ccdc1cf6..20cf699ef 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -1513,11 +1513,11 @@ __metadata: linkType: hard "braces@npm:^3.0.1, braces@npm:~3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" + version: 3.0.3 + resolution: "braces@npm:3.0.3" dependencies: - fill-range: "npm:^7.0.1" - checksum: 10/966b1fb48d193b9d155f810e5efd1790962f2c4e0829f8440b8ad236ba009222c501f70185ef732fef17a4c490bb33a03b90dab0631feafbdf447da91e8165b1 + fill-range: "npm:^7.1.1" + checksum: 10/fad11a0d4697a27162840b02b1fad249c1683cbc510cd5bf1a471f2f8085c046d41094308c577a50a03a579dd99d5a6b3724c4b5e8b14df2c4443844cfcda2c6 languageName: node linkType: hard @@ -2595,12 +2595,12 @@ __metadata: languageName: node linkType: hard -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" dependencies: to-regex-range: "npm:^5.0.1" - checksum: 10/e260f7592fd196b4421504d3597cc76f4a1ca7a9488260d533b611fc3cefd61e9a9be1417cb82d3b01ad9f9c0ff2dbf258e1026d2445e26b0cf5148ff4250429 + checksum: 10/a7095cb39e5bc32fada2aa7c7249d3f6b01bd1ce461a61b0adabacccabd9198500c6fb1f68a7c851a657e273fce2233ba869638897f3d7ed2e87a2d89b4436ea languageName: node linkType: hard @@ -6448,17 +6448,17 @@ __metadata: linkType: hard "ws@npm:^8.4.2": - version: 8.5.0 - resolution: "ws@npm:8.5.0" + version: 8.17.1 + resolution: "ws@npm:8.17.1" peerDependencies: bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 + utf-8-validate: ">=5.0.2" peerDependenciesMeta: bufferutil: optional: true utf-8-validate: optional: true - checksum: 10/f0ee700970a0bf925b1ec213ca3691e84fb8b435a91461fe3caf52f58c6cec57c99ed5890fbf6978824c932641932019aafc55d864cad38ac32577496efd5d3a + checksum: 10/4264ae92c0b3e59c7e309001e93079b26937aab181835fb7af79f906b22cd33b6196d96556dafb4e985742dd401e99139572242e9847661fdbc96556b9e6902d languageName: node linkType: hard diff --git a/yarn.lock b/yarn.lock index 41207b043..d93743bad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2389,11 +2389,11 @@ __metadata: linkType: hard "braces@npm:^3.0.2, braces@npm:~3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" + version: 3.0.3 + resolution: "braces@npm:3.0.3" dependencies: - fill-range: "npm:^7.0.1" - checksum: 10/966b1fb48d193b9d155f810e5efd1790962f2c4e0829f8440b8ad236ba009222c501f70185ef732fef17a4c490bb33a03b90dab0631feafbdf447da91e8165b1 + fill-range: "npm:^7.1.1" + checksum: 10/fad11a0d4697a27162840b02b1fad249c1683cbc510cd5bf1a471f2f8085c046d41094308c577a50a03a579dd99d5a6b3724c4b5e8b14df2c4443844cfcda2c6 languageName: node linkType: hard @@ -3436,12 +3436,12 @@ __metadata: languageName: node linkType: hard -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" dependencies: to-regex-range: "npm:^5.0.1" - checksum: 10/e260f7592fd196b4421504d3597cc76f4a1ca7a9488260d533b611fc3cefd61e9a9be1417cb82d3b01ad9f9c0ff2dbf258e1026d2445e26b0cf5148ff4250429 + checksum: 10/a7095cb39e5bc32fada2aa7c7249d3f6b01bd1ce461a61b0adabacccabd9198500c6fb1f68a7c851a657e273fce2233ba869638897f3d7ed2e87a2d89b4436ea languageName: node linkType: hard @@ -6648,8 +6648,8 @@ __metadata: linkType: hard "ws@npm:^8.15.1, ws@npm:^8.8.1": - version: 8.16.0 - resolution: "ws@npm:8.16.0" + version: 8.17.1 + resolution: "ws@npm:8.17.1" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -6658,7 +6658,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 10/7c511c59e979bd37b63c3aea4a8e4d4163204f00bd5633c053b05ed67835481995f61a523b0ad2b603566f9a89b34cb4965cb9fab9649fbfebd8f740cea57f17 + checksum: 10/4264ae92c0b3e59c7e309001e93079b26937aab181835fb7af79f906b22cd33b6196d96556dafb4e985742dd401e99139572242e9847661fdbc96556b9e6902d languageName: node linkType: hard From 753f3eefde99a1fa750a972ba395ee53017131e5 Mon Sep 17 00:00:00 2001 From: Imod7 Date: Fri, 21 Jun 2024 10:34:10 +0200 Subject: [PATCH 10/26] check before unwrapping & fix types --- .../accounts/AccountsStakingInfoService.ts | 18 ++++++++++++------ src/types/responses/AccountStakingInfo.ts | 3 +-- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/services/accounts/AccountsStakingInfoService.ts b/src/services/accounts/AccountsStakingInfoService.ts index 575c2cd27..115dc1fd1 100644 --- a/src/services/accounts/AccountsStakingInfoService.ts +++ b/src/services/accounts/AccountsStakingInfoService.ts @@ -15,7 +15,7 @@ // along with this program. If not, see . import type { u32, Vec } from '@polkadot/types'; -import { BlockHash } from '@polkadot/types/interfaces'; +import { BlockHash, StakingLedger, StakingLedgerTo240 } from '@polkadot/types/interfaces'; import { BadRequest, InternalServerError } from 'http-errors'; import { IAccountStakingInfo, IEraStatus, IStakingLedger } from 'src/types/responses'; @@ -70,17 +70,20 @@ export class AccountsStakingInfoService extends AbstractService { let claimedRewardsEras: u32[] = []; let claimedRewards: IEraStatus[] = []; - if ((stakingLedger as unknown as IStakingLedger)?.lastReward) { - const e = (stakingLedger as unknown as IStakingLedger)?.lastReward?.unwrap().toNumber(); - if (e) { - claimedRewards.push({ era: e, status: 'claimed' }); + if ((stakingLedger as unknown as StakingLedgerTo240)?.lastReward) { + const lastReward = (stakingLedger as unknown as StakingLedgerTo240).lastReward; + if (lastReward.isSome) { + const e = (stakingLedger as unknown as StakingLedgerTo240)?.lastReward?.unwrap().toNumber(); + if (e) { + claimedRewards.push({ era: e, status: 'claimed' }); + } } } if (stakingLedger?.legacyClaimedRewards) { claimedRewardsEras = stakingLedger?.legacyClaimedRewards; } else { - claimedRewardsEras = (stakingLedger as unknown as IStakingLedger)?.claimedRewards as Vec; + claimedRewardsEras = (stakingLedger as unknown as StakingLedger)?.claimedRewards as Vec; } if (claimedRewardsEras) { claimedRewards = claimedRewardsEras.map((element) => ({ @@ -90,6 +93,9 @@ export class AccountsStakingInfoService extends AbstractService { } if (historicApi.query.staking?.claimedRewards) { const currentEraMaybeOption = await historicApi.query.staking.currentEra(); + if (currentEraMaybeOption.isNone) { + throw new InternalServerError('CurrentEra is None when Some was expected'); + } const currentEra = currentEraMaybeOption.unwrap().toNumber(); let depth = Number(api.consts.staking.historyDepth.toNumber()); diff --git a/src/types/responses/AccountStakingInfo.ts b/src/types/responses/AccountStakingInfo.ts index dcd909db8..f6f848de7 100644 --- a/src/types/responses/AccountStakingInfo.ts +++ b/src/types/responses/AccountStakingInfo.ts @@ -35,8 +35,7 @@ export interface IStakingLedger { total: Compact; active: Compact; unlocking: Vec; - lastReward?: Option | null; - claimedRewards?: IEraStatus[] | u32[]; + claimedRewards?: IEraStatus[]; } export interface IAccountStakingInfo { From 7ac0236df6465725c26589d3be781403a82130af Mon Sep 17 00:00:00 2001 From: Imod7 Date: Fri, 21 Jun 2024 10:51:14 +0200 Subject: [PATCH 11/26] run linter --- src/services/accounts/AccountsStakingInfoService.ts | 2 +- src/types/responses/AccountStakingInfo.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/services/accounts/AccountsStakingInfoService.ts b/src/services/accounts/AccountsStakingInfoService.ts index 115dc1fd1..da90126fd 100644 --- a/src/services/accounts/AccountsStakingInfoService.ts +++ b/src/services/accounts/AccountsStakingInfoService.ts @@ -17,7 +17,7 @@ import type { u32, Vec } from '@polkadot/types'; import { BlockHash, StakingLedger, StakingLedgerTo240 } from '@polkadot/types/interfaces'; import { BadRequest, InternalServerError } from 'http-errors'; -import { IAccountStakingInfo, IEraStatus, IStakingLedger } from 'src/types/responses'; +import { IAccountStakingInfo, IEraStatus } from 'src/types/responses'; import { AbstractService } from '../AbstractService'; diff --git a/src/types/responses/AccountStakingInfo.ts b/src/types/responses/AccountStakingInfo.ts index f6f848de7..102c3f2d3 100644 --- a/src/types/responses/AccountStakingInfo.ts +++ b/src/types/responses/AccountStakingInfo.ts @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -import type { u32, u128, Vec } from '@polkadot/types'; +import type { u128, Vec } from '@polkadot/types'; import type { Compact, Option } from '@polkadot/types/codec'; import type { AccountId } from '@polkadot/types/interfaces/runtime'; import type { From 171e10a45749cfd1c73fddbe297efc8599d77ecb Mon Sep 17 00:00:00 2001 From: Imod7 Date: Mon, 24 Jun 2024 10:33:27 +0200 Subject: [PATCH 12/26] docs: added links & updated schema description --- docs/dist/app.bundle.js | 2 +- docs/src/openapi-v1.yaml | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/dist/app.bundle.js b/docs/dist/app.bundle.js index de6e72364..cb872959f 100644 --- a/docs/dist/app.bundle.js +++ b/docs/dist/app.bundle.js @@ -682,7 +682,7 @@ eval("module.exports = function(data, filename, mime, bom) {\n var blobData = \*****************************/ /***/ ((module) => { -eval("module.exports = {\"openapi\":\"3.0.0\",\"info\":{\"title\":\"Substrate API Sidecar\",\"description\":\"Substrate API Sidecar is a REST service that makes it easy to interact with blockchain nodes built using Substrate's FRAME framework.\",\"contact\":{\"url\":\"https://github.com/paritytech/substrate-api-sidecar\"},\"license\":{\"name\":\"GPL-3.0-or-later\",\"url\":\"https://github.com/paritytech/substrate-api-sidecar/blob/master/LICENSE\"},\"version\":\"19.0.1\"},\"servers\":[{\"url\":\"https://polkadot-public-sidecar.parity-chains.parity.io/\",\"description\":\"Polkadot Parity public sidecar\"},{\"url\":\"https://kusama-public-sidecar.parity-chains.parity.io/\",\"description\":\"Kusama Parity public sidecar\"},{\"url\":\"https://polkadot-asset-hub-public-sidecar.parity-chains.parity.io/\",\"description\":\"Polkadot Asset Hub Parity public sidecar\"},{\"url\":\"https://kusama-asset-hub-public-sidecar.parity-chains.parity.io/\",\"description\":\"Kusama Asset Hub Parity public sidecar\"}],\"tags\":[{\"name\":\"accounts\"},{\"name\":\"blocks\"},{\"name\":\"contracts\"},{\"name\":\"node\",\"description\":\"node connected to sidecar\"},{\"name\":\"pallets\",\"description\":\"pallets employed in the runtime\"},{\"name\":\"runtime\"},{\"name\":\"transaction\"},{\"name\":\"paras\"},{\"name\":\"trace\"}],\"paths\":{\"/accounts/{accountId}/asset-balances\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an array of asset-balances for an account.\",\"description\":\"Returns information about an account's asset-balances. This is specific to the assets pallet for parachains. If no `assets` query parameter is provided, all asset-balances for the given account will be returned.\",\"operationId\":\"getAssetBalances\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset-balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a positive integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assets\",\"in\":\"query\",\"description\":\"An array of AssetId's to be queried. If not supplied, defaults to providing all asset balances associated with the `accountId` will be returned. The array query param format follows Express 4.x API. ex:`?assets[]=1&assets[]=2&assets[]=3`.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of assetId numbers represented as strings\",\"format\":\"Array of unsignedInteger's\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountAssetsBalances\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/asset-approvals\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an asset approval for an account.\",\"description\":\"Returns information about an account's asset approval transaction. It is required to pass in a delegate and an assetId as query parameters.\",\"operationId\":\"getAssetApprovals\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset approval info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assetId\",\"in\":\"query\",\"description\":\"The `assetId` associated with the asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"description\":\"An assetId represented as an unsignedInteger.\",\"format\":\"unsignedInteger\"}},{\"name\":\"delegate\",\"in\":\"query\",\"description\":\"The delegate's `accountId` associated with an asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountAssetsApproval\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/balance-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get balance information for an account.\",\"description\":\"Returns information about an account's balance. Replaces `/balance/{address}` from versions < v1.0.0.\",\"operationId\":\"getAccountBalanceInfo\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"token\",\"in\":\"query\",\"description\":\"Token to query the balance of. If not specified it will query the chains native token (e.g. DOT for Polkadot). Note: this is only relevant for chains that support multiple tokens through the ORML tokens pallet.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Token symbol\"}},{\"name\":\"denominated\",\"in\":\"query\",\"description\":\"When set to `true` it will denominate any balance's given atomic value using the chains given decimal value.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountBalanceInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/convert\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Convert a given AccountId to an SS58 address.\",\"description\":\"Returns the SS58 prefix, the network address format, the SS58 address, and the AccountId that was given as input parameter, the scheme that was used and if it is a public key or not (boolean).\",\"operationId\":\"accountConvert\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"AccountId or Public Key (hex).\",\"required\":true,\"schema\":{\"format\":\"AccountId or Hex\",\"type\":\"string\"}},{\"name\":\"scheme\",\"in\":\"query\",\"description\":\"The cryptographic scheme to be used in order to convert the AccountId to an SS58 address. It can take one of three values [sr25519, ed25519, ecdsa]. The default scheme that is used is `sr25519` (if it is not set in the query parameter).\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"string\",\"default\":\"sr25519\"}},{\"name\":\"prefix\",\"in\":\"query\",\"description\":\"The address prefix which can be one of the values found in the SS58-registry.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"number\",\"default\":42}},{\"name\":\"publicKey\",\"in\":\"query\",\"description\":\"Defines if the given value in the path parameter is a Public Key (hex) or not (hence AccountId).\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successfully converted the AccountId and retrieved the address info.\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountConvert\"}}}},\"400\":{\"description\":\"Invalid AccountId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"AccountId not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/pool-asset-balances\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an array of pool-asset-balances for an account.\",\"description\":\"Returns information about an account's pool-asset-balances. This is specific to the pool assets pallet for parachains. If no `assets` query parameter is provided, all pool-asset-balances for the given account will be returned.\",\"operationId\":\"getPoolAssetBalances\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query pool-asset-balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a positive integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assets\",\"in\":\"query\",\"description\":\"An array of AssetId's to be queried. If not supplied, defaults to providing all asset balances associated with the `accountId` will be returned. The array query param format follows Express 4.x API. ex:`?assets[]=1&assets[]=2&assets[]=3`.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"A list of assetId numbers represented as strings\",\"format\":\"Array of unsignedInteger's\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountPoolAssetsBalances\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/pool-asset-approvals\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an asset approval for an account.\",\"description\":\"Returns information about an account's asset approval transaction. It is required to pass in a delegate and an assetId as query parameters.\",\"operationId\":\"getPoolAssetApprovals\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset approval info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assetId\",\"in\":\"query\",\"description\":\"The `assetId` associated with the asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"description\":\"An assetId represented as an unsignedInteger.\",\"format\":\"unsignedInteger\"}},{\"name\":\"delegate\",\"in\":\"query\",\"description\":\"The delegate's `accountId` associated with an asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountAssetsApproval\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/proxy-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get proxy account information.\",\"description\":\"Returns information about a proxy account. This will include delegated accounts and deposits held.\",\"operationId\":\"getProxyInfo\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query proxy info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountProxyInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/staking-info\":{\"get\":{\"tags\":[\"staking\"],\"summary\":\"Get staking information for a _Stash_ account.\",\"description\":\"Returns information about a _Stash_ account's staking activity. Replaces `/staking/{address}` from versions < v1.0.0.\",\"operationId\":\"getStakingSummaryByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account. Must be a _Stash_ account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the staking info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountStakingInfo\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/staking-payouts\":{\"get\":{\"tags\":[\"staking\"],\"summary\":\"Get payout information for a _Stash_ account.\",\"description\":\"Returns payout information for the last specified eras. If specifying both the depth and era query params, this endpoint will return information for (era - depth) through era. (i.e. if depth=5 and era=20 information will be returned for eras 16 through 20). N.B. You cannot query eras less then `current_era - HISTORY_DEPTH`. N.B. The `nominator*` fields correspond to the address being queried, even if it is a validator's _Stash_ address. This is because a validator is technically nominating itself.\",\"operationId\":\"getStakingPayoutsByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account. Must be a _Stash_ account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query staking payouts.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"depth\",\"in\":\"query\",\"description\":\"The number of eras to query for payouts of. Must be less than or equal to `HISTORY_DEPTH`. In cases where `era - (depth -1)` is less than 0, the first era queried will be 0.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"default\":1}},{\"name\":\"era\",\"in\":\"query\",\"description\":\"The era to query at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"default\":\"`active_era - 1`\"}},{\"name\":\"unclaimedOnly\",\"in\":\"query\",\"description\":\"Only return unclaimed rewards.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountStakingPayouts\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/vesting-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get vesting information for an account.\",\"description\":\"Returns the vesting schedule for an account. Replaces `/vesting/{address}` from versions < v1.0.0.\",\"operationId\":\"getVestingSummaryByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the vesting info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountVestingInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{address}/validate\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Validate a given address.\",\"description\":\"Returns whether the given address is valid ss58 format, the ss58 prefix if the address has one, the network address format, and what the account ID is for this address.\",\"operationId\":\"getValidationByAccountId\",\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 or Hex address of the account.\",\"required\":true,\"schema\":{\"format\":\"SS58 or Hex\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successfully retrieved address info\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountValidation\"}}}}}}},\"/blocks\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a range of blocks by their height.\",\"description\":\"Given a range query parameter return an array of all the blocks within that range.\",\"operationId\":\"getBlock\",\"parameters\":[{\"name\":\"range\",\"in\":\"query\",\"description\":\"A range of integers. There is a max limit of 500 blocks per request.\",\"required\":true,\"example\":\"0-499\",\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Blocks\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a block by its height or hash.\",\"description\":\"Returns a single block. BlockId can either be a block hash or a block height. Replaces `/block/{number}` from versions < v1.0.0.\",\"operationId\":\"getBlockById\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"finalizedKey\",\"in\":\"query\",\"description\":\"When set to false, this will override the chain-config, and omit the finalized key in the response. This can increase performance slightly by avoiding an additional RPC call to the node.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"decodedXcmMsgs\",\"in\":\"query\",\"description\":\"When set to `true`, this will show the decoded XCM messages within the extrinsics of the requested block.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"paraId\",\"in\":\"query\",\"description\":\"When it is set, this will return only the decoded XCM messages for the specified origin Parachain Id (originParaId). To activate this functionality, ensure that the `decodedXcmMsgs` parameter is set to true.\",\"required\":false,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockWithDecodedXcmMsgs\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/header\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a block's header by its height or hash.\",\"description\":\"Returns a single block's header. BlockId can either be a block hash or a block height.\",\"operationId\":\"getBlockHeaderById\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockHeader\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/extrinsics/{extrinsicIndex}\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get an extrinsic by its extrinsicIndex and block height or hash. The pair blockId, extrinsicIndex is sometimes referred to as a Timepoint.\",\"description\":\"Returns a single extrinsic.\",\"operationId\":\"getExtrinsicByTimepoint\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"extrinsicIndex\",\"in\":\"path\",\"description\":\"The extrinsic's index within the block's body.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ExtrinsicIndex\"}}}},\"400\":{\"description\":\"Requested `extrinsicIndex` does not exist\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/head\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get the most recently finalized block.\",\"description\":\"Returns the most recently finalized block. Replaces `/block` from versions < v1.0.0.\",\"operationId\":\"getHeadBlock\",\"parameters\":[{\"name\":\"finalized\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to get the finalized head. If it is not set the value defaults to true. When set to false it will attempt to get the newest known block, which may not be finalized.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"decodedXcmMsgs\",\"in\":\"query\",\"description\":\"When set to `true`, this will show the decoded XCM messages within the extrinsics of the requested block.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"paraId\",\"in\":\"query\",\"description\":\"When it is set, this will return only the decoded XCM messages for the specified origin Parachain Id (originParaId). To activate this functionality, ensure that the `decodedXcmMsgs` parameter is set to true.\",\"required\":false,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockWithDecodedXcmMsgs\"}}}}}}},\"/blocks/head/header\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get information about the header of the most recent finalized block.\",\"description\":\"Returns the most recently finalized block's header.\",\"operationId\":\"getLatestBlockHeader\",\"parameters\":[{\"name\":\"finalized\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to get the finalized head. If it is not set the value defaults to true. When set to false it will attempt to get the newest known block, which may not be finalized.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockHeader\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/extrinsics-raw\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a blocks header & its extrinsics as hex values.\",\"description\":\"Returns a block & its extrinsics as hex values. BlockId can either be a block hash or a block height.\",\"operationId\":\"getBlockRawExtrinsics\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockRaw\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/contracts/ink/{address}/query\":{\"post\":{\"tags\":[\"contracts\"],\"summary\":\"Query an !Ink contract with a given message (method).\",\"description\":\"Will return a valid or invalid result.\",\"operationId\":\"callContractQuery\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/ContractMetadata\"},\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 or Hex address of the account associated with the contract.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"method\",\"in\":\"query\",\"description\":\"The message or method used to query.\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"get\"}},{\"name\":\"gasLimit\",\"in\":\"query\",\"description\":\"The gas limit to be used as an option for the queried message.\",\"required\":false,\"schema\":{\"default\":-1,\"type\":\"number\"}},{\"name\":\"storageDepositLimit\",\"in\":\"query\",\"description\":\"The storage deposit limit to be used as an option for the queried message.\",\"required\":false,\"schema\":{\"default\":null,\"type\":\"number\"}},{\"name\":\"args\",\"in\":\"query\",\"description\":\"Abi params used as args specified in the metadata to be passed into a query. The format to use this query param is ?args[]=1&args[]=2&args[]=3.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of Abi params.\"}}],\"responses\":{\"200\":{\"description\":\"succesful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ContractsInkQuery\"}}}},\"400\":{\"description\":\"Invalid Method\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/node/network\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get information about the Substrate node's activity in the peer-to-peer network.\",\"description\":\"Returns network related information of the node.\",\"operationId\":\"getNodeNetworking\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NodeNetwork\"}}}}}}},\"/node/transaction-pool\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get pending extrinsics from the Substrate node.\",\"description\":\"Returns the extrinsics that the node knows of that have not been included in a block.\",\"operationId\":\"getNodeTransactionPool\",\"parameters\":[{\"name\":\"includeFee\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to include tips, partialFee, and priority in each extrinsic.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionPool\"}}}}}}},\"/node/version\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get information about the Substrates node's implementation and versioning.\",\"description\":\"Returns versioning information of the node.\",\"operationId\":\"getNodeVersion\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NodeVersion\"}}}}}}},\"/transaction\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Submit a transaction to the node's transaction pool.\",\"description\":\"Accepts a valid signed extrinsic. Replaces `/tx` from versions < v1.0.0.\",\"operationId\":\"submitTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionSuccess\"}}}},\"400\":{\"description\":\"failed to parse or submit transaction\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFailure\"}}}}}}},\"/transaction/dry-run\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Dry run an extrinsic.\",\"description\":\"Use the dryrun call to practice submission of a transaction.\",\"operationId\":\"dryrunTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionDryRun\"}}}},\"400\":{\"description\":\"failed to dry-run transaction\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFailure\"}}}}}}},\"/transaction/fee-estimate\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Receive a fee estimate for a transaction.\",\"description\":\"Send a serialized transaction and receive back a naive fee estimate. Note: `partialFee` does not include any tips that you may add to increase a transaction's priority. See the reference on `compute_fee`. Replaces `/tx/fee-estimate` from versions < v1.0.0. Substrate Reference: - `RuntimeDispatchInfo`: https://crates.parity.io/pallet_transaction_payment_rpc_runtime_api/struct.RuntimeDispatchInfo.html - `query_info`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.query_info - `compute_fee`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee\",\"operationId\":\"feeEstimateTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFeeEstimate\"}}}},\"400\":{\"description\":\"fee estimation failure\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFeeEstimateFailure\"}}}}}}},\"/transaction/material\":{\"get\":{\"tags\":[\"transaction\"],\"summary\":\"Get all the network information needed to construct a transaction offline.\",\"description\":\"Returns the material that is universal to constructing any signed transaction offline. Replaces `/tx/artifacts` from versions < v1.0.0.\",\"operationId\":\"getTransactionMaterial\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the transaction construction material.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"noMeta\",\"in\":\"query\",\"description\":\"DEPRECATED! This is no longer supported\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Specifies the format of the metadata to be returned. Accepted values are 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata. When `metadata` is not inputted, the `metadata` field will be absent.\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionMaterial\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/transaction/material/{metadataVersion}\":{\"get\":{\"tags\":[\"transaction\"],\"summary\":\"Get all the network information needed to construct a transaction offline and the version of metadata specified in `metadataVersion`.\",\"description\":\"Returns all the materials necessary for constructing any signed transactions offline.\",\"operationId\":\"getTransactionMaterialwithVersionedMetadata\",\"parameters\":[{\"name\":\"metadataVersion\",\"in\":\"path\",\"description\":\"The version of metadata. The input is expected in a `vX` format, where `X` represents the version number (e.g. `v14`, `v15`). By default, metadata is outputted in 'json' format, unless the `metadata` query parameter is provided, in which case it can be either in 'json' or 'scale' format.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the transaction construction material.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Specifies the format of the metadata to be returned. Accepted values are 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata.\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionMaterial\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/assets/{assetId}/asset-info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with an asset.\",\"description\":\"Returns information associated with an asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getAssetById\",\"parameters\":[{\"name\":\"assetId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of an asset.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the assetInfo.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsAssetsInfo\"}}}}}}},\"/pallets/asset-conversion/liquidity-pools\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information related to existing liquidity pools.\",\"description\":\"Returns a list of the existing liquidity pools and its corresponding tokens at a given block height. If no block is specified, it returns the latest list available.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the liquidity pools information.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LiquidityPools\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/asset-conversion/next-available-id\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the next available liquidity pool id.\",\"description\":\"Returns the next available liquidity pool's id at a given block height. If no block is specified, it returns the latest list available.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the next liquidity pool's id.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NextAvailableId\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/foreign-assets\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with foreign assets.\",\"description\":\"Returns information associated with every foreign asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getForeignAssets\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the foreign assets.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"An array of foreign assets.\",\"$ref\":\"#/components/schemas/PalletsForeignAssets\"}}}}}}},\"/pallets/nomination-pools/info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information associated with nomination pools.\",\"description\":\"Returns information and metadata for nomination pools including pool counters and limits.\",\"operationId\":\"getNominationPoolInfo\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the nomination pool info.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsNominationPoolsInfo\"}}}}}}},\"/pallets/nomination-pools/{poolId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with a nomination pool.\",\"description\":\"Returns information associated with a nomination pool which includes the nomination pools' `bondedPool`, `rewardPool` and `metadata`.\",\"operationId\":\"getNominationPoolById\",\"parameters\":[{\"name\":\"poolId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of a nomination pool.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the nomination pool.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsNominationPool\"}}}}}}},\"/pallets/{palletId}/consts\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of constants for a pallet.\",\"description\":\"Returns a list of const item metadata for constant items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read constant metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the const items instead of every constant's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's constant items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of constantItemIds.\",\"$ref\":\"#/components/schemas/PalletConstants\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/consts/{constantItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a constant item.\",\"description\":\"Returns the value stored under the constantItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read constant metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"constantItemId\",\"in\":\"path\",\"description\":\"Id of the const item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the const item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the const items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletConstantsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/dispatchables\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of dispatchables for a pallet.\",\"description\":\"Returns a list of dispatchable item metadata for distpachable items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read dispatchable metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the dispatchable items instead of every dispatchable's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of dispatchableItemIds.\",\"$ref\":\"#/components/schemas/PalletDispatchables\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/dispatchables/{dispatchableItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a dispatchable item.\",\"description\":\"Returns the value stored under the dispatchableItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read dispatchable metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"dispatchableItemId\",\"in\":\"path\",\"description\":\"Id of the dispatchable item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the dispatchable items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/errors\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of errors for a pallet.\",\"description\":\"Returns a list of error item metadata for error items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read error metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the error items instead of every error's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's error items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of errorItemIds.\",\"$ref\":\"#/components/schemas/PalletErrors\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/errors/{errorItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of an error item.\",\"description\":\"Returns the value stored under the errorItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read error metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"errorItemId\",\"in\":\"path\",\"description\":\"Id of the error item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the error item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the error items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletErrorsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/events\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of events for a pallet.\",\"description\":\"Returns a list of event item metadata for event items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read event metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the event items instead of every event's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's event items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of eventItemIds.\",\"$ref\":\"#/components/schemas/PalletEvents\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/events/{eventItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of an event item.\",\"description\":\"Returns the value stored under the eventItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read event metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventItemId\",\"in\":\"path\",\"description\":\"Id of the event item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the event item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the event items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletEventsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/runtime/metadata\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the runtime metadata in decoded, JSON form.\",\"description\":\"Returns the runtime metadata as a JSON object. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\",\"description\":\"Response is dependent on the runtime metadata contents.\"}}}}}}},\"/runtime/metadata/{metadataVersion}\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the requested version of runtime metadata in decoded, JSON form.\",\"description\":\"Returns the requested version of runtime metadata as a JSON object. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"metadataVersion\",\"in\":\"path\",\"description\":\"The version of metadata. The input is expected in a `vX` format, where `X` represents the version number (e.g. `v14`, `v15`).\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\",\"description\":\"Response is dependent on the runtime metadata contents.\"}}}}}}},\"/runtime/metadata/versions\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the available versions of runtime metadata.\",\"description\":\"Returns the available versions of runtime metadata. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata versions at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array with the available metadata versions.\"}}}}}}},\"/runtime/code\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the runtime wasm blob.\",\"description\":\"Returns the runtime Wasm blob in hex format.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the runtime wasm blob at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeCode\"}}}}}}},\"/runtime/spec\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get version information of the Substrate runtime.\",\"description\":\"Returns version information related to the runtime.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve runtime version information at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeSpec\"}}}}}}},\"/pallets/{palletId}/storage\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of storage items for a pallet.\",\"description\":\"Returns a list of storage item metadata for storage items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to query the storage of. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the storage items instead of all of each storage item's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's storage items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of storageItemIds.\",\"$ref\":\"#/components/schemas/PalletStorage\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/storage/{storageItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a storage item.\",\"description\":\"Returns the value stored under the storageItemId. If it is a map, query param key1 is required. If the storage item is double map query params key1 and key2 are required.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to query the storage of. Note: pallet name aligns with pallet name as specified in runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"storageItemId\",\"in\":\"path\",\"description\":\"Id of the storage item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"keys\",\"in\":\"query\",\"description\":\"Set of N keys used for querying a storage map. It should be queried using the following format - ?keys[]=key1&keys[]=key2. Order matters, as it will determine the order the keys are passed into the storage calls.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of storage keys.\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the storage item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the storage items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletStorageItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/pool-assets/{assetId}/asset-info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with a pool asset.\",\"description\":\"Returns information associated with a pool asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getPoolAssetById\",\"parameters\":[{\"name\":\"assetId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of a pool asset.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the assetInfo.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsPoolAssetsInfo\"}}}}}}},\"/pallets/staking/progress\":{\"get\":{\"tags\":[\"staking\",\"pallets\"],\"summary\":\"Get progress on the general Staking pallet system.\",\"description\":\"Returns information on the progress of key components of the staking system and estimates of future points of interest. Replaces `/staking-info` from versions < v1.0.0.\",\"operationId\":\"getStakingProgress\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a staking progress report.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/StakingProgress\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/staking/validators\":{\"get\":{\"tags\":[\"staking\",\"pallets\"],\"summary\":\"Get all validators (active/waiting) of a specific chain.\",\"description\":\"Returns a list of all validators addresses and their corresponding status which can be either active or waiting. It will also return a list of active validators that will not be part of the next era for staking. They will be under the key \\\"validatorsToBeChilled\\\". It's important to note, that addresses can be present in both the \\\"validators\\\" key, and \\\"validatorsToBeChilled\\\".\",\"operationId\":\"getStakingValidators\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the list of validators.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/StakingValidators\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/paras\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] List all registered paras (parathreads & parachains).\\n\",\"description\":\"Returns all registered parachains and parathreads with lifecycle info.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve paras list at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Paras\"}}}}}}},\"/paras/leases/current\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get general information about the current lease period.\\n\",\"description\":\"Returns an overview of the current lease period, including lease holders.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve current lease period info at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"currentLeaseHolders\",\"in\":\"query\",\"description\":\"Wether or not to include the `currentLeaseHolders` property. Inclusion\\nof the property will likely result in a larger payload and increased\\nresponse time.\\n\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasLeasesCurrent\"}}}}}}},\"/paras/auctions/current\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the status of the current auction.\\n\",\"description\":\"Returns an overview of the current auction. There is only one auction\\nat a time. If there is no auction most fields will be `null`. If the current\\nauction phase is in `vrfDelay` and you are looking to retrieve the latest winning\\nbids, it is advised to query one block before `finishEnd` in the `endingPeriod` phase\\nfor that auction as there technically are no winners during the `vrfDelay` and thus\\nthe field is `null`.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve auction progress at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasAuctionsCurrent\"}}}}}}},\"/paras/crowdloans\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] List all stored crowdloans.\\n\",\"description\":\"Returns a list of all the crowdloans and their associated paraIds.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the list of paraIds that have crowdloans at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasCrowdloans\"}}}}}}},\"/paras/{paraId}/crowdloan-info\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get crowdloan information for a `paraId`.\\n\",\"description\":\"Returns crowdloan's `fundInfo` and the set of `leasePeriods` the crowdloan`\\ncovers.\\n\",\"parameters\":[{\"name\":\"paraId\",\"in\":\"path\",\"description\":\"paraId to query the crowdloan information of.\",\"required\":true,\"schema\":{\"type\":\"number\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve info at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasCrowdloanInfo\"}}}}}}},\"/paras/{paraId}/lease-info\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get current and future leases as well as the lifecycle stage for a given `paraId`.\\n\",\"description\":\"Returns a list of leases that belong to the `paraId` as well as the\\n`paraId`'s current lifecycle stage.\\n\",\"parameters\":[{\"name\":\"paraId\",\"in\":\"path\",\"description\":\"paraId to query the crowdloan information of.\",\"required\":true,\"schema\":{\"type\":\"number\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's leases at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasLeaseInfo\"}}}}}}},\"/paras/head/included-candidates\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the heads of the included (backed and considered available) parachain candidates at the\\nspecified block height or at the most recent finalized head otherwise.\\n\",\"description\":\"Returns an object with all the parachain id's as keys, and their headers as values.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's heads at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasHeaders\"}}}}}}},\"/paras/head/backed-candidates\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the heads of the backed parachain candidates at the specified block height or at the most recent finalized head otherwise.\\n\",\"description\":\"Returns an object with all the parachain id's as keys, and their headers as values.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's heads at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasHeaders\"}}}}}}},\"/experimental/blocks/head/traces\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get traces for the most\\nrecently finalized block.\\n\",\"description\":\"Returns traces (spans and events) of the most recently finalized block from\\nRPC `state_straceBlock`. Consult the [RPC docs](https://github.com/paritytech/substrate/blob/aba876001651506f85c14baf26e006b36092e1a0/client/rpc-api/src/state/mod.rs#L140)\\nfor conceptual info.\\n\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTrace\"}}}}}}},\"/experimental/blocks/{blockId}/traces\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get traces for the given `blockId`.\\n\",\"description\":\"Returns traces (spans and events) of the specified block from\\nRPC `state_straceBlock`. Consult the [RPC docs](https://github.com/paritytech/substrate/blob/aba876001651506f85c14baf26e006b36092e1a0/client/rpc-api/src/state/mod.rs#L140) for conceptual info.\\n\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTrace\"}}}}}}},\"/experimental/blocks/head/traces/operations\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get the operations from the\\nmost recently finalized block.\\n\",\"description\":\"Returns the operations from the most recently finalized block. Operations\\nrepresent one side of a balance change. For example if Alice transfers\\n100unit to Bob there will be two operations; 1) Alice - 100 2) Bob + 100.\\n\\nGiven account A and A's balance at block k0 (Ak0), if we sum all the\\noperations for A from block k1 through kn against Ak0, we will end up\\nwith A's balance at block kn (Akn). Thus, operations can be used to audit\\nthat balances change as expected.\\n\\nThis is useful for Substrate based chains because the advanced business\\nlogic can make it difficult to ensure auditable balance reconciliation\\nbased purely on events. Instead of using events one can use the\\noperations given from this endpoint.\\n\\nNote - each operation corresponds to a delta of a single field of the\\n`system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`\\nand `fee_frozen`).\\nNote - operations are assigned a block execution phase (and extrinsic index\\nfor those in the apply extrinsic phase) based on an \\\"action group\\\". For\\nexample all the operations for 1 extrinsic will be in the same action group.\\nThe action groups can optionally be fetched with the `action` query param\\nfor closer auditing.\\nNote - There are no 0 value operations (e.g. a transfer of 0, or a\\ntransfer to itself)\\n\\nTo learn more about operation and action group creation please consult\\n[this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)\\n\",\"parameters\":[{\"name\":\"actions\",\"in\":\"query\",\"description\":\"Whether or not to include action groups.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTraceOperations\"}}}}}}},\"/experimental/blocks/{blockId}/traces/operations\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get the operations from the\\nspecified block.\\n\",\"description\":\"Returns the operations from the most recently finalized block. Operations\\nrepresent one side of a balance change. For example if Alice transfers\\n100unit to Bob there will be two operations; 1) Alice - 100 2) Bob + 100.\\n\\nGiven account A and A's balance at block k0 (Ak0), if we sum all the\\noperations for A from block k1 through kn against Ak0, we will end up\\nwith A's balance at block kn (Akn). Thus, operations can be used to audit\\nthat balances change as expected.\\n\\nThis is useful for Substrate based chains because the advanced business\\nlogic can make it difficult to ensure auditable balance reconciliation\\nbased purely on events. Instead of using events one can use the\\noperations given from this endpoint.\\n\\nNote - each operation corresponds to a delta of a single field of the\\n`system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`\\nand `fee_frozen`).\\nNote - operations are assigned a block execution phase (and extrinsic index\\nfor those in the apply extrinsic phase) based on an \\\"action group\\\". For\\nexample all the operations for 1 extrinsic will be in the same action group.\\nThe action groups can optionally be fetched with the `action` query param\\nfor closer auditing.\\nNote - There are no 0 value operations (e.g. a transfer of 0, or a\\ntransfer to itself)\\n\\nTo learn more about operation and action group creation please consult\\n[this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)\\n\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"actions\",\"in\":\"query\",\"description\":\"Whether or not to include action groups.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTraceOperations\"}}}}}}}},\"components\":{\"schemas\":{\"AccountAssetsApproval\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"amount\":{\"type\":\"string\",\"description\":\"The amount of funds approved for the balance transfer from the owner to some delegated target.\",\"format\":\"unsignedInteger\"},\"deposit\":{\"type\":\"string\",\"description\":\"The amount reserved on the owner's account to hold this item in storage.\",\"format\":\"unsignedInteger\"}}},\"AccountAssetsBalances\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"assets\":{\"type\":\"array\",\"description\":\"An array of queried assets.\",\"items\":{\"$ref\":\"#/components/schemas/AssetsBalance\"}}}},\"AccountBalanceInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"nonce\":{\"type\":\"string\",\"description\":\"Account nonce.\",\"format\":\"unsignedInteger\"},\"tokenSymbol\":{\"type\":\"string\",\"description\":\"Token symbol of the balances displayed in this response.\",\"format\":\"unsignedInteger\"},\"free\":{\"type\":\"string\",\"description\":\"Free balance of the account. Not equivalent to _spendable_ balance. This is the only balance that matters in terms of most operations on tokens.\",\"format\":\"unsignedInteger\"},\"reserved\":{\"type\":\"string\",\"description\":\"Reserved balance of the account.\",\"format\":\"unsignedInteger\"},\"miscFrozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when withdrawing for anything except transaction fee payment. Note, that some runtimes may not have support for miscFrozen and if so the following will be returned `miscFrozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"feeFrozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when withdrawing specifically for transaction fee payment. Note, that some runtimes may not have support for feeFrozen and if so the following will be returned `feeFrozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"frozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when reducing the balance, except for actions where the account owner cannot reasonably benefit from the balance reduction, such as slashing. Note, that some runtimes may not have support for frozen and if so the following will be returned `frozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"locks\":{\"type\":\"array\",\"description\":\"Array of locks on a balance. There can be many of these on an account and they \\\"overlap\\\", so the same balance is frozen by multiple locks\",\"items\":{\"$ref\":\"#/components/schemas/BalanceLock\"}}}},\"AccountConvert\":{\"type\":\"object\",\"properties\":{\"ss58Prefix\":{\"type\":\"string\",\"description\":\"SS58 prefix based on which the account ID or Public Key (hex) is converted to an SS58 address.\",\"format\":\"unsignedInteger\"},\"network\":{\"type\":\"string\",\"description\":\"The network based on which the returned address is encoded. It depends on the prefix that was given as a query param.\"},\"address\":{\"type\":\"string\",\"description\":\"The returned SS58 address which is the result of the conversion of the account ID or Public Key (hex).\"},\"accountId\":{\"type\":\"string\",\"description\":\"The given account ID or Public Key (hex) that is converted to an SS58 address.\"},\"scheme\":{\"type\":\"string\",\"description\":\"The cryptographic scheme/algorithm used to encode the given account ID or Public Key (hex).\"},\"publicKey\":{\"type\":\"boolean\",\"description\":\"Whether the given path parameter is a Public Key (hex) or not.\"}}},\"AccountPoolAssetsBalances\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"poolAssets\":{\"type\":\"array\",\"description\":\"An array of queried assets.\",\"items\":{\"$ref\":\"#/components/schemas/AssetsBalance\"}}}},\"AccountProxyInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"delegatedAccounts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"delegate\":{\"type\":\"string\",\"description\":\"Delegate address for the given proxy.\",\"format\":\"ss58\"},\"delay\":{\"type\":\"string\",\"description\":\"The announcement period required of the initial proxy. Will generally be zero.\",\"format\":\"unsignedInteger\"},\"proxyType\":{\"type\":\"string\",\"description\":\"The permissions allowed for this proxy account.\"}}}},\"depositHeld\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The held deposit.\"}}},\"AccountStakingInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"rewardDestination\":{\"type\":\"string\",\"description\":\"The account to which rewards will be paid. Can be 'Staked' (Stash account, adding to the amount at stake), 'Stash' (Stash address, not adding to the amount at stake), or 'Controller' (Controller address).\",\"format\":\"ss58\",\"enum\":[\"Staked\",\"Stash\",\"Controller\"]},\"controller\":{\"type\":\"string\",\"description\":\"Controller address for the given Stash.\",\"format\":\"ss58\"},\"numSlashingSpans\":{\"type\":\"string\",\"description\":\"Number of slashing spans on Stash account; `null` if provided address is not a Controller.\",\"format\":\"unsignedInteger\"},\"nominations\":{\"$ref\":\"#/components/schemas/Nominations\"},\"stakingLedger\":{\"$ref\":\"#/components/schemas/StakingLedger\"}},\"description\":\"Note: Runtime versions of Kusama less than 1062 will either have `lastReward` in place of `claimedRewards`, or no field at all. This is related to changes in reward distribution. See: [Lazy Payouts](https://github.com/paritytech/substrate/pull/4474), [Simple Payouts](https://github.com/paritytech/substrate/pull/5406)\"},\"AccountStakingPayouts\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"erasPayouts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"era\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Era this information is associated with.\"},\"totalEraRewardPoints\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Total reward points for the era. Equals the sum of reward points for all the validators in the set.\"},\"totalEraPayout\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Total payout for the era. Validators split the payout based on the portion of `totalEraRewardPoints` they have.\"},\"payouts\":{\"$ref\":\"#/components/schemas/Payouts\"}}}}}},\"AccountValidation\":{\"type\":\"object\",\"properties\":{\"isValid\":{\"type\":\"boolean\",\"description\":\"Whether the given address is valid ss58 formatted.\"},\"ss58Prefix\":{\"type\":\"string\",\"description\":\"SS58 prefix of the given address. If the address is a valid base58 format, but incorrect ss58, a prefix for the given address will still be returned.\",\"format\":\"unsignedInteger\"},\"network\":{\"type\":\"string\",\"description\":\"The network based on which the given address is encoded.\"},\"accountId\":{\"type\":\"string\",\"description\":\"The account id of the given address.\"}}},\"AccountVestingInfo\":{\"type\":\"object\",\"description\":\"Sidecar version's <= v10.0.0 have a`vesting` return value that defaults to an object for when there is no available vesting-info data. It also returns a `VestingInfo` as an object. For Sidecar >=11.0.0, that value will now default as an array when there is no value, and `Vec` is returned when there is.\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"vesting\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/VestingSchedule\"}}}},\"AssetsBalance\":{\"type\":\"object\",\"properties\":{\"assetId\":{\"type\":\"string\",\"description\":\"The identifier of the asset.\",\"format\":\"unsignedInteger\"},\"balance\":{\"type\":\"string\",\"description\":\"The balance of the asset.\",\"format\":\"unsignedInteger\"},\"isFrozen\":{\"type\":\"boolean\",\"description\":\"Whether the asset is frozen for non-admin transfers. Note, that some runtimes may not have support for isFrozen and if so the following will be returned `isFrozen does not exist for this runtime`\"},\"isSufficient\":{\"type\":\"boolean\",\"description\":\"Whether a non-zero balance of this asset is a deposit of sufficient value to account for the state bloat associated with its balance storage. If set to `true`, then non-zero balances may be stored without a `consumer` reference (and thus an ED in the Balances pallet or whatever else is used to control user-account state growth).\"}}},\"AssetInfo\":{\"type\":\"object\",\"properties\":{\"owner\":{\"type\":\"string\",\"description\":\"Owner of the assets privileges.\",\"format\":\"SS58\"},\"issuer\":{\"type\":\"string\",\"description\":\"The `AccountId` able to mint tokens.\",\"format\":\"SS58\"},\"admin\":{\"type\":\"string\",\"description\":\"The `AccountId` that can thaw tokens, force transfers and burn token from any account.\",\"format\":\"SS58\"},\"freezer\":{\"type\":\"string\",\"description\":\"The `AccountId` that can freeze tokens.\",\"format\":\"SS58\"},\"supply\":{\"type\":\"string\",\"description\":\"The total supply across accounts.\",\"format\":\"unsignedInteger\"},\"deposit\":{\"type\":\"string\",\"description\":\"The balance deposited for this. This pays for the data stored.\",\"format\":\"unsignedInteger\"},\"minBalance\":{\"type\":\"string\",\"description\":\"The ED for virtual accounts.\",\"format\":\"unsignedInteger\"},\"isSufficient\":{\"type\":\"boolean\",\"description\":\"If `true`, then any account with this asset is given a provider reference. Otherwise, it requires a consumer reference.\"},\"accounts\":{\"type\":\"string\",\"description\":\"The total number of accounts.\",\"format\":\"unsignedInteger\"},\"sufficients\":{\"type\":\"string\",\"description\":\"The total number of accounts for which is placed a self-sufficient reference.\"},\"approvals\":{\"type\":\"string\",\"description\":\"The total number of approvals.\",\"format\":\"unsignedInteger\"},\"status\":{\"type\":\"string\",\"description\":\"The status of the asset.\"}}},\"AssetMetadata\":{\"type\":\"object\",\"properties\":{\"deposit\":{\"type\":\"string\",\"description\":\"The balance deposited for this metadata. This pays for the data stored in this struct.\",\"format\":\"unsignedInteger\"},\"name\":{\"type\":\"string\",\"description\":\"The user friendly name of this asset.\",\"format\":\"$hex\"},\"symbol\":{\"type\":\"string\",\"description\":\"The ticker symbol for this asset.\",\"format\":\"$hex\"},\"decimals\":{\"type\":\"string\",\"description\":\"The number of decimals this asset uses to represent one unit.\",\"format\":\"unsignedInteger\"},\"isFrozen\":{\"type\":\"boolean\",\"description\":\"Whether the asset metadata may be changed by a non Force origin. Note, that some runtimes may not have support for isFrozen and if so the following will be returned `isFrozen does not exist for this runtime`\"}}},\"BalanceLock\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"An identifier for this lock. Only one lock may be in existence for each identifier.\"},\"amount\":{\"type\":\"string\",\"description\":\"The amount below which the free balance may not drop with this lock in effect.\",\"format\":\"unsignedInteger\"},\"reasons\":{\"type\":\"string\",\"description\":\"Reasons for withdrawing balance.\",\"enum\":[\"Fee = 0\",\"Misc = 1\",\"All = 2\"]}}},\"Block\":{\"type\":\"object\",\"properties\":{\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"authorId\":{\"type\":\"string\",\"description\":\"The account ID of the block author (may be undefined for some chains).\",\"format\":\"ss58\"},\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"},\"onInitialize\":{\"$ref\":\"#/components/schemas/BlockInitialize\"},\"extrinsics\":{\"type\":\"array\",\"description\":\"Array of extrinsics (inherents and transactions) within the block.\",\"items\":{\"$ref\":\"#/components/schemas/Extrinsic\"}},\"onFinalize\":{\"$ref\":\"#/components/schemas/BlockFinalize\"},\"finalized\":{\"type\":\"boolean\",\"description\":\"A boolean identifying whether the block is finalized or not. Note: on chains that do not have deterministic finality this field is omitted.\"}},\"description\":\"Note: Block finalization does not correspond to consensus, i.e. whether the block is in the canonical chain. It denotes the finalization of block _construction._\"},\"BlockRaw\":{\"type\":\"object\",\"properties\":{\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}},\"extrinsics\":{\"type\":\"array\",\"description\":\"Array of raw extrinsics (inherents and transactions) within the block.\",\"items\":{\"type\":\"string\"}}}},\"Blocks\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Block\"}},\"BlockFinalize\":{\"type\":\"object\",\"properties\":{\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}}},\"description\":\"Object with an array of `SanitizedEvent`s that occurred during block construction finalization with the `method` and `data` for each.\"},\"BlockHeader\":{\"type\":\"object\",\"properties\":{\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}}}},\"BlockIdentifiers\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"height\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"}},\"description\":\"Block number and hash at which the call was made.\"},\"BlockInitialize\":{\"type\":\"object\",\"properties\":{\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}}},\"description\":\"Object with an array of `SanitizedEvent`s that occurred during block initialization with the `method` and `data` for each.\"},\"BlocksTrace\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"blockHash\":{\"type\":\"string\"},\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TraceEvent\"}},\"parentHash\":{\"type\":\"string\"},\"spans\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TraceSpan\"}},\"storageKeys\":{\"type\":\"string\",\"description\":\"Hex encoded storage keys used to filter events.\"},\"tracingTargets\":{\"type\":\"string\",\"description\":\"Targets used to filter spans and events.\"}}},\"BlocksTraceOperations\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"operations\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Operation\"}}}},\"BlockWithDecodedXcmMsgs\":{\"allOf\":[{\"$ref\":\"#/components/schemas/Block\"},{\"$ref\":\"#/components/schemas/DecodedXcmMsgs\"}],\"description\":\"Block information that includes the decoded XCM messages if any are found in the queried block. If not, the decodedXcmMsgs object will be returned with three empty arrays corresponding to each direction, horizontalMessages, downwardMessages, upwardMessages.\"},\"BondedPool\":{\"type\":\"object\",\"properties\":{\"points\":{\"type\":\"number\"},\"state\":{\"type\":\"string\"},\"memberCounter\":{\"type\":\"number\"},\"roles\":{\"type\":\"object\",\"properties\":{\"depositor\":{\"type\":\"string\"},\"root\":{\"type\":\"string\"},\"nominator\":{\"type\":\"string\"},\"stateToggler\":{\"type\":\"string\"}}}}},\"ChainType\":{\"type\":\"object\",\"description\":\"Type of the chain. It will return one of the following enum variants as a key. Live, Development, Local, or Custom. Each variant will have a value as null except when the ChainType is Custom, it will return a string.\",\"properties\":{\"live\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"development\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"local\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"custom\":{\"type\":\"string\"}},\"example\":\"{\\\"live\\\": null}\"},\"ContractsInkQuery\":{\"type\":\"object\",\"description\":\"Result from calling a query to a Ink contract.\",\"properties\":{\"debugMessage\":{\"type\":\"string\"},\"gasConsumed\":{\"type\":\"string\"},\"gasRequired\":{\"type\":\"string\"},\"output\":{\"type\":\"boolean\"},\"result\":{\"type\":\"object\",\"description\":\"Will result in an Ok or Err object depending on the result of the query.\"},\"storageDeposit\":{\"type\":\"object\"}}},\"ContractMetadata\":{\"type\":\"object\",\"description\":\"Metadata used to instantiate a ContractPromise. This metadata can be generated by compiling the contract you are querying.\"},\"DecodedXcmMsgs\":{\"type\":\"object\",\"properties\":{\"decodedXcmMsgs\":{\"type\":\"object\",\"properties\":{\"horizontalMessages\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/DecodedXcmMsgsHorizontalMessagesInRelay\"},{\"$ref\":\"#/components/schemas/DecodedXcmMsgsHorizontalMessagesInParachain\"}]},\"downwardMessages\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"sentAt\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Represents the block number that the XCM message was sent at on the relay chain.\"},\"msg\":{\"type\":\"string\",\"description\":\"Represents the XCM message.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}}}},\"upwardMessages\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}}}}}}},\"description\":\"Object with three arrays, one for every XCM direction. The arrays are populated or left empty based on the direction of the current XCM message that is being decoded. The XCM messages can be Upward and/or Horizontal (`in transit`) messages when connected to a Relay chain. When connected to a Parachain, the messages can be Downward and/or Horizontal. One or more messages can be present in a single block. In case of multiple messages from the same paraIds (originParaId and/or destinationParaId), the messages will be shown under the field `data`.\"},\"DecodedXcmMsgsHorizontalMessagesInRelay\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"destinationParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent to.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}},\"description\":\"Array that includes the Horizontal (`in transit`) messages when we are connected to a Relay Chain. Each block can contain one or more messages. If multiple messages share the same origin and destination paraId, they will be displayed within the data field.\"}},\"DecodedXcmMsgsHorizontalMessagesInParachain\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"sentAt\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Represents the block number that the XCM message was sent at on the relay chain.\"},\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}},\"description\":\"Array that includes the Horizontal Messages when we are connected to a Parachain. Each block can contain one or more messages. If multiple messages originate from the same parachain (originParaId), they will be displayed within the data field.\"}},\"DigestItem\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"index\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"value\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"ElectionStatus\":{\"type\":\"object\",\"properties\":{\"status\":{\"type\":\"object\",\"description\":\"[Deprecated](Works for polkadot runtimes before v0.8.30).\\nEra election status: either `Close: null` or `Open: `. A status of `Close` indicates that the submission window for solutions from off-chain Phragmen is not open. A status of `Open` indicates that the submission window for off-chain Phragmen solutions has been open since BlockNumber. N.B. when the submission window is open, certain extrinsics are not allowed because they would mutate the state that the off-chain Phragmen calculation relies on for calculating results.\"},\"toggleEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the `status` will switch.\",\"format\":\"unsignedInteger\"}},\"description\":\"Information about the off-chain election. Not included in response when `forceEra.isForceNone`.\"},\"Error\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"message\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"},\"level\":{\"type\":\"string\"}}},\"ExtrinsicMethod\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\"},\"method\":{\"type\":\"string\"}},\"description\":\"Extrinsic method\"},\"Extrinsic\":{\"type\":\"object\",\"properties\":{\"method\":{\"$ref\":\"#/components/schemas/ExtrinsicMethod\"},\"signature\":{\"$ref\":\"#/components/schemas/Signature\"},\"nonce\":{\"type\":\"string\",\"description\":\"Account nonce, if applicable.\",\"format\":\"unsignedInteger\"},\"args\":{\"type\":\"object\",\"description\":\"Object of arguments keyed by parameter name. Note: if you are expecting an [`OpaqueCall`](https://substrate.dev/rustdocs/v2.0.0/pallet_multisig/type.OpaqueCall.html) and it is not decoded in the response (i.e. it is just a hex string), then Sidecar was not able to decode it and likely that it is not a valid call for the runtime.\"},\"tip\":{\"type\":\"string\",\"description\":\"Any tip added to the transaction.\",\"format\":\"unsignedInteger\"},\"hash\":{\"type\":\"string\",\"description\":\"The transaction's hash.\",\"format\":\"hex\"},\"info\":{\"$ref\":\"#/components/schemas/RuntimeDispatchInfo\"},\"era\":{\"$ref\":\"#/components/schemas/GenericExtrinsicEra\"},\"events\":{\"type\":\"array\",\"description\":\"An array of `SanitizedEvent`s that occurred during extrinsic execution.\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}},\"success\":{\"type\":\"boolean\",\"description\":\"Whether or not the extrinsic succeeded.\"},\"paysFee\":{\"type\":\"boolean\",\"description\":\"Whether the extrinsic requires a fee. Careful! This field relates to whether or not the extrinsic requires a fee if called as a transaction. Block authors could insert the extrinsic as an inherent in the block and not pay a fee. Always check that `paysFee` is `true` and that the extrinsic is signed when reconciling old blocks.\"}}},\"ExtrinsicIndex\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"extrinsic\":{\"$ref\":\"#/components/schemas/Extrinsic\"}},\"description\":\"A single extrinsic at a given block.\"},\"FundInfo\":{\"type\":\"object\",\"properties\":{\"depositor\":{\"type\":\"string\"},\"verifier\":{\"type\":\"string\"},\"deposit\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"raised\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"end\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"cap\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"lastConstribution\":{\"type\":\"string\",\"enum\":[\"preEnding\",\"ending\"]},\"firstPeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"lastPeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"trieIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"GenericExtrinsicEra\":{\"type\":\"object\",\"description\":\"The return value for era can either be `mortalEra`, or `immortalEra` and is represented as an enum in substrate. `immortalEra` meaning\\nthe transaction is valid forever. `mortalEra` consists of a tuple containing a period and phase.\\nex: `\\\"{\\\"mortalEra\\\": [\\\"64\\\", \\\"11\\\"]}\\\"`. The Period is the period of validity from the block hash found in the signing material.\\nThe Phase is the period that this transaction's lifetime begins (and, importantly,\\nimplies which block hash is included in the signature material).\\n\",\"properties\":{\"mortalEra\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Tuple of a Phase, and Period. Each item in the array will be a string formatted as an integer.\"},\"immortalEra\":{\"type\":\"string\",\"description\":\"Hardcoded constant '0x00'.\",\"format\":\"hex\"}},\"example\":\"{\\\"mortalEra\\\":[\\\"64\\\", \\\"11\\\"]}\"},\"LiquidityPools\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pools\":{\"type\":\"array\",\"description\":\"Array containing existent liquidity pool's token id.\",\"items\":{\"$ref\":\"#/components/schemas/LiquidityPool\"},\"example\":\"[{\\\"reserves\\\":[{\\\"parents\\\":\\\"1\\\",\\\"interior\\\":{\\\"here\\\": null}},{\\\"parents\\\":\\\"0\\\",\\\"interior\\\":{\\\"x2\\\":[{\\\"palletInstance\\\": \\\"50\\\"},{\\\"generalIndex\\\":\\\"2\\\"}]}}],\\\"lpToken\\\":{\\\"lpToken\\\":\\\"1\\\"} },{\\\"lpToken\\\":{\\\"lpToken\\\":\\\"0\\\"}}]\"}}},\"LiquidityPool\":{\"type\":\"object\",\"properties\":{\"reserves\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"parents\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"interior\":{\"type\":\"object\"}}}},\"lpToken\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Liquidity pool token ID.\"}}},\"NextAvailableId\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"id\":{\"type\":\"string\",\"description\":\"Next availabe liquidity pool's id.\",\"example\":\"4\"}}},\"NodeNetwork\":{\"type\":\"object\",\"properties\":{\"nodeRoles\":{\"$ref\":\"#/components/schemas/NodeRole\"},\"numPeers\":{\"type\":\"string\",\"description\":\"Number of peers the node is connected to.\",\"format\":\"unsignedInteger\"},\"isSyncing\":{\"type\":\"boolean\",\"description\":\"Whether or not the node is syncing. `False` indicates that the node is in sync.\"},\"shouldHavePeers\":{\"type\":\"boolean\",\"description\":\"Whether or not the node should be connected to peers. Might be false for local chains or when running without discovery.\"},\"localPeerId\":{\"type\":\"string\",\"description\":\"Local copy of the `PeerId`.\"},\"localListenAddresses\":{\"type\":\"array\",\"description\":\"Multiaddresses that the local node is listening on. The addresses include a trailing `/p2p/` with the local PeerId, and are thus suitable to be passed to `system_addReservedPeer` or as a bootnode address for example.\",\"items\":{\"type\":\"string\"}},\"peersInfo\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PeerInfo\"}}}},\"NodeRole\":{\"type\":\"string\",\"description\":\"Role of this node. (N.B. Sentry nodes are being deprecated.)\",\"enum\":[\"Full\",\"LightClient\",\"Authority\",\"Sentry\"]},\"NodeVersion\":{\"type\":\"object\",\"properties\":{\"clientVersion\":{\"type\":\"string\",\"description\":\"Node's binary version.\"},\"clientImplName\":{\"type\":\"string\",\"description\":\"Node's implementation name.\"},\"chain\":{\"type\":\"string\",\"description\":\"Node's chain name.\"}},\"description\":\"Version information of the node.\"},\"Nominations\":{\"type\":\"object\",\"properties\":{\"targets\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"The targets of the nomination.\"},\"submittedIn\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The era the nominations were submitted. (Except for initial nominations which are considered submitted at era 0.)\"},\"suppressed\":{\"type\":\"boolean\",\"description\":\"Whether the nominations have been suppressed.\"}}},\"OnboardingAs\":{\"type\":\"string\",\"enum\":[\"parachain\",\"parathread\"],\"description\":\"This property only shows up when `paraLifecycle=onboarding`. It\\ndescribes if a particular para is onboarding as a `parachain` or a\\n`parathread`.\\n\"},\"Operation\":{\"type\":\"object\",\"properties\":{\"phase\":{\"$ref\":\"#/components/schemas/OperationPhase\"},\"parentSpanId\":{\"$ref\":\"#/components/schemas/SpanId\"},\"primarySpanId\":{\"$ref\":\"#/components/schemas/SpanId\"},\"eventIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Index of the underlying trace event.\"},\"address\":{\"type\":\"string\",\"description\":\"Account this operation affects. Note - this will be an object like\\n`{ id: address }` if the network uses `MultiAddress`\\n\"},\"storage\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\"},\"item\":{\"type\":\"string\"},\"field1\":{\"type\":\"string\",\"description\":\"A field of the storage item. (i.e `system::Account::get(address).data`)\\n\"},\"field2\":{\"type\":\"string\",\"description\":\"A field of the struct described by field1 (i.e\\n`system::Account::get(address).data.free`)\\n\"}}},\"amount\":{\"$ref\":\"#/components/schemas/OperationAmount\"}}},\"OperationAmount\":{\"type\":\"object\",\"properties\":{\"values\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"currency\":{\"$ref\":\"#/components/schemas/OperationAmountCurrency\"}}},\"OperationAmountCurrency\":{\"type\":\"object\",\"properties\":{\"symbol\":{\"type\":\"string\",\"example\":\"KSM\"}}},\"OperationPhase\":{\"type\":\"object\",\"properties\":{\"variant\":{\"type\":\"string\",\"enum\":[\"onInitialize\",\"initialChecks\",\"applyExtrinsic\",\"onFinalize\",\"finalChecks\"],\"description\":\"Phase of block execution pipeline.\"},\"extrinsicIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"If phase variant is `applyExtrinsic` this will be the index of\\nthe extrinsic. Otherwise this field will not be present.\\n\"}}},\"PalletsAssetsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"assetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"assetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"}}},\"PalletConstants\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up constants.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletConstantsItemMetadata\"},\"description\":\"Array containing metadata for each constant entry of the pallet.\"}}},\"PalletConstantsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up constants.\",\"example\":\"14\"},\"errorItem\":{\"type\":\"string\",\"description\":\"Name of the constant item.\",\"example\":\"EnactmentPeriod\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletConstantsItemMetadata\"}}},\"PalletConstantsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"VotingPeriod\",\"description\":\"The constant item's name (which is the same as the constant item's ID).\"},\"type\":{\"type\":\"string\",\"example\":\"4\"},\"value\":{\"type\":\"string\",\"example\":\"0x00270600\",\"description\":\"The hex value of the constant\"},\"docs\":{\"type\":\"string\",\"example\":\"Information concerning any given constant.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"}},\"description\":\"Metadata of an constant item from a FRAME pallet.\"},\"PalletDispatchables\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up dispatchables.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItemMetadata\"},\"description\":\"Array containing metadata for each dispatchable entry of the pallet.\"}}},\"PalletDispatchablesItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up dispatchables.\",\"example\":\"14\"},\"dispatchableItem\":{\"type\":\"string\",\"description\":\"Name of the dispatchable item.\",\"example\":\"vote\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItemMetadata\"}}},\"PalletDispatchablesItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"propose\",\"description\":\"The dispatchable item's name (which is the same as the dispatchable item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the dispatchable item in the lists of pallet dispatchables.\"},\"docs\":{\"type\":\"string\",\"example\":\"Information concerning any given dispatchable.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of a dispatchable item from a FRAME pallet.\"},\"PalletErrors\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up errors.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletErrorsItemMetadata\"},\"description\":\"Array containing metadata for each error entry of the pallet.\"}}},\"PalletErrorsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up errors.\",\"example\":\"14\"},\"errorItem\":{\"type\":\"string\",\"description\":\"Name of the error item.\",\"example\":\"ValueLow\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletErrorsItemMetadata\"}}},\"PalletErrorsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"InsufficientFunds\",\"description\":\"The error item's name (which is the same as the error item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the error item in the lists of pallet errors\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given error.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of an error item from a FRAME pallet.\"},\"PalletEvents\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up events.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletEventsItemMetadata\"}}}},\"PalletEventsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up events.\",\"example\":\"14\"},\"eventItem\":{\"type\":\"string\",\"description\":\"Name of the events item.\",\"example\":\"Proposed\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletEventsItemMetadata\"}}},\"PalletEventsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"Tabled\",\"description\":\"The event item's name (which is the same as the event item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the error item in the lists of pallet events\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given event.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of an event item from a FRAME pallet.\"},\"PalletsForeignAssets\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletsForeignAssetsInfo\"},\"description\":\"Array containing the `AssetDetails` and `AssetMetadata` of every foreign asset.\"}}},\"PalletsForeignAssetsInfo\":{\"type\":\"object\",\"properties\":{\"foreignAssetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"foreignAssetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"}}},\"PalletsNominationPool\":{\"type\":\"object\",\"properties\":{\"bondedPool\":{\"$ref\":\"#/components/schemas/BondedPool\"},\"rewardPool\":{\"$ref\":\"#/components/schemas/RewardPool\"}}},\"PalletsNominationPoolsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"counterForBondedPools\":{\"type\":\"number\"},\"counterForMetadata\":{\"type\":\"number\"},\"counterForPoolMembers\":{\"type\":\"number\"},\"counterForReversePoolIdLookup\":{\"type\":\"number\"},\"counterForRewardPools\":{\"type\":\"number\"},\"counterForSubPoolsStorage\":{\"type\":\"number\"},\"lastPoolId\":{\"type\":\"number\"},\"maxPoolMembers\":{\"type\":\"number\"},\"maxPoolMembersPerPool\":{\"type\":\"number\",\"nullable\":true},\"maxPools\":{\"type\":\"number\"},\"minCreateBond\":{\"type\":\"number\"},\"minJoinBond\":{\"type\":\"number\"}}},\"PalletsPoolAssetsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"poolAssetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"poolAssetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"}}},\"PalletStorage\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up storage.\",\"example\":\"15\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletStorageItemMetadata\"},\"description\":\"Array containing metadata for each storage entry of the pallet.\"}}},\"PalletStorageItem\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up storage.\",\"example\":\"15\"},\"storageItem\":{\"type\":\"string\",\"description\":\"Name of the storage item.\",\"example\":\"referendumInfoOf\"},\"keys\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"N Storage keys passed in as the `keys` query param.\",\"example\":[\"0x00\",\"0x01\"]},\"value\":{\"type\":\"object\",\"description\":\"Value returned by this storage query.\",\"example\":{\"Ongoing\":{\"end\":\"1612800\",\"proposalHash\":\"0x7de70fc8be782076d0b5772be77153d172a5381c72dd56d3385e25f62abf507e\",\"threshold\":\"Supermajorityapproval\",\"delay\":\"403200\",\"tally\":{\"ayes\":\"41925212461400000\",\"nays\":\"214535586500000\",\"turnout\":\"34485320658000000\"}}}},\"metadata\":{\"$ref\":\"#/components/schemas/PalletStorageItemMetadata\"}}},\"PalletStorageItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"ReferendumInfoOf\",\"description\":\"The storage item's name (which is the same as the storage item's ID).\"},\"modifier\":{\"type\":\"string\",\"example\":\"Optional\"},\"type\":{\"$ref\":\"#/components/schemas/PalletStorageType\"},\"fallback\":{\"type\":\"string\",\"example\":\"0x00\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given referendum.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"}},\"description\":\"Metadata of a storage item from a FRAME pallet.\"},\"PalletStorageType\":{\"type\":\"object\",\"description\":\"This is going to be formatted to the type of StorageEntryTypeV14.\"},\"Para\":{\"type\":\"object\",\"properties\":{\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"paraLifecycle\":{\"$ref\":\"#/components/schemas/ParaLifecycle\"},\"onboardingAs\":{\"$ref\":\"#/components/schemas/OnboardingAs\"}}},\"Paras\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paras\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Para\"}}}},\"ParasAuctionsCurrent\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"beginEnd\":{\"type\":\"string\",\"format\":\"unisgnedInteger or $null\",\"description\":\"Fist block (number) of the auction ending phase. `null` if there is no ongoing\\nauction.\\n\"},\"finishEnd\":{\"type\":\"string\",\"format\":\"unisgnedInteger or $null\",\"description\":\"Last block (number) of the auction ending phase. `null` if there is no ongoing\\nauction.\\n\"},\"phase\":{\"type\":\"string\",\"enum\":[\"startPeriod\",\"endPeriod\",\"vrfDelay\"],\"description\":\"An auction can be in one of 4 phases. Both `startingPeriod` () and `endingPeriod` indicate\\nan ongoing auction, while `vrfDelay` lines up with the `AuctionStatus::VrfDelay` . Finally, a value of `null`\\nindicates there is no ongoing auction. Keep in mind the that the `finishEnd` field is the block number the\\n`endingPeriod` finishes and the `vrfDelay` period begins. The `vrfDelay` period is typically about an\\nepoch long and no crowdloan contributions are accepted.\\n\"},\"auctionIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The auction number. If there is no current auction this will be the number\\nof the previous auction.\\n\"},\"leasePeriods\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"Lease period indexes that may be bid on in this auction. `null` if\\nthere is no ongoing auction.\\n\"},\"winning\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/WinningData\"}}}},\"ParasCrowdloans\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"funds\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"fundInfo\":{\"$ref\":\"#/components/schemas/FundInfo\"}}},\"description\":\"List of paras that have crowdloans.\\n\"}}},\"ParasCrowdloanInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"fundInfo\":{\"$ref\":\"#/components/schemas/FundInfo\"},\"leasePeriods\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"Lease periods the crowdloan can bid on.\"}}},\"ParasHeaders\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paraId\":{\"type\":\"object\",\"description\":\"The key is not named `paraId` and will be the number of the parachain. There is technically no limit to the number of paraId keys there can be. \\n\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicsRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}}}}}},\"ParasLeasesCurrent\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"leasePeriodIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Current lease period index. This value may be null when the current block now, substracted by the leaseOffset is less then zero.\"},\"endOfLeasePeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Last block (number) of the current lease period. This value may be null when `leasePeriodIndex` is null.\"},\"currentLeaseHolders\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"List of `paraId`s that currently hold a lease.\"}}},\"ParasLeaseInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paraLifecycle\":{\"$ref\":\"#/components/schemas/ParaLifecycle\"},\"onboardingAs\":{\"$ref\":\"#/components/schemas/OnboardingAs\"},\"leases\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"leasePeriodIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"account\":{\"type\":\"string\"},\"deposit\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"description\":\"List of lease periods for which the `paraId` holds a lease along with\\nthe deposit held and the associated `accountId`.\\n\"}}},\"ParaLifecycle\":{\"type\":\"string\",\"enum\":[\"onboarding\",\"parathread\",\"parachain\",\"upgradingParathread\",\"downgradingParachain\",\"offboardingParathread\",\"offboardingParachain\"],\"description\":\"The possible states of a para, to take into account delayed lifecycle\\nchanges.\\n\"},\"Payouts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"validatorId\":{\"type\":\"string\",\"description\":\"AccountId of the validator the payout is coming from.\"},\"nominatorStakingPayout\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Payout for the reward destination associated with the accountId the query was made for.\"},\"claimed\":{\"type\":\"boolean\",\"description\":\"Whether or not the reward has been claimed.\"},\"totalValidatorRewardPoints\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Number of reward points earned by the validator.\"},\"validatorCommission\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The percentage of the total payout that the validator takes as commission, expressed as a Perbill.\"},\"totalValidatorExposure\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The sum of the validator's and its nominators' stake.\"},\"nominatorExposure\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The amount of stake the nominator has behind the validator.\"}},\"description\":\"Payout for a nominating _Stash_ address and information about the validator they were nominating.\"}},\"PeerInfo\":{\"type\":\"object\",\"properties\":{\"peerId\":{\"type\":\"string\",\"description\":\"Peer ID.\"},\"roles\":{\"type\":\"string\",\"description\":\"Roles the peer is running\"},\"protocolVersion\":{\"type\":\"string\",\"description\":\"Peer's protocol version.\",\"format\":\"unsignedInteger\"},\"bestHash\":{\"type\":\"string\",\"description\":\"Hash of the best block on the peer's canon chain.\",\"format\":\"hex\"},\"bestNumber\":{\"type\":\"string\",\"description\":\"Height of the best block on the peer's canon chain.\",\"format\":\"unsignedInteger\"}}},\"RewardPool\":{\"type\":\"object\",\"properties\":{\"lastRecordedRewardCounter\":{\"type\":\"number\"},\"lastRecordedTotalPayouts\":{\"type\":\"number\"},\"totalRewardsClaimed\":{\"type\":\"number\"}}},\"RuntimeCode\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"code\":{\"type\":\"string\",\"format\":\"hex\"}}},\"RuntimeDispatchInfo\":{\"type\":\"object\",\"properties\":{\"weight\":{\"$ref\":\"#/components/schemas/WeightsV2\",\"description\":\"Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.\"},\"class\":{\"type\":\"string\",\"description\":\"Extrinsic class.\",\"enum\":[\"Normal\",\"Operational\",\"Mandatory\"]},\"partialFee\":{\"type\":\"string\",\"description\":\"The _inclusion fee_ of a transaction, i.e. the minimum fee required for a transaction. Includes weight and encoded length fees, but does not have access to any signed extensions, e.g. the `tip`.\",\"format\":\"unsignedInteger\"},\"kind\":{\"type\":\"string\",\"description\":\"Information on the partialFee that is collected. Can be either `preDispatch`, `postDispatch` or `fromEvent`. `preDispatch` means the information used to collect the fee was from `payment_queryInfo`, `postDispatch` means the information used to calculate the fee was from finalized weights for the extrinsic, and `fromEvent` means that the partialFee was abstracted from the `TransactionPayment::TransactionPaidFee` event.\"}},\"description\":\"RuntimeDispatchInfo for the transaction. Includes the `partialFee`.\"},\"RuntimeSpec\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"authoringVersion\":{\"type\":\"string\",\"description\":\"The version of the authorship interface. An authoring node will not attempt to author blocks unless this is equal to its native runtime.\"},\"chainType\":{\"$ref\":\"#/components/schemas/ChainType\"},\"implVersion\":{\"type\":\"string\",\"description\":\"Version of the implementation specification. Non-consensus-breaking optimizations are about the only changes that could be made which would result in only the `impl_version` changing. The `impl_version` is set to 0 when `spec_version` is incremented.\"},\"specName\":{\"type\":\"string\",\"description\":\"Identifies the different Substrate runtimes.\"},\"specVersion\":{\"type\":\"string\",\"description\":\"Version of the runtime specification.\"},\"transactionVersion\":{\"type\":\"string\",\"description\":\"All existing dispatches are fully compatible when this number doesn't change. This number must change when an existing dispatchable (module ID, dispatch ID) is changed, either through an alteration in its user-level semantics, a parameter added/removed/changed, a dispatchable being removed, a module being removed, or a dispatchable/module changing its index.\"},\"properties\":{\"type\":\"object\",\"description\":\"Arbitrary properties defined in the chain spec.\"}},\"description\":\"Version information related to the runtime.\"},\"SanitizedEvent\":{\"type\":\"object\",\"properties\":{\"method\":{\"type\":\"string\"},\"data\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"Signature\":{\"type\":\"object\",\"properties\":{\"signature\":{\"type\":\"string\",\"format\":\"hex\"},\"signer\":{\"type\":\"string\",\"format\":\"ss58\"}},\"description\":\"Object with `signature` and `signer`, or `null` if unsigned.\"},\"SpanId\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"target\":{\"type\":\"string\"},\"id\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"StakingLedger\":{\"type\":\"object\",\"properties\":{\"stash\":{\"type\":\"string\",\"description\":\"The _Stash_ account whose balance is actually locked and at stake.\",\"format\":\"ss58\"},\"total\":{\"type\":\"string\",\"description\":\"The total amount of the _Stash_'s balance that we are currently accounting for. Simply `active + unlocking`.\",\"format\":\"unsignedInteger\"},\"active\":{\"type\":\"string\",\"description\":\"The total amount of the _Stash_'s balance that will be at stake in any forthcoming eras.\",\"format\":\"unsignedInteger\"},\"unlocking\":{\"type\":\"string\",\"description\":\"Any balance that is becoming free, which may eventually be transferred out of the _Stash_ (assuming it doesn't get slashed first). Represented as an array of objects, each with an `era` at which `value` will be unlocked.\",\"format\":\"unsignedInteger\"},\"claimedRewards\":{\"type\":\"array\",\"description\":\"Array of objects, each containing an `era` and its corresponding `status`, which represents the rewards status of the stakers backing a validator. Only updated for _validators._ This array is populated with values from `stakingLedger.legacyClaimedRewards` or `stakingLedger.claimedRewards`, as well as the `query.staking.claimedRewards` call, depending on whether the queried block is before or after the migration. For more details on the implementation and the migration, refer to the related PR and linked issue.\",\"items\":{\"type\":\"object\",\"properties\":{\"era\":{\"type\":\"string\",\"description\":\"The era for which we check the rewards status.\",\"format\":\"unsignedInteger\"},\"status\":{\"type\":\"string\",\"description\":\"The rewards status of the stakers backing a validator.\",\"enum\":[\"claimed\",\"unclaimed\",\"partially claimed\"]}}}}},\"description\":\"The staking ledger.\"},\"StakingProgress\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"activeEra\":{\"type\":\"string\",\"description\":\"`EraIndex` of the era being rewarded.\\n\",\"format\":\"unsignedInteger\"},\"forceEra\":{\"type\":\"string\",\"description\":\"Current status of era forcing.\",\"enum\":[\"ForceNone\",\"NotForcing\",\"ForceAlways\",\"ForceNew\"]},\"nextActiveEraEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the next active era will start. Not included in response when `forceEra.isForceNone`.\",\"format\":\"unsignedInteger\"},\"nextSessionEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the next session will start.\",\"format\":\"unsignedInteger\"},\"unappliedSlashes\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/UnappliedSlash\"},\"description\":\"Array of upcoming `UnappliedSlash` indexed by era.\"},\"electionStatus\":{\"$ref\":\"#/components/schemas/ElectionStatus\"},\"idealValidatorCount\":{\"type\":\"string\",\"description\":\"Upper bound of validator set size; considered the ideal size. Not included in response when `forceEra.isForceNone`.\",\"format\":\"unsignedInteger\"},\"validatorSet\":{\"type\":\"array\",\"description\":\"Stash account IDs of the validators for the current session. Not included in response when `forceEra.isForceNone`.\",\"items\":{\"type\":\"string\",\"format\":\"ss58\"}}}},\"StakingValidators\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"validators\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"address\":{\"type\":\"string\",\"description\":\"Address of validator.\"},\"status\":{\"type\":\"string\",\"description\":\"Status of individual validator (active/waiting).\"}}}},\"validatorsToBeChilled\":{\"description\":\"Validators that will not be participating in the next era.\",\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"address\":{\"type\":\"string\",\"description\":\"Address of validator.\"},\"status\":{\"type\":\"string\",\"description\":\"Status of individual validator (active/waiting).\"}}}}}},\"StorageEntryTypeV13\":{\"type\":\"object\",\"properties\":{\"hasher\":{\"type\":\"string\",\"description\":\"Returns a string deonting the storage hasher.\"},\"key\":{\"type\":\"string\",\"description\":\"Key of the queried pallet storageId.\"},\"value\":{\"type\":\"string\",\"description\":\"Value of the queried pallet storageId.\"},\"linked\":{\"type\":\"boolean\"}}},\"StorageEntryTypeV14\":{\"type\":\"object\",\"properties\":{\"hasher\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Returns a string denoting the storage hasher inside of an array.\"},\"key\":{\"type\":\"string\",\"description\":\"The SiLookupTypeId to identify the type.\"},\"value\":{\"type\":\"string\",\"description\":\"The SiLookupTypeId to identify the type.\"}}},\"TraceEvent\":{\"type\":\"object\",\"properties\":{\"data\":{\"type\":\"object\",\"properties\":{\"stringValues\":{\"$ref\":\"#/components/schemas/TraceEventDataStringValues\"}}},\"parentId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"target\":{\"type\":\"string\"}}},\"TraceEventDataStringValues\":{\"type\":\"object\",\"properties\":{\"key\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"The complete storage key for the entry.\"},\"method\":{\"type\":\"string\",\"description\":\"Normally one of Put or Get.\"},\"result\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"Hex scale encoded storage value.\"}},\"description\":\"Note these exact values will only be present for storage events.\"},\"TraceSpan\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"name\":{\"type\":\"string\"},\"parentId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"target\":{\"type\":\"string\"},\"wasm\":{\"type\":\"boolean\"}}},\"Transaction\":{\"type\":\"object\",\"properties\":{\"tx\":{\"type\":\"string\",\"format\":\"hex\"}}},\"TransactionDryRun\":{\"type\":\"object\",\"properties\":{\"resultType\":{\"type\":\"string\",\"enum\":[\"DispatchOutcome\",\"TransactionValidityError\"],\"description\":\"Either `DispatchOutcome` if the transaction is valid or `TransactionValidityError` if the result is invalid.\"},\"result\":{\"type\":\"string\",\"enum\":[\"Ok\",\"CannotLookup\",\"NoUnsignedValidator\",\"Custom(u8)\",\"Call\",\"Payment\",\"Future\",\"Stale\",\"BadProof\",\"AncientBirthBlock\",\"ExhaustsResources\",\"BadMandatory\",\"MandatoryDispatch\"],\"description\":\"If there was an error it will be the cause of the error. If the transaction executed correctly it will be `Ok: []`\"},\"validityErrorType\":{\"type\":\"string\",\"enum\":[\"InvalidTransaction\",\"UnknownTransaction\"]}},\"description\":\"References: - `UnknownTransaction`: https://crates.parity.io/sp_runtime/transaction_validity/enum.UnknownTransaction.html - `InvalidTransaction`: https://crates.parity.io/sp_runtime/transaction_validity/enum.InvalidTransaction.html\"},\"TransactionFailedToParse\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"error\":{\"type\":\"string\",\"description\":\"`Failed to parse a tx.`\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"cause\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"}},\"description\":\"Error message when Sidecar fails to parse the transaction.\"},\"TransactionFailedToSubmit\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"error\":{\"type\":\"string\",\"description\":\"Failed to submit transaction.\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"cause\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"}},\"description\":\"Error message when the node rejects the submitted transaction.\"},\"TransactionFailure\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/TransactionFailedToSubmit\"},{\"$ref\":\"#/components/schemas/TransactionFailedToParse\"}]},\"TransactionFeeEstimate\":{\"type\":\"object\",\"properties\":{\"weight\":{\"$ref\":\"#/components/schemas/WeightsV2\",\"description\":\"Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.\"},\"class\":{\"type\":\"string\",\"description\":\"Extrinsic class.\",\"enum\":[\"Normal\",\"Operational\",\"Mandatory\"]},\"partialFee\":{\"type\":\"string\",\"description\":\"Expected inclusion fee for the transaction. Note that the fee rate changes up to 30% in a 24 hour period and this will not be the exact fee.\",\"format\":\"unsignedInteger\"}},\"description\":\"Note: `partialFee` does not include any tips that you may add to increase a transaction's priority. See [compute_fee](https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee).\"},\"TransactionFeeEstimateFailure\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"at\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\"}}},\"error\":{\"type\":\"string\",\"description\":\"Error description.\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"block\":{\"type\":\"string\",\"description\":\"Block hash of the block fee estimation was attempted at.\"},\"cause\":{\"type\":\"string\",\"description\":\"Error message from the client.\"},\"stack\":{\"type\":\"string\"}}},\"TransactionMaterial\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"genesisHash\":{\"type\":\"string\",\"description\":\"The hash of the chain's genesis block.\",\"format\":\"blockHash\"},\"chainName\":{\"type\":\"string\",\"description\":\"The chain's name.\"},\"specName\":{\"type\":\"string\",\"description\":\"The chain's spec.\"},\"specVersion\":{\"type\":\"string\",\"description\":\"The spec version. Always increased in a runtime upgrade.\"},\"txVersion\":{\"type\":\"string\",\"description\":\"The transaction version. Common `txVersion` numbers indicate that the transaction encoding format and method indices are the same. Needed for decoding in an offline environment. Adding new transactions does not change `txVersion`.\"},\"metadata\":{\"type\":\"string\",\"description\":\"The chain's metadata. It will only be present when the metadata query param is used.\"}},\"description\":\"Note: `chainName`, `specName`, and `specVersion` are used to define a type registry with a set of signed extensions and types. For Polkadot and Kusama, `chainName` is not used in defining this registry, but in other Substrate-based chains that re-launch their network without changing the `specName`, the `chainName` would be needed to create the correct registry. Substrate Reference: - `RuntimeVersion`: https://crates.parity.io/sp_version/struct.RuntimeVersion.html - `SignedExtension`: https://crates.parity.io/sp_runtime/traits/trait.SignedExtension.html - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html\"},\"TransactionPool\":{\"type\":\"object\",\"properties\":{\"pool\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"H256 hash of the extrinsic.\"},\"encodedExtrinsic\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"Scale encoded extrinsic.\"},\"tip\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The tip included in the extrinsic. Only included if the query param `includeFee` is set to true.\"},\"priority\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Computed priority of an extrinsic. Only included if the query param `includeFee` is set to true.\"},\"partialFee\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Provided `partialFee` of an extrinsic. Only included if the query param `includeFee` is set to true.\"}}}}}},\"TransactionSuccess\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The hash of the encoded transaction.\"}}},\"UnappliedSlash\":{\"type\":\"object\",\"properties\":{\"validator\":{\"type\":\"string\",\"description\":\"Stash account ID of the offending validator.\",\"format\":\"ss58\"},\"own\":{\"type\":\"string\",\"description\":\"The amount the validator will be slashed.\",\"format\":\"unsignedInteger\"},\"others\":{\"type\":\"array\",\"description\":\"Array of tuples(`[accountId, amount]`) representing all the stashes of other slashed stakers and the amount they will be slashed.\",\"items\":{\"type\":\"string\",\"format\":\"tuple[ss58, unsignedInteger]\"}},\"reporters\":{\"type\":\"array\",\"description\":\"Array of account IDs of the reporters of the offense.\",\"items\":{\"type\":\"string\",\"format\":\"ss58\"}},\"payout\":{\"type\":\"string\",\"description\":\"Amount of bounty payout to reporters.\",\"format\":\"unsignedInteger\"}}},\"VestingSchedule\":{\"type\":\"object\",\"properties\":{\"locked\":{\"type\":\"string\",\"description\":\"Number of tokens locked at start.\",\"format\":\"unsignedInteger\"},\"perBlock\":{\"type\":\"string\",\"description\":\"Number of tokens that gets unlocked every block after `startingBlock`.\",\"format\":\"unsignedInteger\"},\"startingBlock\":{\"type\":\"string\",\"description\":\"Starting block for unlocking (vesting).\",\"format\":\"unsignedInteger\"}},\"description\":\"Vesting schedule for an account.\"},\"WeightsV2\":{\"type\":\"object\",\"properties\":{\"refTime\":{\"type\":\"string\",\"description\":\"The weight of computational time used based on some reference hardware.\"},\"proofSize\":{\"type\":\"string\",\"description\":\"The weight of storage space used by proof of validity.\"}}},\"WinningData\":{\"type\":\"object\",\"properties\":{\"bid\":{\"type\":\"object\",\"properties\":{\"accountId\":{\"type\":\"string\"},\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"amount\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"leaseSet\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"description\":\"A currently winning bid and the set of lease periods the bid is for. The\\n`amount` of the bid is per lease period. The `bid` property will be `null`\\nif no bid has been made for the corresponding `leaseSet`.\\n\"}},\"requestBodies\":{\"Transaction\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Transaction\"}}},\"required\":true},\"ContractMetadata\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ContractMetadata\"}}}}}}}\n\n//# sourceURL=webpack://sidecar-swagger-ui/./src/openapi-v1.yaml?"); +eval("module.exports = {\"openapi\":\"3.0.0\",\"info\":{\"title\":\"Substrate API Sidecar\",\"description\":\"Substrate API Sidecar is a REST service that makes it easy to interact with blockchain nodes built using Substrate's FRAME framework.\",\"contact\":{\"url\":\"https://github.com/paritytech/substrate-api-sidecar\"},\"license\":{\"name\":\"GPL-3.0-or-later\",\"url\":\"https://github.com/paritytech/substrate-api-sidecar/blob/master/LICENSE\"},\"version\":\"19.0.1\"},\"servers\":[{\"url\":\"https://polkadot-public-sidecar.parity-chains.parity.io/\",\"description\":\"Polkadot Parity public sidecar\"},{\"url\":\"https://kusama-public-sidecar.parity-chains.parity.io/\",\"description\":\"Kusama Parity public sidecar\"},{\"url\":\"https://polkadot-asset-hub-public-sidecar.parity-chains.parity.io/\",\"description\":\"Polkadot Asset Hub Parity public sidecar\"},{\"url\":\"https://kusama-asset-hub-public-sidecar.parity-chains.parity.io/\",\"description\":\"Kusama Asset Hub Parity public sidecar\"}],\"tags\":[{\"name\":\"accounts\"},{\"name\":\"blocks\"},{\"name\":\"contracts\"},{\"name\":\"node\",\"description\":\"node connected to sidecar\"},{\"name\":\"pallets\",\"description\":\"pallets employed in the runtime\"},{\"name\":\"runtime\"},{\"name\":\"transaction\"},{\"name\":\"paras\"},{\"name\":\"trace\"}],\"paths\":{\"/accounts/{accountId}/asset-balances\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an array of asset-balances for an account.\",\"description\":\"Returns information about an account's asset-balances. This is specific to the assets pallet for parachains. If no `assets` query parameter is provided, all asset-balances for the given account will be returned.\",\"operationId\":\"getAssetBalances\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset-balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a positive integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assets\",\"in\":\"query\",\"description\":\"An array of AssetId's to be queried. If not supplied, defaults to providing all asset balances associated with the `accountId` will be returned. The array query param format follows Express 4.x API. ex:`?assets[]=1&assets[]=2&assets[]=3`.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of assetId numbers represented as strings\",\"format\":\"Array of unsignedInteger's\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountAssetsBalances\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/asset-approvals\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an asset approval for an account.\",\"description\":\"Returns information about an account's asset approval transaction. It is required to pass in a delegate and an assetId as query parameters.\",\"operationId\":\"getAssetApprovals\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset approval info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assetId\",\"in\":\"query\",\"description\":\"The `assetId` associated with the asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"description\":\"An assetId represented as an unsignedInteger.\",\"format\":\"unsignedInteger\"}},{\"name\":\"delegate\",\"in\":\"query\",\"description\":\"The delegate's `accountId` associated with an asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountAssetsApproval\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/balance-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get balance information for an account.\",\"description\":\"Returns information about an account's balance. Replaces `/balance/{address}` from versions < v1.0.0.\",\"operationId\":\"getAccountBalanceInfo\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"token\",\"in\":\"query\",\"description\":\"Token to query the balance of. If not specified it will query the chains native token (e.g. DOT for Polkadot). Note: this is only relevant for chains that support multiple tokens through the ORML tokens pallet.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Token symbol\"}},{\"name\":\"denominated\",\"in\":\"query\",\"description\":\"When set to `true` it will denominate any balance's given atomic value using the chains given decimal value.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountBalanceInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/convert\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Convert a given AccountId to an SS58 address.\",\"description\":\"Returns the SS58 prefix, the network address format, the SS58 address, and the AccountId that was given as input parameter, the scheme that was used and if it is a public key or not (boolean).\",\"operationId\":\"accountConvert\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"AccountId or Public Key (hex).\",\"required\":true,\"schema\":{\"format\":\"AccountId or Hex\",\"type\":\"string\"}},{\"name\":\"scheme\",\"in\":\"query\",\"description\":\"The cryptographic scheme to be used in order to convert the AccountId to an SS58 address. It can take one of three values [sr25519, ed25519, ecdsa]. The default scheme that is used is `sr25519` (if it is not set in the query parameter).\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"string\",\"default\":\"sr25519\"}},{\"name\":\"prefix\",\"in\":\"query\",\"description\":\"The address prefix which can be one of the values found in the SS58-registry.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"number\",\"default\":42}},{\"name\":\"publicKey\",\"in\":\"query\",\"description\":\"Defines if the given value in the path parameter is a Public Key (hex) or not (hence AccountId).\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successfully converted the AccountId and retrieved the address info.\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountConvert\"}}}},\"400\":{\"description\":\"Invalid AccountId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"AccountId not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/pool-asset-balances\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an array of pool-asset-balances for an account.\",\"description\":\"Returns information about an account's pool-asset-balances. This is specific to the pool assets pallet for parachains. If no `assets` query parameter is provided, all pool-asset-balances for the given account will be returned.\",\"operationId\":\"getPoolAssetBalances\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query pool-asset-balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a positive integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assets\",\"in\":\"query\",\"description\":\"An array of AssetId's to be queried. If not supplied, defaults to providing all asset balances associated with the `accountId` will be returned. The array query param format follows Express 4.x API. ex:`?assets[]=1&assets[]=2&assets[]=3`.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"A list of assetId numbers represented as strings\",\"format\":\"Array of unsignedInteger's\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountPoolAssetsBalances\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/pool-asset-approvals\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an asset approval for an account.\",\"description\":\"Returns information about an account's asset approval transaction. It is required to pass in a delegate and an assetId as query parameters.\",\"operationId\":\"getPoolAssetApprovals\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset approval info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"assetId\",\"in\":\"query\",\"description\":\"The `assetId` associated with the asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"description\":\"An assetId represented as an unsignedInteger.\",\"format\":\"unsignedInteger\"}},{\"name\":\"delegate\",\"in\":\"query\",\"description\":\"The delegate's `accountId` associated with an asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountAssetsApproval\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/proxy-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get proxy account information.\",\"description\":\"Returns information about a proxy account. This will include delegated accounts and deposits held.\",\"operationId\":\"getProxyInfo\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query proxy info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountProxyInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/staking-info\":{\"get\":{\"tags\":[\"staking\"],\"summary\":\"Get staking information for a _Stash_ account.\",\"description\":\"Returns information about a _Stash_ account's staking activity. Replaces `/staking/{address}` from versions < v1.0.0.\",\"operationId\":\"getStakingSummaryByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account. Must be a _Stash_ account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the staking info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountStakingInfo\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/staking-payouts\":{\"get\":{\"tags\":[\"staking\"],\"summary\":\"Get payout information for a _Stash_ account.\",\"description\":\"Returns payout information for the last specified eras. If specifying both the depth and era query params, this endpoint will return information for (era - depth) through era. (i.e. if depth=5 and era=20 information will be returned for eras 16 through 20). N.B. You cannot query eras less then `current_era - HISTORY_DEPTH`. N.B. The `nominator*` fields correspond to the address being queried, even if it is a validator's _Stash_ address. This is because a validator is technically nominating itself.\",\"operationId\":\"getStakingPayoutsByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account. Must be a _Stash_ account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query staking payouts.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"depth\",\"in\":\"query\",\"description\":\"The number of eras to query for payouts of. Must be less than or equal to `HISTORY_DEPTH`. In cases where `era - (depth -1)` is less than 0, the first era queried will be 0.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"default\":1}},{\"name\":\"era\",\"in\":\"query\",\"description\":\"The era to query at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"default\":\"`active_era - 1`\"}},{\"name\":\"unclaimedOnly\",\"in\":\"query\",\"description\":\"Only return unclaimed rewards.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountStakingPayouts\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/vesting-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get vesting information for an account.\",\"description\":\"Returns the vesting schedule for an account. Replaces `/vesting/{address}` from versions < v1.0.0.\",\"operationId\":\"getVestingSummaryByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the vesting info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountVestingInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{address}/validate\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Validate a given address.\",\"description\":\"Returns whether the given address is valid ss58 format, the ss58 prefix if the address has one, the network address format, and what the account ID is for this address.\",\"operationId\":\"getValidationByAccountId\",\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 or Hex address of the account.\",\"required\":true,\"schema\":{\"format\":\"SS58 or Hex\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successfully retrieved address info\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountValidation\"}}}}}}},\"/blocks\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a range of blocks by their height.\",\"description\":\"Given a range query parameter return an array of all the blocks within that range.\",\"operationId\":\"getBlock\",\"parameters\":[{\"name\":\"range\",\"in\":\"query\",\"description\":\"A range of integers. There is a max limit of 500 blocks per request.\",\"required\":true,\"example\":\"0-499\",\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Blocks\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a block by its height or hash.\",\"description\":\"Returns a single block. BlockId can either be a block hash or a block height. Replaces `/block/{number}` from versions < v1.0.0.\",\"operationId\":\"getBlockById\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"finalizedKey\",\"in\":\"query\",\"description\":\"When set to false, this will override the chain-config, and omit the finalized key in the response. This can increase performance slightly by avoiding an additional RPC call to the node.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"decodedXcmMsgs\",\"in\":\"query\",\"description\":\"When set to `true`, this will show the decoded XCM messages within the extrinsics of the requested block.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"paraId\",\"in\":\"query\",\"description\":\"When it is set, this will return only the decoded XCM messages for the specified origin Parachain Id (originParaId). To activate this functionality, ensure that the `decodedXcmMsgs` parameter is set to true.\",\"required\":false,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockWithDecodedXcmMsgs\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/header\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a block's header by its height or hash.\",\"description\":\"Returns a single block's header. BlockId can either be a block hash or a block height.\",\"operationId\":\"getBlockHeaderById\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockHeader\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/extrinsics/{extrinsicIndex}\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get an extrinsic by its extrinsicIndex and block height or hash. The pair blockId, extrinsicIndex is sometimes referred to as a Timepoint.\",\"description\":\"Returns a single extrinsic.\",\"operationId\":\"getExtrinsicByTimepoint\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"extrinsicIndex\",\"in\":\"path\",\"description\":\"The extrinsic's index within the block's body.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ExtrinsicIndex\"}}}},\"400\":{\"description\":\"Requested `extrinsicIndex` does not exist\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/head\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get the most recently finalized block.\",\"description\":\"Returns the most recently finalized block. Replaces `/block` from versions < v1.0.0.\",\"operationId\":\"getHeadBlock\",\"parameters\":[{\"name\":\"finalized\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to get the finalized head. If it is not set the value defaults to true. When set to false it will attempt to get the newest known block, which may not be finalized.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"decodedXcmMsgs\",\"in\":\"query\",\"description\":\"When set to `true`, this will show the decoded XCM messages within the extrinsics of the requested block.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"paraId\",\"in\":\"query\",\"description\":\"When it is set, this will return only the decoded XCM messages for the specified origin Parachain Id (originParaId). To activate this functionality, ensure that the `decodedXcmMsgs` parameter is set to true.\",\"required\":false,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockWithDecodedXcmMsgs\"}}}}}}},\"/blocks/head/header\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get information about the header of the most recent finalized block.\",\"description\":\"Returns the most recently finalized block's header.\",\"operationId\":\"getLatestBlockHeader\",\"parameters\":[{\"name\":\"finalized\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to get the finalized head. If it is not set the value defaults to true. When set to false it will attempt to get the newest known block, which may not be finalized.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockHeader\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/extrinsics-raw\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a blocks header & its extrinsics as hex values.\",\"description\":\"Returns a block & its extrinsics as hex values. BlockId can either be a block hash or a block height.\",\"operationId\":\"getBlockRawExtrinsics\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockRaw\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/contracts/ink/{address}/query\":{\"post\":{\"tags\":[\"contracts\"],\"summary\":\"Query an !Ink contract with a given message (method).\",\"description\":\"Will return a valid or invalid result.\",\"operationId\":\"callContractQuery\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/ContractMetadata\"},\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 or Hex address of the account associated with the contract.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"method\",\"in\":\"query\",\"description\":\"The message or method used to query.\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"get\"}},{\"name\":\"gasLimit\",\"in\":\"query\",\"description\":\"The gas limit to be used as an option for the queried message.\",\"required\":false,\"schema\":{\"default\":-1,\"type\":\"number\"}},{\"name\":\"storageDepositLimit\",\"in\":\"query\",\"description\":\"The storage deposit limit to be used as an option for the queried message.\",\"required\":false,\"schema\":{\"default\":null,\"type\":\"number\"}},{\"name\":\"args\",\"in\":\"query\",\"description\":\"Abi params used as args specified in the metadata to be passed into a query. The format to use this query param is ?args[]=1&args[]=2&args[]=3.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of Abi params.\"}}],\"responses\":{\"200\":{\"description\":\"succesful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ContractsInkQuery\"}}}},\"400\":{\"description\":\"Invalid Method\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/node/network\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get information about the Substrate node's activity in the peer-to-peer network.\",\"description\":\"Returns network related information of the node.\",\"operationId\":\"getNodeNetworking\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NodeNetwork\"}}}}}}},\"/node/transaction-pool\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get pending extrinsics from the Substrate node.\",\"description\":\"Returns the extrinsics that the node knows of that have not been included in a block.\",\"operationId\":\"getNodeTransactionPool\",\"parameters\":[{\"name\":\"includeFee\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to include tips, partialFee, and priority in each extrinsic.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionPool\"}}}}}}},\"/node/version\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get information about the Substrates node's implementation and versioning.\",\"description\":\"Returns versioning information of the node.\",\"operationId\":\"getNodeVersion\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NodeVersion\"}}}}}}},\"/transaction\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Submit a transaction to the node's transaction pool.\",\"description\":\"Accepts a valid signed extrinsic. Replaces `/tx` from versions < v1.0.0.\",\"operationId\":\"submitTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionSuccess\"}}}},\"400\":{\"description\":\"failed to parse or submit transaction\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFailure\"}}}}}}},\"/transaction/dry-run\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Dry run an extrinsic.\",\"description\":\"Use the dryrun call to practice submission of a transaction.\",\"operationId\":\"dryrunTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionDryRun\"}}}},\"400\":{\"description\":\"failed to dry-run transaction\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFailure\"}}}}}}},\"/transaction/fee-estimate\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Receive a fee estimate for a transaction.\",\"description\":\"Send a serialized transaction and receive back a naive fee estimate. Note: `partialFee` does not include any tips that you may add to increase a transaction's priority. See the reference on `compute_fee`. Replaces `/tx/fee-estimate` from versions < v1.0.0. Substrate Reference: - `RuntimeDispatchInfo`: https://crates.parity.io/pallet_transaction_payment_rpc_runtime_api/struct.RuntimeDispatchInfo.html - `query_info`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.query_info - `compute_fee`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee\",\"operationId\":\"feeEstimateTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFeeEstimate\"}}}},\"400\":{\"description\":\"fee estimation failure\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFeeEstimateFailure\"}}}}}}},\"/transaction/material\":{\"get\":{\"tags\":[\"transaction\"],\"summary\":\"Get all the network information needed to construct a transaction offline.\",\"description\":\"Returns the material that is universal to constructing any signed transaction offline. Replaces `/tx/artifacts` from versions < v1.0.0.\",\"operationId\":\"getTransactionMaterial\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the transaction construction material.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"noMeta\",\"in\":\"query\",\"description\":\"DEPRECATED! This is no longer supported\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Specifies the format of the metadata to be returned. Accepted values are 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata. When `metadata` is not inputted, the `metadata` field will be absent.\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionMaterial\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/transaction/material/{metadataVersion}\":{\"get\":{\"tags\":[\"transaction\"],\"summary\":\"Get all the network information needed to construct a transaction offline and the version of metadata specified in `metadataVersion`.\",\"description\":\"Returns all the materials necessary for constructing any signed transactions offline.\",\"operationId\":\"getTransactionMaterialwithVersionedMetadata\",\"parameters\":[{\"name\":\"metadataVersion\",\"in\":\"path\",\"description\":\"The version of metadata. The input is expected in a `vX` format, where `X` represents the version number (e.g. `v14`, `v15`). By default, metadata is outputted in 'json' format, unless the `metadata` query parameter is provided, in which case it can be either in 'json' or 'scale' format.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the transaction construction material.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Specifies the format of the metadata to be returned. Accepted values are 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata.\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionMaterial\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/assets/{assetId}/asset-info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with an asset.\",\"description\":\"Returns information associated with an asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getAssetById\",\"parameters\":[{\"name\":\"assetId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of an asset.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the assetInfo.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsAssetsInfo\"}}}}}}},\"/pallets/asset-conversion/liquidity-pools\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information related to existing liquidity pools.\",\"description\":\"Returns a list of the existing liquidity pools and its corresponding tokens at a given block height. If no block is specified, it returns the latest list available.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the liquidity pools information.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LiquidityPools\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/asset-conversion/next-available-id\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the next available liquidity pool id.\",\"description\":\"Returns the next available liquidity pool's id at a given block height. If no block is specified, it returns the latest list available.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the next liquidity pool's id.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NextAvailableId\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/foreign-assets\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with foreign assets.\",\"description\":\"Returns information associated with every foreign asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getForeignAssets\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the foreign assets.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"An array of foreign assets.\",\"$ref\":\"#/components/schemas/PalletsForeignAssets\"}}}}}}},\"/pallets/nomination-pools/info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information associated with nomination pools.\",\"description\":\"Returns information and metadata for nomination pools including pool counters and limits.\",\"operationId\":\"getNominationPoolInfo\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the nomination pool info.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsNominationPoolsInfo\"}}}}}}},\"/pallets/nomination-pools/{poolId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with a nomination pool.\",\"description\":\"Returns information associated with a nomination pool which includes the nomination pools' `bondedPool`, `rewardPool` and `metadata`.\",\"operationId\":\"getNominationPoolById\",\"parameters\":[{\"name\":\"poolId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of a nomination pool.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the nomination pool.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsNominationPool\"}}}}}}},\"/pallets/{palletId}/consts\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of constants for a pallet.\",\"description\":\"Returns a list of const item metadata for constant items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read constant metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the const items instead of every constant's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's constant items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of constantItemIds.\",\"$ref\":\"#/components/schemas/PalletConstants\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/consts/{constantItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a constant item.\",\"description\":\"Returns the value stored under the constantItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read constant metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"constantItemId\",\"in\":\"path\",\"description\":\"Id of the const item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the const item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the const items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletConstantsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/dispatchables\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of dispatchables for a pallet.\",\"description\":\"Returns a list of dispatchable item metadata for distpachable items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read dispatchable metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the dispatchable items instead of every dispatchable's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of dispatchableItemIds.\",\"$ref\":\"#/components/schemas/PalletDispatchables\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/dispatchables/{dispatchableItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a dispatchable item.\",\"description\":\"Returns the value stored under the dispatchableItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read dispatchable metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"dispatchableItemId\",\"in\":\"path\",\"description\":\"Id of the dispatchable item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the dispatchable items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/errors\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of errors for a pallet.\",\"description\":\"Returns a list of error item metadata for error items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read error metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the error items instead of every error's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's error items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of errorItemIds.\",\"$ref\":\"#/components/schemas/PalletErrors\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/errors/{errorItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of an error item.\",\"description\":\"Returns the value stored under the errorItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read error metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"errorItemId\",\"in\":\"path\",\"description\":\"Id of the error item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the error item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the error items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletErrorsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/events\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of events for a pallet.\",\"description\":\"Returns a list of event item metadata for event items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read event metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the event items instead of every event's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's event items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of eventItemIds.\",\"$ref\":\"#/components/schemas/PalletEvents\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/events/{eventItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of an event item.\",\"description\":\"Returns the value stored under the eventItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read event metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventItemId\",\"in\":\"path\",\"description\":\"Id of the event item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the event item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the event items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletEventsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/runtime/metadata\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the runtime metadata in decoded, JSON form.\",\"description\":\"Returns the runtime metadata as a JSON object. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\",\"description\":\"Response is dependent on the runtime metadata contents.\"}}}}}}},\"/runtime/metadata/{metadataVersion}\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the requested version of runtime metadata in decoded, JSON form.\",\"description\":\"Returns the requested version of runtime metadata as a JSON object. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"metadataVersion\",\"in\":\"path\",\"description\":\"The version of metadata. The input is expected in a `vX` format, where `X` represents the version number (e.g. `v14`, `v15`).\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\",\"description\":\"Response is dependent on the runtime metadata contents.\"}}}}}}},\"/runtime/metadata/versions\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the available versions of runtime metadata.\",\"description\":\"Returns the available versions of runtime metadata. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata versions at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array with the available metadata versions.\"}}}}}}},\"/runtime/code\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the runtime wasm blob.\",\"description\":\"Returns the runtime Wasm blob in hex format.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the runtime wasm blob at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeCode\"}}}}}}},\"/runtime/spec\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get version information of the Substrate runtime.\",\"description\":\"Returns version information related to the runtime.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve runtime version information at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeSpec\"}}}}}}},\"/pallets/{palletId}/storage\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of storage items for a pallet.\",\"description\":\"Returns a list of storage item metadata for storage items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to query the storage of. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the storage items instead of all of each storage item's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's storage items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of storageItemIds.\",\"$ref\":\"#/components/schemas/PalletStorage\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/storage/{storageItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a storage item.\",\"description\":\"Returns the value stored under the storageItemId. If it is a map, query param key1 is required. If the storage item is double map query params key1 and key2 are required.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to query the storage of. Note: pallet name aligns with pallet name as specified in runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"storageItemId\",\"in\":\"path\",\"description\":\"Id of the storage item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"keys\",\"in\":\"query\",\"description\":\"Set of N keys used for querying a storage map. It should be queried using the following format - ?keys[]=key1&keys[]=key2. Order matters, as it will determine the order the keys are passed into the storage calls.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of storage keys.\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the storage item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the storage items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletStorageItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/pool-assets/{assetId}/asset-info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with a pool asset.\",\"description\":\"Returns information associated with a pool asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getPoolAssetById\",\"parameters\":[{\"name\":\"assetId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of a pool asset.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the assetInfo.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsPoolAssetsInfo\"}}}}}}},\"/pallets/staking/progress\":{\"get\":{\"tags\":[\"staking\",\"pallets\"],\"summary\":\"Get progress on the general Staking pallet system.\",\"description\":\"Returns information on the progress of key components of the staking system and estimates of future points of interest. Replaces `/staking-info` from versions < v1.0.0.\",\"operationId\":\"getStakingProgress\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a staking progress report.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/StakingProgress\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/staking/validators\":{\"get\":{\"tags\":[\"staking\",\"pallets\"],\"summary\":\"Get all validators (active/waiting) of a specific chain.\",\"description\":\"Returns a list of all validators addresses and their corresponding status which can be either active or waiting. It will also return a list of active validators that will not be part of the next era for staking. They will be under the key \\\"validatorsToBeChilled\\\". It's important to note, that addresses can be present in both the \\\"validators\\\" key, and \\\"validatorsToBeChilled\\\".\",\"operationId\":\"getStakingValidators\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the list of validators.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/StakingValidators\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/paras\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] List all registered paras (parathreads & parachains).\\n\",\"description\":\"Returns all registered parachains and parathreads with lifecycle info.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve paras list at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Paras\"}}}}}}},\"/paras/leases/current\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get general information about the current lease period.\\n\",\"description\":\"Returns an overview of the current lease period, including lease holders.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve current lease period info at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"currentLeaseHolders\",\"in\":\"query\",\"description\":\"Wether or not to include the `currentLeaseHolders` property. Inclusion\\nof the property will likely result in a larger payload and increased\\nresponse time.\\n\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasLeasesCurrent\"}}}}}}},\"/paras/auctions/current\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the status of the current auction.\\n\",\"description\":\"Returns an overview of the current auction. There is only one auction\\nat a time. If there is no auction most fields will be `null`. If the current\\nauction phase is in `vrfDelay` and you are looking to retrieve the latest winning\\nbids, it is advised to query one block before `finishEnd` in the `endingPeriod` phase\\nfor that auction as there technically are no winners during the `vrfDelay` and thus\\nthe field is `null`.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve auction progress at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasAuctionsCurrent\"}}}}}}},\"/paras/crowdloans\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] List all stored crowdloans.\\n\",\"description\":\"Returns a list of all the crowdloans and their associated paraIds.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the list of paraIds that have crowdloans at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasCrowdloans\"}}}}}}},\"/paras/{paraId}/crowdloan-info\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get crowdloan information for a `paraId`.\\n\",\"description\":\"Returns crowdloan's `fundInfo` and the set of `leasePeriods` the crowdloan`\\ncovers.\\n\",\"parameters\":[{\"name\":\"paraId\",\"in\":\"path\",\"description\":\"paraId to query the crowdloan information of.\",\"required\":true,\"schema\":{\"type\":\"number\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve info at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasCrowdloanInfo\"}}}}}}},\"/paras/{paraId}/lease-info\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get current and future leases as well as the lifecycle stage for a given `paraId`.\\n\",\"description\":\"Returns a list of leases that belong to the `paraId` as well as the\\n`paraId`'s current lifecycle stage.\\n\",\"parameters\":[{\"name\":\"paraId\",\"in\":\"path\",\"description\":\"paraId to query the crowdloan information of.\",\"required\":true,\"schema\":{\"type\":\"number\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's leases at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasLeaseInfo\"}}}}}}},\"/paras/head/included-candidates\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the heads of the included (backed and considered available) parachain candidates at the\\nspecified block height or at the most recent finalized head otherwise.\\n\",\"description\":\"Returns an object with all the parachain id's as keys, and their headers as values.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's heads at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasHeaders\"}}}}}}},\"/paras/head/backed-candidates\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the heads of the backed parachain candidates at the specified block height or at the most recent finalized head otherwise.\\n\",\"description\":\"Returns an object with all the parachain id's as keys, and their headers as values.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's heads at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasHeaders\"}}}}}}},\"/experimental/blocks/head/traces\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get traces for the most\\nrecently finalized block.\\n\",\"description\":\"Returns traces (spans and events) of the most recently finalized block from\\nRPC `state_straceBlock`. Consult the [RPC docs](https://github.com/paritytech/substrate/blob/aba876001651506f85c14baf26e006b36092e1a0/client/rpc-api/src/state/mod.rs#L140)\\nfor conceptual info.\\n\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTrace\"}}}}}}},\"/experimental/blocks/{blockId}/traces\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get traces for the given `blockId`.\\n\",\"description\":\"Returns traces (spans and events) of the specified block from\\nRPC `state_straceBlock`. Consult the [RPC docs](https://github.com/paritytech/substrate/blob/aba876001651506f85c14baf26e006b36092e1a0/client/rpc-api/src/state/mod.rs#L140) for conceptual info.\\n\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTrace\"}}}}}}},\"/experimental/blocks/head/traces/operations\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get the operations from the\\nmost recently finalized block.\\n\",\"description\":\"Returns the operations from the most recently finalized block. Operations\\nrepresent one side of a balance change. For example if Alice transfers\\n100unit to Bob there will be two operations; 1) Alice - 100 2) Bob + 100.\\n\\nGiven account A and A's balance at block k0 (Ak0), if we sum all the\\noperations for A from block k1 through kn against Ak0, we will end up\\nwith A's balance at block kn (Akn). Thus, operations can be used to audit\\nthat balances change as expected.\\n\\nThis is useful for Substrate based chains because the advanced business\\nlogic can make it difficult to ensure auditable balance reconciliation\\nbased purely on events. Instead of using events one can use the\\noperations given from this endpoint.\\n\\nNote - each operation corresponds to a delta of a single field of the\\n`system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`\\nand `fee_frozen`).\\nNote - operations are assigned a block execution phase (and extrinsic index\\nfor those in the apply extrinsic phase) based on an \\\"action group\\\". For\\nexample all the operations for 1 extrinsic will be in the same action group.\\nThe action groups can optionally be fetched with the `action` query param\\nfor closer auditing.\\nNote - There are no 0 value operations (e.g. a transfer of 0, or a\\ntransfer to itself)\\n\\nTo learn more about operation and action group creation please consult\\n[this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)\\n\",\"parameters\":[{\"name\":\"actions\",\"in\":\"query\",\"description\":\"Whether or not to include action groups.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTraceOperations\"}}}}}}},\"/experimental/blocks/{blockId}/traces/operations\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get the operations from the\\nspecified block.\\n\",\"description\":\"Returns the operations from the most recently finalized block. Operations\\nrepresent one side of a balance change. For example if Alice transfers\\n100unit to Bob there will be two operations; 1) Alice - 100 2) Bob + 100.\\n\\nGiven account A and A's balance at block k0 (Ak0), if we sum all the\\noperations for A from block k1 through kn against Ak0, we will end up\\nwith A's balance at block kn (Akn). Thus, operations can be used to audit\\nthat balances change as expected.\\n\\nThis is useful for Substrate based chains because the advanced business\\nlogic can make it difficult to ensure auditable balance reconciliation\\nbased purely on events. Instead of using events one can use the\\noperations given from this endpoint.\\n\\nNote - each operation corresponds to a delta of a single field of the\\n`system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`\\nand `fee_frozen`).\\nNote - operations are assigned a block execution phase (and extrinsic index\\nfor those in the apply extrinsic phase) based on an \\\"action group\\\". For\\nexample all the operations for 1 extrinsic will be in the same action group.\\nThe action groups can optionally be fetched with the `action` query param\\nfor closer auditing.\\nNote - There are no 0 value operations (e.g. a transfer of 0, or a\\ntransfer to itself)\\n\\nTo learn more about operation and action group creation please consult\\n[this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)\\n\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"actions\",\"in\":\"query\",\"description\":\"Whether or not to include action groups.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTraceOperations\"}}}}}}}},\"components\":{\"schemas\":{\"AccountAssetsApproval\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"amount\":{\"type\":\"string\",\"description\":\"The amount of funds approved for the balance transfer from the owner to some delegated target.\",\"format\":\"unsignedInteger\"},\"deposit\":{\"type\":\"string\",\"description\":\"The amount reserved on the owner's account to hold this item in storage.\",\"format\":\"unsignedInteger\"}}},\"AccountAssetsBalances\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"assets\":{\"type\":\"array\",\"description\":\"An array of queried assets.\",\"items\":{\"$ref\":\"#/components/schemas/AssetsBalance\"}}}},\"AccountBalanceInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"nonce\":{\"type\":\"string\",\"description\":\"Account nonce.\",\"format\":\"unsignedInteger\"},\"tokenSymbol\":{\"type\":\"string\",\"description\":\"Token symbol of the balances displayed in this response.\",\"format\":\"unsignedInteger\"},\"free\":{\"type\":\"string\",\"description\":\"Free balance of the account. Not equivalent to _spendable_ balance. This is the only balance that matters in terms of most operations on tokens.\",\"format\":\"unsignedInteger\"},\"reserved\":{\"type\":\"string\",\"description\":\"Reserved balance of the account.\",\"format\":\"unsignedInteger\"},\"miscFrozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when withdrawing for anything except transaction fee payment. Note, that some runtimes may not have support for miscFrozen and if so the following will be returned `miscFrozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"feeFrozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when withdrawing specifically for transaction fee payment. Note, that some runtimes may not have support for feeFrozen and if so the following will be returned `feeFrozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"frozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when reducing the balance, except for actions where the account owner cannot reasonably benefit from the balance reduction, such as slashing. Note, that some runtimes may not have support for frozen and if so the following will be returned `frozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"locks\":{\"type\":\"array\",\"description\":\"Array of locks on a balance. There can be many of these on an account and they \\\"overlap\\\", so the same balance is frozen by multiple locks\",\"items\":{\"$ref\":\"#/components/schemas/BalanceLock\"}}}},\"AccountConvert\":{\"type\":\"object\",\"properties\":{\"ss58Prefix\":{\"type\":\"string\",\"description\":\"SS58 prefix based on which the account ID or Public Key (hex) is converted to an SS58 address.\",\"format\":\"unsignedInteger\"},\"network\":{\"type\":\"string\",\"description\":\"The network based on which the returned address is encoded. It depends on the prefix that was given as a query param.\"},\"address\":{\"type\":\"string\",\"description\":\"The returned SS58 address which is the result of the conversion of the account ID or Public Key (hex).\"},\"accountId\":{\"type\":\"string\",\"description\":\"The given account ID or Public Key (hex) that is converted to an SS58 address.\"},\"scheme\":{\"type\":\"string\",\"description\":\"The cryptographic scheme/algorithm used to encode the given account ID or Public Key (hex).\"},\"publicKey\":{\"type\":\"boolean\",\"description\":\"Whether the given path parameter is a Public Key (hex) or not.\"}}},\"AccountPoolAssetsBalances\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"poolAssets\":{\"type\":\"array\",\"description\":\"An array of queried assets.\",\"items\":{\"$ref\":\"#/components/schemas/AssetsBalance\"}}}},\"AccountProxyInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"delegatedAccounts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"delegate\":{\"type\":\"string\",\"description\":\"Delegate address for the given proxy.\",\"format\":\"ss58\"},\"delay\":{\"type\":\"string\",\"description\":\"The announcement period required of the initial proxy. Will generally be zero.\",\"format\":\"unsignedInteger\"},\"proxyType\":{\"type\":\"string\",\"description\":\"The permissions allowed for this proxy account.\"}}}},\"depositHeld\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The held deposit.\"}}},\"AccountStakingInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"rewardDestination\":{\"type\":\"string\",\"description\":\"The account to which rewards will be paid. Can be 'Staked' (Stash account, adding to the amount at stake), 'Stash' (Stash address, not adding to the amount at stake), or 'Controller' (Controller address).\",\"format\":\"ss58\",\"enum\":[\"Staked\",\"Stash\",\"Controller\"]},\"controller\":{\"type\":\"string\",\"description\":\"Controller address for the given Stash.\",\"format\":\"ss58\"},\"numSlashingSpans\":{\"type\":\"string\",\"description\":\"Number of slashing spans on Stash account; `null` if provided address is not a Controller.\",\"format\":\"unsignedInteger\"},\"nominations\":{\"$ref\":\"#/components/schemas/Nominations\"},\"stakingLedger\":{\"$ref\":\"#/components/schemas/StakingLedger\"}},\"description\":\"Note: After Sidecar's v.20.0.0, we always return the field `claimedRewards` under `stakingLedger`. Before we returned `lastReward`, `claimedRewards` or `legacyClaimedRewards`. While these fields (and their corresponding calls) are still taken into account, they are now only used in the background to calculate the right values for the `claimedRewards` field. Note on lastReward: Runtime versions of Kusama less than 1062 will either have `lastReward` in place of `claimedRewards`, or no field at all. This is related to changes in reward distribution. See: [Lazy Payouts](https://github.com/paritytech/substrate/pull/4474), [Simple Payouts](https://github.com/paritytech/substrate/pull/5406)\"},\"AccountStakingPayouts\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"erasPayouts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"era\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Era this information is associated with.\"},\"totalEraRewardPoints\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Total reward points for the era. Equals the sum of reward points for all the validators in the set.\"},\"totalEraPayout\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Total payout for the era. Validators split the payout based on the portion of `totalEraRewardPoints` they have.\"},\"payouts\":{\"$ref\":\"#/components/schemas/Payouts\"}}}}}},\"AccountValidation\":{\"type\":\"object\",\"properties\":{\"isValid\":{\"type\":\"boolean\",\"description\":\"Whether the given address is valid ss58 formatted.\"},\"ss58Prefix\":{\"type\":\"string\",\"description\":\"SS58 prefix of the given address. If the address is a valid base58 format, but incorrect ss58, a prefix for the given address will still be returned.\",\"format\":\"unsignedInteger\"},\"network\":{\"type\":\"string\",\"description\":\"The network based on which the given address is encoded.\"},\"accountId\":{\"type\":\"string\",\"description\":\"The account id of the given address.\"}}},\"AccountVestingInfo\":{\"type\":\"object\",\"description\":\"Sidecar version's <= v10.0.0 have a`vesting` return value that defaults to an object for when there is no available vesting-info data. It also returns a `VestingInfo` as an object. For Sidecar >=11.0.0, that value will now default as an array when there is no value, and `Vec` is returned when there is.\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"vesting\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/VestingSchedule\"}}}},\"AssetsBalance\":{\"type\":\"object\",\"properties\":{\"assetId\":{\"type\":\"string\",\"description\":\"The identifier of the asset.\",\"format\":\"unsignedInteger\"},\"balance\":{\"type\":\"string\",\"description\":\"The balance of the asset.\",\"format\":\"unsignedInteger\"},\"isFrozen\":{\"type\":\"boolean\",\"description\":\"Whether the asset is frozen for non-admin transfers. Note, that some runtimes may not have support for isFrozen and if so the following will be returned `isFrozen does not exist for this runtime`\"},\"isSufficient\":{\"type\":\"boolean\",\"description\":\"Whether a non-zero balance of this asset is a deposit of sufficient value to account for the state bloat associated with its balance storage. If set to `true`, then non-zero balances may be stored without a `consumer` reference (and thus an ED in the Balances pallet or whatever else is used to control user-account state growth).\"}}},\"AssetInfo\":{\"type\":\"object\",\"properties\":{\"owner\":{\"type\":\"string\",\"description\":\"Owner of the assets privileges.\",\"format\":\"SS58\"},\"issuer\":{\"type\":\"string\",\"description\":\"The `AccountId` able to mint tokens.\",\"format\":\"SS58\"},\"admin\":{\"type\":\"string\",\"description\":\"The `AccountId` that can thaw tokens, force transfers and burn token from any account.\",\"format\":\"SS58\"},\"freezer\":{\"type\":\"string\",\"description\":\"The `AccountId` that can freeze tokens.\",\"format\":\"SS58\"},\"supply\":{\"type\":\"string\",\"description\":\"The total supply across accounts.\",\"format\":\"unsignedInteger\"},\"deposit\":{\"type\":\"string\",\"description\":\"The balance deposited for this. This pays for the data stored.\",\"format\":\"unsignedInteger\"},\"minBalance\":{\"type\":\"string\",\"description\":\"The ED for virtual accounts.\",\"format\":\"unsignedInteger\"},\"isSufficient\":{\"type\":\"boolean\",\"description\":\"If `true`, then any account with this asset is given a provider reference. Otherwise, it requires a consumer reference.\"},\"accounts\":{\"type\":\"string\",\"description\":\"The total number of accounts.\",\"format\":\"unsignedInteger\"},\"sufficients\":{\"type\":\"string\",\"description\":\"The total number of accounts for which is placed a self-sufficient reference.\"},\"approvals\":{\"type\":\"string\",\"description\":\"The total number of approvals.\",\"format\":\"unsignedInteger\"},\"status\":{\"type\":\"string\",\"description\":\"The status of the asset.\"}}},\"AssetMetadata\":{\"type\":\"object\",\"properties\":{\"deposit\":{\"type\":\"string\",\"description\":\"The balance deposited for this metadata. This pays for the data stored in this struct.\",\"format\":\"unsignedInteger\"},\"name\":{\"type\":\"string\",\"description\":\"The user friendly name of this asset.\",\"format\":\"$hex\"},\"symbol\":{\"type\":\"string\",\"description\":\"The ticker symbol for this asset.\",\"format\":\"$hex\"},\"decimals\":{\"type\":\"string\",\"description\":\"The number of decimals this asset uses to represent one unit.\",\"format\":\"unsignedInteger\"},\"isFrozen\":{\"type\":\"boolean\",\"description\":\"Whether the asset metadata may be changed by a non Force origin. Note, that some runtimes may not have support for isFrozen and if so the following will be returned `isFrozen does not exist for this runtime`\"}}},\"BalanceLock\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"An identifier for this lock. Only one lock may be in existence for each identifier.\"},\"amount\":{\"type\":\"string\",\"description\":\"The amount below which the free balance may not drop with this lock in effect.\",\"format\":\"unsignedInteger\"},\"reasons\":{\"type\":\"string\",\"description\":\"Reasons for withdrawing balance.\",\"enum\":[\"Fee = 0\",\"Misc = 1\",\"All = 2\"]}}},\"Block\":{\"type\":\"object\",\"properties\":{\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"authorId\":{\"type\":\"string\",\"description\":\"The account ID of the block author (may be undefined for some chains).\",\"format\":\"ss58\"},\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"},\"onInitialize\":{\"$ref\":\"#/components/schemas/BlockInitialize\"},\"extrinsics\":{\"type\":\"array\",\"description\":\"Array of extrinsics (inherents and transactions) within the block.\",\"items\":{\"$ref\":\"#/components/schemas/Extrinsic\"}},\"onFinalize\":{\"$ref\":\"#/components/schemas/BlockFinalize\"},\"finalized\":{\"type\":\"boolean\",\"description\":\"A boolean identifying whether the block is finalized or not. Note: on chains that do not have deterministic finality this field is omitted.\"}},\"description\":\"Note: Block finalization does not correspond to consensus, i.e. whether the block is in the canonical chain. It denotes the finalization of block _construction._\"},\"BlockRaw\":{\"type\":\"object\",\"properties\":{\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}},\"extrinsics\":{\"type\":\"array\",\"description\":\"Array of raw extrinsics (inherents and transactions) within the block.\",\"items\":{\"type\":\"string\"}}}},\"Blocks\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Block\"}},\"BlockFinalize\":{\"type\":\"object\",\"properties\":{\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}}},\"description\":\"Object with an array of `SanitizedEvent`s that occurred during block construction finalization with the `method` and `data` for each.\"},\"BlockHeader\":{\"type\":\"object\",\"properties\":{\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}}}},\"BlockIdentifiers\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"height\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"}},\"description\":\"Block number and hash at which the call was made.\"},\"BlockInitialize\":{\"type\":\"object\",\"properties\":{\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}}},\"description\":\"Object with an array of `SanitizedEvent`s that occurred during block initialization with the `method` and `data` for each.\"},\"BlocksTrace\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"blockHash\":{\"type\":\"string\"},\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TraceEvent\"}},\"parentHash\":{\"type\":\"string\"},\"spans\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TraceSpan\"}},\"storageKeys\":{\"type\":\"string\",\"description\":\"Hex encoded storage keys used to filter events.\"},\"tracingTargets\":{\"type\":\"string\",\"description\":\"Targets used to filter spans and events.\"}}},\"BlocksTraceOperations\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"operations\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Operation\"}}}},\"BlockWithDecodedXcmMsgs\":{\"allOf\":[{\"$ref\":\"#/components/schemas/Block\"},{\"$ref\":\"#/components/schemas/DecodedXcmMsgs\"}],\"description\":\"Block information that includes the decoded XCM messages if any are found in the queried block. If not, the decodedXcmMsgs object will be returned with three empty arrays corresponding to each direction, horizontalMessages, downwardMessages, upwardMessages.\"},\"BondedPool\":{\"type\":\"object\",\"properties\":{\"points\":{\"type\":\"number\"},\"state\":{\"type\":\"string\"},\"memberCounter\":{\"type\":\"number\"},\"roles\":{\"type\":\"object\",\"properties\":{\"depositor\":{\"type\":\"string\"},\"root\":{\"type\":\"string\"},\"nominator\":{\"type\":\"string\"},\"stateToggler\":{\"type\":\"string\"}}}}},\"ChainType\":{\"type\":\"object\",\"description\":\"Type of the chain. It will return one of the following enum variants as a key. Live, Development, Local, or Custom. Each variant will have a value as null except when the ChainType is Custom, it will return a string.\",\"properties\":{\"live\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"development\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"local\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"custom\":{\"type\":\"string\"}},\"example\":\"{\\\"live\\\": null}\"},\"ContractsInkQuery\":{\"type\":\"object\",\"description\":\"Result from calling a query to a Ink contract.\",\"properties\":{\"debugMessage\":{\"type\":\"string\"},\"gasConsumed\":{\"type\":\"string\"},\"gasRequired\":{\"type\":\"string\"},\"output\":{\"type\":\"boolean\"},\"result\":{\"type\":\"object\",\"description\":\"Will result in an Ok or Err object depending on the result of the query.\"},\"storageDeposit\":{\"type\":\"object\"}}},\"ContractMetadata\":{\"type\":\"object\",\"description\":\"Metadata used to instantiate a ContractPromise. This metadata can be generated by compiling the contract you are querying.\"},\"DecodedXcmMsgs\":{\"type\":\"object\",\"properties\":{\"decodedXcmMsgs\":{\"type\":\"object\",\"properties\":{\"horizontalMessages\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/DecodedXcmMsgsHorizontalMessagesInRelay\"},{\"$ref\":\"#/components/schemas/DecodedXcmMsgsHorizontalMessagesInParachain\"}]},\"downwardMessages\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"sentAt\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Represents the block number that the XCM message was sent at on the relay chain.\"},\"msg\":{\"type\":\"string\",\"description\":\"Represents the XCM message.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}}}},\"upwardMessages\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}}}}}}},\"description\":\"Object with three arrays, one for every XCM direction. The arrays are populated or left empty based on the direction of the current XCM message that is being decoded. The XCM messages can be Upward and/or Horizontal (`in transit`) messages when connected to a Relay chain. When connected to a Parachain, the messages can be Downward and/or Horizontal. One or more messages can be present in a single block. In case of multiple messages from the same paraIds (originParaId and/or destinationParaId), the messages will be shown under the field `data`.\"},\"DecodedXcmMsgsHorizontalMessagesInRelay\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"destinationParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent to.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}},\"description\":\"Array that includes the Horizontal (`in transit`) messages when we are connected to a Relay Chain. Each block can contain one or more messages. If multiple messages share the same origin and destination paraId, they will be displayed within the data field.\"}},\"DecodedXcmMsgsHorizontalMessagesInParachain\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"sentAt\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Represents the block number that the XCM message was sent at on the relay chain.\"},\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}},\"description\":\"Array that includes the Horizontal Messages when we are connected to a Parachain. Each block can contain one or more messages. If multiple messages originate from the same parachain (originParaId), they will be displayed within the data field.\"}},\"DigestItem\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"index\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"value\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"ElectionStatus\":{\"type\":\"object\",\"properties\":{\"status\":{\"type\":\"object\",\"description\":\"[Deprecated](Works for polkadot runtimes before v0.8.30).\\nEra election status: either `Close: null` or `Open: `. A status of `Close` indicates that the submission window for solutions from off-chain Phragmen is not open. A status of `Open` indicates that the submission window for off-chain Phragmen solutions has been open since BlockNumber. N.B. when the submission window is open, certain extrinsics are not allowed because they would mutate the state that the off-chain Phragmen calculation relies on for calculating results.\"},\"toggleEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the `status` will switch.\",\"format\":\"unsignedInteger\"}},\"description\":\"Information about the off-chain election. Not included in response when `forceEra.isForceNone`.\"},\"Error\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"message\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"},\"level\":{\"type\":\"string\"}}},\"ExtrinsicMethod\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\"},\"method\":{\"type\":\"string\"}},\"description\":\"Extrinsic method\"},\"Extrinsic\":{\"type\":\"object\",\"properties\":{\"method\":{\"$ref\":\"#/components/schemas/ExtrinsicMethod\"},\"signature\":{\"$ref\":\"#/components/schemas/Signature\"},\"nonce\":{\"type\":\"string\",\"description\":\"Account nonce, if applicable.\",\"format\":\"unsignedInteger\"},\"args\":{\"type\":\"object\",\"description\":\"Object of arguments keyed by parameter name. Note: if you are expecting an [`OpaqueCall`](https://substrate.dev/rustdocs/v2.0.0/pallet_multisig/type.OpaqueCall.html) and it is not decoded in the response (i.e. it is just a hex string), then Sidecar was not able to decode it and likely that it is not a valid call for the runtime.\"},\"tip\":{\"type\":\"string\",\"description\":\"Any tip added to the transaction.\",\"format\":\"unsignedInteger\"},\"hash\":{\"type\":\"string\",\"description\":\"The transaction's hash.\",\"format\":\"hex\"},\"info\":{\"$ref\":\"#/components/schemas/RuntimeDispatchInfo\"},\"era\":{\"$ref\":\"#/components/schemas/GenericExtrinsicEra\"},\"events\":{\"type\":\"array\",\"description\":\"An array of `SanitizedEvent`s that occurred during extrinsic execution.\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}},\"success\":{\"type\":\"boolean\",\"description\":\"Whether or not the extrinsic succeeded.\"},\"paysFee\":{\"type\":\"boolean\",\"description\":\"Whether the extrinsic requires a fee. Careful! This field relates to whether or not the extrinsic requires a fee if called as a transaction. Block authors could insert the extrinsic as an inherent in the block and not pay a fee. Always check that `paysFee` is `true` and that the extrinsic is signed when reconciling old blocks.\"}}},\"ExtrinsicIndex\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"extrinsic\":{\"$ref\":\"#/components/schemas/Extrinsic\"}},\"description\":\"A single extrinsic at a given block.\"},\"FundInfo\":{\"type\":\"object\",\"properties\":{\"depositor\":{\"type\":\"string\"},\"verifier\":{\"type\":\"string\"},\"deposit\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"raised\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"end\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"cap\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"lastConstribution\":{\"type\":\"string\",\"enum\":[\"preEnding\",\"ending\"]},\"firstPeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"lastPeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"trieIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"GenericExtrinsicEra\":{\"type\":\"object\",\"description\":\"The return value for era can either be `mortalEra`, or `immortalEra` and is represented as an enum in substrate. `immortalEra` meaning\\nthe transaction is valid forever. `mortalEra` consists of a tuple containing a period and phase.\\nex: `\\\"{\\\"mortalEra\\\": [\\\"64\\\", \\\"11\\\"]}\\\"`. The Period is the period of validity from the block hash found in the signing material.\\nThe Phase is the period that this transaction's lifetime begins (and, importantly,\\nimplies which block hash is included in the signature material).\\n\",\"properties\":{\"mortalEra\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Tuple of a Phase, and Period. Each item in the array will be a string formatted as an integer.\"},\"immortalEra\":{\"type\":\"string\",\"description\":\"Hardcoded constant '0x00'.\",\"format\":\"hex\"}},\"example\":\"{\\\"mortalEra\\\":[\\\"64\\\", \\\"11\\\"]}\"},\"LiquidityPools\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pools\":{\"type\":\"array\",\"description\":\"Array containing existent liquidity pool's token id.\",\"items\":{\"$ref\":\"#/components/schemas/LiquidityPool\"},\"example\":\"[{\\\"reserves\\\":[{\\\"parents\\\":\\\"1\\\",\\\"interior\\\":{\\\"here\\\": null}},{\\\"parents\\\":\\\"0\\\",\\\"interior\\\":{\\\"x2\\\":[{\\\"palletInstance\\\": \\\"50\\\"},{\\\"generalIndex\\\":\\\"2\\\"}]}}],\\\"lpToken\\\":{\\\"lpToken\\\":\\\"1\\\"} },{\\\"lpToken\\\":{\\\"lpToken\\\":\\\"0\\\"}}]\"}}},\"LiquidityPool\":{\"type\":\"object\",\"properties\":{\"reserves\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"parents\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"interior\":{\"type\":\"object\"}}}},\"lpToken\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Liquidity pool token ID.\"}}},\"NextAvailableId\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"id\":{\"type\":\"string\",\"description\":\"Next availabe liquidity pool's id.\",\"example\":\"4\"}}},\"NodeNetwork\":{\"type\":\"object\",\"properties\":{\"nodeRoles\":{\"$ref\":\"#/components/schemas/NodeRole\"},\"numPeers\":{\"type\":\"string\",\"description\":\"Number of peers the node is connected to.\",\"format\":\"unsignedInteger\"},\"isSyncing\":{\"type\":\"boolean\",\"description\":\"Whether or not the node is syncing. `False` indicates that the node is in sync.\"},\"shouldHavePeers\":{\"type\":\"boolean\",\"description\":\"Whether or not the node should be connected to peers. Might be false for local chains or when running without discovery.\"},\"localPeerId\":{\"type\":\"string\",\"description\":\"Local copy of the `PeerId`.\"},\"localListenAddresses\":{\"type\":\"array\",\"description\":\"Multiaddresses that the local node is listening on. The addresses include a trailing `/p2p/` with the local PeerId, and are thus suitable to be passed to `system_addReservedPeer` or as a bootnode address for example.\",\"items\":{\"type\":\"string\"}},\"peersInfo\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PeerInfo\"}}}},\"NodeRole\":{\"type\":\"string\",\"description\":\"Role of this node. (N.B. Sentry nodes are being deprecated.)\",\"enum\":[\"Full\",\"LightClient\",\"Authority\",\"Sentry\"]},\"NodeVersion\":{\"type\":\"object\",\"properties\":{\"clientVersion\":{\"type\":\"string\",\"description\":\"Node's binary version.\"},\"clientImplName\":{\"type\":\"string\",\"description\":\"Node's implementation name.\"},\"chain\":{\"type\":\"string\",\"description\":\"Node's chain name.\"}},\"description\":\"Version information of the node.\"},\"Nominations\":{\"type\":\"object\",\"properties\":{\"targets\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"The targets of the nomination.\"},\"submittedIn\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The era the nominations were submitted. (Except for initial nominations which are considered submitted at era 0.)\"},\"suppressed\":{\"type\":\"boolean\",\"description\":\"Whether the nominations have been suppressed.\"}}},\"OnboardingAs\":{\"type\":\"string\",\"enum\":[\"parachain\",\"parathread\"],\"description\":\"This property only shows up when `paraLifecycle=onboarding`. It\\ndescribes if a particular para is onboarding as a `parachain` or a\\n`parathread`.\\n\"},\"Operation\":{\"type\":\"object\",\"properties\":{\"phase\":{\"$ref\":\"#/components/schemas/OperationPhase\"},\"parentSpanId\":{\"$ref\":\"#/components/schemas/SpanId\"},\"primarySpanId\":{\"$ref\":\"#/components/schemas/SpanId\"},\"eventIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Index of the underlying trace event.\"},\"address\":{\"type\":\"string\",\"description\":\"Account this operation affects. Note - this will be an object like\\n`{ id: address }` if the network uses `MultiAddress`\\n\"},\"storage\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\"},\"item\":{\"type\":\"string\"},\"field1\":{\"type\":\"string\",\"description\":\"A field of the storage item. (i.e `system::Account::get(address).data`)\\n\"},\"field2\":{\"type\":\"string\",\"description\":\"A field of the struct described by field1 (i.e\\n`system::Account::get(address).data.free`)\\n\"}}},\"amount\":{\"$ref\":\"#/components/schemas/OperationAmount\"}}},\"OperationAmount\":{\"type\":\"object\",\"properties\":{\"values\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"currency\":{\"$ref\":\"#/components/schemas/OperationAmountCurrency\"}}},\"OperationAmountCurrency\":{\"type\":\"object\",\"properties\":{\"symbol\":{\"type\":\"string\",\"example\":\"KSM\"}}},\"OperationPhase\":{\"type\":\"object\",\"properties\":{\"variant\":{\"type\":\"string\",\"enum\":[\"onInitialize\",\"initialChecks\",\"applyExtrinsic\",\"onFinalize\",\"finalChecks\"],\"description\":\"Phase of block execution pipeline.\"},\"extrinsicIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"If phase variant is `applyExtrinsic` this will be the index of\\nthe extrinsic. Otherwise this field will not be present.\\n\"}}},\"PalletsAssetsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"assetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"assetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"}}},\"PalletConstants\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up constants.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletConstantsItemMetadata\"},\"description\":\"Array containing metadata for each constant entry of the pallet.\"}}},\"PalletConstantsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up constants.\",\"example\":\"14\"},\"errorItem\":{\"type\":\"string\",\"description\":\"Name of the constant item.\",\"example\":\"EnactmentPeriod\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletConstantsItemMetadata\"}}},\"PalletConstantsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"VotingPeriod\",\"description\":\"The constant item's name (which is the same as the constant item's ID).\"},\"type\":{\"type\":\"string\",\"example\":\"4\"},\"value\":{\"type\":\"string\",\"example\":\"0x00270600\",\"description\":\"The hex value of the constant\"},\"docs\":{\"type\":\"string\",\"example\":\"Information concerning any given constant.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"}},\"description\":\"Metadata of an constant item from a FRAME pallet.\"},\"PalletDispatchables\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up dispatchables.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItemMetadata\"},\"description\":\"Array containing metadata for each dispatchable entry of the pallet.\"}}},\"PalletDispatchablesItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up dispatchables.\",\"example\":\"14\"},\"dispatchableItem\":{\"type\":\"string\",\"description\":\"Name of the dispatchable item.\",\"example\":\"vote\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItemMetadata\"}}},\"PalletDispatchablesItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"propose\",\"description\":\"The dispatchable item's name (which is the same as the dispatchable item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the dispatchable item in the lists of pallet dispatchables.\"},\"docs\":{\"type\":\"string\",\"example\":\"Information concerning any given dispatchable.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of a dispatchable item from a FRAME pallet.\"},\"PalletErrors\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up errors.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletErrorsItemMetadata\"},\"description\":\"Array containing metadata for each error entry of the pallet.\"}}},\"PalletErrorsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up errors.\",\"example\":\"14\"},\"errorItem\":{\"type\":\"string\",\"description\":\"Name of the error item.\",\"example\":\"ValueLow\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletErrorsItemMetadata\"}}},\"PalletErrorsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"InsufficientFunds\",\"description\":\"The error item's name (which is the same as the error item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the error item in the lists of pallet errors\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given error.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of an error item from a FRAME pallet.\"},\"PalletEvents\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up events.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletEventsItemMetadata\"}}}},\"PalletEventsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up events.\",\"example\":\"14\"},\"eventItem\":{\"type\":\"string\",\"description\":\"Name of the events item.\",\"example\":\"Proposed\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletEventsItemMetadata\"}}},\"PalletEventsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"Tabled\",\"description\":\"The event item's name (which is the same as the event item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the error item in the lists of pallet events\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given event.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of an event item from a FRAME pallet.\"},\"PalletsForeignAssets\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletsForeignAssetsInfo\"},\"description\":\"Array containing the `AssetDetails` and `AssetMetadata` of every foreign asset.\"}}},\"PalletsForeignAssetsInfo\":{\"type\":\"object\",\"properties\":{\"foreignAssetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"foreignAssetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"}}},\"PalletsNominationPool\":{\"type\":\"object\",\"properties\":{\"bondedPool\":{\"$ref\":\"#/components/schemas/BondedPool\"},\"rewardPool\":{\"$ref\":\"#/components/schemas/RewardPool\"}}},\"PalletsNominationPoolsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"counterForBondedPools\":{\"type\":\"number\"},\"counterForMetadata\":{\"type\":\"number\"},\"counterForPoolMembers\":{\"type\":\"number\"},\"counterForReversePoolIdLookup\":{\"type\":\"number\"},\"counterForRewardPools\":{\"type\":\"number\"},\"counterForSubPoolsStorage\":{\"type\":\"number\"},\"lastPoolId\":{\"type\":\"number\"},\"maxPoolMembers\":{\"type\":\"number\"},\"maxPoolMembersPerPool\":{\"type\":\"number\",\"nullable\":true},\"maxPools\":{\"type\":\"number\"},\"minCreateBond\":{\"type\":\"number\"},\"minJoinBond\":{\"type\":\"number\"}}},\"PalletsPoolAssetsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"poolAssetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"poolAssetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"}}},\"PalletStorage\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up storage.\",\"example\":\"15\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletStorageItemMetadata\"},\"description\":\"Array containing metadata for each storage entry of the pallet.\"}}},\"PalletStorageItem\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up storage.\",\"example\":\"15\"},\"storageItem\":{\"type\":\"string\",\"description\":\"Name of the storage item.\",\"example\":\"referendumInfoOf\"},\"keys\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"N Storage keys passed in as the `keys` query param.\",\"example\":[\"0x00\",\"0x01\"]},\"value\":{\"type\":\"object\",\"description\":\"Value returned by this storage query.\",\"example\":{\"Ongoing\":{\"end\":\"1612800\",\"proposalHash\":\"0x7de70fc8be782076d0b5772be77153d172a5381c72dd56d3385e25f62abf507e\",\"threshold\":\"Supermajorityapproval\",\"delay\":\"403200\",\"tally\":{\"ayes\":\"41925212461400000\",\"nays\":\"214535586500000\",\"turnout\":\"34485320658000000\"}}}},\"metadata\":{\"$ref\":\"#/components/schemas/PalletStorageItemMetadata\"}}},\"PalletStorageItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"ReferendumInfoOf\",\"description\":\"The storage item's name (which is the same as the storage item's ID).\"},\"modifier\":{\"type\":\"string\",\"example\":\"Optional\"},\"type\":{\"$ref\":\"#/components/schemas/PalletStorageType\"},\"fallback\":{\"type\":\"string\",\"example\":\"0x00\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given referendum.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"}},\"description\":\"Metadata of a storage item from a FRAME pallet.\"},\"PalletStorageType\":{\"type\":\"object\",\"description\":\"This is going to be formatted to the type of StorageEntryTypeV14.\"},\"Para\":{\"type\":\"object\",\"properties\":{\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"paraLifecycle\":{\"$ref\":\"#/components/schemas/ParaLifecycle\"},\"onboardingAs\":{\"$ref\":\"#/components/schemas/OnboardingAs\"}}},\"Paras\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paras\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Para\"}}}},\"ParasAuctionsCurrent\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"beginEnd\":{\"type\":\"string\",\"format\":\"unisgnedInteger or $null\",\"description\":\"Fist block (number) of the auction ending phase. `null` if there is no ongoing\\nauction.\\n\"},\"finishEnd\":{\"type\":\"string\",\"format\":\"unisgnedInteger or $null\",\"description\":\"Last block (number) of the auction ending phase. `null` if there is no ongoing\\nauction.\\n\"},\"phase\":{\"type\":\"string\",\"enum\":[\"startPeriod\",\"endPeriod\",\"vrfDelay\"],\"description\":\"An auction can be in one of 4 phases. Both `startingPeriod` () and `endingPeriod` indicate\\nan ongoing auction, while `vrfDelay` lines up with the `AuctionStatus::VrfDelay` . Finally, a value of `null`\\nindicates there is no ongoing auction. Keep in mind the that the `finishEnd` field is the block number the\\n`endingPeriod` finishes and the `vrfDelay` period begins. The `vrfDelay` period is typically about an\\nepoch long and no crowdloan contributions are accepted.\\n\"},\"auctionIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The auction number. If there is no current auction this will be the number\\nof the previous auction.\\n\"},\"leasePeriods\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"Lease period indexes that may be bid on in this auction. `null` if\\nthere is no ongoing auction.\\n\"},\"winning\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/WinningData\"}}}},\"ParasCrowdloans\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"funds\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"fundInfo\":{\"$ref\":\"#/components/schemas/FundInfo\"}}},\"description\":\"List of paras that have crowdloans.\\n\"}}},\"ParasCrowdloanInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"fundInfo\":{\"$ref\":\"#/components/schemas/FundInfo\"},\"leasePeriods\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"Lease periods the crowdloan can bid on.\"}}},\"ParasHeaders\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paraId\":{\"type\":\"object\",\"description\":\"The key is not named `paraId` and will be the number of the parachain. There is technically no limit to the number of paraId keys there can be. \\n\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicsRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}}}}}},\"ParasLeasesCurrent\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"leasePeriodIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Current lease period index. This value may be null when the current block now, substracted by the leaseOffset is less then zero.\"},\"endOfLeasePeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Last block (number) of the current lease period. This value may be null when `leasePeriodIndex` is null.\"},\"currentLeaseHolders\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"List of `paraId`s that currently hold a lease.\"}}},\"ParasLeaseInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paraLifecycle\":{\"$ref\":\"#/components/schemas/ParaLifecycle\"},\"onboardingAs\":{\"$ref\":\"#/components/schemas/OnboardingAs\"},\"leases\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"leasePeriodIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"account\":{\"type\":\"string\"},\"deposit\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"description\":\"List of lease periods for which the `paraId` holds a lease along with\\nthe deposit held and the associated `accountId`.\\n\"}}},\"ParaLifecycle\":{\"type\":\"string\",\"enum\":[\"onboarding\",\"parathread\",\"parachain\",\"upgradingParathread\",\"downgradingParachain\",\"offboardingParathread\",\"offboardingParachain\"],\"description\":\"The possible states of a para, to take into account delayed lifecycle\\nchanges.\\n\"},\"Payouts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"validatorId\":{\"type\":\"string\",\"description\":\"AccountId of the validator the payout is coming from.\"},\"nominatorStakingPayout\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Payout for the reward destination associated with the accountId the query was made for.\"},\"claimed\":{\"type\":\"boolean\",\"description\":\"Whether or not the reward has been claimed.\"},\"totalValidatorRewardPoints\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Number of reward points earned by the validator.\"},\"validatorCommission\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The percentage of the total payout that the validator takes as commission, expressed as a Perbill.\"},\"totalValidatorExposure\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The sum of the validator's and its nominators' stake.\"},\"nominatorExposure\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The amount of stake the nominator has behind the validator.\"}},\"description\":\"Payout for a nominating _Stash_ address and information about the validator they were nominating.\"}},\"PeerInfo\":{\"type\":\"object\",\"properties\":{\"peerId\":{\"type\":\"string\",\"description\":\"Peer ID.\"},\"roles\":{\"type\":\"string\",\"description\":\"Roles the peer is running\"},\"protocolVersion\":{\"type\":\"string\",\"description\":\"Peer's protocol version.\",\"format\":\"unsignedInteger\"},\"bestHash\":{\"type\":\"string\",\"description\":\"Hash of the best block on the peer's canon chain.\",\"format\":\"hex\"},\"bestNumber\":{\"type\":\"string\",\"description\":\"Height of the best block on the peer's canon chain.\",\"format\":\"unsignedInteger\"}}},\"RewardPool\":{\"type\":\"object\",\"properties\":{\"lastRecordedRewardCounter\":{\"type\":\"number\"},\"lastRecordedTotalPayouts\":{\"type\":\"number\"},\"totalRewardsClaimed\":{\"type\":\"number\"}}},\"RuntimeCode\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"code\":{\"type\":\"string\",\"format\":\"hex\"}}},\"RuntimeDispatchInfo\":{\"type\":\"object\",\"properties\":{\"weight\":{\"$ref\":\"#/components/schemas/WeightsV2\",\"description\":\"Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.\"},\"class\":{\"type\":\"string\",\"description\":\"Extrinsic class.\",\"enum\":[\"Normal\",\"Operational\",\"Mandatory\"]},\"partialFee\":{\"type\":\"string\",\"description\":\"The _inclusion fee_ of a transaction, i.e. the minimum fee required for a transaction. Includes weight and encoded length fees, but does not have access to any signed extensions, e.g. the `tip`.\",\"format\":\"unsignedInteger\"},\"kind\":{\"type\":\"string\",\"description\":\"Information on the partialFee that is collected. Can be either `preDispatch`, `postDispatch` or `fromEvent`. `preDispatch` means the information used to collect the fee was from `payment_queryInfo`, `postDispatch` means the information used to calculate the fee was from finalized weights for the extrinsic, and `fromEvent` means that the partialFee was abstracted from the `TransactionPayment::TransactionPaidFee` event.\"}},\"description\":\"RuntimeDispatchInfo for the transaction. Includes the `partialFee`.\"},\"RuntimeSpec\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"authoringVersion\":{\"type\":\"string\",\"description\":\"The version of the authorship interface. An authoring node will not attempt to author blocks unless this is equal to its native runtime.\"},\"chainType\":{\"$ref\":\"#/components/schemas/ChainType\"},\"implVersion\":{\"type\":\"string\",\"description\":\"Version of the implementation specification. Non-consensus-breaking optimizations are about the only changes that could be made which would result in only the `impl_version` changing. The `impl_version` is set to 0 when `spec_version` is incremented.\"},\"specName\":{\"type\":\"string\",\"description\":\"Identifies the different Substrate runtimes.\"},\"specVersion\":{\"type\":\"string\",\"description\":\"Version of the runtime specification.\"},\"transactionVersion\":{\"type\":\"string\",\"description\":\"All existing dispatches are fully compatible when this number doesn't change. This number must change when an existing dispatchable (module ID, dispatch ID) is changed, either through an alteration in its user-level semantics, a parameter added/removed/changed, a dispatchable being removed, a module being removed, or a dispatchable/module changing its index.\"},\"properties\":{\"type\":\"object\",\"description\":\"Arbitrary properties defined in the chain spec.\"}},\"description\":\"Version information related to the runtime.\"},\"SanitizedEvent\":{\"type\":\"object\",\"properties\":{\"method\":{\"type\":\"string\"},\"data\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"Signature\":{\"type\":\"object\",\"properties\":{\"signature\":{\"type\":\"string\",\"format\":\"hex\"},\"signer\":{\"type\":\"string\",\"format\":\"ss58\"}},\"description\":\"Object with `signature` and `signer`, or `null` if unsigned.\"},\"SpanId\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"target\":{\"type\":\"string\"},\"id\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"StakingLedger\":{\"type\":\"object\",\"properties\":{\"stash\":{\"type\":\"string\",\"description\":\"The _Stash_ account whose balance is actually locked and at stake.\",\"format\":\"ss58\"},\"total\":{\"type\":\"string\",\"description\":\"The total amount of the _Stash_'s balance that we are currently accounting for. Simply `active + unlocking`.\",\"format\":\"unsignedInteger\"},\"active\":{\"type\":\"string\",\"description\":\"The total amount of the _Stash_'s balance that will be at stake in any forthcoming eras.\",\"format\":\"unsignedInteger\"},\"unlocking\":{\"type\":\"string\",\"description\":\"Any balance that is becoming free, which may eventually be transferred out of the _Stash_ (assuming it doesn't get slashed first). Represented as an array of objects, each with an `era` at which `value` will be unlocked.\",\"format\":\"unsignedInteger\"},\"claimedRewards\":{\"type\":\"array\",\"description\":\"Array of objects, each containing an `era` and its corresponding `status`, which represents the rewards status of the stakers backing a validator. Only updated for _validators._ This array is populated with values from `stakingLedger.legacyClaimedRewards` or `stakingLedger.claimedRewards`, as well as the `query.staking.claimedRewards` call, depending on whether the queried block is before or after the migration. For more details on the implementation and the migration, refer to the related PR (https://github.com/paritytech/substrate-api-sidecar/pull/1445) and linked issue (https://github.com/paritytech/substrate-api-sidecar/issues/1433#issuecomment-2075914389).\",\"items\":{\"type\":\"object\",\"properties\":{\"era\":{\"type\":\"string\",\"description\":\"The era for which we check the rewards status.\",\"format\":\"unsignedInteger\"},\"status\":{\"type\":\"string\",\"description\":\"The rewards status of the stakers backing a validator.\",\"enum\":[\"claimed\",\"unclaimed\",\"partially claimed\"]}}}}},\"description\":\"The staking ledger.\"},\"StakingProgress\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"activeEra\":{\"type\":\"string\",\"description\":\"`EraIndex` of the era being rewarded.\\n\",\"format\":\"unsignedInteger\"},\"forceEra\":{\"type\":\"string\",\"description\":\"Current status of era forcing.\",\"enum\":[\"ForceNone\",\"NotForcing\",\"ForceAlways\",\"ForceNew\"]},\"nextActiveEraEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the next active era will start. Not included in response when `forceEra.isForceNone`.\",\"format\":\"unsignedInteger\"},\"nextSessionEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the next session will start.\",\"format\":\"unsignedInteger\"},\"unappliedSlashes\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/UnappliedSlash\"},\"description\":\"Array of upcoming `UnappliedSlash` indexed by era.\"},\"electionStatus\":{\"$ref\":\"#/components/schemas/ElectionStatus\"},\"idealValidatorCount\":{\"type\":\"string\",\"description\":\"Upper bound of validator set size; considered the ideal size. Not included in response when `forceEra.isForceNone`.\",\"format\":\"unsignedInteger\"},\"validatorSet\":{\"type\":\"array\",\"description\":\"Stash account IDs of the validators for the current session. Not included in response when `forceEra.isForceNone`.\",\"items\":{\"type\":\"string\",\"format\":\"ss58\"}}}},\"StakingValidators\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"validators\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"address\":{\"type\":\"string\",\"description\":\"Address of validator.\"},\"status\":{\"type\":\"string\",\"description\":\"Status of individual validator (active/waiting).\"}}}},\"validatorsToBeChilled\":{\"description\":\"Validators that will not be participating in the next era.\",\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"address\":{\"type\":\"string\",\"description\":\"Address of validator.\"},\"status\":{\"type\":\"string\",\"description\":\"Status of individual validator (active/waiting).\"}}}}}},\"StorageEntryTypeV13\":{\"type\":\"object\",\"properties\":{\"hasher\":{\"type\":\"string\",\"description\":\"Returns a string deonting the storage hasher.\"},\"key\":{\"type\":\"string\",\"description\":\"Key of the queried pallet storageId.\"},\"value\":{\"type\":\"string\",\"description\":\"Value of the queried pallet storageId.\"},\"linked\":{\"type\":\"boolean\"}}},\"StorageEntryTypeV14\":{\"type\":\"object\",\"properties\":{\"hasher\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Returns a string denoting the storage hasher inside of an array.\"},\"key\":{\"type\":\"string\",\"description\":\"The SiLookupTypeId to identify the type.\"},\"value\":{\"type\":\"string\",\"description\":\"The SiLookupTypeId to identify the type.\"}}},\"TraceEvent\":{\"type\":\"object\",\"properties\":{\"data\":{\"type\":\"object\",\"properties\":{\"stringValues\":{\"$ref\":\"#/components/schemas/TraceEventDataStringValues\"}}},\"parentId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"target\":{\"type\":\"string\"}}},\"TraceEventDataStringValues\":{\"type\":\"object\",\"properties\":{\"key\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"The complete storage key for the entry.\"},\"method\":{\"type\":\"string\",\"description\":\"Normally one of Put or Get.\"},\"result\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"Hex scale encoded storage value.\"}},\"description\":\"Note these exact values will only be present for storage events.\"},\"TraceSpan\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"name\":{\"type\":\"string\"},\"parentId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"target\":{\"type\":\"string\"},\"wasm\":{\"type\":\"boolean\"}}},\"Transaction\":{\"type\":\"object\",\"properties\":{\"tx\":{\"type\":\"string\",\"format\":\"hex\"}}},\"TransactionDryRun\":{\"type\":\"object\",\"properties\":{\"resultType\":{\"type\":\"string\",\"enum\":[\"DispatchOutcome\",\"TransactionValidityError\"],\"description\":\"Either `DispatchOutcome` if the transaction is valid or `TransactionValidityError` if the result is invalid.\"},\"result\":{\"type\":\"string\",\"enum\":[\"Ok\",\"CannotLookup\",\"NoUnsignedValidator\",\"Custom(u8)\",\"Call\",\"Payment\",\"Future\",\"Stale\",\"BadProof\",\"AncientBirthBlock\",\"ExhaustsResources\",\"BadMandatory\",\"MandatoryDispatch\"],\"description\":\"If there was an error it will be the cause of the error. If the transaction executed correctly it will be `Ok: []`\"},\"validityErrorType\":{\"type\":\"string\",\"enum\":[\"InvalidTransaction\",\"UnknownTransaction\"]}},\"description\":\"References: - `UnknownTransaction`: https://crates.parity.io/sp_runtime/transaction_validity/enum.UnknownTransaction.html - `InvalidTransaction`: https://crates.parity.io/sp_runtime/transaction_validity/enum.InvalidTransaction.html\"},\"TransactionFailedToParse\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"error\":{\"type\":\"string\",\"description\":\"`Failed to parse a tx.`\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"cause\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"}},\"description\":\"Error message when Sidecar fails to parse the transaction.\"},\"TransactionFailedToSubmit\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"error\":{\"type\":\"string\",\"description\":\"Failed to submit transaction.\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"cause\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"}},\"description\":\"Error message when the node rejects the submitted transaction.\"},\"TransactionFailure\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/TransactionFailedToSubmit\"},{\"$ref\":\"#/components/schemas/TransactionFailedToParse\"}]},\"TransactionFeeEstimate\":{\"type\":\"object\",\"properties\":{\"weight\":{\"$ref\":\"#/components/schemas/WeightsV2\",\"description\":\"Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.\"},\"class\":{\"type\":\"string\",\"description\":\"Extrinsic class.\",\"enum\":[\"Normal\",\"Operational\",\"Mandatory\"]},\"partialFee\":{\"type\":\"string\",\"description\":\"Expected inclusion fee for the transaction. Note that the fee rate changes up to 30% in a 24 hour period and this will not be the exact fee.\",\"format\":\"unsignedInteger\"}},\"description\":\"Note: `partialFee` does not include any tips that you may add to increase a transaction's priority. See [compute_fee](https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee).\"},\"TransactionFeeEstimateFailure\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"at\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\"}}},\"error\":{\"type\":\"string\",\"description\":\"Error description.\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"block\":{\"type\":\"string\",\"description\":\"Block hash of the block fee estimation was attempted at.\"},\"cause\":{\"type\":\"string\",\"description\":\"Error message from the client.\"},\"stack\":{\"type\":\"string\"}}},\"TransactionMaterial\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"genesisHash\":{\"type\":\"string\",\"description\":\"The hash of the chain's genesis block.\",\"format\":\"blockHash\"},\"chainName\":{\"type\":\"string\",\"description\":\"The chain's name.\"},\"specName\":{\"type\":\"string\",\"description\":\"The chain's spec.\"},\"specVersion\":{\"type\":\"string\",\"description\":\"The spec version. Always increased in a runtime upgrade.\"},\"txVersion\":{\"type\":\"string\",\"description\":\"The transaction version. Common `txVersion` numbers indicate that the transaction encoding format and method indices are the same. Needed for decoding in an offline environment. Adding new transactions does not change `txVersion`.\"},\"metadata\":{\"type\":\"string\",\"description\":\"The chain's metadata. It will only be present when the metadata query param is used.\"}},\"description\":\"Note: `chainName`, `specName`, and `specVersion` are used to define a type registry with a set of signed extensions and types. For Polkadot and Kusama, `chainName` is not used in defining this registry, but in other Substrate-based chains that re-launch their network without changing the `specName`, the `chainName` would be needed to create the correct registry. Substrate Reference: - `RuntimeVersion`: https://crates.parity.io/sp_version/struct.RuntimeVersion.html - `SignedExtension`: https://crates.parity.io/sp_runtime/traits/trait.SignedExtension.html - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html\"},\"TransactionPool\":{\"type\":\"object\",\"properties\":{\"pool\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"H256 hash of the extrinsic.\"},\"encodedExtrinsic\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"Scale encoded extrinsic.\"},\"tip\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The tip included in the extrinsic. Only included if the query param `includeFee` is set to true.\"},\"priority\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Computed priority of an extrinsic. Only included if the query param `includeFee` is set to true.\"},\"partialFee\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Provided `partialFee` of an extrinsic. Only included if the query param `includeFee` is set to true.\"}}}}}},\"TransactionSuccess\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The hash of the encoded transaction.\"}}},\"UnappliedSlash\":{\"type\":\"object\",\"properties\":{\"validator\":{\"type\":\"string\",\"description\":\"Stash account ID of the offending validator.\",\"format\":\"ss58\"},\"own\":{\"type\":\"string\",\"description\":\"The amount the validator will be slashed.\",\"format\":\"unsignedInteger\"},\"others\":{\"type\":\"array\",\"description\":\"Array of tuples(`[accountId, amount]`) representing all the stashes of other slashed stakers and the amount they will be slashed.\",\"items\":{\"type\":\"string\",\"format\":\"tuple[ss58, unsignedInteger]\"}},\"reporters\":{\"type\":\"array\",\"description\":\"Array of account IDs of the reporters of the offense.\",\"items\":{\"type\":\"string\",\"format\":\"ss58\"}},\"payout\":{\"type\":\"string\",\"description\":\"Amount of bounty payout to reporters.\",\"format\":\"unsignedInteger\"}}},\"VestingSchedule\":{\"type\":\"object\",\"properties\":{\"locked\":{\"type\":\"string\",\"description\":\"Number of tokens locked at start.\",\"format\":\"unsignedInteger\"},\"perBlock\":{\"type\":\"string\",\"description\":\"Number of tokens that gets unlocked every block after `startingBlock`.\",\"format\":\"unsignedInteger\"},\"startingBlock\":{\"type\":\"string\",\"description\":\"Starting block for unlocking (vesting).\",\"format\":\"unsignedInteger\"}},\"description\":\"Vesting schedule for an account.\"},\"WeightsV2\":{\"type\":\"object\",\"properties\":{\"refTime\":{\"type\":\"string\",\"description\":\"The weight of computational time used based on some reference hardware.\"},\"proofSize\":{\"type\":\"string\",\"description\":\"The weight of storage space used by proof of validity.\"}}},\"WinningData\":{\"type\":\"object\",\"properties\":{\"bid\":{\"type\":\"object\",\"properties\":{\"accountId\":{\"type\":\"string\"},\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"amount\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"leaseSet\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"description\":\"A currently winning bid and the set of lease periods the bid is for. The\\n`amount` of the bid is per lease period. The `bid` property will be `null`\\nif no bid has been made for the corresponding `leaseSet`.\\n\"}},\"requestBodies\":{\"Transaction\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Transaction\"}}},\"required\":true},\"ContractMetadata\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ContractMetadata\"}}}}}}}\n\n//# sourceURL=webpack://sidecar-swagger-ui/./src/openapi-v1.yaml?"); /***/ }), diff --git a/docs/src/openapi-v1.yaml b/docs/src/openapi-v1.yaml index 798c46a18..44b464cac 100755 --- a/docs/src/openapi-v1.yaml +++ b/docs/src/openapi-v1.yaml @@ -2656,8 +2656,13 @@ components: stakingLedger: $ref: '#/components/schemas/StakingLedger' description: >- - Note: Runtime versions of Kusama less than 1062 will either have `lastReward` in place of - `claimedRewards`, or no field at all. This is related to changes in reward distribution. See: [Lazy Payouts](https://github.com/paritytech/substrate/pull/4474), [Simple Payouts](https://github.com/paritytech/substrate/pull/5406) + Note: After Sidecar's v.20.0.0, we always return the field `claimedRewards` under `stakingLedger`. + Before we returned `lastReward`, `claimedRewards` or `legacyClaimedRewards`. While these fields (and their corresponding calls) + are still taken into account, they are now only used in the background to calculate the right values for the `claimedRewards` field. + Note on lastReward: Runtime versions of Kusama less than 1062 will either have `lastReward` in place of + `claimedRewards`, or no field at all. This is related to changes in reward distribution. + See: [Lazy Payouts](https://github.com/paritytech/substrate/pull/4474), + [Simple Payouts](https://github.com/paritytech/substrate/pull/5406) AccountStakingPayouts: type: object properties: @@ -4264,7 +4269,8 @@ components: for _validators._ This array is populated with values from `stakingLedger.legacyClaimedRewards` or `stakingLedger.claimedRewards`, as well as the `query.staking.claimedRewards` call, depending on whether the queried block is before or after the migration. For more details on the implementation - and the migration, refer to the related PR and linked issue. + and the migration, refer to the related PR (https://github.com/paritytech/substrate-api-sidecar/pull/1445) + and linked issue (https://github.com/paritytech/substrate-api-sidecar/issues/1433#issuecomment-2075914389). items: type: object properties: From 88be07e4a5804cfa3b20cb772810cf258d3366ac Mon Sep 17 00:00:00 2001 From: Imod7 Date: Mon, 5 Aug 2024 18:41:17 +0200 Subject: [PATCH 13/26] updated logic of claimed field for validator account - removed `partially claimed` value - added `undefined` value - updated tests --- .../AccountsStakingInfoService.spec.ts | 17 ++ .../accounts/AccountsStakingInfoService.ts | 165 ++++++++++++------ .../mock/data/validators21157800Hex.ts | 18 ++ .../mock/data/validators22939322Hex.ts | 18 ++ src/services/test-helpers/mock/mockApi.ts | 8 +- .../accounts/stakingInfo21157800.json | 6 +- src/types/responses/AccountStakingInfo.ts | 2 +- 7 files changed, 178 insertions(+), 56 deletions(-) create mode 100644 src/services/test-helpers/mock/data/validators21157800Hex.ts create mode 100644 src/services/test-helpers/mock/data/validators22939322Hex.ts diff --git a/src/services/accounts/AccountsStakingInfoService.spec.ts b/src/services/accounts/AccountsStakingInfoService.spec.ts index bd10a5991..a73ebbd2b 100644 --- a/src/services/accounts/AccountsStakingInfoService.spec.ts +++ b/src/services/accounts/AccountsStakingInfoService.spec.ts @@ -30,6 +30,7 @@ import { blockHash789629, blockHash21157800, blockHash22939322, + currentEraAt, currentEraAt21157800, currentEraAt22939322, defaultMockApi, @@ -56,6 +57,8 @@ import { stakingPayeeMockedCall, stakingslashingSpansMockedCall, } from '../test-helpers/mock/accounts/stakingInfo'; +import { validators21157800Hex } from '../test-helpers/mock/data/validators21157800Hex'; +import { validators22939322Hex } from '../test-helpers/mock/data/validators22939322Hex'; import response789629 from '../test-helpers/responses/accounts/stakingInfo789629.json'; import response21157800 from '../test-helpers/responses/accounts/stakingInfo21157800.json'; import response22939322 from '../test-helpers/responses/accounts/stakingInfo22939322.json'; @@ -85,6 +88,7 @@ const historicApi = { ledger: ledgerAt, payee: payeeAt, slashingSpans: slashingSpansAt, + currentEra: currentEraAt, }, }, } as unknown as ApiDecoration<'promise'>; @@ -110,6 +114,9 @@ export const ledgerAt21157800 = (_hash: Hash, _address: string): Promise> => Promise.resolve().then(() => polkadotRegistryV1002000.createType('Option', testAddressPayeePolkadot)); +const validatorsAt21157800 = () => + Promise.resolve().then(() => polkadotRegistryV1002000.createType('Vec', validators21157800Hex)); + const historicApi21157800 = { query: { staking: { @@ -122,6 +129,10 @@ const historicApi21157800 = { currentEra: currentEraAt21157800, erasStakersOverview: polkadotErasStakersOverviewMockedCall, erasStakers: polkadotErasStakersMockedCall, + erasStakersPaged: polkadotErasStakersMockedCall, + }, + session: { + validators: validatorsAt21157800, }, }, } as unknown as ApiDecoration<'promise'>; @@ -147,6 +158,9 @@ export const ledgerAt22939322 = (_hash: Hash, _address: string): Promise> => Promise.resolve().then(() => kusamaRegistryV1002000.createType('Option', testAddressPayeeKusama)); +const validatorsAt22939322 = () => + Promise.resolve().then(() => kusamaRegistryV1002000.createType('Vec', validators22939322Hex)); + const historicApi22939322 = { query: { staking: { @@ -160,6 +174,9 @@ const historicApi22939322 = { erasStakersOverview: stakingerasStakersOverviewMockedCall, erasStakers: kusamaErasStakersMockedCall, }, + session: { + validators: validatorsAt22939322, + }, }, } as unknown as ApiDecoration<'promise'>; diff --git a/src/services/accounts/AccountsStakingInfoService.ts b/src/services/accounts/AccountsStakingInfoService.ts index da90126fd..6f625f16f 100644 --- a/src/services/accounts/AccountsStakingInfoService.ts +++ b/src/services/accounts/AccountsStakingInfoService.ts @@ -14,6 +14,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +import type { ApiDecoration } from '@polkadot/api/types'; import type { u32, Vec } from '@polkadot/types'; import { BlockHash, StakingLedger, StakingLedgerTo240 } from '@polkadot/types/interfaces'; import { BadRequest, InternalServerError } from 'http-errors'; @@ -67,45 +68,61 @@ export class AccountsStakingInfoService extends AbstractService { ); } - let claimedRewardsEras: u32[] = []; + let nominations = null; + if (historicApi.query.staking.nominators) { + const nominationsOption = await historicApi.query.staking.nominators(stash); + nominations = nominationsOption.unwrapOr(null); + } + let claimedRewards: IEraStatus[] = []; - if ((stakingLedger as unknown as StakingLedgerTo240)?.lastReward) { - const lastReward = (stakingLedger as unknown as StakingLedgerTo240).lastReward; - if (lastReward.isSome) { - const e = (stakingLedger as unknown as StakingLedgerTo240)?.lastReward?.unwrap().toNumber(); - if (e) { - claimedRewards.push({ era: e, status: 'claimed' }); - } - } - } + const depth = Number(api.consts.staking.historyDepth.toNumber()); - if (stakingLedger?.legacyClaimedRewards) { - claimedRewardsEras = stakingLedger?.legacyClaimedRewards; - } else { - claimedRewardsEras = (stakingLedger as unknown as StakingLedger)?.claimedRewards as Vec; - } - if (claimedRewardsEras) { - claimedRewards = claimedRewardsEras.map((element) => ({ - era: element.toNumber(), - status: 'claimed', - })); + const currentEraMaybeOption = await historicApi.query.staking.currentEra(); + if (currentEraMaybeOption.isNone) { + throw new InternalServerError('CurrentEra is None when Some was expected'); } - if (historicApi.query.staking?.claimedRewards) { - const currentEraMaybeOption = await historicApi.query.staking.currentEra(); - if (currentEraMaybeOption.isNone) { - throw new InternalServerError('CurrentEra is None when Some was expected'); + const currentEra = currentEraMaybeOption.unwrap().toNumber(); + console.log('currentEra: ', currentEra); + + const eraStart = currentEra - depth; + let oldCallChecked = false; + for (let e = eraStart; e < eraStart + depth; e++) { + let claimedRewardsEras: u32[] = []; + + // Setting as claimed only the era that is defined in the lastReward field + if ((stakingLedger as unknown as StakingLedgerTo240)?.lastReward) { + const lastReward = (stakingLedger as unknown as StakingLedgerTo240).lastReward; + if (lastReward.isSome) { + const e = (stakingLedger as unknown as StakingLedgerTo240)?.lastReward?.unwrap().toNumber(); + if (e) { + claimedRewards.push({ era: e, status: 'claimed' }); + } + } + } else if (stakingLedger?.legacyClaimedRewards) { + claimedRewardsEras = stakingLedger?.legacyClaimedRewards; + } else { + claimedRewardsEras = (stakingLedger as unknown as StakingLedger)?.claimedRewards as Vec; } - const currentEra = currentEraMaybeOption.unwrap().toNumber(); - - let depth = Number(api.consts.staking.historyDepth.toNumber()); - let eraStart = currentEra - depth; - if (claimedRewards.length > 0) { - depth = depth - claimedRewards.length; - eraStart = claimedRewards[claimedRewards.length - 1].era + 1; + if (!oldCallChecked) { + if (claimedRewardsEras.length > 0) { + claimedRewards = claimedRewardsEras.map((element) => ({ + era: element.toNumber(), + status: 'claimed', + })); + e = claimedRewardsEras[claimedRewardsEras.length - 1].toNumber() + 1; + } + oldCallChecked = true; } + if (historicApi.query.staking?.claimedRewards && oldCallChecked) { + const currentEraMaybeOption = await historicApi.query.staking.currentEra(); + if (currentEraMaybeOption.isNone) { + throw new InternalServerError('CurrentEra is None when Some was expected'); + } + // const currentEra = currentEraMaybeOption.unwrap().toNumber(); + // let eraStart = currentEra - depth; - for (let e = eraStart; e < eraStart + depth; e++) { + // for (let e = eraStart; e < eraStart + depth; e++) { const claimedRewardsPerEra = await historicApi.query.staking.claimedRewards(e, stash); const erasStakersOverview = await historicApi.query.staking.erasStakersOverview(e, stash); let erasStakers = null; @@ -113,32 +130,48 @@ export class AccountsStakingInfoService extends AbstractService { erasStakers = await historicApi.query.staking.erasStakers(e, stash); } - if (erasStakersOverview.isSome) { - const pageCount = erasStakersOverview.unwrap().pageCount.toNumber(); - const eraStatus = - claimedRewardsPerEra.length === 0 - ? 'unclaimed' - : claimedRewardsPerEra.length === pageCount - ? 'claimed' - : 'partially claimed'; - claimedRewards.push({ era: e, status: eraStatus }); - } else if (erasStakers && erasStakers.total.toBigInt() > 0) { - // if erasStakers.total > 0, then the pageCount is always 1 - // https://github.com/polkadot-js/api/issues/5859#issuecomment-2077011825 - const eraStatus = claimedRewardsPerEra.length === 1 ? 'claimed' : 'unclaimed'; - claimedRewards.push({ era: e, status: eraStatus }); + const validators = (await historicApi.query.session.validators()).toHuman() as string[]; + const isValidator = validators.includes(stash); + /** + * If the account is a validator, then the rewards from their own stake + commission are claimed + * if at least one page of the erasStakersPaged is claimed (it can be any page). + * https://github.com/paritytech/polkadot-sdk/blob/776e95748901b50ff2833a7d27ea83fd91fbf9d1/substrate/frame/staking/src/pallet/impls.rs#L357C30-L357C54 + * code that shows that when `do_payout_stakers_by_page` is called, first the validator is paid out. + */ + if (isValidator) { + if (erasStakersOverview.isSome) { + const pageCount = erasStakersOverview.unwrap().pageCount.toNumber(); + let nominatorClaimed = false; + if (claimedRewardsPerEra.length != pageCount) { + nominatorClaimed = await this.getNominatorClaimed(historicApi, e, stash, pageCount, claimedRewardsPerEra); + } + const eraStatus = + claimedRewardsPerEra.length === 0 + ? 'unclaimed' + : claimedRewardsPerEra.length === pageCount + ? 'claimed' + : (!isValidator && nominatorClaimed === true) || (isValidator && claimedRewardsPerEra.length != 0) + ? 'claimed' + : !isValidator && nominatorClaimed === false + ? 'unclaimed' + : 'undefined'; + claimedRewards.push({ era: e, status: eraStatus }); + } else if (erasStakers && erasStakers.total.toBigInt() > 0) { + // if erasStakers.total > 0, then the pageCount is always 1 + // https://github.com/polkadot-js/api/issues/5859#issuecomment-2077011825 + const eraStatus = claimedRewardsPerEra.length === 1 ? 'claimed' : 'unclaimed'; + claimedRewards.push({ era: e, status: eraStatus }); + } + } else { + nominations?.forEach((nomination) => { + console.log('nomination', nomination); + // this.getValidatorInfo(historicApi, e, nomination, pageCount, claimedRewardsPerEra); + }); } } } - const numSlashingSpans = slashingSpansOption.isSome ? slashingSpansOption.unwrap().prior.length + 1 : 0; - let nominations = null; - if (historicApi.query.staking.nominators) { - const nominationsOption = await historicApi.query.staking.nominators(stash); - nominations = nominationsOption.unwrapOr(null); - } - return { at, controller, @@ -154,4 +187,30 @@ export class AccountsStakingInfoService extends AbstractService { }, }; } + + private async getNominatorClaimed( + historicApi: ApiDecoration<'promise'>, + era: number, + stash: string, + pageCount: number, + claimedRewardsPerEra: Vec, + ): Promise { + for (let i = 0; i < pageCount; i++) { + const nominatorsRewardsPerPage = await historicApi.query.staking.erasStakersPaged(era, stash, i); + // const numSlashingSpans = slashingSpansOption.isSome ? slashingSpansOption.unwrap().prior.length + 1 : 0; + const nominatorFound = nominatorsRewardsPerPage.isSome + ? nominatorsRewardsPerPage.unwrap().others.find((nominator) => nominator.who.toString() === stash) + : null; + const claimedEra = claimedRewardsPerEra.find((era) => era === (i as unknown as u32)); + if (nominatorFound && claimedEra) { + return true; + } + } + return false; + } + + // private async getValidatorInfo(historicApi: ApiDecoration<'promise'>, stash: string): any { + // const erasStakersOverview = await historicApi.query.staking.erasStakersOverview(e, stash); + // return [erasStakersOverview]; + // } } diff --git a/src/services/test-helpers/mock/data/validators21157800Hex.ts b/src/services/test-helpers/mock/data/validators21157800Hex.ts new file mode 100644 index 000000000..b901b4b55 --- /dev/null +++ b/src/services/test-helpers/mock/data/validators21157800Hex.ts @@ -0,0 +1,18 @@ +// Copyright 2017-2024 Parity Technologies (UK) Ltd. +// This file is part of Substrate API Sidecar. +// +// Substrate API Sidecar is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +export const validators21157800Hex = + '0xa5040000966d74f8027e07b43717b6876d97544fe0d71facef06acc8382749ae944e000b93d72dcc12bd5577438c92a19c4778e12cfb8ada871a17694e5a2f86c374005fa73637062be3fbfb972174a5bc85a2f6cc0350cb84aa9d657422796bfdf100b03b23766d70d0445943b290606521acaefee7660d521950faf2801c79d42800cf5e98635b822add0c97eeaa2adaaf1c7a40d50699fd56ffd73009ff3b1772021ba8ef466ccb7a06bfdefdba01817e620ada5954c34f617f6662e267dbda1503bcad4ae89b033d823dd32ad149177e99e47f1c1edbfe9e5281f585bc406558040f4dbfe9b3333f7faf9304bf2ba9af0b4f850bab4e716759e0ebc8c4703c8c04eb1cd29f566b101d427ab6392e8e99f0d0cbc48964e018ef663e9b11dcaf150656ae99db65bd6b8fcda6bfdad3437f4a15d46024959e6eb413c4bfbb10556806587e9f7259dc22ef507a75650b5e0ee96d0b8ad4ddeeb8dda2b310d31cb94606e11fd0d4df6c4765eb346aac47682cb7871da9ecfd235255f6eadb8392b20d0743acce78d21cbf23ddd27a960096028cadba6a80c2c7abd08a7baf726e128e081c5466574f932ef5e1469e984d5d39ad5946468f0ab9d06c454f74cfc2f16c08eae5dfcdcc8e1890cb16ac515d4669ed0653e98623be435327545c72f5aad7093472713dd6fbe16b514cf07d445644396f2881d8237acb70d92055a1aaed770aa041bf62d5b52adee07e7cbc0687ace86e77308a982c07db871ef2dab639010c1b82e900363ea250daec8cbbcf63bbb15c7f4f2d41a94346870574ef3f5b1f0cc89d59de520e70fc4b9bb9a43b41b2b748ab0dd51ea18326e8ce755931ea0f0ce14f14486f3fb3513a44a19970a0bbf4da8b642c9837cfa251b33384dec2570e518107b425628e49c4fee37fbc08020235d0664fc5052c4fa7415e5797c72c0ec3f7291f82335606f98e16f5480b38b3da95d2e7ee9489a89a8a39f9dac9560edaa0d08e8b21d6e8f946eff381ad4be29aa63569a54a6a75c91b878b4630330fe8ecbba7a1e216bd1c3bb7e749a98fcae77b4185c5522cbad8e826d0d92371102df685c4659f9c242ff9ac8a4ee5305770ede106db7a3cd5d3e8823e33d0011082b1a911dd8e9d01ebec53598da502cf118af543db458ce6d0e60b43a5af6610a767cf483ca0629c6cb5dbfd20f5f9d8468b153b90bf3c40443bfba9354a141280a479ee3beca7af1636aca17582f30829782e2c9b1b9c72aaf8060563ab37128865fced1fe2ad870d0f1ef6ac3c73c78012dbaf73ee9db06ba403cb73a52312d761ac11e70c35595d382a0c860bb0501ab0690df6c9f96ea7179b206c1d40146fae5102954f580c20e67585bbd57aeb722bf29fe02607c8b876270706a90114e5b21d2eee0865adfb8783ac900540d67f0a89eb6881e77dda91d5093988091600e09e1d8a1324934f83d55d5f6f503e2d91bf4270eeaefd462f24e4487e2916b94e2d5d12d60c7314cca383bf185ddda83f413da740a121601e3277d3083e17316829c406a05cd9cdb8d5de5fb23d26b3672f8cbca1fcc6538833589a121a1868ec482f6eb47619a67848abf5596a9e3064ce164847c3a469475c8385757a189ef65d1a77acbc1492c95ea3a58cb70b9ffff211190368bbfa21198c734c2d18a5657b88d667ab46d1070d58ecc1f15011f60df20f510ee0aac61754bb9e011a0e48b445798cbb689f86c9c17cd5428cec3bc370fe85a73cd3f1410c335d1e1baa453966c043ca367ccfa19f450244447b9d32f4b7af2d9749e55a57ac09cc1de154f8bc16e4a7bacf303141c913d91b1efdf4ae06c3a227f0a2877a19e90a200248f0353500a12798f54e5581206a45ac70b7f2d38481dd40c443dece9d2620857206fde63ea508a317a77bc1ca2a795c978533b71fc7bc21d352d832637c20ac6c23e69518f5c048cdd4341f431d23f1bdcba3abfaf7349241db61ce1317224872ad60345d726772361291b4cf7f3e1b8087f2277e2b5cc25a9b309f472722abc926b7b1a5a0a202183919de1089d04939e09833ca7536b52cce9fa9bf35232732bb4a41ba025d2581a518dda87cd42013c11a313cb291fee7a339fb60d924aa9e7b57a0e49b834fd499464cc0c83135679ac384abd9e6d7f07a8def164c264319ed6a0895c04112917fc9bdc0771f4a4773aae014a99d25bbe06fa1057a282a194090fd6715e06430d8a6e9c682f021eaf398830b10db94ca8c27c9ae4c288197fe1d9f6b12ee7f9656663791366fd5ea4ec01999d7a7f8b84e22a0591b28c57701aff086e2d4d00536a35ebb0dea7732d5bd285c63fac7197b6bf3e37e29a843ce5a67c2d285cc5f302db173ee4563e7af383dfc6b9a8fa64e148efd122abe79a5bb8c32c8f3084fca95a41a12554d33118256b84cfe47207dbe7513142ac73c24bb740376a5b0f44814e8ce8b34f23be0650e99b7ac81e1159f9c31512c057adfe2964a58e311013d80e9955a8896ee86be537ef9c6bd983122d6ee5f2c2a55b5a609baff13899d4ba4bafec105038d66a716494968fae1a849d2dd5a2c2a55b5b7e13a772e0b693c3b351d2fb5e5b4da18ac379ebdb2f1f2e75597762c2a55b5cf8d00511ef54ac7a60773810e906befb1b322f2d58199963dc973072c2a55b5e0d28cc772b47bb9b25981cbb69eca73f7c3388fb6464e7d24be470e2c2a55b6068e3b8626608321044a89b82fc4898ece34524659f48aa72aef556c2cc16da9d1f7271475075aa8eb5c6667714426b8c41dbecf92bdedfa462b71632e544de1fc9198d35dd459c8ff8bf0a2c86eeaa4ed8ad9b32fb8d016e696ad772eeb1a6884bf369c7d1ab3f9ff75b79dd0f6c6a9792834e026a8d2f7ef049e4d2eef2aee654d4975535f2701af86ba6d169c2c9a1599b16635a2a5e4640db94d30606b4c1b89b4e562efafe76bec80154ac8b3e16e04c2e0f619bcdc0a5eef52309145b12c7144a895495d82d6ba5cefc34b841859d6732af2759287266a2b1930cfdb48ff7f33b08499dfc618a8ef9699b8345fa65f0b1339eb8eec3c0e455530e3f26094a2536e02b6879a2a92752493302d84029b80ff449eba8b9dd80d1d32a54d822b72d04a74a61509cb66376129556412bfaec8fd8d41f50ed423c95732aee225f2714c573eec965a9dd1e1ca399636d9158ce068842f0558f360a43532f5040e4ff22a9cea43f7cfd1242e3ae0e57140c2f4b985e83ffde5e5c4492c342d016977c57b72b8747f0203f52c668d11dab39aade5a08fcb199302488549346ebc3380be6816f828d1d1df372c51fbe99c95a321d7510403bb98f067695e360d52090bbbd32b598beb80197c95c1004505135f0493b089334a52e3a18140364c29bfbc9f06a42b5cf37ffd831e91c843cc25d8b90071546810ecf279e45836de3ae430df7fa29cdc89ea92761f5239db2eda1c36b00dd9119958a047183738324db7eb09798ff9a043f60578f23588cc03029f024a4ddf9fcbb792b12401388bf0fc0110c1b18dcab471725083bc6b0b52edabeab0c3e73e506a54f9e04d38a295559d8977464fd8cdd133f8805f2388e42a6e009219247048a27d9ac06b38f0efde6e81baf2949b657dd6a8fca819c72f6e35363c21edb9ad3c78a177023aff04302b62687f64dd3c015a0f5e11c674d91fa53415273ad08d8f2929cf683c017930b46ab5a4413bf3153b001287ed5ff7fdbd2734cf69abc843f4ee04473e5f05e5397c92e440de154097981b2c1fab4893b210cc2a8680b8096a6bef233e8faae4c5713c72aea65d52aa1616d3e918dee3819fbbe08cd4c76dbd754a503eea2e1c17fc878e20fc5f88c82d6b08fd3324cbd24c176351aba2b06d874f214081265b36874557cfb2aeca1412e06a1a026c8c58a172a2d3644a6790bc9f5742efa2e57a813989da4bac4551e4010ee45003fc3f360f5202a958b2b1a299184411b54c486afdd65bbe6f482fab68a28443c845c004a1c5d141314577d67d0a442afde41c8d0cff9680849824712996d0cd96906dba9697aa5110cd6d025e154441735173590bfe02493f4aa52f5de467182e8d1db637a7a1493d3c87d9235144a1336854e44cdbfa929ad12e913e4a1870c590a6dc5e3983a6fd416b927f5344ebd2b934606a30469bfd509293c34174336f974709964a18bf40d99a0bed0d466ca78e64f7df8847d8c192f3daddf32426f72a3baa4c3e320082afdb8841344687fe7e263038bbc1b371c67e4f18b23a6b2f65c9cfe87675db0693eca8161d47e503b630c37057023c04ea57149dc70ae19f186db24f59881c55cb61da522f482a064f119738425180e442727eded171c8091bd90182c3071f37199d954158484cdc76e0b6b2cb4e30850327cf37e717d91e343a62bbfaded38aa8133cfe34484d62a228121a1800e26e8b0139995703309a81ca4467308d734b4678da3d404877511245f8954e48858da743b9eb3544681c27ffd8802c8ea1669e961a2b6148931d40a4936659a5b03e419db8d3dfc8fffaa9737ad5771651552cc840210a4a45b84757c48776f4c5d887e269e8e6c3f2fc55f75adf222662f129f9fa5b404a8de2c6b6c1690a27aaa4cb64e0168bced54ab568958965187646f06442be6d4a9929f34dd83ee1c1ef7da143179fd3fa3f4196b26c855d3fce0fba83c6e7034aafcf962e7bb7635cdfb9343f98dd5e5f049f5afa453b4ffcc543764eedaa1d4c260b3a7196660071ca1b27e79bf234cb7efaa125300a696a0a42ee686b17344e3f1e6f79b3560a0396f1099640cca26bb8ffa4ec9331b52f34b34cccef63105010efb7049583595fbe3da57dc5db048e590c28f107e5e4fa2bdcc4b1293f6f504baa1f30e0267703f471e94de948bd9f09caaf3c3a2f4c2dad3685a79ee000507470cea09ba17b589be6dac224ed22a5a47a9dd4d5606def1106508ebb3805508f2cb4567caff040d0a47db244d7ea791d9ec23f0d5d33928a7c6a62b3077a5606fcd617bb7328f828ebc07396ab27f038eb5f036125a2ab5b60ab9218f24256196c14df0a7036b943ecd01396685e799f786c0f131796c06850ec9342ff0156363ba0631ca8cb1371e706a8c3af27011e983480e7d09124d7b3c6732d633b56ad64b58553e04382fbb95145efe3dfda88b5512c0f8fcf1cec8ee0a05dd172582bdd02e8b7e3a97da353f92954db770676e7f07eddf2d08cb9f2430aaf442958598801d9659099c1437f879e3003c0461affdcb378e9462824a1b7e5cd4c6558c46d422c8c3d1692f51889cf64e2e32cadce1d1d341ca6196a8d4b18a9a3545a2bed24ef5fa2e8485773d5d2a6b707da48e6d107d99f0118e37d446c0fae1d5a39c793248e0a8cac2ec88172c7d1a3b2f10c6c2455e20c5dbb739cf3e9ea0a5a5809ecabcd564a3544f045d2f77a4a90104317df62fb949ba966484eae376e5ac7f6af5aeb5364188840d02f0e74e813e6d9cc0398d6994b66727658a4fb305ae7010248daf19a0b83b3d131f63a693785222293af4354035b8dce851fb02b5e348817abb98cb962fc0780a47ebd471d9c318395fa80b4529a64cfabb2e32c5e51610a8f5b5e04bf2f28960aa138df2b7531d0dbea936336ed40a204c92e125e7b86bae8d18cd7470cc4c03d47875d002cee651566030fea5312bf0e69562a5ec3359163109e793b726065a0ace5a201b72fbfc2d346c181773a04ee3ec872601b6664cabed4d0e979e6d2a390e69fdf8e6db71a60c17cb5080222cc174903605fd1308af1ce85bab5ba3fb19b330ab7dac29e01ad501420560f44df7e0e1c628f36dddf8cdb0242104a2531e7d3efd4860a9a4633be69aaf30f63ccb25a5e640574072818008b0ffaa91a3d5febf7cf106a9285e35003fd7b55e2c1ae8b6d6495827bfe0b07d16c549eb10d7e45997e95788be44a3f277af6befec99fe62f6558e62bb3e9e7da178a13f657c9a0e86044335a77a672f9f571489f43ae07b66623b05ee2fc416fb82b6ffd5b7ac267a00c4d20f712f0f260640cf96df6ee1b66798e5ab03c38b0a4adec63aa39210e852aeead6af4d8a82dca14d26312eb096896688640393395e0bf64930fd5470987a903ccedc679b7153ce21066b37c6d68bcfb86663abec620784eec51572fa12ba5e10a7f312981e4d6f1bce379b93968f26829ec470fdad2e63d97741a88df1243ea147bfb4639b97a4c816f9605fd6a0da15516a63ecc95cccffecec2a2aed962e92cab661af4b1f76b65e429cf796c31b105bf4566e9837d11fc54b523f7b3ec8993f8c880b1e0c283d7bcd0aa536c71634f4422a46109618fa192d46be23d042ae4c555304e987a77482530f01a6cf3e7bf1cc5f0b87e7aaa8bc5acf2489651b14e768bcf5d9206f878778f44046e28009eb2b8b7785246c452948c27169c4e3ed258ad7a707fb64beb9442fcfa6e5622fbecb64763e32f2b39e24a301241eaa6f9ca0126e7e29adb922a1f41127091f937fba948654220a41ede536b0d62cc30d20274a28005b8026564db8d25744d9a778b5c53b54eb743dd93cc90079261a6e7fdffd8798e6406817d125d7b767b1176304fbf79701bc22060126cdeff4748b95abdc5de32adc9823c38126776c26a1fb9acbdd56be00d4c44901856929b9d2a879caad6119ad0417e994949780946289b4befff0da9911c013aacd2b280ec0529a759b94c67e4899b9b705878177a8ac7c51e9a165edd1a027402555ab42d2f8ec8107536df7fb34084eb357ab1aace7b8830ca683c8a8bf99a872996586b210e0f92b8f5a28fe985ac07317c1207030eebbff1aa8d1d3fb13ef4a44251f81480ff627240d45a0e4547c6397c2754f11fe0d5e6b3c2174eacd1fe36d2738bfbefb541fb4f56eb298dc1491a7c3f190f0abecf2b39643a21a67df302a024487d84128d5bc68fcc445ac23a067e74e295c040927de4200c770994a314185d3ee447be3d70c79ed056fdd1ac537ef6c750071ec4ea673adf3a02c82062d042aca83eab159f599434894946423d8016dc2b09c2277f4ac04054d67ac8bcee6368976dcfe191b2cdeeba9487246780833b98deaa7ae201c9d2aabba6d7cbdc14ecfe1548c52b8ac4907acb14c86380af4d39c625c32b2b6ea0b94c341ac826c49fa28451768e71afb46bc7afac0480bb3bb99df51400d9aabd8e0e6b6610d3d4f5512ae4d46e03f20ed14eb0cb3e824f5bcb1f267ea5a74e1a1c444c937eb29cbaf0fc98f293eab5275aeff5dc5182635369d20e36ccce82c98283410bfa4a4153e31bedb52b33cbce5543cba21b82c6664f95a65717f30013c91fd9ece1c1398c2f7ed5e7cefd23752b63f1073c8504c9c90a2f5c8990837ffe39d8574d01e50800dbd4203acfa5c092bcaaa3878595dbf64624ef80da7a916f139b607fe8ac19aed219da7c7f9990be2c214d1e86837a8e46d4cbf152e2c25ac7960f8b969e2c132e4cd6e12f85c322f492de508818f1b289df88876f0199aa1fd723dbec6e7bbc5b08e5eabb89edebfbe3983a8a1ec46479fec3c43eea382d637de8f295ccb2c0b6f6fdd4c5d34a687737a6018a32f59713f0a129fbc395dbc853f51ab53d45d1684c4bc8ddad89fd55fc096f8ae437cc2420c617f2cdec05405db6c449bada7d2b2063eadeae636a25c5ca798c038403fe48ee0068a652cfe2593d30d5701f508e38ef676f392fdc85f806588c23324b0cb29e4fd1a68cb08febe58b50e39d8afdb5f752d6c26c8ba52fc0028c2bae6068de838d1fc684db669d5ad1dfe26f37887ce815734145764b7e71248d6bde6dcbc00b588a0ecb71f4c516d9ede311d3fcf942f89228221b92a2c1a38e07d43b19d901badf3a7f57155ca84f2f835448e93a141bbbd33eac4b767d159088b991261091d43c92ce790d4c8fb007b7e8d19c9c619a7d722c6fbdb55f049208af2fb9f1511facbd517ba7ec0296d6fc9fd010896eec0f43a415b68b3706929885c66023f492df489cecc1316d0ba2d2e1af772c55c1d8285c409435b93294211c46d7bb07c67c2bc80e7d5ba4623f8ef0d565d266723ec60497f0375b3b94aa4d33417623e208534893793c90f0f64149b879f71aaef4870f252601662394c7373d1e335e281b2a80565b3370c5de9d6b2d87fdf0cddac5641377a24b5094c8f2aa65dff23f542ee99d7191e88eecf45b3a61b7350dc3d48804107e393d960d75eab8e58bffcedf1fa51d85e2acb37d107e9bd7009a3473d3809122493c96625a0cbd0931ad831add3bcaa6320950385aec23b3854c6ce987de1c9f88379a71f753f8576834b7b43f9c33b61c177480e31c4b55308297fe3e7dfce06f7b9ab9fed826edb372dd3ceab91b381da1304bba44e3017d86c74d098a47c493029c14dbe4982ae73a084bafe1f7eea2d51f3819088f08a10eb2fd7a1343c5140b9c6a3401d06cef30fdbb33901328f3611dae8253708779a5d66179c9675826359e96bf21be7c85221765e317c539d52707739d0720894282de072a4a82573a689e9ab121cde23f2c4b11d6007fb2da87a19d8e92888f63c80b0b814249cbc8639effc7fb904ca3d8cc4f45b464ee4dac705c89888d298bc9dfd2ba563d5b3e3fa0209c10c7d6633de64e166a68d9b45e7f02aacd9497f5c552e577abcdb17d28a02f7333e25590e4f568ae8a2ddc93a879e92e48fa3cf1666ac56e020c106d55a09b87b34880c5375ecca849557dc87a00a6243938d5882017fa0d1f60193815a0abae3a305a7702055c212f7beb51b6d8f040b27db842752ae4cd0f36a10e59a1e99029c8d8deca2c762dc353047586d9a46e523bdf3b4ddbd9fed1ceef71fda28942a9d2e8c8501860b847eecedc45d602e614b8b0849b959607d0dec3d071a2fafeae641e6e264d77723c00ab05f503db48ca3597cb3242c2b54d90abd01da37a1021f6eab9a2658f2f6a5e08f5851de80230d270662dfe648c0c7bec2e46a40c551ab8f3bd70b9afc4bdc348f71e3403deb9b7dafe384ad536a5b42e7107a45cc4c268de2392cb4df2992ce50604add5122ca20d50a43fead62a9042a369a471c7aa909cc665212bb36003c52c5d3eeec39f96556a8242e861c5dd7dde41a4d30a367570be5fc2ed7786254b990be8e9e4b0de0ccfa6ba610e445cbfa826a542ff1876727dc5075e0a328748e64c4249fc522aa72eb73d5dd6645a7468dba61fb8e0537d0f6c8d4f94d0466859215b77e5e53c44981253983062b7a46f72a63811824320ceac5d0e0347b9f4dff24d4cc525001d93b31a492442c2545335a6b6a3f651fa366171aac7a9f61e950655a1fb1c3488fbff5893d3d42a908d2ea6f4856564516ad82f0444b25bb0baa4f20573d2ee54731ba24ab28138c92912a81b8a2a03afd92af18f0338e43afc504c6018aca6d9197c0d3a149ce65efa0ea8955315ec9f709c88644db0bfc9df67e13c44336d15899eae335b2e0b05346eac133ebfde441672c055b79ca9a6059850984eead1ae036f48ca1230e7f0556fadd1d40ef104fcb24be637eaeb9704064663df235fea0799829e270333774f3bae1595f870cc27a34374a6b819a554e242997efeb760433c6fdb4372c2f28204aec27c7e044d5b7619909aed070a38751546e4b7e7c3b98c1cc41476f335f64faee72821ca00e62304e4f0d858122a65b87c8df4f0eae224ae064b951d39f610b023d129d9a0cb9490d097dbd3ca947d4830d3a6d7e0fa9975ff2789d9d97352b0b000e408509bb033443af0bc700ec11894f81c090d58d7dc2ae3174c54902bb2a9dcb35e27b71b75bdabf1cc706c567e50bbb20631e4f94d5ef6aad740fc6db2b72031974383a97e8c694e5991c744426382778a5a738a83063c536b6d7d23b2e07be4d6d82f546ec91d6009ee215bb736be5b4362e66e7b466ec72d47624fb4de0e0553f854c72746045b90c8e5c67d74f5d8a52d4134b259ff562e4b1409b63453bb3d29be1e8e5398608aa5ba26dbdd4499e3a8dc5388128972ebffef5eb66953df31de525fd4c075b30b266f8fca1f29533c9dd7d45128408726d19979b69c8792d56762ddf68a261993acf24305a804494144a2d2235fa8a438e10f75b7972e09702baf7eda528c6894408b1e9c702e5f54674bcf6de1b55b3aa16365b81712e18e76cfe727bda3fa65662405f584f1ed059aac110ab6f41851ba7e26b8473b5e37e993092f313f54b58762953589245f5552612ec90042a6d59d807abab650983063ab81171b9efc65665326b507438d99994d489f07ef16bcc93d6bbac6ca95205b7d29a9f95adf28d5f94ba010ebb51f414163a48747436c9f9cabbc1729a527ac8770c18456f142dc57b24069c9ff1032d6c3a1572d84b811ac7ebf10d082fee91854f7a6a6c56ebf8bf0d65bf914a683ce4ae1db5ccece06ad27bf7105cdc60a8125bc7d465c5587c26d9954572b8579bd176052bfccd2847506c0746c03c3e5f7bf70f95401b92882821ae685f544a962703e05df4255732f0ac1f215e6d1c4cede0f67c75dfe8c1f6f3244a318b4405fb775e76b8b6453cd3cc235b0e23ee7b2bcceb64fd0e126b965204f7069aa3b4fcbadb8d658e2ecf86bc29cd0286cd14a9d3538ab155180c8363b3e3af8e6e95561bfa0d9e4a459f65fc2eea43fd0e45e0e756130e01667533bcaa001e29e0192501e7ce2186ec3554ac5e80accf4092ea6f8ed087544576dddcfdd51366b492868f73b0c9ca19c5f31c618838a7cda0fba033eac4b3df3e2b31e1b304765bf98004eb72690fc117f09c65de6003709aa5a6b81354c00fb13e281ac05e852cb4194c69f78566e8ac828c66d295453335e1fac0d88b96160f5643d0bc4ae9eeeb8402f26c866187b9960c6b387955930beb773cb946dbfa2389ebcab878c4cba6a421e9d2b9778a2624cc885a011dbc63183416fa77f78a967ad0ffbbbb62e444e9eb490abd2fc67d326c88bc26c3cfb3797c1b2e2c9e7fd0320d9899271ba9255a2408c4feeb33cd425ca38730919998d8ddcf5e729a8a275769b1ae064d1e0f5528db03eede05d5e24cc2dde4403d477d784abb0486ce18908af209f2c9d8581d33f7e847608b5d124cc472f8aa3afdab9a0f1abb66088817448690426bacc0af6f509241ae452a65ccc9385c21d3b6b6380cb412a5c57a080327aed7868e09032d21c958a69e69e05cd0b6229844999d1cde6c2e74ff90057d24e5875b891f645e2fb4a47ab90745ece4761ea5d8d29dd92a78dc606246d8146320a5e9292de240ab15f60c7802e4ace5c1a4553e59ccf0cbd8db850a5b8d0ecab163d116a916e1ff9367a4946a238d0014ab170414e7f6fa6f6ef20ddd28fbca03f3349e577ced6073e2c14e6953dd0ee5462aa1f69fbb13d1bbba3fe774167ce82a5cd36da733f2f2db0e7e4ad4dd19f8df3cdb194db075979039a6fd4d912298356bb2931c08c35db4903f53345d223e97cfb5260aa90a5f3cf5cb993f2658f07202847da92c712623e6c5da31dd22f4b3f7a9f0878a49954e7b4491ca841f68831c2e8aeb383cd79dcdc00295bd44533a4d21fd9d6f5d57c8cd05c61a6f23f9131cec8ae386b6b437db399ec3dd49cb030a944c5d66de3ca7d4b8f5b37df03a610a028efdf313b5b405b3614a4d4c9b5341b6040e6f218c5476e5bb87a26fd80e03a0ac65b92d4d3eb917c8f22d62a2b80ebcda1b2f14d2a903088759ce56482401fb4130cde32775d6d210a6ad6c29a7c39cee45b0e045a94081bc188ef73be2be086d66aefd850fc7eeacc45d857fcac7bd9bb03551d70b9743895a98b74b06e54bdc34f1b27ab240356857dd85f93f47f94abb8dfaf8c817af3d4b539847141277479506027f06c54cba440d880b45154006c09eb568c69f1febc0dadccaa59723dcd058cdae45c9c13ae68d88e71e550f7c318065fe4ce9c7d58430af17fa534f87d27195dd93cce667719d8b5b26b1cee228c6ece5a4b44db258985abbc9f0168950d744269bee80b1852d8ea5408a39f0d58bb8cfc1e307ef85ebab9b195ebaeb8b8782d35f525e4ec0dd9ba7812c46be60e86e1dce7cc23721d4cdcaeb25bd8a7960a5fbc48d68c4108daf47069cecf5c31da9a1cfde3732d2b701bf9f94c77ba7e99335d6b30ad080adc1bc0568b4f02bc9e8105e9dd9543235232d321b4b46da86eb8f94bb4de8714e043d8f7872cd895f8957c9179c4264816be3e649713cb3bdc523f752602cc3ae0512205b8cbb851e7b9d862d204b1df2d7598e03041c7e70b373ac45b1e6cfce21727312b2b7ce579dc0f82f129d4edecbcf00abca607d73ccf16e8352cc777e40db41d7f07b2b867fae0d7b8ed6767d23f7b53b032710dc5b5043474bf1d11e45dda4a3ac186e2ac54d8aed98db9dbdfff54087b96414057ad263ca02bfb96e693f8c8c6043a5d8c8ed64d56523d157625011947a8a79881987d9e9100963ae6d97bf878b1012927ae6afb7e092c541a5abc3904656981beaefb9ebb781d1ce6e13d835bf8b44914ca24613b9ccd2aa2ff6a187dcdcb11d531701c5fcef910e82d3b7fbff7f5ff1010b279435012e0ce3b68dc387eb2827fc2e9d5001ada7ce8382680e672b8403c57f2bd1073c34219fbd40160e8907ff4cbc548976d263fe83d3cd7d1c6993b01b757a4f2eb6a15bce4c97952533265dd6193310e9f5d64e8c7ad65c15fa3ba64424a61b177382a0c5468135aecca9ca454f5e7ce4d305bec027631ca56b18c5e87aa9b057f08c9e2d07ca2251527e5ca3058f70b71e432ecdd548c83457ab43caf7867e2bef91ef783025db9659afd89794ec1220acf29ee080855f606cce66bdfffb8a73c54a440fa4a4ea1f9a487b7e2dadedaac205beebc7887720ec1ce8b759629cb425df5f15011f0d455bfe1a22ad4cfb36d1a3bf068505a66e272d987c377f0ae0c0a795edbb4db40be62187205803920118a28f093fdd7214faca57e8f0a10e8ea4c03c4602af97676242b933a757824ca8335f0de782e8bad3c663be60812f0a2ac63464f5da3ec448c73334c07d71ef27f2cf40cd7a2181289e32776625b9f3a193f749e33ce1bdeb76cfaabece606c7324cf58927b296a23cbf25794b7cbb8fe31c5e68f2bcd2c2483e9c9cd0712216f232f5c0dc71bff8cbdce6c32ae5260549ecce90af19512e7da031f2dd02fd920689f857311106c8d7b0daf6e096db9a0d759b52403e439ab23fd6559780a8b1c803f8596d3d1bfe4d7b96b76a35bb52078edb437a5e5b932fad5f653bf0080e0d50fa9fb4eccab4919417e2a6072c77e55b7d1b69a9682629a09953ce699260b564fc416cc21e0f367a2c7450dee30231298daacac5b73bc88acf62a4eb6c7efd42feba71d41f307c6b4c59481cfb3a5d732175f7766aca821e98b1ffa8ea9f355b'; diff --git a/src/services/test-helpers/mock/data/validators22939322Hex.ts b/src/services/test-helpers/mock/data/validators22939322Hex.ts new file mode 100644 index 000000000..035f23f2c --- /dev/null +++ b/src/services/test-helpers/mock/data/validators22939322Hex.ts @@ -0,0 +1,18 @@ +// Copyright 2017-2024 Parity Technologies (UK) Ltd. +// This file is part of Substrate API Sidecar. +// +// Substrate API Sidecar is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +export const validators22939322Hex = + '0xa10f0000966d74f8027e07b43717b6876d97544fe0d71facef06acc8382749ae944e002112fe63749d3925cc0f36c9440450f21fe76c46a36e5b3343bf47d8c27400003afd6023b1888ca027ee106726fced92608aa111486ac2b82717744009ea040045ecb0eb5cc8186154034f66b26d56b2394958d3246f419e7837ac24d0c705007b26343e6ebaed9459ffaae9358c5b2460902c2a0d63d68a748e1d8eb15033007cf8c189e43ad7cc1eaabd0aeb82ae7d62e5ca915f6bb87c4a0d85bb8c377200818d1c3bb9ff5b214698f2f25c111501236311f53bd5c090d14b3276198259009ea4dab5c62d5da4b72e17b5ee5932a3098fa728b996bc7ed07f112702d32f016768f8ff56cc85e23810144f87fcaad260080c7547bb6d3c20d0b4929b9d7302098b5f718885f0d6f0f18359a7d16b44c9229857934efe66daf4d9f0eb7a43024b926ff980fb27c5e313fc8a5e910fbe9c4206029fcba9850a790f3789ab24024f853befcdb3963b6c6405cd765edfdb6323afdc79c0a842154ba7e8bd7e4a02948b18cd5001e68a33499343bd8ed974fc8398bbfdc3dfafbc7c478544f67d02b1fa7ea67a8d8ea912ec6b7d6f10ea030cb37490ef3d8e770b9d64cbcc661002c1151878ea5c35d75c7d4f879fb48ea7a4199e2d3ac9ed79d686a157384d2f02d14402004210a068081e32b2adf51b26edf73e40b3f621ac1ae384290fd61902f47b4137ad1768dd82a2443f0422809b48c6da5d375af3081ed793921a0e5202f777f4b3001d83e7a2441ab8456d2db9ad30b77e5d3f2fa0c4150b769e9a3903460b53d4200f03a8183f00d5ed6c971942ddae9065693b4702f0f782e5c553049e9cb74fead73656c86dd66bea1aa114e9ea3ce83ac531f40b0bb11bc05b2a051e046a4125b20b4a9df6a8d1d5f81f6155279dfaa2050c7970d4470b890e8b055acee05be3352c7d09340c8c6f76c87170f1072bc0ce873e529381c4f5c8a206194008e53c983ed10aa3b62a2b3e067129b0daee1bda1c5f78dc27efd0da7c061d1e35d35f1c76eb233d5001ac8dcfa50bb23af8cd1d2f89869504dd85ef3e063dfccb3cf16ab95e3af6fa877724d2ec90697596897ea59069aefe5c223f5806426063e15c16004b94c4beed8284b50dfadfd1aa8109694fcd8695353ca55d0650217af71d75baa1bbc577761208886a474cfe4c24435b0295586f2f66a57106dc4e63396771cc7d4e36c3fc749db4b0f367c9c9edfd37badf8aa31efea96006e73f079874b71bbede9a53c521505e4c7f9785d042779698ed1970a58355b507598edcb29987227d3fc1d585227937f701af167165fb0a99b6a21983fdba0407e8861ce764f34220c198710b60b72f8c59c617fef101bdba96bf6f598016d3082ca18d84e0fe9e900f8be41a66f601532f92413e5e8e65a1c80de6c6dcf4180844955d211c71c9150fb9bb4a0a8c962bf34cf223b772ac17e7247945b0b21c0867534497a5ecbad0923c7073c19845f0d119417aa81081ee379bf1988582320888fb08c27e1d787c8b2e99b9c6892aabd83344ea70ebc3137658163441812508c74cb0df1d73c69a078a6dd56d80ea94e08a2f72cba07ce6c5b471fcca897608d2d711e9019c7b46609fa94649e2d99215270771dbda194463c6f6c3d8147708dda0877b73535dd8e892916397ac9ceccb44b8441122bb434b17e2db376d0308ec81d6f3942d5955364977664f27b91f34f3b365ee0ef1ca87facc9bc1f9000a29c521e7b80fa7d00a0de3ea0ca6a2ba5b530681ae70de043752d5a4a29e100a7aadfd3b852856f9ed55fd5f9cac3b392e33d5aa9811376ede585177b14b1c0a878d423f282c83565f1e4a5aa209e0a48b7bd461bfabaad8f2421bcf3f897d0aaa043a16de60a786bea2af53f9b16e356932e5763fa3cdf417faac7731a0520ac2e966527ec0e3076ac6ae05402fe763d6cae60a8c01e108dfbb6e92d0863e0ad8b4f94dc8e6229e2c448d995094cdc1bd356dc14c6155467ac07ede18b8720aed675c9de132c2b598f6fe8d256c8057b2d2cd28b2ae3fe6fad5475b4073240c0a7bb6b17a969c1c076cb422eb08c0185f932f494086f4d37abedd18af487e0c242bb5544c5352978adc3ad74b7966f06ee525c2e23425259012d0213a4b3e0c4614be08a085757d073f5e47466045054375e367fda59a24c1149c0ff064710c9c418918e60c6cb8908c295896e1fa2fd2c95102bd987357420268a739eb1e0cad33c225bbc550c7e1b89ff2feb2dcc8993f2e3a8dea40898fa8f54f754b000cb5554f54c346c7996d2f6ad6c5bedcdc094b6ce0bb9a4afc7db6ae865cd3780cb8ca7ceac36a246a8295a56068d2b532fa2c61affbb34bc5a80777d91f18050cba1842acbaca7f34690336c5961febf072d096dcb390879fb8b1c73bb8014b0cbb4adb01af79c560636910430458ac44cf5fb9e24482279191e6ad8aa331480cf88657e8a5e5005c67c0ae58b0ea1137b817f32d30d80aba618a70b13bcc660cfc8c60526d479989797d393fbf2faa3f749f84b9add926f6cf32abe9058a290daa7f988ac07541286ffd6ac83affa9d4f0e119c04eba5f1fb74e51719867c90e2515bd2e4ff6a32fed6306b3fc37095cf875c65f987c19c2b2691d8545fe510e26b353f3627fa17bc809a5bffbdd820ee4fe2a124d912bd40ec9fc4d148c1f0e46029cb6daf09d2408e111ffb14010387ffbe77b16539839cbff1473a3a4020e743675c09cdbc3cf2842ab6be3ac0752024e142fb781b5ff8fc812fc8a802b0e78c9e4ae8f7c37f4cf9aa3183fdb78d5f59b260f035a8540cfa5f07aa0a7330e794356479178e2d043755c671a3db6b1882700744cc0f570a84fd33e257e260ec5e2a65a63b70c6eeb688150ce1f4a7033b1c269fa9cfa1ff66e101e284b580ec7913a549eef6b6efdceab8b24d3180f454a83c1216ce19b0fed6b2b99a46c0ed354d2b60d8506a8bec4f411b02a001f13a01714c3fe011b369b0c418af5990ee022b7052ed281ad71f8cf98ddc2efd5b5fa45d741e4861c225a2bcf22731b0f6987ec94f7c186a7c76fd7792be048d9e73494daaf0f86245f2f68cef20b2a1010b8a9bac58b959a3b92e0ff6a1a2946d36a543b8f8d34a70f231c91f733131020aecf6332d324cc8681199d469780ab81d8e87dc408aa96ca573c590ce34410227a1e42c219d855a864ad0318f75bc9660ef9cd0327ff6dbb4b615691e252103a9ebd690d8e1dd5e8f3cb43b05586bbfbd8c36ce3e976b6f45da4a60ff01d10448cf888bdc13a933c0d1d33653f83d3b34bd775038e0f5900c5363aafee01108f1748feaa72e68ef019b144c142ca933fb64bcd4b4620d3666de9ce2fe65910a315981265a9951067374fb624c1976dcf865c9dc43d08e3031ead35a0621910df08a58063aba4d30d78b08836c4c49e23fc1e11be7c1c131d81fe94b08bfc11db17b9d04c6590715fa4640210f2d21f161fecb2fb551d472d53e2b49a6a0b12313fce4a12f0d70df33b7e34d5d4465c36287f220e43ea28005ac76322132f124a405d596b2d5f19f23cc788ec0fbbcafdb0156c4a6417e256f55bbc71dd3d125ab2fe5c8d89a80539712b54765ee2e8414f15d23e96f9d1413ed04bfa151b126c38ed36e68714fc674307eab8cbef090e054b25516e0d2da794cd6f66cf5b12c0e71c471767a1c8d1f0fbdc97763c8730745526c890b3d603d90337caca4412c0e71c49ca78c235b4cc7c02b0dd42d2ba68cae14091330453206d11f34a5612c0e71c4aba6d53775e0a27ff00a6090b2d9bb4171096109a5aa2a59328df6112c0e71c4fcce3bde2baa598b4b4b15e3674286d0dc2c03441be1bd48408d92a12c0e71c5200cf1cf22ac62ae2910eb3e485a104f610f1535ed1e844b78e291412c0e71c536b024440ad0fd64324c6eebdc0e497207ff42489ca8a2489f6e32712c0e71c648c0ea092b2481ad9657956548a531fa3a89a140d3d8f9359fce54b12c0e71c651e27773fa58160878f81a68b7b054ccdccad776181f757e763e51412c0e71c65c6d73c4787dc93561ade71071ffc5d78756ba4f606fe91a6e3452112c0e71c6c063c135438f8997461cbe25e61d7569fe4c3f9f07db032f75a581c12c0e71c89568cdf09515dad33fa70b04cb39e21d8be64dee93e17569f96212912c0e71c9267977ff8cfbf27005fca3918833daf0d77537e8f879fb9fcdf2b0912c0e71c9c7a0df0270f56ecec10f80525ff477398256a84db44f8362cc9cb7a12c0e71c9d62c402a345adadf6d07c72b92a9df6035128105150414c0f759a2312c0e71c9f53cee8937a8a3a30c639efe4e9e61faa222953bfff2cc0a782956c12c0e71ca519959bc745598c859160abc7bdaac3949ca44ad9712c4a35e80c3e12c0e71cb1a9c147998723d2dc7ef44affbf359be54830a570a5840e2734c47c12c0e71cb2e754bb49f1758439d6729debf9a30cf5b9a797ec564f00592a2f5f12c0e71cb40d9d91814a130bf4ee7008a6e83563520ad677eb2034209fa20e5512c0e71cb50b65d27c7147f5ea52a5a805f8f75301ecb5d9577244659659965b12c0e71cba3dffa43d603a1637f373c134f4eb3b0ca902a937e218cf992b4f1b12c0e71cbe21aa863d666ff694ca4aa3a1f0e89a9e75ffcdb6c629fa1d00646012c0e71ccf0639294d8ecb643d6dad93d9660836463f91d1b66292fd9b1ab05f12c0e71cdc8163ee018634a900a6e973a87e8740b6c9c4400ca1fae2ac8f4e0412c0e71cdddce276170fdafc609d13aa23bc51e46a52772dcf1e378130b6b01412c0e71cee9f575993304f4b1b5dd21ab495dbad0b4613f39c8c4f49ef24140612c0e71d0f4707cb93bd1de1eeec36c3e1f995dc51eeedba0cb52287d2fd3c7d12c0e71d10a91f1a202191134bc06e790e98829eb7d76881e3c8b42dbe8a6d4112c0e71d133bb870cfcff34b784d933b5ab71a4f90987f854522f076bd23f21412c0e71d1e59aa52904247d6ede8d053ec5c65dfb3dc8c1e632acf34c030a25512c0e71d208c668db313147edb94aa31af86ca4e55d4900fed5eda638862b80312c0e71d2b06750f95b1dc2ccf25272d0e77de2fa9efb9499be95ef938d6d76612c0e71d2f08b6d34a5103c892d4baa26995bf4b184eb7507f9e111014e58b7912c0e71d326f83f4e6089448e147fdab51b0b7398a7d0cc9a88b0571432e731012c0e71d378b0a623f2b9eb1b44430061c4f2bab9da7943fd286326a98b54a6c12c0e71d3ed7229dfea16555ba040cce63fba1fa33cd5296c4393fa61114a86d12c0e71d43df157fee32bea33e2335ca841ecf4689f61b53af12109a990e8b3812c0e71d46088235059834f57282e18f93197b164a04be4082b6dfd88d86f53112c0e71d466c86c2834663f4edc4bf268a2746f02da7a7334344582db793062b12c0e71d489fee1707d4857f5f4cca6e9ccc10a81fb25b9cdf5c2d872d0f3a5c12c0e71d4911dde07af70a1bafe6ae84ef07a43280a736d0c19395a58793541212c0e71d4b14d52ccb248e416cad1ddfc7283a09f2625c601528d29f9a294b4f12c0e71d56bc0e445558b892aea1eb53639aaf99ec6f51aba44607213c3dfe2e12c0e71d6034eaeb56b1637b948fefd184ecfebeffe8dab40a37c6cdf3971a4012cc166f2df9f0fe89f79e2b568a6e92d61ca5f5f53050ef8744edf74aced0fb1420ff02679e0ed61f701fe2632e103af10294f270f3a924c40cba31afd3830c143b78432fda580e0996f00fce6f1ea8b2a38e4ddbe229eea3b839921eb4215c14b04bcc309f1abd5fae50084923f7d14fc5b9eaf257c0e2c5dafcd83e3cb36314cd612ff7f390b9e90584767a00a4e9b740b61c0f2134698bbac79c6649764d14e5b21d2eee0865adfb8783ac900540d67f0a89eb6881e77dda91d509398809150881a3b139347e8ffdab9fc7545cb3be51ef4c2aa7e92bd02bbff6fbdd68e715ece2a3d6a57419d76a4a66bfb72185e128e3abdd1e13345052f43f21548a9c160e772b488c83753ee69cadc56cdfe71937dec6a69b4bee87e4cfeb4bf8d47516532109325c4cff894f88bedab634fdbe497f41d4d7a0eb19d5d4d153642210166a40c58fac1476b58784d0ed59ae59fc516a4b072ba8daeda31d638a53023a1672dd5646976a1e7970e4294e7c76108ceaecae9d451cd9114aa05e60d7ed15167e362d3f5635ffb7527605a5e9004e8691b954f19a34ab86f4451cb0be695616c1f31ec5bee20a7690f87a51093bb9841f07a2f50e46738431a41854cbc77116eaf9666bd95a04bc6ed619c30a4809a43fd7265e414284c11b27b8c666fd2316f5d8cb543f65ee02baa435c3722ef7119a13d343b8a22a04ebd8121870db8e18d61c3f58876a1056fe8af5c781ed07cc500aba95ad80cd864bef9c068070601a2437c9fa77b32f3853456c8392f01c6e9af67bc33130d3d695dd1a7b87800f1a378e32047193d37d2a97ef6ce965b1296450b8b63891feee78e8dbc133fb1e1a41e8f79310cf5b804b038d19f28b535261fc5c1c3d1dcfdc49e6bf5a946d321a7df77359ce352ba50059ec6e2635d7964a50cae9012e4a737f5e82c353aa0d1aea6c43eb432a5be0f93a38428032805eebf000b993fe7a5ec8607cbc1c2e661b29ec5e6f3251d782b8bcb2ef96d96e7005df6f2bd05337c71067be6e7fcc951c761954d8265833c4b21c7296a314229af2391b34fc090aa76a817b2e79836a1c82102e4554587f23cbd4bfdb0f43c9d2879d18feb6102bbed977930f695f221c8631eed8177ca1e36107697b82afdcdc5ca1a3221796e8e614f3a6fee09c3c1c8650cc52c356792f7502f0eb809fc6de7d8ef83480dfe7abe5b12b05fa09081cf3d8aeffe769ed015ece973f50899648c8541a839c8f809ab5fc3a6b84cd6e1d3635e81c3048b1b2459aefff519b68d0100710ff64578709ca3da8084120541d6cb02740c7ed074385a93d27f0f9fe5efc113a8e5961d964c54b0afc6bfa121e4ee5ebd09ae031220927f7c8a8c80095340380af6fd7fa235749755fc862111e6ea78e3190ac2cfde9c0041ea7a0e1f7b89d52f4a58f01f69258150b7824661ea81863a93457d6060575165e64c13a982e098875083473c44af27cbd916a8d1edd52a4567c960ac95c09485b875fa5387ece3dfeea3262994b9c0c397dfe711f81e872efaf12f97f5a40b31afbf874bde9c0225e89511734f749b4b1d680ae1f8ef3aac7ddc528f500ac380bfec2dbe0c58caba4540adc427fd3e3186bfeea20112dff656489548b0a7815a06d3a59f93880ea46ee2662a6439bb431bab04620188a2097650af57e7cba4be37d595ec1884b69aafc65961210f295467a531320321a53ebe1d1ee860da6e226fc45f9b62c137ea62f84166f578ccc590d90142034b630c896091b018e27fb54c7fc39ce609866d14e5333938614d8ebc0540d203fade9dcd70e45da97d67ec48f8c5d8176be2e27cf3a612b6d6d7473c05577206c135a02db296ed0ef45d1400451678a5eb5d7f9375466af6c5cce5b085b6720cbc85619baeb354c068a5799d8ffa8b822505221d5357d7e70f2a3ebe08ea120d879dee526c91e9a590785b4982690fc4a04d41fb7e49c83389e6848132b0d216959aedf96ab893d8b8d8c66abeab8ef62940b1c6a6ab7228099d72291c72a225c1cf2356a5a5cd7e13c8e5dbee6c4c89e1c5f610c1050131cc58b4d96e75a226fd1541cd458ccb4582551095989bfa403089e50fdcf78ac2887cba2e9f72a228c100db7b54e30b0dde6bd44b2b2d114c1bab26e312a165dbede040dc8b42922a58635dd1a211d33750333282985df00d84e87b160293d6b39e89ea4bc7d6722cb320a7b50bb51a5fc217719cb0b68debe0834af00ce754925d0f331b0e7d122fe0b71b19c6406c38386db0535c0dc3f2e7cb7cb4a14f96c66c2745d9cc16322fff76bb4a0a5d66cff0392dbc083abbac3b3046f6fcc328abf0ddd16ca0837240cc50e90684f175ebef583b904fbc0b9aef4b38aaafd53e6436ad3e70ba36624102b17c177cf80ebd64796a17ea2c44b68aca3a03fc35be96f6d3ffc60716d24177bf6f8ef353988a83494a9fd6a8ed1f89ce97daba4d8448c48035b646960242b3f787306212f894686621a566105b72c462ee02164649bcf2ac8006aa036243612f0fc6c935d9ee0cbe21c453a83f58a9427054ccdc74966890ca57ca719243629cfee8e544a861e91ae4ab40c6f57cf6597bf70d8891c08c6d2c78c3e172443a71e6f77fa5124b849188d40145f552ad8419225bfb79b905db731fca0462461cf63ec5df1c71102f6122af9fca5fab21a9c7bedb84f21f2a07504d982132494b9da74db8fdd4a5ce7005624569a5576a686ac13a18082120e44e131fe2024a4b43a6b7ca664e5357207c3d1fc6eb33f80c9aa74f89530e31d3c7230c97924beb92b2450897df40f8df93e348c583d972d1b6d4f661a49961acc2b88101c24c295ae61b1b902e08f1b4939f83aefca9d3cf3c6048f1bee7ca71dc5c20a2e2602783d96c4e25d8f6894e457ceb968bf1c9694295aee52514d4919056cdb12260707c021782450fc2707ad65e0ffebf1f9e4025b69b8e192378e4835b05f7426842927c98a50ab1d439ab45f21c5beb6970556e1fd7b52df44977e4344b148268484e76d8bd53fa788b4012ec1eaf63f6be63395aa14a1e745003495565247269fda34b37bd80fedf0bfab37b55dc008621354ef4c53ed767c1eaa6c4dd32726d0b368abdc55c1733294dedfb2c80bfc5354fbb511fb5a1a6f5e74db1db155273e55ba58de0184bb96e5e691dcc9171ec58658d2b94c42c7e4ca7574f6a076280daf6efb2a16974f928da1abda06f2997f18a8db3cc73dab3cdc97d13fa5202822429b6659ed1a226d3ed5c50fbb0d9f1df8931788553556131bef5c607b792843d91b23b106e3020b7a903da075113d1aaca1db7ac30e119d6250fb6f5961285f7ae7cc2580d54ec3be6fb7fa3ab6f2c1a32352c793b29163822091839e31286ed5b9c507942cbe163cd75a2cd6de711b44216438b6618c2b1a5af864a31e287405b32ded1938c5f152f6a1907894b6e146da66e906338d8a5bc73673e03c287e6f010e50f642775dab59f39ee4de313fe6325181ca603824399cf4d42c082889d414f8bb29201637b8ae394fd131642a3eb4764a82730e494d6e60a6c4bc289fad9cb619fa9f9b77fd385d003476fdacaaac6ba7191bf5486aa09e1d832928ba39cc2ef14985016c3d7860bd97614e279a3d445dda263e2ba17991c50d4b28e3a8ec56f21d20789923fc326898987dbae48643c059d5ba9a8afe843a6f452972626ed7b4dfb2e1caf6a165f567118bb96a8d7b25f31e6aa7c4ef5995c64329c22701c5675f9a1d0c99c86c5bd43a5c781b5029d080077926cd3d3d17a81f29cba2b60e937fa112f8e61fdde36e4043d0c40b1eb73f12b5534b52d01b5e162a221984248f769c6ee496bfc2c813cf000d2c2e10a7e19a67a4f4264a1b204a2a4f829cfd9c12a01da70549643e5bade2829684c101fe7c1362176c884a37192a96bd4307361af78956a908ae74c39cc9634f9f2693245517980257a8cef12b2aa7daf7650583460d76859d7f4fea90eaf792ad9cc03e9bcc2667f165f00b362ab862c753d2f6331a4403f28cdd60a942d5611882e934c079a55145f49f96592ad931542e00bf2a1f982a2f8fa315fed034dedfe68da702736b24345a0471032c0adc4df234352b61fd60a32c2890fc64c2c0a3de5e33ee1c5bc9d8f581642d2c0f99b106126a14a19ed92af1bd9055ca4c39fd9ed5ed2305d18f6730ac54702c21eb7992f79d2d844f3006382236000c2b1eeb4c8985c6ed6db26734ec2e702c249c9b361d3c490f66848e4ad2fe71438455108b3a1f0698160c6d1d27fb242c5698c35ff43781ce7878144a7d8d17caba8107d362e01347ebe051de4876062cbc13e6be77e7af272d495780c1b51130e27e41e95d8d651733b53630b3900e2cddea2ece3afb01311814e16109d213b56d56de1e4299f697689e5f2a155f5c2cee834d1a5c39e592f15d9cceee26c056185e53ba14fcc9e60b84bd4f47e3532cfde9047614f815e566dec170152a0e9a7b163f94d0a59e8abc4b84dbaa2e632d3568072e73e8e73a9a8cab58e10779bcca9cc9d3da70ee41af6b5682fa11702e0b113a373a48400516429c6d481bc521ae1784536e67ad6208da18d4d0df192e44d899f1c95f9c968cd59399a21a4856d1b0d5d9fae07c1aeb7b4c2c61aa682e51bd8b621c3e869960acc798b6516b6ba42175c34cf19f7a4531c82933d33c2e785d0153b5e8bbfa5f787b150f59f98a0692a1e108ec013543d62733750c492e8036bee650826ea445368d4643b0ad2341924bb357c8ee1596fd1235ecf3262e91e1aef05cb877f9c862b416d157a840115d43c307290dfba6ac4c4db5dad72ec6d11607a14dd26f32576e47831719d548c856ce4c188091790cd93ba826062ecadcb36865c859f998d5538bc2629b4f4aea6e03dc4cc110bcf0eea4e063302f9c09c8a70b63d73be60dfe13947a17839970667250b900c8560ed4d042841d2f9daa984f4b569c43ddfa8b12c3f75e2e02f8c0ce9980e00daec2cb391c74a42fa216946d71756ea4bc43259d6866958233f796bbdcbca326d684a840ef72f0300685aa838106c3737c9e6c6086481f3daedc1b1650b84cba9405389ade856c3051ea9c01a7134f6a3223ea95a09c4dfe0bde5b0eb9ff7169fdb85d7a9bbd7330599dba50b5f3ba0b36f856a761eb3c0aee61e830d4beb448ef94b6ad92be3930763babbd99039e86efd1c78954df2c95fbb8ee5bf8d38d37c4ea681e3e784b308985eb186fc38a8f865257548b34b1f782525d4a4aadc622e7ded304dfd66a30cca6318e5c3cea1c72f33f541532ab6609b50853627fcd587bd5883d52f75c30dedb2a379560d56675e977ced75752b912f35165ca8380499f8be7b74d426f3159dccdbf4c37ba277b4becdae7ef002bd7ab17d62fc7419dd68967e41a358b317cff416275a6d52e3e896ce1df8674217b4f4ff8d95574a5a395b2e6d3fdca31918cb9b9c9414a2cd4dd7f720cb98fe98cf852636fc4860845767989127e7d322e857c9fc42bcd84f6f4e2d1f7f892baef31f1da5731d22796cfc40e4fdd5d3245a2e5ac185dedd4f63f9899990dc2d467a359dd573a7adf0817e06948451d3252aa1fa36f13c29d6d1f8543ca5e9446836317ca0b6793895ea67b59b0f10232658fbc5a5e1be76589990f4a394f68ee57657d37d56f6f69a18bfcad1ef975326e27145577ff5e9bcd3f75bba30fca9622705f65a07ecf04a5d692b284ce7232deca3bcad61e2390817c713ac5b125cf10bc93dc65beae601957499e7abb6533815302aca0725e74939106884963f32a80056aba37aa94dfe6220c039cc87e342ed414d9c57b75363168ad77f287e3d7ff035883bbede49db4c2f47748e764345e9fdb6c477d50a5c7be50ff581405ec6c151ed4ca2c25cf21a510e6bc7e6b3472a370eb332c43576f14f315b219aac6f86795a580d50cf5454b4c293b811f34f589d251903b0ac5a22b1d13d54696fba34b77f5d21f5244de9071711447633511ff017aad86aed8a943b8776dfc36711cc5957d413638c6e7b93f1a0574a53525a2d8318f0a082d428d90eeeccba905e0001fdad3a04d6abe49dd79e151863614bc16c1df6ff786504c9b02854f49a59bf5379f5e23cfefad24e77cf0015236340a73a1521c3d6b0e9a5b98638073a7e2e3164e19168ce4c419d075252e563681a748b27bb8e1611ec8f2fe684fa564c85723dcca591cc5bed39de59fa3383692082b41c6f2cad15ba58a7c962c2f435ec4e6638aedb2c851a90bd4f03f1136ea3b4376625f8f5ac0cf7b48b7a186f96bc215f34976f9eb692eadb46ce29a36ed432555d82a6fe15f2517dc871f1d02c72d8d5aa1bce703288d180ff1fdf63818c289aad92bbce3185cbc77619f99bb38a139fd9428ec6c2c97f964d0146738442c5d5813e8982e7d0e48b0902a2fcd7dca14bcbcb2018b3be02ddd0baf2b384e257ac2372c996a4180f6d9a9a0e16631cc76929c600468583e8d798c17603870abfd18505f673c1808b61dd0d7067a810a9719c2ddee18f9b879752f4c5038833de858facacb267fefbade2fe127da59cb1d3653e5acdaf5aaa1c0bb6f25389af7a171ff4ef270fc5c602f1570ae7b818fbcd797ae42b5ac9f14454c5b4e38aa672a41872f698aa995f14f0bd9e54cfa4efd97350e742d68a0c44da377d938b56e4773b73ad84537f2a6ceb8623781bc4fde11d5eaf672e88fc19c0f2c2838cadf9abf7492ce1df73d8b7ee82e10c2a0571970e2aa5ded4b9a6f91a4983338cd946bf9de9d576d29db5fc442e5078a03f73b67ba76d8717634b7be4c5a2338f0ee79e61dd2bd100c13719c468038ec4d722104b0a95fc38af7057c28fa5038f65ffa021ed80b8111b27929180c5ebb79e279810b521adaa2bbc22c343b7a3a182374a6eb744378a87b0a358f13d3f77b32e1c474616ddb8bfbf7b152af663a337becdfacffca71fe67fec208733754f035958d349d36b30225fd47798f6a3a365c988f1b8bf6c4574656c803938a4e0250e25837f74fa6046f0ccf2251233a43a4e20e15a0c9e0009fa11135246e1de9cf4507c1945bc86cb0a088c1c4653a4d56fc0f3aed44e21a24d0a3c17a4d6c1360123ce0a4d9a22aaac577031c2e3a5dfb7d614cd20d8ddf555c4a23acef0a71bd8723463f36f89e603211dd99b03ab6cfff71e91eea05d195a10fc0a03a78667a6ee5a915fcfbb25e90bc258f083ac5201c3a4b0b032e701e34988ca6a06831b69aadaf9a388dbd33d85ac85f6d3acdfb6cd734dd3e624b6512e0903724c1c90a516c03c81a9af756491ea8e15e3b839ff2a9cba91f5d0a511651c76f3ae7e0eb8bc76d7862338f987e506ba6de3c0579545b855f0070c2ca5c79342e333fe698081f709b7da3c9117b0b6b3e663c20f84510623f2b8b920844ed40c28540e910c2ff285fc996b341a483b83f813c3650e9bf78c1016ac74de6cc65329d28f8dca1b5c1f072455bd2d2d041feb53c53243e05c79ffbbc910d8df74e4d1ae0197db16b7f00662e2aac74c8ceb3023cd71003bf31f86b5255be17397505667f327f073483940527cf8636131487473e0041478827e15c3a70f281cb9f932aad0644646a6c5dcd4ad7706bf0fded0c3e4473a8a5c626a2b1eab5002c13537480b487a04ce85ae09292a7c458b3be063ef88f51188ea054ff03b902d8706c6d9b1ea56c119b34e0b88e915b5d02da5d3f293561642154426071a19697615c4117d55c2936356f0b92ae5954f0ac825e4008357689f54e1c117424b64df3fcc6c2aa015d343f1f6d9c085cec2e9ac32a402d50604742f5071645e00cf27f318d0a0fa805bda1daeec21e11ff9387e923403c772cc5a0320a23db863c40b5780a9390665df1e3b4255f32df1a0afc396e40491e4aebeabb41caa9a3f9da0c14fa299591a8297d64fda6c60ed0ea5fa2d6405637fb518f654b40c86cf257796c857ac3c28e5ce0ed978dcc4d69a5d6744240619a9305b0571ee5a5666073612190b2035be70b6846a2f16c94e29908d389407ffe0ae098321e72b2b6fe6ba331285a2967a27430f04375910007010589c240d0a6afe1eb0e87593616db7f2299658299e426350582f45796fc957e552d1940d2ad42bd2f8febb122ce6b65f7755df5f2989acbcbb5bd79ffa27958e52d2740de8fe2227bbb0358570c01c31ce0ebb4b7540c1302ab6a6d021cd0ae5d594240e30e1462871a4a8a38dbf705b96b986d699b62ed53e890b8f42544e3bd7b3841593cf289a037eaf22bfa42c5f10c5325340bd4f488cb37fc72f65cb83f51cf420a3bb7932c1b6694b1c93d9e9790850e2078b8cbec088a627ca8b9b5dc696742245c83d3a57fb95b74c05157a15cef637c0c64573b1ae493f8f3c3df13714e42ae1e94aeaccefd1e31a68ee716a34a11c92f4f2cf984319a212f056b05655a42d7c710711e3f6a4d282c46bdc093a1796b6878a45c805827b838756ef78e1842e3f1833e3a53fbc58fc821cbc960242707bf6570504a0ce6d62de52df1fb3a4396d758a45239e3ad43d8ffa0d171a6785aec18c571107c6675d53d082f09c743dde39c254993375b5d7905319e7700ebdbf57acd84e44b3025d869ba7d8e6b441ad818e57097e7d044b15fe0dcdf61742cf279444c5e8ffa9ae554ceb61c6f447326399643ec639a0bfde97d8b37f8dd0ca9fcb3c74a1ce017f0476f3e277044a03eca5c7bc39c71ecdd6768e5794df8b24f286ca7e5621c1ceb3492db1b1844a9b7448162343250ddebb4d5eca9cf18c0fd710c01f65c20ef5a7a2b08c16045276fb671d5e24c15c73f6766680b83e94bd709644fec1d5829f1126ef1fc2a460fbb15abc6a11bacac5accdd7a64ac63bf649e22c4efb879ff0cb0446b7e8f463e61911efe5b07ac64fbdd0b388a7b9569d067a6a34f01ce88bbfd9357f29f467535f6ed22a8ec7da3d7e7529f8c68380ffda3201bcecaf2d4d86c45618d78468a99f3bf7d3a5ec5cd3932ffbb436ecd78a9c635286d544661acd5f9f8de1546ff2d3857b6622883201338ade0e84de95c9be1587b549bf185e802d29e251d47b5dc76e7833045cd155547da3afa84a1fe6b9f8d8556e8c7187c3b2f50a46748060364b3d2a776ec3a9723dfd732ea49e0e2e988f73d08a6b843425e0f5072483ea32669fca11e7415c4e24e088cb3df49defae82f0f9d069ea0aa75839e3848636a9fc435413c12d7c7524f6c12110ff15938dff2da4dd92cbc87696c721a487d7703ee644d9a9b59ad29aa7f27405851496306f69678965f1d18d147874048a9cf978cdd6826ae8be06a8a4c2b5080eba18ed88f5a01cd4db7b947515d7148c45b44c5c51e3bcd1418cfcf4b526e98a0790b184bae4343c2a2429249d44548caaec6c160b794721459c9d63038ea108a42f712993126256c6199f5358a1548f5c152ca97d46d67467f3b6c7e2fff11e1f95abc0ea7298255c026ff65d92b49f2baaa065d3e927f265702cfa8d8eb83cbea8c64bb01d19c5c184b8e2f5d104a1f5cee5e56fe8bc576622e6f4b2c6148de32b45ee5421c35d0ced1949630224a2ac38d90c632abdcbf2cdc7dbe73488ec116f2399c37411ba3af480fe040324a6c8a550825216d1a15c0982b3a3c5a51fc19763db7ad9f4938c02960172a1e4a873239977e4be9e592e6131192b0c5c224008d603eafbfa4293b7566959e764a8e33a80bd250803d2d61e29ecaeee883519eef3f32b9124faa5ddf803ee2144ab31191f80b362cf0879407a1ed02636e3278e965f181654f75bbcc997a1e564ad16debf0db0329b8fa6806c88a774c6d4873579225919e24c856728b575d4d4adaa68a6139ecce46e6f5fa0608f3c60d34787bd25d7a57f1a49e42c935c3154beb8e393d37e827b64939797512b2988db9ea41f5b4d2f06a4f8c8fb955d89e4c08de8a66557f63521d871087a9290cf8032705cab1ece83bc4e5a230f130204c27cde4c0ba44b80bd040462654c90c73e26b474895a2fd746fd5febf3ecc654c4a377d95d6b5529673dcfedab4f7afb64667eb37e4b7db56f1af603bc01c404cc9a524072b6359e69371f7c12f7ea0187b53efc12d52b29c9901943eb7220c4d58a9fc7c2894b0f065cc6403246fb7970c2448ecd0e385e0e172c6f3d3eb444e2a23c22af49e8e46e0627ecb66fbacd80deba3b656adf53aa8e8acd2f8f62d4e2e91533ccdb896f1c0531bb4d9d33e07869696e1aad4b5aa8ac442b8a711134e3bd152d910b6c892f23f85469cd64bef5d7561d69475207c60f4542cc1257f4e6717194ee8da5cb1669a5636c8821f764ecffa0bb0e43b610b8bb1fb1f197a4e9a1114da2f930a02193c823ab3393fd2f4867b0ba68ab5ec267e50ecd354204ea8754b99ee9260bdac793df76172141e5f84b8ef4af56c19ae77ec5896ff7b4edf81ba4fbeb6ea13cd45ba93cc1d689a6e2e5c6dfc35a458a971823a3242184ee9592a2fd8d3954c85b71eb39e6eb323411ca48bfba174abbf1751d2d190ec502d8f8870937f44fb43dbda57dea5b07eead72982b0712bd52a5e033be3b031506014a02fa72b89b1b4ce899d40e369b2ab4d06fc1ead4663c856bae3d9db605092144ba4cf9a4997c6dcae1ec2f9b8cd1065ff5d1f97812c5700132036a50450c91b0b82bff9b1b93145633214a08d5fd25d12e6c78a3b369cd7e539b92e2650f6c5b5a71a038c2ca6019a0c0b4abbcf2af7eadb1952d163b96026adc15b195202845d849d9eb6a7e5a414492a86d205be4a374ede34e98fc2440de4809a3e52528eb2a0573e62d79626f992deb5a629b98af489585b4219b13be12ba0db6d525f464cc5364f7f7852731d5cd9b78500f1c43cfdb92c9eede3f5a0eaa03f25526810e13085a5e34c6c834d217810ac41da14f3e4460aa3c3b65fa273b8065a5271937d9336b12c2801a62938d27878729a7987c705770d5f19c0e42ffcc64c527638f35f3b999cb645e1e70a49e7b798a89c36b289bd366056d39115c18ae452b993b5f03c0eb34858fd978eaba71182fd619307ab26a2fb31b3f34d09827252e32efcfa98867081b563878242febcb31531cf4648cc496bbf851f39f31f6d5310358d8c95776780125c299cda8744c9294e7541e2ffde38fc630ed8259cdd5335ed0ba39a9da8a8087bd266791d9cbcf4a4f3494ed6858ed85d677cd200dc536e5bfa699aa74ecda30aaa43cf4f8b25617d20af86c1c5e1d71f18adbbd3d0540a38c94322e193c52afe4d438b6d6b1c50a9cafa87e47f1fc41221594d5f3954416d87ef2183c6d1c383b29dd10f002272468fc70cdbddd42b5093425e5422548da96d92f51656ca4932bec228b08d0a0d42a55ee6dfdf7d674bfab3509e4b549209edfbe534c3455d7fee7e340f8f8c8c78e4af36250ef8771556f5006d0d54d4d8ac211ee4a2fbf41035d4e6b85cf7992721faaca7ebbf9362e17f37371c54f248466e58cb2d3f15705e84d9cb4b5bc4cf4305e227c91b9754b1f3d2350a54f79360caefa910ba4bc6e26760fbd44a07a9fd4244c6fc7f58b0ce620fe15c55a7b1fbf19d76a12b4cefc4009405905cbea3fc16452627e6a01ff866e9b6f155e8dea9080f49b00804005fa39712a313dc6bc21c3de49f172b3f46e9f586e4560bc9e7fdc15e1801a284b6a6f07b60908d1e978304f966d138088ad334795a56217b7de1cc11317965e5fbbcd5befc40472e060042a6f69bf1aab0d2f08632562f6a0b999e6dcfb820b2e4dd52cfbfd3aa31c86919604d8e99f3b35bdbd21e5640f6bf6a151db35ff52bce2b7f959c910f2a65ddb3e023ef6ab7a4aca83b2a5648569c6ae8df2b35303b3ac840770061cd3735f4d45dc2c3343317f100747c564b79a862c28597d967c1459755a673fe8b5c69d5b13cdb52abc4999d80671c5867f9ad84580fdde5310bb3bc75271259aa2e8b2c2c98fc249fce382e1b387158758a7188e3b24588ecbf10c9c77d99b7d3ff81877e6da49a66980a0fb56940587fc2461b55e47619ef522b4bd986f71f7adfd207166e6dd2ba381117a2dd0858832b4a605c2e5200f88606aef263a82573ef1f8421ae19ac8f786661d776315883a7c739d00f1d125475cda89e7ceff0f406badf56a7c1270c16f850f62cd55889dcc187231dbcba0bc0dad136d1ecb09633bc7cd5e27e04daa0277009ff2f599aa7c71c2716d534f7f4ec936d9bc547b4e32fad199466a389b09b139f3f8b5a43b9d3a39997151c4d745c1513b73ea440fcd50aec480eb4ddbe65fe6924775a9e357de87525b67cf9ed1d0f06a15a6363665ca1c9f43ff527c87c0945597c5ac2c99c49fa3cae0c14af69646d4509a9b022a228f9a776a6bca8323d89de555aee527a14a1458fc422ec4bdeb2b1351ebb159d421f6e3ba3447afeab4bb5445aef5cfbe2481f552a4ee7d9b9e40b850798d8db7b7a07e2a887e0f95777fd0f5b7812d3e31417cabe45153f522a4047b09e9662795cc7c7372cfb02f6dc39195c00bdb5472e548ff2126b45ee064c8dc4a28ec22bacedde0b94ec691ca5d6485c4c4cb973301ccba822fd2d525c9ada03e8ded3a3c396e4bbf0e2107101e5585c6a4fdf0d8c1e5279430b1d072d26838da45cdad18b9db484493ae0d09119ab5c6beb2ed3d9a5c3f775b983336786a48eecdc953735169516ac73d7f3c435245c8bb12c78741c7b0ff4659360c78bf5da3af34e842a60f58e53045ccb0703025c9d4bed4df1d87e33b03c63aef108b00b23253cc0cda93b528ea9f95c33f5225c9edf029bfac2b480319b7f7d0558d1afd0b690bb3ff3b95932d765e0899fed5cd82796371ad45d95e5ee1fc4cb3e3a51b107c7af7dfbfed063f7ad41bba2085ced650b2f93f51f800f38a1fa5f4fd0de1734046c87282881bf817ea12c6b1c5db58282171c8d2c73678f13f3c61579902ea4572ae9e9158046e8e820bf4d825ddb8cabf6e1a74c0419bf69bce82b7a98bcde3613d340108f6cd7d84420643b5e0a4ca74bbb4da39c79954e7875519fa67049795c02a360412f3ee41a0205065e14105dd8e15633168123d30f93edbbcc5cccc3518791e53cdb9c541cbcd3435e3bf42f89798b7e87196b2cf87ae2c31ce75a836436a99d48a9995c3afabd7a5e48d33f3f779ec5dfc830713f8c11b921bdcf233495d1fb3157b500c45376565e4a7f6fd9a8525d277f96f3e758e51fb673c6c28a7203b1a57f6e90c9f813495e97f331813198763da88ad2b1f5deb3f42373a93e8895c43de399aa6255da475e9a8499b030780091dae032059aa6e38cc55ef49a68644a1cb272891b6767605ecc1d4e60a92262c1bec62d034c979f42cbd3fb1c28570d5baed6e5ed20d5335edf939d9f238bce8f74fdb215d853697a5a515b0f8b3a9a9d64390265f2cad95f5013d41624228728182b71bbe799dce7dc5df6963fc02730c6b4b3e84273e15ffeaddaaae78f47116c99c2de0611c7be795fa943648f8a95216c89cb0f2424600dfe146273c78ef4ea49a6b5f7f1eb4efef9d46ae2bd011449ad7a88bcdbf560384fabe173278be399e99aaafc7d5b3eb2547af81fbc8039eb6fc49ae008bb603d8b10a42a8be5f7e755820b0c4241732614384e039536c8e43d3b414430566053336ac8500f1ab1d771ba627a5d555d22eea84ad860a37a137aefa31bba4d60857d3958e4e8809b36403726468f6b336e952d7cdee4a16c32126719dac41160a8e45eea9783d521beeb12cb15c6e9094e5d755749b801ff1a532d0934a90d62307128d13196dc291ac51e68173c5801fe6bace303a222d2659255d9debf276280b912d54001e1ac0bbc1023ba9a16974a6c23d22e817e97d418ea94d29642628f36dddf8cdb0242104a2531e7d3efd4860a9a4633be69aaf30f63ccb25a5e629464cb03ca55071afe738b5d1f3fe4cdf3dfb42ad424308dfca42c3581ed3d62bcdbab2bc3f7e3c40b6c4a0f619b63ef65978d6ec0427651e83a59fea6f65862d4ad80a2a5cef99de5288c0f299cb7fa7a3e41fb2db1a4c23fa44892be136062e1ae74effc6a8ae6ba297a5553050e8ec2bfac4aa17f3cb5224e535c4b0a116366490cf9fcc50f7edbecb28e3b78330a0e35d3e073cfb3538ae6540f0542b0641f4b5f0893e5855727a769df2ff8f99d1fa50d20e40be18c23b4eb2960641964e05e73625f3f0991e3062733ad8480c5589a710a24beacbaa555f1c4a7f06464f9e43cd95c94ded79fa17bfec8a8d745932f4d7679f8b06aa9e13f915768b26579df1779da496305c30a43dcdd9277e4984df2b941343e1086706c613db3936621dd4e5cdd0ba737c572710c13df35b316d39ecd12c1ae1320bd6db069a07a662d04da99fa11b0ddd8bdfec9bbc2574ac71565e9346c8e13857934c18b36466638054933ede278a747a6fe4b56534c44cad83696a5b833556b706bda182374663b801c02f2b76565f5b60d817e7dd805babdc276b53d20e19cebd199c88555664b2886e95f12e168b420f06b90c11d8cdfa7ee747bc12e235a6d5efbae6e12665e2b6af8a36ec8aa0a797e51ceca72f9e2761f87300bfc8c4524ec7845631e668103daef522e6916064ee8e27db33ab950e2d4f065276f7c9d86efbdab3b7d66ac043ad9e8d8051cd84cbac5d3971978b80a02be9c9ff616e216e1ccb82d1f66d87ef5b22d8ad34a91d0f61480641a26f1a53934a0f2ade4a2661817737e0666f3189c8351e824c55ea40817590b776431599273c4bd4c853b255e8cfb1b10679d98218b5d055c770d3a2a406e2e56a97083100bec05cb83f530632dc8c3136849627c337067117e864eff154c6125539fa6e4eaa980712e7594cf78447874688244eca9106c815db97c9e5280201450dd53932af186945f989d644d7a9573688f2dd2918739ffc90f280131b7d8bbfeaf9f0e2bacfe952a88bfa3bc1680456895ad261e06f09bee24fbadb2586f4c5ef811ab95debdf1c683025e1266585868e237fe4c26576ffe8e0921322126862b965d7e12abeeeae669c7f949efef1368ef8bec8b0e59e7c456392b9f560a48c0abc26faeb75715b1ec4a804f469f1068f8bfef657c69a5c34721cbaa618ae9eb2108566f9a2606cf5055578e0c25116a0051ef580a2b9dd19a368b82ec20f9a605b0207f2e8d364e6c985b5b2ba8716a1241c7ef9541ddaad26287d92df0abacf7ac4a7fc4df046e4b866c05db4aab6a1e7cf7558378809fa376f7eec7b065d30759f8a4e7b721ec2ae74b313f08556a325e3630266fda0ef7f7725ef8199726e29d569d609f3cf068c4db7e82591a6a4aa384952d2245b6c439c833edb350c0ba7e31ca423f081ee6a0d79596c6586a51bfd7a5dff96a2e43241cc1511f899bfae36c754721b580cd3a03c107040b6bd80d6bb9d505644ea6aa22ef370fef520508bd5a534d1e2ed2283fa6e575b76c53b34c1ddc440e1d6b232ab6248e8d9f43c3d284b38ab7c9905ecf089fec036c6ed8531e6c0b882af0a42f2f23ef0a102b5d49cb5f5a24ede72d53ffce83176ca6452fdccbb00af0b245231dff434535cdc7f9a2f2712dbc740e662e9c596e6cdac27581d1f3929bf543452b7da444e03457ea6424f84ef9a372ecfda077ec6ce201e876781c6466468f641ea7defd144b054fd1966e2292bab3c550f887116cf103d56cc23ec72abe93fa1bb8b2ce999da4c64cf87a6382fc6f743a176d716cfe88656d6a99bbf56d216614a02ef9f0182f63dfc21d7dfedacb4ff517f1356d8b75f342757ec716e35355b4d7b357e8036088829fc81cd9626eb3bf3156bb6e121faa52e3f66a079cb9eedb8017552d5bed7ab5a817a688a08e98ec3765346e4020d8682b80d1b7112894cc302ae29735fa311760fda4068d8137033e315e6ec238210f082cca5552aa2ce9a0d1c4be9c7bf44c04f4524ded21f8cbcc611d6ecdd945d7623706df7e2c9e62caa4821e2c925459535c4448f8fb250a8a29716eedbff00a594432724535b93399c094ce161a0830846819c9823fe4cb50872870128c0d4fdbbd538cd19cd8c0dbf73534a4658842c00e8a310da46975f9f31b703d07f2ac096e6b0b998fad5997c7c9b1e1f417603c350e76ad99e5c19aec047042479798003022a5753c8547cb0de8ef25e2471e40889ff3909fe714e24c5d7054f0231a7bb2c4d8e1b64b4b2a77e7216e5d225552d00235201b1889dc0e5d705f5ccebe118ccfe15fe1fc219d9c6751a40f3c0fe9c4bd00bf0b98c790c25b70661c356f24a2cddc859fbae974cdff149661f165f5e622df3060bcb8e7b37370c4c871ff47c1b01a201f55bc1a542afa5f48f4b41bfb7f558ae00d9b714a7970d4121446293f928e59d4f8a5eea096ebe1c2538002fcbf7b7845dd2e19ee6d70d7ff9f5cd0e46762d7d7d1c8dc840a4026755fe13c51237ff8601377d4fba370e4c68bb33055ad78403466681d67107478fe018913528045650a705ddd5c6b70f955feb0ffd847cc972e17e979619e0bc0739673db8604848204bf61af007171030e8301adf5359536b16f23d7e898ef92f4b125a29cf7c3e5a5c05ee80804718a498408efb30c269737d1ca7421d04770bfa79f64737280cf5b6ca73dc39771a34b55519bb12b87926eb8f5e238bd9226c824f3a0cf5cdad1410db47b8f5071be4c928197879bb5e5d2a373535cdbfe47dde173b647386eb0444ecedbeec8721cd1fe88d1d2df420564396ad478c84d9bd66447c55bb330a4e7d8d454057c726ac63a0a6a700ad7e1178fef89a87620bbc152a19f74708defc7f08bbc655672779c4180f2ba5bc55257b4da071b6b432e356702fd9201c0785bd204280c4c727dba627f34c210eba395fc7f60d28b3a58c5dbd6b63fb4f9788ee764b2702a729f8acbb64cb60b5edb62beadc9ac05430ede0086e29800ee32d106befc782572d9e3049948847b9e6a6530644c05a2cb45c106837134cf856a850edb5d984c742e6def792a15d4b2518cd2a957f9bb7f75525308355f9217a2df17a701128a7493915ecb44badd479418bd0ef0f753952690f6ceeb421a0fe567edf2fdb228749ddc93a65dfec3af27cc7478212cb7d4b0c0357fef35a0163966ab5333b75774b415e0035e3edc9f18063fc7e060ed66b35f6fff4b657ed0110fa3c0972b1f74c6eb1f9c005fb8812b3ce976febee2523f76efb84073084d2c574dcefa742d74c76b2bb6e2e4b16fec1849aefadeae913aed26e72e2101a4dc34abb3e4077674e415ff4dc3ad7afdd85a7561b56e837891ca2997f65b6eee45be5e6b4fea5175c4d8aeb08fb3e8276a09141d8139b74d6a76af72acf6955617309dea176a7a7617b9c6475f887ba801cee49b322a4d888224c8d0791bb0d5c999b6605e251a7618f7a742a744daaea9f6761f81fc54933a584cc5b4870a47e9525f42cb1760762311603c2642b9de046bc7b653733b25cb40e98871ce9835c65a249e73553376497a6036a1ef7d02ede96d44f39094a5fd50e69d524990946cf5e6e6f1da2c764c70f6ae87fd18e901fbe3da02098ba42459d29bf26602ec68c229292f301f769e87de4b843adb49b3de1ff29ce837047c48023aaaf9c6d3abc6e66b4ec34a76dbbe01275e2d5edc1aa637fa5e9e3f83b2eaf5338f3de24332be755548b01876f45a1045fe47a639befe802be7eeea599080222e2f45fba46492039609cc0778baec43fd49badfce811cbba08b3f0ccf758b5e22f0c4d745452f5dad6eee077a3008983cbe302c87f34291977f25b2a7519e7820767c137d08a67c996c96437aab24efe8947408245a151a10a3c1d68b7b360231625e862db8c9d7777df9227ab0ef4391500cf4634c08dcc0bafc65b9c787a651ca8679b8ef33a6b557fe5e7ac7a3f921568409d2cbb8680bd53ba35311305947f7c3d72c9e9d15dd44c0127b9a284d4e600ad4d23bcc2a12a3e52130d96586145ad8246bb3db4a7cb2e0f07bdfd0ce52699e0b3f913ebc544b48b0cb02fcb8cb394625f88945200318f5927c0b40255a7085d8edf5a4e69bcae5b6faa59d20ffc4133538d34af2e271e03d7c4e144380357ad3e690e74f5b7bbbe4b7d6ab1579d4c6d7c844ef003cad9a247c731b26739bf75d9607468391f9d743d3ee7f65f8e668d770174f74dcab7f437c88cb63517049b0569ba773b2cd7be3dea4c7c88340ba5f31c7bfa2e847f65f7cca5de8c58ec8fd1a269c3e51acf6ad45a8b9b32e4a65a4d4c481c5c449d8267e3f5c1a51e0b3d7de466bfe6e8961f1ac5abb565553940188f59bb19205db207e5c1be1c6074be10e73ef8a6a0986f227082b0d6495c98966e7d5eb2c6fa30c7e91f2c936482460b397eea5923867efeb2635679ca776cdfdc62bcea000250d7eb15d7fc95b03fce6ab8cbc54c38ac898932407a3e9bd86d8c03bbfb5b8112a7ebadb760b7f8ca8280f493f1604fa76e90df43f3ce4b084ea6383315b94653f7eef2c68aeda89714ce4b425b812409e93a0ce07d2a8f54337ea6e10cfcee3f47f90cbd721e0f6df172266f725ed45095c9ac42202cbd84abae8b5494119a9387fc552b8c6596a09ef8008c83d1dc8ee77dc175036bbd2ca89a55b855a0f01cb7fc61bf61f7088fdbc534c9447d2ae3e12dcdb618de2dc25f85ed149c444a8a580050d2e4a09949b24a70d900be9aa385d307c2760d9add596201b041acac6598026a84c871445e5651002ac12a0e06649ea8b6a282219b4bae000c08f6604178056875c26b0b99303e102f56af5b7cd6494578bfaf7eebc0f251a93a98c0710807329bab50e888edb6d30d0e46834f52953ef642366e3998489cd3601481b2c80b036ace5df3680d4f61cccc6cef4d37bc396e6a6e63fdecf505ecbfe41149b80c546b7e44391d7f7832d8cd5456f7ca1a76a73e73807544a4184bb59ce604881a73b784a15727dfd555a15f61575f5f1b8323b8fd41416dc9eeb4df87acd238224620901db3a08a236f1417e7f865c079b41c0b2e6cb0084109e4be3fb1d0f82299cce0c148ac684639df678476effcae36c4eb8cf15592c511512a857e745827d6e7f77c923c3355f80ac2612ceae915769f8043c2fbfa8e86e16a038c91382f53c176ea7abea9092ab9b7ccb5506dd3c81de6fe0a5d2b29068f53dd3706c837cd9bff26ac28b84a814643ab00556d90e873a921633bab990cc75b5a06dea83b401968c58e31e421f96e07dd85ce91d985abbccc84bcea5e8f098d97fab5683dc7edbb29fe81e5e29f18ee1c35a90b6aad5637057e3087699d38e7eea7394841c3ad493d6271cdbe0f1f7cfd452ffa11eade4c8fd21b23c275135e87c09238433eae795936e63871cbcf0410517d1dad4755f2da4a6d88c1cc1c589b8e86f845c9d99f3070604aeab0b883b0f8774de633c1e7b91a0376df2342122fd4148846df68c20245a0796e8dac890647b8d6346a42d064f1ee9a77202238f474e33846f4c51c8a5085281611803cbbde495513967048ff8f573045a8974630c6109847074f1fb351eaa06337823c68f2a9fb28c98db976bc5cc16867e4b84bc1060847194325a12bc4f4faacb6aef973eda31658195c26b934318b960aa6905081984bda1949a2b78bfc3b12dcc8f2c8e8822912efe0c693a23effaf7f3b54e9a5c862fdfefe655dc35f3ac0b586e274ea252d32e5ad1e189c0b750facc56ed5f2a8658d79f71306046c26576c47135ac7ae29847b640f1ac35d0767afa6670285b866f40b96e6ca6405ed0c44747726b3972ca4773aac5273dcc25ffbb5003b0758688b96ed623770a0b2712dd9661b3c1280da83237db214ba698be7783731b12868cd54faea1a0e45836635b2bf658733436ec69c5567d651be592392cbb69dc86954b6faea18d0cf01635da6d9cea53b29f50680ab7ef92eeb167ccb051ed0986a2518d0a12b1b5c14d1e387a5455080da95c0ba1ea2439abc2ac46ec42df5c86cb4a7d71b52b87a0ba07d245f92cc52dd40259d14190cd15f36b509f7ff51186d678feab565ecb54f78dcca7036db237002aa86783283b8721de7611d7fab28802311b14d6ec62eb26694abf965e15658215e532863bb2b8a94921613b7967882b91920f9e4483d2910d72403ecc9522283079ff6770b58be852648e008d44884570c3a5f1578892eb828572dd839cb45140d0238e358c408e323c08ce2e1288508e0d4bb18e50ed1435a4260541b1c53ed009a64801727c195d1f81c08fda886267a39c2dd0cd8175ac3e50d353375c694874ba6f48d6aaa4bb9e88ce39308881970be82fc0426622e65c114480a2dab6e1a98c7c6c3f6a917e88531c09568886a23f6aa185a4d262ade722584c6f1e384ce10b269bfb898abf8785cd934a88b9f3a722747e8f637b2583963ea7f1215adc8c75c3957554fdf92fcbfa503488c83f9b6b21778914870c7fd18ce9b3b44831ca8706611d6b2fec736a5ecc4e88de653e58aed8a0d92e953a55d823364a30d381d88a7c458cacfecc3e2f2b48897f659d5cbe2c965fe11dbefde08177262b340d8a816063e062d6db92edba6a89abf449cfb7d9b862b775abe556bccbe647820fd4d7a50b63872b657c96506f8aa121a03ca81740284a3d24ea4bf49f22578caa58441527a76e8464a319a0158b7eb4a45589bdc595ec6a24d2657a44a0859fa939e42e380c97ba42b56613568bbf421fcb86d5fd3e28a4762d295b722fae2260d0f3d548fe6eb8cd741c286e8c6211892518630b6e583e09dd395211035a508358a80322614f9894bdceb6058c6480536395191bbc760632ae89722cba67f49042cd1a5a5e729c3186a417678c79cbd600c63f0cc90b34e7301b7cef8c93f7a404cbacecab96901fe53d46408c7afec700f1f0c83226176063f349c34c3b100f192e4bc106c3305c1c5e4c388cbdf5f8b94b1e3e50d5258a934f3f005ce2ab97c47af0fae918b1135e29b67c8cc2a28f3c7d33c0cb9b71bd8b085d8b5ea63aed9152313dfa0bb903ed91bd778d1db201aa78cccb5dc2443147fd0ddffda39b97f3a28377220a7db5fd94b8858e111a2e445cc0f64b5809496887b3130718d969db6637c0ebf1118c39b15c558e74741b4eab0c60f4b1621f8d244da79dc84785622e52ac8e4e5d3da9f9e5128eabb61420c17a6e92eb2ca99f0e2cca15015784552ae332bf2105a592b80dc68ff2fd995727bb6c776dce0c1e127955c1f191db6aff56c434a6738fc83d4eb890052afb0abc5c8bae9e1de623c8cdffbeab162bf13dc7ed0b3c05c328126566900a51aacda47f2191bffa0ad25b3e6354ec5e8c23cddd6bd7af5ae9a9d8aa2390174218ad9d5531fc97c3b347e073d347d157cc40a470ad89b75604b0d9dc33902bd449e6e48e3df5749a8ca6486bbae2195f8a18e512f3eeac7bf7d21d9308903d98a400f00008248e75d2c7f7f3c43a7c63a72c45daf7d42f26a45f062cc2905fc1d698021c7e3580461efb419b4055f01a774553145f4bb22bcf9e94a1319064054e78c0f109f092fdd3438cf9c21f17962c46e86477286d1668e5dc05099089d1fcf31c59ea9ee92e68952ffeef08ebea1905cd20b6809e6c2e8f0e30ac90b0980243dcd3ee03a0f6d37bc2ac08afefc726f883a072db781b7b5b28bbf890e389b9296c049a2cf0cc3255f3d58346b0eb6e6b0826aeaf81aae144d5306c90f218ede5ef0e08fcde53a9913c8c01d7cc28d31d21d89071b6a8d9262d83769181d99f43daa05e74f15ff308adb8a4ef121fe4976904813de2e16ac447c3ee9257672efbce6327e97783808a8feb2ef8dfa71bdff401f06700337dae17a2539280a092212843f53c1591fd4e912bf58e41441251686917eefa4097bc310b539285049cf1f37e3e312e2367a3768fb066598d309d4a4ccacfb70137714a440493ec952a9328c2f39b697aa00f57f01c289423ac2068f506ce2165be10f1ec459406aac741b57c529a2b06b06124a2a9b8f8374e072e4b251b13a5c0cc9f617e94082abb5e84b31a7cb7e0e69fd711f013ac426d62f1e157b762d284ee6efe2b940be222a0d2281187cb7ae5678887bb29b80f95433d15c4e695b7dc1f0fb24294237cdf8ab6530170cf7256c211e15b3a53100bd495cd668bbe4de875741450946d008eb4453db3f1a0165b053c077828fb0074ba920fe157cad536c02eab1c94ab0d1215ac213be3ee5a4fdf17c0d457488185ebc065574effa2ea0e76eb6995d056d702a9431c14cc2c46634fcb656e162dca4b5a2100789373a07695f6b8962bc96b9c4d7ad5f11a8190b5bd90e87bb49b9000b2f2ea6396b186fd7fd13a96413aaaa130817e645a00e8f380264161aa37a6ef35c2328f4c79565ae9e408964d882bb6127e75f8c02efdefbf052be0c010256c41d832e8c81fae632dec759653bcf18e30531092fdc1c52afe06cf61f56fb1fa5d719078cd6914d395ed0f9654bbc25d7891d49151110003c37da87fce6eb551768c02e47eae754b61b466967b90089e58e45dc26c3495dce3188a3b88d36b3862b914d31a39db0a7a5a7b969b1c4800a2e1700fc49adc3228a1faf72543f36ef784991a2a25d74632b26f96b999767cece29bf12001df86d1355bea8fe46996aeb0ca149f30960579402997a214d9d7e4d9756f50d6b43a18a8ee671cb1512b46f2c2c8c1309694dc75bf97d5a706146081fdd5ce77ad4ee232f351c4bbbce94596c12d300efae588ce9e982b1616f2b4b963fe2a8aaec915c4d3f90aada694bba3fa5924127e67a2456c983347500922c79e9afb60da250d4dbdff3d8546f1b32f0239a5e8df8b02ea1a9844fda0cd4910b8d7c56c9029352eade20bdde208771c7181aa46ca6d4096729862f63cee080f43d1d4de935b51b615cd7a15682e28e41f0bdf6565deaadc0698672c4edf6d578c3151aa2e8d55431cc874360eff95c4592d917fb09a6b6316988740c0cb624d6228e22704f9dddd8a526775c81506cb9eab96d3be870d4a04989aa1bd13df5939cb65518a399c66800e3b23e792592f94ba7af30597d7fd7198a3f70ce836d6e418dea865eab5762392c980aa270277209b5babf28cfc774f98cafd75bd233ed0674c7493c67d589c4d7e78b69cdb409ca66c0f3a7391ec0699a833467b3227e480dd06ccad8eb537c399e3851d8acd1b3d1c3e711db836869a035e6060c22c0f19bcf9a35dd1eb2f6dd12374cbefcab29d4db8a31fa167589a53a267e2a327b1ff679969f17e40c9888d11c2151a160869f6a52ff7d4ec4b9a9ebf1328e64aac1cf749436ec602945693a088d0ffb823da08dff6bc4fd7399ae6f18cfcd0b96861920017e1e542f00d7802d9557255f8edb54008c569ca6f9aff414190db44822927951304b915312bba80e1a67c561df6c41be026aeed349b1e47be56602b6fd57d873573f8e1cf67e97ee448fabff165be2cd9b7b6a7779c322a9e20637c9a71e4d131e647d597b1c600dbec94bfa192465e3991a15b639c78b621dbae80aa6797a28f752059eef1abd763dabda3595560a0348ff82e399c978f892993c0a2c945d09a885da051ec30cacda97adaa2f6234210843ae3779cb0d4ddd32f9332dac7059de238b8e489afb55502d1756d7f50b78b58e20c709e1f6008fd792e78fa56b6ae00b4f8b73b98d260ad04b38623d1a3423ada09579e7b589d0d5c36284021ae227a2e2be43e1dd1b67c0df432648e5026dfac6f439e7fb05bdd2dc88013e77f26a37dc19e1c1717fde8a27bfd1f2fa8231ddf85389e91c0029b5a22ff3799a39634f2cf1e89060f4acd5ab2855a4b91fae1150a3e9ef11f291d0b6fca3ef5735c6519e18557ed240d875cac961a250b8a979d22319ef20ea6b98e87f656d7f23e0b2a310f45d6a6550a211e7df67540cd8b9c4b4a9efc1adf2c041e7d3a138bfcc521ad0a2b91b9b63892c28e466cc139f0281b1f9f3218e31dad244bf47477de316c3f46a721149ce003f4514eedc2042b854e66a00505eb2a4607f27837f57232f0c456602e39540582685b4f58cde293f1a116a02f7333e25590e4f568ae8a2ddc93a879e92e48fa3cf1666ac56e020c106d55a0340d617b2e5fecf5813d12bf441eb025f610edf738af8f79a98a9e168f690da06446b3474c3d9dcfb759f3df134cf4b6620b2559c4e1b99d3be4d010378f40a0645629f4413076d3e5ef55d8691b77a98d8867ced57c535b4fa6c0a9248f03a08c23158a93a3aa7de94d3ced1c9e1b4ed1efbb1e29dab0363b1c8ca4904e06a0e357d4323d95a6cd36e3649774b41423369b849a0e2df22be9c003c13ceb28a2113f829a8cdaa8d6eb90f0943672b58e2b85548c2dd138fefd1cc4331d3611a253a912f8c5d5fcbc2dddc12bdf2f1c4cc540160b34ad7a042b7306e8094359a2608bda576651a3bd4e48747ac79a011dea9eead9d3e43df6088f6a104e1c02a27a87e5999ee8830465b09da09f16adfaa168d3aec122953b44796a9db5157da2931cd0e5bee936b325ceba6975621a6b52fce8aa7e0e36629a8c0beef6dc54a299a4abf23416ce635ed60d1f1321399dbf05ffe75fa2746dcf071d64ef3e07a2fa6c11ee56da6d5e51439a0d0ee776c8b4f0f6a914cf6bd9ed8af27db80252a37a3ffb035af09835ef668a37204d1016819ac4d5e24889afb991f0e46836d0a3b9d8008b2434511e9308b7c8acc758337a81c8858c5a44efb76d02f16bdbbba3e7b1cb82838f728850c58d870195931ac1ee5edc63dad19c913ce8f8b80dd4a420593bd7edaea22dac90fc90bc4f7c8ba55ce6a70d1644fe3f2071203a2661a42184be9cd7657a019c2624c045f4ef80df884576b0f2e1eece434410537a37a43b2797bd4dd454d7fb0870a2a4edd62b39eea0801f6baaf09b05c8634b5a25a44871a6a8764d496fe18d5f9044e3c62cee35d0b30ed9e707227bfd8a9c0711a46615035c62da7a1906c838ac55e2ef1f38b679b9d5d6ab7c3633fd75280f43a4775184df368cf954397d88e2112625f265cc8a4c381c239ea0ed332389cf50a49024c1255ae218f2e482ce9f429a95ecc2e1551428d875d0b42176ea34ef39a4df3a33d6945054571094d3ba892d7b70f74e3695bbef9ef4becf6a68f7e525a56bd842d168e9b1eae2ef3d1f6d323b9bd4b8db997ffd2ff52369e5c0ba5512a61514d5cabf81b3f62650806870ad83b2e5059538b846b6dd9963e010566a17a61a8e0ccd37645a2dd65916d9bcf3b77ecdf395ecc3beef72f3ad5565bb3353a620a613e0049a85c71fab0328f7449b0a9963195eab763760e1ff50a10d4404a65bbeb4425c55a611da4116e848b0cc39686a11f88dee6aacceac6bc5eca657a6805c6dc7757cea227e11839257d4e24ad39520621e99e6016ee0e1907c3315a6c45c3e163095a66f76c8b50e16420ce561215d7511398c7d19557fd43d8826a6e5748915493258986746cb3e58f9e76c69bd65bab4fc620dc649c102baf716a6f0ace5dece12019b693b8dadf7399fb5fc45cfbd0d6b78c6f5972f0ea0c63fa6fb95df896c49aa523bfe77a6a7ce07e989f28943ec01964ba74cc6ccac7813a8274537b1ed72b005b2ae6e3c0e14273235d9c5556ade786172d842a2059e3da830e5f0091c9f1c5da8a2a9a1a7a0de5802c6bdd3d9e23175d8c116ef226251a89a9920a98f3591ccc0a1a4bc827a0adfba37b75fcc108ae3c7191bb9a32750a8bc182820c46f4dd6bd98b76dbff06f8565f0004eb1a9840ee3f3bcae1442d5a8c65922638840726e9b9203f89734be64b61b2e50cbc85a2d8eb147032c793fa8cc040d5d391967b6c50b54d81dbc18acf06fd13a704decc7df6f464679051ba8e2730b18be41205e5d9192603da3fc19d7d4b951519509cb32458ad622ae33a8e49ec5e1a8da2d864d6919bff0c63f4c6de81887abe80d96106e9b46d128f4a9c13c25dc960c282ae2a76f4e315ed20c60cbdd08750fd45cf5b2790f7ef045aa1b26a54caeac50c14da903fde3f1192432bc100230041f5e5b97f48b2b424baa2b3e0a8702aebcb83d552838a17902b2403b0f16c4e52a4514fe02df532e3caa537ac5733a53be3b5cb5384deba1c3f2ca9a153eac138e90c6e1ee76206811aad8e905d4c09ac501fc3f74833019107288077bdaa77291588b5e021330657cabb9286b2b288f2af6eb392d95b12a64768174de723047b9ae0f86283dd5e34cac1690c5a31f066e069047f3a4fead3eddf20618510f17c587e72e41b9c8692aac1d2d82c4a69b16c3ce9eb5d0b6f34f948a34efe62488879a514bbc837e0e50ac62bbbf51a7449419558b264d9bb213d2cc5947ce45a37870a310d414b37f2bacd510542672c65c7c05d56c4c6424a70a0e426f3899f2eb86751cc2e08ef124aceb9e7baf3459c8205afb805cd7012a6ad2233dcb1c2caf03340b4782b79850acf39cf23dd3530b4078b43141f0a0ce5c19549909b0ce4bc163984e045d9b65ad17c83beb46308e21cb6fb45b9587a826addb8c001e01bc2280847982af1b77ad3ef6399e4bf49bf0ed9ade88ec40ef21be714cf9efc112306cc85c194f758aae3aba9a0f0d03d9fab3ad97a367fe66aba07ac0f7fc58d8dc18eed82f8c62f0ae8c6dd7bf2e52a684bbda1831b6eea8040b7fa459da6a487a9988a9d84f6b0caec16460ec51be05e01406f39af4e8adc9d400e511cac7aebc10c31d42540f46aef93fe82f534d4b5fdd0aff772f0eea7a101c3f324e046885cba8aa9107ab54aeffde5a4dc7117e4cdde2d3fb3d2afc7b2f710d5d66c55c5d1d7c5873598706af5a44d6d0b15f2cf84afdea4c76b1321f84da230a61b0c73d755d9cf5171a6db057b598310f90e7b899cbaea0bc1866fcbf3af525641e40b1b1a983bf840f30b06e4c7fa18e7887887e5b7424e8e2131e2a244163d4a70829f311a571d57c2eb085746d68637b4db6d45d855e9e31ac9059ffc928c3330ad1e13ac6f170ad48b08c0a54f1f153adae9df1b746cab08c40e3b949cf2458f80ac43ff256f2c17ab0a0afe69da42e11c43f942d1e50255f361776ea00274795fdf34d727597937db0bf0c9e4095ac5ab829224395315bc4e298b21b180d6e9a86e698f974d2fa25b0ef511fbed15d88d75933d12bb50b56d1bbed109380b2fe0c7ec72d44119152b20ba612ec45aa1ccb1ede3e2838ed2b4f5eadad5d80a873d74ead94b9689850b2952609ab975a854519cbe4993f6137d07bc0868d1ed5956f878316a8bcf510b2b3d5e18f8226115c2327ded2029a6308b4e8274f0b5f529b3a6e58dec46176b4105912d0268f239b12bfa0aaa290903ccbb52e0ad2126b73a4b20c9189bd1bb4387e81c06c49c9d18e250bb39ff13d21ddb4a97a5aae00006e204ded45c933b4410d33f13c053dca87be657a0ae3cc87655baf43f7efdd454ff74e3a9d8a2fb45861ecc5612d158b74c4a8be0d82e00d86c6e58a715bca69a6fcb687d3067fb47150da85f064599455634eee628e2f775d06bad83bb3631130854914e96d01b497cbcd9414ec2922ff86acf2e22ad1b49aa07be1182a9490c47d3170e6861bb4eccb2cb542bb05f8bc51440f279dc06401b64a71b2f6588f3789d223bd1b05b633fe2b6d38f6da7ebf0199e74c4b5b7a781cb276da4351b5adea55d01e6658b63f2c7c7a8809ee5a28c1aacc18219c9d61cf2e77a41f69871a78a67013646db64bfb076e6685695cbb09316f448529f41964fbbc9520059a0aeed64d63761bb774e8b543aaa5260ce6aeeff8e4428ba8de6767d53ff634190e86a624016175b8270b6d0325eac9f3ffd34032017f7848eaa460ca9a96a90a5296e34af91f96b8296804203c1734a4dd445fde8f702f106965c6a6b33e44896af15ad093c069b842b822ff26324247b6ac5a4f3eaa2bb97ab63a9ca95c2ff07775a1858f0173b85d101c656fa86dc284f34f7583b5f178d9e9b619df6031fe2c04b4c5f07e26b894447207ccc1db5b7dead529237e32480a6f74782d5e0ea8c5dd6999d73c62b89cb11f3766e2b8554874e37614fd76334ec14ab040572119de0a14b8542279b8a038b439b411fb7c6cc2d7315292a3d1649601641cbbe0825ab7fa90ce3002b8bfec3d3aba4cacf54940cc35e865b8ab6d8a856894f6401c4a653031a92e42b8dd36cb05189e12ff133ef1c0f3ddf97d1319dc737e4acbd882d17e143bb083b8e7e832b85afd9cac90cf30ab4477265f14901bc0f25b2142c2e488bce87352b9b9e396f1e881be87fc8c4ba059a000d7a233b540977f649e44c190e911ab3fb9ce86a9083a3b67f3fd358170ddaf8f78a7a48927c44182a269dac3cf59b846ba0ed516d2509f4932187758f8716db5b6c4dfed800ce9c65a8e5f2c51949652ba65343515a46a4aa9932cbdf0105d123c9d4ba9bef3be885c46f52c8c058d66ba7e6ae859516ab7792519d1ccc7781409bc58e534f54f4edd0981118d53405aba823c07ebdc12f850eb5dcc7e39971b34d5fd6643064e0394cc77cc0fea6718baadb6c3e6fb2482077a53cdba093a8ad605991be5a8f692c348c96cedb3b310bb3daa994e809e4484afce1c63b8737a9adb8a91ccb78d7002386a087b382de7bb4e1d9efbe50d88f02dc608509ba4ef589646abb8dde69c9398738becc8cd48bbce0e01ff970a8d2462a545370e0b992e069db055e417820aeb77e6870f9d09bc154c7a8b77c508d364f2ad31111f48c1eebcd3367da39f5fd907b510e5e170bc1e141bf6afbb7224e41e050c296f264e8c4c3cabb0d91a5594f0585be05714bc8401c2742f1bbae647adac22247c586a8bfcbe6ad477df55ab892abba99e22bc8de53d5c5b84788f81c917982569cadf95a757f3726b327bf245d80ca8c22ebcb3857cb91529a5fb21358b1ce837e4c12dac8c095e87e689a91dcd58e9bd3cbcf0343edbf88dbd0b2d302af4a027cf7a1b45be2fbed9e9b11b6bb6bcc426b6bcf4933936ffd18b5b65409bdc003b5f5ad8f9b8e36ae97b1f7b5f0af2803bd8be0bc39e129f4ecfac3d20c50d78472dca69f693150064093df5edb3a0caf14bbe1c8831d018fed582688b5e75be3c9983ac1761fb24a916451c6999c0c66f5ebe78a8a56ca63c88f3035d0dadea57cf12d42c7d8ef61795deec2dd98ca0393ebe7ed37a86e99b9c1197ff8fa3a5e4b6403b540196f6cd09af2fbc43ea9a5773bee287e579da5137412f2c3bd4d5ae4c6a11c4c420e04261157e04842a2ea641bee52eddafc82ea6226864dcf0583e034f6510d2b390ed60129b6855fc020c06bf4221d5348a254fa587bc69297dd25173e89f25220ec395ec495e3df9c41d3bc009ab06d6b49cd62f2801c4b0029a5343c51747f6716c788780bfeb2730af66c07040b1be7aedb10ffc0f136b7e147e4a1ad56944c1c76d6c2f6ca089cf316bc0914fdaf5815ff54b30fe11a656cf17539b090c36d5f5650260b12a7b94a945c0f326fa9866f007e8ea4125d5364b3d7061ebbbd9a24341c40a3ad8de3d113cc20f540f6c1dc4dba60d21936788a5bc5628f26333e27b14cd091145d92d8f25c214e94d1d2a9a2d849c9a3be83ebe8d973e494bdf41148a55607e1421ee316ec234c72214c38e8cb025a2b0995370d26b4113bec935efcedeca89dd30d21275c259fd3e7863ff035b153279e1d640508404da707d9defd7f2e212626ffb8e41c284a353b40066c06ccde4c573083785d245d5b2838c1ee1281f09c14f0c4b3ec29119217012c058b61ce8e44c9b374f96b1a2f638e91b84406e91cb9a2d38c5c2b69f99b0ddfb88c8fa9df62c4865ca4e69515a21c16bde93c726b1e678a156c2b6ceda4a153b7204176c9b67bbc508e12ff156b716374ac591fbc2db6dba5bc2d68459d6db2bb60a6285747cf5b1dcfb5b1cfa3eec9655d697fee8c93cae32c2d6907fd9c5c0a3bb5b8fa55153a9b8b798464f6ea3a540f0a7849f999ffc7ac2f8c1243fbad7e55982b37dc983137e4b9df19f5b31b5b35c5809d81cc4d03bc34542e51274a1c23c1293574ed5da6a1c28d092ae4362cec0eca403c02244d0c380b8fe3adebccf67b5de1d705a47f086feb604ff1315fd077735ceb29f7a52c3d6d8b8f8ea42749a350590b7f8838b75bbebfc5e008c536035419bc38e7aa9c4122206cc32e6e2a18e6a29e74205cc1afeb251a8455e5cf16fbcfcb88ec215c4393198b779fe113f35f58a900ae6bf49db2916f42b665d28efa5c233cddf39c44a96f5d752d040b443a98592bb0d42719b2cf3ebe538fc10f76637bc054e7ac475b203494c047938ad0de85240625075d596b472ddfe4c61ff7b2edb468a10c48799cc5e6109c73e8502411177081cd1c77881a6ec2f61bd0d11df09c40804c49fffe378d3ed8f6d69ec369fa92e11da60126b2856d383edc9a1474f3b3f07c5032a7bb8c6d069abb4f8969999472d20efb052cbac29c09bab99b6bc9b3d56c573b977a12a27f38f686571c67e01b848e24b49fb2ce07b8b0f12caf651b6eec5fd9b06ea650783b1d4ad13841ed6caf054ff5cbe72ec4636fce640bf1ae53bc6379520320c2c68f6e75938afa22a71c7f3bdcd1308ba1e7795a2fa2d9b9066c67545b9cedbfb179eaf1bbff9cfd518ea642bbd7eb991558d8349ba9ecdac4cc68dc89f99b0b46b9e3a10f9b115283e27b7f6fd591a9f6cf53fbaf1b1a4685fc6cab1a5375b5cd9bb82e1151fa0a287b5cfdebde6b9f5ef641f47febab31124c6df02cd907ad64313666799a84023c8e8025e7f9f5483a05823a732de3dbd3ec83b0bba37f25f365e26efbe6c9ecfa7905dbdc0b0e3ae60b29980b42c509c6fc85cebb3f21b5e97737a7bbc14d8376a79dbba9c2849a28edae77c776d1e4a08c87a9a2716ae0372617d83960e5b8b95d58826844d34285bd3c7ec9ccd64b208c8b04700655946c12a863db32cbd84265cca50d141ef81d868b6efba1ffdc80ac8cb71956a2cc29f4ef8944bdaaed344a724abcc8123601a8be12e776ba9d32cc95dfabf99a55a128f0cc1a12a58cdf161e58872515ee35cf87510536082d53dc99cae7c82bcc7d4c6d39b376a3f9a61242bf4ff1225866f5f93acbbf8ac922aca74a9ab84bb99319f754d03c6c1d86d5f9e91f556b247307552618299043a4ccaba592634f4d8b61fdd8e6a8107d883137ca41051c2656c59242b3157589d77cad4349f82754f223d99182a3f9de949c41ff94e672f7f548e7f4e66c04b5c1bcad66fd633937c6315d3253b35669c58ffe2c87976bd217c8cedd00784267b6bcadb15c2a8dff9814bd73ed6ca0fe06773c5abff7c172646ae7641d6db705531cc2beb245a1f61fba3137b09efce34ac458eeeb458a8716b5c13c6e7632a7a3acc4790e6ee2ebf4271fffa10d4bcc2a4460ab377a49ddbedfbb647090c6a97aacc47f958724182a5f5251dd078ce25a5e8e74213046701365f2557cc149b0508cc6bce54889ca98332b8d289e4ab347234a96a1d5389bd183d7f991791a79f0acc710cc1444b51d4cb4d22fc47a446df6d8371a8831a515040a52d7cea1fe70dcc9f261e20561ee1a137a7c03770706d09a6f85e36e7a313f04d92faefbd3d43ccc10f47daf388814d58209cad72e4c07dd9131ffb7b2b909d39746577a97178cd1a5def7ac55b1ccf202ae5de75a02a224d939e1b8d84f54e5d03a714d49896ce6e3dc917919ccb44e66c8a5d4c693b96265d5e7072433971fb38d083d0587eceda44cb74eae64cceb6393fea849c84b6e7c0c00278b6339b14f882fabae15fd0a16987c45b266dea4f1b1f0e05d7fc8c1e21bb7222122155c13ff28860007ad0accc7028daefa6de2f047e4650d3ad13d5e25bb0bf2fae4eb8ff8e21674919d206d1403af4835f2d506222f4f293af9d402e6e824bae4abc759bc62d914264d20f2ce6c2c876745bbb399c6290cf4e3ee75ce31bbc7ec11342fd5118b98e3cd228fd275f3f92e8b6ccc56a9437582dc59db70153ab33cdd77562661adda60fd23f678af47c89d76031edc91e43784bcf9991b131f957d312fced2c5187fb47d27df4ee2e430dfa95906c0567cd413a40c04984a90c26e930079d480a10fc13d296d443e8532e4977e9d78145f6ec9eadbec4fd2b10158e82985549046fe568d2c2f040d9b3546eee26f30efecb97e72fdaddea5d4999845b37742841e95f57d2d790f992e31eec84ed33b3ddf3e92ecaeaed911f0026c2ca09087f3eb1d3ebd2de3abc2fce0e6fb421d7a29d736a9ddcfdf51244022ffc483a291c4e4da958d2f319ea6317ece1f2b6430fa2b3f0861727c492f205d7ebeacbf6abc0903a1fd3754204488186b41e90a93d0607992b9cb992932ff66c2faef8a984dfe4a234d38bb685e02bad927a5425d733b7f89077e5b2b6c09e8e8990c98dde3275067cd425daddf60b2545e07c695d32d6bea2b9343f1528052b4edd1a777e93058565d45b3d8d71f6ca469454a375a951d272db9426e3712e172272f951d8b289d300d470b2fd0953e30824e61444d34da4e6396632a456e5cd26ba3aa8549774f412d4bae4a5bb6d0c9f7af8e160e06c3f1a5294f625aa07ee93855fc8a244b40e1cd4fda909c31173d9691cf6c488ffe22b46c795d0bc95aa062bcf08f414c4655ad60cf655685824e9966b0a10c01dc8b17b37e24944fdd760e4dd73ff1dd4ac14d618111c1eb2afe48d95bf0501243748e399e23a538bad0db61fe474f4f2b90fd633570f85d0cce43246c9c6329957fd61ba10fda8757a530a8f6f26313e497fd633885f37cc96de86b4791e356366bb7c963db4b8040a739dab08f4df0f5274d687d8070d4108dbd2520339f0de53182d9aaddce209d6b0520d85bcdb769835d6945be0cef12df3e9d25d4bfed7c4f6fbe980487ccdcf13891998454d4c7d3cd69631266f8f9a76413f5f902d59578faf655a0dbf92938ed749fee838c81bd7d6c29a7c39cee45b0e045a94081bc188ef73be2be086d66aefd850fc7eeacc45d7a15c23db646cb253f769875604c28b184a2487b5dff9c282bd65087e7b4238d821101a5c23a5c7e0f69d5e933c7de03ad19d9e6b67f00229a579f3924f054bd82318297ca7af51ac2546ea6bd24acca272e1627db952e2ca35df527a3cf257d85561d4ee89c473f4220a4a5ca0c8eaeb01fe8d0740aed291ad796d4b2da175d857fcac7bd9bb03551d70b9743895a98b74b06e54bdc34f1b27ab240356857dd8c5a6bb60ac4bf7517a02c2612d122e389ef4684a34b5f7be058113e9e74c75d8e7e17aa885b7c921a020c1c4edca93b89c003004b13ef1993ca9b2022e3e33da5fa2b39e46af1da709aa71245a02760e4f701d4b309812c5330391b24b9c5dda7ae8bef7b6e3f937bfdaa3d2fc7fe05131f1f739275285a0a65a03cfafcd54da9f7fd3d9612a68d2ead69dde53297b172b7db514d0d261e7c5be987df7f32adab8ba7a028d62fe9a5088e46acdbd2039f01abd8baa7c695d9377661c3d406ddbe6a3e8b30fe6c3a5436dba20b3ab6f714980a630007ba6daed4fbf15294ea5dc226375dedb131cbc73b5c90ea8d374d5d4b5e75dae7eb6a9a4c215d8e9b0addc89c6865c029c1088fb27b41c1a715b0bb611b94e1d625fa0bb8a1294187454dcc384f904c208e7a33d14aeabcebbc248b5ffbfda7f187691205801f05fae45dcd6bde04b554d3bc0cd72a5cf503ec854b4a44a4e5a9f8057dc2d0cbcaf5b41de454aaed31bf022121e7e1dc24e48ac2b048010aa02af0740614b8e52d66544de89b93418a2be5e997eebd4b815754518fc3b7db32b2c31bf97c8297f8ff752deea74425ab90f984007c4324ff21437aaacd212a1a5f349d31f03f735cce907deef1b2ff187a7da287e1bb52d607937e42d625fc973d4cd06438639d70bad4ae0084f5bd539e9f109706deacc25d346a52b1c61870f5f47d80b65defb7c9174e0169ecd64ca393045cc15687b0f3355f7c86eef2d25182c731a45e55f2d165ce04176c772d8e5b3758231c8155b2265e9522e5047b15f388a23cc707767923ee048fd6e69598e9af4aa6bdb31c470c5350cb29433bdaadd05fac776f7447e24e054c49795812be9a853e3d2351a9082c93bc93ad618e745cf5e4ae82ce3d551e07b68176334a25f28e80e34f203cc58686c54635c2bc7bbe3e3076713962e39e0a847a82939b522cfc1e77ec7067dba177ea048e7241bb47415e867e1149d5be0d744a6f291a2dc1e6d744d5ae0747e314b046739be170638ecc185ff4a9b5fe0fe63b7c5032e2437b3f8327e95b07eae600a8ad4f31e17db0f80a3208c4728e1cbdb5c7c39209793cf71d71ccd0a5eec8ee530069837073032da3ec4a5a714e212871311a823c9537b3f70adf0a9697c7286c84fdefe5603bb2fc49b0a7b67e26969331bf77ce04768009026a5362d51e5bccc12f788b8cda2a43ef218bd04e293a27231ba1550c3767df641d03102ad153acf8b4bdb7db7f180fa9d544d65e29c5c2a82d191bab4e3d4a573d0e5743b19cd8ccd2b4a978bdc1784d5af1c7be2be45f0061ce0bfd9ef023a354bd1beaa9bad14345aa18c95f9e05043dc1641e2cbbeac13b1017c8a5a32551d77e89017551a2f9438743446de2dc2ed13ec4de2dfbb25f8e8e6047e14474e054090c283b6c8d34fbcc7370fff8292592f934ee2ee98946be5a135cb50b08b1f1f6614ee0cd7505cae9cb04c945b493cdd5e39e412cb70d589051d3b28f6d37b9d40a09f98089e393972e4c79455c5dfbaa463e466a4aa995dcd657ab59a1792cf435afaa88fe5af877a5e9ddcf8ac7da5b1c0e46eabfeb61ea801ae60da954c89c2e885770e168c679762ad1ef7e192dbd81fe4a66ee66171e3238670377bc9ffbd7cb4bda47baf25e6ed80c2070942ee3f72e4caf691a36244d8af7391cd120945b4d65ad42d0fda5c4af5bc32e8dd25b102e4f351785e2ba01d8ae8c408b0112af93577eaf7487d1ad4cfb54285c88dbf1be62e1df098a40f24df7e2359de24775b28736ded030da69a7ec3c809b10b6e5ce643e4515fa656d6d830c088ec251ab76ba6cebd85be7e7d6362eafff654e222e64a8c8a0cd5301afb20483923ad8427c597ba471a6fa868947270768bdd2713e683743954d0cb555a54ab21cfb8161f74e689a051d1ac1dbbb94df70be3d81ee697c9f32c96c1d09daec35b2d6881c22c01a315dc9e44e17a1a1454c7a33f36e69aa84285f761bb1942735db2c3d443e29dd3f3da5aa7a00038bafdf93abc57e6ba74e93df6c3e3cd1615c99708e867e1f3160e324fdcce53be8e3b733e663ae6bebb5d5e9ba07892590925de99cd20a03e36c1996030b1e0147436bc087625e6c81838494ac13c655200f7f000474b6df2d30691a1c0ee215ea75447ceb5aee6f485794ef2701691b1508c90cb2d3bbf6186bff0716c43915936439e0645a9e881cd70793b3191b905aab3c659140f21d0febd037e0301235c14ca276d762ae8b86b6724b77a18292e91981dd7fab94cf39763eee53ced1ffb9e69ed586d4fe8d877314d178e4edaada34681e7e6a53324a9ec22674241465c49ffd505d702e8f0c9814b8cfe6b4a46e4ee7f2b9fd93aa98485c646f07e973e57293a107059e9b4fce1bde460d2c021e4ea45f7af26dacb4a194dc987b982caf41a42dcbb3bea073956416e6c3fb74d4423f458a028c9674f147468dc0e2ca6d2c140bcdf4dea4565b84bbc645ba42d3ce16887c42062314fe6aca7ab36a1fd942d7f31c76dea6a0804e0024beaa87fc072eb250446162310017e52147d18fada54a8ddb57bea8e15fa712af95184dccfbe15a4563cd8a53b3fca846aa7527b674cacdd3b2deaa00abd5e6449dd46d8882c6024f26cb5247d26becbfbb4f57314d342b96a65eaab0cb55c147ffaf184a4c00513e85f6d5bb6416994fbdd0dd168f3c59a291beabaedff8f91f5afd170b1c8252522e76584565bda69f49ca2e223fdec4b5529eaeb9d2bee9133ac09633b0361b04567f3997d6aa139a401c12f929be161d9f6eaf9465dbed932ceeebbe2e1affdbea923c005da57cb189dfa762b4db834691deb14462cbcddfd07593831e6ebb7c4a2e5f0acf8c052f6d76aa550113bb72b68eb6a6d492311cb809fe02a7649fe2c815ac9a824be7761d7f5b28360d06b810cec496735eca64ceabe80e911ddbad8c072ac5b69d3d88ed8dada02a9cf5c66c8ec5909db1fe8581fbe80eaf39b4577c12a99d5abc87131bc3d4363f623412f42eca902b865ca547fe3643fd221dccf29d98d449cece77b9dd046b58c053aff37ecb680f20d657555ed29eac269e2bebff745c89c84802e110402fc015055f973ecd0f078418756af923fefc497d98efcdd243170af2694cb75a2becfe2811732ecda6ddb746609cf2736a0b70823b52b11b15b1bb35a4021da70126290bbdc64eda91590afc29bbaf2457ceed70134549efff583e1a18aff911cd360f0771276ee16a0a68c6bb00ee88ee56a12ad67e778bbee540f868ead35fb6851fc522c0eee61feecf4dd3a49cefb1a9fda26a936d1a82b3202bc38549180d7dd89567e29eebbde3ff2bb37ca11414154e92c0521ac8051ea48d0d84b39714b2347763648eee6c7b76518ff52ab727047c1214470a0fb4fce60ed6ae06185a1501e9a4ce6ef8d3f3e96613631bf0c63444db7abcc063f40cfcd2f4b477615443fb8e84d5ff00272047a1369138c7948e8d193757bd7d6319254926d2b91175398d8250e30f01c087c4a752cbf56ae4672f910acad4b234a830818356b8378afcd8e042360f02cd6695698754c7d8a82ef80e87a7c753c95c028557d15c393b9955fe74151f05923569ced106a7a5e9562940bf2146d1bc0bccd673a5c206ee34d702eb93ff0e03882745e9434cd26c9a0124beb978fdd73df8fa15645b4931195aa653b31f0fd6298e6d06eefc52fb2f12dc1a6ff9e8958ac2a3efebc7f5673dc33808170f0fe1b04915cf406ce80faca3c18fda01d62d2ce52181870c984fb91c3a7df17f16a6e2b7183e7a10f701d357d224e9ca87bfbc49a663fbfa27426a8f5e9b1d7f206c1276f16bd43aca4fa9d596a7164a310b83bdf34350c1480ed4854cf9729f20bc9dd454ad586a9c7d259068e87412a8ea309a006e06857a0470704122701f21febf4202d805c54fc3a74b6d8f2ab070f330fcbd64bf02e1276111baf3967f221049df41595b4296f7cdf47a38b5b7c3187f9cad55c48ad60277ec92ce869f2453d14482695f0ec5b7ec434dcddaaf83e09e570e22c293906edad0ef967c7f25f7a8dd6b648eac453d60b0052dee3cefce2ff56830eb7cc98292c8885f958f26dd23a13d9bd0962132acd337a205d87fa1a06d770fcf2c29b7a124db05b37f287534dd5ead6c0247a1b0d3ada5588e578602c2ed64caa6f6fc2a5efee6f23f295175d63624a3f6e510b8c189db808a049704c4b99f49c2638e9d963d1a3caf2b13a9cb72a219a88fbb88f7c5306fcccbaa21a22484a24bbb84b8acee8b50bf2e0c893582b2b34b415274bf95b65f52ab82079a097a9ed28349eb9a7bae745f40703cb81f0aeb2691f6069bbb67a5a84b30d392b6c5906100b5a6cc57a781cf40945c32b5bb894f311b2a680d927a1d26080b3b4b1c8b5bcabb196918d0e2df4243300b12f9067d1fcf01c8e05f598ec2dfaa142a33398177f8b6e32ecfb2ff43ee0da71daa469096d3fb945ae73c18ed04d87604485b0e9613f0a5b629a23f45d6d4a8639fe14436a978b8a2e5aa3ff7e66273e765498e94c4aa29c8fd41df4799552128e38d633011cd255828ce6ede581ba9fbdd725c86afab9ceffc851f4f95e82d3eeecfde0058a399005262a9709101ddf3f2a564ab34040678ece15f4fb2a6f05eb4f0ef01e695d677ffd9f940af819590642305c12924e203f9143f657af299a3b7d16d7c4d27876099924e5905d4d85d683988726e31b25037cb6f6944b2b5f590f132203e5dd4f04c56e594f43b5681a48b210899382c3880b4ef69f5924c239023e8555b80a7323494f03c76357fac283664c131a90d13bf971f6a56175a8493877240552473d2a594c9e4491cb4da7fce3ccedded7bfec4c1cf6f9a8d8e0eb8f9113107b5f2bc4c3bf64a31c6ce51913433873e4357bd35524f82850542a488acfaba76ae5034491402ea1e2cfa31a7ceaa541947cc7ae2610f836649df542b24a1b63d80916ee743d4734640aa796648649685dbdd430c362f857311106c8d7b0daf6e096db9a0d759b52403e439ab23fd6559780a8b1c803f876487508074138e1786bff222fd8060db9339c4279446daeb6c39ec4c49313f87bd083c89d247ea03cac2fb12a410b3f44f87c1b523b0bd0aa3375d4dbf193f88d7cb742e81b397cdef5f7cb474cf2df150c46a450316042e096240b132b7cfa98b8b13a1b03a3f86748ad19edb237b86ce74b4c4dcc08492907df447f7026fadbad8979264e72d837f2b49a43abcd743143676bbe11ce1cdfd879c5def616fae63fdb20e3ec7589586b14ea019731b5089e2d1b22a7911e48603a5939780cfaeddd2000ca21dae6c04ed89e0d05b82ae1e0a603a79d78061b70725317727efaeef086f38d55942fa48bacc018724b488f46ecfc2828d879c7b780c8f57b0efc5929d7d3bb68912a9e450494e1bf76911946d877ec004a18cb5f6109862c7afcbe9a213e9409c3c31f6eb6429c937ecf497e920f0a152afe12eada80f435befcc5b90bc1891b7d905423f7a00ffb4e8f3d59aa97491b5a1d45b82548639936fd82c8f29cee3c6170e1f21d2d060586e2508f5a3dc977f2f179ed52d33aa923fe0dcc8db8a90eed611a4510a8131240174ca310a563a343fdac7fc1060b0b04fe2ddf82f8499b6f21a96fb3718b3e596c75e11f8c411bb564812ffd5ebd4702fe395dbcd412fb61e933d36cda92b15ccfcdc46c73d697cb59b0590a44e50c30fe41a0fab97ce06654fe9813a999a9d6dfb51bc7ab1f35dbbb27bbb3eac4c164fe4c363ca5fbd7818a873e807261aff6288a5c83f9464cbfa0fa0f280a9a7a31fe542228c05a0fa0c58590405622c205c9bfe36fc1f51f12110fbdfbc0eaa871fe6c31fcff28694469c3d4c1681270bdacf6edf7ec39bda6c68cf25738268b79fe7d71599a2b67c5085142c626641ccfc1f44919270fcac28d2ecfd41e0c7e3cfe96b7fa8b193f73106d03bd579b5cc090cb75640ec8090d19d96a3c3d5d8c7dfeb9a2a2a2d0d215d22a687727cdeb85115c05e3f5d2922a62fa46ed3f97fc32feddac420e696be2b3c613261dd7d84a25b6410eca645efd87d9f4030c7bbc9ffef5977196fe3fe5c456a767e6b06013ca62762b282de97040add4ad2c53db61fef59e8cea1557d81fbc180476839ad67f924d502b61efb0527c1dfa04e3fc59fefa1659ff7e86a20f110974463d76eb0238f0e02f6b526df7d586b0657d52d8ffd31bf694e0d28434da06abd3fe4febe23b25054b5de48ed94246339c51b2e6'; diff --git a/src/services/test-helpers/mock/mockApi.ts b/src/services/test-helpers/mock/mockApi.ts index 0a35e2e66..71dff0454 100644 --- a/src/services/test-helpers/mock/mockApi.ts +++ b/src/services/test-helpers/mock/mockApi.ts @@ -15,7 +15,7 @@ // along with this program. If not, see . import { ApiPromise } from '@polkadot/api'; -import { GenericExtrinsic, Vec } from '@polkadot/types'; +import { GenericExtrinsic, u32, Vec } from '@polkadot/types'; import { Option } from '@polkadot/types/codec'; import { AccountId, @@ -94,6 +94,9 @@ export const activeEraAt = (_hash: Hash): Promise> => }), ); +export const currentEraAt = (_hash: Hash): Promise> => + Promise.resolve().then(() => polkadotRegistry.createType('Option', 49)); + export const erasStartSessionIndexAt = (_hash: Hash, _activeEra: EraIndex): Promise> => Promise.resolve().then(() => polkadotRegistry.createType('Option', 330)); @@ -233,6 +236,9 @@ export const defaultMockApi = { transactionPayment: { operationalFeeMultiplier: new BN(5), }, + staking: { + historyDepth: kusamaRegistry.createType('u32', 84), + }, }, createType: polkadotRegistry.createType.bind(polkadotRegistry), registry: polkadotRegistry, diff --git a/src/services/test-helpers/responses/accounts/stakingInfo21157800.json b/src/services/test-helpers/responses/accounts/stakingInfo21157800.json index 15c7680e3..67316f67a 100644 --- a/src/services/test-helpers/responses/accounts/stakingInfo21157800.json +++ b/src/services/test-helpers/responses/accounts/stakingInfo21157800.json @@ -349,7 +349,11 @@ }, { "era": "1468", - "status": "partially claimed" + "status": "claimed" + }, + { + "era": "1469", + "status": "unclaimed" } ] } diff --git a/src/types/responses/AccountStakingInfo.ts b/src/types/responses/AccountStakingInfo.ts index 102c3f2d3..a1f04837e 100644 --- a/src/types/responses/AccountStakingInfo.ts +++ b/src/types/responses/AccountStakingInfo.ts @@ -27,7 +27,7 @@ import { IAt } from '.'; export interface IEraStatus { era: number; - status: 'claimed' | 'partially claimed' | 'unclaimed'; + status: 'claimed' | 'unclaimed' | 'undefined'; } export interface IStakingLedger { From cd6673560e375130d6a81e77d19fef83e10c6216 Mon Sep 17 00:00:00 2001 From: Imod7 Date: Tue, 6 Aug 2024 18:06:56 +0200 Subject: [PATCH 14/26] fix for claimed in case of validator account - bringing back `partially claimed` for validator --- .../AccountsStakingInfoService.spec.ts | 2 +- .../accounts/AccountsStakingInfoService.ts | 22 +++++++++---------- .../mock/mockApiPolkadotBlock21157800.ts | 2 +- .../accounts/stakingInfo21157800.json | 2 +- src/types/responses/AccountStakingInfo.ts | 2 +- 5 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/services/accounts/AccountsStakingInfoService.spec.ts b/src/services/accounts/AccountsStakingInfoService.spec.ts index a73ebbd2b..3e49a0da9 100644 --- a/src/services/accounts/AccountsStakingInfoService.spec.ts +++ b/src/services/accounts/AccountsStakingInfoService.spec.ts @@ -229,7 +229,7 @@ describe('AccountsStakingInfoService', () => { ).toStrictEqual(response22939322); }); - it('works with a valid stash account (block 21157800) & returns an array of claimed (including case erasStakersOverview=null & erasStakers>0, era 1419) & partially claimed (era 1468) (Polkadot)', async () => { + it('works with a validator account (block 21157800) & returns an array of claimed (including case erasStakersOverview=null & erasStakers>0, era 1419), partially claimed & unclaimed eras (Polkadot)', async () => { expect( sanitizeNumbers( await accountStakingInfoService21157800.fetchAccountStakingInfo(blockHash21157800, testAddressPolkadot), diff --git a/src/services/accounts/AccountsStakingInfoService.ts b/src/services/accounts/AccountsStakingInfoService.ts index 6f625f16f..1e5a210e4 100644 --- a/src/services/accounts/AccountsStakingInfoService.ts +++ b/src/services/accounts/AccountsStakingInfoService.ts @@ -83,9 +83,7 @@ export class AccountsStakingInfoService extends AbstractService { throw new InternalServerError('CurrentEra is None when Some was expected'); } const currentEra = currentEraMaybeOption.unwrap().toNumber(); - console.log('currentEra: ', currentEra); - - const eraStart = currentEra - depth; + const eraStart = currentEra - depth > 0 ? currentEra - depth : 0; let oldCallChecked = false; for (let e = eraStart; e < eraStart + depth; e++) { let claimedRewardsEras: u32[] = []; @@ -119,10 +117,6 @@ export class AccountsStakingInfoService extends AbstractService { if (currentEraMaybeOption.isNone) { throw new InternalServerError('CurrentEra is None when Some was expected'); } - // const currentEra = currentEraMaybeOption.unwrap().toNumber(); - // let eraStart = currentEra - depth; - - // for (let e = eraStart; e < eraStart + depth; e++) { const claimedRewardsPerEra = await historicApi.query.staking.claimedRewards(e, stash); const erasStakersOverview = await historicApi.query.staking.erasStakersOverview(e, stash); let erasStakers = null; @@ -150,11 +144,13 @@ export class AccountsStakingInfoService extends AbstractService { ? 'unclaimed' : claimedRewardsPerEra.length === pageCount ? 'claimed' - : (!isValidator && nominatorClaimed === true) || (isValidator && claimedRewardsPerEra.length != 0) - ? 'claimed' - : !isValidator && nominatorClaimed === false - ? 'unclaimed' - : 'undefined'; + : isValidator && claimedRewardsPerEra.length != pageCount + ? 'partially claimed' + : !isValidator && nominatorClaimed === true + ? 'claimed' + : !isValidator && nominatorClaimed === false + ? 'unclaimed' + : 'undefined'; claimedRewards.push({ era: e, status: eraStatus }); } else if (erasStakers && erasStakers.total.toBigInt() > 0) { // if erasStakers.total > 0, then the pageCount is always 1 @@ -168,6 +164,8 @@ export class AccountsStakingInfoService extends AbstractService { // this.getValidatorInfo(historicApi, e, nomination, pageCount, claimedRewardsPerEra); }); } + } else { + break; } } const numSlashingSpans = slashingSpansOption.isSome ? slashingSpansOption.unwrap().prior.length + 1 : 0; diff --git a/src/services/test-helpers/mock/mockApiPolkadotBlock21157800.ts b/src/services/test-helpers/mock/mockApiPolkadotBlock21157800.ts index d15d58e01..2ceef098a 100644 --- a/src/services/test-helpers/mock/mockApiPolkadotBlock21157800.ts +++ b/src/services/test-helpers/mock/mockApiPolkadotBlock21157800.ts @@ -197,7 +197,7 @@ const traceBlock = () => Promise.resolve().then(() => polkadotRegistryV1002000.createType('TraceBlockResponse', traceBlockRPC.result)); /** - * Deafult Mock polkadot-js ApiPromise. Values are largely meant to be accurate for block + * Default Mock polkadot-js ApiPromise. Values are largely meant to be accurate for block * #21157800, which is what most Service unit tests are based on. */ export const defaultMockApi21157800 = { diff --git a/src/services/test-helpers/responses/accounts/stakingInfo21157800.json b/src/services/test-helpers/responses/accounts/stakingInfo21157800.json index 67316f67a..4cba00b7a 100644 --- a/src/services/test-helpers/responses/accounts/stakingInfo21157800.json +++ b/src/services/test-helpers/responses/accounts/stakingInfo21157800.json @@ -349,7 +349,7 @@ }, { "era": "1468", - "status": "claimed" + "status": "partially claimed" }, { "era": "1469", diff --git a/src/types/responses/AccountStakingInfo.ts b/src/types/responses/AccountStakingInfo.ts index a1f04837e..22b3a1db4 100644 --- a/src/types/responses/AccountStakingInfo.ts +++ b/src/types/responses/AccountStakingInfo.ts @@ -27,7 +27,7 @@ import { IAt } from '.'; export interface IEraStatus { era: number; - status: 'claimed' | 'unclaimed' | 'undefined'; + status: 'claimed' | 'unclaimed' | 'partially claimed' | 'undefined'; } export interface IStakingLedger { From 00a54a05aa8de9512b9c467a5ec0faebe82e75c4 Mon Sep 17 00:00:00 2001 From: Imod7 Date: Thu, 22 Aug 2024 21:04:30 +0200 Subject: [PATCH 15/26] moved validator logic in separate function --- .../accounts/AccountsStakingInfoService.ts | 140 +++++++++--------- 1 file changed, 72 insertions(+), 68 deletions(-) diff --git a/src/services/accounts/AccountsStakingInfoService.ts b/src/services/accounts/AccountsStakingInfoService.ts index 1e5a210e4..3b17df998 100644 --- a/src/services/accounts/AccountsStakingInfoService.ts +++ b/src/services/accounts/AccountsStakingInfoService.ts @@ -15,8 +15,9 @@ // along with this program. If not, see . import type { ApiDecoration } from '@polkadot/api/types'; -import type { u32, Vec } from '@polkadot/types'; +import { Option, u32, Vec } from '@polkadot/types'; import { BlockHash, StakingLedger, StakingLedgerTo240 } from '@polkadot/types/interfaces'; +import type { SpStakingExposure, SpStakingPagedExposureMetadata } from '@polkadot/types/lookup'; import { BadRequest, InternalServerError } from 'http-errors'; import { IAccountStakingInfo, IEraStatus } from 'src/types/responses'; @@ -67,6 +68,11 @@ export class AccountsStakingInfoService extends AbstractService { `Staking ledger could not be found for controller address "${controller.toString()}"`, ); } + let isValidator = false; + if (historicApi.query.session) { + const validators = (await historicApi.query.session.validators()).toHuman() as string[]; + isValidator = validators.includes(stash); + } let nominations = null; if (historicApi.query.staking.nominators) { @@ -74,10 +80,10 @@ export class AccountsStakingInfoService extends AbstractService { nominations = nominationsOption.unwrapOr(null); } + // Checking if rewards were claimed for each era let claimedRewards: IEraStatus[] = []; - + // Defining for which range of eras to check if rewards were claimed const depth = Number(api.consts.staking.historyDepth.toNumber()); - const currentEraMaybeOption = await historicApi.query.staking.currentEra(); if (currentEraMaybeOption.isNone) { throw new InternalServerError('CurrentEra is None when Some was expected'); @@ -85,10 +91,12 @@ export class AccountsStakingInfoService extends AbstractService { const currentEra = currentEraMaybeOption.unwrap().toNumber(); const eraStart = currentEra - depth > 0 ? currentEra - depth : 0; let oldCallChecked = false; + // Checking each era one by one for (let e = eraStart; e < eraStart + depth; e++) { let claimedRewardsEras: u32[] = []; - // Setting as claimed only the era that is defined in the lastReward field + // Checking first the old call of `lastReward` and setting as claimed only the era that + // is defined in the lastReward field. I do not make any assumptions for any other eras. if ((stakingLedger as unknown as StakingLedgerTo240)?.lastReward) { const lastReward = (stakingLedger as unknown as StakingLedgerTo240).lastReward; if (lastReward.isSome) { @@ -97,72 +105,60 @@ export class AccountsStakingInfoService extends AbstractService { claimedRewards.push({ era: e, status: 'claimed' }); } } + // Second check is another old call called `legacyClaimedRewards` from stakingLedger } else if (stakingLedger?.legacyClaimedRewards) { claimedRewardsEras = stakingLedger?.legacyClaimedRewards; + // If none of the above are present, we try the `claimedRewards` from stakingLedger } else { claimedRewardsEras = (stakingLedger as unknown as StakingLedger)?.claimedRewards as Vec; } + /** + * Here we check if we already checked/used the info from the old calls. If not we will use them and + * populate the claimedRewards array with the eras that are claimed. The data from the old calls + * can also be empty (no results) and claimedRewards array will be populated with the data only from + * the new call `query.staking?.claimedRewards` further below. + */ if (!oldCallChecked) { if (claimedRewardsEras.length > 0) { claimedRewards = claimedRewardsEras.map((element) => ({ era: element.toNumber(), status: 'claimed', })); - e = claimedRewardsEras[claimedRewardsEras.length - 1].toNumber() + 1; + const claimedRewardsErasMax = claimedRewardsEras[claimedRewardsEras.length - 1].toNumber(); + /** + * Added this check because from old calls sometimes I would get other eras than the ones I am checking. + * In that case, I need to check if the era is in the range I am checking. + */ + if (eraStart <= claimedRewardsErasMax) { + e = claimedRewardsErasMax + 1; + } else { + claimedRewards = []; + } } oldCallChecked = true; } + /** + * If the old calls are checked (which means `oldCallChecked` flag is true) and the new call + * `query.staking.claimedRewards` is available then we go into this check. + */ if (historicApi.query.staking?.claimedRewards && oldCallChecked) { const currentEraMaybeOption = await historicApi.query.staking.currentEra(); if (currentEraMaybeOption.isNone) { throw new InternalServerError('CurrentEra is None when Some was expected'); } - const claimedRewardsPerEra = await historicApi.query.staking.claimedRewards(e, stash); - const erasStakersOverview = await historicApi.query.staking.erasStakersOverview(e, stash); - let erasStakers = null; - if (historicApi.query.staking?.erasStakers) { - erasStakers = await historicApi.query.staking.erasStakers(e, stash); - } + // Populating `claimedRewardsPerEra` for validator + const claimedRewardsPerEra: Vec = await historicApi.query.staking.claimedRewards(e, stash); - const validators = (await historicApi.query.session.validators()).toHuman() as string[]; - const isValidator = validators.includes(stash); - /** - * If the account is a validator, then the rewards from their own stake + commission are claimed - * if at least one page of the erasStakersPaged is claimed (it can be any page). - * https://github.com/paritytech/polkadot-sdk/blob/776e95748901b50ff2833a7d27ea83fd91fbf9d1/substrate/frame/staking/src/pallet/impls.rs#L357C30-L357C54 - * code that shows that when `do_payout_stakers_by_page` is called, first the validator is paid out. - */ if (isValidator) { - if (erasStakersOverview.isSome) { - const pageCount = erasStakersOverview.unwrap().pageCount.toNumber(); - let nominatorClaimed = false; - if (claimedRewardsPerEra.length != pageCount) { - nominatorClaimed = await this.getNominatorClaimed(historicApi, e, stash, pageCount, claimedRewardsPerEra); - } - const eraStatus = - claimedRewardsPerEra.length === 0 - ? 'unclaimed' - : claimedRewardsPerEra.length === pageCount - ? 'claimed' - : isValidator && claimedRewardsPerEra.length != pageCount - ? 'partially claimed' - : !isValidator && nominatorClaimed === true - ? 'claimed' - : !isValidator && nominatorClaimed === false - ? 'unclaimed' - : 'undefined'; - claimedRewards.push({ era: e, status: eraStatus }); - } else if (erasStakers && erasStakers.total.toBigInt() > 0) { - // if erasStakers.total > 0, then the pageCount is always 1 - // https://github.com/polkadot-js/api/issues/5859#issuecomment-2077011825 - const eraStatus = claimedRewardsPerEra.length === 1 ? 'claimed' : 'unclaimed'; - claimedRewards.push({ era: e, status: eraStatus }); - } + claimedRewards = await this.fetchErasStatusForValidator( + historicApi, + e, + stash, + claimedRewardsPerEra, + claimedRewards, + ); } else { - nominations?.forEach((nomination) => { - console.log('nomination', nomination); - // this.getValidatorInfo(historicApi, e, nomination, pageCount, claimedRewardsPerEra); - }); + // Call function for Nominator } } else { break; @@ -186,29 +182,37 @@ export class AccountsStakingInfoService extends AbstractService { }; } - private async getNominatorClaimed( + private async fetchErasStatusForValidator( historicApi: ApiDecoration<'promise'>, - era: number, + e: number, stash: string, - pageCount: number, claimedRewardsPerEra: Vec, - ): Promise { - for (let i = 0; i < pageCount; i++) { - const nominatorsRewardsPerPage = await historicApi.query.staking.erasStakersPaged(era, stash, i); - // const numSlashingSpans = slashingSpansOption.isSome ? slashingSpansOption.unwrap().prior.length + 1 : 0; - const nominatorFound = nominatorsRewardsPerPage.isSome - ? nominatorsRewardsPerPage.unwrap().others.find((nominator) => nominator.who.toString() === stash) - : null; - const claimedEra = claimedRewardsPerEra.find((era) => era === (i as unknown as u32)); - if (nominatorFound && claimedEra) { - return true; - } + claimedRewards: IEraStatus[], + ): Promise { + const erasStakersOverview: Option = + await historicApi.query.staking.erasStakersOverview(e, stash); + let erasStakers: SpStakingExposure | null = null; + if (historicApi.query.staking?.erasStakers) { + erasStakers = await historicApi.query.staking.erasStakers(e, stash); } - return false; - } - // private async getValidatorInfo(historicApi: ApiDecoration<'promise'>, stash: string): any { - // const erasStakersOverview = await historicApi.query.staking.erasStakersOverview(e, stash); - // return [erasStakersOverview]; - // } + if (erasStakersOverview.isSome) { + const pageCount = erasStakersOverview.unwrap().pageCount.toNumber(); + const eraStatus = + claimedRewardsPerEra.length === 0 + ? 'unclaimed' + : claimedRewardsPerEra.length === pageCount + ? 'claimed' + : claimedRewardsPerEra.length != pageCount + ? 'partially claimed' + : 'undefined'; + claimedRewards.push({ era: e, status: eraStatus }); + } else if (erasStakers && erasStakers.total.toBigInt() > 0) { + // if erasStakers.total > 0, then the pageCount is always 1 + // https://github.com/polkadot-js/api/issues/5859#issuecomment-2077011825 + const eraStatus = claimedRewardsPerEra.length === 1 ? 'claimed' : 'unclaimed'; + claimedRewards.push({ era: e, status: eraStatus }); + } + return claimedRewards; + } } From df175e8cb7bdb8aad0c233709f59f5a2c0c61aec Mon Sep 17 00:00:00 2001 From: Imod7 Date: Mon, 16 Sep 2024 16:21:12 +0200 Subject: [PATCH 16/26] adding first draft of nominator logic --- .../accounts/AccountsStakingInfoService.ts | 191 +++++++++++++++++- 1 file changed, 185 insertions(+), 6 deletions(-) diff --git a/src/services/accounts/AccountsStakingInfoService.ts b/src/services/accounts/AccountsStakingInfoService.ts index 3b17df998..b4dbac604 100644 --- a/src/services/accounts/AccountsStakingInfoService.ts +++ b/src/services/accounts/AccountsStakingInfoService.ts @@ -62,17 +62,18 @@ export class AccountsStakingInfoService extends AbstractService { const stakingLedger = stakingLedgerOption.unwrapOr(null); + let isValidator = false; + if (historicApi.query.session) { + const validators = (await historicApi.query.session.validators()).toHuman() as string[]; + isValidator = validators.includes(stash); + } + if (stakingLedger === null) { // should never throw because by time we get here we know we have a bonded pair throw new InternalServerError( `Staking ledger could not be found for controller address "${controller.toString()}"`, ); } - let isValidator = false; - if (historicApi.query.session) { - const validators = (await historicApi.query.session.validators()).toHuman() as string[]; - isValidator = validators.includes(stash); - } let nominations = null; if (historicApi.query.staking.nominators) { @@ -112,6 +113,7 @@ export class AccountsStakingInfoService extends AbstractService { } else { claimedRewardsEras = (stakingLedger as unknown as StakingLedger)?.claimedRewards as Vec; } + /** * Here we check if we already checked/used the info from the old calls. If not we will use them and * populate the claimedRewards array with the eras that are claimed. The data from the old calls @@ -146,6 +148,7 @@ export class AccountsStakingInfoService extends AbstractService { if (currentEraMaybeOption.isNone) { throw new InternalServerError('CurrentEra is None when Some was expected'); } + // Populating `claimedRewardsPerEra` for validator const claimedRewardsPerEra: Vec = await historicApi.query.staking.claimedRewards(e, stash); @@ -158,7 +161,20 @@ export class AccountsStakingInfoService extends AbstractService { claimedRewards, ); } else { - // Call function for Nominator + // If the account is a Nominator, then to determine if an era is claimed or not, I need to check + // if the era of one of their Validators is claimed or not. + const nominatingValidators = await historicApi.query.staking.nominators(stash); + const validatorsUnwrapped = nominatingValidators.unwrap().targets.toHuman() as string[]; + + const [era, claimedRewardsNom] = await this.fetchErasStatusForNominator( + historicApi, + e, + eraStart, + claimedRewards, + validatorsUnwrapped, + ); + e = era; + claimedRewards = claimedRewardsNom; } } else { break; @@ -215,4 +231,167 @@ export class AccountsStakingInfoService extends AbstractService { } return claimedRewards; } + + private async fetchErasStatusForNominator( + historicApi: ApiDecoration<'promise'>, + e: number, + eraStart: number, + claimedRewards: IEraStatus[], + validatorsUnwrapped: string[], + ): Promise<[number, IEraStatus[]]> { + let eraStatusVal: 'claimed' | 'unclaimed' | 'partially claimed' | 'undefined' = 'undefined'; + // Iterate through all validators that the nominator is nominating and + // check if the rewards are claimed or not. + for (const [idx, validatorStash] of validatorsUnwrapped.entries()) { + let oldCallChecked = false; + if (claimedRewards.length == 0) { + const [era, claimedRewardsOld, oldCallCheck] = await this.fetchErasFromOldCalls( + historicApi, + e, + eraStart, + claimedRewards, + validatorStash, + oldCallChecked, + ); + claimedRewards = claimedRewardsOld; + oldCallChecked = oldCallCheck; + e = era; + } else { + oldCallChecked = true; + } + + // Checking if the new call is available then I can check if rewards of nominator are claimed or not. + // If not available, I will set the status to 'undefined'. + if (historicApi.query.staking?.claimedRewards && oldCallChecked) { + const currentEraMaybeOption = await historicApi.query.staking.currentEra(); + if (currentEraMaybeOption.isNone) { + throw new InternalServerError('CurrentEra is None when Some was expected'); + } + // Populating `claimedRewardsPerEra` for validator + const claimedRewardsPerEra: Vec = await historicApi.query.staking.claimedRewards(e, validatorStash); + + // Doing similar checks as in fetchErasStatusForValidator function + // but with slight changes to adjust to nominator's case + const erasStakersOverview: Option = + await historicApi.query.staking.erasStakersOverview(e, validatorStash); + let erasStakers: SpStakingExposure | null = null; + if (historicApi.query.staking?.erasStakers) { + erasStakers = await historicApi.query.staking.erasStakers(e, validatorStash); + } + + if (erasStakersOverview.isSome) { + const pageCount = erasStakersOverview.unwrap().pageCount.toNumber(); + const eraStatus = + claimedRewardsPerEra.length === 0 + ? 'unclaimed' + : claimedRewardsPerEra.length === pageCount + ? 'claimed' + : claimedRewardsPerEra.length != pageCount + ? 'partially claimed' + : 'undefined'; + claimedRewards.push({ era: e, status: eraStatus }); + eraStatusVal = eraStatus; + break; + } else if (erasStakers && erasStakers.total.toBigInt() > 0) { + // if erasStakers.total > 0, then the pageCount is always 1 + // https://github.com/polkadot-js/api/issues/5859#issuecomment-2077011825 + const eraStatus = claimedRewardsPerEra.length === 1 ? 'claimed' : 'unclaimed'; + claimedRewards.push({ era: e, status: eraStatus }); + eraStatusVal = eraStatus; + break; + } else { + eraStatusVal = 'undefined'; + if (idx === validatorsUnwrapped.length - 1) { + claimedRewards.push({ era: e, status: eraStatusVal }); + } else { + continue; + } + } + } + } + return [e, claimedRewards]; + } + + /** + * + * This function takes a specific stash account and gives back the era and status of the rewards for that era. + */ + private async fetchErasFromOldCalls( + historicApi: ApiDecoration<'promise'>, + e: number, + eraStart: number, + claimedRewards: IEraStatus[], + stash: string, + oldCallChecked: boolean, + ): Promise<[number, IEraStatus[], boolean]> { + let claimedRewardsEras: u32[] = []; + // SAME CODE AS IN MAIN FUNCTION - fetchAccountStakingInfo - + const controllerOption = await historicApi.query.staking.bonded(stash); + + if (controllerOption.isNone) { + // throw new BadRequest(`The address ${stash} is not a stash address.`); + return [e, claimedRewards, oldCallChecked]; + } + + const controller = controllerOption.unwrap(); + + const [stakingLedgerOption, rewardDestination, slashingSpansOption] = await Promise.all([ + historicApi.query.staking.ledger(controller), + historicApi.query.staking.payee(stash), + historicApi.query.staking.slashingSpans(stash), + ]).catch((err: Error) => { + throw this.createHttpErrorForAddr(stash, err); + }); + + const stakingLedgerValNom = stakingLedgerOption.unwrapOr(null); + rewardDestination; + slashingSpansOption; + stakingLedgerValNom; + + // --- END --- same code as in main method + // Checking first the old call of `lastReward` and setting as claimed only the era that + // is defined in the lastReward field. I do not make any assumptions for any other eras. + if ((stakingLedgerValNom as unknown as StakingLedgerTo240)?.lastReward) { + const lastReward = (stakingLedgerValNom as unknown as StakingLedgerTo240).lastReward; + if (lastReward.isSome) { + const e = (stakingLedgerValNom as unknown as StakingLedgerTo240)?.lastReward?.unwrap().toNumber(); + if (e) { + claimedRewards.push({ era: e, status: 'claimed' }); + } + } + // Second check is another old call called `legacyClaimedRewards` from stakingLedger + } else if (stakingLedgerValNom?.legacyClaimedRewards) { + claimedRewardsEras = stakingLedgerValNom?.legacyClaimedRewards; + // If none of the above are present, we try the `claimedRewards` from stakingLedger + } else { + claimedRewardsEras = (stakingLedgerValNom as unknown as StakingLedger)?.claimedRewards as Vec; + } + claimedRewardsEras; + /** + * Here we check if we already checked/used the info from the old calls. If not we will use them and + * populate the claimedRewards array with the eras that are claimed. The data from the old calls + * can also be empty (no results) and claimedRewards array will be populated with the data only from + * the new call `query.staking?.claimedRewards` further below. + */ + if (!oldCallChecked) { + if (claimedRewardsEras.length > 0) { + claimedRewards = claimedRewardsEras.map((element) => ({ + era: element.toNumber(), + status: 'claimed', + })); + const claimedRewardsErasMax = claimedRewardsEras[claimedRewardsEras.length - 1].toNumber(); + /** + * Added this check because from old calls sometimes I would get other eras than the ones I am checking. + * In that case, I need to check if the era is in the range I am checking. + */ + if (eraStart <= claimedRewardsErasMax) { + e = claimedRewardsErasMax + 1; + } else { + claimedRewards = []; + } + } + oldCallChecked = true; + } + return [e, claimedRewards, oldCallChecked]; + } } From 0829f448b4eebdfd841c1c4ae043f90ac644fa6d Mon Sep 17 00:00:00 2001 From: Imod7 Date: Fri, 20 Sep 2024 00:11:18 +0200 Subject: [PATCH 17/26] nominator logic when validator era partially claimed - Added validator and nominator status types to allow specific status values for each - Updated existing test --- .../AccountsStakingInfoService.spec.ts | 7 ++ .../accounts/AccountsStakingInfoService.ts | 104 +++++++++++++----- src/types/responses/AccountStakingInfo.ts | 9 +- 3 files changed, 87 insertions(+), 33 deletions(-) diff --git a/src/services/accounts/AccountsStakingInfoService.spec.ts b/src/services/accounts/AccountsStakingInfoService.spec.ts index 3e49a0da9..146de0cb2 100644 --- a/src/services/accounts/AccountsStakingInfoService.spec.ts +++ b/src/services/accounts/AccountsStakingInfoService.spec.ts @@ -57,6 +57,7 @@ import { stakingPayeeMockedCall, stakingslashingSpansMockedCall, } from '../test-helpers/mock/accounts/stakingInfo'; +import { validators789629Hex } from '../test-helpers/mock/data/validators789629Hex'; import { validators21157800Hex } from '../test-helpers/mock/data/validators21157800Hex'; import { validators22939322Hex } from '../test-helpers/mock/data/validators22939322Hex'; import response789629 from '../test-helpers/responses/accounts/stakingInfo789629.json'; @@ -81,6 +82,9 @@ const payeeAt = (_hash: Hash, _address: string) => const slashingSpansAt = (_hash: Hash, _address: string) => Promise.resolve().then(() => polkadotRegistry.createType('SlashingSpans')); +const validatorsAt789629 = () => + Promise.resolve().then(() => polkadotRegistry.createType('Vec', validators789629Hex)); + const historicApi = { query: { staking: { @@ -90,6 +94,9 @@ const historicApi = { slashingSpans: slashingSpansAt, currentEra: currentEraAt, }, + session: { + validators: validatorsAt789629, + }, }, } as unknown as ApiDecoration<'promise'>; diff --git a/src/services/accounts/AccountsStakingInfoService.ts b/src/services/accounts/AccountsStakingInfoService.ts index b4dbac604..4333693b8 100644 --- a/src/services/accounts/AccountsStakingInfoService.ts +++ b/src/services/accounts/AccountsStakingInfoService.ts @@ -19,7 +19,7 @@ import { Option, u32, Vec } from '@polkadot/types'; import { BlockHash, StakingLedger, StakingLedgerTo240 } from '@polkadot/types/interfaces'; import type { SpStakingExposure, SpStakingPagedExposureMetadata } from '@polkadot/types/lookup'; import { BadRequest, InternalServerError } from 'http-errors'; -import { IAccountStakingInfo, IEraStatus } from 'src/types/responses'; +import { IAccountStakingInfo, IEraStatus, NominatorStatus, ValidatorStatus } from 'src/types/responses'; import { AbstractService } from '../AbstractService'; @@ -82,7 +82,8 @@ export class AccountsStakingInfoService extends AbstractService { } // Checking if rewards were claimed for each era - let claimedRewards: IEraStatus[] = []; + let claimedRewards: IEraStatus[] = []; + let claimedRewardsNom: IEraStatus[] = []; // Defining for which range of eras to check if rewards were claimed const depth = Number(api.consts.staking.historyDepth.toNumber()); const currentEraMaybeOption = await historicApi.query.staking.currentEra(); @@ -166,20 +167,24 @@ export class AccountsStakingInfoService extends AbstractService { const nominatingValidators = await historicApi.query.staking.nominators(stash); const validatorsUnwrapped = nominatingValidators.unwrap().targets.toHuman() as string[]; - const [era, claimedRewardsNom] = await this.fetchErasStatusForNominator( + const [era, claimedRewardsNom1] = await this.fetchErasStatusForNominator( historicApi, e, eraStart, - claimedRewards, + claimedRewardsNom, validatorsUnwrapped, + stash, ); e = era; - claimedRewards = claimedRewardsNom; + claimedRewardsNom = claimedRewardsNom1; } } else { break; } } + if (!isValidator) { + claimedRewards = claimedRewardsNom; + } const numSlashingSpans = slashingSpansOption.isSome ? slashingSpansOption.unwrap().prior.length + 1 : 0; return { @@ -193,7 +198,7 @@ export class AccountsStakingInfoService extends AbstractService { total: stakingLedger.total, active: stakingLedger.active, unlocking: stakingLedger.unlocking, - claimedRewards: claimedRewards, + claimedRewards: isValidator ? claimedRewards : claimedRewardsNom, }, }; } @@ -203,8 +208,8 @@ export class AccountsStakingInfoService extends AbstractService { e: number, stash: string, claimedRewardsPerEra: Vec, - claimedRewards: IEraStatus[], - ): Promise { + claimedRewards: IEraStatus[], + ): Promise[]> { const erasStakersOverview: Option = await historicApi.query.staking.erasStakersOverview(e, stash); let erasStakers: SpStakingExposure | null = null; @@ -236,24 +241,24 @@ export class AccountsStakingInfoService extends AbstractService { historicApi: ApiDecoration<'promise'>, e: number, eraStart: number, - claimedRewards: IEraStatus[], + claimedRewardsNom: IEraStatus[], validatorsUnwrapped: string[], - ): Promise<[number, IEraStatus[]]> { - let eraStatusVal: 'claimed' | 'unclaimed' | 'partially claimed' | 'undefined' = 'undefined'; + nominatorStash: string, + ): Promise<[number, IEraStatus[]]> { // Iterate through all validators that the nominator is nominating and // check if the rewards are claimed or not. for (const [idx, validatorStash] of validatorsUnwrapped.entries()) { let oldCallChecked = false; - if (claimedRewards.length == 0) { + if (claimedRewardsNom.length == 0) { const [era, claimedRewardsOld, oldCallCheck] = await this.fetchErasFromOldCalls( historicApi, e, eraStart, - claimedRewards, + claimedRewardsNom, validatorStash, oldCallChecked, ); - claimedRewards = claimedRewardsOld; + claimedRewardsNom = claimedRewardsOld; oldCallChecked = oldCallCheck; e = era; } else { @@ -281,35 +286,39 @@ export class AccountsStakingInfoService extends AbstractService { if (erasStakersOverview.isSome) { const pageCount = erasStakersOverview.unwrap().pageCount.toNumber(); - const eraStatus = + const eraStatus: NominatorStatus = claimedRewardsPerEra.length === 0 ? 'unclaimed' : claimedRewardsPerEra.length === pageCount ? 'claimed' : claimedRewardsPerEra.length != pageCount - ? 'partially claimed' + ? await this.ErasStatusNominatorForValPartiallyClaimed( + historicApi, + e, + validatorStash, + pageCount, + nominatorStash, + claimedRewardsPerEra, + ) : 'undefined'; - claimedRewards.push({ era: e, status: eraStatus }); - eraStatusVal = eraStatus; + claimedRewardsNom.push({ era: e, status: eraStatus }); break; } else if (erasStakers && erasStakers.total.toBigInt() > 0) { // if erasStakers.total > 0, then the pageCount is always 1 // https://github.com/polkadot-js/api/issues/5859#issuecomment-2077011825 const eraStatus = claimedRewardsPerEra.length === 1 ? 'claimed' : 'unclaimed'; - claimedRewards.push({ era: e, status: eraStatus }); - eraStatusVal = eraStatus; + claimedRewardsNom.push({ era: e, status: eraStatus }); break; } else { - eraStatusVal = 'undefined'; if (idx === validatorsUnwrapped.length - 1) { - claimedRewards.push({ era: e, status: eraStatusVal }); + claimedRewardsNom.push({ era: e, status: 'undefined' }); } else { continue; } } } } - return [e, claimedRewards]; + return [e, claimedRewardsNom]; } /** @@ -320,13 +329,13 @@ export class AccountsStakingInfoService extends AbstractService { historicApi: ApiDecoration<'promise'>, e: number, eraStart: number, - claimedRewards: IEraStatus[], - stash: string, + claimedRewards: IEraStatus[], + validatorStash: string, oldCallChecked: boolean, - ): Promise<[number, IEraStatus[], boolean]> { + ): Promise<[number, IEraStatus[], boolean]> { let claimedRewardsEras: u32[] = []; // SAME CODE AS IN MAIN FUNCTION - fetchAccountStakingInfo - - const controllerOption = await historicApi.query.staking.bonded(stash); + const controllerOption = await historicApi.query.staking.bonded(validatorStash); if (controllerOption.isNone) { // throw new BadRequest(`The address ${stash} is not a stash address.`); @@ -337,10 +346,10 @@ export class AccountsStakingInfoService extends AbstractService { const [stakingLedgerOption, rewardDestination, slashingSpansOption] = await Promise.all([ historicApi.query.staking.ledger(controller), - historicApi.query.staking.payee(stash), - historicApi.query.staking.slashingSpans(stash), + historicApi.query.staking.payee(validatorStash), + historicApi.query.staking.slashingSpans(validatorStash), ]).catch((err: Error) => { - throw this.createHttpErrorForAddr(stash, err); + throw this.createHttpErrorForAddr(validatorStash, err); }); const stakingLedgerValNom = stakingLedgerOption.unwrapOr(null); @@ -394,4 +403,39 @@ export class AccountsStakingInfoService extends AbstractService { } return [e, claimedRewards, oldCallChecked]; } + + private async ErasStatusNominatorForValPartiallyClaimed( + historicApi: ApiDecoration<'promise'>, + e: number, + validatorStash: string, + pageCount: number, + nominatorStash: string, + claimedRewardsPerEra: Vec, + ): Promise { + // If era is partially claimed from the side of the validator that means that the validator + // has more than one page of nominators. In this case, I need to check in which page the nominator is + // and if that page was claimed or not. + for (let page = 0; page < pageCount; page++) { + if (historicApi.query.staking?.erasStakersPaged) { + const erasStakers = await historicApi.query.staking.erasStakersPaged(e, validatorStash, page); + const erasStakersPaged = erasStakers.unwrapOr(null); + if (erasStakersPaged?.others) { + for (const nominator of erasStakersPaged.others.entries()) { + if (nominatorStash === nominator[1].who.toString()) { + if (claimedRewardsPerEra.length > 0) { + const pageIncluded = claimedRewardsPerEra?.some((reward) => reward.eq(page as unknown as u32)); + if (pageIncluded) { + return 'claimed'; + } else { + return 'unclaimed'; + } + } + break; + } + } + } + } + } + return 'undefined'; + } } diff --git a/src/types/responses/AccountStakingInfo.ts b/src/types/responses/AccountStakingInfo.ts index 22b3a1db4..49bb063a1 100644 --- a/src/types/responses/AccountStakingInfo.ts +++ b/src/types/responses/AccountStakingInfo.ts @@ -25,9 +25,12 @@ import type { import { IAt } from '.'; -export interface IEraStatus { +export type ValidatorStatus = 'claimed' | 'unclaimed' | 'partially claimed' | 'undefined'; +export type NominatorStatus = 'claimed' | 'unclaimed' | 'undefined'; + +export interface IEraStatus { era: number; - status: 'claimed' | 'unclaimed' | 'partially claimed' | 'undefined'; + status: T; } export interface IStakingLedger { @@ -35,7 +38,7 @@ export interface IStakingLedger { total: Compact; active: Compact; unlocking: Vec; - claimedRewards?: IEraStatus[]; + claimedRewards?: IEraStatus[]; } export interface IAccountStakingInfo { From 22ad9f79ddae22d8fb06a7e0f03dbab480493cd8 Mon Sep 17 00:00:00 2001 From: Imod7 Date: Mon, 4 Nov 2024 18:10:25 +0100 Subject: [PATCH 18/26] added test for nominator --- .../AccountsStakingInfoService.spec.ts | 47 ++- .../accounts/AccountsStakingInfoService.ts | 3 +- .../test-helpers/mock/accounts/stakingInfo.ts | 11 + src/services/test-helpers/mock/addresses.ts | 5 + .../mock/data/erasStakersPaged.ts | 18 + .../stakingInfo21157800nominator.json | 366 ++++++++++++++++++ 6 files changed, 444 insertions(+), 6 deletions(-) create mode 100644 src/services/test-helpers/mock/data/erasStakersPaged.ts create mode 100644 src/services/test-helpers/responses/accounts/stakingInfo21157800nominator.json diff --git a/src/services/accounts/AccountsStakingInfoService.spec.ts b/src/services/accounts/AccountsStakingInfoService.spec.ts index 146de0cb2..e80947b22 100644 --- a/src/services/accounts/AccountsStakingInfoService.spec.ts +++ b/src/services/accounts/AccountsStakingInfoService.spec.ts @@ -20,6 +20,7 @@ import { ApiPromise } from '@polkadot/api'; import { ApiDecoration } from '@polkadot/api/types'; import { Option } from '@polkadot/types'; import { AccountId, Hash, StakingLedger } from '@polkadot/types/interfaces'; +import type { PalletStakingNominations } from '@polkadot/types/lookup'; import { BadRequest, InternalServerError } from 'http-errors'; import { sanitizeNumbers } from '../../sanitize/sanitizeNumbers'; @@ -44,12 +45,14 @@ import { testAddressPayeeKusama, testAddressPayeePolkadot, testAddressPolkadot, + testNominatorAddressPolkadot, } from '../test-helpers/mock'; import { kusamaErasStakersMockedCall, polkadotClaimedRewardsMockedCall, polkadotErasStakersMockedCall, polkadotErasStakersOverviewMockedCall, + polkadotErasStakersPagedMockedCall, polkadotPayeeMockedCall, polkadotSlashingSpansMockedCall, stakingClaimedRewardsMockedCall, @@ -62,6 +65,7 @@ import { validators21157800Hex } from '../test-helpers/mock/data/validators21157 import { validators22939322Hex } from '../test-helpers/mock/data/validators22939322Hex'; import response789629 from '../test-helpers/responses/accounts/stakingInfo789629.json'; import response21157800 from '../test-helpers/responses/accounts/stakingInfo21157800.json'; +import response21157800nominator from '../test-helpers/responses/accounts/stakingInfo21157800nominator.json'; import response22939322 from '../test-helpers/responses/accounts/stakingInfo22939322.json'; import { AccountsStakingInfoService } from './AccountsStakingInfoService'; @@ -124,6 +128,14 @@ export const payee21157800 = (_hash: Hash, _address: string): Promise Promise.resolve().then(() => polkadotRegistryV1002000.createType('Vec', validators21157800Hex)); +const nominations21157800 = (_hash: Hash): Promise> => + Promise.resolve().then(() => + polkadotRegistryV1002000.createType( + 'Option', + '0x04005fa73637062be3fbfb972174a5bc85a2f6cc0350cb84aa9d657422796bfdf16705000000', + ), + ); + const historicApi21157800 = { query: { staking: { @@ -136,7 +148,7 @@ const historicApi21157800 = { currentEra: currentEraAt21157800, erasStakersOverview: polkadotErasStakersOverviewMockedCall, erasStakers: polkadotErasStakersMockedCall, - erasStakersPaged: polkadotErasStakersMockedCall, + nominators: null, }, session: { validators: validatorsAt21157800, @@ -144,12 +156,29 @@ const historicApi21157800 = { }, } as unknown as ApiDecoration<'promise'>; -const mockApiPolkadot21157800 = { +const mockApiPolkadot21157800val = { ...defaultMockApi21157800, at: (_hash: Hash) => historicApi21157800, } as unknown as ApiPromise; -const accountStakingInfoService21157800 = new AccountsStakingInfoService(mockApiPolkadot21157800); +const accountStakingInfoService21157800val = new AccountsStakingInfoService(mockApiPolkadot21157800val); + +const mockApiPolkadot21157800nom = { + ...defaultMockApi21157800, + at: (_hash: Hash) => ({ + ...historicApi21157800, + query: { + ...historicApi21157800.query, + staking: { + ...historicApi21157800.query.staking, + nominators: nominations21157800, + erasStakersPaged: polkadotErasStakersPagedMockedCall, + }, + }, + }), +} as unknown as ApiPromise; + +const accountStakingInfoService21157800nom = new AccountsStakingInfoService(mockApiPolkadot21157800nom); export const bondedAt22939322 = (_hash: Hash, _address: string): Promise> => Promise.resolve().then(() => kusamaRegistryV1002000.createType('Option', testAddressControllerKusama)); @@ -239,9 +268,19 @@ describe('AccountsStakingInfoService', () => { it('works with a validator account (block 21157800) & returns an array of claimed (including case erasStakersOverview=null & erasStakers>0, era 1419), partially claimed & unclaimed eras (Polkadot)', async () => { expect( sanitizeNumbers( - await accountStakingInfoService21157800.fetchAccountStakingInfo(blockHash21157800, testAddressPolkadot), + await accountStakingInfoService21157800val.fetchAccountStakingInfo(blockHash21157800, testAddressPolkadot), ), ).toStrictEqual(response21157800); }); + it('works with a nominator account (block 21157800) & returns claimed & unclaimed eras (Polkadot)', async () => { + expect( + sanitizeNumbers( + await accountStakingInfoService21157800nom.fetchAccountStakingInfo( + blockHash21157800, + testNominatorAddressPolkadot, + ), + ), + ).toStrictEqual(response21157800nominator); + }); }); }); diff --git a/src/services/accounts/AccountsStakingInfoService.ts b/src/services/accounts/AccountsStakingInfoService.ts index 4333693b8..42e7a622f 100644 --- a/src/services/accounts/AccountsStakingInfoService.ts +++ b/src/services/accounts/AccountsStakingInfoService.ts @@ -338,7 +338,6 @@ export class AccountsStakingInfoService extends AbstractService { const controllerOption = await historicApi.query.staking.bonded(validatorStash); if (controllerOption.isNone) { - // throw new BadRequest(`The address ${stash} is not a stash address.`); return [e, claimedRewards, oldCallChecked]; } @@ -423,7 +422,7 @@ export class AccountsStakingInfoService extends AbstractService { for (const nominator of erasStakersPaged.others.entries()) { if (nominatorStash === nominator[1].who.toString()) { if (claimedRewardsPerEra.length > 0) { - const pageIncluded = claimedRewardsPerEra?.some((reward) => reward.eq(page as unknown as u32)); + const pageIncluded = claimedRewardsPerEra?.some((reward) => Number(reward) === Number(page)); if (pageIncluded) { return 'claimed'; } else { diff --git a/src/services/test-helpers/mock/accounts/stakingInfo.ts b/src/services/test-helpers/mock/accounts/stakingInfo.ts index b23bf0d0b..bdc4b33c5 100644 --- a/src/services/test-helpers/mock/accounts/stakingInfo.ts +++ b/src/services/test-helpers/mock/accounts/stakingInfo.ts @@ -20,10 +20,12 @@ import type { PalletStakingRewardDestination, PalletStakingSlashingSlashingSpans, SpStakingExposure, + SpStakingExposurePage, SpStakingPagedExposureMetadata, } from '@polkadot/types/lookup'; import { kusamaRegistryV1002000, polkadotRegistryV1002000 } from '../../../../test-helpers/registries'; +import { erasStakersPagedHex } from '../data/erasStakersPaged'; export const stakingClaimedRewardsMockedCall = (era: number): string[] => { if (era === 6512 || era === 6555) { @@ -156,6 +158,15 @@ export const polkadotErasStakersMockedCall = (_era: number, _address: string): P }); }; +export const polkadotErasStakersPagedMockedCall = ( + _era: number, + _address: string, +): Promise> => { + return Promise.resolve().then(() => { + return polkadotRegistryV1002000.createType('Option', erasStakersPagedHex); + }); +}; + export const polkadotPayeeMockedCall = ( _hash: Hash, _address: string, diff --git a/src/services/test-helpers/mock/addresses.ts b/src/services/test-helpers/mock/addresses.ts index 76ca0e2ba..efa399d3c 100644 --- a/src/services/test-helpers/mock/addresses.ts +++ b/src/services/test-helpers/mock/addresses.ts @@ -44,6 +44,11 @@ export const testAddressPayeeKusama = 'GLEJRAEdGxLhNEH2AWAtjhUYVrcRWxbYSemvVv2Jw */ export const testAddressPolkadot = '11VR4pF6c7kfBhfmuwwjWY3FodeYBKWx7ix2rsRCU2q6hqJ'; +/** + * Stash address in Polkadot to use with test in staking-info endpoint. + */ +export const testNominatorAddressPolkadot = '15AXn2iupExTQ6H3pyVbCfCuzENsxapmtP754NZwzqX4GLSH'; + /** * Controller address in Polkadot to use with test in staking-info endpoint. */ diff --git a/src/services/test-helpers/mock/data/erasStakersPaged.ts b/src/services/test-helpers/mock/data/erasStakersPaged.ts new file mode 100644 index 000000000..3edf6c944 --- /dev/null +++ b/src/services/test-helpers/mock/data/erasStakersPaged.ts @@ -0,0 +1,18 @@ +// Copyright 2017-2024 Parity Technologies (UK) Ltd. +// This file is part of Substrate API Sidecar. +// +// Substrate API Sidecar is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +export const erasStakersPagedHex = + '0x0f2f1797540be2620108e13e9d9f4dc1768e8bbe9c03cf4a3e3a4dfe7e7476945c6281092fbd4aa8f2ec0f726f9776f2000afcad360bc1729161cf638e129893f0b771b0663c39ba439c125a8e77d8b8b55b0f5e2a8191ea3c04760b2cd71b42578f1d20eb946742137916f535b6c763fdf7c639a4fe092edb6c0ff65663412a56036911baa1923e64769f305cac309b88ae6a4e0552c36810de2622c8ca33cab2c70f893020360933021e5670ba48a4724af950c9b9c72581d797aea0a6e6dca8b36c930bf09620617e0fc5ec55a0310b028a220b8ca9677d3d8048980e36bb2e9b9004712d9029f03e87f8116497d301fd0f00a0f003a7bd01a6a94c117557181ca0e3dca62f629a376994c67bb2b2f8034d2c28c0dafc7f570f00b0448e02b001b835beb5d01b03d7ae1e0cf0ea958e2c9bf70a9f039eb34c536712b9951eba3d0f189efdd7338201d84d3591efaa337adb83215be213e18204dd71fe9cf356f72281a687c825356a0f0000e941cc6b013df09f63124e8c12d39d227802347dcab9fe08a476152e3ce080c6d0c98c04330f0000e941cc6b01a89bec0d5ea185f06b25ca693cb755d9bc66911266b81502a6691915ffdca7d40f0084deb1016b01a27f9f407bf4c7b0cd4c9b5b6a9035524aeb2ca63ea6ba8cd7876866c4d869b70f00e89a04b251011fbffe31ba293405ef782cd8b56a2c5c6033be6c59b917a521f455c150089ab10f002e8b2c82500146a0b771de5c2c7c5baa322779ede2a5a8dc31dd3018f6b33a3b85014ecac7680f004579d7523e01fd2581cfe1480562afbec7d63045a4ba70630b00fa509eb37d1d8987d7ab235c0f00e05a6fc52f0172f857e3dca91813c0a1b7ba96e9a99295274ac63f217648561b2bef232ffc320f00c06e31d91001dc8b9433083564976157b160a39d1159d56fe0b83413dd2bcdafab079977e0190b00902e6991ff40a8e2333692661c0f4db3f2f02096414e2d2c2c937d2af7f287329fa00b560f0b374cf77069f206052fc07b3341f1134d7704de1eaaa4d516876ae3b9f8a71fcb698eee6c34230bb8b2f4175bf1c3aead1072a9672e9e9dfd4bc113f76ebfcb41aac40fb0a56f5699184cbfd6ef0b00a031a95fe387184fe3de0d79cc086165374c3b2de11c811e3e1b299218384032b67d33a6430b9c31a64fafe2466c0c0281b450df3b7e339693de649db376ab931e1a066317a1d9507b9fdc570b62598982f3c84a90f8d375290b428e580408f18359f66ef367f0f8d1d56c5d3e002ad29c8e000b450afdacc8bee263fce85a157d1fcd1243d41457ca411e215c6f1e700604b3b2245c874d43480b74f8d24f59b8dd4ec70f10e8e090f8eb99d10444ef820cf3a48c071369512d6070cb94bcbf960b126b3ac437b80ed9f2cdcea505ba946cb7b55cfcf2a45bd8c64c096a107046038d99aa8f9b360b0080f420e6b5fb2f757452bf65c4f0c787d3e3303ddf070e7bfe843da67bb5c1850ada8038340bd6197fc975b14c9aa3d4f369dc7366e3578640269be8903f60764afb174c92e11633210b3e0b0b818c52b072add4a3a8e4b65de36887b1912bf12fef65e5258578b45490b20f81690bb5997f9a0ba0ad7ea11fac8c4250ee397ce659be4580f3f7f6d88103afd75a26da880eae87e67f36ce99280bda0ef1aec0a31ca7ed47d84c597d3a2dbb4b2ea59350d481d6071166341a003948991afd7a330b661a5f6f2ba1d4549fe904753b4e28d3fd15766950625acaf80b70d6d126589522458bf812360b43e7de31259c4a2386cc9d35761ce63852d28a95ad366d1178eb8535c4f2175eae3d1b021a2e0b9aaa01774097c460de5ffd6521855b8bebb8c343535bca1450b35ba6efdfdbb8672e168d43240b7065ba8ec589927f1bc0ed701c8d090530a98fba0445030d6a0ef2208bddd438c12fcec68cc50b0060b7986c8896168f352f3538ae667c4912c0a0f6efec0a50da8ea8b7cd9e1734c8cd35537b0b906bc1664887c2554126f6edd911ed879ed6b5a13f9da25550d7ae7b9739e8c236852cbbb3080b00f010d7f7847473ce1244017147bda9608d779c5bf62aae337a8de9416df5a9a211afbdc1c60ba86020f6b984facf0fbe78a2c5034ad9b98f54117f46c440fdd5e4f7062d1e64e9b9d94e1c6c0ba9579d39d0812eda9d22e367d3b352fdfc986436f841f49be8f823f95434a4d34c8e5cc69d080ba0f2ad58b079537e950bfececae37891cd79f82ccf6cc897734e4733c02427144a4a5c19fc360b13338ebe0978e69968da7160ca8e16acdf0d600e5762f4e2f5a63e0f5176b7aef220ef297a4f0b439bfe7ea1766d6f646c70792f6e6f706c7300960000000000000000000000000000000000000b859446828c75353b2a94be6064139874d63c39ca4c68737810d29d6d5e2fe5a51a8b50b6d6620b9427052703719987e2f96fbee8bec94ec24ced33bfda14ba0f3ea6d254dd246048cd704f7f230bf00ba881a26d9027635e5732813dabc5eb1a639d9366909bbdcc29df2c119299a1b39134ab350b68f17907256d2bff11d51c18fa9465e9c8d33f324bf8c951927c6415c9caa47c576fbb3a1fc90b95241a9e0e6cae682aeac0df847374993cd10b0d69a5bf3fece86678b4763e484449c948862a0b7649e2d7aa6ab1288c2275ae910431d3639e68dda0c17964024478885c2ecc6db8a6131cc7f20b0008e3028569f6d9b37b11680e923cd1fe1f9fa30eeae097775e93d33c2e7aa69dde941b8fed0bde025b3f93686d6f646c70792f6e6f706c7300bb0000000000000000000000000000000000000b0bc4cfca7c622a3d8d24aec9662967d49401eddf0ef733b56032cb26c3062f90812cfe4205200bf39c6edb0462c02ae9161b581c26d6c29d605440970f2978eb6ac4d8d07cd30de34ce7fff7300b00f8bbf8215e9a2509f6f3e1c5cb732ef06a72c1ecfb8a8cec997ae39f9ceee23cd371da65ad0b00b804b5675d6ee11b97ebd13b45ef24cb04ad58237381db4207945fb63ac17f2c641568fb0f0ba66383bc535b724299b7ab56c40250d38e3fe98edd078522f1eb21216349a2eb607d1b761b590b00b4b5b4fe5a36aeb8d81c48f30ed3de94170e6a3537b0c35fed310dc47ec155570b39c80a2d0b00b4b5b4fe5ae0da33a9d42565e04b53d4a1b6ac005ae53018db91c0fd05c4e3076020dca4910b00407a10f35a7a4018209e54668f318191aa97effe3bfa6add30717f274b80f2e733389ec0380b77dad452cf5745f75f39bd95c3fb9feec28bdabcb01a0eb93d454af51099889c24a8f5c940bb0badeee6ea085690813837fba515d419f7faec0c7f11be0ee125d264dfc2db6326fd845ffbb7300b48cf0a6f06543d8e018ff485837288879892057d34e3374efb0e8ef5e8c596ec8980eb33e7940bc02a5cc1bc535025dcc7765b1c4692d4c42f33ac00106cb2af397f329121edf5fd02fc0517fd0b492cd1b5a852a9634d5fea1406d766bd06db39cb513db3c584156352f765919c746c90314dba0b0068186d7452c0bfb7f9972e8b67dbb6e7dba7427cdfca0efc1026f7743f50e9175507a8857f0b523f53a0594c3dc0edd9666c1c57e818a03ed9daf7480b44bd210893907e8d4e7c4a16ce0ad20b28d7295a37497c42eb24065aaaf4a34dbb2f621ec0e21549820eee2578552250769b03cce4ff0b4a7b87b46948ebe0207e7774080866b3e9738e124942fcfd11a0169015c0181e519fb10bdc940b00d866e7f047bff648c6b5271b73ca70a70d8987a3b3b6e13650edae45a7919a1ddc559cf98e0b00b04655f54502f1a110f258a2c77acfda231dac046b59524591d370bcf27f76b13074bfc89b0b00881fc68e44abe4dc88235b7d84988d63ec2b12bf466ede189676616c29101424139ac1ae630b00cc4ff833446c7fdb8b8eaad1af9faaf918493606e1a3e8c20f9d852773ab5ebfbb93bd19480bc48c8d67de436c3f90b521dac589725d0dc493198de58db157fbfb69549082540f640adc5a080bbe0d80f796437626d77867c191de21e823609fb70399983d5581757be9f02c2195788ddac6210b8daed3a903435c03cb9c037650d97e5e09a5a10c60b4e53e117350ffc4581c3a45bffc3b48050bdf503aaad8427665901dc7ce532ad8d951a4c678f70c4df0c74c2425fa50c870656f9e03ec310be67ef5fc5a41ada7acc556f582d6a83aee7ae5a9e69e302d5cfe2d076ca6279aab3311aa99690be73ed34e0041c91fa434bc27cf5363bbbd9796ef14b19a6a516ce9c268efd2bdc01b0132f5910b00c046034d3f65c785ac88ea42b0f9282eb9514afacfe9700727b6baa224ea8348218167054e0be2625952703e8da80c77bf552b096c4af3a68539cdbef6a09f0a00219b0f0d42df6f66d390e70b171cdbf7473e4e374a8767b7abc49126830ce5afb179a673cffda69c313a8efbcb73652fe74e0bc3164eb4f13ddf4500189812e49628da8b9d368bc6baa6571ead738bebb1b50370259925c9e40b15bfd7f5ec3c74148ca7979cd47b63fbb0dafc35233b7d5d91845eab032ea72b8402f7d021520b0097b10e803c407e81d22aac9afe53ca30faf2e4c8180fa811140edb76b26cdf756132c1ac7c0b44d00c7cca3bbf961abf966b973b4505c37f3d8c576d758cec52f230d1adff869d5c7b6ab1250b49cc3c2a8f3bd6ad3d6ef2560c0587770a24a983aa54b5d9738e1a437e849c964db7b9ea3e1b0bc2aa5bf8343b8992fa0e92accc1829aa2fa376a534dda371387eeb1e8e64ec6f3c3438ead5520b3b6e5ade233b05d6ef44e5648ee4a368f0ae8f2b025719bfc71e14aee81c8cb0abdcff9e7beb0b4d11a472af3a00a48c86ca8f71061fd1dc967f728e7e6ddc3be341896a73a9c1edc3c7d028920b61a601268039ccab959403adf4efa09655eef816444b50e914adaabadf7bc07be25a40cb9d4a0b04018f19cf388f5fbc04886519acf2f0ae728b65a3331ce96f4d073fd4eb6e2f1c0cf66635c10b1d9a8dbac037e0312e1df7a1a62522532b1630278dee1f6470ce8e53e3e7955c4cd27ac3d8c30b6a24d4163b376648786b488949e1b059bfacc3e8ef74be821ff83dc713d221df804f0c7d9a270b008a0942b2360a1a27cbcd9ce880b1e00b191da8be1f4e5cede9bdcf67de58294d05aaaab73e0b89af274b9d364b8f7f748e012cbac3976f9fdf8ff38ed51a4ef287a4ff930f6cfc97553642070b59c4592b4a36b0f98caa95cc114fef537059d2bb3d7f41e57526a3bc1edc711ab7ccf9f03d5a0bc05aae160d36c57bc25d89feff05afd97caab6a856d5f2a1bd5029735e189fab8bfcfdd4cd560b001682357a35e8c4771a5ed1791c103d368fb66a931edb21840a17c0fce2da23db7e4b417a340bfb9cd409093448bc9fdce08c18f3020f150f97c9e16ef972f21ab15b8451493ba01f1ab19a520b156f83e88f3399bf4f5663cbbfe9e0fbcb578486371e2cc9d016e5acb96ccc628b3f04a8f56b0bee82d0048432b8732212e60a8f520e5106403f2339a0266e7094428f157a424efa09cb0de82f0b0030bf6b4b31a32f6dec524ffbbe547a4aa989bf53d6bc2f1e9d84e0fede49247f02afbba16e0b0060d1da1c319203deae9cf38a156233a4056ead326d4a018bddcb1e33aaacdad07799e6092d0b00088ae20e310f9f06ef759cd7f24012e35e718cc3ac4516ad41c21029de3ae922e1392c4a620b0693ff25683025d6f64e162aedc36dbcaa8b4846fa3e65c0e22c2a488bc36ac144ee7acb26700b00acdef25630fe7c0ea223da09a10075ad24d39d16bcda03c69f9b8f320a0b941709a4a4a9190bdde92f1c152f2001406079750cef7d20d1d2b3452b1c11985718eea74b02afd9b5b5fb0d4f310b70253cd2b82e90d69956c9d925bed898e035af1574cb0e18626cc53a619797e9e77ce0e242dd0ba0a758be8d2e472f735697b6156ee29c66696bb8821a72c9d29c01cea3b4ee9df7bf16560d170b8281bf92472eeeefc7a2333324b4d6a69b9f6215f71be267fc4381f2951bc290f83d1132d69b0bf8a77a04e32d94a450ffa6a866ff9ddc5468728c757eb39fd381497f20824168379013f5333b0b00203d88792d01ec372d9d6cdda0ed0c6579e7308a3f85124c625f257e381ef60ea124efd4a80b003c3134772d5530814ca1b96065c4d1b9e3bdc98b4acc132c545c17ddc2f4f2dc4c689741a20b8ad352c0af2c72ec9d3596421b11c5cbfe5b7c20506e60f85012cff7f3be48dd8bed8f5b40240b0db892c6d22baab319049a89df4b7ef1f69959f9dd20e77c673fa812c39b7e8ad91208919a910bd7be358e6d2bea327de9995c6a15d1f6736023dd23609f9bfe447495c2faa8db82ef66cf599d0bbd89aaf8512bd311dd91184216a5c610bc379f6954dcb124ca044e62227e556b37fb3b1f11a80b202afaf96f2ad14c331332d3dc6bfa43b7778a3adaef8df4a2b50f8d1675d5d607e4acf0606b0b0054e4d9e129552f139253d21e073b8ea994ff349e0c36747e824da92631bb5c905aa037523a0b5d1b8554b929426e18554e19044b2dde56fc2231e615273d6a3b76d222edf8d3747f49b86d1e0b0a9933a64c290abce0ec8f2ee62c2f643202ca2e625c1f0beb487b2f30a6b367b02e4d0b56190bbef435db492994d32ab1fbba097d341761beafd49771051f25f2e201c97e69fd4fbda4addb160bb1b9f0d62a29207cf18c8e412d6abb2c5f6c5d39d0b5124c6f596306174cbe317e6dbdd824440baad493652129e6b912626c9dfa3cd9e65b4412b19eb9d123edb1aa22d492a58a88091c483a7a0b00d00361ed286d6f646c70792f6e6f706c73009b0000000000000000000000000000000000000b74d243c0c228b9d6088200274b149be80ece2962c11b6af9c2825481881ecbf0cc28232fe5750bd1c34b59b528182b93e14ed8efaf81c391d454bcfbbff22fac56c85d1fca7fd065d4abdcd98c0b715678d799288effea7e46029e3c5095f48583b25b93b104d4f7671cf9caa728c5e195307c3a0b38d05ad64a28f9edda0a2aff1db806abd6bebaf3b8541f4c338cdf142604cd339a2610e3ef470b9664f0200c285715c70d34cd298721a8076cf1d77b14610ab598102e924319921f113e33c20f0b220a47af7527973389adb5bfdcb67682ddd783f0cb1f3c62072e2ab90c278273d3c5c0713f690b913070565a27d6415321e3ac56e6e7e183f0cd13bb2e7f0f64bac69feebf51cae7698fddf8a10b0048bff04e2787f9a1291fbeef291e804d66c05bd888cece44f2dcc368521003bb205de670bb0bf1c385a52d27778c9cd31533172284441119b42e8fd2b9775b497c516b2eb2eb62c91ee4fc5f0bbe207c540827962ad322441ecb2d97c1d0957f4c9956b2e7963977e3db26b1f6fce505a7af180bd96a0c82e826beda2aeface5ba8e173aa2612c4600a60ab9e45fc9a6d434d18aef7f9cc11ade0b3002244d8a266d6f646c70792f6e6f706c7300b50000000000000000000000000000000000000b0034af275126e7595b83429f845004cfaf496cdc3c1c5adbbc345b8570f0fc60382592ee83730bd03f53953b26d6be51649fcc0a0998f493895b40152deb72b57eb1b07868341c876cfbe3f60d0b00a014e3322693c421bb490ca21f7faed838e43359fea72305dfd4dc8a340b2677205d6abd250b34728b9f222680947b373f8847f9a208f9bf16bc10c9d396e9dd67f44338a88487ff9825d3630bf64e9961e82504ec212ded16c18ce30626002f41dd002b9a7a7ff0e6283aa5647433e8b663d80b0734022b9f253ef34feb32cd8535743fc1087fff25ed0eadbbda223243dd4439e5c8f252fdd80b90485a43612445e55f6deeb14adc6967990d6f96e118d5a4ed46bcf1c8b0621cc47be62435410b0048f0db3b23c8b0fdebd54d5f5ee52a2ac8cf3086a360811b6e272abf8d87ea92dd4b6a07900b88bfedcc1423360e63828a29ec4765864ed0256e2f481c80c2a6bf0beba7a095699a5b3681c60b84ae116f872290664a73f75a75d6ca9e604b6d1f7981023e10f76a9a4716cf99adbe275250410bdbfccb881c222b24e5975bca00a4244ab3bccd3ed811c949375aeaa90f18002d291d73aad8ab0bd8a9b44ed52144d555201e0eb2315c27c8e00285798d89b0721072934f449245edb5e91d8e530b708ebe8cd1215bc7b0b0aec1da0b35562ab67cd12c1dd147a775601a566067410931dd61989b0bea14f12c80212d3a99f753721a37c3abb3bef55197843ac257f57a7aec30da574b9d6460d1be0b85e03f9e13212937ea9ccf2eedd5092d9ce28aed9113afc4d8426f0dce492b6330c1c7daef9c0b00102478ec203c62daf8330ae70027db33babf624182f96eeb1772d59534540fdac0f50a0a740befd3b3cceb20ec1a7b4335c7ad4ac30820a13fc589394b1b19a8d4bea2eeecf86d782500f50a0b6557b52d8c209289436dd341803872909816a330038141fdba95cb8e5851d0c4e2d1dbb1bdf70b2663732ccb1f08dd9d28e0b53058e6c6f5120f6d7d83d266b476962b4e46deeed4b9eef233510bcf71e97bc31f6d6f646c70792f6e6f706c7300da0000000000000000000000000000000000000b77f03f4f321f530d80d74489c75b0488699a4210175c2ea77060ff3af7753b10557ac212b0bf0b43b9bf5eb91e7d2f61c07a66f3cb438a6d7f65318835ec591de7a8e08a0388fca5d988b518cf0b2ea87d7d0b1e5314a1f555612500d0b7008e2f72b30145e0100c32d9374097231142705d1f7d0b668be88de91d4223ae9b7de6003d21c5f381e4e6cdc095c6d9b95d5791d7d2f9666d789263930b004059d8d41d3c71d189adc90492f52c7a5d75c6befda681502fc80c9d705c04cacb7e52632e0b00e4a6ebb11d88c18a0134de6df985bf1c7a415fb9254c6e5b3e5608ea3daccc88aec854b4280bdf9169fc081d9de9841521301051ee8cade6cdc9f89703d8f2a65b3da1a7c96f7c354cfe251c0b0073b090d21c4008155e7011c163ed5941bbba8127678310ceafb9cce3208fdc947f872211c30b7f42c08fcf1c3a6721071624ba7cdb845a11347fbb28354696c9fd3adaf2cb6b8977a439da540bf6ae7156c21cce3567910c279f9fc26e6a467d72fcc9587cf8cdbc26f71488770098a5fec91f0bbe78a7c76e1c7285fa54f6d167a605ca774010b52fedcf8e4b2f034df128553afff66c3b93ec0b2e251a9a1a1c9d41f78168c908c027c9978ee625885bfb48836c2b3a769e2650ba341769a4dc0b30929809081c06eb2a8c69fb25c13e6f4695eef608e30be7f54343a2699a45b52c0492eb80440b3bc07785631bc8efd61ade0442cddd508baae0cf537fbd50bbeffd9a0c80af88c30e0c0633080b2afc64125f1b947db408c26c9969d81771b914a4b25b18f0db5593c6678c2e01166067d22d520bf42861005d1b10d079c79a2d37c73d5b9842efb3e1bb0199066cd08a8f30a93bbdef53431c440b71471ed1f61a6cc7abfd645a21212fb08ff37de76345e13e8e1a4cee06279ceea274d1470e3e0b0c4ffe2bda1aa344459ae1e90a30c7ebca67ddca08b91322df48362f466576bd4b7b4e860bca0b745efb44921afa8068f307bf21af81959df399670db24fe85911cba1b2720b4e43b78e3597c20b3c20d57dbd193ed9cf8584bf607bc14d8d3cb5f66031609880127c9ff0a88b31feb31f10bae80b26434130a419da23eb9e55b3b593831afb9ab0b9ebe5fc970edc554c757c0dc30b596a352eeb0b6031ed6b2319ce0e682968a3c1d3c7cf957c5d5be4bc6c4fe944188bf335df8a2c7a197138ac0b536856810b19dd12e9c0ca6f5e23b6c3ce73d82c08bed54edf5f1b87238f26d2bd06c9b560720b3abbaf9b951883893430163e4a3a7c6b1933d5058fbdf99bf1bff53b2d7bdaf9c17a2b1c576b0b30670d149118c6fec00f246f2fd6a25b08e7da4f233e20bddc3d159fa1b6954bd0a5215a8fa10b00b0686d8e1890993a19f5bcfcf694d589214f9bdac67d427177c229a80ff32aa7e49b924e280be19531d722187866ebfc712d274809ee1fce185b9d63018474bd2bc98fdf9d7016fc22e909730b570cef7c0a18afcd5970f62660ea4da3f2a6ce2bfe14ec3fff17c8088a771f7b5014095d1b1e0b3c656cc2fb175c34064bc4d37f4a88fbec2cf37793a714d39c23181f4e3a8f4a0291f1fca0ac0b746fc0ffd6179cf542ef4c23ed16cd1ce695a6aa331cbc21bcc793c7f9ee68ca0faf78fb26a80b001094489c175ef4b96a88b886de410256b1dc5ac5fa80ba479dc489f79ee535b13b2dffff890b00b84c508e179a162d07f2cccec9ed60cb5866504b8820ff207a7ee86c4945128e81774e122c0bdb9da95d731748da524aa37493da0d3a81b08971cee114866329ad6b539b28602255b7b2e3fa0bf82b118e1817102351c5b511b91032f5666f77172d437d19360996ec7e643d0cf88eeca54d310b02d9d49fc0162bfcd231ede09129386566f6ee5933de4501859464d53012dfa2668998db48a80b00901ec4bc1693db0b83bf934d6eeddcaab356c0a08ced57da1a8c972ed250339098ce8e1a1e0ba37aea74af1651142de4f8c0254495c59c57b4f830b6603d975d7b80c1052e9ad49b4b9c6af50b00c030338e16268c90f3aec36ae4515c03fae93a9dd22952538952f5bec09f68a54f3325b5290bdf6c9c94681697d54c995f5bd3d1d3d35ea7111fcd2205b5de81e469976da5d522c6a057f0820b207410856516ee0b7cb79b2a7ed81a51d59b5cff551051ea049642390fea0beee82fcbbd19800b59eb59ce62162fdbe06a526c5e277e680b9d5b8759cd5eb5a5d870b12f4aedd27d0095e2e7840b29db9c6840163486c41d254518c2dc3a4e94f5b34be737c16fea2fb9cea06682e61515fa6b440b6cda37aef8159eeef38eddb2602ead47d5af28d2d0d12eb12b4faf1d879c19dd4d6796cca6b30b147ff686ed156432fec5c157ed025ab2fd9c2efec18109e763e29c344e8d01ac82232079e8400bd01ecf13de150e9d09cd352f40a07a5efc9a9ded127d4a5a122c3f23d40a0dd4e92a5cf305480b15cd3738c0156c804792520cdcbc8ba0cea6f1fe35b5e21b99fd59de9259a47d7df587bad5930b97a05172bd1540c4765653c1e334f4678ac5376401ec581babdf04c694bcfd5e0af84cf7e4770b4b65b966b215604bce839f09597fc4aa140d40dcb5b56ae761f8b51bd91a6b17f40fe2ec8d6f0b1369313c81150e601e2f5b2f1944e2e2ae9ab92fa8d02cd33eadc7bc977691dabaf7d50c84170b002ca4e8451562baaab52f465cfc859e70e3c4b2c79190ba1c92ef5513249d06fa597ad283540b005cb6571715927cfb5270079d00610c1f10f6d90ef174a82c7a1ee5e73ae871e22a2576a1220b89dba82202155ac2880a50642de316ab7c5a1d0d7d869193999939e6b18a35c7fde0bb2c50550bfe972609fa1412dd2143eb4ad6fbd6d83248f2d5bd69d91ca665483abf31213690ad0ba991970b5b60e752e5148872a5df208a19e47a634ba6f3b32c5820597bf47a817d20ad5b17d0797947630be945452dd514a86f658024a70f6e71b94d5fbe5b06af11a82f1bc03bb87123f62913f5a7fd4a0b194593b70c14343365f60d4b61d6336d38cc0a71e86d5f04335d1d75bd92fd11b55d6b39c8050bef528f53ef1395f5f38621d9b8f342269472708d126f9edfbe8d1bf7cb26fa62f271430d76380b22d5aec9c913b1ddcf99e75d763d31be85fa751813b34bf00f4547ca22cd930a2986f2ed30fd0b2bc55e35b513aa39df7954840bf173f705bef4b02bee6d7fc94757d94a1642e2e9e5eb67f5700bb4a47164b4131eef10d76e1c27c08051c7c26829ae7a7ddcadff8a214f8c3af7439b2829a4bf0be5007ae18d1343ceceb6ad6088b320f1a1ca7d42d03266dea5589a27cf990ec3531f5e9d382a0badcfcb355a13ebdb97f641cc40f3ccbe9d44841d9b4496eb6ae1add23a8bd81a4e69027c7c540b0094b3a6531353ccd97ab07db146a7e6d1ce0b77369f228ae5e2e70f20133bf6f69d29ddae7d0bb3374ad536139c4a18fb92368e2f650baa42b4173686444e388917b48fb38577a3bbc28c463a0b00508a711913cc9192f4110e83e693e59f0052db88574b7fcd6d87a27cdabf4f794c0278d6bc0b599fec9503136266354e377fc68694cc216aaca61e47dac7488504940b2f295c4c34532113d80b6cb121558f12dfbfb06f977e4caaab5a456035b8f09c5fd47ffa960763c87c2f782e485149d00ba06adacc7e120b21747003a947bd7c6a9c75b98560be92c8b74b5afb9efa118ef52f5da0252d0b5fba584c32121e9aed9e069aab604e1c8275a5a30125ed2dd96522fcc74668f7616962a63a070b54c34da73012e027e2d058502226676c30a459706b28c9593cc5a84714025c2c95945ecfbdfa0b0040e59c301209efd0f6901c7e29fb40e25ce9f5e06fe51969c00b59048070eb22c84a45644f0b0040e59c3012121045d51b6eb232d9f399e68b8e32dfb93b834b1e911f2a22cff8bc9eb777120b0040e59c301209dee1a517037a9a0be281cba3fd08e0e5b49003c807368d823ce6873a3f9dff0b0040e59c30123f67617ce74cda5ea5be331609e475b06ddb70f04329a9e9abb398118ed2d0ca0bded8c65e30127ce673bc593bbccd8dc16cb8c36eb6d9d98dd3801ddc16b9945b646fea0ea2a00b0078cdf42b12d79dedd6c7ec3d35cf21683e1a80389e379ccd396464e45f68ce90b2a26f99ac0bdb46d72b151231ff7b448ed179d1a13fd68f19d633f8be0c68fa132e75dfa3c9166db2c019b40bc3f33f60e11161f4729565e8bbf56f534045085f9c80c192f02ed34fece04393b9dac3341e640be1eb8f19d71198598f8dbdbeebc17594e6fad820a74f4cd2b57c4c912d48aef2e76334a7eb240b1e16ecc3d2112cac431b0bb4634945f796e82add6117b0228e79ce4dc24146d7c0a2e8a4599e0b9adfa9d8cf111b86c01ef838e8724ff0472f5bce733bdab1b704c30ed7ae47cdeaed2d3a13940bbc56693ec71178062e20efdaf054306b95013c7d2f9d95e4671fa4d0c3264358906b2e18d92b0b52146d50af114725defa99f238a507d0f354b24b1f8255dbbd47a4451f59abd6271e7a2f9e6b0b16320c6b6f11b49b30b922a026888477bfbe296910f03d6da57d90713109ff1d5362dde257770bddf6e43f5c11a8bf71db4279a8ed60fe69e12d6b0f059ac6b16b6c06de6d32094489c8d6ddf60bae5eacad1e117cd19777f9cd6862703f997b4ccac6816951870d4bcd9be3ceec62d5f2cb4c280bc56518d30f11349ca840d04c314750b350ca913a3fc790eef06d5eabcd9e9309d9b4126ffe4c0b92866ef5fe105e76479584b7a34c3cab8c2c3eddb6f161424cb175ae94c216497b21cc6bd3930b231a262af010afaaede3412cab40bb48bef13fe91e6e795b9ee2d5f54c486841a18d190fed790b5929002fe810b030b73843cd31012bd9e3c58a8a331291e749bd87d03c86c37ed096327ab2880b37591dffe5100cc9067639b61b5547ac5584a94388a1e5c502a1c6d6cf770753e19afa95ad260b29ef67708e106c41fca26d8a8dff19ebfb7c2a5aded9ba533305d6aab05a8cc00fece284d65e0b00f088848d10ecae084ce3e2e03a2a104f805580aa61dc2bc9592675028dca21872f83e185460be83dfd0d6910f4b35216da714efa41dbb889010fd6a39f35a2e798d9fe48564996bba79b01be0b93ea17c64a10a28348f2f01e62fc08d466716f794cbf05ba5744a6585038e99a41ebe9b2829d0bedd896f941109787ef74f29c994105e8a922ec539a89714abb326736c5e25af0b3353b7f82e20b8129168d40103426a39114afde1cf0bce7f10a5ecef6af2ff8f6e8235152d5a52c815d81a7610bf63d880c30108a9a58afaa35f5946214317dc70a140d3e6c4d09a873e01cd8ef65443c3432550ba388bc5c101037170a86852db4efde2349da8aff39e0f143bef9c183db00dc23d28cde65bc570bffc2b89bf70f1737bb42af75426f2792afcadbf6bdd4244e11395ef396e71e1be799a468e5f80b00541f54b00f6ef3af3ddc0457299e09f5c5742f5ab6b32a92c458527e3b8aca238a7e22a7080b4e14fe1f9c0f015b6dcfa8131936ee54a6aa77520a1d792bc84444fbe490e3f6be360fe1ecf90b287ac8e67e0fc7d4d67250c1f9276c2fda4d9ad613a5aa3feb9ad93779ade94a70ba671c07bb0bbef436f6610fba6150ec68dd3a22b7a84ff4f7105b6156b2a7f5e6f1d5b530ae847e9c88c6430b9e65cef8380f1dd508bb1a073b2449b79d588e66dba4669eb164bdaf6a4c5f1114dc0faa31c80b00462c7b1c0f5430673667fb078e77968350a6e48503380b874934e4d83d7a348b794c8431700bbcb6ba3c110f5c68a3c0b22a31177e36d25e31f942fca1c7442333daecbc51b119e633f159b80b4c6c6d8e0a0f1fa373f0f08bf11e862541e143e8050ac278381ad1b72a80b12817a874cdb8e60ba1decd4b040f5ad3b6fe15630f649122e21fce4f49da92f5b941cc9233afd962e8b23cf087280b49d50e0e000f70245f18c98909e5e283fd73475d63eadd0987e732af536a64ab7f1882c2bf880be27e1a3ee80ec6b87f5fa5cfed244fb1334d4c67239aa3c7c345aab57c99c8e173b88e5202330b949aebe4cc0e24cad54b65bc3e17ad312565862273d71f733439b9b142b042a028ce256d175c0b06d74961c10ea6e8916974d86e259d4d6739adc76ba92e97f110571aff28d9aad3dc571edd6c0bd16e1333a60eb168d6cfd8a0dd5c6d3033ebd4f9e0c6bce6c45eec27491ccd60cfd670a4a3aa0b78cc4f1c9f0edf636f16db793a89e22ed3865c3cf463818ad9af74add06cd8f2c25c7bb9ed310be116ea859b0ee56ebcc60a329f9daed4edb66158d9d4ea180e5614f6bbbb9977a2173d64adfb0b0000514a8d0e91514fa5a236bd6118439645e81c51fa418d63c6d2fdcdc37699f9788a90cc860b1ca6363c840e621c693003cdf54197c0576038afe8f104f89ff88778d62ae890e95bae0aef1f0bd9a50597750e436eee98e74462aa52c300d2995c787106a88af639b60cc668336916468c55d80b4d3053286f0ea634b7633ffd6d8e91f41d0e0ac21bf8829732aa1c64d011b1cbfe3ee857b7aa0b5d81b210680e238d2377f7aaac619e80e26466363c67c4500aa2afae2da1a5c853caa1a635a80b9aa4736a600e77b8d6b24aaed77b8ab686eafb4da4ada8088194448b46df65e2d10e1261c1340b1ba05f55600e18a4e2d2743d2f5dd4199422b04f9c8b70f502821c763b0eb9da7540f975f3d70b00eb8f6e530e312f55e6245341735f98b15fe3c0e3d6f3a6f6a45ef20bc3c5f90014a7fca7430b00607528300e08c2660b5a5e5208f147bc52b28a6ce780b766b17b20901ccd136f70c2a4d8960b0078fedf180ebba6dce643576e0f483a9ba40c1c5803b72e2a567e2dc453d0fc625ac14984410b00908797010efa3071dcf926d3fea1606d27b1db36ff99ce278925318dca807f2ca677ef5f790b5629a056f70db23585a5e07b1b224e4bd8c91db9f582104a097261559b3a4a65978939b6e1540b98134b6cf60d8ab42d1fa5995bbdc9d44d6d799fb7c0c07d82d9714756591c36b5b96799eb4c0b0189b657bd0d37e214a7802d555374376fa2a90f51ff3d9ab003d62a47f8d8c81062768b68c20bfb3da984a60d136a0c1a7ae77610832bcdbdc773b083e80727e0ae2c509a74972fa6012db2060be9d9d7e67c0d7f69c36a6cc400f125185b7fb9ea06abb6eebc1df590a6b8bc379797bd0d445b0bfc5fbb6e7a0ddcb857b8350f262aa96899e947d23da83a24d5428536713dd1edc321d47843120bcc848251730d5f44b11ea6be2d6739cc88631fe4470b89989da2ec2b60f72a56c1e8ae40870a0b51489474590dae21fedcdd59c5a23fcf6a8c72131b822e0d5b9a9637c798dab2f99c6e79e34e0bd1cd795d580d339fb960f966180ea0d25fcb07ec4669316659fe6d4586fd635eef56a2014f5c0b7c917fa34f0d2c5e837fe9f5e550d27bba7b99440b8782bba0cf149913f065f8f343559fec5a0b43962cc5390db03c9e31a29ea569da71ebc782e2250e2b1de24ff3be4fb3061e40fd87e8b75a0b5021a1ce2b0d8e5886e1229501a2fefdfb0fe9a9d2d1f56626562d8b7cd6cb7f1bef1c763fba0b87158122160dc09d86f163a13e374d6de911160934226ee8456496059a5792e1e3f4468fd0700b007c77ce030d8176d3026788df4220f63675e155537400abbbfc6828e4d74fc73511e9ddcde10b5f9f85aad20cc3a6302c44471069b824a2984a6f3199351b619777969650e7cf0454b819fcb50b6ef3acd4cd0c8f45e70f788575119253cebe5156aa9d85d2be6b4985a8b14df5d63fb872c00f0bec7aa30bba0c23e2d63a91dd679101a29566fa599a73dbf857a888468f0ec195acc68833a1c30b76af7a1cae0c30d787ca32da7fe9998067bc56ebbf8dfa7ff8640d1ddee51a2cc82b7eb2dc310b9bcce2438f0cd60ec18dd053c9e3411c8b631e0ac82c2c6b9b53bcc73c7d7a05b06c9304df270b009cdd6b810ce10d357330c575835d5ab0587504b2d3b593373bf00672e091bb84ab7ba741200b0028a2c7750c52a660365ca9c09c76a2fa6fca8406a0e8eade5590902d5b4f897beb0828f7c00b38df17b8690c1dd76fe8877252457878624a3056e598740ec096dccc41bba099e0145c09f7bc0bdf64d3375d0ce04af8f767a571c4fafcedbaa56a3e66b0f349bd937e5c5cb0a3309fe0bc538a0b7d4e7e7f520ccc6f5bd600af13eee46bc77189d6afb008c4abd841732863aa3d35e44505d7980b2c652cbb510c6c8e5a1d4088db91f547fecbe2154637248ff2bff3f76f128404b963cc14d42e0b6b24235f500c976420b5de2aa378f45125695865eeb638591e2dcf47a9a7c608abb6171905090bf2813b344b0c49124ac2c83698e4de3dbfd4a6044a8860e3301272a5e79e9028f09c0e0bfbb50b0058b436470c774f3cee09a8c14452b0467171188d370410ac849aa1957da92c78ac2395efb10b9f0454ea3e0cf0e1778d8367793662a8c9798465c5ac361689e33235738b3936e322f9b9a86a0b7f2411a73c0c6dbbb21095e0be6961c7385eea7ec9cfd9635b9646ede20b920db052ac91d7720b00e478923b0c0064d453c44af74688869b9826a6f4628fe0932451d5ee9579dc4989617ab3cd0b2ad7e522220c87d625427e91a23bb775d4846809e72a6793ddb4af9864168d3ff07dc46fe6bc0b008e4f600b0c5c1944bba2107d4a96341cd5ec3b144808e9b72e209355a7f680a0436d4ed1380b8d3ed0840a0c0787320f355bb9dd74a4a44ae0e4b3bae13bd9fbc81c8e876cc3f7e3f0a8117e0b004c7359080c8d3b5cbde1dfce1d375a4416ec59a602a50ef5d5af887096bf0c17aa940d0d750bd1a36da4f30b52a983a1b08aae6151c4725235ae98eebed017191d26e3ebc47c0d789e4558c40b00a3e1d3eb0b9c489820cefc5a47fe6a49f36a0344dd36f38ed37be604bdc82d0b088c51c1120b00b8d814ea0b5b0db8026be0f469ae6a23884026a7ddf5234a298beb113b8a904053cfed0b7a0b54f0f282d40b0e94acbb3e95da827d180f897b006471c69104feec21f733fce7df9a2029b5510bf15e4e0cc70b3b55af6edd88e590cae0043361fcc6db759559b4c967516000701ec36e07b2e90b5b78359ab70b5d5047c41ccddd8f43955665184ac3f85063829e3a8449d4222a9b7e0b4336cf0b5ac7058da10bdf4d55df69ff12de7abcc6bfec5c06bdf7166fffe0feb13203975e1205ace33e0bc21bf8687c0b7ededa91ed9b49e21064263ef41b5514f2100eb98be18ea017818c772945988d0b009a68d25b0b529de0a4f07d12d328baeb59faa88fbb2d59a6ea1d1438196e510b576bc8d2be0bb023ba055a0bd4769c9a7674d289ea59f66997e69b1e302a0abf48af21e419e24fe836e8c3150b612983b2570b48a22c6b8f88c81623f7d1ffec77385c7013e57f4abc82f528f1eed23da9b6520bda79671d530bb893d78312573ed639ef196ac4ef69739f2e47c5c70f8ac21f3045f1e255f06d0b6d97de8c4f0bbd680e9dcdca0dd2898361cde28b70c333cbe0fb57173cd477292c4774b2dcbf0b00609819470be04447100749d79a0e1aa6998bc05343d90c352e7f7b0b7de9136bd2172b09e10b00ec5c753b0b035a81f0172f775c133df6e554461d8aa9808b3cdfa60b4f3a9cd500ce06035d0b388dd81d380be4e22de5d60cf09f608238ec3eff9f501e7b43b0f215b0a035c330c0af043e0c0b5edb30dd360b7043f54730add256110452a4e533578740660a3e240d7076946f6d685ddf697a0b431bba742a0b3dfdc482d0f904c55b76328c37dcd4068471dfb6176cafe8ea4a4685594479250b0004e62c240bcbfe005032c4fd02c3e135c5fb15b19f42c32e562bae2c1c6c6fd80c5c5224480bb5e18cac190b2b561e609b42b59e14cef52c9454322be80144313774805366a5d3a4097c0a6d0b79f345bef70a50d3784409573ba8f7fca833d3ce0d0424cd560a7f48c745133a7ccfb3ad346f0b490d96b3f60aeb3fba43f6ded1f8aa8b544b873012d7774dfc3eba6fb007bbf1578f9ba2c86d0b00c0bcf7e90a9e2e55381c7584e3346364e721160cbf477eff7e1ae778e1977a0de9beffad260b00c0bcf7e90ad29fb1fd25e04250e37f503f6e9c430744330ed8843dd19f991e9be26c63b4170b00c0bcf7e90a109fd7ccd45e280b82c8a1bf53ab7f6a6f0610e623eea794a627cf5bd4755b520b73733f44e00a611f0f67bb6de5fc7fddc8df676fcc701795d64b538fcaae4ac25d6ad5973bcc0b31b7f277df0ae264e45d6b55f3a646954b7492e847fcecb7846b1010d3cd32d8cf59296b24390b2a968638dc0a24228c306939d04be4506e47f66fa1aef66aca46fce291c3f8d93f32db3058650b00d845afd20a90c291d0acf58a02cb83116f88b839251aeba1cb758aa706b79ddd437deb031f0b26ab6659c50a3860c2799edfaca5866dd49f38c6180806224b1b893e77959a3cc2d4ca1602cf0b38c409c6b90abb79f2427d006005abab69a76508d47cff549e13e940d303588becf71700b98e0b921b8f0e9b0a5f3e16d2ad62442e109e6d5864b27eb84ea8ddddbc109625aed3ed6e244852c10b5f4421d5990a6ba05cce4f832d981dcc676b4632b0e038a889cc045471f58e265527c847beb10b0acb03ac950ad5f890b0724d6c20439b35e0ed1a68a887957e06b51ab3b54c97776c9e2011720b8a8ae8fd930acec80e341356ac24f1e14a802940f15d5a48e3296ce455e7a2eebd8a3c5ed9120bd05e9a9a860a12741e235b2e60a3c0f0f54dbcfe29ca7ee6bbbc97882fe97022c86c1a9e15de0b2c04a110790a97aca93b21869652aae1a647bf36d59d6f20f2cd623710c46cdb966cac3171bf0b3c14d0686f0ae20b84bc511d8c5af3a1d8023c4e5a23e0470c3843092e0eaf3c7aa1dc0497c10b9193e7b05a0a3b2cad88a0a915732993e52078a7003c14dcfcb47c988a915d19b54807a39ac10b0412587c490a2fe6f861b12a85556265b6b33870577f8633d3e0efd06161c3cd968f36d274e00b76fa0d46390a2b55d8708002f147d9b0574dd0bf11bc7e394dc4249248ace90f94d995ef8dd90b00d0db90310a2a3fd116f28d42c5ea6bbbdce00217b05fcf4596b739120827ed9cc3125044510bf710e724230affa5ffa799ade2b2f55d9d6244b38931487047885f318b362450bf68d3d2a3820b6f81518f220a81a5eb7332b87fd49146630374179daa2d955c873f3796b39ae868550ca7358e0b079d136b1e0a4b1bbdcb5a3fd7f029c228a2e27d4af93e292759ff30bdf197c3ebc5d877e8120b00d076c3130a17b572356d71b7b05408d9d9d5e36bf0251c33b78b74b940d23f057d21dc0db50b6ef491b90b0a9c1a7b0342a8b9c4c9fb7976db330d2c65371b2685995691c37506bdaf9b01500b9f07b52e020a749553ae000ab017fac28038c9e1419e7f4c621516528a1ef29f54b519eb78720b85a9aebafe09a1fd52f52c98ca0b41f8714bf98f0e58209c5a3555fbe1851fa54e71b8d10eb90b00e49486e70960fa0cbd42ad410a91d672b716eb2032b911c22de0ecde3c9ff546ca3970c0100b0901c0a9d6098158da6bb6515fc2187c38a4f2cc196f4dac793a457d2afe2f50ce24e4f31f510be4ebc5aed209f60ab42345981344500e5554abd084d79f34a2d441487a27371a78e1f4641b990b00fc1d3ed0091c17d0f4af3cdc4b991e04002ed4a49a2a327c30f5244106b8df1ce144e9ecac0b7196df0bce09be1e00b5ae2eb3b501a61fb1974a94457f49059be6ed86f47189b3e059de88670b5d5ef7afc409ffa276411189e54df72a351d0e8f9855c16aa38f26b08b30cb53ac0589f5edce0b0a3725dcbd095d0d6a472f3e9f3ac2652fac5492e10bd781d3cd28b2703bb6196fa6eaa26c740b412cee82b709ba0cbb3dcbdaf3c6a4a44702c103d1368db2db2021da0a7d18987ff5be8bdb400bc54ac064af091e3e88f52be8e0fd76904657f4eda843335d0daaea7815be3480ad14113a0a280bfb784a4fac09dd35c1cd3866d4d6757bfc173f36a2fa905f5d8688e190fd02787822761e986c0b39f13171a6095b4e849bec050f7dc220f70259243ceb9d88df16d4c3ff54f3bbb05a067ef4f40b7e49b75d9809a862d2d37f9c1b459a4acd3acb87e20521943b72dcdf233a99b2b595c16c1e490b00e05ff7960989865ca438925c09fe29815e0be9050053a36ff4f62d9959ce0c8e0e3a8a27c70b0663771b9209a230da1b648bd7f10af44fed4883ba5483239cc3712e1bd947b019228edbd8c60b73f97e8e8c09748036678bf9937d54c5ef8d41e0c4b15600181c5bc686272d8033be80bd5ed60b4f18b9357b09d3000a5c58b73741ce571fb9ea129f48d4521cd57e435d7e756a095e0c76d6ad0b00df486578092a9f7680d9f38b7645488b46849d48fb51de0cf603c395bef412f00bdf8fea100b00404e70750931c1f897c66a893fa552ff40476486521c51d8e9597178df0c1ab1096e87fafb0b02a0a9c86c092d11e9d8e094efdb449feee634b9cda8e92c7961e1c289a3f55cbff61c981eb60be8d0a3f3670912a3389b301191237b513dd04034cc12051591b12e3daeaeb4312e3ea3b5db930bae1f1fac64092c6db28436061f17eee139bda64673eacc228c5f4dc7a88bcab3aa6446d941800b8a5fd49c6409d8948cb4e27bc76cf9651fea5d60f7a923641e185e6d559309471e850b42c4450b0058d7275e093ca73eceb466768fd4d45d5cae0dd86e9adefb7114de0034ed865a5462833d040be2b1ab4c5709a72db5e2dba5cbd30fb283e94607d89960ebf8c25436de16e09626d3c8c30bdc0b007e5ab545096b19f2d7ab769c0c20765bfb869249f6b4801ee6c52e42e0262f9c2f5bbe55ca0b00c43ce33f099229ec5fafd8f0a8395543c9e102d9063a08b5909e22cd993b8337653a49d4320b24ee5b363c0966b7c50aed29bf4724ca0c6d72071f5c1f4c7f841ac71aa2e66d3c2aacce4c3b0b5e95466f32090b57a9830d20ace99ca6e55c4d1c028df031f6f49772b09257daf3f029bd026c0b0088e9962f09cc15cd271c917070797abe77c3adf6f6ed679c06523524e73ad62ba6596d741d0bc0a884b12a0909a28ca032852fc849c2c36546008bf37a9e52cb660da392f82ce900081337d70b824cc95f25095c6f781b43719381268508820fdafd6d7727f305fd87a1944fcc0b1bec4a36010b908df868230955debb4b1858e463f49e3f11c6a20709ecbb3b287fcbda8a0eaf59715f5168580b5b2e704d1d09e1023ecc1b65dd8de7fccd9513a4bff6f2475f7e9fa26ee0bd9dbe7d85bdb5060b407901f41909f5b50255578a8ad92301c5f7d6327357890e037e9028dc85b5b049d9de1c7e300b409cc1f01909e1dcfcbd3020a6a73564410c70677a1f532e87d20e9a80dae4f42c6bb98f2d230b00a0724e1809ec448676c513b2870e4d3b191268218bfa533d26bd3392663b635732849597830b00a0724e1809dfd18fdfaf05b261d95257f73dbdbfb175b752428085b5632ff0f1139e5c245e0b00a0724e1809b916af27952f19886bb5df69e883e627734aad5ac4d4081a1e0c3b8870499e430b00a0724e1809be62323f9837e9bbef816f549dc6f133b58ee50bde7c156f55b6abb1822899b10b00a0724e1809e9cb872f76960a523c3dd2cd108bf861109d40c856e43a7215c48f4889aaedae0b00a0724e18092b112601981b62f52d293065a3ed57bd068e0ae743d275e6fb5d6537ce82e7f90b00a0724e1809a784e7a073ae84ede29e0ad0522c2af6b952f8c8ef66dcee1e0b6309e7f250b70b00a0724e18091f78738a6a25d7e8ce9253caf5c304c1175955e49eaaa6e4480b8dbbac7c01cd0b00a0724e1809d9dbecdaa2e2032a92cc24daa8d5234c711cf225e07b9a46342d4833415533bf0b00a0724e180912f1df314cf81125e883f8c035fd0f947347b9a36fc042a6f246e9aeb950feea0b00a0724e1809462a8395f138b13633156dc2d412852274143315fe3b616dbd39795838eb59e70b211062a91709845379968d688a74428e7cb664046fcffc0b39d2276eacbcd8ba8429e309d1b20b00bc66fa150951a0a738260af5b215e79c3619e786a570a4c718fdbe6d51b1cfb416fa3631030bdd4401cf0f091c343f72bfecce402fd2e17aef9721916472e23685f038284a4766be6f008c460b00b8fb0501099c0a330dd2b6de70294bb8ae0fea1ab6264518335950d8e290d0e6652a6e1a220b9a9c62f4ff080632f8fa09f535ac84f50e2a8b2f9171adbedd56d2e67e5785c567006ba194d90b12560645fe08415099179ceb80752910452efdccc8edd87feb4eaa5431f567550496fad2b4c20b0094d452eb089bdb3df36a4cf3ab83a9815a6cc09c7c764fb4273d4f664eb24db353871e6f2d0ba772035fd90840752a2e02bc9c315b58165d4413e7f2250bde6aba7e02878e28e14b9b9d3a500baae1ce4dd508053add01ae0b0b213f0bc7fc7fda906b67c2c8620906c1db731c9c29fbb2f6920b56ed8c8cc708dfd6f4daa4bc5cb2c1d275cb642462cf2d17bbdce2d16f71ce310bb8c02e31960b007067dcb10809342daf34b415e9e2b1a2c8d146442ec4fcfd8a93a47fdd9f2e5caeca7243d40b9ecebed2ad0858625b4526567e3c0caf047060f491b5a302656133f5f6a39830735533f491c70b00a84f34ad087e82cbf4675a921ffd7b2ce129a4c73d609712811529219abab447543b4a04a30b18af311b99084c00da1e7774e44d874f125b7c93fb9306906df796a03f3d8734573a6e8e0e250b3bfd03fb940805a867c6a2ffebec66bf5ab9e938d05256c905de365a3fc2bac476aa5eaae9c60b00dccc9793088457b61f52dac42140894a41373cfa04e6880837182e113d5ddc5482b8d325240b6feb855d80085f4900fe1da0cdd3e8ce87a6253f8a8b9a5c97b7605c9dcc83638efbcf0805070b702c652c7308689a07e49c62d6e22f0bc6c2e8b26fabdb1f0ee52683dea5e4710fbc21cb297d0b74d3502b70087931455f07bf6289d9d59945910b36a85a140d757bacc7a6d0d91fdbfe76fbce0b21d56f0f6c0882d9c76ab614997cbb8dd8362176eba363d2c5e4e0a8b4210cbf0eef8cce711c0b7d0169fd6b08d33f4be6ac68b9f510d8d950c43d2eefe0dae5ed607ba62506d12e1de195f77f0b8cdad1206808f2df388edbdeb2f39bd6fc0c22876ba46d438cbebf87684bb9a6e68e301595b10b0008741250083ce72e5b2c6f3144ebf5d4cb7f252a52d201cb55775e0c07805a37b0ab8a3e080bb0603e374d08a6ab1fe74b38312867bab6445e87d731d479091b190a021f3c956d7fe0fd408f0bd6a9ac9b4a081a973ae669fbd916f2a35d3132024f57fe3464b251851a036788a8f24719df6f0b38fd60054908cf73dde269c823bde4175063575f63ee7c18e088e6a613bf0320601765c0a1ac0b9dbc9ebc4508ff5a3acc452d32f4702fc419d11ee431f8f01e3443e82a313e2d62207a4ef4d00b0090cd792f086f66db02bc7eb437dbba0f5183ce75ed96ec80beeb6c316ca38c1ccebd7bc69e0b0090cd792f0816ad0d39554fae714cf7ec0ca36bc5c1ef132ecac978f0f4c02134b1228a69170b0090cd792f08459dc73a2473e0e9dc49cd74d6da2700d754e37cbc27d57c292cfab770e041370b0090cd792f08c496bd45ba80c467c79156a382ce106f64cc764c411ba9b6124adfe200364a140bcaf79a7f290840d5728348d0e64d30af5f25602fedc7281655e8ef46d4481a77c016c8ea73320b0b89182326085efb32ca2a80cd026909d75bb0c00ff6e20136ce91cfad4665caba715e85f4a10b68d49d072108980494302e53ed8e1f3a41ceefd2f5819fe0354998ee86085017377114137f300b3089e9c01f0833abd2b562e2aae73891ab531090798a4ecab766c0d0d2791bfe61079321968f0b00a856311808aae8b28bee752c7edfbf4227f48f78f3a6c813cf85a6968f392b5521da25e5130be14c81d014087e1f9e2a288bdf9f95387d391bbdd110122d6913c54c9662760fdddffcf19faf0bf4ea783e0f082b3466715dc4d05aef540d8ee62bad2b595a19224c854e84ae6f0d80305c17f00bd0325488f1071c6d307db93f4f6e1ccaa4e1af5649537e8a1bd85a7006b11ca6858fd7cd86180b81c61ccbdd075ca3d3ae9cd1295899604fe1eaff2c79c4bdca2dc7c38242f6a9d8beaf228a6e0bae1ceee3d007030571f0cd7a8d1d20dfa7cb303f5010274f420a5029e50c5b07d0c6133f54450be4d33bc1cf07ec226f5b017f0e8cb1ee6e475f23b74b5839c61eb7a92e278fccffbc736de8760b9b201c62cd07bc39da7b9b8479915809674cd4c57cd028768dde7395ad647d859b3f7dc755930b00087b0fbb07301c62cc6a00de87df8b008a827c4110965a6f7ec53368725758641cf7d2bc330b2ab8c8a6b9070e30a4cd8bc4a5e20993776dcff7540882b710dcd3ecd3720ac0b1ec74def3620b72da3e88b607472a82e3ccccb3bb906471005f149855e37d9f27e2fe0c1ee6adb3fbd430ef4b0b28a531e2b307524fb857f599066597699d88a147c706900b68f446f4b1e9411f5c3786d5fc120b8f782529b1075251063972e5b95b6cc41ff748c56a2d2d59a95f775fbdad6e8f4b78bffaebcc0b00943f6baf07ae3cf97b736e864bf855bd4525aa3c2a01fbc33398140e99f17267e7138b0d200b74194da8aa07c4373cd04332f282cb9a589d79485f87817abc014d93bc36048d2f8e2350ce050b03f5ebe4a907dabb7079f61130dba5ca116c315be17823543d5ac391243c17993550476d9a820bd9745417a20757ee605978dc34f25dd9bb8b240d66206e3a80cf1e414fea3e02490d6acbcca50bc13ea1ec97070ad1de92b03ffc669d3cd962d5b812ee0e244fdc1d8cb01688769fdbc0bbd40d0b00e4b07a9307f9795fc99d4f4d683bb892d7d8b9dc09370db365a9418ec8a0da569c759d4fec0b12da42fa8d07ab2c4a6f225f9d3cb11eaafd4e785e7ae947d7702e49121ca7d35e699137d55b0b27c319d7880710459f8791b1c3e8a6fbc84ca17debc2c8fe040447d8b1371b60e233b0cecc300bc6758ad877075d4a3a28fd5c2ee8daf060abde94f562bf2c826e1a2736c93501437de0e776430b00501636750737d92ab722c4ac732439b0716611a025e4a18c68affe886defdb9a34027a095b0b1d7dbc966e0720dbd4cda032eb3840576928862e19e64446bffbf3be5beb846c7c5923f8fdbe0b754bc2b6670731f4f14b606f1bd663372dcd9843975c03d72c4696b18c863bf96b938cecfe2c0b0014c3e964077aacb0a4fdc60db2ff5b33390cf9db3088303944faf3b1e1326f03fae7550b570bb9f00f395d070aef3b09cf59ffb88dea41c5b42006ce64c0ad1eaf5b0b5bb0c387be4b8b063c0b5175c76c5a0729705e27665cc3da49d6475974d86d75281137d400c3e512222ed8199361b11a0bb07d4ffe58077f768396e9571cfc12ccd1cea8cb39d3a3c0040b355ff87fbc5178f3ef9d39b70bf62f85f85407c23e99565e7eace338aefec42e52f27785bfb7c627194a4a1305d82c6a93cfba0b49a118ad48071d864984d558a2065adb62ca860aea52b39e9f5705619d4c90c0c74e5bbf7ff40b008028a5460791445de03527c78fb174e5f9952c76830c9e9897d06bb6ed850f43a06a51fe7a0b008028a546072df1e4ae2ce34b2bfc843519c427e00397378367461b4c1fbbfa205c91832eb10b008028a54607b392e86d60228e65a02a9b86a466acf9db386801fb9ac1b51656e064d7b1ece80b0098b15c2f07d1ab652790024cab6f8f49405fda1848bdf47c4fc5cda4cf99d891314820eb670b0166bfcb2b0719b8b4e7a4332c14d15d3b7fb1326d4d8e38b038614614c0f896652daf9232d30b4d7d39932607f2109ca37c01641282878468bc6fcc75ae900ae874d7db617e5fbb8a4a992e120b687720d12407971b025b2c47d8e1e1077bc890ccd303e13ab1001ed92cf88ac3fd4c61d6298e0b6a2c83c41b072f0c3e97786d2d014b59326683338dcc9666401f07d3f9a05d753aac25ea6f3d0b009446681a07a083d8079ff6e3d8f611ef6239973215df71f9f0b53a7f43600ba0de37b2dab10b66a9b2081807d97331e7c8be86b6e5ea7593b90880c148ff01fa228314390f30638383335e090b67698022140744c71150ca94a98ed775367ef189ef79baefe8efbc99a362fe51e4192bc49eea0bc42f757a0c07d48f3843b2a37b300e0af6fc8065ca873e4cd244c385adb7475014b3ec9d3b920bad6f20740b070a3d8d32ed6b9df36d74779dafb399c2a2d9094b693cee15cfff501a353d82490b828639bdfd06c85c5ac99bf4b9a82a7a60cd921362d8c4a62b2824291471f068e354e7d68fde0b7d713d2ffc06d5d22276c3d9cd3ab983315493854259c105e9370ef2de8512a4c46614d9d59c0bd6a21db6f106e4798b048cb9ca33bab95f0a4ffb3684bfbc7ad5166182ddceac3cfe320db08d0b00a8642bee06fd627cef771efeccb92249cab81d506c84059e68f38c923a3f0c85b893a22eeb0b9f1383b5eb0603759bf7d842ded8244665303b8d0a3306d91d7d9d00e09d3cff7a65668620da0b00c0ede2d606bd79a1391968806c3044b8d50fcfcc6cfdb0920ba3ce7da0a9f8d267325fc1c00b00f8d53ad20653c041ba3322cae270bc855db4273aaba82735c1cb04d4b20fc448ff78a518e00b8ba0bc3ad2067518781e7e3f53da424c47ccbe3ec87e9588ef9c458a0ccb87f7a8d054df6ca00bb9854f13c7068ddf0f7b41798ba9f1dc8e59b1d8b1a62f27a1df5034e79524325ef6e36c33730b55e2a178c00649f2b601611e6565492ffde19aac44177ef69de7215a750a72ca85a976a478910b49e8b01dc006806f861733abb4ace370936d86d9a3e1689171be1a6dd401f942502f362f24a40b8dc15054b506339f3d0c2ab2a0bbd67f0c90bbf6dd066d2d0eff84e256dcafc7022de51ea1f90bf15b8c64b30664eb1f7613d2177ea172257690d9cd5adbe7200ab442757eeb3bcdcfc572dc010b0f217bd2a7060c7a4c22a895528831f6dcc64914300cd7547beefc352682d68bab94e6e8f0680b398a1d25a706a225484d88df5c8c90ccc2ed68718fee491aee208399b6b2211e521426f526370b8d1ba795990658c652dba2656797ef157631fe313e4074ca2484dd83d48bcf5b62f9847996f10b49b798f88e06a93b279f0ae9f00e987b81593aa440e709076eae3da6c1813fe9fdbdf6a294e80b00247db58e06c00266ffa9c3ac0948295b0cca2c39e9ea602c6a5d8b067db5c0cd7cb278daef0b004071618c063634caa84d5b70a9f9c3c378c774fa1b52e223074be0761b95a938c169a236be0b3ba4a82e8b06'; diff --git a/src/services/test-helpers/responses/accounts/stakingInfo21157800nominator.json b/src/services/test-helpers/responses/accounts/stakingInfo21157800nominator.json new file mode 100644 index 000000000..1a6262270 --- /dev/null +++ b/src/services/test-helpers/responses/accounts/stakingInfo21157800nominator.json @@ -0,0 +1,366 @@ +{ + "at": { + "hash": "0x59de258cf9999635c866df7bc5f397d152892827f887d3629344cb3cebba134f", + "height": "21157800" + }, + "controller": "13vxvvF6uQpxq6eEp94TrDZfR6afFfbBeipnJwCgctyc7bNX", + "rewardDestination": { + "account": "144A3ErZsuQsHauKCRxbrcySvTPEnQNVshpxa2kQ1DrYPPG" + }, + "numSlashingSpans": "2", + "nominations": { + "targets": [ + "11VR4pF6c7kfBhfmuwwjWY3FodeYBKWx7ix2rsRCU2q6hqJ" + ], + "submittedIn": "1383", + "suppressed": false + }, + "staking": { + "stash": "11VR4pF6c7kfBhfmuwwjWY3FodeYBKWx7ix2rsRCU2q6hqJ", + "total": "7749798828817", + "active": "7749798828817", + "unlocking": [], + "claimedRewards": [ + { + "era": "1385", + "status": "claimed" + }, + { + "era": "1386", + "status": "claimed" + }, + { + "era": "1387", + "status": "claimed" + }, + { + "era": "1388", + "status": "claimed" + }, + { + "era": "1389", + "status": "claimed" + }, + { + "era": "1390", + "status": "claimed" + }, + { + "era": "1391", + "status": "claimed" + }, + { + "era": "1392", + "status": "claimed" + }, + { + "era": "1393", + "status": "claimed" + }, + { + "era": "1394", + "status": "claimed" + }, + { + "era": "1395", + "status": "claimed" + }, + { + "era": "1396", + "status": "claimed" + }, + { + "era": "1397", + "status": "claimed" + }, + { + "era": "1398", + "status": "claimed" + }, + { + "era": "1399", + "status": "claimed" + }, + { + "era": "1400", + "status": "claimed" + }, + { + "era": "1401", + "status": "claimed" + }, + { + "era": "1402", + "status": "claimed" + }, + { + "era": "1403", + "status": "claimed" + }, + { + "era": "1404", + "status": "claimed" + }, + { + "era": "1405", + "status": "claimed" + }, + { + "era": "1406", + "status": "claimed" + }, + { + "era": "1407", + "status": "claimed" + }, + { + "era": "1408", + "status": "claimed" + }, + { + "era": "1409", + "status": "claimed" + }, + { + "era": "1410", + "status": "claimed" + }, + { + "era": "1411", + "status": "claimed" + }, + { + "era": "1412", + "status": "claimed" + }, + { + "era": "1413", + "status": "claimed" + }, + { + "era": "1414", + "status": "claimed" + }, + { + "era": "1415", + "status": "claimed" + }, + { + "era": "1416", + "status": "claimed" + }, + { + "era": "1417", + "status": "claimed" + }, + { + "era": "1418", + "status": "claimed" + }, + { + "era": "1419", + "status": "claimed" + }, + { + "era": "1420", + "status": "claimed" + }, + { + "era": "1421", + "status": "claimed" + }, + { + "era": "1422", + "status": "claimed" + }, + { + "era": "1423", + "status": "claimed" + }, + { + "era": "1424", + "status": "claimed" + }, + { + "era": "1425", + "status": "claimed" + }, + { + "era": "1426", + "status": "claimed" + }, + { + "era": "1427", + "status": "claimed" + }, + { + "era": "1428", + "status": "claimed" + }, + { + "era": "1429", + "status": "claimed" + }, + { + "era": "1430", + "status": "claimed" + }, + { + "era": "1431", + "status": "claimed" + }, + { + "era": "1432", + "status": "claimed" + }, + { + "era": "1433", + "status": "claimed" + }, + { + "era": "1434", + "status": "claimed" + }, + { + "era": "1435", + "status": "claimed" + }, + { + "era": "1436", + "status": "claimed" + }, + { + "era": "1437", + "status": "claimed" + }, + { + "era": "1438", + "status": "claimed" + }, + { + "era": "1439", + "status": "claimed" + }, + { + "era": "1440", + "status": "claimed" + }, + { + "era": "1441", + "status": "claimed" + }, + { + "era": "1442", + "status": "claimed" + }, + { + "era": "1443", + "status": "claimed" + }, + { + "era": "1444", + "status": "claimed" + }, + { + "era": "1445", + "status": "claimed" + }, + { + "era": "1446", + "status": "claimed" + }, + { + "era": "1447", + "status": "claimed" + }, + { + "era": "1448", + "status": "claimed" + }, + { + "era": "1449", + "status": "claimed" + }, + { + "era": "1450", + "status": "claimed" + }, + { + "era": "1451", + "status": "claimed" + }, + { + "era": "1452", + "status": "claimed" + }, + { + "era": "1453", + "status": "claimed" + }, + { + "era": "1454", + "status": "claimed" + }, + { + "era": "1455", + "status": "claimed" + }, + { + "era": "1456", + "status": "claimed" + }, + { + "era": "1457", + "status": "claimed" + }, + { + "era": "1458", + "status": "claimed" + }, + { + "era": "1459", + "status": "claimed" + }, + { + "era": "1460", + "status": "claimed" + }, + { + "era": "1461", + "status": "claimed" + }, + { + "era": "1462", + "status": "claimed" + }, + { + "era": "1463", + "status": "claimed" + }, + { + "era": "1464", + "status": "claimed" + }, + { + "era": "1465", + "status": "claimed" + }, + { + "era": "1466", + "status": "claimed" + }, + { + "era": "1467", + "status": "claimed" + }, + { + "era": "1468", + "status": "claimed" + }, + { + "era": "1469", + "status": "unclaimed" + } + ] + } +} \ No newline at end of file From 4a2cba012a537d88017ef394d7e53d57029c58d3 Mon Sep 17 00:00:00 2001 From: Imod7 Date: Mon, 4 Nov 2024 21:55:29 +0100 Subject: [PATCH 19/26] run linter --- .../accounts/AccountsStakingInfoService.ts | 18 +++++++++--------- src/services/test-helpers/mock/index.ts | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/services/accounts/AccountsStakingInfoService.ts b/src/services/accounts/AccountsStakingInfoService.ts index 42e7a622f..1b0c455b2 100644 --- a/src/services/accounts/AccountsStakingInfoService.ts +++ b/src/services/accounts/AccountsStakingInfoService.ts @@ -223,10 +223,10 @@ export class AccountsStakingInfoService extends AbstractService { claimedRewardsPerEra.length === 0 ? 'unclaimed' : claimedRewardsPerEra.length === pageCount - ? 'claimed' - : claimedRewardsPerEra.length != pageCount - ? 'partially claimed' - : 'undefined'; + ? 'claimed' + : claimedRewardsPerEra.length != pageCount + ? 'partially claimed' + : 'undefined'; claimedRewards.push({ era: e, status: eraStatus }); } else if (erasStakers && erasStakers.total.toBigInt() > 0) { // if erasStakers.total > 0, then the pageCount is always 1 @@ -290,17 +290,17 @@ export class AccountsStakingInfoService extends AbstractService { claimedRewardsPerEra.length === 0 ? 'unclaimed' : claimedRewardsPerEra.length === pageCount - ? 'claimed' - : claimedRewardsPerEra.length != pageCount - ? await this.ErasStatusNominatorForValPartiallyClaimed( + ? 'claimed' + : claimedRewardsPerEra.length != pageCount + ? await this.ErasStatusNominatorForValPartiallyClaimed( historicApi, e, validatorStash, pageCount, nominatorStash, claimedRewardsPerEra, - ) - : 'undefined'; + ) + : 'undefined'; claimedRewardsNom.push({ era: e, status: eraStatus }); break; } else if (erasStakers && erasStakers.total.toBigInt() > 0) { diff --git a/src/services/test-helpers/mock/index.ts b/src/services/test-helpers/mock/index.ts index c397dc052..1cae41814 100644 --- a/src/services/test-helpers/mock/index.ts +++ b/src/services/test-helpers/mock/index.ts @@ -18,9 +18,9 @@ export * from './addresses'; export * from './mockApi'; export * from './mockApiBlock18468942'; export * from './mockApiBlock19772575'; +export * from './mockApiBlock22887036'; export * from './mockApiKusamaBlock22939322'; export * from './mockApiPolkadotBlock21157800'; -export * from './mockApiBlock22887036'; export * from './mockAssetHubKusamaApi'; export * from './mockAssetHubKusamaApiBlock3356195'; export * from './mockAssetHubKusamaApiBlock6202603'; @@ -34,8 +34,8 @@ export * from './mockBlock13641102'; export * from './mockBlock18468942'; export * from './mockBlock19772575'; export * from './mockBlock21157800'; -export * from './mockBlock22939322'; export * from './mockBlock21275366'; export * from './mockBlock22887036'; +export * from './mockBlock22939322'; export * from './mockBlockHashes'; export * from './transactions'; From 343f2cba9aba21b4fee155785955b4090e0b6805 Mon Sep 17 00:00:00 2001 From: Imod7 Date: Tue, 5 Nov 2024 16:43:12 +0100 Subject: [PATCH 20/26] abstracting logic into separate functions --- .../accounts/AccountsStakingInfoService.ts | 276 ++++++++++-------- 1 file changed, 152 insertions(+), 124 deletions(-) diff --git a/src/services/accounts/AccountsStakingInfoService.ts b/src/services/accounts/AccountsStakingInfoService.ts index 1b0c455b2..f28ab8c35 100644 --- a/src/services/accounts/AccountsStakingInfoService.ts +++ b/src/services/accounts/AccountsStakingInfoService.ts @@ -16,8 +16,14 @@ import type { ApiDecoration } from '@polkadot/api/types'; import { Option, u32, Vec } from '@polkadot/types'; -import { BlockHash, StakingLedger, StakingLedgerTo240 } from '@polkadot/types/interfaces'; -import type { SpStakingExposure, SpStakingPagedExposureMetadata } from '@polkadot/types/lookup'; +import { AccountId32, BlockHash, StakingLedger, StakingLedgerTo240 } from '@polkadot/types/interfaces'; +import type { + PalletStakingRewardDestination, + PalletStakingSlashingSlashingSpans, + PalletStakingStakingLedger, + SpStakingExposure, + SpStakingPagedExposureMetadata, +} from '@polkadot/types/lookup'; import { BadRequest, InternalServerError } from 'http-errors'; import { IAccountStakingInfo, IEraStatus, NominatorStatus, ValidatorStatus } from 'src/types/responses'; @@ -34,6 +40,7 @@ export class AccountsStakingInfoService extends AbstractService { const { api } = this; const historicApi = await api.at(hash); + // Fetching initial data const [header, controllerOption] = await Promise.all([ api.rpc.chain.getHeader(hash), historicApi.query.staking.bonded(stash), // Option representing the controller @@ -51,17 +58,14 @@ export class AccountsStakingInfoService extends AbstractService { } const controller = controllerOption.unwrap(); - - const [stakingLedgerOption, rewardDestination, slashingSpansOption] = await Promise.all([ - historicApi.query.staking.ledger(controller), - historicApi.query.staking.payee(stash), - historicApi.query.staking.slashingSpans(stash), - ]).catch((err: Error) => { - throw this.createHttpErrorForAddr(stash, err); - }); - + const [stakingLedgerOption, rewardDestination, slashingSpansOption] = await this.fetchStakingData( + historicApi, + controller, + stash, + ); const stakingLedger = stakingLedgerOption.unwrapOr(null); + // Checking if the account is a validator let isValidator = false; if (historicApi.query.session) { const validators = (await historicApi.query.session.validators()).toHuman() as string[]; @@ -75,71 +79,38 @@ export class AccountsStakingInfoService extends AbstractService { ); } - let nominations = null; - if (historicApi.query.staking.nominators) { - const nominationsOption = await historicApi.query.staking.nominators(stash); - nominations = nominationsOption.unwrapOr(null); - } + // Fetching the list of validators that a nominator is nominating. This is only relevant for nominators. + // The stash account that we use as key is the nominator's stash account. + // https://polkadot.js.org/docs/substrate/storage/#nominatorsaccountid32-optionpalletstakingnominations + const nominations = historicApi.query.staking.nominators + ? (await historicApi.query.staking.nominators(stash)).unwrapOr(null) + : null; - // Checking if rewards were claimed for each era + // Initializing two arrays to store the status of claimed rewards per era for validators and for nominators. let claimedRewards: IEraStatus[] = []; let claimedRewardsNom: IEraStatus[] = []; - // Defining for which range of eras to check if rewards were claimed - const depth = Number(api.consts.staking.historyDepth.toNumber()); - const currentEraMaybeOption = await historicApi.query.staking.currentEra(); - if (currentEraMaybeOption.isNone) { - throw new InternalServerError('CurrentEra is None when Some was expected'); - } - const currentEra = currentEraMaybeOption.unwrap().toNumber(); - const eraStart = currentEra - depth > 0 ? currentEra - depth : 0; + + const [eraStart, depth] = await this.fetchErasInfo(api, historicApi); + let oldCallChecked = false; // Checking each era one by one for (let e = eraStart; e < eraStart + depth; e++) { let claimedRewardsEras: u32[] = []; - // Checking first the old call of `lastReward` and setting as claimed only the era that - // is defined in the lastReward field. I do not make any assumptions for any other eras. - if ((stakingLedger as unknown as StakingLedgerTo240)?.lastReward) { - const lastReward = (stakingLedger as unknown as StakingLedgerTo240).lastReward; - if (lastReward.isSome) { - const e = (stakingLedger as unknown as StakingLedgerTo240)?.lastReward?.unwrap().toNumber(); - if (e) { - claimedRewards.push({ era: e, status: 'claimed' }); - } - } - // Second check is another old call called `legacyClaimedRewards` from stakingLedger - } else if (stakingLedger?.legacyClaimedRewards) { - claimedRewardsEras = stakingLedger?.legacyClaimedRewards; - // If none of the above are present, we try the `claimedRewards` from stakingLedger - } else { - claimedRewardsEras = (stakingLedger as unknown as StakingLedger)?.claimedRewards as Vec; - } + [claimedRewardsEras, claimedRewards] = this.fetchClaimedInfoFromOldCalls( + stakingLedger, + claimedRewardsEras, + claimedRewards, + ); + + [oldCallChecked, claimedRewards, e] = this.isOldCallsChecked( + oldCallChecked, + claimedRewardsEras, + claimedRewards, + eraStart, + e, + ); - /** - * Here we check if we already checked/used the info from the old calls. If not we will use them and - * populate the claimedRewards array with the eras that are claimed. The data from the old calls - * can also be empty (no results) and claimedRewards array will be populated with the data only from - * the new call `query.staking?.claimedRewards` further below. - */ - if (!oldCallChecked) { - if (claimedRewardsEras.length > 0) { - claimedRewards = claimedRewardsEras.map((element) => ({ - era: element.toNumber(), - status: 'claimed', - })); - const claimedRewardsErasMax = claimedRewardsEras[claimedRewardsEras.length - 1].toNumber(); - /** - * Added this check because from old calls sometimes I would get other eras than the ones I am checking. - * In that case, I need to check if the era is in the range I am checking. - */ - if (eraStart <= claimedRewardsErasMax) { - e = claimedRewardsErasMax + 1; - } else { - claimedRewards = []; - } - } - oldCallChecked = true; - } /** * If the old calls are checked (which means `oldCallChecked` flag is true) and the new call * `query.staking.claimedRewards` is available then we go into this check. @@ -203,6 +174,27 @@ export class AccountsStakingInfoService extends AbstractService { }; } + private async fetchStakingData( + historicApi: ApiDecoration<'promise'>, + controller: AccountId32, + stash: string, + ): Promise< + [ + Option, + Option, + Option, + ] + > { + const [stakingLedgerOption, rewardDestination, slashingSpansOption] = await Promise.all([ + historicApi.query.staking.ledger(controller) as unknown as Option, + historicApi.query.staking.payee(stash), + historicApi.query.staking.slashingSpans(stash), + ]).catch((err: Error) => { + throw this.createHttpErrorForAddr(stash, err); + }); + return [stakingLedgerOption, rewardDestination, slashingSpansOption]; + } + private async fetchErasStatusForValidator( historicApi: ApiDecoration<'promise'>, e: number, @@ -322,7 +314,6 @@ export class AccountsStakingInfoService extends AbstractService { } /** - * * This function takes a specific stash account and gives back the era and status of the rewards for that era. */ private async fetchErasFromOldCalls( @@ -334,7 +325,6 @@ export class AccountsStakingInfoService extends AbstractService { oldCallChecked: boolean, ): Promise<[number, IEraStatus[], boolean]> { let claimedRewardsEras: u32[] = []; - // SAME CODE AS IN MAIN FUNCTION - fetchAccountStakingInfo - const controllerOption = await historicApi.query.staking.bonded(validatorStash); if (controllerOption.isNone) { @@ -342,64 +332,23 @@ export class AccountsStakingInfoService extends AbstractService { } const controller = controllerOption.unwrap(); + const [stakingLedgerOption, ,] = await this.fetchStakingData(historicApi, controller, validatorStash); + const stakingLedgerValNom = stakingLedgerOption.unwrapOr(null); - const [stakingLedgerOption, rewardDestination, slashingSpansOption] = await Promise.all([ - historicApi.query.staking.ledger(controller), - historicApi.query.staking.payee(validatorStash), - historicApi.query.staking.slashingSpans(validatorStash), - ]).catch((err: Error) => { - throw this.createHttpErrorForAddr(validatorStash, err); - }); + [claimedRewardsEras, claimedRewards] = this.fetchClaimedInfoFromOldCalls( + stakingLedgerValNom, + claimedRewardsEras, + claimedRewards, + ) as [u32[], IEraStatus[]]; - const stakingLedgerValNom = stakingLedgerOption.unwrapOr(null); - rewardDestination; - slashingSpansOption; - stakingLedgerValNom; + [oldCallChecked, claimedRewards, e] = this.isOldCallsChecked( + oldCallChecked, + claimedRewardsEras, + claimedRewards, + eraStart, + e, + ) as [boolean, IEraStatus[], number]; - // --- END --- same code as in main method - // Checking first the old call of `lastReward` and setting as claimed only the era that - // is defined in the lastReward field. I do not make any assumptions for any other eras. - if ((stakingLedgerValNom as unknown as StakingLedgerTo240)?.lastReward) { - const lastReward = (stakingLedgerValNom as unknown as StakingLedgerTo240).lastReward; - if (lastReward.isSome) { - const e = (stakingLedgerValNom as unknown as StakingLedgerTo240)?.lastReward?.unwrap().toNumber(); - if (e) { - claimedRewards.push({ era: e, status: 'claimed' }); - } - } - // Second check is another old call called `legacyClaimedRewards` from stakingLedger - } else if (stakingLedgerValNom?.legacyClaimedRewards) { - claimedRewardsEras = stakingLedgerValNom?.legacyClaimedRewards; - // If none of the above are present, we try the `claimedRewards` from stakingLedger - } else { - claimedRewardsEras = (stakingLedgerValNom as unknown as StakingLedger)?.claimedRewards as Vec; - } - claimedRewardsEras; - /** - * Here we check if we already checked/used the info from the old calls. If not we will use them and - * populate the claimedRewards array with the eras that are claimed. The data from the old calls - * can also be empty (no results) and claimedRewards array will be populated with the data only from - * the new call `query.staking?.claimedRewards` further below. - */ - if (!oldCallChecked) { - if (claimedRewardsEras.length > 0) { - claimedRewards = claimedRewardsEras.map((element) => ({ - era: element.toNumber(), - status: 'claimed', - })); - const claimedRewardsErasMax = claimedRewardsEras[claimedRewardsEras.length - 1].toNumber(); - /** - * Added this check because from old calls sometimes I would get other eras than the ones I am checking. - * In that case, I need to check if the era is in the range I am checking. - */ - if (eraStart <= claimedRewardsErasMax) { - e = claimedRewardsErasMax + 1; - } else { - claimedRewards = []; - } - } - oldCallChecked = true; - } return [e, claimedRewards, oldCallChecked]; } @@ -437,4 +386,83 @@ export class AccountsStakingInfoService extends AbstractService { } return 'undefined'; } + + /** + * This function retrieves the eras information (eraStart and depth), + * which defines the range of eras to check if rewards were claimed or not. + */ + private async fetchErasInfo(api: ApiDecoration<'promise'>, historicApi: ApiDecoration<'promise'>) { + const depth = Number(api.consts.staking.historyDepth.toNumber()); + const currentEraMaybeOption = await historicApi.query.staking.currentEra(); + if (currentEraMaybeOption.isNone) { + throw new InternalServerError('CurrentEra is None when Some was expected'); + } + const currentEra = currentEraMaybeOption.unwrap().toNumber(); + const eraStart = currentEra - depth > 0 ? currentEra - depth : 0; + return [eraStart, depth]; + } + + /** + * This function verifies if the information from old calls has already been checked/used. If not, + * it proceeds to use it and populate the `claimedRewards` array with the eras that have been claimed. + * Note that data from old calls may also be empty (no results), in which case the `claimedRewards` array + * will only be populated with data from the new `query.staking?.claimedRewards` call + * (later in the main function's code). + * + * Returns a boolean flag `oldCallChecked` that indicates if the old calls have already been checked/used or not. + * + */ + private isOldCallsChecked( + oldCallChecked: boolean, + claimedRewardsEras: u32[], + claimedRewards: IEraStatus[], + eraStart: number, + e: number, + ): [boolean, IEraStatus[], number] { + if (!oldCallChecked) { + if (claimedRewardsEras.length > 0) { + claimedRewards = claimedRewardsEras.map((element) => ({ + era: element.toNumber(), + status: 'claimed', + })); + const claimedRewardsErasMax = claimedRewardsEras[claimedRewardsEras.length - 1].toNumber(); + /** + * This check was added because old calls would sometimes return eras outside the intended range. + * In such cases, I need to verify if the era falls within the specific range I am checking. + */ + if (eraStart <= claimedRewardsErasMax) { + e = claimedRewardsErasMax + 1; + } else { + claimedRewards = []; + } + } + oldCallChecked = true; + } + return [oldCallChecked, claimedRewards, e]; + } + + private fetchClaimedInfoFromOldCalls( + stakingLedger: PalletStakingStakingLedger | null, + claimedRewardsEras: u32[], + claimedRewards: IEraStatus[], + ): [u32[], IEraStatus[]] { + // Checking first the old call of `lastReward` and setting as claimed only the era that + // is defined in the lastReward field. I do not make any assumptions for any other eras. + if ((stakingLedger as unknown as StakingLedgerTo240)?.lastReward) { + const lastReward = (stakingLedger as unknown as StakingLedgerTo240).lastReward; + if (lastReward.isSome) { + const e = (stakingLedger as unknown as StakingLedgerTo240)?.lastReward?.unwrap().toNumber(); + if (e) { + claimedRewards.push({ era: e, status: 'claimed' }); + } + } + // Second check is another old call called `legacyClaimedRewards` from stakingLedger + } else if (stakingLedger?.legacyClaimedRewards) { + claimedRewardsEras = stakingLedger?.legacyClaimedRewards; + // If none of the above are present, we try the `claimedRewards` from stakingLedger + } else { + claimedRewardsEras = (stakingLedger as unknown as StakingLedger)?.claimedRewards as Vec; + } + return [claimedRewardsEras, claimedRewards]; + } } From af6f130411001d841456a5e883dc2266a3751f0b Mon Sep 17 00:00:00 2001 From: Imod7 Date: Mon, 6 Jan 2025 18:42:41 +0100 Subject: [PATCH 21/26] add implementation_details guide --- guides/STAKING_IMPLEMENTATION_DETAILS.md | 512 +++++++++++++++++++++++ guides/media/response.png | Bin 0 -> 52498 bytes guides/media/staking-lastRewardNew.png | Bin 0 -> 68617 bytes guides/media/staking-lastRewardOld.png | Bin 0 -> 71284 bytes 4 files changed, 512 insertions(+) create mode 100644 guides/STAKING_IMPLEMENTATION_DETAILS.md create mode 100644 guides/media/response.png create mode 100644 guides/media/staking-lastRewardNew.png create mode 100644 guides/media/staking-lastRewardOld.png diff --git a/guides/STAKING_IMPLEMENTATION_DETAILS.md b/guides/STAKING_IMPLEMENTATION_DETAILS.md new file mode 100644 index 000000000..b62c94cc7 --- /dev/null +++ b/guides/STAKING_IMPLEMENTATION_DETAILS.md @@ -0,0 +1,512 @@ +# Implementation Details of Claimed Rewards +This document outlines the implementation details for the `claimed` field returned by Sidecar's `/accounts/{accountId}/staking-info` endpoint (related [PR](https://github.com/paritytech/substrate-api-sidecar/pull/1445/files)). + +Helper guide in this [HackMd](https://hackmd.io/@LwMsxe3-SFmNXxugAXOKgg/ryPwFoezyl). + +## Description +In Sidecar, the `/accounts/{accountId}/staking-info` endpoint ([docs](https://paritytech.github.io/substrate-api-sidecar/dist/)) takes two parameters: +- a stash account (required field): this can be a validator's account or a nominator's account. +- a block height (optional - default latest block): based on the height, the corresponding eras are returned. + +One of the fields returned in the response by this endpoint is the `claimedRewards` information. + +## `claimedRewards` field +The `claimedRewards` field shows the status of the rewards per era for the requested stash account, which can be either a validator or a nominator, at the requested block height. An example is shown in the screenshot below: + +![claimed field](./media/response.png "claimed field in Staking Info") + +The **possible** rewards status values that can appear in every era vary based on whether it is a Validator or a Nominator account. +All valid status values are defined in the [AccountStakingInfo.ts](https://github.com/paritytech/substrate-api-sidecar/blob/master/src/types/responses/AccountStakingInfo.ts) file. + +## Calls Checked +The calls we check to define if the queried Stash account claimed its rewards for the queried block/era are the following: +1. lastReward : `(stakingLedger as unknown as StakingLedgerTo240)?.lastReward` +2. legacyClaimedRewards : `stakingLedger?.legacyClaimedRewards` +3. `stakingLedger as unknown as StakingLedger)?.claimedRewards` +4. `query.staking.claimedRewards` + +### Old Logic vs New Logic +At this point, it is important to mention the calls that correspond to the old logic vs the call of the new logic. +- The first three calls reflect the old logic, so they are used for queried eras prior to the implementation of the new logic. They are checked in the `fetchClaimedInfoFromOldCalls` function. + - ✅ The code is the same regardless of whether the account is a validator or a nominator. +- The last call, `query.staking.claimedRewards`, which reflects the new logic for how rewards are claimed, can be found in `fetchAccountStakingInfo` and `fetchErasStatusForNominator` functions. + - ❗There are some important code differences depending on whether it is a validator or a nominator account. + +**IMPORTANT NOTE** + +In the following sections, we mention the old logic calls (1st & 2nd check), but the focus is primarily on the new logic (from the `query.staking.claimedRewards` call / 3rd check), explaining how it works and pinpointing the corresponding changes in the `StakingInfo` code. + +### Depth & Eras +First we need to calculate for how many eras we need to check if the rewards were claimed or not (`fetchErasInfo` function). For this we use the `depth` and `current_era` information to calculate `eraStart`. Having that, we can start from `eraStart` until `eraStart + depth` and perform the following checks. + + +### 1st Check +In early blocks/eras, under `stakingLedger` there is `lastReward` instead of `claimedRewards`. In this case, we set as `claimed` the era mentioned in the `lastReward`. + +**EXAMPLE** + +If `lastReward` == `552` then we return in the response: +``` +claimedRewards: [ + ... + { + era: 552, + status : claimed + } + ... +] +``` + +This is tested in the existing Kusama historical test (after it was updated accordingly) for: +- block height : 1500000 and +- stash account : `HP8qJ8P4u4W2QgsJ8jzVuSsjfFTT6orQomFD6eTRSGEbiTK` + +#### Field Name in Response +Before this change, when `lastReward` was available we were returning in the response the field named as `lastReward` instead of `claimedRewards`. ([Link](https://kusama-public-sidecar.parity-chains.parity.io/accounts/HP8qJ8P4u4W2QgsJ8jzVuSsjfFTT6orQomFD6eTRSGEbiTK/staking-info?at=1500000)) + + +![lastReward](./media/staking-lastRewardOld.png "lastReward field in staking response") + + +This has been changed so that we always have the same name in the specific field of the response, `claimedRewards` and of course the structure + + +![lastReward](./media/staking-lastRewardNew.png "claimedRewards field in staking response") + + +### 2nd Check +- If `stakingLedger.legacyClaimedRewards` call is available, retrieve `claimed` information from that call +- If **not**, retrieve `claimed` info from `stakingLedger.claimedRewards` +- The resulting output is an array of all eras claimed up to that block height which we then transformed into the final output format which is an array of objects of type: + +``` +claimedRewards: [ + ... + { + era: eraNumber, + status : claimed + } + ... +] +``` + +**NOTE** : The 2 calls mentioned above are per specific block height and stash account. + +### 3rd Check +Then, independently of the previous check, check also: +- If `query.staking.claimedRewards` call is available + - If yes, then retrieve the `claimed` information from that call but only for the eras that we are still missing and complete the missing info. + - If the call is not available, no additional check is performed beyond the previous check. + +**NOTE 1** : this call is per specific block height, era and stash account. + +**NOTE 2** : the logic changes slightly depending on whether the queried account is a validator (`fetchErasStatusForValidator` function) or a nominator (`fetchErasStatusForNominator` function). + +## Logic per Account Type +First we need to check if the stash account queried is a Validator or a Nominator on the specified era. + +### Validator Account +If the account queried in the endpoint is a `validator` account, the logic implemented is described in the following subsections. + +#### 💰 Reward Types +A validator receives two types of reward: +1. the reward for their own stake/contribution +1. the reward(s) for the commission(s) + +##### Reward for own stake +This is paid in the first page. + +##### Reward(s) for commission(s) +A validator can have one or more pages displaying its nominators. For each page, the validator receives a commission so the total commission is the sum of the commissions from all pages. Hence the total commission is paid out when all pages are claimed. + +❓Why the total commission is not paid out all at once but in parts/per page? +- So that the validator has incentive to pay out all the pages. + +#### 🚦 Possible status values +The possible reward status values of `claimed` for a Validator account are the following: +- `unclaimed` +- `partially claimed` +- `claimed` +- `undefined` + +#### Setting the Status for Each Era +Here is how each of the above statuses is determined for each era. To make it easier, let's assume that a validator has 3 pages of nominators. + +#### status: `unclaimed` +If in the queried era, no page is claimed then the status of this era is `unclaimed`. + +#### status: `partially claimed` +If in the queried era, only the first page of nominators is claimed (so page `0`, since page indexing starts from `0`), this means the following: +- two types of rewards are claimed: the "_reward of validator's own stake_" + "_reward from first page commission_". +- so one out of the three pages are claimed. +- so the status of this era is `partially claimed` since there are two more pages to be claimed still. + +If in the queried era, the first AND the second page is claimed, this means: +- only the "_reward from second page commission_" is paid out. The reward for the validator's own stake is disregarded (relevant code [here](https://github.com/paritytech/polkadot-sdk/blame/master/substrate/frame/staking/src/lib.rs#L1115)) since it was paid when the first page was claimed. +- the status is still `partially claimed` since there is one more page to be claimed. + +#### status: `claimed` +If in the queried era, all nominators pages are claimed (so in our example all three pages): +- the status of the era is `claimed` + +#### Status recap +So, for a validator's rewards we have 3 potential statuses (with the new calls): +- `unclaimed` if no pages were claimed. +- `partially claimed` if some of the pages were claimed. +- `claimed` if all pages of `erasStakersPaged` were claimed. +- `undefined` if we are referring in early eras where we cannot define if the reward was claimed. + +#### Logic implemented in the code +This code can be found in the `fetchErasStatusForValidator` function. For each era: +- If `staking.erasStakersOverview.pageCount` == `query.staking.claimedRewards` -> then we set the queried era as `claimed` +- If `staking.erasStakersOverview.pageCount` != `query.staking.claimedRewards. length` -> we set the era as `partially claimed` +- If `overview == null` && `erasStakers > 0` -> this means that `pageCount` = 1 + - so then it depends again on the `query.staking.claimedRewards` value to see if era `claimed` or `unclaimed`. +- The resulting output is the same as in the 1st check, e.g. `{ "era": "6453", "status": "claimed" },` +*** _Note : the output from `query.staking.claimedRewards` is of format `[0]` if only one page was claimed or `[0, 1]` if 2 pages were claimed depending on how many pages the stakers of the specific validator are split into (shown from `staking.erasStakersOverview.pageCount`)._ + +#### Useful Resource +The payout for the validator in polkadot-sdk codebase is done [here](https://github.com/paritytech/polkadot-sdk/blob/776e95748901b50ff2833a7d27ea83fd91fbf9d1/substrate/frame/staking/src/pallet/impls.rs#L357). + + +### Nominator Account +If the account queried in the endpoint is a `nominator` account, the logic implemented is described in the following subsections. + +#### 💰 Reward Types +A nominator receives one type of reward: +1. the reward for their own stake/contribution + +#### 🚦 Possible status values +The possible rewards status values of `claimed` for a Nominator account are the following: +- `unclaimed` +- `claimed` +- `undefined` + +#### Logic implemented in the code +The logic is implemented in the `fetchErasStatusForNominator` function. + +## Different Cases +### Case `staking.erasStakersOverview.pageCount` == `staking.claimedRewards.length` +This is the case when +- Validator has + - 1 or more pages of nominators (`erasStakersOverview` -> `pageCount`) per era and + - these pages are equal to the length of the contents found in `claimedRewards` array +### Example +- Account `DteShXKaQQy2un2VizKwwhViN5e7F47UrkAZDkxgK22LdBv` - [subscan](https://kusama.subscan.io/validator/DteShXKaQQy2un2VizKwwhViN5e7F47UrkAZDkxgK22LdBv?tab=reward) +- Era `6577` in Kusama chain +- at block = `23032300` +- block hash = `0xf9362e71ed123c3a057b75bce389a4c0758ad405556125fee00529569a433898` +- [pjs apps](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fkusama-rpc.dwellir.com#/chainstate) + - `staking.claimedRewards` = `[0]` + - `staking.erasStakersOverview.pageCount` = `1` + +![stak1](https://github.com/paritytech/substrate-api-sidecar/assets/12569221/d74c3f04-9aca-42c7-88f0-c31c2fb88838) + + +- Sidecar `http://127.0.0.1:8080/accounts/DteShXKaQQy2un2VizKwwhViN5e7F47UrkAZDkxgK22LdBv/staking-info?at=23032300` + - Era `6577` - Claimed +### Case Handled +This case is handled by setting queried era as claimed. + +### Case `staking.erasStakersOverview.pageCount` != `staking.claimedRewards.length` +This is the case when a validator has multiple pages of nominators and only some of these pages were claimed. +### Example +- Account [11VR4pF6c7kfBhfmuwwjWY3FodeYBKWx7ix2rsRCU2q6hqJ](https://polkadot.subscan.io/validator/11VR4pF6c7kfBhfmuwwjWY3FodeYBKWx7ix2rsRCU2q6hqJ?tab=reward) +- Era `1470` in Polkadot chain +- [pjs apps](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.dotters.network%2Fpolkadot#/chainstate) + - era `1468` + - at block = 21157800 + - block hash = `0x59de258cf9999635c866df7bc5f397d152892827f887d3629344cb3cebba134f` +- claimedRewards = `[0]` +- erasStakersOverview = 2 + +- Sidecar `http://127.0.0.1:8080/accounts/11VR4pF6c7kfBhfmuwwjWY3FodeYBKWx7ix2rsRCU2q6hqJ/staking-info?at=21157800` + - Era `1468` - `Partially Claimed` + +### Case handled +This case is handled currently by setting queried era as **partially claimed**. + +### Case `staking.erasStakersOverview` = `null` & `staking.claimedRewards` = `[0]` +This is a case where `staking.erasStakersOverview` is `null` so the information about the `pageCount` (in how many pages the stakers are divided into) needs to be retrieved from `erasStakers` and then compare it with `staking.claimedRewards`. +### Example +- Account [F2VckTExmProzJnwNaN3YVqDoBPS1LyNVmyG8HUAygtDV3T](https://kusama.subscan.io/reward?address=F2VckTExmProzJnwNaN3YVqDoBPS1LyNVmyG8HUAygtDV3T&role=validator&category=Reward&page=9) +- [pjs apps](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.dotters.network%2Fpolkadot#/chainstate) + - era `6513` in Kusama chain + - at block = 22939322 + - block hash = `0x1ef674fffb042c9016987e0e3995a36401a7e2b66e0b6c0bb111a0b049857098` +- claimedRewards = `[0]` +- erasStakersOverview = `null` + +![Screenshot 2024-06-13 at 11 14 36](https://github.com/paritytech/substrate-api-sidecar/assets/12569221/550d77e8-142e-41bc-8491-f1467aa17a56) + +- Sidecar `http://127.0.0.1:8080/accounts/F2VckTExmProzJnwNaN3YVqDoBPS1LyNVmyG8HUAygtDV3T/staking-info?at=22939322` + - Era `6513` - `Claimed` + +### Case handled +This case is handled by checking if `erasStakers > 0` (hence pageCount == 1) && `staking.claimedRewards` is equal to `[0]` (hence length is 1) -> which is true for era `6513` so era is set to `claimed`. + +### Case `staking.erasStakersOverview` = `null` & `erasStakers` = 0 +Based on this [comment](https://github.com/polkadot-js/api/issues/5859#issuecomment-2077011825), exposure is not found so we cannot conclude in a status for this specific era. An example is the below request in which only 48 eras are returned since for the rest 36 -> `staking.erasStakersOverview` = `null` & `erasStakers` = 0. + +### Response (old code) +`http://127.0.0.1:8080/accounts/CmjHFdR59QAZMuyjDF5Sn4mwTgGbKMH2cErUFuf6UT51UwS/staking-info?at=22869643` + +``` +{ + "at": { + ... + ... + "staking": { + ... + ... + "legacyClaimedRewards": [ + "6462", + "6463", + "6467", + "6468", + "6469", + "6470", + "6471", + "6472", + "6473", + "6474", + "6495", + "6496", + "6497", + "6498", + "6499", + "6503", + "6504", + "6505", + "6506", + "6507", + "6508", + "6509", + "6510", + "6511", + "6512" + ] + } +} +``` + +### Response (new code) +``` +{ + "at": { + "hash": "0xa43364b7a138ec47bd80f09e480a1599f622405add19c6c0913624ab0bb0a96e", + "height": "22869643" + ... + ... + "staking": { + ... + ... + "claimedRewards": [ + { + "era": "6462", + "status": "claimed" + }, + { + "era": "6463", + "status": "claimed" + }, + { + "era": "6467", + "status": "claimed" + }, + { + "era": "6468", + "status": "claimed" + }, + { + "era": "6469", + "status": "claimed" + }, + { + "era": "6470", + "status": "claimed" + }, + { + "era": "6471", + "status": "claimed" + }, + { + "era": "6472", + "status": "claimed" + }, + { + "era": "6473", + "status": "claimed" + }, + { + "era": "6474", + "status": "claimed" + }, + { + "era": "6495", + "status": "claimed" + }, + { + "era": "6496", + "status": "claimed" + }, + { + "era": "6497", + "status": "claimed" + }, + { + "era": "6498", + "status": "claimed" + }, + { + "era": "6499", + "status": "claimed" + }, + { + "era": "6503", + "status": "claimed" + }, + { + "era": "6504", + "status": "claimed" + }, + { + "era": "6505", + "status": "claimed" + }, + { + "era": "6506", + "status": "claimed" + }, + { + "era": "6507", + "status": "claimed" + }, + { + "era": "6508", + "status": "claimed" + }, + { + "era": "6509", + "status": "claimed" + }, + { + "era": "6510", + "status": "claimed" + }, + { + "era": "6511", + "status": "claimed" + }, + { + "era": "6512", + "status": "claimed" + }, + { + "era": "6513", + "status": "claimed" + }, + { + "era": "6514", + "status": "claimed" + }, + { + "era": "6515", + "status": "claimed" + }, + { + "era": "6516", + "status": "claimed" + }, + { + "era": "6517", + "status": "claimed" + }, + { + "era": "6518", + "status": "claimed" + }, + { + "era": "6519", + "status": "claimed" + }, + { + "era": "6520", + "status": "claimed" + }, + { + "era": "6521", + "status": "claimed" + }, + { + "era": "6522", + "status": "claimed" + }, + { + "era": "6523", + "status": "claimed" + }, + { + "era": "6524", + "status": "claimed" + }, + { + "era": "6525", + "status": "claimed" + }, + { + "era": "6526", + "status": "claimed" + }, + { + "era": "6527", + "status": "claimed" + }, + { + "era": "6528", + "status": "unclaimed" + }, + { + "era": "6529", + "status": "unclaimed" + }, + { + "era": "6530", + "status": "unclaimed" + }, + { + "era": "6531", + "status": "unclaimed" + }, + { + "era": "6532", + "status": "unclaimed" + }, + { + "era": "6533", + "status": "unclaimed" + }, + { + "era": "6534", + "status": "unclaimed" + }, + { + "era": "6535", + "status": "unclaimed" + } + ] + } +} +``` + + +### Testing +- [x] Tested for account and blocks that include the eras before and after the migration (when the logic changed). + +### 🗒️ Implementation Notes +- ‼️ The response time of the endpoint is significantly slower now. + - Possible Solution : Add a query parameter as flag to enable or not the claimed rewards. It can default to `true` so that it does not break the current functionality of the endpoint. Implementation in a separate PR. +- I use current era (and not active era) to calculate the depth. +- The total of eras returned are equal to the current depth. Depending on the calls available it is either : + - `current era - depth` if only the new calls are available or + - `array.length` from result of old calls up until depth. So if `array.length` = 20 and `depth` = 84, we will check 64 more eras after the last era found in the array (from the old calls). diff --git a/guides/media/response.png b/guides/media/response.png new file mode 100644 index 0000000000000000000000000000000000000000..f23d703cb56ae048d820e0a9d0dad14507bdc696 GIT binary patch literal 52498 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�%HZUQQ~M;q&^OG+z6D@+PeWn%3WTe|3^^zmmkj; zNDMwu-yNWM>WqZNU?2&u<(Lh$JWkm3G&xRsjS0$9p(YBq+1c+Vvuj@XcdzC_dL{(v3q;(jTSI}~`x z6pnxj+N}UL6fGuHD>_#6GM7&|86uHblCqq`S5ir_kjL9Q8d^~bI?p{ge8Z;EFt;oP z5&#ky*jEgN5 zBb=Ka*3NLt{F1KXL$b_?3<%t_KCY4oQT4ha7Gh*+*M9JE(SeDSY~Aj*cnFzX=uh_* zTs$TgGCnRY+Hl}rxyF3`^T^2c76xn@ug{(;d#tY-n;Qfb@A$)vtmbf4pJY@4G<2dX zfdiQEgmHUuwo^D$NW6dDj9J6E9Hd=N)9VjJ3?oP0IkOscV^0oQ07|xu5G)1ghAo=C zoQlqIT#0QN<`*5qdcVBN4sWaERy-n;g@ne)fTEHE*WP=x&+)z_W;?H-&=4-aNu`jORp zv`xRAG2eHEpP@^hW@*nV=ckV(9TTVJ@bRw;Rc&F|p(uR+QTBiY{`I>PYYmhcznm#3a zKyGo6wo|>Wz!2NFkJUhjK6^5G%S3)1_++Jsnu+3MJB^ zTFfc7$>^!(Wxcu5mc{Op1rgGfJHh$GA|bdPyTP18ZMZ_6a#{WzdPatGavr)S>Yyb0 zKa9h+>peNsvSu%7o@_)1I07=CcJr#2K^Jv2JrTEnNZ@%#PIJxF5KEdfy<8qwDTi9L zE4_Am&yF@)#gDjXzf~N+-@vi&i2q||dwh37qqQTNy%MItr93Z?&ms$~IvBvCzIudP z7PdkqqQStHHU|65fcPrV9xhJl{dbq^q3uuo+!&g;51RpXsO< z{6xKc(QT2x-M{g!sJ8}4H=Ju#C}E3Btd&NM<_gweeE0B#12o;P`31SOgB6-MqsM## zKY9@DUqXy-$=oq#gl&YI0K@dug_+pTlQCw!W`D8XX94CfVAlIu5{7i97KVI2!%r7e zxu`4Geu@S*=aTv@g2v!K(=eweWZ?5h_Pv|N(Q;ChULB@CU}H0+Op8+Q*k&&zl4gZS zZmy}K`hIwEOuu{3lu5T45Rv6Lkrw7o2Xo5$uOcJc8_KRE@kH`cpOm$ zyglmr^b1U`ON4%AW-54&el=yh$72qV{+gcfUPc7R;wH->xOOZ>z(ltA=~cqqTD!jt zd4~W;iX7#BqKlL~$YE)0oivcvZrnqK3WnT%Q*+u|fAXYob(b)Ww^HjU={iNx#C`Hi z*j>klm}Mkb=Bai+1qa#vy%~MM+Rq(5)d5G|mGd;=vNS$uqacs0_0P>p+w2Avcc7$= zK$;Wm2T@ew&mXgb-R+E|y=lRnh;Uc&(yT6vHsrsHczI5GM7ocVt6;##gd>dA#}acm zpMLJ$5fBhSx;`?1DZFfxD26Z;{R5GCf&42AmxPW!3?#X}cB?On!}Gr9iP`XmcPg4R zsr=y2=C(Ug`jJe(M(K^kTw*7DIF9ZJw*W6Q_{qp55Z2Dy3YwKMl%0rk6*S6XG7 zhbiKWW#S=gTRBT7;*&b}nphAX_Kc1Wj!M=sX7Mu%&8^Y+$y(c*cv_0`P|^lorKA1!|e7;4n0d$lS9sAGRRceJeYknRHSpO{>(a@(tWZu>)>GdXzy@jyCH-> zQ&Ls`^3!;AU)m5I5K(J2Aab{ECn4`$pN`HD)zMG&1#{R*ML}_pM8mr9b#P=y-*q>>khMGk5m-#{Q ztHOnN!ufb{0WrQ?AvPB`0xFB`bzPU}1n}_WZ328M4X^$a1#f2R&_8HdeJwOD7Z(?q z&M^i1-Ul2_c?Ac#WdE|o>K{`IFdIS^F;jrO2#%T~6er5Bl|6eHznFZoGthJAjQZaZ zGH`Y9{QM4cR9u5l$*NATSa*RYbfEgs2Mt23KcYkQ*mff-zCf9ni&$y;YalS$bfFuD z`3XVcEnV)% zR{Z|XkA~mdTiSGG2|b;Itt-=>mW^YJD0RucvhpwHHZfgvRNWrg zuL}-M##d_*7mpk@J(at;8MpnwI(gIUQqC;zu|zc?1eu2;+CVRjM5u%}CGwvG%P&kS zOA_s4V~c!PL^>W7|J~2=VJsQ$_3-N>cmsb*7UKqYLffM^l^kx{W}8$?8&k3 z$W6fDpZl6F2hYO>weg5_Z_%XlrEbpHRb+w1b4y~?-k{^3t0MJA6A1HVRKBTGt=7%f zaY*#a94%|P7fvu(@yBJe_JEe?P0}w&$w<&wODq~+0+hqMX$G8B6cXAZX7Bm7pMs7b z^|THXDtt$Qv%(Ped&IT|sN{?=A@p;U{D;`PheKg8ct!>GS(Zv=lwtz8B4vegU0B-H z%Ar+^t7*UTPGCYnnk@+pjY`jiu#h2T_-NU(8QX`H$g17*nD3^*`-)290U5Ipaf07_ z5R7e*E5L-Tt5NZD@C)$ZnreweA)lXD=hCe0n~N$FxpP>#v1yIh4_?9h4HC8AiP$?( zeAQ=($>>eQcPE9y!b*gNQ$HKm06uDB7_)!*eJtK$qLL4(Xo+CX&E2nu)%wCTRj>1Tze%8vj5 literal 0 HcmV?d00001 From f0c3e3f489d89f3121ca5a2260223c94b0b8290a Mon Sep 17 00:00:00 2001 From: Imod7 Date: Mon, 6 Jan 2025 18:47:43 +0100 Subject: [PATCH 22/26] remove docs dist --- docs/dist/app.bundle.js | 13603 -------------------------------------- 1 file changed, 13603 deletions(-) delete mode 100644 docs/dist/app.bundle.js diff --git a/docs/dist/app.bundle.js b/docs/dist/app.bundle.js deleted file mode 100644 index e119cef17..000000000 --- a/docs/dist/app.bundle.js +++ /dev/null @@ -1,13603 +0,0 @@ -/* - * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). - * This devtool is neither made for production nor for readable output files. - * It uses "eval()" calls to create a separate source file in the browser devtools. - * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) - * or disable the default devtool with "devtool: false". - * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). - */ -/******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ "./node_modules/@braintree/sanitize-url/dist/constants.js": -/*!****************************************************************!*\ - !*** ./node_modules/@braintree/sanitize-url/dist/constants.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.BLANK_URL = exports.relativeFirstCharacters = exports.whitespaceEscapeCharsRegex = exports.urlSchemeRegex = exports.ctrlCharactersRegex = exports.htmlCtrlEntityRegex = exports.htmlEntitiesRegex = exports.invalidProtocolRegex = void 0;\nexports.invalidProtocolRegex = /^([^\\w]*)(javascript|data|vbscript)/im;\nexports.htmlEntitiesRegex = /&#(\\w+)(^\\w|;)?/g;\nexports.htmlCtrlEntityRegex = /&(newline|tab);/gi;\nexports.ctrlCharactersRegex = /[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim;\nexports.urlSchemeRegex = /^.+(:|:)/gim;\nexports.whitespaceEscapeCharsRegex = /(\\\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;\nexports.relativeFirstCharacters = [\".\", \"/\"];\nexports.BLANK_URL = \"about:blank\";\n\n\n//# sourceURL=webpack://sidecar-swagger-ui/./node_modules/@braintree/sanitize-url/dist/constants.js?"); - -/***/ }), - -/***/ "./node_modules/@braintree/sanitize-url/dist/index.js": -/*!************************************************************!*\ - !*** ./node_modules/@braintree/sanitize-url/dist/index.js ***! - \************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.sanitizeUrl = void 0;\nvar constants_1 = __webpack_require__(/*! ./constants */ \"./node_modules/@braintree/sanitize-url/dist/constants.js\");\nfunction isRelativeUrlWithoutProtocol(url) {\n return constants_1.relativeFirstCharacters.indexOf(url[0]) > -1;\n}\n// adapted from https://stackoverflow.com/a/29824550/2601552\nfunction decodeHtmlCharacters(str) {\n var removedNullByte = str.replace(constants_1.ctrlCharactersRegex, \"\");\n return removedNullByte.replace(constants_1.htmlEntitiesRegex, function (match, dec) {\n return String.fromCharCode(dec);\n });\n}\nfunction decodeURI(uri) {\n try {\n return decodeURIComponent(uri);\n }\n catch (e) {\n // Ignoring error\n // It is possible that the URI contains a `%` not associated\n // with URI/URL-encoding.\n return uri;\n }\n}\nfunction sanitizeUrl(url) {\n if (!url) {\n return constants_1.BLANK_URL;\n }\n var charsToDecode;\n var decodedUrl = decodeURI(url);\n do {\n decodedUrl = decodeHtmlCharacters(decodedUrl)\n .replace(constants_1.htmlCtrlEntityRegex, \"\")\n .replace(constants_1.ctrlCharactersRegex, \"\")\n .replace(constants_1.whitespaceEscapeCharsRegex, \"\")\n .trim();\n decodedUrl = decodeURI(decodedUrl);\n charsToDecode =\n decodedUrl.match(constants_1.ctrlCharactersRegex) ||\n decodedUrl.match(constants_1.htmlEntitiesRegex) ||\n decodedUrl.match(constants_1.htmlCtrlEntityRegex) ||\n decodedUrl.match(constants_1.whitespaceEscapeCharsRegex);\n } while (charsToDecode && charsToDecode.length > 0);\n var sanitizedUrl = decodedUrl;\n if (!sanitizedUrl) {\n return constants_1.BLANK_URL;\n }\n if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {\n return sanitizedUrl;\n }\n var urlSchemeParseResults = sanitizedUrl.match(constants_1.urlSchemeRegex);\n if (!urlSchemeParseResults) {\n return sanitizedUrl;\n }\n var urlScheme = urlSchemeParseResults[0];\n if (constants_1.invalidProtocolRegex.test(urlScheme)) {\n return constants_1.BLANK_URL;\n }\n return sanitizedUrl;\n}\nexports.sanitizeUrl = sanitizeUrl;\n\n\n//# sourceURL=webpack://sidecar-swagger-ui/./node_modules/@braintree/sanitize-url/dist/index.js?"); - -/***/ }), - -/***/ "./node_modules/autolinker/dist/es2015/anchor-tag-builder.js": -/*!*******************************************************************!*\ - !*** ./node_modules/autolinker/dist/es2015/anchor-tag-builder.js ***! - \*******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AnchorTagBuilder: () => (/* binding */ AnchorTagBuilder)\n/* harmony export */ });\n/* harmony import */ var _html_tag__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./html-tag */ \"./node_modules/autolinker/dist/es2015/html-tag.js\");\n/* harmony import */ var _truncate_truncate_smart__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./truncate/truncate-smart */ \"./node_modules/autolinker/dist/es2015/truncate/truncate-smart.js\");\n/* harmony import */ var _truncate_truncate_middle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./truncate/truncate-middle */ \"./node_modules/autolinker/dist/es2015/truncate/truncate-middle.js\");\n/* harmony import */ var _truncate_truncate_end__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./truncate/truncate-end */ \"./node_modules/autolinker/dist/es2015/truncate/truncate-end.js\");\n\n\n\n\n/**\n * @protected\n * @class Autolinker.AnchorTagBuilder\n * @extends Object\n *\n * Builds anchor (<a>) tags for the Autolinker utility when a match is\n * found.\n *\n * Normally this class is instantiated, configured, and used internally by an\n * {@link Autolinker} instance, but may actually be used indirectly in a\n * {@link Autolinker#replaceFn replaceFn} to create {@link Autolinker.HtmlTag HtmlTag}\n * instances which may be modified before returning from the\n * {@link Autolinker#replaceFn replaceFn}. For example:\n *\n * var html = Autolinker.link( \"Test google.com\", {\n * replaceFn : function( match ) {\n * var tag = match.buildTag(); // returns an {@link Autolinker.HtmlTag} instance\n * tag.setAttr( 'rel', 'nofollow' );\n *\n * return tag;\n * }\n * } );\n *\n * // generated html:\n * // Test google.com\n */\nvar AnchorTagBuilder = /** @class */ (function () {\n /**\n * @method constructor\n * @param {Object} [cfg] The configuration options for the AnchorTagBuilder instance, specified in an Object (map).\n */\n function AnchorTagBuilder(cfg) {\n if (cfg === void 0) { cfg = {}; }\n /**\n * @cfg {Boolean} newWindow\n * @inheritdoc Autolinker#newWindow\n */\n this.newWindow = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Object} truncate\n * @inheritdoc Autolinker#truncate\n */\n this.truncate = {}; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {String} className\n * @inheritdoc Autolinker#className\n */\n this.className = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n this.newWindow = cfg.newWindow || false;\n this.truncate = cfg.truncate || {};\n this.className = cfg.className || '';\n }\n /**\n * Generates the actual anchor (<a>) tag to use in place of the\n * matched text, via its `match` object.\n *\n * @param {Autolinker.match.Match} match The Match instance to generate an\n * anchor tag from.\n * @return {Autolinker.HtmlTag} The HtmlTag instance for the anchor tag.\n */\n AnchorTagBuilder.prototype.build = function (match) {\n return new _html_tag__WEBPACK_IMPORTED_MODULE_0__.HtmlTag({\n tagName: 'a',\n attrs: this.createAttrs(match),\n innerHtml: this.processAnchorText(match.getAnchorText())\n });\n };\n /**\n * Creates the Object (map) of the HTML attributes for the anchor (<a>)\n * tag being generated.\n *\n * @protected\n * @param {Autolinker.match.Match} match The Match instance to generate an\n * anchor tag from.\n * @return {Object} A key/value Object (map) of the anchor tag's attributes.\n */\n AnchorTagBuilder.prototype.createAttrs = function (match) {\n var attrs = {\n 'href': match.getAnchorHref() // we'll always have the `href` attribute\n };\n var cssClass = this.createCssClass(match);\n if (cssClass) {\n attrs['class'] = cssClass;\n }\n if (this.newWindow) {\n attrs['target'] = \"_blank\";\n attrs['rel'] = \"noopener noreferrer\"; // Issue #149. See https://mathiasbynens.github.io/rel-noopener/\n }\n if (this.truncate) {\n if (this.truncate.length && this.truncate.length < match.getAnchorText().length) {\n attrs['title'] = match.getAnchorHref();\n }\n }\n return attrs;\n };\n /**\n * Creates the CSS class that will be used for a given anchor tag, based on\n * the `matchType` and the {@link #className} config.\n *\n * Example returns:\n *\n * - \"\" // no {@link #className}\n * - \"myLink myLink-url\" // url match\n * - \"myLink myLink-email\" // email match\n * - \"myLink myLink-phone\" // phone match\n * - \"myLink myLink-hashtag\" // hashtag match\n * - \"myLink myLink-mention myLink-twitter\" // mention match with Twitter service\n *\n * @protected\n * @param {Autolinker.match.Match} match The Match instance to generate an\n * anchor tag from.\n * @return {String} The CSS class string for the link. Example return:\n * \"myLink myLink-url\". If no {@link #className} was configured, returns\n * an empty string.\n */\n AnchorTagBuilder.prototype.createCssClass = function (match) {\n var className = this.className;\n if (!className) {\n return \"\";\n }\n else {\n var returnClasses = [className], cssClassSuffixes = match.getCssClassSuffixes();\n for (var i = 0, len = cssClassSuffixes.length; i < len; i++) {\n returnClasses.push(className + '-' + cssClassSuffixes[i]);\n }\n return returnClasses.join(' ');\n }\n };\n /**\n * Processes the `anchorText` by truncating the text according to the\n * {@link #truncate} config.\n *\n * @private\n * @param {String} anchorText The anchor tag's text (i.e. what will be\n * displayed).\n * @return {String} The processed `anchorText`.\n */\n AnchorTagBuilder.prototype.processAnchorText = function (anchorText) {\n anchorText = this.doTruncate(anchorText);\n return anchorText;\n };\n /**\n * Performs the truncation of the `anchorText` based on the {@link #truncate}\n * option. If the `anchorText` is longer than the length specified by the\n * {@link #truncate} option, the truncation is performed based on the\n * `location` property. See {@link #truncate} for details.\n *\n * @private\n * @param {String} anchorText The anchor tag's text (i.e. what will be\n * displayed).\n * @return {String} The truncated anchor text.\n */\n AnchorTagBuilder.prototype.doTruncate = function (anchorText) {\n var truncate = this.truncate;\n if (!truncate || !truncate.length)\n return anchorText;\n var truncateLength = truncate.length, truncateLocation = truncate.location;\n if (truncateLocation === 'smart') {\n return (0,_truncate_truncate_smart__WEBPACK_IMPORTED_MODULE_1__.truncateSmart)(anchorText, truncateLength);\n }\n else if (truncateLocation === 'middle') {\n return (0,_truncate_truncate_middle__WEBPACK_IMPORTED_MODULE_2__.truncateMiddle)(anchorText, truncateLength);\n }\n else {\n return (0,_truncate_truncate_end__WEBPACK_IMPORTED_MODULE_3__.truncateEnd)(anchorText, truncateLength);\n }\n };\n return AnchorTagBuilder;\n}());\n\n\n//# sourceMappingURL=anchor-tag-builder.js.map\n\n\n//# sourceURL=webpack://sidecar-swagger-ui/./node_modules/autolinker/dist/es2015/anchor-tag-builder.js?"); - -/***/ }), - -/***/ "./node_modules/autolinker/dist/es2015/autolinker.js": -/*!***********************************************************!*\ - !*** ./node_modules/autolinker/dist/es2015/autolinker.js ***! - \***********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ \"./node_modules/autolinker/dist/es2015/utils.js\");\n/* harmony import */ var _anchor_tag_builder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./anchor-tag-builder */ \"./node_modules/autolinker/dist/es2015/anchor-tag-builder.js\");\n/* harmony import */ var _match_match__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./match/match */ \"./node_modules/autolinker/dist/es2015/match/match.js\");\n/* harmony import */ var _match_email_match__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./match/email-match */ \"./node_modules/autolinker/dist/es2015/match/email-match.js\");\n/* harmony import */ var _match_hashtag_match__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./match/hashtag-match */ \"./node_modules/autolinker/dist/es2015/match/hashtag-match.js\");\n/* harmony import */ var _match_mention_match__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./match/mention-match */ \"./node_modules/autolinker/dist/es2015/match/mention-match.js\");\n/* harmony import */ var _match_phone_match__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./match/phone-match */ \"./node_modules/autolinker/dist/es2015/match/phone-match.js\");\n/* harmony import */ var _match_url_match__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./match/url-match */ \"./node_modules/autolinker/dist/es2015/match/url-match.js\");\n/* harmony import */ var _matcher_matcher__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./matcher/matcher */ \"./node_modules/autolinker/dist/es2015/matcher/matcher.js\");\n/* harmony import */ var _html_tag__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./html-tag */ \"./node_modules/autolinker/dist/es2015/html-tag.js\");\n/* harmony import */ var _matcher_email_matcher__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./matcher/email-matcher */ \"./node_modules/autolinker/dist/es2015/matcher/email-matcher.js\");\n/* harmony import */ var _matcher_url_matcher__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./matcher/url-matcher */ \"./node_modules/autolinker/dist/es2015/matcher/url-matcher.js\");\n/* harmony import */ var _matcher_hashtag_matcher__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./matcher/hashtag-matcher */ \"./node_modules/autolinker/dist/es2015/matcher/hashtag-matcher.js\");\n/* harmony import */ var _matcher_phone_matcher__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./matcher/phone-matcher */ \"./node_modules/autolinker/dist/es2015/matcher/phone-matcher.js\");\n/* harmony import */ var _matcher_mention_matcher__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./matcher/mention-matcher */ \"./node_modules/autolinker/dist/es2015/matcher/mention-matcher.js\");\n/* harmony import */ var _htmlParser_parse_html__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./htmlParser/parse-html */ \"./node_modules/autolinker/dist/es2015/htmlParser/parse-html.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * @class Autolinker\n * @extends Object\n *\n * Utility class used to process a given string of text, and wrap the matches in\n * the appropriate anchor (<a>) tags to turn them into links.\n *\n * Any of the configuration options may be provided in an Object provided\n * to the Autolinker constructor, which will configure how the {@link #link link()}\n * method will process the links.\n *\n * For example:\n *\n * var autolinker = new Autolinker( {\n * newWindow : false,\n * truncate : 30\n * } );\n *\n * var html = autolinker.link( \"Joe went to www.yahoo.com\" );\n * // produces: 'Joe went to yahoo.com'\n *\n *\n * The {@link #static-link static link()} method may also be used to inline\n * options into a single call, which may be more convenient for one-off uses.\n * For example:\n *\n * var html = Autolinker.link( \"Joe went to www.yahoo.com\", {\n * newWindow : false,\n * truncate : 30\n * } );\n * // produces: 'Joe went to yahoo.com'\n *\n *\n * ## Custom Replacements of Links\n *\n * If the configuration options do not provide enough flexibility, a {@link #replaceFn}\n * may be provided to fully customize the output of Autolinker. This function is\n * called once for each URL/Email/Phone#/Hashtag/Mention (Twitter, Instagram, Soundcloud)\n * match that is encountered.\n *\n * For example:\n *\n * var input = \"...\"; // string with URLs, Email Addresses, Phone #s, Hashtags, and Mentions (Twitter, Instagram, Soundcloud)\n *\n * var linkedText = Autolinker.link( input, {\n * replaceFn : function( match ) {\n * console.log( \"href = \", match.getAnchorHref() );\n * console.log( \"text = \", match.getAnchorText() );\n *\n * switch( match.getType() ) {\n * case 'url' :\n * console.log( \"url: \", match.getUrl() );\n *\n * if( match.getUrl().indexOf( 'mysite.com' ) === -1 ) {\n * var tag = match.buildTag(); // returns an `Autolinker.HtmlTag` instance, which provides mutator methods for easy changes\n * tag.setAttr( 'rel', 'nofollow' );\n * tag.addClass( 'external-link' );\n *\n * return tag;\n *\n * } else {\n * return true; // let Autolinker perform its normal anchor tag replacement\n * }\n *\n * case 'email' :\n * var email = match.getEmail();\n * console.log( \"email: \", email );\n *\n * if( email === \"my@own.address\" ) {\n * return false; // don't auto-link this particular email address; leave as-is\n * } else {\n * return; // no return value will have Autolinker perform its normal anchor tag replacement (same as returning `true`)\n * }\n *\n * case 'phone' :\n * var phoneNumber = match.getPhoneNumber();\n * console.log( phoneNumber );\n *\n * return '' + phoneNumber + '';\n *\n * case 'hashtag' :\n * var hashtag = match.getHashtag();\n * console.log( hashtag );\n *\n * return '' + hashtag + '';\n *\n * case 'mention' :\n * var mention = match.getMention();\n * console.log( mention );\n *\n * return '' + mention + '';\n * }\n * }\n * } );\n *\n *\n * The function may return the following values:\n *\n * - `true` (Boolean): Allow Autolinker to replace the match as it normally\n * would.\n * - `false` (Boolean): Do not replace the current match at all - leave as-is.\n * - Any String: If a string is returned from the function, the string will be\n * used directly as the replacement HTML for the match.\n * - An {@link Autolinker.HtmlTag} instance, which can be used to build/modify\n * an HTML tag before writing out its HTML text.\n */\nvar Autolinker = /** @class */ (function () {\n /**\n * @method constructor\n * @param {Object} [cfg] The configuration options for the Autolinker instance,\n * specified in an Object (map).\n */\n function Autolinker(cfg) {\n if (cfg === void 0) { cfg = {}; }\n /**\n * The Autolinker version number exposed on the instance itself.\n *\n * Ex: 0.25.1\n */\n this.version = Autolinker.version;\n /**\n * @cfg {Boolean/Object} [urls]\n *\n * `true` if URLs should be automatically linked, `false` if they should not\n * be. Defaults to `true`.\n *\n * Examples:\n *\n * urls: true\n *\n * // or\n *\n * urls: {\n * schemeMatches : true,\n * wwwMatches : true,\n * tldMatches : true\n * }\n *\n * As shown above, this option also accepts an Object form with 3 properties\n * to allow for more customization of what exactly gets linked. All default\n * to `true`:\n *\n * @cfg {Boolean} [urls.schemeMatches] `true` to match URLs found prefixed\n * with a scheme, i.e. `http://google.com`, or `other+scheme://google.com`,\n * `false` to prevent these types of matches.\n * @cfg {Boolean} [urls.wwwMatches] `true` to match urls found prefixed with\n * `'www.'`, i.e. `www.google.com`. `false` to prevent these types of\n * matches. Note that if the URL had a prefixed scheme, and\n * `schemeMatches` is true, it will still be linked.\n * @cfg {Boolean} [urls.tldMatches] `true` to match URLs with known top\n * level domains (.com, .net, etc.) that are not prefixed with a scheme or\n * `'www.'`. This option attempts to match anything that looks like a URL\n * in the given text. Ex: `google.com`, `asdf.org/?page=1`, etc. `false`\n * to prevent these types of matches.\n */\n this.urls = {}; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} [email=true]\n *\n * `true` if email addresses should be automatically linked, `false` if they\n * should not be.\n */\n this.email = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} [phone=true]\n *\n * `true` if Phone numbers (\"(555)555-5555\") should be automatically linked,\n * `false` if they should not be.\n */\n this.phone = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean/String} [hashtag=false]\n *\n * A string for the service name to have hashtags (ex: \"#myHashtag\")\n * auto-linked to. The currently-supported values are:\n *\n * - 'twitter'\n * - 'facebook'\n * - 'instagram'\n *\n * Pass `false` to skip auto-linking of hashtags.\n */\n this.hashtag = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {String/Boolean} [mention=false]\n *\n * A string for the service name to have mentions (ex: \"@myuser\")\n * auto-linked to. The currently supported values are:\n *\n * - 'twitter'\n * - 'instagram'\n * - 'soundcloud'\n *\n * Defaults to `false` to skip auto-linking of mentions.\n */\n this.mention = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} [newWindow=true]\n *\n * `true` if the links should open in a new window, `false` otherwise.\n */\n this.newWindow = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean/Object} [stripPrefix=true]\n *\n * `true` if 'http://' (or 'https://') and/or the 'www.' should be stripped\n * from the beginning of URL links' text, `false` otherwise. Defaults to\n * `true`.\n *\n * Examples:\n *\n * stripPrefix: true\n *\n * // or\n *\n * stripPrefix: {\n * scheme : true,\n * www : true\n * }\n *\n * As shown above, this option also accepts an Object form with 2 properties\n * to allow for more customization of what exactly is prevented from being\n * displayed. Both default to `true`:\n *\n * @cfg {Boolean} [stripPrefix.scheme] `true` to prevent the scheme part of\n * a URL match from being displayed to the user. Example:\n * `'http://google.com'` will be displayed as `'google.com'`. `false` to\n * not strip the scheme. NOTE: Only an `'http://'` or `'https://'` scheme\n * will be removed, so as not to remove a potentially dangerous scheme\n * (such as `'file://'` or `'javascript:'`)\n * @cfg {Boolean} [stripPrefix.www] www (Boolean): `true` to prevent the\n * `'www.'` part of a URL match from being displayed to the user. Ex:\n * `'www.google.com'` will be displayed as `'google.com'`. `false` to not\n * strip the `'www'`.\n */\n this.stripPrefix = { scheme: true, www: true }; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} [stripTrailingSlash=true]\n *\n * `true` to remove the trailing slash from URL matches, `false` to keep\n * the trailing slash.\n *\n * Example when `true`: `http://google.com/` will be displayed as\n * `http://google.com`.\n */\n this.stripTrailingSlash = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} [decodePercentEncoding=true]\n *\n * `true` to decode percent-encoded characters in URL matches, `false` to keep\n * the percent-encoded characters.\n *\n * Example when `true`: `https://en.wikipedia.org/wiki/San_Jos%C3%A9` will\n * be displayed as `https://en.wikipedia.org/wiki/San_José`.\n */\n this.decodePercentEncoding = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Number/Object} [truncate=0]\n *\n * ## Number Form\n *\n * A number for how many characters matched text should be truncated to\n * inside the text of a link. If the matched text is over this number of\n * characters, it will be truncated to this length by adding a two period\n * ellipsis ('..') to the end of the string.\n *\n * For example: A url like 'http://www.yahoo.com/some/long/path/to/a/file'\n * truncated to 25 characters might look something like this:\n * 'yahoo.com/some/long/pat..'\n *\n * Example Usage:\n *\n * truncate: 25\n *\n *\n * Defaults to `0` for \"no truncation.\"\n *\n *\n * ## Object Form\n *\n * An Object may also be provided with two properties: `length` (Number) and\n * `location` (String). `location` may be one of the following: 'end'\n * (default), 'middle', or 'smart'.\n *\n * Example Usage:\n *\n * truncate: { length: 25, location: 'middle' }\n *\n * @cfg {Number} [truncate.length=0] How many characters to allow before\n * truncation will occur. Defaults to `0` for \"no truncation.\"\n * @cfg {\"end\"/\"middle\"/\"smart\"} [truncate.location=\"end\"]\n *\n * - 'end' (default): will truncate up to the number of characters, and then\n * add an ellipsis at the end. Ex: 'yahoo.com/some/long/pat..'\n * - 'middle': will truncate and add the ellipsis in the middle. Ex:\n * 'yahoo.com/s..th/to/a/file'\n * - 'smart': for URLs where the algorithm attempts to strip out unnecessary\n * parts first (such as the 'www.', then URL scheme, hash, etc.),\n * attempting to make the URL human-readable before looking for a good\n * point to insert the ellipsis if it is still too long. Ex:\n * 'yahoo.com/some..to/a/file'. For more details, see\n * {@link Autolinker.truncate.TruncateSmart}.\n */\n this.truncate = { length: 0, location: 'end' }; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {String} className\n *\n * A CSS class name to add to the generated links. This class will be added\n * to all links, as well as this class plus match suffixes for styling\n * url/email/phone/hashtag/mention links differently.\n *\n * For example, if this config is provided as \"myLink\", then:\n *\n * - URL links will have the CSS classes: \"myLink myLink-url\"\n * - Email links will have the CSS classes: \"myLink myLink-email\", and\n * - Phone links will have the CSS classes: \"myLink myLink-phone\"\n * - Hashtag links will have the CSS classes: \"myLink myLink-hashtag\"\n * - Mention links will have the CSS classes: \"myLink myLink-mention myLink-[type]\"\n * where [type] is either \"instagram\", \"twitter\" or \"soundcloud\"\n */\n this.className = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Function} replaceFn\n *\n * A function to individually process each match found in the input string.\n *\n * See the class's description for usage.\n *\n * The `replaceFn` can be called with a different context object (`this`\n * reference) using the {@link #context} cfg.\n *\n * This function is called with the following parameter:\n *\n * @cfg {Autolinker.match.Match} replaceFn.match The Match instance which\n * can be used to retrieve information about the match that the `replaceFn`\n * is currently processing. See {@link Autolinker.match.Match} subclasses\n * for details.\n */\n this.replaceFn = null; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Object} context\n *\n * The context object (`this` reference) to call the `replaceFn` with.\n *\n * Defaults to this Autolinker instance.\n */\n this.context = undefined; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} [sanitizeHtml=false]\n *\n * `true` to HTML-encode the start and end brackets of existing HTML tags found\n * in the input string. This will escape `<` and `>` characters to `<` and\n * `>`, respectively.\n *\n * Setting this to `true` will prevent XSS (Cross-site Scripting) attacks,\n * but will remove the significance of existing HTML tags in the input string. If\n * you would like to maintain the significance of existing HTML tags while also\n * making the output HTML string safe, leave this option as `false` and use a\n * tool like https://github.com/cure53/DOMPurify (or others) on the input string\n * before running Autolinker.\n */\n this.sanitizeHtml = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @private\n * @property {Autolinker.matcher.Matcher[]} matchers\n *\n * The {@link Autolinker.matcher.Matcher} instances for this Autolinker\n * instance.\n *\n * This is lazily created in {@link #getMatchers}.\n */\n this.matchers = null;\n /**\n * @private\n * @property {Autolinker.AnchorTagBuilder} tagBuilder\n *\n * The AnchorTagBuilder instance used to build match replacement anchor tags.\n * Note: this is lazily instantiated in the {@link #getTagBuilder} method.\n */\n this.tagBuilder = null;\n // Note: when `this.something` is used in the rhs of these assignments,\n // it refers to the default values set above the constructor\n this.urls = this.normalizeUrlsCfg(cfg.urls);\n this.email = typeof cfg.email === 'boolean' ? cfg.email : this.email;\n this.phone = typeof cfg.phone === 'boolean' ? cfg.phone : this.phone;\n this.hashtag = cfg.hashtag || this.hashtag;\n this.mention = cfg.mention || this.mention;\n this.newWindow = typeof cfg.newWindow === 'boolean' ? cfg.newWindow : this.newWindow;\n this.stripPrefix = this.normalizeStripPrefixCfg(cfg.stripPrefix);\n this.stripTrailingSlash = typeof cfg.stripTrailingSlash === 'boolean' ? cfg.stripTrailingSlash : this.stripTrailingSlash;\n this.decodePercentEncoding = typeof cfg.decodePercentEncoding === 'boolean' ? cfg.decodePercentEncoding : this.decodePercentEncoding;\n this.sanitizeHtml = cfg.sanitizeHtml || false;\n // Validate the value of the `mention` cfg\n var mention = this.mention;\n if (mention !== false && mention !== 'twitter' && mention !== 'instagram' && mention !== 'soundcloud') {\n throw new Error(\"invalid `mention` cfg - see docs\");\n }\n // Validate the value of the `hashtag` cfg\n var hashtag = this.hashtag;\n if (hashtag !== false && hashtag !== 'twitter' && hashtag !== 'facebook' && hashtag !== 'instagram') {\n throw new Error(\"invalid `hashtag` cfg - see docs\");\n }\n this.truncate = this.normalizeTruncateCfg(cfg.truncate);\n this.className = cfg.className || this.className;\n this.replaceFn = cfg.replaceFn || this.replaceFn;\n this.context = cfg.context || this;\n }\n /**\n * Automatically links URLs, Email addresses, Phone Numbers, Twitter handles,\n * Hashtags, and Mentions found in the given chunk of HTML. Does not link URLs\n * found within HTML tags.\n *\n * For instance, if given the text: `You should go to http://www.yahoo.com`,\n * then the result will be `You should go to <a href=\"http://www.yahoo.com\">http://www.yahoo.com</a>`\n *\n * Example:\n *\n * var linkedText = Autolinker.link( \"Go to google.com\", { newWindow: false } );\n * // Produces: \"Go to google.com\"\n *\n * @static\n * @param {String} textOrHtml The HTML or text to find matches within (depending\n * on if the {@link #urls}, {@link #email}, {@link #phone}, {@link #mention},\n * {@link #hashtag}, and {@link #mention} options are enabled).\n * @param {Object} [options] Any of the configuration options for the Autolinker\n * class, specified in an Object (map). See the class description for an\n * example call.\n * @return {String} The HTML text, with matches automatically linked.\n */\n Autolinker.link = function (textOrHtml, options) {\n var autolinker = new Autolinker(options);\n return autolinker.link(textOrHtml);\n };\n /**\n * Parses the input `textOrHtml` looking for URLs, email addresses, phone\n * numbers, username handles, and hashtags (depending on the configuration\n * of the Autolinker instance), and returns an array of {@link Autolinker.match.Match}\n * objects describing those matches (without making any replacements).\n *\n * Note that if parsing multiple pieces of text, it is slightly more efficient\n * to create an Autolinker instance, and use the instance-level {@link #parse}\n * method.\n *\n * Example:\n *\n * var matches = Autolinker.parse( \"Hello google.com, I am asdf@asdf.com\", {\n * urls: true,\n * email: true\n * } );\n *\n * console.log( matches.length ); // 2\n * console.log( matches[ 0 ].getType() ); // 'url'\n * console.log( matches[ 0 ].getUrl() ); // 'google.com'\n * console.log( matches[ 1 ].getType() ); // 'email'\n * console.log( matches[ 1 ].getEmail() ); // 'asdf@asdf.com'\n *\n * @static\n * @param {String} textOrHtml The HTML or text to find matches within\n * (depending on if the {@link #urls}, {@link #email}, {@link #phone},\n * {@link #hashtag}, and {@link #mention} options are enabled).\n * @param {Object} [options] Any of the configuration options for the Autolinker\n * class, specified in an Object (map). See the class description for an\n * example call.\n * @return {Autolinker.match.Match[]} The array of Matches found in the\n * given input `textOrHtml`.\n */\n Autolinker.parse = function (textOrHtml, options) {\n var autolinker = new Autolinker(options);\n return autolinker.parse(textOrHtml);\n };\n /**\n * Normalizes the {@link #urls} config into an Object with 3 properties:\n * `schemeMatches`, `wwwMatches`, and `tldMatches`, all Booleans.\n *\n * See {@link #urls} config for details.\n *\n * @private\n * @param {Boolean/Object} urls\n * @return {Object}\n */\n Autolinker.prototype.normalizeUrlsCfg = function (urls) {\n if (urls == null)\n urls = true; // default to `true`\n if (typeof urls === 'boolean') {\n return { schemeMatches: urls, wwwMatches: urls, tldMatches: urls };\n }\n else { // object form\n return {\n schemeMatches: typeof urls.schemeMatches === 'boolean' ? urls.schemeMatches : true,\n wwwMatches: typeof urls.wwwMatches === 'boolean' ? urls.wwwMatches : true,\n tldMatches: typeof urls.tldMatches === 'boolean' ? urls.tldMatches : true\n };\n }\n };\n /**\n * Normalizes the {@link #stripPrefix} config into an Object with 2\n * properties: `scheme`, and `www` - both Booleans.\n *\n * See {@link #stripPrefix} config for details.\n *\n * @private\n * @param {Boolean/Object} stripPrefix\n * @return {Object}\n */\n Autolinker.prototype.normalizeStripPrefixCfg = function (stripPrefix) {\n if (stripPrefix == null)\n stripPrefix = true; // default to `true`\n if (typeof stripPrefix === 'boolean') {\n return { scheme: stripPrefix, www: stripPrefix };\n }\n else { // object form\n return {\n scheme: typeof stripPrefix.scheme === 'boolean' ? stripPrefix.scheme : true,\n www: typeof stripPrefix.www === 'boolean' ? stripPrefix.www : true\n };\n }\n };\n /**\n * Normalizes the {@link #truncate} config into an Object with 2 properties:\n * `length` (Number), and `location` (String).\n *\n * See {@link #truncate} config for details.\n *\n * @private\n * @param {Number/Object} truncate\n * @return {Object}\n */\n Autolinker.prototype.normalizeTruncateCfg = function (truncate) {\n if (typeof truncate === 'number') {\n return { length: truncate, location: 'end' };\n }\n else { // object, or undefined/null\n return (0,_utils__WEBPACK_IMPORTED_MODULE_0__.defaults)(truncate || {}, {\n length: Number.POSITIVE_INFINITY,\n location: 'end'\n });\n }\n };\n /**\n * Parses the input `textOrHtml` looking for URLs, email addresses, phone\n * numbers, username handles, and hashtags (depending on the configuration\n * of the Autolinker instance), and returns an array of {@link Autolinker.match.Match}\n * objects describing those matches (without making any replacements).\n *\n * This method is used by the {@link #link} method, but can also be used to\n * simply do parsing of the input in order to discover what kinds of links\n * there are and how many.\n *\n * Example usage:\n *\n * var autolinker = new Autolinker( {\n * urls: true,\n * email: true\n * } );\n *\n * var matches = autolinker.parse( \"Hello google.com, I am asdf@asdf.com\" );\n *\n * console.log( matches.length ); // 2\n * console.log( matches[ 0 ].getType() ); // 'url'\n * console.log( matches[ 0 ].getUrl() ); // 'google.com'\n * console.log( matches[ 1 ].getType() ); // 'email'\n * console.log( matches[ 1 ].getEmail() ); // 'asdf@asdf.com'\n *\n * @param {String} textOrHtml The HTML or text to find matches within\n * (depending on if the {@link #urls}, {@link #email}, {@link #phone},\n * {@link #hashtag}, and {@link #mention} options are enabled).\n * @return {Autolinker.match.Match[]} The array of Matches found in the\n * given input `textOrHtml`.\n */\n Autolinker.prototype.parse = function (textOrHtml) {\n var _this = this;\n var skipTagNames = ['a', 'style', 'script'], skipTagsStackCount = 0, // used to only Autolink text outside of anchor/script/style tags. We don't want to autolink something that is already linked inside of an tag, for instance\n matches = [];\n // Find all matches within the `textOrHtml` (but not matches that are\n // already nested within ,