[ { "inputs": [], "name": "UIntOutOfBounds", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "AdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint192", "name": "oldBasketsNeeded", "type": "uint192" }, { "indexed": false, "internalType": "uint192", "name": "newBasketsNeeded", "type": "uint192" } ], "name": "BasketsNeededChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "beacon", "type": "address" } ], "name": "BeaconUpgraded", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "issuer", "type": "address" }, { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint192", "name": "baskets", "type": "uint192" } ], "name": "Issuance", "type": "event" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "uint256", "name": "amtRate", "type": "uint256" }, { "internalType": "uint192", "name": "pctRate", "type": "uint192" } ], "indexed": false, "internalType": "struct ThrottleLib.Params", "name": "oldVal", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "amtRate", "type": "uint256" }, { "internalType": "uint192", "name": "pctRate", "type": "uint192" } ], "indexed": false, "internalType": "struct ThrottleLib.Params", "name": "newVal", "type": "tuple" } ], "name": "IssuanceThrottleSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Melted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "redeemer", "type": "address" }, { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint192", "name": "baskets", "type": "uint192" } ], "name": "Redemption", "type": "event" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "uint256", "name": "amtRate", "type": "uint256" }, { "internalType": "uint192", "name": "pctRate", "type": "uint192" } ], "indexed": false, "internalType": "struct ThrottleLib.Params", "name": "oldVal", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "amtRate", "type": "uint256" }, { "internalType": "uint192", "name": "pctRate", "type": "uint192" } ], "indexed": false, "internalType": "struct ThrottleLib.Params", "name": "newVal", "type": "tuple" } ], "name": "RedemptionThrottleSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_EXCHANGE_RATE", "outputs": [ { "internalType": "uint192", "name": "", "type": "uint192" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_THROTTLE_PCT_AMT", "outputs": [ { "internalType": "uint192", "name": "", "type": "uint192" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_THROTTLE_RATE_AMT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MIN_EXCHANGE_RATE", "outputs": [ { "internalType": "uint192", "name": "", "type": "uint192" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MIN_THROTTLE_RATE_AMT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "basketsNeeded", "outputs": [ { "internalType": "uint192", "name": "", "type": "uint192" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "dissolve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IMain", "name": "main_", "type": "address" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "string", "name": "mandate_", "type": "string" }, { "components": [ { "internalType": "uint256", "name": "amtRate", "type": "uint256" }, { "internalType": "uint192", "name": "pctRate", "type": "uint192" } ], "internalType": "struct ThrottleLib.Params", "name": "issuanceThrottleParams_", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "amtRate", "type": "uint256" }, { "internalType": "uint192", "name": "pctRate", "type": "uint192" } ], "internalType": "struct ThrottleLib.Params", "name": "redemptionThrottleParams_", "type": "tuple" } ], "name": "init", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "issuanceAvailable", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "issuanceThrottleParams", "outputs": [ { "components": [ { "internalType": "uint256", "name": "amtRate", "type": "uint256" }, { "internalType": "uint192", "name": "pctRate", "type": "uint192" } ], "internalType": "struct ThrottleLib.Params", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "issue", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "issueTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "main", "outputs": [ { "internalType": "contract IMain", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mandate", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amtRToken", "type": "uint256" } ], "name": "melt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint192", "name": "baskets", "type": "uint192" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20", "name": "erc20", "type": "address" } ], "name": "monetizeDonations", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "redeem", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint48[]", "name": "basketNonces", "type": "uint48[]" }, { "internalType": "uint192[]", "name": "portions", "type": "uint192[]" }, { "internalType": "address[]", "name": "expectedERC20sOut", "type": "address[]" }, { "internalType": "uint256[]", "name": "minAmounts", "type": "uint256[]" } ], "name": "redeemCustom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "redeemTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "redemptionAvailable", "outputs": [ { "internalType": "uint256", "name": "available", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "redemptionThrottleParams", "outputs": [ { "components": [ { "internalType": "uint256", "name": "amtRate", "type": "uint256" }, { "internalType": "uint192", "name": "pctRate", "type": "uint192" } ], "internalType": "struct ThrottleLib.Params", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint192", "name": "basketsNeeded_", "type": "uint192" } ], "name": "setBasketsNeeded", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint256", "name": "amtRate", "type": "uint256" }, { "internalType": "uint192", "name": "pctRate", "type": "uint192" } ], "internalType": "struct ThrottleLib.Params", "name": "params", "type": "tuple" } ], "name": "setIssuanceThrottleParams", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint256", "name": "amtRate", "type": "uint256" }, { "internalType": "uint192", "name": "pctRate", "type": "uint192" } ], "internalType": "struct ThrottleLib.Params", "name": "params", "type": "tuple" } ], "name": "setRedemptionThrottleParams", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" } ]
60a0604052306080523480156200001557600080fd5b50600054610100900460ff1615808015620000375750600054600160ff909116105b80620000535750303b15801562000053575060005460ff166001145b620000bb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000df576000805461ff0019166101001790555b801562000126576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506080516156fc6200015f6000396000818161118f015281816111cf0152818161131f0152818161135f01526113f201526156fc6000f3fe6080604052600436106102675760003560e01c806372b8b05111610144578063aeb14bf6116100b6578063db006a751161007a578063db006a7514610778578063dd62ed3e14610798578063ddc95876146107b8578063dffeadd0146107fd578063f17d835c14610835578063f90b2bfe1461085557600080fd5b8063aeb14bf6146106e0578063b32deb3d14610700578063cc872b6614610720578063d505accf14610740578063d6122e921461076057600080fd5b80638e31ab2e116101085780638e31ab2e146105ec57806395d89b41146106515780639926020b14610666578063a16e15321461067b578063a457c2d7146106a0578063a9059cbb146106c057600080fd5b806372b8b0511461054f5780637ecebe001461056f5780637f2d27b91461058f57806384b0196e146105a45780638c83ed33146105cc57600080fd5b806339509351116101dd57806354fd4d50116101a157806354fd4d501461046a5780635beafb3d1461049857806363965449146104b85780636b2ba67d146104d857806370a08231146104f85780637121c2731461052e57600080fd5b806339509351146103ed57806339b1b96d1461040d5780634b35073f146104225780634f1ef2861461044257806352d1902d1461045557600080fd5b806323282f6e1161022f57806323282f6e1461032857806323b872dd1461035c5780632f7605fb1461037c578063313ce5671461039c5780633644e515146103b85780633659cfe6146103cd57600080fd5b806306fdde031461026c578063095ea7b3146102975780630b0e54d0146102c75780631207f0c1146102f157806318160ddd14610313575b600080fd5b34801561027857600080fd5b50610281610875565b60405161028e919061479e565b60405180910390f35b3480156102a357600080fd5b506102b76102b23660046147d6565b610907565b604051901515815260200161028e565b3480156102d357600080fd5b506102e3670de0b6b3a764000081565b60405190815260200161028e565b3480156102fd57600080fd5b5061031161030c3660046147d6565b610921565b005b34801561031f57600080fd5b5060cb546102e3565b34801561033457600080fd5b50610344670de0b6b3a764000081565b6040516001600160c01b03909116815260200161028e565b34801561036857600080fd5b506102b7610377366004614802565b610d38565b34801561038857600080fd5b506103116103973660046147d6565b610d5c565b3480156103a857600080fd5b506040516012815260200161028e565b3480156103c457600080fd5b506102e3611176565b3480156103d957600080fd5b506103116103e8366004614843565b611185565b3480156103f957600080fd5b506102b76104083660046147d6565b611264565b34801561041957600080fd5b50610281611286565b34801561042e57600080fd5b506103446b033b2e3c9fd0803ce800000081565b6103116104503660046148a7565b611315565b34801561046157600080fd5b506102e36113e5565b34801561047657600080fd5b506040805180820190915260058152640332e342e360dc1b6020820152610281565b3480156104a457600080fd5b506103116104b3366004614961565b611498565b3480156104c457600080fd5b506103116104d3366004614992565b6116ee565b3480156104e457600080fd5b506103116104f3366004614b76565b611955565b34801561050457600080fd5b506102e3610513366004614843565b6001600160a01b0316600090815260c9602052604090205490565b34801561053a57600080fd5b5061016654610344906001600160c01b031681565b34801561055b57600080fd5b5061031161056a366004614961565b6120de565b34801561057b57600080fd5b506102e361058a366004614843565b61232f565b34801561059b57600080fd5b506102e361234e565b3480156105b057600080fd5b506105b9612371565b60405161028e9796959493929190614c3c565b3480156105d857600080fd5b506103116105e7366004614cd2565b61240f565b3480156105f857600080fd5b506040805180820182526000808252602091820152815180830190925261016b54825261016c546001600160c01b0316908201525b60408051825181526020928301516001600160c01b0316928101929092520161028e565b34801561065d57600080fd5b5061028161249c565b34801561067257600080fd5b506102e36124ab565b34801561068757600080fd5b506102e36daf298d050e4395d69670b12b7f4160301b81565b3480156106ac57600080fd5b506102b76106bb3660046147d6565b6124e3565b3480156106cc57600080fd5b506102b76106db3660046147d6565b61255e565b3480156106ec57600080fd5b506103116106fb366004614992565b61256c565b34801561070c57600080fd5b5061031161071b366004614843565b6125c0565b34801561072c57600080fd5b5061031161073b366004614cd2565b6127b5565b34801561074c57600080fd5b5061031161075b366004614ceb565b6127bf565b34801561076c57600080fd5b50610344633b9aca0081565b34801561078457600080fd5b50610311610793366004614cd2565b6128ae565b3480156107a457600080fd5b506102e36107b3366004614d62565b6128b8565b3480156107c457600080fd5b5060408051808201825260008082526020918201528151808301909252610167548252610168546001600160c01b03169082015261062d565b34801561080957600080fd5b5060975461081d906001600160a01b031681565b6040516001600160a01b03909116815260200161028e565b34801561084157600080fd5b50610311610850366004614ddd565b6128e3565b34801561086157600080fd5b50610311610870366004614cd2565b612dd9565b606060cc805461088490614ead565b80601f01602080910402602001604051908101604052809291908181526020018280546108b090614ead565b80156108fd5780601f106108d2576101008083540402835291602001916108fd565b820191906000526020600020905b8154815290600101906020018083116108e057829003601f168201915b5050505050905090565b600033610915818585612e10565b60019150505b92915050565b609760009054906101000a90046001600160a01b03166001600160a01b03166375a8f9266040518163ffffffff1660e01b8152600401602060405180830381865afa158015610974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109989190614ee1565b156109ea5760405162461bcd60e51b815260206004820152601960248201527f66726f7a656e206f722069737375616e6365207061757365640000000000000060448201526064015b60405180910390fd5b80600003610a2e5760405162461bcd60e51b815260206004820152601160248201527043616e6e6f74206973737565207a65726f60781b60448201526064016109e1565b61016260009054906101000a90046001600160a01b03166001600160a01b031663f8ac93e86040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a7f57600080fd5b505af1158015610a93573d6000803e3d6000fd5b505050506000610aa03390565b905061016360009054906101000a90046001600160a01b03166001600160a01b031663a094a0316040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1a9190614ee1565b610b595760405162461bcd60e51b815260206004820152601060248201526f6261736b6574206e6f7420726561647960801b60448201526064016109e1565b6000610b6460cb5490565b9050610b736101678285612f34565b610b8a81610b8085614f19565b61016b9190612f34565b600081600003610ba257610b9d8461303e565b610bbc565b61016654610bbc906001600160c01b031685846002613068565b9050846001600160a01b0316836001600160a01b03167f93a73b97592126fd663d485c98f8a174c1d701035545e71ac88a05b71d6ad4ef8684604051610c159291909182526001600160c01b0316602082015260400190565b60405180910390a3610163546040516331883c3f60e21b815260009182916001600160a01b039091169063c620f0fc90610c56908690600290600401614f4b565b600060405180830381865afa158015610c73573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c9b9190810190614fe1565b91509150610caa878486613092565b60005b8251811015610d2e57610d1e8661016460009054906101000a90046001600160a01b0316848481518110610ce357610ce36150a6565b6020026020010151868581518110610cfd57610cfd6150a6565b60200260200101516001600160a01b031661316c909392919063ffffffff16565b610d27816150bc565b9050610cad565b5050505050505050565b600033610d468582856131d7565b610d5185858561324b565b506001949350505050565b609760009054906101000a90046001600160a01b03166001600160a01b031663054f7d9c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610daf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd39190614ee1565b15610e095760405162461bcd60e51b8152602060048201526006602482015265333937bd32b760d11b60448201526064016109e1565b61016260009054906101000a90046001600160a01b03166001600160a01b031663f8ac93e86040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610e5a57600080fd5b505af1158015610e6e573d6000803e3d6000fd5b505050506000610e7b3390565b905081600003610ec25760405162461bcd60e51b815260206004820152601260248201527143616e6e6f742072656465656d207a65726f60701b60448201526064016109e1565b6001600160a01b038116600090815260c96020526040902054821115610f215760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b60448201526064016109e1565b61016360009054906101000a90046001600160a01b03166001600160a01b031663e45a5b2d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f999190614ee1565b610ff15760405162461bcd60e51b8152602060048201526024808201527f7061727469616c20726564656d7074696f6e3b207573652072656465656d437560448201526373746f6d60e01b60648201526084016109e1565b6000610ffc60cb5490565b90506110158161100b85614f19565b6101679190612f34565b61102261016b8285612f34565b600061102e8385613401565b9050846001600160a01b0316836001600160a01b03167f49e15c2a707390f4ccf35ee268a61455f17aeb5b1983c01e1dd1f00b86a4725e86846040516110879291909182526001600160c01b0316602082015260400190565b60405180910390a3610163546040516331883c3f60e21b815260009182916001600160a01b039091169063c620f0fc906110c79086908590600401614f4b565b600060405180830381865afa1580156110e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261110c9190810190614fe1565b9150915060005b8251811015610d2e5781818151811061112e5761112e6150a6565b60200260200101516000031561116657610164548251611166916001600160a01b0316908a90859085908110610ce357610ce36150a6565b61116f816150bc565b9050611113565b60006111806134d0565b905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036111cd5760405162461bcd60e51b81526004016109e1906150d5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611216600080516020615680833981519152546001600160a01b031690565b6001600160a01b03161461123c5760405162461bcd60e51b81526004016109e190615121565b611245816134da565b604080516000808252602082019092526112619183919061359f565b50565b60003361091581858561127783836128b8565b611281919061516d565b612e10565b610161805461129490614ead565b80601f01602080910402602001604051908101604052809291908181526020018280546112c090614ead565b801561130d5780601f106112e25761010080835404028352916020019161130d565b820191906000526020600020905b8154815290600101906020018083116112f057829003601f168201915b505050505081565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361135d5760405162461bcd60e51b81526004016109e1906150d5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166113a6600080516020615680833981519152546001600160a01b031690565b6001600160a01b0316146113cc5760405162461bcd60e51b81526004016109e190615121565b6113d5826134da565b6113e18282600161359f565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114855760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016109e1565b5060008051602061568083398151915290565b60975460408051808201909152600581526427aba722a960d91b60208201526001600160a01b03909116906391d14854906114d290615180565b336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa15801561151d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115419190614ee1565b61155d5760405162461bcd60e51b81526004016109e1906151a4565b670de0b6b3a7640000813510156115b65760405162461bcd60e51b815260206004820152601a60248201527f69737375616e636520616d745261746520746f6f20736d616c6c00000000000060448201526064016109e1565b6daf298d050e4395d69670b12b7f4160301b813511156116185760405162461bcd60e51b815260206004820152601860248201527f69737375616e636520616d745261746520746f6f20626967000000000000000060448201526064016109e1565b670de0b6b3a76400006116316040830160208401614992565b6001600160c01b031611156116885760405162461bcd60e51b815260206004820152601860248201527f69737375616e6365207063745261746520746f6f20626967000000000000000060448201526064016109e1565b61169f61169460cb5490565b610167906000612f34565b6040517fa3e16a02f78ca4f5cf54ab43fd2cb34e5014ba4ec2e0cafb751203dcdd0aa827906116d3906101679084906151cd565b60405180910390a1806101676116e98282615214565b505050565b609760009054906101000a90046001600160a01b03166001600160a01b03166398f73e526040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190614ee1565b156117ad5760405162461bcd60e51b8152602060048201526018602482015277199c9bde995b881bdc881d1c98591a5b99c81c185d5cd95960421b60448201526064016109e1565b610164546001600160a01b0316336001600160a01b0316146117e15760405162461bcd60e51b81526004016109e190615249565b61016654604080516001600160c01b03928316815291831660208301527f0b0ca69be72e0611a1f79eedf91aece404ff14cb8fcfd0c997a72b68d4fdd478910160405180910390a161016680546001600160c01b0319166001600160c01b03831617905560cb54806000036118835760405162461bcd60e51b81526020600482015260086024820152673020737570706c7960c01b60448201526064016109e1565b6000816118a16001600160c01b038516670de0b6b3a7640000615276565b6118ab91906152a3565b90506000826118bb6001826152c5565b6118d66001600160c01b038716670de0b6b3a7640000615276565b6118e0919061516d565b6118ea91906152a3565b9050633b9aca00821080159061190c57506b033b2e3c9fd0803ce80000008111155b61194f5760405162461bcd60e51b815260206004820152601460248201527342552072617465206f7574206f662072616e676560601b60448201526064016109e1565b50505050565b609760009054906101000a90046001600160a01b03166001600160a01b031663054f7d9c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119cc9190614ee1565b15611a025760405162461bcd60e51b8152602060048201526006602482015265333937bd32b760d11b60448201526064016109e1565b61016260009054906101000a90046001600160a01b03166001600160a01b031663f8ac93e86040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a5357600080fd5b505af1158015611a67573d6000803e3d6000fd5b5050505084600003611ab05760405162461bcd60e51b815260206004820152601260248201527143616e6e6f742072656465656d207a65726f60701b60448201526064016109e1565b611ab933610513565b851115611aff5760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b60448201526064016109e1565b6000805b8451811015611b4c57848181518110611b1e57611b1e6150a6565b60200260200101516001600160c01b031682611b3a919061516d565b9150611b45816150bc565b9050611b03565b50670de0b6b3a76400008114611bae5760405162461bcd60e51b815260206004820152602160248201527f706f7274696f6e7320646f206e6f742061646420757020746f204649585f4f4e6044820152604560f81b60648201526084016109e1565b6000611bb960cb5490565b9050611bc88161100b89614f19565b611bd561016b8289612f34565b6000611be13389613401565b604080518a81526001600160c01b03831660208201529192506001600160a01b038b169133917f49e15c2a707390f4ccf35ee268a61455f17aeb5b1983c01e1dd1f00b86a4725e910160405180910390a361016354604051630e3363af60e21b815260009182916001600160a01b03909116906338cd8ebc90611c6c908c908c9088906004016152d8565b600060405180830381865afa158015611c89573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cb19190810190614fe1565b9150915060005b8251811015611dac576000611d58848381518110611cd857611cd86150a6565b6020908102919091010151610164546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015611d2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d519190615372565b8d8861370a565b9050828281518110611d6c57611d6c6150a6565b6020026020010151811015611d9b5780838381518110611d8e57611d8e6150a6565b6020026020010181815250505b50611da5816150bc565b9050611cb8565b506000875167ffffffffffffffff811115611dc957611dc9614860565b604051908082528060200260200182016040528015611df2578160200160208202803683370190505b50905060005b8851811015611eb657888181518110611e1357611e136150a6565b60209081029190910101516040516370a0823160e01b81526001600160a01b038f81166004830152909116906370a0823190602401602060405180830381865afa158015611e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e899190615372565b828281518110611e9b57611e9b6150a6565b6020908102919091010152611eaf816150bc565b9050611df8565b50600160005b8451811015611f4957838181518110611ed757611ed76150a6565b602002602001015160000315611f39578115611ef257600091505b611f3961016460009054906101000a90046001600160a01b03168f868481518110611f1f57611f1f6150a6565b6020026020010151888581518110610cfd57610cfd6150a6565b611f42816150bc565b9050611ebc565b508015611f8b5760405162461bcd60e51b815260206004820152601060248201526f32b6b83a3c903932b232b6b83a34b7b760811b60448201526064016109e1565b5060005b88518110156120cf576000898281518110611fac57611fac6150a6565b60200260200101516001600160a01b03166370a082318f6040518263ffffffff1660e01b8152600401611fee91906001600160a01b0391909116815260200190565b602060405180830381865afa15801561200b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202f9190615372565b9050888281518110612043576120436150a6565b602002602001015183838151811061205d5761205d6150a6565b60200260200101518261207091906152c5565b10156120be5760405162461bcd60e51b815260206004820152601860248201527f726564656d7074696f6e2062656c6f77206d696e696d756d000000000000000060448201526064016109e1565b506120c8816150bc565b9050611f8f565b50505050505050505050505050565b60975460408051808201909152600581526427aba722a960d91b60208201526001600160a01b03909116906391d148549061211890615180565b336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015612163573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121879190614ee1565b6121a35760405162461bcd60e51b81526004016109e1906151a4565b670de0b6b3a7640000813510156121fc5760405162461bcd60e51b815260206004820152601c60248201527f726564656d7074696f6e20616d745261746520746f6f20736d616c6c0000000060448201526064016109e1565b6daf298d050e4395d69670b12b7f4160301b8135111561225e5760405162461bcd60e51b815260206004820152601a60248201527f726564656d7074696f6e20616d745261746520746f6f2062696700000000000060448201526064016109e1565b670de0b6b3a76400006122776040830160208401614992565b6001600160c01b031611156122ce5760405162461bcd60e51b815260206004820152601a60248201527f726564656d7074696f6e207063745261746520746f6f2062696700000000000060448201526064016109e1565b6122e56122da60cb5490565b61016b906000612f34565b6040517fae0adad2741496b9b813ff6121945ff13626d9b550f6d2852530d28a79051ac2906123199061016b9084906151cd565b60405180910390a18061016b6116e98282615214565b6001600160a01b038116600090815261012f602052604081205461091b565b600061118061236861235f60cb5490565b610167906137ed565b61016790613838565b60006060806000806000606060fb546000801b148015612391575060fc54155b6123d55760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016109e1565b6123dd613896565b6123e56138a5565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101655433906001600160a01b0316811461245b5760405162461bcd60e51b815260206004820152600c60248201526b6675726e616365206f6e6c7960a01b60448201526064016109e1565b61246581836138b4565b6040518281527f12b02b431a920654430b36652724950afbd1e5279648b404790dbd036b1a58a79060200160405180910390a15050565b606060cd805461088490614ead565b6000806124b760cb5490565b90506124d16124c861016b836137ed565b61016b90613838565b9150818110156124df578091505b5090565b600033816124f182866128b8565b9050838110156125515760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109e1565b610d518286868403612e10565b60003361091581858561324b565b610164546001600160a01b0316336001600160a01b0316146125a05760405162461bcd60e51b81526004016109e190615249565b61016454611261906001600160a01b0316826125bb60cb5490565b613092565b609760009054906101000a90046001600160a01b03166001600160a01b03166398f73e526040518163ffffffff1660e01b8152600401602060405180830381865afa158015612613573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126379190614ee1565b1561267f5760405162461bcd60e51b8152602060048201526018602482015277199c9bde995b881bdc881d1c98591a5b99c81c185d5cd95960421b60448201526064016109e1565b6101625460405163c3c5a54760e01b81526001600160a01b0383811660048301529091169063c3c5a54790602401602060405180830381865afa1580156126ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ee9190614ee1565b61272f5760405162461bcd60e51b8152602060048201526012602482015271195c98cc8c081d5b9c9959da5cdd195c995960721b60448201526064016109e1565b610164546040516370a0823160e01b8152306004820152611261916001600160a01b0390811691908416906370a0823190602401602060405180830381865afa158015612780573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a49190615372565b6001600160a01b03841691906139f4565b6112613382610921565b8342111561280f5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016109e1565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861283e8c613a24565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506128a38861289b83613a4d565b868686613a7a565b610d2e888888612e10565b6112613382610d5c565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205490565b600054610100900460ff16158080156129035750600054600160ff909116105b8061291d5750303b15801561291d575060005460ff166001145b6129805760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109e1565b6000805460ff1916600117905580156129a3576000805461ff0019166101001790555b60008890036129e15760405162461bcd60e51b815260206004820152600a6024820152696e616d6520656d70747960b01b60448201526064016109e1565b6000869003612a215760405162461bcd60e51b815260206004820152600c60248201526b73796d626f6c20656d70747960a01b60448201526064016109e1565b6000849003612a625760405162461bcd60e51b815260206004820152600d60248201526c6d616e6461746520656d70747960981b60448201526064016109e1565b612a6b8a613c1f565b612ade89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600092019190915250613cbd92505050565b612b1d89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613cee92505050565b896001600160a01b031663979d7e866040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7f919061538b565b61016260006101000a8154816001600160a01b0302191690836001600160a01b03160217905550896001600160a01b0316632f2439b16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612be4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c08919061538b565b61016360006101000a8154816001600160a01b0302191690836001600160a01b03160217905550896001600160a01b031663dc8af5f66040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c91919061538b565b61016460006101000a8154816001600160a01b0302191690836001600160a01b03160217905550896001600160a01b031663656e96e16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d1a919061538b565b61016580546001600160a01b0319166001600160a01b0392909216919091179055610161612d498587836153f6565b50612d5383611498565b612d5c826120de565b610169805465ffffffffffff421665ffffffffffff19918216811790925561016d805490911690911790558015612dcd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6101645433906001600160a01b03168114612e065760405162461bcd60e51b81526004016109e190615249565b6116e98183613401565b6001600160a01b038316612e725760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109e1565b6001600160a01b038216612ed35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109e1565b6001600160a01b03838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b8254158015612f4e575060018301546001600160c01b0316155b15612f5857505050565b6000612f6484846137ed565b90506000612f728583613838565b9050846003015481141580612f8657508181145b15612fa75760028501805465ffffffffffff19164265ffffffffffff161790555b600083131561301157808311156130005760405162461bcd60e51b815260206004820152601760248201527f737570706c79206368616e6765207468726f74746c656400000000000000000060448201526064016109e1565b61300a83826152c5565b9050613030565b60008312156130305761302383614f19565b61302d908261516d565b90505b600390940193909355505050565b60006001600160c01b038211156124df5760405163f44398f560e01b815260040160405180910390fd5b6000613087613082866001600160c01b0316868686613d3c565b61303e565b90505b949350505050565b6000816000036130a257826130be565b610166546130be906001600160c01b0385811691859116613de9565b610166546001600160c01b0391821692507f0b0ca69be72e0611a1f79eedf91aece404ff14cb8fcfd0c997a72b68d4fdd47891166130fc85826154b6565b604080516001600160c01b0393841681529290911660208301520160405180910390a1610166805484919060009061313e9084906001600160c01b03166154b6565b92506101000a8154816001600160c01b0302191690836001600160c01b0316021790555061194f8482613df8565b6040516001600160a01b038085166024830152831660448201526064810182905261194f9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613ec5565b60006131e384846128b8565b9050600019811461194f578181101561323e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016109e1565b61194f8484848403612e10565b6001600160a01b0383166132af5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109e1565b6001600160a01b0382166133115760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109e1565b61331c838383613f9a565b6001600160a01b038316600090815260c96020526040902054818110156133945760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109e1565b6001600160a01b03808516600081815260c9602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906133f49086815260200190565b60405180910390a361194f565b60006134248261341060cb5490565b610166546001600160c01b03169190613de9565b610166549091507f0b0ca69be72e0611a1f79eedf91aece404ff14cb8fcfd0c997a72b68d4fdd478906001600160c01b031661346083826154d6565b604080516001600160c01b0393841681529290911660208301520160405180910390a161016680548291906000906134a29084906001600160c01b03166154d6565b92506101000a8154816001600160c01b0302191690836001600160c01b0316021790555061091b83836138b4565b6000611180613ff2565b60975460408051808201909152600581526427aba722a960d91b60208201526001600160a01b03909116906391d148549061351490615180565b336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa15801561355f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135839190614ee1565b6112615760405162461bcd60e51b81526004016109e1906151a4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156135d2576116e983614066565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561362c575060408051601f3d908101601f1916820190925261362991810190615372565b60015b61368f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016109e1565b60008051602061568083398151915281146136fe5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016109e1565b506116e9838383614102565b60008060006137198686614127565b9150915083821061373d5760405163f44398f560e01b815260040160405180910390fd5b6000848061374d5761374d61528d565b868809905081811115613761576001830392505b90819003906000859003851680868161377c5761377c61528d565b04955080838161378e5761378e61528d565b0492508081600003816137a3576137a361528d565b046001019390930291909101600285810380870282030280870282030280870282030280870282030280870282030280870282030295860290039094029390930295945050505050565b60018201546000908390670de0b6b3a764000090613814906001600160c01b031685615276565b61381e91906152a3565b9150818160000154111561383157805491505b5092915050565b600282015460009081906138549065ffffffffffff16426154f6565b9050610e1061386b65ffffffffffff831685615276565b61387591906152a3565b8460030154613884919061516d565b91508282111561383157509092915050565b606060fd805461088490614ead565b606060fe805461088490614ead565b6001600160a01b0382166139145760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109e1565b61392082600083613f9a565b6001600160a01b038216600090815260c96020526040902054818110156139945760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109e1565b6001600160a01b038316600081815260c960209081526040808320868603905560cb80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6040516001600160a01b0383166024820152604481018290526116e990849063a9059cbb60e01b906064016131a0565b6001600160a01b038116600090815261012f602052604090208054600181018255905b50919050565b600061091b613a5a6134d0565b8360405161190160f01b8152600281019290925260228201526042902090565b6001600160a01b0385163b15613b8857604080516020810184905280820183905260f885901b6001600160f81b0319166060820152815160418183030181526061820192839052630b135d3f60e11b9092526001600160a01b03871691631626ba7e91613aeb918891606501615515565b602060405180830381865afa158015613b08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2c919061552e565b6001600160e01b031916631626ba7e60e01b14613b835760405162461bcd60e51b8152602060048201526015602482015274115490cc4c8dcc4e88155b985d5d1a1bdc9a5e9959605a1b60448201526064016109e1565b613c18565b60408051602081018490529081018290526001600160f81b031960f885901b166060820152613bcc9086908690606101604051602081830303815290604052614154565b613c185760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016109e1565b5050505050565b600054610100900460ff16613c465760405162461bcd60e51b81526004016109e190615558565b6001600160a01b038116613c935760405162461bcd60e51b81526020600482015260146024820152736d61696e206973207a65726f206164647265737360601b60448201526064016109e1565b613c9b6141b5565b609780546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff16613ce45760405162461bcd60e51b81526004016109e190615558565b6113e182826141de565b600054610100900460ff16613d155760405162461bcd60e51b81526004016109e190615558565b61126181604051806040016040528060058152602001640332e342e360dc1b81525061421e565b600080613d4a86868661370a565b90506000836002811115613d6057613d60614f35565b03613d6c57905061308a565b60008480613d7c57613d7c61528d565b86880990506002846002811115613d9557613d95614f35565b03613db3578015613dae57613dab60018361516d565b91505b613ddf565b6002613dc06001876152c5565b613dca91906152a3565b811115613ddf57613ddc60018361516d565b91505b5095945050505050565b600061308a8484846000613068565b6001600160a01b038216613e4e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109e1565b613e5a60008383613f9a565b8060cb6000828254613e6c919061516d565b90915550506001600160a01b038216600081815260c960209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6000613f1a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661426d9092919063ffffffff16565b9050805160001480613f3b575080806020019051810190613f3b9190614ee1565b6116e95760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016109e1565b306001600160a01b038316036116e95760405162461bcd60e51b815260206004820152601760248201527f52546f6b656e207472616e7366657220746f2073656c6600000000000000000060448201526064016109e1565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61401d61427c565b6140256142d5565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b0381163b6140d35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016109e1565b60008051602061568083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61410b83614306565b6000825111806141185750805b156116e95761194f8383614346565b600080806000198486099050838502915081810392508181101561414c576001830392505b509250929050565b60008060006141638585614372565b9092509050600081600481111561417c5761417c614f35565b14801561419a5750856001600160a01b0316826001600160a01b0316145b806141ab57506141ab8686866143b7565b9695505050505050565b600054610100900460ff166141dc5760405162461bcd60e51b81526004016109e190615558565b565b600054610100900460ff166142055760405162461bcd60e51b81526004016109e190615558565b60cc61421183826155a3565b5060cd6116e982826155a3565b600054610100900460ff166142455760405162461bcd60e51b81526004016109e190615558565b60fd61425183826155a3565b5060fe61425e82826155a3565b5050600060fb81905560fc5550565b606061308a84846000856144a3565b600080614287613896565b80519091501561429e578051602090910120919050565b60fb5480156142ad5792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806142e06138a5565b8051909150156142f7578051602090910120919050565b60fc5480156142ad5792915050565b61430f81614066565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061436b83836040518060600160405280602781526020016156a06027913961457e565b9392505050565b60008082516041036143a85760208301516040840151606085015160001a61439c878285856145ec565b945094505050506143b0565b506000905060025b9250929050565b6000806000856001600160a01b0316631626ba7e60e01b86866040516024016143e1929190615515565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161441f9190615663565b600060405180830381855afa9150503d806000811461445a576040519150601f19603f3d011682016040523d82523d6000602084013e61445f565b606091505b509150915081801561447357506020815110155b80156141ab57508051630b135d3f60e11b906144989083016020908101908401615372565b149695505050505050565b6060824710156145045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016109e1565b600080866001600160a01b031685876040516145209190615663565b60006040518083038185875af1925050503d806000811461455d576040519150601f19603f3d011682016040523d82523d6000602084013e614562565b606091505b5091509150614573878383876146b0565b979650505050505050565b6060600080856001600160a01b03168560405161459b9190615663565b600060405180830381855af49150503d80600081146145d6576040519150601f19603f3d011682016040523d82523d6000602084013e6145db565b606091505b50915091506141ab868383876146b0565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561462357506000905060036146a7565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614677573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166146a0576000600192509250506146a7565b9150600090505b94509492505050565b6060831561471f578251600003614718576001600160a01b0385163b6147185760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109e1565b508161308a565b61308a83838151156147345781518083602001fd5b8060405162461bcd60e51b81526004016109e1919061479e565b60005b83811015614769578181015183820152602001614751565b50506000910152565b6000815180845261478a81602086016020860161474e565b601f01601f19169290920160200192915050565b60208152600061436b6020830184614772565b6001600160a01b038116811461126157600080fd5b80356147d1816147b1565b919050565b600080604083850312156147e957600080fd5b82356147f4816147b1565b946020939093013593505050565b60008060006060848603121561481757600080fd5b8335614822816147b1565b92506020840135614832816147b1565b929592945050506040919091013590565b60006020828403121561485557600080fd5b813561436b816147b1565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561489f5761489f614860565b604052919050565b600080604083850312156148ba57600080fd5b82356148c5816147b1565b915060208381013567ffffffffffffffff808211156148e357600080fd5b818601915086601f8301126148f757600080fd5b81358181111561490957614909614860565b61491b601f8201601f19168501614876565b9150808252878482850101111561493157600080fd5b80848401858401376000848284010152508093505050509250929050565b600060408284031215613a4757600080fd5b60006040828403121561497357600080fd5b61436b838361494f565b6001600160c01b038116811461126157600080fd5b6000602082840312156149a457600080fd5b813561436b8161497d565b600067ffffffffffffffff8211156149c9576149c9614860565b5060051b60200190565b600082601f8301126149e457600080fd5b813560206149f96149f4836149af565b614876565b82815260059290921b84018101918181019086841115614a1857600080fd5b8286015b84811015614a4857803565ffffffffffff81168114614a3b5760008081fd5b8352918301918301614a1c565b509695505050505050565b600082601f830112614a6457600080fd5b81356020614a746149f4836149af565b82815260059290921b84018101918181019086841115614a9357600080fd5b8286015b84811015614a48578035614aaa8161497d565b8352918301918301614a97565b600082601f830112614ac857600080fd5b81356020614ad86149f4836149af565b82815260059290921b84018101918181019086841115614af757600080fd5b8286015b84811015614a48578035614b0e816147b1565b8352918301918301614afb565b600082601f830112614b2c57600080fd5b81356020614b3c6149f4836149af565b82815260059290921b84018101918181019086841115614b5b57600080fd5b8286015b84811015614a485780358352918301918301614b5f565b60008060008060008060c08789031215614b8f57600080fd5b614b98876147c6565b955060208701359450604087013567ffffffffffffffff80821115614bbc57600080fd5b614bc88a838b016149d3565b95506060890135915080821115614bde57600080fd5b614bea8a838b01614a53565b94506080890135915080821115614c0057600080fd5b614c0c8a838b01614ab7565b935060a0890135915080821115614c2257600080fd5b50614c2f89828a01614b1b565b9150509295509295509295565b60ff60f81b881681526000602060e081840152614c5c60e084018a614772565b8381036040850152614c6e818a614772565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015614cc057835183529284019291840191600101614ca4565b50909c9b505050505050505050505050565b600060208284031215614ce457600080fd5b5035919050565b600080600080600080600060e0888a031215614d0657600080fd5b8735614d11816147b1565b96506020880135614d21816147b1565b95506040880135945060608801359350608088013560ff81168114614d4557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215614d7557600080fd5b8235614d80816147b1565b91506020830135614d90816147b1565b809150509250929050565b60008083601f840112614dad57600080fd5b50813567ffffffffffffffff811115614dc557600080fd5b6020830191508360208285010111156143b057600080fd5b60008060008060008060008060006101008a8c031215614dfc57600080fd5b8935614e07816147b1565b985060208a013567ffffffffffffffff80821115614e2457600080fd5b614e308d838e01614d9b565b909a50985060408c0135915080821115614e4957600080fd5b614e558d838e01614d9b565b909850965060608c0135915080821115614e6e57600080fd5b50614e7b8c828d01614d9b565b9095509350614e8f90508b60808c0161494f565b9150614e9e8b60c08c0161494f565b90509295985092959850929598565b600181811c90821680614ec157607f821691505b602082108103613a4757634e487b7160e01b600052602260045260246000fd5b600060208284031215614ef357600080fd5b8151801515811461436b57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600160ff1b8201614f2e57614f2e614f03565b5060000390565b634e487b7160e01b600052602160045260246000fd5b6001600160c01b03831681526040810160038310614f7957634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b600082601f830112614f9757600080fd5b81516020614fa76149f4836149af565b82815260059290921b84018101918181019086841115614fc657600080fd5b8286015b84811015614a485780518352918301918301614fca565b60008060408385031215614ff457600080fd5b825167ffffffffffffffff8082111561500c57600080fd5b818501915085601f83011261502057600080fd5b815160206150306149f4836149af565b82815260059290921b8401810191818101908984111561504f57600080fd5b948201945b83861015615076578551615067816147b1565b82529482019490820190615054565b9188015191965090935050508082111561508f57600080fd5b5061509c85828601614f86565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000600182016150ce576150ce614f03565b5060010190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b8082018082111561091b5761091b614f03565b80516020808301519190811015613a475760001960209190910360031b1b16919050565b6020808252600f908201526e676f7665726e616e6365206f6e6c7960881b604082015260600190565b8254815260018301546001600160c01b03908116602080840191909152833560408401526080830191908401356152038161497d565b818116606085015250509392505050565b8135815560018101602083013561522a8161497d565b81546001600160c01b0319166001600160c01b03919091161790555050565b6020808252601390820152723737ba103130b1b5b4b7339036b0b730b3b2b960691b604082015260600190565b808202811582820484141761091b5761091b614f03565b634e487b7160e01b600052601260045260246000fd5b6000826152c057634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561091b5761091b614f03565b606080825284519082018190526000906020906080840190828801845b8281101561531957815165ffffffffffff16845292840192908401906001016152f5565b5050508381038285015285518082528683019183019060005b818110156153575783516001600160c01b031683529284019291840191600101615332565b50506001600160c01b0386166040860152925061308a915050565b60006020828403121561538457600080fd5b5051919050565b60006020828403121561539d57600080fd5b815161436b816147b1565b601f8211156116e957600081815260208120601f850160051c810160208610156153cf5750805b601f850160051c820191505b818110156153ee578281556001016153db565b505050505050565b67ffffffffffffffff83111561540e5761540e614860565b6154228361541c8354614ead565b836153a8565b6000601f841160018114615456576000851561543e5750838201355b600019600387901b1c1916600186901b178355613c18565b600083815260209020601f19861690835b828110156154875786850135825560209485019460019092019101615467565b50868210156154a45760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160c01b0381811683821601908082111561383157613831614f03565b6001600160c01b0382811682821603908082111561383157613831614f03565b65ffffffffffff82811682821603908082111561383157613831614f03565b82815260406020820152600061308a6040830184614772565b60006020828403121561554057600080fd5b81516001600160e01b03198116811461436b57600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b815167ffffffffffffffff8111156155bd576155bd614860565b6155d1816155cb8454614ead565b846153a8565b602080601f83116001811461560657600084156155ee5750858301515b600019600386901b1c1916600185901b1785556153ee565b600085815260208120601f198616915b8281101561563557888601518255948401946001909101908401615616565b50858210156156535787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000825161567581846020870161474e565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e118d7fc5a91259fd25aae3026a7f0addf30d763909d779e201f2f7cb0c69f3864736f6c63430008130033