{ "_format": "hh-sol-artifact-1", "contractName": "SignatureBridge", "sourceName": "contracts/SignatureBridge.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "initialGovernor", "type": "address" }, { "internalType": "uint32", "name": "nonce", "type": "uint32" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "GovernanceOwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recovered", "type": "address" } ], "name": "RecoveredAddress", "type": "event" }, { "inputs": [], "name": "EVM_CHAIN_ID_TYPE", "outputs": [ { "internalType": "bytes2", "name": "", "type": "bytes2" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "_resourceIdToHandlerAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "resourceID", "type": "bytes32" }, { "internalType": "bytes4", "name": "functionSig", "type": "bytes4" }, { "internalType": "uint32", "name": "nonce", "type": "uint32" }, { "internalType": "bytes32", "name": "newResourceID", "type": "bytes32" }, { "internalType": "address", "name": "handlerAddress", "type": "address" }, { "internalType": "bytes", "name": "sig", "type": "bytes" } ], "name": "adminSetResourceWithSignature", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "averageSessionLengthInMillisecs", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "resourceID", "type": "bytes32" }, { "internalType": "bytes4", "name": "functionSig", "type": "bytes4" }, { "internalType": "uint32[]", "name": "nonces", "type": "uint32[]" }, { "internalType": "bytes32[]", "name": "newResourceIDs", "type": "bytes32[]" }, { "internalType": "address[]", "name": "handlerAddresses", "type": "address[]" }, { "internalType": "bytes32", "name": "hashedData", "type": "bytes32" }, { "internalType": "bytes", "name": "sig", "type": "bytes" } ], "name": "batchAdminSetResourceWithSignature", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes[]", "name": "data", "type": "bytes[]" }, { "internalType": "bytes", "name": "sig", "type": "bytes" } ], "name": "batchExecuteProposalsWithSignature", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_leafIndex", "type": "uint32" }, { "internalType": "address", "name": "_proposedGovernor", "type": "address" }, { "internalType": "bytes32[]", "name": "_siblingPathNodes", "type": "bytes32[]" } ], "name": "createVote", "outputs": [ { "components": [ { "internalType": "uint32", "name": "leafIndex", "type": "uint32" }, { "internalType": "address", "name": "proposedGovernor", "type": "address" }, { "internalType": "bytes32[]", "name": "siblingPathNodes", "type": "bytes32[]" } ], "internalType": "struct Vote", "name": "", "type": "tuple" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "currentVotingPeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes[]", "name": "data", "type": "bytes[]" }, { "internalType": "bytes[]", "name": "sig", "type": "bytes[]" } ], "name": "executeManyProposalsWithSignature", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "bytes", "name": "sig", "type": "bytes" } ], "name": "executeProposalWithSignature", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getChainId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getChainIdType", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getProposalNonce", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "governor", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "resourceID", "type": "bytes32" } ], "name": "isCorrectExecutionChain", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "resourceId", "type": "bytes32" } ], "name": "isCorrectExecutionContext", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isGovernor", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "bytes", "name": "sig", "type": "bytes" } ], "name": "isSignatureFromGovernor", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "hashedData", "type": "bytes32" }, { "internalType": "bytes", "name": "sig", "type": "bytes" } ], "name": "isSignatureFromGovernorPrehashed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastGovernorUpdateTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_resourceId", "type": "bytes32" } ], "name": "parseChainIdFromResourceId", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "proposalNonce", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "bytes", "name": "sig", "type": "bytes" } ], "name": "recover", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "refreshNonce", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sessionLengthMultiplier", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" }, { "internalType": "uint32", "name": "nonce", "type": "uint32" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_voterMerkleRoot", "type": "bytes32" }, { "internalType": "uint64", "name": "_averageSessionLengthInMillisecs", "type": "uint64" }, { "internalType": "uint32", "name": "_voterCount", "type": "uint32" }, { "internalType": "uint32", "name": "_nonce", "type": "uint32" }, { "internalType": "bytes", "name": "_publicKey", "type": "bytes" }, { "internalType": "bytes", "name": "_sig", "type": "bytes" } ], "name": "transferOwnershipWithSignature", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "leafIndex", "type": "uint32" }, { "internalType": "address", "name": "proposedGovernor", "type": "address" }, { "internalType": "bytes32[]", "name": "siblingPathNodes", "type": "bytes32[]" } ], "internalType": "struct Vote", "name": "vote", "type": "tuple" } ], "name": "voteInFavorForceSetGovernor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "leafIndex", "type": "uint32" }, { "internalType": "address", "name": "proposedGovernor", "type": "address" }, { "internalType": "bytes32[]", "name": "siblingPathNodes", "type": "bytes32[]" } ], "internalType": "struct Vote[]", "name": "votes", "type": "tuple[]" }, { "internalType": "bytes[]", "name": "sigs", "type": "bytes[]" } ], "name": "voteInFavorForceSetGovernorWithSig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "voterCount", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "voterMerkleRoot", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60806040526000805463ffffffff60a01b19168155600380546001600160401b0319166001600160401b0317905560026004556006553480156200004257600080fd5b5060405162002e9f38038062002e9f8339810160408190526200006591620000d9565b600080546001600160a01b0384166001600160c01b03199091168117600160a01b63ffffffff85160217825542600181905560405190815284928492917f951a28352d037e924fc829da70e177ee80caa85b070e7a5b98b81fa223edca949060200160405180910390a3505050506200012b565b60008060408385031215620000ed57600080fd5b82516001600160a01b03811681146200010557600080fd5b602084015190925063ffffffff811681146200012057600080fd5b809150509250929050565b612d64806200013b6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638ebfbfa91161010f578063c3677961116100a2578063e786d35d11610071578063e786d35d1461043e578063f2dd0bb714610451578063f5fc3d6b1461047a578063fecb95531461049957600080fd5b8063c3677961146103fc578063c7af33521461040f578063cc3c74a114610422578063d56b80141461042b57600080fd5b8063a20403e9116100de578063a20403e9146103b4578063a6e94c91146103c7578063bdfadc84146103da578063c2230d6e146103e357600080fd5b80638ebfbfa914610372578063957b49a1146103855780639d2b1ed7146103985780639e09583c146103ab57600080fd5b806342169e4811610187578063715018a611610156578063715018a614610320578063830b2f57146103285780638755bcad1461033b5780638b7e87821461034e57600080fd5b806342169e48146102b95780634c830cbd146102c95780636245e561146102e85780636c6f4846146102fd57600080fd5b80631ed13d1b116101c35780631ed13d1b1461028e5780632a69fb46146102a15780633408e470146102aa5780633a049e02146102b057600080fd5b8063016737bb146101f55780630b27fb9a146102255780630c340a241461023757806313cb01f914610262575b600080fd5b600354610208906001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b6009545b60405190815260200161021c565b60005461024a906001600160a01b031681565b6040516001600160a01b03909116815260200161021c565b60005461027990600160a01b900463ffffffff1681565b60405163ffffffff909116815260200161021c565b61024a61029c366004611da9565b6104fe565b61022960025481565b46610229565b61022960065481565b6005546102799063ffffffff1681565b6102d161051e565b60405165ffffffffffff909116815260200161021c565b6102fb6102f6366004611e54565b61056c565b005b61031061030b366004611ed4565b610635565b604051901515815260200161021c565b6102fb61065b565b610310610336366004611f10565b610734565b610310610349366004611da9565b610758565b610359600160f81b81565b6040516001600160f01b0319909116815260200161021c565b6102fb61038036600461202f565b610787565b6102fb610393366004612183565b6108c4565b6102fb6103a636600461224c565b610ac4565b61022960015481565b6102fb6103c23660046122d5565b610b35565b6102fb6103d5366004612311565b610c22565b61022960045481565b6102086103f1366004611f10565b65ffffffffffff1690565b6102fb61040a366004612344565b610c7c565b6000546001600160a01b03163314610310565b61022960095481565b6102fb6104393660046124a2565b610e2a565b6102fb61044c366004612572565b6111dd565b61024a61045f366004611f10565b600a602052600090815260409020546001600160a01b031681565b610310610488366004611f10565b60301c6001600160a01b0316301490565b6104f16104a73660046125c3565b60408051606080820183526000808352602083015291810191909152506040805160608101825263ffffffff9490941684526001600160a01b039290921660208401529082015290565b60405161021c9190612616565b81516020830120600090816105138285611258565b925050505b92915050565b60408051600160f81b602082018190524660e01b6001600160e01b031981166022840152835180840360060181526026909301909352600092916105618161267e565b60d01c935050505090565b8363ffffffff16806009541061059d5760405162461bcd60e51b8152600401610594906126b5565b60405180910390fd5b6009546105ab90600161270e565b8111156105ca5760405162461bcd60e51b815260040161059490612721565b60098190556040516105e8908890889088908890889060200161277e565b604051602081830303815290604052826106028282610758565b61061e5760405162461bcd60e51b8152600401610594906127c5565b61062a8989888861127c565b505050505050505050565b6000806106428484611258565b6000546001600160a01b03908116911614949350505050565b6000546001600160a01b031633146106855760405162461bcd60e51b815260040161059490612811565b600060028190556003805467ffffffffffffffff19166780000000000000001790556005805463ffffffff19169055546106cd90600160a01b900463ffffffff166001612857565b600080546001600160c01b031916600160a01b63ffffffff93909316929092026001600160a01b03191691909117815560405142815281907f951a28352d037e924fc829da70e177ee80caa85b070e7a5b98b81fa223edca949060200160405180910390a3565b600065ffffffffffff82168061074861051e565b65ffffffffffff16149392505050565b815160208301206000908161076d8285611258565b6000546001600160a01b0390811691161495945050505050565b610791828461287b565b8180518251146107fc5760405162461bcd60e51b815260206004820152603060248201527f5369676e61747572654272696467653a204461746120616e6420736967206c6560448201526f0dccee8d0e640daeae6e840dac2e8c6d60831b6064820152608401610594565b60005b82518110156108725761084483828151811061081d5761081d612888565b602002602001015183838151811061083757610837612888565b6020026020010151610758565b6108605760405162461bcd60e51b8152600401610594906127c5565b8061086a8161289e565b9150506107ff565b5060005b848110156108bc576108aa86868381811061089357610893612888565b90506020028101906108a591906128b7565b611587565b806108b48161289e565b915050610876565b505050505050565b6003546004546103e8916108e3916001600160401b03909116906128fd565b6108ed919061292a565b6001546108fa919061270e565b4210156109195760405162461bcd60e51b81526004016105949061293e565b80518251146109855760405162461bcd60e51b815260206004820152603260248201527f476f7665726e61626c653a20496e76616c6964206e756d626572206f6620766f60448201527174657320616e64207369676e61747572657360701b6064820152608401610594565b60005b8251811015610abf5760006001600160a01b03168382815181106109ae576109ae612888565b6020026020010151602001516001600160a01b0316036109e05760405162461bcd60e51b81526004016105949061297f565b6000610a3d8483815181106109f7576109f7612888565b6020026020010151604051602001610a0f9190612616565b604051602081830303815290604052848481518110610a3057610a30612888565b60200260200101516104fe565b9050610a84848381518110610a5457610a54612888565b60200260200101516040015182868581518110610a7357610a73612888565b6020026020010151600001516116d9565b15610aac57610aac848381518110610a9e57610a9e612888565b602002602001015182611814565b5080610ab78161289e565b915050610988565b505050565b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250849250610b08915083905082610758565b610b245760405162461bcd60e51b8152600401610594906127c5565b610b2e8585611587565b5050505050565b6003546004546103e891610b54916001600160401b03909116906128fd565b610b5e919061292a565b600154610b6b919061270e565b421015610b8a5760405162461bcd60e51b81526004016105949061293e565b60208101516001600160a01b0316610bb45760405162461bcd60e51b81526004016105949061297f565b604081015181513391610bc89183906116d9565b610c145760405162461bcd60e51b815260206004820181905260248201527f476f7665726e61626c653a20496e76616c6964206d65726b6c652070726f6f666044820152606401610594565b610c1e8282611814565b5050565b6000546001600160a01b03163314610c4c5760405162461bcd60e51b815260040161059490612811565b610c5582611951565b6000805463ffffffff909216600160a01b0263ffffffff60a01b1990921691909117905550565b60005463ffffffff808516600160a01b9092041610610cdd5760405162461bcd60e51b815260206004820152601960248201527f476f7665726e61626c653a20496e76616c6964206e6f6e6365000000000000006044820152606401610594565b600054610cf890600160a01b900463ffffffff166001612857565b63ffffffff168363ffffffff161115610d615760405162461bcd60e51b815260206004820152602560248201527f476f7665726e61626c653a204e6f6e6365206d75737420696e6372656d656e74604482015264206279203160d81b6064820152608401610594565b815160208084019190912060405190918291610da091610d8b918b918b918b918b918b9101612a00565b60405160208183030381529060405284610758565b610dbc5760405162461bcd60e51b815260040161059490612811565b60028890556003805467ffffffffffffffff19166001600160401b0389161790556005805463ffffffff191663ffffffff888116919091179091556000805463ffffffff60a01b1916600160a01b92881692909202919091179055610e2081611951565b5050505050505050565b8460005b8151811015610efc57818181518110610e4957610e49612888565b602002602001015163ffffffff1660095410610e775760405162461bcd60e51b8152600401610594906126b5565b600954610e8590600161270e565b828281518110610e9757610e97612888565b602002602001015163ffffffff161115610ec35760405162461bcd60e51b815260040161059490612721565b818181518110610ed557610ed5612888565b602002602001015163ffffffff166009819055508080610ef49061289e565b915050610e2e565b508282610f098282610635565b610f255760405162461bcd60e51b8152600401610594906127c5565b86518851148015610f37575085518751145b610fbf5760405162461bcd60e51b815260206004820152604d60248201527f5369676e61747572654272696467653a3a626174636841646d696e536574526560448201527f736f75726365576974685369676e61747572653a204172726179206c656e677460648201526c0d0e640daeae6e840dac2e8c6d609b1b608482015260a401610594565b600088516001600160401b03811115610fda57610fda611cf4565b60405190808252806020026020018201604052801561100d57816020015b6060815260200190600190039081610ff85790505b50905060005b89518110156110bf578b8b8b838151811061103057611030612888565b60200260200101518b848151811061104a5761104a612888565b60200260200101518b858151811061106457611064612888565b602002602001015160405160200161108095949392919061277e565b6040516020818303038152906040528282815181106110a1576110a1612888565b602002602001018190525080806110b79061289e565b915050611013565b5085816040516020016110d29190612a5d565b60405160208183030381529060405280519060200120146111735760405162461bcd60e51b815260206004820152604f60248201527f5369676e61747572654272696467653a3a626174636841646d696e536574526560448201527f736f75726365576974685369676e61747572653a20486173686564206461746160648201526e040c8decae640dcdee840dac2e8c6d608b1b608482015260a401610594565b60005b89518110156111cf576111bd8c8c8b848151811061119657611196612888565b60200260200101518b85815181106111b0576111b0612888565b602002602001015161127c565b806111c78161289e565b915050611176565b505050505050505050505050565b82826040516020016111f0929190612b00565b6040516020818303038152906040528161120a8282610758565b6112265760405162461bcd60e51b8152600401610594906127c5565b60005b848110156108bc5761124686868381811061089357610893612888565b806112508161289e565b915050611229565b60008060006112678585611a4a565b9150915061127481611a8f565b509392505050565b60405163830b2f5760e01b815260048101859052309063830b2f5790602401602060405180830381865afa1580156112b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112dc9190612b9b565b6112f85760405162461bcd60e51b815260040161059490612bbd565b60405163830b2f5760e01b815260048101839052309063830b2f5790602401602060405180830381865afa158015611334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113589190612b9b565b6113745760405162461bcd60e51b815260040161059490612bbd565b60405163f5fc3d6b60e01b815260048101859052309063f5fc3d6b90602401602060405180830381865afa1580156113b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d49190612b9b565b6114585760405162461bcd60e51b815260206004820152604960248201527f5369676e61747572654272696467653a3a61646d696e5365745265736f75726360448201527f65576974685369676e61747572653a20496e76616c696420657865637574696f6064820152681b8818dbdb9d195e1d60ba1b608482015260a401610594565b6001600160e01b03198316636245e56160e01b146114f15760405162461bcd60e51b815260206004820152604a60248201527f5369676e61747572654272696467653a3a61646d696e5365745265736f75726360448201527f65576974685369676e61747572653a20496e76616c69642066756e6374696f6e606482015269207369676e617475726560b01b608482015260a401610594565b6000828152600a60205260409081902080546001600160a01b0319166001600160a01b038481169182179092559151635c7d1b9b60e11b815260048101859052603085901c909116602482018190528392909163b8fa373690604401600060405180830381600087803b15801561156757600080fd5b505af115801561157b573d6000803e3d6000fd5b50505050505050505050565b60006115966020828486612c2b565b61159f91612c55565b60405163830b2f5760e01b815260048101829052909150309063830b2f5790602401602060405180830381865afa1580156115de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116029190612b9b565b6116665760405162461bcd60e51b815260206004820152602f60248201527f5369676e61747572654272696467653a20426174636820457865637574696e6760448201526e1037b7103bb937b7339031b430b4b760891b6064820152608401610594565b6000818152600a60205260409081902054905163712467f960e11b81526001600160a01b03909116908190819063e248cff2906116ab90869089908990600401612c73565b600060405180830381600087803b1580156116c557600080fd5b505af115801561062a573d6000803e3d6000fd5b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160408051601f1981840301815291905280516020909101209050808360005b87518160ff16101561180557611733600283612c96565b63ffffffff166000036117955782888260ff168151811061175657611756612888565b6020026020010151604051602001611778929190918252602082015260400190565b6040516020818303038152906040528051906020012092506117e6565b878160ff16815181106117aa576117aa612888565b6020026020010151836040516020016117cd929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b6117f1600283612cb9565b9150806117fd81612cdc565b91505061171c565b50506002541495945050505050565b60065460009081526007602090815260408083206001600160a01b03858116855292529091205416156118b55760065460008181526007602090815260408083206001600160a01b0380871685529083528184205494845260088352818420941680845293909152812080546001929061189590849063ffffffff16612cfb565b92506101000a81548163ffffffff021916908363ffffffff160217905550505b602082810180516006805460009081526007855260408082206001600160a01b03888116845290875281832080546001600160a01b0319169582169590951790945591548152600885528181209351909216825291909252812080546001929061192690849063ffffffff16612857565b92506101000a81548163ffffffff021916908363ffffffff160217905550610c1e8260200151611bdc565b6001600160a01b0381166119bc5760405162461bcd60e51b815260206004820152602c60248201527f476f7665726e61626c653a204e657720676f7665726e6f72206973207468652060448201526b7a65726f206164647265737360a01b6064820152608401610594565b600080546001600160a01b038381166001600160a01b03198316178355426001556006805491909216929091906119f28361289e565b9190505550816001600160a01b0316816001600160a01b03167f951a28352d037e924fc829da70e177ee80caa85b070e7a5b98b81fa223edca94600154604051611a3e91815260200190565b60405180910390a35050565b6000808251604103611a805760208301516040840151606085015160001a611a7487828585611c30565b94509450505050611a88565b506000905060025b9250929050565b6000816004811115611aa357611aa3612d18565b03611aab5750565b6001816004811115611abf57611abf612d18565b03611b0c5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610594565b6002816004811115611b2057611b20612d18565b03611b6d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610594565b6003816004811115611b8157611b81612d18565b03611bd95760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610594565b50565b600554611bf19060029063ffffffff16612cb9565b60065460009081526008602090815260408083206001600160a01b038616845290915290205463ffffffff91821691161115611bd957611bd981611951565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611c675750600090506003611ceb565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611cbb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611ce457600060019250925050611ceb565b9150600090505b94509492505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611d3257611d32611cf4565b604052919050565b600082601f830112611d4b57600080fd5b81356001600160401b03811115611d6457611d64611cf4565b611d77601f8201601f1916602001611d0a565b818152846020838601011115611d8c57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611dbc57600080fd5b82356001600160401b0380821115611dd357600080fd5b611ddf86838701611d3a565b93506020850135915080821115611df557600080fd5b50611e0285828601611d3a565b9150509250929050565b80356001600160e01b031981168114611e2457600080fd5b919050565b803563ffffffff81168114611e2457600080fd5b80356001600160a01b0381168114611e2457600080fd5b60008060008060008060c08789031215611e6d57600080fd5b86359550611e7d60208801611e0c565b9450611e8b60408801611e29565b935060608701359250611ea060808801611e3d565b915060a08701356001600160401b03811115611ebb57600080fd5b611ec789828a01611d3a565b9150509295509295509295565b60008060408385031215611ee757600080fd5b8235915060208301356001600160401b03811115611f0457600080fd5b611e0285828601611d3a565b600060208284031215611f2257600080fd5b5035919050565b60008083601f840112611f3b57600080fd5b5081356001600160401b03811115611f5257600080fd5b6020830191508360208260051b8501011115611a8857600080fd5b60006001600160401b03821115611f8657611f86611cf4565b5060051b60200190565b6000611fa3611f9e84611f6d565b611d0a565b8381529050602080820190600585901b840186811115611fc257600080fd5b845b81811015611ffd5780356001600160401b03811115611fe35760008081fd5b611fef89828901611d3a565b855250928201928201611fc4565b505050509392505050565b600082601f83011261201957600080fd5b61202883833560208501611f90565b9392505050565b60008060006040848603121561204457600080fd5b83356001600160401b038082111561205b57600080fd5b61206787838801611f29565b9095509350602086013591508082111561208057600080fd5b5061208d86828701612008565b9150509250925092565b600082601f8301126120a857600080fd5b813560206120b8611f9e83611f6d565b82815260059290921b840181019181810190868411156120d757600080fd5b8286015b848110156120f257803583529183019183016120db565b509695505050505050565b60006060828403121561210f57600080fd5b604051606081016001600160401b03828210818311171561213257612132611cf4565b8160405282935061214285611e29565b835261215060208601611e3d565b6020840152604085013591508082111561216957600080fd5b5061217685828601612097565b6040830152505092915050565b6000806040838503121561219657600080fd5b82356001600160401b03808211156121ad57600080fd5b818501915085601f8301126121c157600080fd5b813560206121d1611f9e83611f6d565b82815260059290921b840181019181810190898411156121f057600080fd5b8286015b848110156122285780358681111561220c5760008081fd5b61221a8c86838b01016120fd565b8452509183019183016121f4565b509650508601359250508082111561223f57600080fd5b50611e0285828601612008565b60008060006040848603121561226157600080fd5b83356001600160401b038082111561227857600080fd5b818601915086601f83011261228c57600080fd5b81358181111561229b57600080fd5b8760208285010111156122ad57600080fd5b6020928301955093509085013590808211156122c857600080fd5b5061208d86828701611d3a565b6000602082840312156122e757600080fd5b81356001600160401b038111156122fd57600080fd5b612309848285016120fd565b949350505050565b6000806040838503121561232457600080fd5b61232d83611e3d565b915061233b60208401611e29565b90509250929050565b60008060008060008060c0878903121561235d57600080fd5b8635955060208701356001600160401b03808216821461237c57600080fd5b81965061238b60408a01611e29565b955061239960608a01611e29565b945060808901359150808211156123af57600080fd5b6123bb8a838b01611d3a565b935060a08901359150808211156123d157600080fd5b50611ec789828a01611d3a565b600082601f8301126123ef57600080fd5b813560206123ff611f9e83611f6d565b82815260059290921b8401810191818101908684111561241e57600080fd5b8286015b848110156120f25761243381611e29565b8352918301918301612422565b600082601f83011261245157600080fd5b81356020612461611f9e83611f6d565b82815260059290921b8401810191818101908684111561248057600080fd5b8286015b848110156120f25761249581611e3d565b8352918301918301612484565b600080600080600080600060e0888a0312156124bd57600080fd5b873596506124cd60208901611e0c565b955060408801356001600160401b03808211156124e957600080fd5b6124f58b838c016123de565b965060608a013591508082111561250b57600080fd5b6125178b838c01612097565b955060808a013591508082111561252d57600080fd5b6125398b838c01612440565b945060a08a0135935060c08a013591508082111561255657600080fd5b506125638a828b01611d3a565b91505092959891949750929550565b60008060006040848603121561258757600080fd5b83356001600160401b038082111561259e57600080fd5b6125aa87838801611f29565b909550935060208601359150808211156122c857600080fd5b6000806000606084860312156125d857600080fd5b6125e184611e29565b92506125ef60208501611e3d565b915060408401356001600160401b0381111561260a57600080fd5b61208d86828701612097565b6020808252825163ffffffff1682820152828101516001600160a01b031660408084019190915283015160608084015280516080840181905260009291820190839060a08601905b808310156120f2578351825292840192600192909201919084019061265e565b805160208201516001600160d01b031980821692919060068310156126ad5780818460060360031b1b83161693505b505050919050565b60208082526023908201527f50726f706f73616c4e6f6e6365547261636b65723a20496e76616c6964206e6f6040820152626e636560e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610518576105186126f8565b6020808252603a908201527f50726f706f73616c4e6f6e6365547261636b65723a204e6f6e6365206d75737460408201527f206e6f7420696e6372656d656e74206d6f7265207468616e2031000000000000606082015260800190565b9485526001600160e01b0319938416602086015260e09290921b9092166024840152602883019190915260601b6bffffffffffffffffffffffff19166048820152605c0190565b6020808252602c908201527f5369676e61747572654272696467653a204e6f742076616c696420736967206660408201526b3937b69033b7bb32b93737b960a11b606082015260800190565b60208082526026908201527f476f7665726e61626c653a2063616c6c6572206973206e6f742074686520676f6040820152653b32b93737b960d11b606082015260800190565b63ffffffff818116838216019080821115612874576128746126f8565b5092915050565b6000612028368484611f90565b634e487b7160e01b600052603260045260246000fd5b6000600182016128b0576128b06126f8565b5060010190565b6000808335601e198436030181126128ce57600080fd5b8301803591506001600160401b038211156128e857600080fd5b602001915036819003821315611a8857600080fd5b8082028115828204841417610518576105186126f8565b634e487b7160e01b600052601260045260246000fd5b60008261293957612939612914565b500490565b60208082526021908201527f476f7665726e61626c653a20496e76616c69642074696d6520666f7220766f746040820152606560f81b606082015260800190565b60208082526038908201527f476f7665726e61626c653a2050726f706f73656420676f7665726e6f7220636160408201527f6e6e6f7420626520746865207a65726f20616464726573730000000000000000606082015260800190565b60005b838110156129f75781810151838201526020016129df565b50506000910152565b8581526001600160401b0360c01b8560c01b166020820152600063ffffffff60e01b808660e01b166028840152808560e01b16602c840152508251612a4c8160308501602087016129dc565b919091016030019695505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612aca57878503603f1901845281518051808752612aab818989018a85016129dc565b601f01601f191695909501860194509285019290850190600101612a84565b5092979650505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208082528181018390526000906040600585901b8401810190840186845b87811015612b8e57868403603f190183528135368a9003601e19018112612b4557600080fd5b890185810190356001600160401b03811115612b6057600080fd5b803603821315612b6f57600080fd5b612b7a868284612ad7565b955050509184019190840190600101612b1f565b5091979650505050505050565b600060208284031215612bad57600080fd5b8151801515811461202857600080fd5b60208082526048908201527f5369676e61747572654272696467653a3a61646d696e5365745265736f75726360408201527f65576974685369676e61747572653a20457865637574696e67206f6e2077726f60608201526737339031b430b4b760c11b608082015260a00190565b60008085851115612c3b57600080fd5b83861115612c4857600080fd5b5050820193919092039150565b8035602083101561051857600019602084900360031b1b1692915050565b838152604060208201526000612c8d604083018486612ad7565b95945050505050565b600063ffffffff80841680612cad57612cad612914565b92169190910692915050565b600063ffffffff80841680612cd057612cd0612914565b92169190910492915050565b600060ff821660ff8103612cf257612cf26126f8565b60010192915050565b63ffffffff828116828216039080821115612874576128746126f8565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220d581f1e6328b2b1a849bb326cdf76cb968550f18b82d61f3f2d92f21058999ca64736f6c63430008120033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80638ebfbfa91161010f578063c3677961116100a2578063e786d35d11610071578063e786d35d1461043e578063f2dd0bb714610451578063f5fc3d6b1461047a578063fecb95531461049957600080fd5b8063c3677961146103fc578063c7af33521461040f578063cc3c74a114610422578063d56b80141461042b57600080fd5b8063a20403e9116100de578063a20403e9146103b4578063a6e94c91146103c7578063bdfadc84146103da578063c2230d6e146103e357600080fd5b80638ebfbfa914610372578063957b49a1146103855780639d2b1ed7146103985780639e09583c146103ab57600080fd5b806342169e4811610187578063715018a611610156578063715018a614610320578063830b2f57146103285780638755bcad1461033b5780638b7e87821461034e57600080fd5b806342169e48146102b95780634c830cbd146102c95780636245e561146102e85780636c6f4846146102fd57600080fd5b80631ed13d1b116101c35780631ed13d1b1461028e5780632a69fb46146102a15780633408e470146102aa5780633a049e02146102b057600080fd5b8063016737bb146101f55780630b27fb9a146102255780630c340a241461023757806313cb01f914610262575b600080fd5b600354610208906001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b6009545b60405190815260200161021c565b60005461024a906001600160a01b031681565b6040516001600160a01b03909116815260200161021c565b60005461027990600160a01b900463ffffffff1681565b60405163ffffffff909116815260200161021c565b61024a61029c366004611da9565b6104fe565b61022960025481565b46610229565b61022960065481565b6005546102799063ffffffff1681565b6102d161051e565b60405165ffffffffffff909116815260200161021c565b6102fb6102f6366004611e54565b61056c565b005b61031061030b366004611ed4565b610635565b604051901515815260200161021c565b6102fb61065b565b610310610336366004611f10565b610734565b610310610349366004611da9565b610758565b610359600160f81b81565b6040516001600160f01b0319909116815260200161021c565b6102fb61038036600461202f565b610787565b6102fb610393366004612183565b6108c4565b6102fb6103a636600461224c565b610ac4565b61022960015481565b6102fb6103c23660046122d5565b610b35565b6102fb6103d5366004612311565b610c22565b61022960045481565b6102086103f1366004611f10565b65ffffffffffff1690565b6102fb61040a366004612344565b610c7c565b6000546001600160a01b03163314610310565b61022960095481565b6102fb6104393660046124a2565b610e2a565b6102fb61044c366004612572565b6111dd565b61024a61045f366004611f10565b600a602052600090815260409020546001600160a01b031681565b610310610488366004611f10565b60301c6001600160a01b0316301490565b6104f16104a73660046125c3565b60408051606080820183526000808352602083015291810191909152506040805160608101825263ffffffff9490941684526001600160a01b039290921660208401529082015290565b60405161021c9190612616565b81516020830120600090816105138285611258565b925050505b92915050565b60408051600160f81b602082018190524660e01b6001600160e01b031981166022840152835180840360060181526026909301909352600092916105618161267e565b60d01c935050505090565b8363ffffffff16806009541061059d5760405162461bcd60e51b8152600401610594906126b5565b60405180910390fd5b6009546105ab90600161270e565b8111156105ca5760405162461bcd60e51b815260040161059490612721565b60098190556040516105e8908890889088908890889060200161277e565b604051602081830303815290604052826106028282610758565b61061e5760405162461bcd60e51b8152600401610594906127c5565b61062a8989888861127c565b505050505050505050565b6000806106428484611258565b6000546001600160a01b03908116911614949350505050565b6000546001600160a01b031633146106855760405162461bcd60e51b815260040161059490612811565b600060028190556003805467ffffffffffffffff19166780000000000000001790556005805463ffffffff19169055546106cd90600160a01b900463ffffffff166001612857565b600080546001600160c01b031916600160a01b63ffffffff93909316929092026001600160a01b03191691909117815560405142815281907f951a28352d037e924fc829da70e177ee80caa85b070e7a5b98b81fa223edca949060200160405180910390a3565b600065ffffffffffff82168061074861051e565b65ffffffffffff16149392505050565b815160208301206000908161076d8285611258565b6000546001600160a01b0390811691161495945050505050565b610791828461287b565b8180518251146107fc5760405162461bcd60e51b815260206004820152603060248201527f5369676e61747572654272696467653a204461746120616e6420736967206c6560448201526f0dccee8d0e640daeae6e840dac2e8c6d60831b6064820152608401610594565b60005b82518110156108725761084483828151811061081d5761081d612888565b602002602001015183838151811061083757610837612888565b6020026020010151610758565b6108605760405162461bcd60e51b8152600401610594906127c5565b8061086a8161289e565b9150506107ff565b5060005b848110156108bc576108aa86868381811061089357610893612888565b90506020028101906108a591906128b7565b611587565b806108b48161289e565b915050610876565b505050505050565b6003546004546103e8916108e3916001600160401b03909116906128fd565b6108ed919061292a565b6001546108fa919061270e565b4210156109195760405162461bcd60e51b81526004016105949061293e565b80518251146109855760405162461bcd60e51b815260206004820152603260248201527f476f7665726e61626c653a20496e76616c6964206e756d626572206f6620766f60448201527174657320616e64207369676e61747572657360701b6064820152608401610594565b60005b8251811015610abf5760006001600160a01b03168382815181106109ae576109ae612888565b6020026020010151602001516001600160a01b0316036109e05760405162461bcd60e51b81526004016105949061297f565b6000610a3d8483815181106109f7576109f7612888565b6020026020010151604051602001610a0f9190612616565b604051602081830303815290604052848481518110610a3057610a30612888565b60200260200101516104fe565b9050610a84848381518110610a5457610a54612888565b60200260200101516040015182868581518110610a7357610a73612888565b6020026020010151600001516116d9565b15610aac57610aac848381518110610a9e57610a9e612888565b602002602001015182611814565b5080610ab78161289e565b915050610988565b505050565b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250849250610b08915083905082610758565b610b245760405162461bcd60e51b8152600401610594906127c5565b610b2e8585611587565b5050505050565b6003546004546103e891610b54916001600160401b03909116906128fd565b610b5e919061292a565b600154610b6b919061270e565b421015610b8a5760405162461bcd60e51b81526004016105949061293e565b60208101516001600160a01b0316610bb45760405162461bcd60e51b81526004016105949061297f565b604081015181513391610bc89183906116d9565b610c145760405162461bcd60e51b815260206004820181905260248201527f476f7665726e61626c653a20496e76616c6964206d65726b6c652070726f6f666044820152606401610594565b610c1e8282611814565b5050565b6000546001600160a01b03163314610c4c5760405162461bcd60e51b815260040161059490612811565b610c5582611951565b6000805463ffffffff909216600160a01b0263ffffffff60a01b1990921691909117905550565b60005463ffffffff808516600160a01b9092041610610cdd5760405162461bcd60e51b815260206004820152601960248201527f476f7665726e61626c653a20496e76616c6964206e6f6e6365000000000000006044820152606401610594565b600054610cf890600160a01b900463ffffffff166001612857565b63ffffffff168363ffffffff161115610d615760405162461bcd60e51b815260206004820152602560248201527f476f7665726e61626c653a204e6f6e6365206d75737420696e6372656d656e74604482015264206279203160d81b6064820152608401610594565b815160208084019190912060405190918291610da091610d8b918b918b918b918b918b9101612a00565b60405160208183030381529060405284610758565b610dbc5760405162461bcd60e51b815260040161059490612811565b60028890556003805467ffffffffffffffff19166001600160401b0389161790556005805463ffffffff191663ffffffff888116919091179091556000805463ffffffff60a01b1916600160a01b92881692909202919091179055610e2081611951565b5050505050505050565b8460005b8151811015610efc57818181518110610e4957610e49612888565b602002602001015163ffffffff1660095410610e775760405162461bcd60e51b8152600401610594906126b5565b600954610e8590600161270e565b828281518110610e9757610e97612888565b602002602001015163ffffffff161115610ec35760405162461bcd60e51b815260040161059490612721565b818181518110610ed557610ed5612888565b602002602001015163ffffffff166009819055508080610ef49061289e565b915050610e2e565b508282610f098282610635565b610f255760405162461bcd60e51b8152600401610594906127c5565b86518851148015610f37575085518751145b610fbf5760405162461bcd60e51b815260206004820152604d60248201527f5369676e61747572654272696467653a3a626174636841646d696e536574526560448201527f736f75726365576974685369676e61747572653a204172726179206c656e677460648201526c0d0e640daeae6e840dac2e8c6d609b1b608482015260a401610594565b600088516001600160401b03811115610fda57610fda611cf4565b60405190808252806020026020018201604052801561100d57816020015b6060815260200190600190039081610ff85790505b50905060005b89518110156110bf578b8b8b838151811061103057611030612888565b60200260200101518b848151811061104a5761104a612888565b60200260200101518b858151811061106457611064612888565b602002602001015160405160200161108095949392919061277e565b6040516020818303038152906040528282815181106110a1576110a1612888565b602002602001018190525080806110b79061289e565b915050611013565b5085816040516020016110d29190612a5d565b60405160208183030381529060405280519060200120146111735760405162461bcd60e51b815260206004820152604f60248201527f5369676e61747572654272696467653a3a626174636841646d696e536574526560448201527f736f75726365576974685369676e61747572653a20486173686564206461746160648201526e040c8decae640dcdee840dac2e8c6d608b1b608482015260a401610594565b60005b89518110156111cf576111bd8c8c8b848151811061119657611196612888565b60200260200101518b85815181106111b0576111b0612888565b602002602001015161127c565b806111c78161289e565b915050611176565b505050505050505050505050565b82826040516020016111f0929190612b00565b6040516020818303038152906040528161120a8282610758565b6112265760405162461bcd60e51b8152600401610594906127c5565b60005b848110156108bc5761124686868381811061089357610893612888565b806112508161289e565b915050611229565b60008060006112678585611a4a565b9150915061127481611a8f565b509392505050565b60405163830b2f5760e01b815260048101859052309063830b2f5790602401602060405180830381865afa1580156112b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112dc9190612b9b565b6112f85760405162461bcd60e51b815260040161059490612bbd565b60405163830b2f5760e01b815260048101839052309063830b2f5790602401602060405180830381865afa158015611334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113589190612b9b565b6113745760405162461bcd60e51b815260040161059490612bbd565b60405163f5fc3d6b60e01b815260048101859052309063f5fc3d6b90602401602060405180830381865afa1580156113b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d49190612b9b565b6114585760405162461bcd60e51b815260206004820152604960248201527f5369676e61747572654272696467653a3a61646d696e5365745265736f75726360448201527f65576974685369676e61747572653a20496e76616c696420657865637574696f6064820152681b8818dbdb9d195e1d60ba1b608482015260a401610594565b6001600160e01b03198316636245e56160e01b146114f15760405162461bcd60e51b815260206004820152604a60248201527f5369676e61747572654272696467653a3a61646d696e5365745265736f75726360448201527f65576974685369676e61747572653a20496e76616c69642066756e6374696f6e606482015269207369676e617475726560b01b608482015260a401610594565b6000828152600a60205260409081902080546001600160a01b0319166001600160a01b038481169182179092559151635c7d1b9b60e11b815260048101859052603085901c909116602482018190528392909163b8fa373690604401600060405180830381600087803b15801561156757600080fd5b505af115801561157b573d6000803e3d6000fd5b50505050505050505050565b60006115966020828486612c2b565b61159f91612c55565b60405163830b2f5760e01b815260048101829052909150309063830b2f5790602401602060405180830381865afa1580156115de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116029190612b9b565b6116665760405162461bcd60e51b815260206004820152602f60248201527f5369676e61747572654272696467653a20426174636820457865637574696e6760448201526e1037b7103bb937b7339031b430b4b760891b6064820152608401610594565b6000818152600a60205260409081902054905163712467f960e11b81526001600160a01b03909116908190819063e248cff2906116ab90869089908990600401612c73565b600060405180830381600087803b1580156116c557600080fd5b505af115801561062a573d6000803e3d6000fd5b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160408051601f1981840301815291905280516020909101209050808360005b87518160ff16101561180557611733600283612c96565b63ffffffff166000036117955782888260ff168151811061175657611756612888565b6020026020010151604051602001611778929190918252602082015260400190565b6040516020818303038152906040528051906020012092506117e6565b878160ff16815181106117aa576117aa612888565b6020026020010151836040516020016117cd929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b6117f1600283612cb9565b9150806117fd81612cdc565b91505061171c565b50506002541495945050505050565b60065460009081526007602090815260408083206001600160a01b03858116855292529091205416156118b55760065460008181526007602090815260408083206001600160a01b0380871685529083528184205494845260088352818420941680845293909152812080546001929061189590849063ffffffff16612cfb565b92506101000a81548163ffffffff021916908363ffffffff160217905550505b602082810180516006805460009081526007855260408082206001600160a01b03888116845290875281832080546001600160a01b0319169582169590951790945591548152600885528181209351909216825291909252812080546001929061192690849063ffffffff16612857565b92506101000a81548163ffffffff021916908363ffffffff160217905550610c1e8260200151611bdc565b6001600160a01b0381166119bc5760405162461bcd60e51b815260206004820152602c60248201527f476f7665726e61626c653a204e657720676f7665726e6f72206973207468652060448201526b7a65726f206164647265737360a01b6064820152608401610594565b600080546001600160a01b038381166001600160a01b03198316178355426001556006805491909216929091906119f28361289e565b9190505550816001600160a01b0316816001600160a01b03167f951a28352d037e924fc829da70e177ee80caa85b070e7a5b98b81fa223edca94600154604051611a3e91815260200190565b60405180910390a35050565b6000808251604103611a805760208301516040840151606085015160001a611a7487828585611c30565b94509450505050611a88565b506000905060025b9250929050565b6000816004811115611aa357611aa3612d18565b03611aab5750565b6001816004811115611abf57611abf612d18565b03611b0c5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610594565b6002816004811115611b2057611b20612d18565b03611b6d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610594565b6003816004811115611b8157611b81612d18565b03611bd95760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610594565b50565b600554611bf19060029063ffffffff16612cb9565b60065460009081526008602090815260408083206001600160a01b038616845290915290205463ffffffff91821691161115611bd957611bd981611951565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611c675750600090506003611ceb565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611cbb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611ce457600060019250925050611ceb565b9150600090505b94509492505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611d3257611d32611cf4565b604052919050565b600082601f830112611d4b57600080fd5b81356001600160401b03811115611d6457611d64611cf4565b611d77601f8201601f1916602001611d0a565b818152846020838601011115611d8c57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611dbc57600080fd5b82356001600160401b0380821115611dd357600080fd5b611ddf86838701611d3a565b93506020850135915080821115611df557600080fd5b50611e0285828601611d3a565b9150509250929050565b80356001600160e01b031981168114611e2457600080fd5b919050565b803563ffffffff81168114611e2457600080fd5b80356001600160a01b0381168114611e2457600080fd5b60008060008060008060c08789031215611e6d57600080fd5b86359550611e7d60208801611e0c565b9450611e8b60408801611e29565b935060608701359250611ea060808801611e3d565b915060a08701356001600160401b03811115611ebb57600080fd5b611ec789828a01611d3a565b9150509295509295509295565b60008060408385031215611ee757600080fd5b8235915060208301356001600160401b03811115611f0457600080fd5b611e0285828601611d3a565b600060208284031215611f2257600080fd5b5035919050565b60008083601f840112611f3b57600080fd5b5081356001600160401b03811115611f5257600080fd5b6020830191508360208260051b8501011115611a8857600080fd5b60006001600160401b03821115611f8657611f86611cf4565b5060051b60200190565b6000611fa3611f9e84611f6d565b611d0a565b8381529050602080820190600585901b840186811115611fc257600080fd5b845b81811015611ffd5780356001600160401b03811115611fe35760008081fd5b611fef89828901611d3a565b855250928201928201611fc4565b505050509392505050565b600082601f83011261201957600080fd5b61202883833560208501611f90565b9392505050565b60008060006040848603121561204457600080fd5b83356001600160401b038082111561205b57600080fd5b61206787838801611f29565b9095509350602086013591508082111561208057600080fd5b5061208d86828701612008565b9150509250925092565b600082601f8301126120a857600080fd5b813560206120b8611f9e83611f6d565b82815260059290921b840181019181810190868411156120d757600080fd5b8286015b848110156120f257803583529183019183016120db565b509695505050505050565b60006060828403121561210f57600080fd5b604051606081016001600160401b03828210818311171561213257612132611cf4565b8160405282935061214285611e29565b835261215060208601611e3d565b6020840152604085013591508082111561216957600080fd5b5061217685828601612097565b6040830152505092915050565b6000806040838503121561219657600080fd5b82356001600160401b03808211156121ad57600080fd5b818501915085601f8301126121c157600080fd5b813560206121d1611f9e83611f6d565b82815260059290921b840181019181810190898411156121f057600080fd5b8286015b848110156122285780358681111561220c5760008081fd5b61221a8c86838b01016120fd565b8452509183019183016121f4565b509650508601359250508082111561223f57600080fd5b50611e0285828601612008565b60008060006040848603121561226157600080fd5b83356001600160401b038082111561227857600080fd5b818601915086601f83011261228c57600080fd5b81358181111561229b57600080fd5b8760208285010111156122ad57600080fd5b6020928301955093509085013590808211156122c857600080fd5b5061208d86828701611d3a565b6000602082840312156122e757600080fd5b81356001600160401b038111156122fd57600080fd5b612309848285016120fd565b949350505050565b6000806040838503121561232457600080fd5b61232d83611e3d565b915061233b60208401611e29565b90509250929050565b60008060008060008060c0878903121561235d57600080fd5b8635955060208701356001600160401b03808216821461237c57600080fd5b81965061238b60408a01611e29565b955061239960608a01611e29565b945060808901359150808211156123af57600080fd5b6123bb8a838b01611d3a565b935060a08901359150808211156123d157600080fd5b50611ec789828a01611d3a565b600082601f8301126123ef57600080fd5b813560206123ff611f9e83611f6d565b82815260059290921b8401810191818101908684111561241e57600080fd5b8286015b848110156120f25761243381611e29565b8352918301918301612422565b600082601f83011261245157600080fd5b81356020612461611f9e83611f6d565b82815260059290921b8401810191818101908684111561248057600080fd5b8286015b848110156120f25761249581611e3d565b8352918301918301612484565b600080600080600080600060e0888a0312156124bd57600080fd5b873596506124cd60208901611e0c565b955060408801356001600160401b03808211156124e957600080fd5b6124f58b838c016123de565b965060608a013591508082111561250b57600080fd5b6125178b838c01612097565b955060808a013591508082111561252d57600080fd5b6125398b838c01612440565b945060a08a0135935060c08a013591508082111561255657600080fd5b506125638a828b01611d3a565b91505092959891949750929550565b60008060006040848603121561258757600080fd5b83356001600160401b038082111561259e57600080fd5b6125aa87838801611f29565b909550935060208601359150808211156122c857600080fd5b6000806000606084860312156125d857600080fd5b6125e184611e29565b92506125ef60208501611e3d565b915060408401356001600160401b0381111561260a57600080fd5b61208d86828701612097565b6020808252825163ffffffff1682820152828101516001600160a01b031660408084019190915283015160608084015280516080840181905260009291820190839060a08601905b808310156120f2578351825292840192600192909201919084019061265e565b805160208201516001600160d01b031980821692919060068310156126ad5780818460060360031b1b83161693505b505050919050565b60208082526023908201527f50726f706f73616c4e6f6e6365547261636b65723a20496e76616c6964206e6f6040820152626e636560e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610518576105186126f8565b6020808252603a908201527f50726f706f73616c4e6f6e6365547261636b65723a204e6f6e6365206d75737460408201527f206e6f7420696e6372656d656e74206d6f7265207468616e2031000000000000606082015260800190565b9485526001600160e01b0319938416602086015260e09290921b9092166024840152602883019190915260601b6bffffffffffffffffffffffff19166048820152605c0190565b6020808252602c908201527f5369676e61747572654272696467653a204e6f742076616c696420736967206660408201526b3937b69033b7bb32b93737b960a11b606082015260800190565b60208082526026908201527f476f7665726e61626c653a2063616c6c6572206973206e6f742074686520676f6040820152653b32b93737b960d11b606082015260800190565b63ffffffff818116838216019080821115612874576128746126f8565b5092915050565b6000612028368484611f90565b634e487b7160e01b600052603260045260246000fd5b6000600182016128b0576128b06126f8565b5060010190565b6000808335601e198436030181126128ce57600080fd5b8301803591506001600160401b038211156128e857600080fd5b602001915036819003821315611a8857600080fd5b8082028115828204841417610518576105186126f8565b634e487b7160e01b600052601260045260246000fd5b60008261293957612939612914565b500490565b60208082526021908201527f476f7665726e61626c653a20496e76616c69642074696d6520666f7220766f746040820152606560f81b606082015260800190565b60208082526038908201527f476f7665726e61626c653a2050726f706f73656420676f7665726e6f7220636160408201527f6e6e6f7420626520746865207a65726f20616464726573730000000000000000606082015260800190565b60005b838110156129f75781810151838201526020016129df565b50506000910152565b8581526001600160401b0360c01b8560c01b166020820152600063ffffffff60e01b808660e01b166028840152808560e01b16602c840152508251612a4c8160308501602087016129dc565b919091016030019695505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612aca57878503603f1901845281518051808752612aab818989018a85016129dc565b601f01601f191695909501860194509285019290850190600101612a84565b5092979650505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208082528181018390526000906040600585901b8401810190840186845b87811015612b8e57868403603f190183528135368a9003601e19018112612b4557600080fd5b890185810190356001600160401b03811115612b6057600080fd5b803603821315612b6f57600080fd5b612b7a868284612ad7565b955050509184019190840190600101612b1f565b5091979650505050505050565b600060208284031215612bad57600080fd5b8151801515811461202857600080fd5b60208082526048908201527f5369676e61747572654272696467653a3a61646d696e5365745265736f75726360408201527f65576974685369676e61747572653a20457865637574696e67206f6e2077726f60608201526737339031b430b4b760c11b608082015260a00190565b60008085851115612c3b57600080fd5b83861115612c4857600080fd5b5050820193919092039150565b8035602083101561051857600019602084900360031b1b1692915050565b838152604060208201526000612c8d604083018486612ad7565b95945050505050565b600063ffffffff80841680612cad57612cad612914565b92169190910692915050565b600063ffffffff80841680612cd057612cd0612914565b92169190910492915050565b600060ff821660ff8103612cf257612cf26126f8565b60010192915050565b63ffffffff828116828216039080821115612874576128746126f8565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220d581f1e6328b2b1a849bb326cdf76cb968550f18b82d61f3f2d92f21058999ca64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }