secretstore-contracts
Version:
Secret Store permissioning and service contracts collection and toolkit.
473 lines • 1 MB
JSON
{
"contractName": "SecretStoreDocumentKeyShadowRetrievalService",
"abi": [
{
"constant": true,
"inputs": [],
"name": "documentKeyShadowRetrievalFee",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "keyServer",
"type": "address"
}
],
"name": "requireKeyServer",
"outputs": [
{
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "maxDocumentKeyShadowRetrievalRequests",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "keyServersCount",
"outputs": [
{
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isOwner",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "drain",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"name": "keyServerSetAddressInit",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"payable": true,
"stateMutability": "payable",
"type": "fallback"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "serverKeyId",
"type": "bytes32"
},
{
"indexed": false,
"name": "requester",
"type": "address"
}
],
"name": "DocumentKeyCommonRetrievalRequested",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "serverKeyId",
"type": "bytes32"
},
{
"indexed": false,
"name": "requesterPublic",
"type": "bytes"
}
],
"name": "DocumentKeyPersonalRetrievalRequested",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "serverKeyId",
"type": "bytes32"
},
{
"indexed": true,
"name": "requester",
"type": "address"
},
{
"indexed": false,
"name": "commonPoint",
"type": "bytes"
},
{
"indexed": false,
"name": "threshold",
"type": "uint8"
}
],
"name": "DocumentKeyCommonRetrieved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "serverKeyId",
"type": "bytes32"
},
{
"indexed": true,
"name": "requester",
"type": "address"
},
{
"indexed": false,
"name": "decryptedSecret",
"type": "bytes"
},
{
"indexed": false,
"name": "shadow",
"type": "bytes"
}
],
"name": "DocumentKeyPersonalRetrieved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "serverKeyId",
"type": "bytes32"
},
{
"indexed": true,
"name": "requester",
"type": "address"
}
],
"name": "DocumentKeyShadowRetrievalError",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"constant": false,
"inputs": [
{
"name": "serverKeyId",
"type": "bytes32"
},
{
"name": "requesterPublic",
"type": "bytes"
}
],
"name": "retrieveDocumentKeyShadow",
"outputs": [],
"payable": true,
"stateMutability": "payable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "serverKeyId",
"type": "bytes32"
},
{
"name": "requester",
"type": "address"
},
{
"name": "commonPoint",
"type": "bytes"
},
{
"name": "threshold",
"type": "uint8"
}
],
"name": "documentKeyCommonRetrieved",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "serverKeyId",
"type": "bytes32"
},
{
"name": "requester",
"type": "address"
},
{
"name": "participants",
"type": "uint256"
},
{
"name": "decryptedSecret",
"type": "bytes"
},
{
"name": "shadow",
"type": "bytes"
}
],
"name": "documentKeyPersonalRetrieved",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "serverKeyId",
"type": "bytes32"
},
{
"name": "requester",
"type": "address"
}
],
"name": "documentKeyShadowRetrievalError",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "documentKeyShadowRetrievalRequestsCount",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "index",
"type": "uint256"
}
],
"name": "getDocumentKeyShadowRetrievalRequest",
"outputs": [
{
"name": "",
"type": "bytes32"
},
{
"name": "",
"type": "bytes"
},
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "serverKeyId",
"type": "bytes32"
},
{
"name": "requester",
"type": "address"
},
{
"name": "keyServer",
"type": "address"
}
],
"name": "isDocumentKeyShadowRetrievalResponseRequired",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "newFee",
"type": "uint256"
}
],
"name": "setDocumentKeyShadowRetrievalFee",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "newLimit",
"type": "uint256"
}
],
"name": "setMaxDocumentKeyShadowRetrievalRequests",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "serverKeyId",
"type": "bytes32"
},
{
"name": "requester",
"type": "address"
}
],
"name": "deleteDocumentKeyShadowRetrievalRequest",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x608060405234801561001057600080fd5b506040516020806121bf833981016040819052905160008054600160a060020a031916331780825591928392600160a060020a031691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360018054600160a060020a031916600160a060020a0392909216919091179055506702c68af0bb1400006004908155600555612112806100ad6000396000f3006080604052600436106100ed5763ffffffff60e060020a60003504166309b203e88114610163578063153f333b1461017d5780631b1e67aa146101945780632b4f030a146101bb5780633931a756146101f257806347f9af491461020a5780635aa8404c1461021f578063715018a61461023457806377dc782b146102495780637b97eecc146102875780638da5cb5b146102be5780638f32d59b146102ef5780639890220b14610304578063b9b36c4214610319578063d3cb594f1461035a578063e2f1d4f91461037e578063e3c20cf2146103a2578063f2fde38b146103b7578063f3d33171146103d8575b6040805160e560020a62461bcd02815260206004820152602260248201527f446972656374207061796d656e747320617265206e6f7420737570706f72746560448201527f6421000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b34801561016f57600080fd5b5061017b600435610479565b005b61017b600480359060248035908101910135610491565b3480156101a057600080fd5b506101a96108be565b60408051918252519081900360200190f35b3480156101c757600080fd5b506101dc600160a060020a03600435166108c4565b6040805160ff9092168252519081900360200190f35b3480156101fe57600080fd5b5061017b600435610961565b34801561021657600080fd5b506101a9610979565b34801561022b57600080fd5b506101dc61097f565b34801561024057600080fd5b5061017b610a10565b34801561025557600080fd5b50610273600435600160a060020a0360243581169060443516610a7a565b604080519115158252519081900360200190f35b34801561029357600080fd5b5061017b600480359060248035600160a060020a03169160443591820191013560643560ff16610b59565b3480156102ca57600080fd5b506102d3610f64565b60408051600160a060020a039092168252519081900360200190f35b3480156102fb57600080fd5b50610273610f73565b34801561031057600080fd5b5061017b610f84565b34801561032557600080fd5b5061017b600480359060248035600160a060020a0316916044359160643580820192908101359160843590810191013561102a565b34801561036657600080fd5b5061017b600435600160a060020a03602435166114cf565b34801561038a57600080fd5b5061017b600435600160a060020a03602435166115c3565b3480156103ae57600080fd5b506101a96117d5565b3480156103c357600080fd5b5061017b600160a060020a03600435166117db565b3480156103e457600080fd5b506103f06004356117fa565b6040805184815282151591810191909152606060208083018281528551928401929092528451608084019186019080838360005b8381101561043c578181015183820152602001610424565b50505050905090810190601f1680156104695780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b610481610f73565b151561048c57600080fd5b600555565b6000806004548034101515156104f1576040805160e560020a62461bcd02815260206004820181905260248201527f5472616e73616374696f6e2076616c7565206973206e6f7420656e6f7567682e604482015290519081900360640190fd5b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843750508451604014935061057c92505050576040805160e560020a62461bcd02815260206004820152601860248201527f5075626c6963206b6579206973206e6f742076616c69642e0000000000000000604482015290519081900360640190fd5b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375050604051855133955086945090925082915060208401908083835b602083106105e15780518252601f1990920191602091820191016105c2565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120600160a060020a0316939093149250610696915050576040805160e560020a62461bcd02815260206004820152602c60248201527f43616c6c6572206973206e6f74206f776e6572206f662074686520676976656e60448201527f207075626c6963206b65792e0000000000000000000000000000000000000000606482015290519081900360840190fd5b60055460075410610717576040805160e560020a62461bcd02815260206004820152602360248201527f4d6178696d756d206e756d626572206f6620726571756573747320726561636860448201527f65642e0000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6040805160208082018b90526c0100000000000000000000000033028284015282516034818403018152605490920192839052815191929182918401908083835b602083106107775780518252601f199092019160209182019101610758565b518151600019602094850361010090810a82019283169219939093169190911790925260408051969094018690039095206000818152600690935292909120600181810154939c50909a5060029083161590940201169190910415925061082b915050576040805160e560020a62461bcd02815260206004820181905260248201527f7265717565737465725075626c6963206c656e677468206973206e6f7420302e604482015290519081900360640190fd5b6108336118df565b878455610844600185018888611fac565b50600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688018590556040805189815233602082015281517fcce4f642c73cab3eae4e6ef3d59cc746b5e7d035447b1c226b5aafb4c0915709929181900390910190a15050505050505050565b60045481565b600154604080517f287fb40c000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151600093929092169163287fb40c9160248082019260209290919082900301818787803b15801561092f57600080fd5b505af1158015610943573d6000803e3d6000fd5b505050506040513d602081101561095957600080fd5b505192915050565b610969610f73565b151561097457600080fd5b600455565b60055481565b600154604080517f5560c9650000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691635560c96591600480830192602092919082900301818787803b1580156109de57600080fd5b505af11580156109f2573d6000803e3d6000fd5b505050506040513d6020811015610a0857600080fd5b505190505b90565b610a18610f73565b1515610a2357600080fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600080600080610a89856108c4565b6040805160208082018b90526c01000000000000000000000000600160a060020a038b160282840152825160348184030181526054909201928390528151939650909282918401908083835b60208310610af45780518252601f199092019160209182019101610ad5565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912060008181526006909252929020600881015492965094505060ff169150819050610b4e5750610b4e8160020184611aa1565b979650505050505050565b600080600080600087878080601f016020809104026020016040519081016040528093929190818152602001838380828437505084516040149350610bec92505050576040805160e560020a62461bcd02815260206004820152601860248201527f5075626c6963206b6579206973206e6f742076616c69642e0000000000000000604482015290519081900360640190fd5b6040805160208082018e90526c01000000000000000000000000600160a060020a038e16028284015282516034818403018152605490920192839052815191929182918401908083835b60208310610c555780518252601f199092019160209182019101610c36565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600081815260069092529290206008810154929a5098505060ff169150819050610cbf5750846001018054600181600116156101000203166002900490506000145b15610cc957610f57565b610cd2336108c4565b93508888886040516020018084848082843782019150508260ff1660ff167f010000000000000000000000000000000000000000000000000000000000000002815260010193505050506040516020818303038152906040526040518082805190602001908083835b60208310610d5a5780518252601f199092019160209182019101610d3b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209250610dae85600201856002610d9b61097f565b60ff16811515610da757fe5b0486611b55565b91506001826002811115610dbe57fe5b1415610dc957610f57565b6002826002811115610dd757fe5b1415610e1057610de78686611d1a565b604051600160a060020a038b16908c906000805160206120c783398151915290600090a3610f57565b600885018054600160ff199091161761ff00191661010060ff8a16908102919091179091556040805160208101929092528082528101899052600160a060020a038b16908c907f72e320c3dc51ffa2396051490d47becef092ea73f671957a2dafda7e567aff51908c908c908c9080606081018585808284376040519201829003965090945050505050a3604080518c81526020810182815260018089018054600261010093821615939093026000190116919091049383018490527f1b73b7e683137318af868187d364e5f3d25de1c54913fb552bfbca47d44f3321938f93919290606083019084908015610f475780601f10610f1c57610100808354040283529160200191610f47565b820191906000526020600020905b815481529060010190602001808311610f2a57829003601f168201915b5050935050505060405180910390a15b5050505050505050505050565b600054600160a060020a031690565b600054600160a060020a0316331490565b33600090815260026020526040902054801515610feb576040805160e560020a62461bcd02815260206004820152600d60248201527f42616c616e636520697320302e00000000000000000000000000000000000000604482015290519081900360640190fd5b336000818152600260205260408082208290555183156108fc0291849190818181858888f19350505050158015611026573d6000803e3d6000fd5b5050565b60008060008060008089898080601f0160208091040260200160405190810160405280939291908181526020018383808284375050845160401493506110be92505050576040805160e560020a62461bcd02815260206004820152601860248201527f5075626c6963206b6579206973206e6f742076616c69642e0000000000000000604482015290519081900360640190fd5b8d8d60405160200180836000191660001916815260200182600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401925050506040516020818303038152906040526040518082805190602001908083835b6020831061113e5780518252601f19909201916020918201910161111f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209650600660008860001916600019168152602001908152602001600020955085600101805460018160011615610100020316600290049050600014156111b0576114bf565b600886015460ff161515611234576040805160e560020a62461bcd02815260206004820152602260248201527f436f6d6d6f6e2072657472696576616c206973206e6f7420636f6d706c65746560448201527f642e000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61123d336108c4565b945060ff851660020a93508b841615156112c7576040805160e560020a62461bcd02815260206004820152603260248201527f4b65792073657276657220646f6573206e6f74206861766520616e20656e747260448201527f7920696e207061727469636970616e74732e0000000000000000000000000000606482015290519081900360840190fd5b8b8b8b60405160200180848152602001838380828437820191505093505050506040516020818303038152906040526040518082805190602001908083835b602083106113255780518252601f199092019160209182019101611306565b51815160209384036101000a600019018019909216911617905260408051929094018290039091206000818152600c8d01909252929020805492975095505015159150611390905057600b8601805460018101825560009182526020909120018390558b82556113ec565b60018201548416156113ec576040805160e560020a62461bcd02815260206004820152601e60248201527f506572736f6e616c2064617461206973206e6f74207265706f727465642e0000604482015290519081900360640190fd5b60028201805460ff198116600160ff9283168101909216179091558201805485179055604080518181529081018b9052600160a060020a038e16908f907f04ad358f86bfdff4535760571ca0e7940d88e47306f2df3fc9ed9247039ecda7908e908e908e908e908060208101606082018787808284379091018481038352858152602001905085858082843760405192018290039850909650505050505050a360028201546008870154610100900460ff9081166000199282169290920116146114b5576114bf565b6114bf8787611d1a565b5050505050505050505050505050565b6000806114da610f73565b15156114e557600080fd5b6040805160208082018790526c01000000000000000000000000600160a060020a038716028284015282516034818403018152605490920192839052815191929182918401908083835b6020831061154e5780518252601f19909201916020918201910161152f565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600081815260069092529290209195509093506115999250849150839050611d1a565b604051600160a060020a0384169085906000805160206120c783398151915290600090a350505050565b6040805160208082018590526c01000000000000000000000000600160a060020a03851602828401528251603481840301815260549092019283905281516000938493849384938493849392909182918401908083835b602083106116395780518252601f19909201916020918201910161161a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209550600660008760001916600019168152602001908152602001600020945084600101805460018160011615610100020316600290049050600014156116ab576117cb565b6116b4336108c4565b600886015490945060ff16151561172d5760001960010292506116df85600201856002610d9b61097f565b915060018260028111156116ef57fe5b14156116fa576117cb565b6117048686611d1a565b604051600160a060020a0388169089906000805160206120c783398151915290600090a36117cb565b50600984015460ff841660020a90811615611747576117cb565b60098501805482179055600a8501805460ff8082166001011660ff19909116179055600261177361097f565b60ff1681151561177f57fe5b600a87015491900460010160ff9081169116101561179c576117cb565b6117a68686611d1a565b604051600160a060020a0388169089906000805160206120c783398151915290600090a35b5050505050505050565b60075490565b6117e3610f73565b15156117ee57600080fd5b6117f781611e1f565b50565b60006060600080600060078681548110151561181257fe5b60009182526020808320909101548083526006825260409283902080546008820154600180840180548851601f6002948316156101000260001901909216939093049081018890048802830188019098528782529498509296509094929360ff9091169284918301828280156118c95780601f1061189e576101008083540402835291602001916118c9565b820191906000526020600020905b8154815290600101906020018083116118ac57829003601f168201915b5050505050915094509450945050509193909250565b6000806000806000806118f061097f565b95503494508560ff168581151561190357fe5b049350600092505b6001860360ff168360ff1610156119e257600154604080517fc66198dc00000000000000000000000000000000000000000000000000000000815260ff861660048201529051600160a060020a039092169163c66198dc916024808201926020929091908290030181600087803b15801561198557600080fd5b505af1158015611999573d6000803e3d6000fd5b505050506040513d60208110156119af57600080fd5b5051600160a060020a0381166000908152600260205260409020805486019055948490039460019390930192915061190b565b600154604080517fc66198dc00000000000000000000000000000000000000000000000000000000815260ff6000198a011660048201529051600160a060020a039092169163c66198dc916024808201926020929091908290030181600087803b158015611a4f57600080fd5b505af1158015611a63573d6000803e3d6000fd5b505050506040513d6020811015611a7957600080fd5b5051600160a060020a0316600090815260026020526040902080549095019094555050505050565b6000806000600160009054906101000a9004600160a060020a0316600160a060020a0316636452e8216040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611af957600080fd5b505af1158015611b0d573d6000803e3d6000fd5b505050506040513d6020811015611b2357600080fd5b505185549092508214611b395760019250611b4d565b50600184015460ff841660020a9081161592505b505092915050565b6000806000806000600160009054906101000a9004600160a060020a0316600160a060020a0316636452e8216040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611bb057600080fd5b505af1158015611bc4573d6000803e3d6000fd5b505050506040513d6020811015611bda57600080fd5b505160028a015490945060ff161515611bf557838955611c07565b88548414611c0757611c078985611e9c565b600189015460ff891660020a9350831615611c255760019450611d0e565b600086815260038a016020526040902080546001808c0180548717905560028c01805460ff8181168401811660ff199283161790925584549382168301918216931683179093559193501415611c905760058901805460018101825560009182526020909120018690555b600489015460ff90811690831610611cd05760048901805460ff191660ff848116919091179091556000198301811690881611611cd05760009450611d0e565b600289015460ff16611ce061097f565b60048b0154919003915060001960ff91821683010181169088161115611d095760029450611d0e565b600194505b50505050949350505050565b60005b600b820154811015611d785781600c01600083600b0183815481101515611d4057fe5b600091825260208083209091015483528201929092526040018120818155600180820192909255600201805460ff1916905501611d1d565b611d8482600201611ed8565b600083815260066020526040812081815590611da3600183018261202a565b6000600283018181556003840182905560048401805460ff19908116909155600685018054909116905590611ddb600785018261206e565b505060088201805461ffff19169055600060098301819055600a8301805460ff19169055611e0d90600b84019061206e565b5050611e1a600784611f29565b505050565b600160a060020a0381161515611e3457600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b611ea582611ed8565b80825560006001830181905560028301805460ff199081169091556004840180549091169055611e1a600584018261208c565b60005b6005820154811015611026578160030160008360050183815481101515611efe57fe5b600091825260208083209091015483528201929092526040019020805460ff19169055600101611edb565b60005b8254811015611e1a5782548290849083908110611f4557fe5b6000918252602090912001541415611fa457825483906000198101908110611f6957fe5b90600052602060002001548382815481101515611f8257fe5b600091825260209091200155825460001901611f9e848261208c565b50611e1a565b600101611f2c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611fed5782800160ff1982351617855561201a565b8280016001018555821561201a579182015b8281111561201a578235825591602001919060010190611fff565b506120269291506120ac565b5090565b50805460018160011615610100020316600290046000825580601f1061205057506117f7565b601f0160209004906000526020600020908101906117f791906120ac565b50805460008255906000526020600020908101906117f791906120ac565b815481835581811115611e1a57600083815260209020611e1a9181019083015b610a0d91905b8082111561202657600081556001016120b256000fdd54511745997b3c6f05f62e17c608b6d402b5d02dfa60009997c1ae89edc2a165627a7a723058206cd986bfe4f365f10d89388e054e962338796eb932d9403278121b3d0d2204e90029",
"deployedBytecode": "0x6080604052600436106100ed5763ffffffff60e060020a60003504166309b203e88114610163578063153f333b1461017d5780631b1e67aa146101945780632b4f030a146101bb5780633931a756146101f257806347f9af491461020a5780635aa8404c1461021f578063715018a61461023457806377dc782b146102495780637b97eecc146102875780638da5cb5b146102be5780638f32d59b146102ef5780639890220b14610304578063b9b36c4214610319578063d3cb594f1461035a578063e2f1d4f91461037e578063e3c20cf2146103a2578063f2fde38b146103b7578063f3d33171146103d8575b6040805160e560020a62461bcd02815260206004820152602260248201527f446972656374207061796d656e747320617265206e6f7420737570706f72746560448201527f6421000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b34801561016f57600080fd5b5061017b600435610479565b005b61017b600480359060248035908101910135610491565b3480156101a057600080fd5b506101a96108be565b60408051918252519081900360200190f35b3480156101c757600080fd5b506101dc600160a060020a03600435166108c4565b6040805160ff9092168252519081900360200190f35b3480156101fe57600080fd5b5061017b600435610961565b34801561021657600080fd5b506101a9610979565b34801561022b57600080fd5b506101dc61097f565b34801561024057600080fd5b5061017b610a10565b34801561025557600080fd5b50610273600435600160a060020a0360243581169060443516610a7a565b604080519115158252519081900360200190f35b34801561029357600080fd5b5061017b600480359060248035600160a060020a03169160443591820191013560643560ff16610b59565b3480156102ca57600080fd5b506102d3610f64565b60408051600160a060020a039092168252519081900360200190f35b3480156102fb57600080fd5b50610273610f73565b34801561031057600080fd5b5061017b610f84565b34801561032557600080fd5b5061017b600480359060248035600160a060020a0316916044359160643580820192908101359160843590810191013561102a565b34801561036657600080fd5b5061017b600435600160a060020a03602435166114cf565b34801561038a57600080fd5b5061017b600435600160a060020a03602435166115c3565b3480156103ae57600080fd5b506101a96117d5565b3480156103c357600080fd5b5061017b600160a060020a03600435166117db565b3480156103e457600080fd5b506103f06004356117fa565b6040805184815282151591810191909152606060208083018281528551928401929092528451608084019186019080838360005b8381101561043c578181015183820152602001610424565b50505050905090810190601f1680156104695780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b610481610f73565b151561048c57600080fd5b600555565b6000806004548034101515156104f1576040805160e560020a62461bcd02815260206004820181905260248201527f5472616e73616374696f6e2076616c7565206973206e6f7420656e6f7567682e604482015290519081900360640190fd5b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843750508451604014935061057c92505050576040805160e560020a62461bcd02815260206004820152601860248201527f5075626c6963206b6579206973206e6f742076616c69642e0000000000000000604482015290519081900360640190fd5b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375050604051855133955086945090925082915060208401908083835b602083106105e15780518252601f1990920191602091820191016105c2565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120600160a060020a0316939093149250610696915050576040805160e560020a62461bcd02815260206004820152602c60248201527f43616c6c6572206973206e6f74206f776e6572206f662074686520676976656e60448201527f207075626c6963206b65792e0000000000000000000000000000000000000000606482015290519081900360840190fd5b60055460075410610717576040805160e560020a62461bcd02815260206004820152602360248201527f4d6178696d756d206e756d626572206f6620726571756573747320726561636860448201527f65642e0000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6040805160208082018b90526c0100000000000000000000000033028284015282516034818403018152605490920192839052815191929182918401908083835b602083106107775780518252601f199092019160209182019101610758565b518151600019602094850361010090810a82019283169219939093169190911790925260408051969094018690039095206000818152600690935292909120600181810154939c50909a5060029083161590940201169190910415925061082b915050576040805160e560020a62461bcd02815260206004820181905260248201527f7265717565737465725075626c6963206c656e677468206973206e6f7420302e604482015290519081900360640190fd5b6108336118df565b878455610844600185018888611fac565b50600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688018590556040805189815233602082015281517fcce4f642c73cab3eae4e6ef3d59cc746b5e7d035447b1c226b5aafb4c0915709929181900390910190a15050505050505050565b60045481565b600154604080517f287fb40c000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151600093929092169163287fb40c9160248082019260209290919082900301818787803b15801561092f57600080fd5b505af1158015610943573d6000803e3d6000fd5b505050506040513d602081101561095957600080fd5b505192915050565b610969610f73565b151561097457600080fd5b600455565b60055481565b600154604080517f5560c9650000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691635560c96591600480830192602092919082900301818787803b1580156109de57600080fd5b505af11580156109f2573d6000803e3d6000fd5b505050506040513d6020811015610a0857600080fd5b505190505b90565b610a18610f73565b1515610a2357600080fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600080600080610a89856108c4565b6040805160208082018b90526c01000000000000000000000000600160a060020a038b160282840152825160348184030181526054909201928390528151939650909282918401908083835b60208310610af45780518252601f199092019160209182019101610ad5565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912060008181526006909252929020600881015492965094505060ff169150819050610b4e5750610b4e8160020184611aa1565b979650505050505050565b600080600080600087878080601f016020809104026020016040519081016040528093929190818152602001838380828437505084516040149350610bec92505050576040805160e560020a62461bcd02815260206004820152601860248201527f5075626c6963206b6579206973206e6f742076616c69642e0000000000000000604482015290519081900360640190fd5b6040805160208082018e90526c01000000000000000000000000600160a060020a038e16028284015282516034818403018152605490920192839052815191929182918401908083835b60208310610c555780518252601f199092019160209182019101610c36565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600081815260069092529290206008810154929a5098505060ff169150819050610cbf5750846001018054600181600116156101000203166002900490506000145b15610cc957610f57565b610cd2336108c4565b93508888886040516020018084848082843782019150508260ff1660ff167f010000000000000000000000000000000000000000000000000000000000000002815260010193505050506040516020818303038152906040526040518082805190602001908083835b60208310610d5a5780518252601f199092019160209182019101610d3b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209250610dae85600201856002610d9b61097f565b60ff16811515610da757fe5b0486611b55565b91506001826002811115610dbe57fe5b1415610dc957610f57565b6002826002811115610dd757fe5b1415610e1057610de78686611d1a565b604051600160a060020a038b16908c906000805160206120c783398151915290600090a3610f57565b600885018054600160ff199091161761ff00191661010060ff8a16908102919091179091556040805160208101929092528082528101899052600160a060020a038b16908c907f72e320c3dc51ffa2396051490d47becef092ea73f671957a2dafda7e567aff51908c908c908c9080606081018585808284376040519201829003965090945050505050a3604080518c81526020810182815260018089018054600261010093821615939093026000190116919091049383018490527f1b73b7e683137318af868187d364e5f3d25de1c54913fb552bfbca47d44f3321938f93919290606083019084908015610f475780601f10610f1c57610100808354040283529160200191610f47565b820191906000526020600020905b815481529060010190602001808311610f2a57829003601f168201915b5050935050505060405180910390a15b5050505050505050505050565b600054600160a060020a031690565b600054600160a060020a0316331490565b33600090815260026020526040902054801515610feb576040805160e560020a62461bcd02815260206004820152600d60248201527f42616c616e636520697320302e00000000000000000000000000000000000000604482015290519081900360640190fd5b336000818152600260205260408082208290555183156108fc0291849190818181858888f19350505050158015611026573d6000803e3d6000fd5b5050565b60008060008060008089898080601f0160208091040260200160405190810160405280939291908181526020018383808284375050845160401493506110be92505050576040805160e560020a62461bcd02815260206004820152601860248201527f5075626c6963206b6579206973206e6f742076616c69642e0000000000000000604482015290519081900360640190fd5b8d8d60405160200180836000191660001916815260200182600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401925050506040516020818303038152906040526040518082805190602001908083835b6020831061113e5780518252601f19909201916020918201910161111f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209650600660008860001916600019168152602001908152602001600020955085600101805460018160011615610100020316600290049050600014156111b0576114bf565b600886015460ff161515611234576040805160e560020a62461bcd02815260206004820152602260248201527f436f6d6d6f6e2072657472696576616c206973206e6f7420636f6d706c65746560448201527f642e000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61123d336108c4565b945060ff851660020a93508b841615156112c7576040805160e560020a62461bcd02815260206004820152603260248201527f4b65792073657276657220646f6573206e6f74206861766520616e20656e747260448201527f7920696e207061727469636970616e74732e0000000000000000000000000000606482015290519081900360840190fd5b8b8b8b60405160200180848152602001838380828437820191505093505050506040516020818303038152906040526040518082805190602001908083835b602083106113255780518252601f199092019160209182019101611306565b51815160209384036101000a600019018019909216911617905260408051929094018290039091206000818152600c8d01909252929020805492975095505015159150611390905057600b8601805460018101825560009182526020909120018390558b82556113ec565b60018201548416156113ec576040805160e560020a62461bcd02815260206004820152601e60248201527f506572736f6e616c2064617461206973206e6f74207265706f727465642e0000604482015290519081900360640190fd5b60028201805460ff198116600160ff9283168101909216179091558201805485179055604080518181529081018b9052600160a060020a038e16908f907f04ad358f86bfdff4535760571ca0e7940d88e47306f2df3fc9ed9247039ecda7908e908e908e908e908060208101606082018787808284379091018481038352858152602001905085858082843760405192018290039850909650505050505050a360028201546008870154610100900460ff9081166000199282169290920116146114b5576114bf565b6114bf8787611d1a565b5050505050505050505050505050565b6000806114da610f73565b15156114e557600080fd5b6040805160208082018790526c01000000000000000000000000600160a060020a038716028284015282516034818403018152605490920192839052815191929182918401908083835b6020831061154e5780518252601f19909201916020918201910161152f565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600081815260069092529290209195509093506115999250849150839050611d1a565b604051600160a060020a0384169085906000805160206120c783398151915290600090a350505050565b6040805160208082018590526c01000000000000000000000000600160a060020a03851602828401528251603481840301815260549092019283905281516000938493849384938493849392909182918401908083835b602083106116395780518252601f19909201916020918201910161161a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209550600660008760001916600019168152602001908152602001600020945084600101805460018160011615610100020316600290049050600014156116ab576117cb565b6116b4336108c4565b600886015490945060ff16151561172d5760001960010292506116df85600201856002610d9b61097f565b915060018260028111156116ef57fe5b14156116fa576117cb565b6117048686611d1a565b604051600160a060020a0388169089906000805160206120c783398151915290600090a36117cb565b50600984015460ff841660020a90811615611747576117cb565b60098501805482179055600a8501805460ff8082166001011660ff19909116179055600261177361097f565b60ff1681151561177f57fe5b600a87015491900460010160ff9081169116101561179c576117cb565b6117a68686611d1a565b604051600160a060020a0388169089906000805160206120c783398151915290600090a35b5050505050505050565b60075490565b6117e3610f73565b15156117ee57600080fd5b6117f781611e1f565b50565b60006060600080600060078681548110151561181257fe5b60009182526020808320909101548083526006825260409283902080546008820154600180840180548851601f6002948316156101000260001901909216939093049081018890048802830188019098528782529498509296509094929360ff9091169284918301828280156118c95780601f1061189e576101008083540402835291602001916118c9565b820191906000526020600020905b8154815290600101906020018083116118ac57829003601f168201915b5050505050915094509450945050509193909250565b6000806000806000806118f061097f565b95503494508560ff168581151561190357fe5b049350600092505b6001860360ff168360ff1610156119e257600154604080517fc66198dc00000000000000000000000000000000000000000000000000000000815260ff861660048201529051600160a060020a039092169163c66198dc916024808201926020929091908290030181600087803b15801561198557600080fd5b505af1158015611999573d6000803e3d6000fd5b505050506040513d60208110156119af57600080fd5b5051600160a060020a0381166000908152600260205260409020805486019055948490039460019390930192915061190b565b600154604080517fc66198dc00000000000000000000000000000000000000000000000000000000815260ff6000198a011660048201529051600160a060020a039092169163c66198dc916024808201926020929091908290030181600087803b158015611a4f57600080fd5b505af1158015611a63573d6000803e3d6000fd5b505050506040513d6020811015611a7957600080fd5b5051600160a060020a0316600090815260026020526040902080549095019094555050505050565b6000806000600160009054906101000a9004600160a060020a0316600160a060020a0316636452e8216040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611af957600080fd5b505af1158015611b0d573d6000803e3d6000fd5b505050506040513d6020811015611b2357600080fd5b505185549092508214611b395760019250611b4d565b50600184015460ff841660020a9081161592505b505092915050565b6000806000806000600160009054906101000a9004600160a060020a0316600160a060020a0316636452e8216040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611bb057600080fd5b505af1158015611bc4573d6000803e3d6000fd5b505050506040513d6020811015611bda57600080fd5b505160028a015490945060ff161515611bf557838955611c07565b88548414611c0757611c078985611e9c565b600189015460ff891660020a9350831615611c255760019450611d0e565b600086815260038a016020526040902080546001808c0180548717905560028c01805460ff8181168401811660ff199283161790925584549382168301918216931683179093559193501415611c905760058901805460018101825560009182526020909120018690555b600489015460ff90811690831610611cd05760048901805460ff191660ff848116919091179091556000198301811690881611611cd05760009450611d0e565b600289015460ff16611ce061097f565b60048b0154919003915060001960ff91821683010181169088161115611d095760029450611d0e565b600194505b50505050949350505050565b60005b600b820154811015611d785781600c01600083600b0183815481101515611d4057fe5b600091825260208083209091015483528201929092526040018120818155600180820192909255600201805460ff1916905501611d1d565b611d8482600201611ed8565b600083815260066020526040812081815590611da3600183018261202a565b6000600283018181556003840182905560048401805460ff19908116909155600685018054909116905590611ddb600785018261206e565b505060088201805461ffff19169055600060098301819055600a8301805460ff19169055611e0d90600b84019061206e565b5050611e1a600784611f29565b505050565b600160a060020a0381161515611e3457600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b611ea582611ed8565b80825560006001830181905560028301805460ff199081169091556004840180549091169055611e1a600584018261208c565b60005b6005820154811015611026578160030160008360050183815481101515611efe57fe5b600091825260208083209091015483528201929092526040019020805460ff19169055600101611edb565b60005b8254811015611e1a5782548290849083908110611f4557fe5b6000918252602090912001541415611fa457825483906000198101908110611f6957fe5b90600052602060002001548382815481101515611f8257fe5b600091825260209091200155825460001901611f9e848261208c565b50611e1a565b600101611f2c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611fed5782800160ff1982351617855561201a565b8280016001018555821561201a579182015b8281111561201a578235825591602001919060010190611fff565b506120269291506120ac565b5090565b50805460018160011615610100020316600290046000825580601f1061205057506117f7565b601f0160209004906000526020600020908101906117f791906120ac565b50805460008255906000526020600020908101906117f791906120ac565b815481835581811115611e1a57600083815260209020611e1a9181019083015b610a0d91905b8082111561202657600081556001016120b256000fdd54511745997b3c6f05f62e17c608b6d402b5d02dfa60009997c1ae89edc2a165627a7a723058206cd986bfe4f365f10d89388e054e962338796eb932d9403278121b3d0d2204e90029",
"sourceMap": "906:15664:4:-;;;3245:210;8:9:-1;5:2;;;30:1;27;20:12;5:2;3245:210:4;;;;;;;;;;;;;;;;509:6:12;:19;;-1:-1:-1;;;;;;509:19:12;518:10;509:19;;;;3245:210:4;;;;-1:-1:-1;;;;;572:6:12;;509;539:40;;509:6;;539:40;2548:19:8;:45;;-1:-1:-1;;;;;;2548:45:8;-1:-1:-1;;;;;2548:45:8;;;;;;;;;;-1:-1:-1;3387:10:4;3355:29;:42;;;3407:37;:41;906:15664;;;-1:-1:-1;906:15664:4;;",
"deployedSourceMap": "906:15664:4:-;;;;;;;;;-1:-1:-1;;;906:15664:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3574:44;;;-1:-1:-1;;;;;3574:44:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14745:170;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14745:170:4;;;;;;;3671:2056;;;;;;;;;;;;;;;;;16075:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16075:44:4;;;;;;;;;;;;;;;;;;;;2843:166:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2843:166:8;-1:-1:-1;;;;;2843:166:8;;;;;;;;;;;;;;;;;;;;;;;;14531:150:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14531:150:4;;;;;16280:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16280:52:4;;;;2644:140:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2644:140:8;;;;1273:127:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1273:127:12;;;;13799:640:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13799:640:4;;;-1:-1:-1;;;;;13799:640:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;5792:1893;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5792:1893:4;;;;;;;;-1:-1:-1;;;;;5792:1893:4;;;;;;;;;;;;;;;;639:70:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;639:70:12;;;;;;;;-1:-1:-1;;;;;639:70:12;;;;;;;;;;;;;;926:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;926:83:12;;;;3059:199:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3059:199:8;;;;7754:2204:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7754:2204:4;;;;;;;;-1:-1:-1;;;;;7754:2204:4;;;;;;;;;;;;;;;;;;;;;;;;;;14975:466;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14975:466:4;;;-1:-1:-1;;;;;14975:466:4;;;;;10035:2871;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10035:2871:4;;;-1:-1:-1;;;;;10035:2871:4;;;;;12981:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12981:152:4;;;;1561:101:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1561:101:12;-1:-1:-1;;;;;1561:101:12;;;;;13283:444:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13283:444:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13283:444:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14745:170;824:9:12;:7;:9::i;:::-;816:18;;;;;;;;14860:37:4;:48;14745:170::o;3671:2056::-;4098:19;4182:49;3787:29;;2216:6:8;2203:9;:19;;2195:64;;;;;;;-1:-1:-1;;;;;2195:64:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3838:15:4;;2332:125:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2388:16:8;;2408:2;2388:22;;-1:-1:-1;2380:59:8;;-1:-1:-1;;;2380:59:8;;;;-1:-1:-1;;;;;2380:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3879:15:4;;1874:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1947:20:4;;;;2020:10;;-1:-1:-1;1957:9:4;;-1:-1:-1;1947:20:4;;-1:-1:-1;1947:20:4;;-1:-1:-1;1947:20:4;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;1947:20:4;;;;;;;;;;-1:-1:-1;;;;;1942:73:4;1934:96;;;;;-1:-1:-1;1926:174:4;;-1:-1:-1;;1926:174:4;;;;-1:-1:-1;;;;;1926:174:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4010:37;;3962:38;:45;:85;3954:133;;;;;-1:-1:-1;;;;;3954:133:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4130:41;;;;;;;;;;;4160:10;4130:41;;;;;;;22:32:-1;26:21;;;22:32;6:49;;4130:41:4;;;;;;;;4120:52;;4130:41;;;;;4120:52;;;;4130:41;4120:52;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;;;246:30;;340:21;;;311:9;;295:26;;;;377:20;;;;365:33;;;4120:52:4;;;;;;;;;;;;;-1:-1:-1;4234:47:4;;;:34;:47;;;;;;;274:1:-1;4299:23:4;;;:30;4120:52;;-1:-1:-1;4234:47:4;;-1:-1:-1;4299:30:4;;;;;;;;;;;;;;:35;;-1:-1:-1;4291:80:4;;-1:-1:-1;;4291:80:4;;;;-1:-1:-1;;;;;4291:80:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4381:9;:7;:9::i;:::-;5494:33;;;5537:41;:23;;;5563:15;;5537:41;:::i;:::-;-1:-1:-1;5588:38:4;27:10:-1;;39:1;23:18;;45:23;;-1:-1;5588:56:4;;;;;;;;;5660:60;;;;;;5709:10;5588:56;5660:60;;;;;;;;;;;;;;;;2449:1:8;2269;3671:2056:4;;;;;;:::o;16075:44::-;;;;:::o;2843:166:8:-;2946:19;;2933:69;;;;;;-1:-1:-1;;;;;2933:69:8;;;;;;;;;2909:5;;2946:19;;;;;2933:58;;:69;;;;;;;;;;;;;;;2909:5;2946:19;2933:69;;;5:2:-1;;;;30:1;27;20:12;5:2;2933:69:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2933:69:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2933:69:8;;2843:166;-1:-1:-1;;2843:166:8:o;14531:150:4:-;824:9:12;:7;:9::i;:::-;816:18;;;;;;;;14636:29:4;:38;14531:150::o;16280:52::-;;;;:::o;2644:140:8:-;2729:19;;2716:61;;;;;;;;2692:5;;-1:-1:-1;;;;;2729:19:8;;2716:59;;:61;;;;;;;;;;;;;;2692:5;2729:19;2716:61;;;5:2:-1;;;;30:1;27;20:12;5:2;2716:61:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2716:61:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2716:61:8;;-1:-1:-1;2644:140:8;;:::o;1273:127:12:-;824:9;:7;:9::i;:::-;816:18;;;;;;;;1367:1;1351:6;;1330:40;;-1:-1:-1;;;;;1351:6:12;;;;1330:40;;1367:1;;1330:40;1393:1;1376:19;;-1:-1:-1;;1376:19:12;;;1273:127::o;13799:640:4:-;13959:4;13979:20;14039:19;14122:49;14002:27;14019:9;14002:16;:27::i;:::-;14071:40;;;;;;;;;;;-1:-1:-1;;;;;14071:40:4;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;14071:40:4;;;;;;;;14061:51;;13979:50;;-1:-1:-1;14071:40:4;;;;14061:51;;;;14071:40;14061:51;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;14061:51:4;;;;;;;;;;;;;-1:-1:-1;14174:47:4;;;:34;:47;;;;;;14314:34;;;;14061:51;;-1:-1:-1;14174:47:4;-1:-1:-1;;14314:34:4;;;-1:-1:-1;14314:34:4;;-1:-1:-1;14314:118:4;;;14364:68;14383:7;:32;;14417:14;14364:18;:68::i;:::-;14307:125;13799:640;-1:-1:-1;;;;;;;13799:640:4:o;5792:1893::-;6026:19;6109:49;6365:20;6426:22;6512:37;5958:11;;2332:125:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2388:16:8;;2408:2;2388:22;;-1:-1:-1;2380:59:8;;-1:-1:-1;;;2380:59:8;;;;-1:-1:-1;;;;;2380:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;6058:40:4;;;;;;;;;;;-1:-1:-1;;;;;6058:40:4;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;6058:40:4;;;;;;;;6048:51;;6058:40;;;;;6048:51;;;;6058:40;6048:51;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;