[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "address", "name": "_sophonFarming", "type": "address" }, { "internalType": "uint256", "name": "_pid", "type": "uint256" }, { "internalType": "address", "name": "_pointManager", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "actualSharesOut", "type": "uint256" }, { "internalType": "uint256", "name": "requiredSharesOut", "type": "uint256" } ], "name": "SYInsufficientSharesOut", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "actualTokenOut", "type": "uint256" }, { "internalType": "uint256", "name": "requiredTokenOut", "type": "uint256" } ], "name": "SYInsufficientTokenOut", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SYInvalidTokenIn", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SYInvalidTokenOut", "type": "error" }, { "inputs": [], "name": "SYZeroDeposit", "type": "error" }, { "inputs": [], "name": "SYZeroRedeem", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "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": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "address[]", "name": "rewardTokens", "type": "address[]" }, { "indexed": false, "internalType": "uint256[]", "name": "rewardAmounts", "type": "uint256[]" } ], "name": "ClaimRewards", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": true, "internalType": "address", "name": "tokenIn", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountDeposited", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountSyOut", "type": "uint256" } ], "name": "Deposit", "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": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": true, "internalType": "address", "name": "tokenOut", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountSyToRedeem", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountTokenOut", "type": "uint256" } ], "name": "Redeem", "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": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "accruedRewards", "outputs": [ { "internalType": "uint256[]", "name": "rewardAmounts", "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": [], "name": "assetInfo", "outputs": [ { "internalType": "enum IStandardizedYield.AssetType", "name": "assetType", "type": "uint8" }, { "internalType": "address", "name": "assetAddress", "type": "address" }, { "internalType": "uint8", "name": "assetDecimals", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "claimOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "claimRewards", "outputs": [ { "internalType": "uint256[]", "name": "rewardAmounts", "type": "uint256[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "tokenIn", "type": "address" }, { "internalType": "uint256", "name": "amountTokenToDeposit", "type": "uint256" }, { "internalType": "uint256", "name": "minSharesOut", "type": "uint256" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "amountSharesOut", "type": "uint256" } ], "stateMutability": "payable", "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": [], "name": "exchangeRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRewardTokens", "outputs": [ { "internalType": "address[]", "name": "rewardTokens", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTokensIn", "outputs": [ { "internalType": "address[]", "name": "res", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTokensOut", "outputs": [ { "internalType": "address[]", "name": "res", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "isValidTokenIn", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "isValidTokenOut", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastRewardBlock", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "pid", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pointManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenIn", "type": "address" }, { "internalType": "uint256", "name": "amountTokenToDeposit", "type": "uint256" } ], "name": "previewDeposit", "outputs": [ { "internalType": "uint256", "name": "amountSharesOut", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenOut", "type": "address" }, { "internalType": "uint256", "name": "amountSharesToRedeem", "type": "uint256" } ], "name": "previewRedeem", "outputs": [ { "internalType": "uint256", "name": "amountTokenOut", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "amountSharesToRedeem", "type": "uint256" }, { "internalType": "address", "name": "tokenOut", "type": "address" }, { "internalType": "uint256", "name": "minTokenOut", "type": "uint256" }, { "internalType": "bool", "name": "burnFromInternalBalance", "type": "bool" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "amountTokenOut", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardIndexesCurrent", "outputs": [ { "internalType": "uint256[]", "name": "indexes", "type": "uint256[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardIndexesStored", "outputs": [ { "internalType": "uint256[]", "name": "indexes", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "rewardState", "outputs": [ { "internalType": "uint128", "name": "index", "type": "uint128" }, { "internalType": "uint128", "name": "lastBalance", "type": "uint128" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sophonFarming", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": "newOwner", "type": "address" }, { "internalType": "bool", "name": "direct", "type": "bool" }, { "internalType": "bool", "name": "renounce", "type": "bool" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "userReward", "outputs": [ { "internalType": "uint128", "name": "index", "type": "uint128" }, { "internalType": "uint128", "name": "accrued", "type": "uint128" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "yieldToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
61020080604052346200082257620050bf8038038091620000218285620008c1565b833981019060a081830312620008225780516001600160401b0381116200082257826200005091830162000926565b602082015190926001600160401b03821162000822576200007391830162000926565b620000816040830162000973565b916200009560806060830151920162000973565b604051631526fe2760e01b815260048101839052949092906000866024816001600160a01b0389165afa95861562000830576000966200083c575b5060405163313ce56760e01b81526020816004816001600160a01b038b165afa9081156200083057600091620007e8575b5060408051939084016001600160401b038111858210176200059d5760405260018452603160f81b602085015282516001600160401b0381116200059d57600354600181811c91168015620007dd575b6020821014620006c057601f811162000777575b50806020601f8211600114620006ed57600091620006e1575b508160011b916000199060031b1c1916176003555b8051906001600160401b0382116200059d5760045490600182811c92168015620006d6575b6020831014620006c05781601f8493116200064e575b50602090601f8311600114620005bf57600092620005b3575b50508160011b916000199060031b1c1916176004555b608052600280546001600160f81b0316600160f81b179055620002208162000c04565b610140526200022f8262000da9565b61016052602081519101209081610100526020815191012080610120524660c052604051917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020840152604083015260608201524660808201523060a082015260a081528060c081011060018060401b0360c0830111176200059d5760c081016040528051602082012060a0523060e05260ff19603a5416603a5560095460ff8160a81c1615918280936200058c575b801562000570575b1562000510575060ff60a01b198116600160a01b1760095581620004f7575b506101809485526009549060ff8260a81c16156200049e57600880546001600160a01b0319163317905562000460575b506101a08381526101c09182526101e09283528451909362000362916001600160a01b031662000988565b604051926141be948562000f01863960805185611ac5015260a05185612e92015260c05185612f5e015260e05185612e6301526101005185612ee101526101205185612f070152610140518561104c01526101605185611076015251848181610b0b01528181610c2b01528181610ddf015281816113260152818161141801528181611d800152818161263801526127400152518381816112570152818161145901528181611dbc0152613bac015251828181610321015281816114b201528181611e170152613bce0152518181816103ee015281816107c801528181610ba1015281816116dd0152818161220e015281816134160152613c850152f35b60ff60a81b1916600955604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a13862000337565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b61ffff60a01b191661010160a01b176009553862000307565b60c060849162461bcd60e51b82820152602060c4820152602e60e48201527f496e697469616c697a61626c653a20636f6e747261637420697320616c7265616101048201526d191e481a5b9a5d1a585b1a5e995960921b61012482015201fd5b50303b158015620002e85750600160ff8360a01c1614620002e8565b50600160ff8360a01c1610620002e0565b634e487b7160e01b600052604160045260246000fd5b015190503880620001e7565b6004600090815293507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b91905b601f198416851062000632576001945083601f1981161062000618575b505050811b01600455620001fd565b015160001960f88460031b161c1916905538808062000609565b81810151835560209485019460019093019290910190620005ec565b60046000529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c810160208510620006b8575b90849392915b601f830160051c82018110620006a8575050620001ce565b6000815585945060010162000690565b50806200068a565b634e487b7160e01b600052602260045260246000fd5b91607f1691620001b8565b9050840151386200017e565b6003600090815292507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b905b601f19831684106200075e576001935082601f1981161062000744575b5050811b0160035562000193565b86015160001960f88460031b161c19169055388062000736565b8681015182556020938401936001909201910162000719565b60036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c810160208410620007d5575b601f830160051c82018110620007c857505062000165565b60008155600101620007b0565b5080620007b0565b90607f169062000151565b90506020813d60201162000827575b816200080660209383620008c1565b8101031262000822575160ff8116810362000822573862000101565b600080fd5b3d9150620007f7565b6040513d6000823e3d90fd5b9095503d806000833e620008518183620008c1565b8101906101408183031262000822576200086b8162000973565b916200087a6020830162000973565b506101208201516001600160401b03811162000822576200089c920162000926565b509438620000d0565b608081019081106001600160401b038211176200059d57604052565b601f909101601f19168101906001600160401b038211908210176200059d57604052565b6001600160401b0381116200059d57601f01601f191660200190565b60005b838110620009155750506000910152565b818101518382015260200162000904565b81601f82011215620008225780516200093f81620008e5565b926200094f6040519485620008c1565b81845260208284010111620008225762000970916020808501910162000901565b90565b51906001600160a01b03821682036200082257565b6001600160a01b03919082811690811562000bfe57604091825180958195636eb1769f60e11b83523060048401521691826024830152602096879160449788915afa90811562000bf35760009162000bc0575b5060016001605f1b0311620009f2575b5050505050565b82519060008087840163095ea7b360e01b94858252846024820152828982015288815262000a2081620008a5565b519082875af13d1562000bb8573d62000a3981620008e5565b9062000a4887519283620008c1565b81523d60008983013e5b8162000b7a575b501562000b48579160009291838093865190898201938452602482015281198882015287815262000a8a81620008a5565b51925af13d1562000b40573d62000aa181620008e5565b9062000ab084519283620008c1565b81523d60008683013e5b8162000b02575b501562000ad0578080620009eb565b5162461bcd60e51b81526004810192909252600c60248301526b5361666520417070726f766560a01b90820152606490fd5b8091505184811591821562000b1d575b505090503862000ac1565b838092935001031262000822578301518015158103620008225780843862000b12565b606062000aba565b835162461bcd60e51b815260048101879052600c60248201526b5361666520417070726f766560a01b81870152606490fd5b8091505187811591821562000b95575b505090503862000a59565b838092935001031262000822578601518015158103620008225780873862000b8a565b606062000a52565b90508581813d831162000beb575b62000bda8183620008c1565b8101031262000822575138620009db565b503d62000bce565b84513d6000823e3d90fd5b50505050565b8051602091908281101562000c84575090601f82511162000c42578082519201519080831062000c3357501790565b82600019910360031b1b161790565b60449062000c769260405193849263305a27a960e01b84528060048501528251928391826024870152868601910162000901565b601f01601f19168101030190fd5b6001600160401b0381116200059d576005928354926001938481811c9116801562000d9e575b83821014620006c057601f811162000d67575b5081601f841160011462000cfd575092829391839260009462000cf1575b50501b916000199060031b1c191617905560ff90565b01519250388062000cdb565b919083601f1981168760005284600020946000905b8883831062000d4c575050501062000d32575b505050811b01905560ff90565b015160001960f88460031b161c1916905538808062000d25565b85870151885590960195948501948793509081019062000d12565b8560005284601f846000209201871c820191601f8601881c015b82811062000d9157505062000cbd565b6000815501859062000d81565b90607f169062000caa565b80516020908181101562000dd65750601f82511162000c42578082519201519080831062000c3357501790565b906001600160401b0382116200059d57600654926001938481811c9116801562000ef5575b83821014620006c057601f811162000ebb575b5081601f841160011462000e4f575092829391839260009462000e43575b50501b916000199060031b1c19161760065560ff90565b01519250388062000e2c565b919083601f198116600660005284600020946000905b8883831062000ea0575050501062000e86575b505050811b0160065560ff90565b015160001960f88460031b161c1916905538808062000e78565b85870151885590960195948501948793509081019062000e65565b600660005284601f84600020920160051c820191601f860160051c015b82811062000ee857505062000e0e565b6000815501859062000ed8565b90607f169062000dfb56fe6080604081815260049081361015610022575b505050361561002057600080fd5b005b600091823560e01c93846306fdde031461248b57508363071bc3c914611cba578363078dfbe7146122fb578363095ea7b3146122ad578363128fced1146121ce57836318160ddd1461217157836320e8c56514611cbf578363213cae6314611cba57836323b872dd14611ae9578363313ce56714611a8e5783633644e51514611a545783633ba0b9a914611a145783633f4ba83a146119065783634e71e0c8146117f95783635c975abb146117b85783635cbadbe4146117015783636b6967aa1461169357836370a0823114611627578363769f8e5d1461134a57836376d5de85146112dc578363784367d6146102045783637ecebe001461127b57836380e90af71461120d5783638456cb591461115c57836384b0196e146110195783638da5cb5b14610fc757836395d89b4114610ea0578363a40bee5014610d98578363a9059cbb14610cc5578363a9f8d18114610c89578363b8f82b2614610bd8578363c4f59f9b14610b69578363cbe52ae314610ab8578363d505accf1461086a578363da88ecb414610793578363dd62ed3e1461071d578363e30c3978146106cb578363ea64a82014610640578363ef5cfb8c1461034457508263f1068454146102ed578263f8b2f9911461020957505063fa5a4f061461020457388080610012565b6126ea565b346102e957817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e9576102e5906002549061024f60028360f81c1415612969565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8093161760025561029f613398565b7f01000000000000000000000000000000000000000000000000000000000000006102c8613411565b9390506002541617600255519182916020835260208301906126b6565b0390f35b5080fd5b346102e957817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e957602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b913461063d57602091827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e95761037e612670565b906002549061039360028360f81c1415612969565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809316176002556103e3613398565b6103ec83613ace565b7f000000000000000000000000000000000000000000000000000000000000000094610417866129ce565b9161042283516128d7565b958073ffffffffffffffffffffffffffffffffffffffff95868816915b86518110156105ab57876104538289612926565b51168452603b8087528585208460005287528560002054908b61047b84608094851c92612926565b52610486838d612926565b51610496575b505060010161043f565b896104a1848b612926565b51168652875285852084600052875285600020906fffffffffffffffffffffffffffffffff918281541690556104d7838d612926565b51908282116105a6578a6104eb858c612926565b51168752603d8952828888209216908254901c03918211610579578b8b61056b858d610563828f61055e60019b9a6105729a906fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b612926565b511693612926565b5191613797565b908d61048c565b5060248560118f7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b600080fd5b89866102e5877f01000000000000000000000000000000000000000000000000000000000000008f887f2193aa20a3717f5f4ac79482f4f553e5f0afe8f4e6ec3e3d1aa2e138adc4763f6106166106028b946129ce565b6106238751928392898452898401906125b7565b8281038b8401528b6126b6565b0390a26002541617600255519282849384528301906126b6565b80fd5b50346102e95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e957806102e59273ffffffffffffffffffffffffffffffffffffffff610692612670565b168152603d60209081529190205491516fffffffffffffffffffffffffffffffff8316815260809290921c908201529081906040820190565b50346102e957817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e95760209073ffffffffffffffffffffffffffffffffffffffff600954169051908152f35b50346102e957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e957602091610757612670565b82610760612693565b9273ffffffffffffffffffffffffffffffffffffffff809316815260018652209116600052825280600020549051908152f35b50903461063d57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261063d576107ec7f00000000000000000000000000000000000000000000000000000000000000006129ce565b906107f782516128d7565b90805b8351811015610855578073ffffffffffffffffffffffffffffffffffffffff61082560019387612926565b51168352603d6020526fffffffffffffffffffffffffffffffff868420541661084e8286612926565b52016107fa565b8451602080825281906102e5908201866126b6565b8290346102e95760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e9576108a3612670565b6108ab612693565b906044359260643560843560ff81168103610ab457814211610a575773ffffffffffffffffffffffffffffffffffffffff90818516928389526007602052898920908154916001830190558a519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98452868d840152858a1660608401528a608084015260a083015260c082015260c0815260e0810181811067ffffffffffffffff821117610a29578b525190206109b7916109af9161096e612e4c565b908c51917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a4359220613899565b919091613935565b16036109cc57506109c9939450612a0b565b80f35b60649060208751917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b6041877f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b60648360208a51917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152fd5b8680fd5b823461063d57827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261063d5750610af0612670565b73ffffffffffffffffffffffffffffffffffffffff809116907f0000000000000000000000000000000000000000000000000000000000000000168103610b3c57602083516024358152f35b60249251917f88a50561000000000000000000000000000000000000000000000000000000008352820152fd5b50346102e957817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e9576102e590610bc57f00000000000000000000000000000000000000000000000000000000000000006129ce565b90519182916020835260208301906125b7565b823461063d57827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261063d5750610c10612670565b73ffffffffffffffffffffffffffffffffffffffff809116907f0000000000000000000000000000000000000000000000000000000000000000168103610c5c57602083516024358152f35b60249251917faeabe718000000000000000000000000000000000000000000000000000000008352820152fd5b50346102e957817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e957602090603c549051908152f35b50346102e957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e9576020907f0100000000000000000000000000000000000000000000000000000000000000610d20612670565b610d8960025491610d3760028460f81c1415612969565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809416176002556024359033612bbc565b60025416176002555160018152f35b9250346102e957817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e95773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016926020825180927f313ce56700000000000000000000000000000000000000000000000000000000825281875afa908115610e94578391610e53575b5060ff90606094835194855260208501521690820152f35b90506020813d602011610e8c575b81610e6e60209383612819565b81010312610e88575160ff81168103610e88576060610e3b565b8280fd5b3d9150610e61565b505051903d90823e3d90fd5b823461063d57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261063d57508151918260008354610ee181612767565b9081845260209560019187600182169182600014610f82575050600114610f25575b5050506102e59291610f16910385612819565b51928284938452830190612559565b600090815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610f6a5750505082010181610f166102e5610f03565b8054848a018601528895508794909301928101610f51565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b86019093019350849250610f1691506102e59050610f03565b50346102e957817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e95760209073ffffffffffffffffffffffffffffffffffffffff600854169051908152f35b34610e8857827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e88576110707f000000000000000000000000000000000000000000000000000000000000000061319d565b9161109a7f00000000000000000000000000000000000000000000000000000000000000006132d8565b815192602084019084821067ffffffffffffffff83111761112e5750826102e5949261110f9261110298955284845281519788977f0f00000000000000000000000000000000000000000000000000000000000000895260e060208a015260e0890190612559565b9187830390880152612559565b9146606086015230608086015260a085015283820360c08501526126b6565b6041907f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b50346102e957817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e95760207f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258916111d273ffffffffffffffffffffffffffffffffffffffff60085416331461285a565b6111da613398565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00603a541617603a5551338152a180f35b50346102e957817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e9576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102e95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e9578060209273ffffffffffffffffffffffffffffffffffffffff6112cc612670565b1681526007845220549051908152f35b50346102e957817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e9576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b823461063d5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261063d57611382612670565b91602435926044359173ffffffffffffffffffffffffffffffffffffffff908184168094036105a65760643560843580151581036105a657600254966113ce60028960f81c1415612969565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809916176002557f00000000000000000000000000000000000000000000000000000000000000009185831688036115f85789156115d057156115c1576114568930612f84565b847f000000000000000000000000000000000000000000000000000000000000000016803b156102e95781809160448c8e5194859384927f441a3e700000000000000000000000000000000000000000000000000000000084527f00000000000000000000000000000000000000000000000000000000000000008c85015260248401525af180156115b7579187918b9361159c575b50506114f792613797565b80871061156757602087897f010000000000000000000000000000000000000000000000000000000000000089898989855191878352878984015216907faee47cdf925cf525fdae94f9777ee5a06cac37e1c41220d0a8a89ed154f62d1c863392a4600254161760025551908152f35b60449250868851927fbfee4ca00000000000000000000000000000000000000000000000000000000084528301526024820152fd5b8193506115aa9192506127ba565b61063d5785818a926114ec565b8b513d84823e3d90fd5b6115cb8933612f84565b611456565b848b517fc3d83b07000000000000000000000000000000000000000000000000000000008152fd5b602485898d51917f88a50561000000000000000000000000000000000000000000000000000000008352820152fd5b50346102e95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e95760209061168c611665612670565b73ffffffffffffffffffffffffffffffffffffffff16600052600060205260406000205490565b9051908152f35b50346102e957817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e9576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102e957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e9576102e59161173c612670565b82611745612693565b9273ffffffffffffffffffffffffffffffffffffffff8093168152603b6020522091166000526020528060002054905191816fffffffffffffffffffffffffffffffff849360801c9116839060209093929360408301946fffffffffffffffffffffffffffffffff809216845216910152565b50346102e957817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e95760209060ff603a541690519015158152f35b9034610e8857827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e88576009549073ffffffffffffffffffffffffffffffffffffffff92838316918233036118a9575050806008549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a37fffffffffffffffffffffffff0000000000000000000000000000000000000000809316176008551660095580f35b90602060649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b34610e8857827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e885761195773ffffffffffffffffffffffffffffffffffffffff60085416331461285a565b603a549060ff8216156119b757507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0060209216603a5551338152a180f35b60649060208451917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152fd5b50346102e957817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e95760209051670de0b6b3a76400008152f35b50346102e957817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e95760209061168c612e4c565b50346102e957817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e9576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b8290346102e95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e957611b22612670565b611b2a612693565b90604435928560025495611b4460028860f81c1415612969565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8098161760025573ffffffffffffffffffffffffffffffffffffffff84168152600160205220336000526020528560002054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c10575b6020877f010000000000000000000000000000000000000000000000000000000000000088610d89898989612bbc565b848210611c5d5750926020959492610d8992611c50837f010000000000000000000000000000000000000000000000000000000000000097033383612a0b565b9250929495819450611be0565b60649060208851917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152fd5b612601565b925060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e957611cf3612670565b92611cfc612693565b936044803594606493843593600295865499611d1d888c60f81c1415612969565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809c1617885573ffffffffffffffffffffffffffffffffffffffff80911696817f0000000000000000000000000000000000000000000000000000000000000000168803612142578a1561211a578761208b578a3403612030575b817f000000000000000000000000000000000000000000000000000000000000000016803b15610ab457868c8588838f95818e975197889687957eaeef8a0000000000000000000000000000000000000000000000000000000087527f00000000000000000000000000000000000000000000000000000000000000009087015260248601528401525af1801561202657612013575b50808b10611fdf57508216948515611f85575050611e7490611e6f613398565b613ace565b8787116105a6578454908888168983160190898211611f595750927f0100000000000000000000000000000000000000000000000000000000000000949281927fff000000000000000000000000000000000000000000000000000000000000008b60209c97169116178755818152808a52878120611ef48a8254612b80565b90557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a89518b8152a3855187815287898201527f5fe47ed6d4225326d3303476197d782ded5a4e9c14f479dc9ec4992af4e85d59873392a482541617905551908152f35b8360116024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300849160208b51937f08c379a0000000000000000000000000000000000000000000000000000000008552840152601f6024840152820152fd5b8487918c8c51927fbc71f2ba0000000000000000000000000000000000000000000000000000000084528301526024820152fd5b61201f909691966127ba565b9438611e4f565b8b513d89823e3d90fd5b82857f657468206d69736d6174636800000000000000000000000000000000000000008960208e51937f08c379a0000000000000000000000000000000000000000000000000000000008552840152600c6024840152820152fd5b89517f23b872dd00000000000000000000000000000000000000000000000000000000602082015233602482015230888201528b8482015283815260a0810181811067ffffffffffffffff8211176120ee578b526120e99089613d87565b611db9565b6024886041897f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b848a517fa907f2f0000000000000000000000000000000000000000000000000000000008152fd5b602485898c51917faeabe718000000000000000000000000000000000000000000000000000000008352820152fd5b50346102e957817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e9576020907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600254169051908152f35b50903461063d576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e957612208612670565b916122327f00000000000000000000000000000000000000000000000000000000000000006129ce565b9261223d84516128d7565b9273ffffffffffffffffffffffffffffffffffffffff91821691835b86518110156122985780826122706001938a612926565b51168652603b845288862085875284528886205460801c6122918289612926565b5201612259565b8751602080825281906102e5908201896126b6565b50346102e957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e9576020906122f46122ea612670565b6024359033612a0b565b5160018152f35b9034610e885760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e8857612333612670565b91602435918215158303612487576044359283151584036124835773ffffffffffffffffffffffffffffffffffffffff9485916123758360085416331461285a565b15612451571692831590811591612449575b50156123ec575050806008549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a37fffffffffffffffffffffffff0000000000000000000000000000000000000000809216176008556009541660095580f35b90602060649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b905086612387565b9350505050167fffffffffffffffffffffffff0000000000000000000000000000000000000000600954161760095580f35b8580fd5b8480fd5b8383346102e957817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e95782826003546124c981612767565b9081845260209560019187600182169182600014610f825750506001146124fd575050506102e59291610f16910385612819565b9190869350600383527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8284106125415750505082010181610f166102e5610f03565b8054848a018601528895508794909301928101612528565b919082519283825260005b8481106125a35750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b602081830181015184830182015201612564565b90815180825260208080930193019160005b8281106125d7575050505090565b835173ffffffffffffffffffffffffffffffffffffffff16855293810193928101926001016125c9565b346105a65760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a6576102e561265c7f00000000000000000000000000000000000000000000000000000000000000006129ce565b6040519182916020835260208301906125b7565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036105a657565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036105a657565b90815180825260208080930193019160005b8281106126d6575050505090565b8351855293810193928101926001016126c8565b346105a65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a6576020612723612670565b73ffffffffffffffffffffffffffffffffffffffff9060405191807f0000000000000000000000000000000000000000000000000000000000000000169116148152f35b90600182811c921680156127b0575b602083101461278157565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691612776565b67ffffffffffffffff81116127ce57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff8211176127ce57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176127ce57604052565b1561286157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b67ffffffffffffffff81116127ce5760051b60200190565b906128e1826128bf565b6128ee6040519182612819565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061291c82946128bf565b0190602036910137565b805182101561293a5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1561297057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b90604051916129dc836127fd565b600183526020830190602036833783511561293a5773ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff809116918215612afd5716918215612a795760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260018252604060002085600052825280604060002055604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b91908201809211612b8d57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b909173ffffffffffffffffffffffffffffffffffffffff91828116928315612dc8578416938415612d4457848414612ce657612bff91612bfa613398565b613b1d565b600082815280602052604081205491808310612c6257604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815220612c57828254612b80565b9055604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f45524332303a207472616e7366657220746f2073656c660000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016301480612f5b575b15612eb4577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff8211176127ce5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612e8b565b73ffffffffffffffffffffffffffffffffffffffff811690811561311957612fae90611e6f613398565b600091818352826020526040832054818110613095578190838552846020520360408420557effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80821161309157600254908083168183160381811161306457917fff000000000000000000000000000000000000000000000000000000000000007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef949260209416911617600255604051908152a3565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b8380fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b60ff81146131f35760ff811690601f82116131c957604051916131bf836127fd565b8252602082015290565b60046040517fb3512b0c000000000000000000000000000000000000000000000000000000008152fd5b5060405160055481600061320683612767565b808352926020906001908181169081156132955750600114613234575b505061323192500382612819565b90565b91509260056000527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0936000925b82841061327d57506132319450505081016020013880613223565b85548785018301529485019486945092810192613262565b9050602093506132319592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201013880613223565b60ff81146132fa5760ff811690601f82116131c957604051916131bf836127fd565b5060405160065481600061330d83612767565b80835292602090600190818116908115613295575060011461333757505061323192500382612819565b91509260066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f936000925b82841061338057506132319450505081016020013880613223565b85548785018301529485019486945092810192613365565b60ff603a54166133a457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152fd5b91908203918211612b8d57565b565b61343a7f00000000000000000000000000000000000000000000000000000000000000006129ce565b9061344582516128d7565b9180511561373557603c5443146136cf5743603c557effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025416613486613b92565b6000908015948515925b84518110156136c65773ffffffffffffffffffffffffffffffffffffffff9085826134bb8383612926565b51169283600052603d6020908082526040908282600020948351956134df876127fd565b54906fffffffffffffffffffffffffffffffff968783169283825260801c938491015261350d898399612926565b511660008682613632575050508b6135258347613402565b9115613629575b6135c8575b8587116105a65761354191612b80565b928484116105a6576001976135b79584519561355c876127fd565b8189168752168286015260005252600020815160209092015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b6135c18285612926565b5201613490565b95670de0b6b3a764000090818802918883041488151715612b8d578f6135fa578b6135f4920490612b80565b95613531565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6001975061352c565b6024928751938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa9081156136bb578e9181869291613684575b50613525929350613402565b925050508682813d83116136b4575b61369d8183612819565b8101031261063d5750613525838e92518392613678565b503d613693565b8651903d90823e3d90fd5b50939294505050565b916000805b8451811015613730578073ffffffffffffffffffffffffffffffffffffffff6136ff60019388612926565b51168352603d6020526fffffffffffffffffffffffffffffffff6040842054166137298286612926565b52016136d4565b505090565b9190565b3d15613792573d9067ffffffffffffffff82116127ce576040519161378660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184612819565b82523d6000602084013e565b606090565b82156138945773ffffffffffffffffffffffffffffffffffffffff9081169081613834575050600080809381935af16137ce613739565b50156137d657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6574682073656e64206661696c656400000000000000000000000000000000006044820152fd5b604093919351927fa9059cbb000000000000000000000000000000000000000000000000000000006020850152166024830152604482015260448152608081019181831067ffffffffffffffff8411176127ce5761340f92604052613d87565b505050565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116139295791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561391c57815173ffffffffffffffffffffffffffffffffffffffff811615613916579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b6005811015613a9f57806139465750565b600181036139ac5760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b60028103613a125760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b600314613a1b57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b613ad6613411565b908051156138945773ffffffffffffffffffffffffffffffffffffffff83168015159081613b12575b50613b0957505050565b61340f92613eb7565b905030141538613aff565b613b25613411565b91815115613b8c5773ffffffffffffffffffffffffffffffffffffffff9083838383168015159081613b81575b50613b70575b50505083168015159081613b125750613b0957505050565b613b7992613eb7565b388383613b58565b905030141538613b52565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff807f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000906040928351927fa8a77a19000000000000000000000000000000000000000000000000000000008452806004850152306024850152602084604481865afa938415613d7d578694613d49575b508315613d4157823b1561248357906084869283875195869485937f26076f9700000000000000000000000000000000000000000000000000000000855260048501523060248501527f0000000000000000000000000000000000000000000000000000000000000000169788604485015260648401525af18015613d3457613d21575b50803b15610e88579082809260048351809581937ff9f2e8850000000000000000000000000000000000000000000000000000000083525af1908115613d185750613d07575050565b613d1182916127ba565b61063d5750565b513d84823e3d90fd5b613d2d909391936127ba565b9138613cbe565b50505051903d90823e3d90fd5b505050505050565b9093506020813d602011613d75575b81613d6560209383612819565b8101031261248357519238613c3a565b3d9150613d58565b85513d88823e3d90fd5b73ffffffffffffffffffffffffffffffffffffffff1690613df4604051613dad816127fd565b6020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af1613dee613739565b916140b8565b805191821591848315613e93575b505050905015613e0f5750565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b9193818094500103126102e95782015190811515820361063d575080388084613e02565b91909173ffffffffffffffffffffffffffffffffffffffff80821691821515806140ae575b1561407f57613f0f9095949573ffffffffffffffffffffffffffffffffffffffff16600052600060205260406000205490565b906000958215965b81518110156140755782613f2b8284612926565b511690613f388188612926565b519180600052603b926020848152604090816000208a60005281526fffffffffffffffffffffffffffffffff958d87846000205416801561406d575b8581148015614065575b61405557613f8c9086613402565b90818c02918c8304141715612b8d57670de0b6b3a7640000613fc891876000528385528d8660002090600052855204846000205460801c612b80565b948785116105a6578786116105a6578761404f96600199865197613feb896127fd565b1687521683860152600052815281600020908a60005252600020815160209092015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b01613f17565b505050505050506001915061404f565b508515613f7e565b506001613f74565b5050505050509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b5030831415613edc565b9192901561413357508151156140cc575090565b3b156140d55790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8251909150156141465750805190602001fd5b614184906040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352602060048401526024830190612559565b0390fdfea26469706673582212205172a23efae3f3abade014fff862c0f697e1e739847ab15c9aa949f082166fcc64736f6c6343000818003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000eff8e65ac06d7fe70842a4d54959e8692d6ae064000000000000000000000000000000000000000000000000000000000000000900000000000000000000000074c5a0d5dfcc6d4527c849f09ecc360c5345d9860000000000000000000000000000000000000000000000000000000000000016535920536f70686f6e204661726d696e67205045504500000000000000000000000000000000000000000000000000000000000000000000000000000000000953592d7366504550450000000000000000000000000000000000000000000000