Skip to content

Instantly share code, notes, and snippets.

@asoong
Created October 6, 2018 17:14
Show Gist options
  • Save asoong/22ad4a851bd39ddcb08495fe87326cc4 to your computer and use it in GitHub Desktop.
Save asoong/22ad4a851bd39ddcb08495fe87326cc4 to your computer and use it in GitHub Desktop.
{
"contractName": "Core",
"abi": [
{
"constant": true,
"inputs": [
{
"name": "_factory",
"type": "address"
}
],
"name": "validFactories",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_factory",
"type": "address"
}
],
"name": "disableFactory",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_addresses",
"type": "address[5]"
},
{
"name": "_values",
"type": "uint256[6]"
},
{
"name": "_requiredComponents",
"type": "address[]"
},
{
"name": "_requiredComponentAmounts",
"type": "uint256[]"
},
{
"name": "_cancelQuantity",
"type": "uint256"
}
],
"name": "cancelOrder",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_orderHash",
"type": "bytes32"
}
],
"name": "orderCancels",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_set",
"type": "address"
},
{
"name": "_quantity",
"type": "uint256"
}
],
"name": "redeem",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_tokens",
"type": "address[]"
},
{
"name": "_quantities",
"type": "uint256[]"
}
],
"name": "batchDeposit",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_exchangeId",
"type": "uint8"
},
{
"name": "_exchange",
"type": "address"
}
],
"name": "registerExchange",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
},
{
"name": "_quantity",
"type": "uint256"
}
],
"name": "deposit",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "setTokens",
"outputs": [
{
"name": "",
"type": "address[]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_rebalancingSetToken",
"type": "address"
},
{
"name": "_quantity",
"type": "uint256"
}
],
"name": "bid",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_token",
"type": "address"
},
{
"name": "_quantity",
"type": "uint256"
}
],
"name": "internalTransfer",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "transferProxy",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_set",
"type": "address"
}
],
"name": "disableSet",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_set",
"type": "address"
},
{
"name": "_quantity",
"type": "uint256"
}
],
"name": "issue",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_factory",
"type": "address"
}
],
"name": "enableFactory",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_exchangeId",
"type": "uint8"
}
],
"name": "exchanges",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_set",
"type": "address"
},
{
"name": "_quantity",
"type": "uint256"
}
],
"name": "redeemInVault",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_set",
"type": "address"
},
{
"name": "_quantity",
"type": "uint256"
},
{
"name": "_toExclude",
"type": "uint256"
}
],
"name": "redeemAndWithdraw",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "state",
"outputs": [
{
"name": "transferProxy",
"type": "address"
},
{
"name": "vault",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_tokens",
"type": "address[]"
},
{
"name": "_quantities",
"type": "uint256[]"
}
],
"name": "batchWithdraw",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_addresses",
"type": "address[5]"
},
{
"name": "_values",
"type": "uint256[6]"
},
{
"name": "_requiredComponents",
"type": "address[]"
},
{
"name": "_requiredComponentAmounts",
"type": "uint256[]"
},
{
"name": "_fillQuantity",
"type": "uint256"
},
{
"name": "_v",
"type": "uint8"
},
{
"name": "sigBytes",
"type": "bytes32[]"
},
{
"name": "_orderData",
"type": "bytes"
}
],
"name": "fillOrder",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
},
{
"name": "_quantity",
"type": "uint256"
}
],
"name": "withdraw",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_factory",
"type": "address"
},
{
"name": "_components",
"type": "address[]"
},
{
"name": "_units",
"type": "uint256[]"
},
{
"name": "_naturalUnit",
"type": "uint256"
},
{
"name": "_name",
"type": "bytes32"
},
{
"name": "_symbol",
"type": "bytes32"
},
{
"name": "_callData",
"type": "bytes"
}
],
"name": "create",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_orderHash",
"type": "bytes32"
}
],
"name": "orderFills",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "vault",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "factories",
"outputs": [
{
"name": "",
"type": "address[]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_set",
"type": "address"
}
],
"name": "validSets",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"name": "_transferProxy",
"type": "address"
},
{
"name": "_vault",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_setToken",
"type": "address"
},
{
"indexed": true,
"name": "_component",
"type": "address"
},
{
"indexed": false,
"name": "_quantity",
"type": "uint256"
}
],
"name": "IssuanceComponentDeposited",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_setTokenAddress",
"type": "address"
},
{
"indexed": false,
"name": "_factory",
"type": "address"
},
{
"indexed": false,
"name": "_components",
"type": "address[]"
},
{
"indexed": false,
"name": "_units",
"type": "uint256[]"
},
{
"indexed": false,
"name": "_naturalUnit",
"type": "uint256"
},
{
"indexed": false,
"name": "_name",
"type": "bytes32"
},
{
"indexed": false,
"name": "_symbol",
"type": "bytes32"
}
],
"name": "SetTokenCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "setAddress",
"type": "address"
},
{
"indexed": true,
"name": "makerAddress",
"type": "address"
},
{
"indexed": true,
"name": "takerAddress",
"type": "address"
},
{
"indexed": false,
"name": "makerToken",
"type": "address"
},
{
"indexed": true,
"name": "relayerAddress",
"type": "address"
},
{
"indexed": false,
"name": "relayerToken",
"type": "address"
},
{
"indexed": false,
"name": "quantityFilled",
"type": "uint256"
},
{
"indexed": false,
"name": "makerTokenToTaker",
"type": "uint256"
},
{
"indexed": false,
"name": "relayerTokenAmountPaid",
"type": "uint256"
},
{
"indexed": false,
"name": "orderHash",
"type": "bytes32"
}
],
"name": "LogFill",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "setAddress",
"type": "address"
},
{
"indexed": true,
"name": "makerAddress",
"type": "address"
},
{
"indexed": false,
"name": "makerToken",
"type": "address"
},
{
"indexed": true,
"name": "relayerAddress",
"type": "address"
},
{
"indexed": false,
"name": "quantityCanceled",
"type": "uint256"
},
{
"indexed": false,
"name": "orderHash",
"type": "bytes32"
}
],
"name": "LogCancel",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "_exchangeId",
"type": "uint8"
},
{
"indexed": false,
"name": "_exchange",
"type": "address"
}
],
"name": "ExchangeRegistered",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
}
],
"name": "OwnershipRenounced",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
}
],
"bytecode": "0x60806040526001600a5534801561001557600080fd5b5060405160408061448d83398101604052805160209091015160008054600160a060020a0319908116331790915560028054600160a060020a0394851690831617905560038054939092169216919091179055614416806100776000396000f3006080604052600436106101665763ffffffff60e060020a6000350416630e4355d4811461016b5780631a1f2b3e146101a05780631cbb3877146101c35780631e912bd6146101f95780631e9a69501461022357806330a90736146102475780633e3d13b21461027357806347e7ef241461029a578063559ed339146102be57806359d667a51461032357806359e026f7146103475780636e667db314610371578063715018a6146103a257806377274ff0146103b7578063867904b4146103d85780638da5cb5b146103fc5780639f80ee8814610411578063a003e06914610432578063a782132c1461044d578063ac842c6614610471578063c19d93fb14610498578063e131243e146104d3578063e88942ba146104ff578063f2fde38b14610558578063f3fef3a314610579578063f4b077b11461059d578063f7213db6146105ee578063fbfa77cf14610606578063fe5b38e41461061b578063fef3ee7314610630575b600080fd5b34801561017757600080fd5b5061018c600160a060020a0360043516610651565b604080519115158252519081900360200190f35b3480156101ac57600080fd5b506101c1600160a060020a036004351661066f565b005b3480156101cf57600080fd5b506101c1600460a4610164356024818101918401359061018435908101908501356101a435610752565b34801561020557600080fd5b5061021160043561096f565b60408051918252519081900360200190f35b34801561022f57600080fd5b506101c1600160a060020a0360043516602435610981565b34801561025357600080fd5b506101c160246004803582810192908201359181359182019101356109a9565b34801561027f57600080fd5b506101c160ff60043516600160a060020a0360243516610a2e565b3480156102a657600080fd5b506101c1600160a060020a0360043516602435610abd565b3480156102ca57600080fd5b506102d3610add565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561030f5781810151838201526020016102f7565b505050509050019250505060405180910390f35b34801561032f57600080fd5b506101c1600160a060020a0360043516602435610b43565b34801561035357600080fd5b506101c1600160a060020a0360043581169060243516604435610ee8565b34801561037d57600080fd5b50610386610f9a565b60408051600160a060020a039092168252519081900360200190f35b3480156103ae57600080fd5b506101c1610fa9565b3480156103c357600080fd5b506101c1600160a060020a0360043516611015565b3480156103e457600080fd5b506101c1600160a060020a03600435166024356110f2565b34801561040857600080fd5b506103866111b7565b34801561041d57600080fd5b506101c1600160a060020a03600435166111c6565b34801561043e57600080fd5b5061038660ff60043516611250565b34801561045957600080fd5b506101c1600160a060020a036004351660243561126e565b34801561047d57600080fd5b506101c1600160a060020a0360043516602435604435611326565b3480156104a457600080fd5b506104ad6118b1565b60408051600160a060020a03938416815291909216602082015281519081900390910190f35b3480156104df57600080fd5b506101c160246004803582810192908201359181359182019101356118c7565b34801561050b57600080fd5b506101c1600460a46101643560248181019184013590610184358082019190860135906101a435906101c43560ff16906101e43580820191908a01359061020435908101908b013561195d565b34801561056457600080fd5b506101c1600160a060020a0360043516611ae5565b34801561058557600080fd5b506101c1600160a060020a0360043516602435611b08565b3480156105a957600080fd5b5061038660048035600160a060020a03169060248035808201929081013591604435808201929081013591606435916084359160a4359160c435918201910135611b26565b3480156105fa57600080fd5b50610211600435611dcf565b34801561061257600080fd5b50610386611de1565b34801561062757600080fd5b506102d3611df0565b34801561063c57600080fd5b5061018c600160a060020a0360043516611e53565b600160a060020a031660009081526004602052604090205460ff1690565b600054600160a060020a0316331461068657600080fd5b600160a060020a03811660009081526004602052604090205460ff1615156106ad57600080fd5b600160a060020a038116600090815260046020908152604091829020805460ff191690556005805483518184028101840190945280845261073a9385939092919083018282801561072757602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610709575b5050505050611e7190919063ffffffff16565b805161074e916005916020909101906142ad565b5050565b61075a61431f565b60008060006001600a5414151561077057600080fd5b6002600a556000851161078257600080fd5b6040805160a0818101909252610829918d90600590839083908082843750506040805160c081810190925293508f925060069150839083908082843782019150505050508b8b808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508a8a8080602002602001604051908101604052809392919081815260200183836020028082843750611ea7945050505050565b6020810151909450600160a060020a0316331461084557600080fd5b61084f8486611f67565b6101a0840180516000908152600960209081526040808320549351835260089091529020546108839163ffffffff6120cb16565b60a085015190935061089b908463ffffffff6120de16565b91506108ad828663ffffffff6120f016565b6101a08501516000908152600960205260409020549091506108d5908263ffffffff6120cb16565b6101a08501805160009081526009602090815260409182902093909355606080880151848901518951848b015195518551600160a060020a039283168152968216978701979097528585018890529285019590955291519181169316917fcfd7c58678e31e293d74b8f7aebbfb1a9c6dd7617df89f9ad0bc9271291df5d3919081900360800190a350506001600a55505050505050505050565b60009081526009602052604090205490565b600a5460011461099057600080fd5b6002600a556109a0338383612108565b50506001600a55565b600a546001146109b857600080fd5b6002600a81905550610a2333338686808060200260200160405190810160405280939291908181526020018383602002808284375050604080516020808c0282810182019093528b82529095508b94508a9350839250850190849080828437506125da945050505050565b50506001600a555050565b600054600160a060020a03163314610a4557600080fd5b60ff8216600081815260016020908152604091829020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03861690811790915582519384529083015280517feee2c0570205f21356a5108d71a4d6e7151682b92a84c761fca82cac87275c289281900390910190a15050565b600a54600114610acc57600080fd5b6002600a556109a03380848461265d565b60606001600601805480602002602001604051908101604052809291908181526020018280548015610b3857602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610b1a575b505050505090505b90565b600080606080606086945084600160a060020a031663570f31676040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610b8c57600080fd5b505af1158015610ba0573d6000803e3d6000fd5b505050506040513d6020811015610bb657600080fd5b5051604080518281526020808402820101909152909450848015610be4578160200160208202803883390190505b50925083604051908082528060200260200182016040528015610c11578160200160208202803883390190505b50915083604051908082528060200260200182016040528015610c3e578160200160208202803883390190505b50905084600160a060020a0316639979ef45876040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b158015610c8a57600080fd5b505af1158015610c9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526060811015610cc757600080fd5b810190808051640100000000811115610cdf57600080fd5b82016020810184811115610cf257600080fd5b8151856020820283011164010000000082111715610d0f57600080fd5b50509291906020018051640100000000811115610d2b57600080fd5b82016020810184811115610d3e57600080fd5b8151856020820283011164010000000082111715610d5b57600080fd5b50509291906020018051640100000000811115610d7757600080fd5b82016020810184811115610d8a57600080fd5b8151856020820283011164010000000082111715610da757600080fd5b50959850939650929450610dc593503392508a9150869050856125da565b6003546040517f95c7d896000000000000000000000000000000000000000000000000000000008152600160a060020a0389811660048301908152336024840181905260806044850190815288516084860152885193909516946395c7d896948d9492938a9389939192606481019160a4909101906020808801910280838360005b83811015610e5f578181015183820152602001610e47565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610e9e578181015183820152602001610e86565b505050509050019650505050505050600060405180830381600087803b158015610ec757600080fd5b505af1158015610edb573d6000803e3d6000fd5b5050505050505050505050565b600a54600114610ef757600080fd5b6002600a55600354604080517fb19ad577000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a0386811660248301528581166044830152606482018590529151919092169163b19ad57791608480830192600092919082900301818387803b158015610f7857600080fd5b505af1158015610f8c573d6000803e3d6000fd5b50506001600a555050505050565b600254600160a060020a031690565b600054600160a060020a03163314610fc057600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a0316331461102c57600080fd5b600160a060020a03811660009081526006602052604090205460ff16151561105357600080fd5b600160a060020a038116600090815260066020908152604091829020805460ff19169055600780548351818402810184019094528084526110de9385939092919083018282801561072757602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610709575050505050611e7190919063ffffffff16565b805161074e916007916020909101906142ad565b600a5460011461110157600080fd5b6002600a55600160a060020a03821660009081526006602052604090205460ff16151561112d57600080fd5b81600160a060020a03166342a7cfd56040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561116b57600080fd5b505af115801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051818115156111a157fe5b06156111ac57600080fd5b6109a0338383612774565b600054600160a060020a031681565b600054600160a060020a031633146111dd57600080fd5b600160a060020a03166000818152600460205260408120805460ff191660019081179091556005805491820181559091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b60ff16600090815260016020526040902054600160a060020a031690565b600a5460011461127d57600080fd5b6002600a55600354604080517f80ddda30000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015233602483015260448201859052915191909216916380ddda3091606480830192600092919082900301818387803b1580156112f657600080fd5b505af115801561130a573d6000803e3d6000fd5b50506003546109a09250600160a060020a031690508383612108565b600080600060608060008060006001600a5414151561134457600080fd5b6002600a55600354600160a060020a03808d166000908152600660205260409020548d9a509116975060ff16151561137b57600080fd5b87600160a060020a03166342a7cfd56040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156113b957600080fd5b505af11580156113cd573d6000803e3d6000fd5b505050506040513d60208110156113e357600080fd5b50518a8115156113ef57fe5b06156113fa57600080fd5b604080517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018c90529051600160a060020a038a1691639dc29fac91604480830192600092919082900301818387803b15801561146157600080fd5b505af1158015611475573d6000803e3d6000fd5b5050505087600160a060020a03166342a7cfd56040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156114b757600080fd5b505af11580156114cb573d6000803e3d6000fd5b505050506040513d60208110156114e157600080fd5b5051604080517f99d50d5d0000000000000000000000000000000000000000000000000000000081529051919750600160a060020a038a16916399d50d5d9160048082019260009290919082900301818387803b15801561154157600080fd5b505af1158015611555573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561157e57600080fd5b81019080805164010000000081111561159657600080fd5b820160208101848111156115a957600080fd5b81518560208202830111640100000000821117156115c657600080fd5b5050929190505050945087600160a060020a031663027aa9f56040518163ffffffff1660e060020a028152600401600060405180830381600087803b15801561160e57600080fd5b505af1158015611622573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561164b57600080fd5b81019080805164010000000081111561166357600080fd5b8201602081018481111561167657600080fd5b815185602082028301116401000000008211171561169357600080fd5b5090975060009650505050505b845183101561189f576116cb84848151811015156116ba57fe5b90602001906020020151878c612eaa565b915086600160a060020a03166380ddda3086858151811015156116ea57fe5b602090810290910101516040805160e060020a63ffffffff8516028152600160a060020a039283166004820152918f1660248301526044820186905251606480830192600092919082900301818387803b15801561174757600080fd5b505af115801561175b573d6000803e3d6000fd5b505050600284900a915050888116156118035786600160a060020a031663bada5726868581518110151561178b57fe5b602090810290910101516040805160e060020a63ffffffff8516028152600160a060020a0390921660048301523360248301526044820186905251606480830192600092919082900301818387803b1580156117e657600080fd5b505af11580156117fa573d6000803e3d6000fd5b50505050611894565b86600160a060020a031663c3b35a7e868581518110151561182057fe5b602090810290910101516040805160e060020a63ffffffff8516028152600160a060020a0390921660048301523360248301526044820186905251606480830192600092919082900301818387803b15801561187b57600080fd5b505af115801561188f573d6000803e3d6000fd5b505050505b6001909201916116a0565b50506001600a55505050505050505050565b600254600354600160a060020a03918216911682565b600a546000906001146118d957600080fd5b6002600a55600084116118eb57600080fd5b600082116118f857600080fd5b83821461190457600080fd5b5060005b838110156119515761194985858381811061191f57fe5b90506020020135600160a060020a0316848484818110151561193d57fe5b90506020020135612ed4565b600101611908565b50506001600a55505050565b61196561431f565b600a5460011461197457600080fd5b6002600a556040805160a0818101909252611a27918f90600590839083908082843782019150505050508d600680602002604051908101604052809291908260066020028082843782019150505050508d8d808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508c8c8080602002602001604051908101604052809392919081815260200183836020028082843750611ea7945050505050565b9050611a6e816101a00151826020015188888860008181101515611a4757fe5b6020029190910135905089896001818110611a5e57fe5b9050602002013560001916612ff1565b1515611a7957600080fd5b611a838188611f67565b611abe818885858080601f01602080910402602001604051908101604052809392919081815260200183838082843750613167945050505050565b611ad18160200151826000015189612774565b50506001600a555050505050505050505050565b600054600160a060020a03163314611afc57600080fd5b611b05816134c6565b50565b600a54600114611b1757600080fd5b6002600a556109a08282612ed4565b600160a060020a038a16600090815260046020526040812054819060ff161515611b4f57600080fd5b6040517fe49e72cc00000000000000000000000000000000000000000000000000000000815260448101889052606481018790526084810186905260c06004820190815260c482018c9052600160a060020a038e169163e49e72cc918e918e918e918e918e918e918e918e918e918190602481019060a481019060e4018d60208e028082843790910185810384528b8152602090810191508c908c02808284379091018581038352868152602001905086868082843782019150509c50505050505050505050505050602060405180830381600087803b158015611c3257600080fd5b505af1158015611c46573d6000803e3d6000fd5b505050506040513d6020811015611c5c57600080fd5b81019080805190602001909291905050509050600180600501600083600160a060020a0316600160a060020a0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a815481600160a060020a030219169083600160a060020a031602179055505080600160a060020a03167fa31e381e140096a837a20ba16eb64e32a4011fda0697adbfd7a8f7341c56aa948d8d8d8d8d8d8d8d6040518089600160a060020a0316600160a060020a0316815260200180602001806020018681526020018560001916600019168152602001846000191660001916815260200183810383528a8a82818152602001925060200280828437909101848103835288815260209081019150899089028082843760405192018290039c50909a5050505050505050505050a29b9a5050505050505050505050565b60009081526008602052604090205490565b600354600160a060020a031690565b60606001600401805480602002602001604051908101604052809291908181526020018280548015610b3857602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610b1a575050505050905090565b600160a060020a031660009081526006602052604090205460ff1690565b60606000806060611e828686613543565b92509250811515611e9257600080fd5b611e9c86846135aa565b509695505050505050565b611eaf61431f565b611eb761431f565b604080516101c0810182528751600160a060020a0390811682526020808a0151821681840152898401518216838501526060808b01518316818501526080808c015190931683850152895160a080860191909152918a015160c08501529389015160e08401529288015161010083015287015161012082015290860151610140820152610160810185905261018081018490526101a08101611f5b888888886136b6565b90529695505050505050565b8151600160a060020a03811660009081526006602052604090205460ff161515611f9057600080fd5b60008360c00151118015611fa8575060008360a00151115b1515611fb357600080fd5b60e0830151421115611fc457600080fd5b80600160a060020a03166342a7cfd56040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561200257600080fd5b505af1158015612016573d6000803e3d6000fd5b505050506040513d602081101561202c57600080fd5b505160a084015181151561203c57fe5b061561204757600080fd5b80600160a060020a03166342a7cfd56040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561208557600080fd5b505af1158015612099573d6000803e3d6000fd5b505050506040513d60208110156120af57600080fd5b5051828115156120bb57fe5b06156120c657600080fd5b505050565b818101828110156120d857fe5b92915050565b6000828211156120ea57fe5b50900390565b60008183106120ff5781612101565b825b9392505050565b600354600160a060020a0380841660009081526006602052604081205485939290921691606090819083908190819060ff16151561214557600080fd5b87600160a060020a03166342a7cfd56040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561218357600080fd5b505af1158015612197573d6000803e3d6000fd5b505050506040513d60208110156121ad57600080fd5b5051898115156121b957fe5b06156121c457600080fd5b87600160a060020a0316639dc29fac8c8b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b15801561222757600080fd5b505af115801561223b573d6000803e3d6000fd5b5050505087600160a060020a03166342a7cfd56040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561227d57600080fd5b505af1158015612291573d6000803e3d6000fd5b505050506040513d60208110156122a757600080fd5b5051604080517f99d50d5d0000000000000000000000000000000000000000000000000000000081529051919750600160a060020a038a16916399d50d5d9160048082019260009290919082900301818387803b15801561230757600080fd5b505af115801561231b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561234457600080fd5b81019080805164010000000081111561235c57600080fd5b8201602081018481111561236f57600080fd5b815185602082028301116401000000008211171561238c57600080fd5b5050929190505050945087600160a060020a031663027aa9f56040518163ffffffff1660e060020a028152600401600060405180830381600087803b1580156123d457600080fd5b505af11580156123e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561241157600080fd5b81019080805164010000000081111561242957600080fd5b8201602081018481111561243c57600080fd5b815185602082028301116401000000008211171561245957600080fd5b5090975060009650505050505b84518361ffff161015610edb57848361ffff1681518110151561248557fe5b9060200190602002015191506124b7848461ffff168151811015156124a657fe5b90602001906020020151878b612eaa565b604080517f80ddda30000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301528d81166024830152604482018490529151929350908916916380ddda309160648082019260009290919082900301818387803b15801561252d57600080fd5b505af1158015612541573d6000803e3d6000fd5b5050604080517fbada5726000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152336024830152604482018690529151918b16935063bada5726925060648082019260009290919082900301818387803b1580156125b657600080fd5b505af11580156125ca573d6000803e3d6000fd5b5050600190940193506124669050565b60008083511115156125eb57600080fd5b81516000106125f957600080fd5b815183511461260757600080fd5b5060005b82518110156126565761264e8585858481518110151561262757fe5b90602001906020020151858581518110151561263f57fe5b9060200190602002015161265d565b60010161260b565b5050505050565b6002546003546040805160e060020a63a6c4e467028152600160a060020a03868116600483015260248201869052888116604483015292831660648201529051919092169163a6c4e46791608480830192600092919082900301818387803b1580156126c857600080fd5b505af11580156126dc573d6000803e3d6000fd5b5050600354604080517fbada5726000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152888116602483015260448201879052915191909216935063bada57269250606480830192600092919082900301818387803b15801561275657600080fd5b505af115801561276a573d6000803e3d6000fd5b5050505050505050565b60008060006060806000806000808a9850600160020160009054906101000a9004600160a060020a0316975088600160a060020a03166342a7cfd56040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156127de57600080fd5b505af11580156127f2573d6000803e3d6000fd5b505050506040513d602081101561280857600080fd5b5051604080517f99d50d5d0000000000000000000000000000000000000000000000000000000081529051919850600160a060020a038b16916399d50d5d9160048082019260009290919082900301818387803b15801561286857600080fd5b505af115801561287c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156128a557600080fd5b8101908080516401000000008111156128bd57600080fd5b820160208101848111156128d057600080fd5b81518560208202830111640100000000821117156128ed57600080fd5b5050929190505050955088600160a060020a031663027aa9f56040518163ffffffff1660e060020a028152600401600060405180830381600087803b15801561293557600080fd5b505af1158015612949573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561297257600080fd5b81019080805164010000000081111561298a57600080fd5b8201602081018481111561299d57600080fd5b81518560208202830111640100000000821117156129ba57600080fd5b5090985060009750505050505b8551841015612e21576129f285858151811015156129e157fe5b90602001906020020151888c612eaa565b925087600160a060020a0316631f98ade38786815181101515612a1157fe5b906020019060200201518e6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182600160a060020a0316600160a060020a0316815260200192505050602060405180830381600087803b158015612a8057600080fd5b505af1158015612a94573d6000803e3d6000fd5b505050506040513d6020811015612aaa57600080fd5b50519150828210612b665787600160a060020a03166380ddda308786815181101515612ad257fe5b906020019060200201518e866040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183600160a060020a0316600160a060020a031681526020018281526020019350505050600060405180830381600087803b158015612b4957600080fd5b505af1158015612b5d573d6000803e3d6000fd5b50505050612d83565b6000821115612c1c5787600160a060020a03166380ddda308786815181101515612b8c57fe5b906020019060200201518e856040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183600160a060020a0316600160a060020a031681526020018281526020019350505050600060405180830381600087803b158015612c0357600080fd5b505af1158015612c17573d6000803e3d6000fd5b505050505b612c2c838363ffffffff6120de16565b6002548751919250600160a060020a03169063a6c4e46790889087908110612c5057fe5b60209081029091010151612c6a868663ffffffff6120de16565b8f600160020160009054906101000a9004600160a060020a03166040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200182600160a060020a0316600160a060020a03168152602001945050505050600060405180830381600087803b158015612d0857600080fd5b505af1158015612d1c573d6000803e3d6000fd5b505050508584815181101515612d2e57fe5b90602001906020020151600160a060020a03168b600160a060020a03167fced8518610cf00c97309551834addd978c595341eda2066dbd52f9e990489573836040518082815260200191505060405180910390a35b87600160a060020a031663bada57268786815181101515612da057fe5b602090810290910101516040805160e060020a63ffffffff8516028152600160a060020a039283166004820152918f1660248301526044820187905251606480830192600092919082900301818387803b158015612dfd57600080fd5b505af1158015612e11573d6000803e3d6000fd5b5050600190950194506129c79050565b88600160a060020a03166340c10f198d8c6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b158015612e8457600080fd5b505af1158015612e98573d6000803e3d6000fd5b50505050505050505050505050505050565b6000612ecc83612ec0848763ffffffff6138e116565b9063ffffffff61390a16565b949350505050565b600354604080517f80ddda30000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152336024830152604482018590529151919092169182916380ddda309160648082019260009290919082900301818387803b158015612f4b57600080fd5b505af1158015612f5f573d6000803e3d6000fd5b5050604080517fc3b35a7e000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152336024830152604482018790529151918516935063c3b35a7e925060648082019260009290919082900301818387803b158015612fd457600080fd5b505af1158015612fe8573d6000803e3d6000fd5b50505050505050565b60008060606040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152509050600181896040516020018083805190602001908083835b602083106130645780518252601f199092019160209182019101613045565b51815160209384036101000a600019018019909216911617905292019384525060408051808503815293820190819052835193945092839250908401908083835b602083106130c45780518252601f1990920191602091820191016130a5565b51815160209384036101000a60001901801990921691161790526040805192909401829003822060008084528383018087529190915260ff8e1683860152606083018d9052608083018c9052935160a08084019750919550601f1981019492819003909101925090865af1158015613140573d6000803e3d6000fd5b5050604051601f190151600160a060020a0390811698169790971498975050505050505050565b6003546101a084018051600090815260096020908152604080832054935183526008909152812054600160a060020a039093169290916060918391829182918291829182916131bb9163ffffffff6120cb16565b97508a6131d5898e60a001516120de90919063ffffffff16565b10156131e057600080fd5b8b610160015151604051908082528060200260200182016040528015613210578160200160208202803883390190505b5096506132268c60c001518c8e60a0015161391f565b9550600094505b8b6101600151518561ffff1610156133555788600160a060020a0316631f98ade38d61016001518761ffff1681518110151561326557fe5b60209081029091018101518f8201516040805160e060020a63ffffffff8716028152600160a060020a03938416600482015292909116602483015251604480830193928290030181600087803b1580156132be57600080fd5b505af11580156132d2573d6000803e3d6000fd5b505050506040513d60208110156132e857600080fd5b50516101808d0151805191955061331c9161ffff881690811061330757fe5b906020019060200201518c8e60a0015161391f565b925061332e848463ffffffff6120cb16565b878661ffff1681518110151561334057fe5b6020908102909101015260019094019361322d565b6133688a8d602001518e604001516139ab565b91508582111561337757600080fd5b600094505b8b6101600151518561ffff16101561346f5788600160a060020a0316631f98ade38d61016001518761ffff168151811015156133b457fe5b60209081029091018101518f8201516040805160e060020a63ffffffff8716028152600160a060020a03938416600482015292909116602483015251604480830193928290030181600087803b15801561340d57600080fd5b505af1158015613421573d6000803e3d6000fd5b505050506040513d602081101561343757600080fd5b50518751909150879061ffff871690811061344e57fe5b6020908102909101015181101561346457600080fd5b60019094019361337c565b61347b8c8c8885613d73565b6101a08c01516000908152600860205260409020546134a0908c63ffffffff6120cb16565b6101a0909c015160009081526008602052604090209b909b555050505050505050505050565b600160a060020a03811615156134db57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b81516000908190815b818110156135995784600160a060020a0316868281518110151561356c57fe5b90602001906020020151600160a060020a0316141561359157806001935093506135a1565b60010161354c565b600093508392505b50509250929050565b60606000806060600086519250600183036040519080825280602002602001820160405280156135e4578160200160208202803883390190505b509150600090505b8581101561363957868181518110151561360257fe5b90602001906020020151828281518110151561361a57fe5b600160a060020a039092166020928302909101909101526001016135ec565b50600185015b8281101561368f57868181518110151561365557fe5b90602001906020020151826001830381518110151561367057fe5b600160a060020a0390921660209283029091019091015260010161363f565b81878781518110151561369e57fe5b90602001906020020151945094505050509250929050565b6000848160200201518560016020020151866002602002015187600360200201518860046020020151886000602002015189600160200201518a600260200201518b600360200201518c600460200201518d600560200201518d8d604051602001808e600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018d600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018c600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018b600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018a600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401898152602001888152602001878152602001868152602001858152602001848152602001838051906020019060200280838360005b83811015613828578181015183820152602001613810565b50505050905001828051906020019060200280838360005b83811015613858578181015183820152602001613840565b505050509050019d50505050505050505050505050506040516020818303038152906040526040518082805190602001908083835b602083106138ac5780518252601f19909201916020918201910161388d565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912098975050505050505050565b60008215156138f2575060006120d8565b5081810281838281151561390257fe5b04146120d857fe5b6000818381151561391757fe5b049392505050565b60008060008380151561392e57fe5b85870991508115156139555761394e84612ec0888863ffffffff6138e116565b92506139a2565b61397b613968868863ffffffff6138e116565b612ec084620f424063ffffffff6138e116565b90506103e8811061398b57600080fd5b61399f84612ec0888863ffffffff6138e116565b92505b50509392505050565b60008060006139b8614392565b60008060608060605b8b51881015613d63576139d48c89613efc565b805160ff16600090815260016020526040902054909650600160a060020a03169450841515613a0257600080fd5b6060860151613a1890608063ffffffff6120cb16565b9350613a448c613a2f8a608063ffffffff6120cb16565b613a3f8b8863ffffffff6120cb16565b613f51565b600254604080890151815160e060020a63a6c4e467028152600160a060020a038f8116600483015260248201929092528f82166044820152898216606482015291519396509091169163a6c4e4679160848082019260009290919082900301818387803b158015613ab457600080fd5b505af1158015613ac8573d6000803e3d6000fd5b50505050856020015160ff16604051908082528060200260200182016040528015613afd578160200160208202803883390190505b509150856020015160ff16604051908082528060200260200182016040528015613b31578160200160208202803883390190505b50905084600160a060020a0316632365e3448c338d8a604001518b60200151896040518763ffffffff1660e060020a0281526004018087600160a060020a0316600160a060020a0316815260200186600160a060020a0316600160a060020a0316815260200185600160a060020a0316600160a060020a031681526020018481526020018360ff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613bf7578181015183820152602001613bdf565b50505050905090810190601f168015613c245780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b158015613c4857600080fd5b505af1158015613c5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015613c8557600080fd5b810190808051640100000000811115613c9d57600080fd5b82016020810184811115613cb057600080fd5b8151856020820283011164010000000082111715613ccd57600080fd5b50509291906020018051640100000000811115613ce957600080fd5b82016020810184811115613cfc57600080fd5b8151856020820283011164010000000082111715613d1957600080fd5b509496509450613d3393508892508e9150859050846125da565b613d43888563ffffffff6120cb16565b9750613d5c8660400151886120cb90919063ffffffff16565b96506139c1565b50949a9950505050505050505050565b6002546040850151600091600160a060020a03169063a6c4e46790613d9e868663ffffffff6120de16565b60208901516040805160e060020a63ffffffff8716028152600160a060020a0394851660048201526024810193909352921660448201523360648201529051608480830192600092919082900301818387803b158015613dfd57600080fd5b505af1158015613e11573d6000803e3d6000fd5b505050506060850151600160a060020a031615613e3957613e328585614083565b9050613e3d565b5060005b8460600151600160a060020a031633600160a060020a03168660200151600160a060020a03167fd96d7e885d794cf0991f8b4a09648f9467003fbe55a3e914bbb366faad261d2b886000015189604001518a608001518a613ea78a8c6120de90919063ffffffff16565b6101a08e015160408051600160a060020a039788168152958716602087015293909516848401526060840191909152608083015260a0820188905260c082019290925290519081900360e00190a45050505050565b613f04614392565b613f0c614392565b6000613f2784613f1b87614202565b9063ffffffff6120cb16565b80518352602080820151908401526040808201519084015260609081015190830152509392505050565b606081831115613fc257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46524f4d5f4c4553535f5448414e5f544f5f5245515549524544000000000000604482015290519081900360640190fd5b835182111561403257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f544f5f4c4553535f5448414e5f4c454e4754485f524551554952454400000000604482015290519081900360640190fd5b8282036040519080825280601f01601f191660200182016040528015614062578160200160208202803883390190505b50905061210161407182614202565b8461407b87614202565b018351614208565b60025461010083015160a0840151600092600160a060020a031691839182916140ad91879061391f565b91506140c3866101200151868860a0015161391f565b9050600082111561415a576080860151602087015160608801516040805160e060020a63a6c4e467028152600160a060020a0394851660048201526024810187905292841660448401529083166064830152519185169163a6c4e4679160848082019260009290919082900301818387803b15801561414157600080fd5b505af1158015614155573d6000803e3d6000fd5b505050505b60008111156141e857608086015160608701516040805160e060020a63a6c4e467028152600160a060020a039384166004820152602481018590523360448201529183166064830152519185169163a6c4e4679160848082019260009290919082900301818387803b1580156141cf57600080fd5b505af11580156141e3573d6000803e3d6000fd5b505050505b6141f8828263ffffffff6120cb16565b9695505050505050565b60200190565b6020811015614232576001816020036101000a0380198351168185511680821786525050506120c6565b8282141561423f576120c6565b828211156142795760208103905080820181840181515b82851015614271578451865260209586019590940193614256565b9052506120c6565b60208103905080820181840183515b818612156142a45782518252601f199283019290910190614288565b85525050505050565b82805482825590600052602060002090810192821561430f579160200282015b8281111561430f578251825473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039091161782556020909201916001909101906142cd565b5061431b9291506143b9565b5090565b604080516101c08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820183905261016082018190526101808201526101a081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b610b4091905b8082111561431b57805473ffffffffffffffffffffffffffffffffffffffff191681556001016143bf5600a165627a7a72305820b9a8fb4872b71fb3b4fd00a3ec0bd4be592dcf808477d663868bd6235ebb0ee80029",
"deployedBytecode": "0x6080604052600436106101665763ffffffff60e060020a6000350416630e4355d4811461016b5780631a1f2b3e146101a05780631cbb3877146101c35780631e912bd6146101f95780631e9a69501461022357806330a90736146102475780633e3d13b21461027357806347e7ef241461029a578063559ed339146102be57806359d667a51461032357806359e026f7146103475780636e667db314610371578063715018a6146103a257806377274ff0146103b7578063867904b4146103d85780638da5cb5b146103fc5780639f80ee8814610411578063a003e06914610432578063a782132c1461044d578063ac842c6614610471578063c19d93fb14610498578063e131243e146104d3578063e88942ba146104ff578063f2fde38b14610558578063f3fef3a314610579578063f4b077b11461059d578063f7213db6146105ee578063fbfa77cf14610606578063fe5b38e41461061b578063fef3ee7314610630575b600080fd5b34801561017757600080fd5b5061018c600160a060020a0360043516610651565b604080519115158252519081900360200190f35b3480156101ac57600080fd5b506101c1600160a060020a036004351661066f565b005b3480156101cf57600080fd5b506101c1600460a4610164356024818101918401359061018435908101908501356101a435610752565b34801561020557600080fd5b5061021160043561096f565b60408051918252519081900360200190f35b34801561022f57600080fd5b506101c1600160a060020a0360043516602435610981565b34801561025357600080fd5b506101c160246004803582810192908201359181359182019101356109a9565b34801561027f57600080fd5b506101c160ff60043516600160a060020a0360243516610a2e565b3480156102a657600080fd5b506101c1600160a060020a0360043516602435610abd565b3480156102ca57600080fd5b506102d3610add565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561030f5781810151838201526020016102f7565b505050509050019250505060405180910390f35b34801561032f57600080fd5b506101c1600160a060020a0360043516602435610b43565b34801561035357600080fd5b506101c1600160a060020a0360043581169060243516604435610ee8565b34801561037d57600080fd5b50610386610f9a565b60408051600160a060020a039092168252519081900360200190f35b3480156103ae57600080fd5b506101c1610fa9565b3480156103c357600080fd5b506101c1600160a060020a0360043516611015565b3480156103e457600080fd5b506101c1600160a060020a03600435166024356110f2565b34801561040857600080fd5b506103866111b7565b34801561041d57600080fd5b506101c1600160a060020a03600435166111c6565b34801561043e57600080fd5b5061038660ff60043516611250565b34801561045957600080fd5b506101c1600160a060020a036004351660243561126e565b34801561047d57600080fd5b506101c1600160a060020a0360043516602435604435611326565b3480156104a457600080fd5b506104ad6118b1565b60408051600160a060020a03938416815291909216602082015281519081900390910190f35b3480156104df57600080fd5b506101c160246004803582810192908201359181359182019101356118c7565b34801561050b57600080fd5b506101c1600460a46101643560248181019184013590610184358082019190860135906101a435906101c43560ff16906101e43580820191908a01359061020435908101908b013561195d565b34801561056457600080fd5b506101c1600160a060020a0360043516611ae5565b34801561058557600080fd5b506101c1600160a060020a0360043516602435611b08565b3480156105a957600080fd5b5061038660048035600160a060020a03169060248035808201929081013591604435808201929081013591606435916084359160a4359160c435918201910135611b26565b3480156105fa57600080fd5b50610211600435611dcf565b34801561061257600080fd5b50610386611de1565b34801561062757600080fd5b506102d3611df0565b34801561063c57600080fd5b5061018c600160a060020a0360043516611e53565b600160a060020a031660009081526004602052604090205460ff1690565b600054600160a060020a0316331461068657600080fd5b600160a060020a03811660009081526004602052604090205460ff1615156106ad57600080fd5b600160a060020a038116600090815260046020908152604091829020805460ff191690556005805483518184028101840190945280845261073a9385939092919083018282801561072757602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610709575b5050505050611e7190919063ffffffff16565b805161074e916005916020909101906142ad565b5050565b61075a61431f565b60008060006001600a5414151561077057600080fd5b6002600a556000851161078257600080fd5b6040805160a0818101909252610829918d90600590839083908082843750506040805160c081810190925293508f925060069150839083908082843782019150505050508b8b808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508a8a8080602002602001604051908101604052809392919081815260200183836020028082843750611ea7945050505050565b6020810151909450600160a060020a0316331461084557600080fd5b61084f8486611f67565b6101a0840180516000908152600960209081526040808320549351835260089091529020546108839163ffffffff6120cb16565b60a085015190935061089b908463ffffffff6120de16565b91506108ad828663ffffffff6120f016565b6101a08501516000908152600960205260409020549091506108d5908263ffffffff6120cb16565b6101a08501805160009081526009602090815260409182902093909355606080880151848901518951848b015195518551600160a060020a039283168152968216978701979097528585018890529285019590955291519181169316917fcfd7c58678e31e293d74b8f7aebbfb1a9c6dd7617df89f9ad0bc9271291df5d3919081900360800190a350506001600a55505050505050505050565b60009081526009602052604090205490565b600a5460011461099057600080fd5b6002600a556109a0338383612108565b50506001600a55565b600a546001146109b857600080fd5b6002600a81905550610a2333338686808060200260200160405190810160405280939291908181526020018383602002808284375050604080516020808c0282810182019093528b82529095508b94508a9350839250850190849080828437506125da945050505050565b50506001600a555050565b600054600160a060020a03163314610a4557600080fd5b60ff8216600081815260016020908152604091829020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03861690811790915582519384529083015280517feee2c0570205f21356a5108d71a4d6e7151682b92a84c761fca82cac87275c289281900390910190a15050565b600a54600114610acc57600080fd5b6002600a556109a03380848461265d565b60606001600601805480602002602001604051908101604052809291908181526020018280548015610b3857602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610b1a575b505050505090505b90565b600080606080606086945084600160a060020a031663570f31676040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610b8c57600080fd5b505af1158015610ba0573d6000803e3d6000fd5b505050506040513d6020811015610bb657600080fd5b5051604080518281526020808402820101909152909450848015610be4578160200160208202803883390190505b50925083604051908082528060200260200182016040528015610c11578160200160208202803883390190505b50915083604051908082528060200260200182016040528015610c3e578160200160208202803883390190505b50905084600160a060020a0316639979ef45876040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b158015610c8a57600080fd5b505af1158015610c9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526060811015610cc757600080fd5b810190808051640100000000811115610cdf57600080fd5b82016020810184811115610cf257600080fd5b8151856020820283011164010000000082111715610d0f57600080fd5b50509291906020018051640100000000811115610d2b57600080fd5b82016020810184811115610d3e57600080fd5b8151856020820283011164010000000082111715610d5b57600080fd5b50509291906020018051640100000000811115610d7757600080fd5b82016020810184811115610d8a57600080fd5b8151856020820283011164010000000082111715610da757600080fd5b50959850939650929450610dc593503392508a9150869050856125da565b6003546040517f95c7d896000000000000000000000000000000000000000000000000000000008152600160a060020a0389811660048301908152336024840181905260806044850190815288516084860152885193909516946395c7d896948d9492938a9389939192606481019160a4909101906020808801910280838360005b83811015610e5f578181015183820152602001610e47565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610e9e578181015183820152602001610e86565b505050509050019650505050505050600060405180830381600087803b158015610ec757600080fd5b505af1158015610edb573d6000803e3d6000fd5b5050505050505050505050565b600a54600114610ef757600080fd5b6002600a55600354604080517fb19ad577000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a0386811660248301528581166044830152606482018590529151919092169163b19ad57791608480830192600092919082900301818387803b158015610f7857600080fd5b505af1158015610f8c573d6000803e3d6000fd5b50506001600a555050505050565b600254600160a060020a031690565b600054600160a060020a03163314610fc057600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a0316331461102c57600080fd5b600160a060020a03811660009081526006602052604090205460ff16151561105357600080fd5b600160a060020a038116600090815260066020908152604091829020805460ff19169055600780548351818402810184019094528084526110de9385939092919083018282801561072757602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610709575050505050611e7190919063ffffffff16565b805161074e916007916020909101906142ad565b600a5460011461110157600080fd5b6002600a55600160a060020a03821660009081526006602052604090205460ff16151561112d57600080fd5b81600160a060020a03166342a7cfd56040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561116b57600080fd5b505af115801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051818115156111a157fe5b06156111ac57600080fd5b6109a0338383612774565b600054600160a060020a031681565b600054600160a060020a031633146111dd57600080fd5b600160a060020a03166000818152600460205260408120805460ff191660019081179091556005805491820181559091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b60ff16600090815260016020526040902054600160a060020a031690565b600a5460011461127d57600080fd5b6002600a55600354604080517f80ddda30000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015233602483015260448201859052915191909216916380ddda3091606480830192600092919082900301818387803b1580156112f657600080fd5b505af115801561130a573d6000803e3d6000fd5b50506003546109a09250600160a060020a031690508383612108565b600080600060608060008060006001600a5414151561134457600080fd5b6002600a55600354600160a060020a03808d166000908152600660205260409020548d9a509116975060ff16151561137b57600080fd5b87600160a060020a03166342a7cfd56040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156113b957600080fd5b505af11580156113cd573d6000803e3d6000fd5b505050506040513d60208110156113e357600080fd5b50518a8115156113ef57fe5b06156113fa57600080fd5b604080517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018c90529051600160a060020a038a1691639dc29fac91604480830192600092919082900301818387803b15801561146157600080fd5b505af1158015611475573d6000803e3d6000fd5b5050505087600160a060020a03166342a7cfd56040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156114b757600080fd5b505af11580156114cb573d6000803e3d6000fd5b505050506040513d60208110156114e157600080fd5b5051604080517f99d50d5d0000000000000000000000000000000000000000000000000000000081529051919750600160a060020a038a16916399d50d5d9160048082019260009290919082900301818387803b15801561154157600080fd5b505af1158015611555573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561157e57600080fd5b81019080805164010000000081111561159657600080fd5b820160208101848111156115a957600080fd5b81518560208202830111640100000000821117156115c657600080fd5b5050929190505050945087600160a060020a031663027aa9f56040518163ffffffff1660e060020a028152600401600060405180830381600087803b15801561160e57600080fd5b505af1158015611622573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561164b57600080fd5b81019080805164010000000081111561166357600080fd5b8201602081018481111561167657600080fd5b815185602082028301116401000000008211171561169357600080fd5b5090975060009650505050505b845183101561189f576116cb84848151811015156116ba57fe5b90602001906020020151878c612eaa565b915086600160a060020a03166380ddda3086858151811015156116ea57fe5b602090810290910101516040805160e060020a63ffffffff8516028152600160a060020a039283166004820152918f1660248301526044820186905251606480830192600092919082900301818387803b15801561174757600080fd5b505af115801561175b573d6000803e3d6000fd5b505050600284900a915050888116156118035786600160a060020a031663bada5726868581518110151561178b57fe5b602090810290910101516040805160e060020a63ffffffff8516028152600160a060020a0390921660048301523360248301526044820186905251606480830192600092919082900301818387803b1580156117e657600080fd5b505af11580156117fa573d6000803e3d6000fd5b50505050611894565b86600160a060020a031663c3b35a7e868581518110151561182057fe5b602090810290910101516040805160e060020a63ffffffff8516028152600160a060020a0390921660048301523360248301526044820186905251606480830192600092919082900301818387803b15801561187b57600080fd5b505af115801561188f573d6000803e3d6000fd5b505050505b6001909201916116a0565b50506001600a55505050505050505050565b600254600354600160a060020a03918216911682565b600a546000906001146118d957600080fd5b6002600a55600084116118eb57600080fd5b600082116118f857600080fd5b83821461190457600080fd5b5060005b838110156119515761194985858381811061191f57fe5b90506020020135600160a060020a0316848484818110151561193d57fe5b90506020020135612ed4565b600101611908565b50506001600a55505050565b61196561431f565b600a5460011461197457600080fd5b6002600a556040805160a0818101909252611a27918f90600590839083908082843782019150505050508d600680602002604051908101604052809291908260066020028082843782019150505050508d8d808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508c8c8080602002602001604051908101604052809392919081815260200183836020028082843750611ea7945050505050565b9050611a6e816101a00151826020015188888860008181101515611a4757fe5b6020029190910135905089896001818110611a5e57fe5b9050602002013560001916612ff1565b1515611a7957600080fd5b611a838188611f67565b611abe818885858080601f01602080910402602001604051908101604052809392919081815260200183838082843750613167945050505050565b611ad18160200151826000015189612774565b50506001600a555050505050505050505050565b600054600160a060020a03163314611afc57600080fd5b611b05816134c6565b50565b600a54600114611b1757600080fd5b6002600a556109a08282612ed4565b600160a060020a038a16600090815260046020526040812054819060ff161515611b4f57600080fd5b6040517fe49e72cc00000000000000000000000000000000000000000000000000000000815260448101889052606481018790526084810186905260c06004820190815260c482018c9052600160a060020a038e169163e49e72cc918e918e918e918e918e918e918e918e918e918190602481019060a481019060e4018d60208e028082843790910185810384528b8152602090810191508c908c02808284379091018581038352868152602001905086868082843782019150509c50505050505050505050505050602060405180830381600087803b158015611c3257600080fd5b505af1158015611c46573d6000803e3d6000fd5b505050506040513d6020811015611c5c57600080fd5b81019080805190602001909291905050509050600180600501600083600160a060020a0316600160a060020a0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a815481600160a060020a030219169083600160a060020a031602179055505080600160a060020a03167fa31e381e140096a837a20ba16eb64e32a4011fda0697adbfd7a8f7341c56aa948d8d8d8d8d8d8d8d6040518089600160a060020a0316600160a060020a0316815260200180602001806020018681526020018560001916600019168152602001846000191660001916815260200183810383528a8a82818152602001925060200280828437909101848103835288815260209081019150899089028082843760405192018290039c50909a5050505050505050505050a29b9a5050505050505050505050565b60009081526008602052604090205490565b600354600160a060020a031690565b60606001600401805480602002602001604051908101604052809291908181526020018280548015610b3857602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610b1a575050505050905090565b600160a060020a031660009081526006602052604090205460ff1690565b60606000806060611e828686613543565b92509250811515611e9257600080fd5b611e9c86846135aa565b509695505050505050565b611eaf61431f565b611eb761431f565b604080516101c0810182528751600160a060020a0390811682526020808a0151821681840152898401518216838501526060808b01518316818501526080808c015190931683850152895160a080860191909152918a015160c08501529389015160e08401529288015161010083015287015161012082015290860151610140820152610160810185905261018081018490526101a08101611f5b888888886136b6565b90529695505050505050565b8151600160a060020a03811660009081526006602052604090205460ff161515611f9057600080fd5b60008360c00151118015611fa8575060008360a00151115b1515611fb357600080fd5b60e0830151421115611fc457600080fd5b80600160a060020a03166342a7cfd56040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561200257600080fd5b505af1158015612016573d6000803e3d6000fd5b505050506040513d602081101561202c57600080fd5b505160a084015181151561203c57fe5b061561204757600080fd5b80600160a060020a03166342a7cfd56040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561208557600080fd5b505af1158015612099573d6000803e3d6000fd5b505050506040513d60208110156120af57600080fd5b5051828115156120bb57fe5b06156120c657600080fd5b505050565b818101828110156120d857fe5b92915050565b6000828211156120ea57fe5b50900390565b60008183106120ff5781612101565b825b9392505050565b600354600160a060020a0380841660009081526006602052604081205485939290921691606090819083908190819060ff16151561214557600080fd5b87600160a060020a03166342a7cfd56040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561218357600080fd5b505af1158015612197573d6000803e3d6000fd5b505050506040513d60208110156121ad57600080fd5b5051898115156121b957fe5b06156121c457600080fd5b87600160a060020a0316639dc29fac8c8b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b15801561222757600080fd5b505af115801561223b573d6000803e3d6000fd5b5050505087600160a060020a03166342a7cfd56040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561227d57600080fd5b505af1158015612291573d6000803e3d6000fd5b505050506040513d60208110156122a757600080fd5b5051604080517f99d50d5d0000000000000000000000000000000000000000000000000000000081529051919750600160a060020a038a16916399d50d5d9160048082019260009290919082900301818387803b15801561230757600080fd5b505af115801561231b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561234457600080fd5b81019080805164010000000081111561235c57600080fd5b8201602081018481111561236f57600080fd5b815185602082028301116401000000008211171561238c57600080fd5b5050929190505050945087600160a060020a031663027aa9f56040518163ffffffff1660e060020a028152600401600060405180830381600087803b1580156123d457600080fd5b505af11580156123e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561241157600080fd5b81019080805164010000000081111561242957600080fd5b8201602081018481111561243c57600080fd5b815185602082028301116401000000008211171561245957600080fd5b5090975060009650505050505b84518361ffff161015610edb57848361ffff1681518110151561248557fe5b9060200190602002015191506124b7848461ffff168151811015156124a657fe5b90602001906020020151878b612eaa565b604080517f80ddda30000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301528d81166024830152604482018490529151929350908916916380ddda309160648082019260009290919082900301818387803b15801561252d57600080fd5b505af1158015612541573d6000803e3d6000fd5b5050604080517fbada5726000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152336024830152604482018690529151918b16935063bada5726925060648082019260009290919082900301818387803b1580156125b657600080fd5b505af11580156125ca573d6000803e3d6000fd5b5050600190940193506124669050565b60008083511115156125eb57600080fd5b81516000106125f957600080fd5b815183511461260757600080fd5b5060005b82518110156126565761264e8585858481518110151561262757fe5b90602001906020020151858581518110151561263f57fe5b9060200190602002015161265d565b60010161260b565b5050505050565b6002546003546040805160e060020a63a6c4e467028152600160a060020a03868116600483015260248201869052888116604483015292831660648201529051919092169163a6c4e46791608480830192600092919082900301818387803b1580156126c857600080fd5b505af11580156126dc573d6000803e3d6000fd5b5050600354604080517fbada5726000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152888116602483015260448201879052915191909216935063bada57269250606480830192600092919082900301818387803b15801561275657600080fd5b505af115801561276a573d6000803e3d6000fd5b5050505050505050565b60008060006060806000806000808a9850600160020160009054906101000a9004600160a060020a0316975088600160a060020a03166342a7cfd56040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156127de57600080fd5b505af11580156127f2573d6000803e3d6000fd5b505050506040513d602081101561280857600080fd5b5051604080517f99d50d5d0000000000000000000000000000000000000000000000000000000081529051919850600160a060020a038b16916399d50d5d9160048082019260009290919082900301818387803b15801561286857600080fd5b505af115801561287c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156128a557600080fd5b8101908080516401000000008111156128bd57600080fd5b820160208101848111156128d057600080fd5b81518560208202830111640100000000821117156128ed57600080fd5b5050929190505050955088600160a060020a031663027aa9f56040518163ffffffff1660e060020a028152600401600060405180830381600087803b15801561293557600080fd5b505af1158015612949573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561297257600080fd5b81019080805164010000000081111561298a57600080fd5b8201602081018481111561299d57600080fd5b81518560208202830111640100000000821117156129ba57600080fd5b5090985060009750505050505b8551841015612e21576129f285858151811015156129e157fe5b90602001906020020151888c612eaa565b925087600160a060020a0316631f98ade38786815181101515612a1157fe5b906020019060200201518e6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182600160a060020a0316600160a060020a0316815260200192505050602060405180830381600087803b158015612a8057600080fd5b505af1158015612a94573d6000803e3d6000fd5b505050506040513d6020811015612aaa57600080fd5b50519150828210612b665787600160a060020a03166380ddda308786815181101515612ad257fe5b906020019060200201518e866040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183600160a060020a0316600160a060020a031681526020018281526020019350505050600060405180830381600087803b158015612b4957600080fd5b505af1158015612b5d573d6000803e3d6000fd5b50505050612d83565b6000821115612c1c5787600160a060020a03166380ddda308786815181101515612b8c57fe5b906020019060200201518e856040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183600160a060020a0316600160a060020a031681526020018281526020019350505050600060405180830381600087803b158015612c0357600080fd5b505af1158015612c17573d6000803e3d6000fd5b505050505b612c2c838363ffffffff6120de16565b6002548751919250600160a060020a03169063a6c4e46790889087908110612c5057fe5b60209081029091010151612c6a868663ffffffff6120de16565b8f600160020160009054906101000a9004600160a060020a03166040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200182600160a060020a0316600160a060020a03168152602001945050505050600060405180830381600087803b158015612d0857600080fd5b505af1158015612d1c573d6000803e3d6000fd5b505050508584815181101515612d2e57fe5b90602001906020020151600160a060020a03168b600160a060020a03167fced8518610cf00c97309551834addd978c595341eda2066dbd52f9e990489573836040518082815260200191505060405180910390a35b87600160a060020a031663bada57268786815181101515612da057fe5b602090810290910101516040805160e060020a63ffffffff8516028152600160a060020a039283166004820152918f1660248301526044820187905251606480830192600092919082900301818387803b158015612dfd57600080fd5b505af1158015612e11573d6000803e3d6000fd5b5050600190950194506129c79050565b88600160a060020a03166340c10f198d8c6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b158015612e8457600080fd5b505af1158015612e98573d6000803e3d6000fd5b50505050505050505050505050505050565b6000612ecc83612ec0848763ffffffff6138e116565b9063ffffffff61390a16565b949350505050565b600354604080517f80ddda30000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152336024830152604482018590529151919092169182916380ddda309160648082019260009290919082900301818387803b158015612f4b57600080fd5b505af1158015612f5f573d6000803e3d6000fd5b5050604080517fc3b35a7e000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152336024830152604482018790529151918516935063c3b35a7e925060648082019260009290919082900301818387803b158015612fd457600080fd5b505af1158015612fe8573d6000803e3d6000fd5b50505050505050565b60008060606040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152509050600181896040516020018083805190602001908083835b602083106130645780518252601f199092019160209182019101613045565b51815160209384036101000a600019018019909216911617905292019384525060408051808503815293820190819052835193945092839250908401908083835b602083106130c45780518252601f1990920191602091820191016130a5565b51815160209384036101000a60001901801990921691161790526040805192909401829003822060008084528383018087529190915260ff8e1683860152606083018d9052608083018c9052935160a08084019750919550601f1981019492819003909101925090865af1158015613140573d6000803e3d6000fd5b5050604051601f190151600160a060020a0390811698169790971498975050505050505050565b6003546101a084018051600090815260096020908152604080832054935183526008909152812054600160a060020a039093169290916060918391829182918291829182916131bb9163ffffffff6120cb16565b97508a6131d5898e60a001516120de90919063ffffffff16565b10156131e057600080fd5b8b610160015151604051908082528060200260200182016040528015613210578160200160208202803883390190505b5096506132268c60c001518c8e60a0015161391f565b9550600094505b8b6101600151518561ffff1610156133555788600160a060020a0316631f98ade38d61016001518761ffff1681518110151561326557fe5b60209081029091018101518f8201516040805160e060020a63ffffffff8716028152600160a060020a03938416600482015292909116602483015251604480830193928290030181600087803b1580156132be57600080fd5b505af11580156132d2573d6000803e3d6000fd5b505050506040513d60208110156132e857600080fd5b50516101808d0151805191955061331c9161ffff881690811061330757fe5b906020019060200201518c8e60a0015161391f565b925061332e848463ffffffff6120cb16565b878661ffff1681518110151561334057fe5b6020908102909101015260019094019361322d565b6133688a8d602001518e604001516139ab565b91508582111561337757600080fd5b600094505b8b6101600151518561ffff16101561346f5788600160a060020a0316631f98ade38d61016001518761ffff168151811015156133b457fe5b60209081029091018101518f8201516040805160e060020a63ffffffff8716028152600160a060020a03938416600482015292909116602483015251604480830193928290030181600087803b15801561340d57600080fd5b505af1158015613421573d6000803e3d6000fd5b505050506040513d602081101561343757600080fd5b50518751909150879061ffff871690811061344e57fe5b6020908102909101015181101561346457600080fd5b60019094019361337c565b61347b8c8c8885613d73565b6101a08c01516000908152600860205260409020546134a0908c63ffffffff6120cb16565b6101a0909c015160009081526008602052604090209b909b555050505050505050505050565b600160a060020a03811615156134db57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b81516000908190815b818110156135995784600160a060020a0316868281518110151561356c57fe5b90602001906020020151600160a060020a0316141561359157806001935093506135a1565b60010161354c565b600093508392505b50509250929050565b60606000806060600086519250600183036040519080825280602002602001820160405280156135e4578160200160208202803883390190505b509150600090505b8581101561363957868181518110151561360257fe5b90602001906020020151828281518110151561361a57fe5b600160a060020a039092166020928302909101909101526001016135ec565b50600185015b8281101561368f57868181518110151561365557fe5b90602001906020020151826001830381518110151561367057fe5b600160a060020a0390921660209283029091019091015260010161363f565b81878781518110151561369e57fe5b90602001906020020151945094505050509250929050565b6000848160200201518560016020020151866002602002015187600360200201518860046020020151886000602002015189600160200201518a600260200201518b600360200201518c600460200201518d600560200201518d8d604051602001808e600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018d600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018c600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018b600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018a600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401898152602001888152602001878152602001868152602001858152602001848152602001838051906020019060200280838360005b83811015613828578181015183820152602001613810565b50505050905001828051906020019060200280838360005b83811015613858578181015183820152602001613840565b505050509050019d50505050505050505050505050506040516020818303038152906040526040518082805190602001908083835b602083106138ac5780518252601f19909201916020918201910161388d565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912098975050505050505050565b60008215156138f2575060006120d8565b5081810281838281151561390257fe5b04146120d857fe5b6000818381151561391757fe5b049392505050565b60008060008380151561392e57fe5b85870991508115156139555761394e84612ec0888863ffffffff6138e116565b92506139a2565b61397b613968868863ffffffff6138e116565b612ec084620f424063ffffffff6138e116565b90506103e8811061398b57600080fd5b61399f84612ec0888863ffffffff6138e116565b92505b50509392505050565b60008060006139b8614392565b60008060608060605b8b51881015613d63576139d48c89613efc565b805160ff16600090815260016020526040902054909650600160a060020a03169450841515613a0257600080fd5b6060860151613a1890608063ffffffff6120cb16565b9350613a448c613a2f8a608063ffffffff6120cb16565b613a3f8b8863ffffffff6120cb16565b613f51565b600254604080890151815160e060020a63a6c4e467028152600160a060020a038f8116600483015260248201929092528f82166044820152898216606482015291519396509091169163a6c4e4679160848082019260009290919082900301818387803b158015613ab457600080fd5b505af1158015613ac8573d6000803e3d6000fd5b50505050856020015160ff16604051908082528060200260200182016040528015613afd578160200160208202803883390190505b509150856020015160ff16604051908082528060200260200182016040528015613b31578160200160208202803883390190505b50905084600160a060020a0316632365e3448c338d8a604001518b60200151896040518763ffffffff1660e060020a0281526004018087600160a060020a0316600160a060020a0316815260200186600160a060020a0316600160a060020a0316815260200185600160a060020a0316600160a060020a031681526020018481526020018360ff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613bf7578181015183820152602001613bdf565b50505050905090810190601f168015613c245780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b158015613c4857600080fd5b505af1158015613c5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015613c8557600080fd5b810190808051640100000000811115613c9d57600080fd5b82016020810184811115613cb057600080fd5b8151856020820283011164010000000082111715613ccd57600080fd5b50509291906020018051640100000000811115613ce957600080fd5b82016020810184811115613cfc57600080fd5b8151856020820283011164010000000082111715613d1957600080fd5b509496509450613d3393508892508e9150859050846125da565b613d43888563ffffffff6120cb16565b9750613d5c8660400151886120cb90919063ffffffff16565b96506139c1565b50949a9950505050505050505050565b6002546040850151600091600160a060020a03169063a6c4e46790613d9e868663ffffffff6120de16565b60208901516040805160e060020a63ffffffff8716028152600160a060020a0394851660048201526024810193909352921660448201523360648201529051608480830192600092919082900301818387803b158015613dfd57600080fd5b505af1158015613e11573d6000803e3d6000fd5b505050506060850151600160a060020a031615613e3957613e328585614083565b9050613e3d565b5060005b8460600151600160a060020a031633600160a060020a03168660200151600160a060020a03167fd96d7e885d794cf0991f8b4a09648f9467003fbe55a3e914bbb366faad261d2b886000015189604001518a608001518a613ea78a8c6120de90919063ffffffff16565b6101a08e015160408051600160a060020a039788168152958716602087015293909516848401526060840191909152608083015260a0820188905260c082019290925290519081900360e00190a45050505050565b613f04614392565b613f0c614392565b6000613f2784613f1b87614202565b9063ffffffff6120cb16565b80518352602080820151908401526040808201519084015260609081015190830152509392505050565b606081831115613fc257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46524f4d5f4c4553535f5448414e5f544f5f5245515549524544000000000000604482015290519081900360640190fd5b835182111561403257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f544f5f4c4553535f5448414e5f4c454e4754485f524551554952454400000000604482015290519081900360640190fd5b8282036040519080825280601f01601f191660200182016040528015614062578160200160208202803883390190505b50905061210161407182614202565b8461407b87614202565b018351614208565b60025461010083015160a0840151600092600160a060020a031691839182916140ad91879061391f565b91506140c3866101200151868860a0015161391f565b9050600082111561415a576080860151602087015160608801516040805160e060020a63a6c4e467028152600160a060020a0394851660048201526024810187905292841660448401529083166064830152519185169163a6c4e4679160848082019260009290919082900301818387803b15801561414157600080fd5b505af1158015614155573d6000803e3d6000fd5b505050505b60008111156141e857608086015160608701516040805160e060020a63a6c4e467028152600160a060020a039384166004820152602481018590523360448201529183166064830152519185169163a6c4e4679160848082019260009290919082900301818387803b1580156141cf57600080fd5b505af11580156141e3573d6000803e3d6000fd5b505050505b6141f8828263ffffffff6120cb16565b9695505050505050565b60200190565b6020811015614232576001816020036101000a0380198351168185511680821786525050506120c6565b8282141561423f576120c6565b828211156142795760208103905080820181840181515b82851015614271578451865260209586019590940193614256565b9052506120c6565b60208103905080820181840183515b818612156142a45782518252601f199283019290910190614288565b85525050505050565b82805482825590600052602060002090810192821561430f579160200282015b8281111561430f578251825473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039091161782556020909201916001909101906142cd565b5061431b9291506143b9565b5090565b604080516101c08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820183905261016082018190526101808201526101a081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b610b4091905b8082111561431b57805473ffffffffffffffffffffffffffffffffffffffff191681556001016143bf5600a165627a7a72305820b9a8fb4872b71fb3b4fd00a3ec0bd4be592dcf808477d663868bd6235ebb0ee80029",
"sourceMap": "1406:674:1:-;;;487:1:72;657:51;;1772:306:1;8:9:-1;5:2;;;30:1;27;20:12;5:2;1772:306:1;;;;;;;;;;;;;;;;;;;567:5:75;:18;;-1:-1:-1;;;;;;567:18:75;;;575:10;567:18;;;;1947:19:1;:36;;-1:-1:-1;;;;;1947:36:1;;;;;;;;;2051:11;:20;;;;;;;;;;;;;;1406:674;;;;;;",
"deployedSourceMap": "1406:674:1:-;;;;;;;;;-1:-1:-1;;;1406:674:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:164:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2803:164:28;-1:-1:-1;;;;;2803:164:28;;;;;;;;;;;;;;;;;;;;;;;1857:412:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1857:412:15;-1:-1:-1;;;;;1857:412:15;;;;;;;5112:1501:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5112:1501:17;;;;;;;;;;;;;;;;;;;;;;;;;;;4385:167:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4385:167:28;;;;;;;;;;;;;;;;;;;;;2401:219:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2401:219:16;-1:-1:-1;;;;;2401:219:16;;;;;;;2604:317:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2604:317:12;;;;;;;;;;;;;;;;;;;;;;;;1457:372:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1457:372:13;;;;;-1:-1:-1;;;;;1457:372:13;;;;;1563:291:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1563:291:12;-1:-1:-1;;;;;1563:291:12;;;;;;;3685:119:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3685:119:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;3685:119:28;;;;;;;;;;;;;;;;;1612:1195:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1612:1195:18;-1:-1:-1;;;;;1612:1195:18;;;;;;;4270:292:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4270:292:12;-1:-1:-1;;;;;4270:292:12;;;;;;;;;;;;2263:125:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2263:125:28;;;;;;;;-1:-1:-1;;;;;2263:125:28;;;;;;;;;;;;;;1001:111:75;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1001:111:75;;;;2470:381:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2470:381:15;-1:-1:-1;;;;;2470:381:15;;;;;1724:467:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1724:467:16;-1:-1:-1;;;;;1724:467:16;;;;;;;238:20:75;;8:9:-1;5:2;;;30:1;27;20:12;5:2;238:20:75;;;;1375:273:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1375:273:15;-1:-1:-1;;;;;1375:273:15;;;;;1985:161:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1985:161:28;;;;;;;5631:406:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5631:406:16;-1:-1:-1;;;;;5631:406:16;;;;;;;3246:2148;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3246:2148:16;-1:-1:-1;;;;;3246:2148:16;;;;;;;;;1710:18:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1710:18:28;;;;;;;;-1:-1:-1;;;;;1710:18:28;;;;;;;;;;;;;;;;;;;;;;;;3240:689:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3240:689:12;;;;;;;;;;;;;;;;;;;;;;;;3319:1248:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3319:1248:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1274:103:75;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1274:103:75;-1:-1:-1;;;;;1274:103:75;;;;;2064:203:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2064:203:12;-1:-1:-1;;;;;2064:203:12;;;;;;;2106:1076:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2106:1076:14;;;;-1:-1:-1;;;;;2106:1076:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4011:163:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4011:163:28;;;;;2489:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2489:109:28;;;;3099:119;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3099:119:28;;;;3409:146;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3409:146:28;-1:-1:-1;;;;;3409:146:28;;;;;2803:164;-1:-1:-1;;;;;2930:30:28;2903:4;2930:30;;;:20;:30;;;;;;;;;2803:164::o;1857:412:15:-;719:5:75;;-1:-1:-1;;;;;719:5:75;705:10;:19;697:28;;;;;;-1:-1:-1;;;;;2014:30:15;;;;;;:20;:30;;;;;;;;2006:39;;;;;;;;-1:-1:-1;;;;;2107:30:15;;2140:5;2107:30;;;:20;:30;;;;;;;;;:38;;-1:-1:-1;;2107:38:15;;;2230:15;:22;;;;;;;;;;;;;;;;;:32;;2128:8;;2230:22;;:15;:22;;;:15;:22;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2230:22:15;;;;;;;;;;;;;;;;;;;;;;;:32;;;;:::i;:::-;2212:50;;;;:15;;:50;;;;;;:::i;:::-;;1857:412;:::o;5112:1501:17:-;5501:39;;:::i;:::-;5951:25;6063:23;6136:22;487:1:72;1128:14;;:39;1120:48;;;;;;;;584:1;1174:14;:40;5449:1:17;5431:19;;5423:28;;;;;;5543:141;;;;;;;;;;;;5571:10;;5543:141;;;;5571:10;;5543:141;5571:10;5543:141;;-1:-1:-1;;5543:141:17;;;;;;;;;;;-1:-1:-1;5595:7:17;;-1:-1:-1;5543:141:17;;-1:-1:-1;5543:141:17;;5595:7;;5543:141;5595:7;5543:141;;;;;;;;;;5616:19;;5543:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5649:25;;5543:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5543:14:17;;-1:-1:-1;;;;;5543:141:17:i;:::-;5754:18;;;;5501:183;;-1:-1:-1;;;;;;5754:32:17;5776:10;5754:32;5746:41;;;;;;5831:71;5858:5;5877:15;5831:13;:71::i;:::-;6036:15;;;;;6017:35;;;;:18;:35;;;;;;;;;5996:15;;5979:33;;6017:18;5979:33;;;;;;:74;;;:37;:74;:::i;:::-;6089:14;;;;5951:102;;-1:-1:-1;6089:37:17;;5951:102;6089:37;:18;:37;:::i;:::-;6063:63;-1:-1:-1;6161:39:17;6063:63;6184:15;6161:39;:22;:39;:::i;:::-;6316:15;;;;6297:35;;;;:18;:35;;;;;;6136:64;;-1:-1:-1;6297:55:17;;6136:64;6297:55;:39;:55;:::i;:::-;6278:15;;;;;6259:35;;;;:18;:35;;;;;;;;;:93;;;;6518:20;;;;;6456:18;;;;6426:16;;6488;;;;6580:15;;6403:202;;-1:-1:-1;;;;;6403:202:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;487:1:72;1227:14;:38;-1:-1:-1;;;;;;;;;5112:1501:17:o;4385:167:28:-;4485:7;4515:30;;;:18;:30;;;;;;;4385:167::o;2401:219:16:-;1128:14:72;;487:1;1128:39;1120:48;;;;;;584:1;1174:14;:40;2524:89:16;2552:10;2576:4;2594:9;2524:14;:89::i;:::-;-1:-1:-1;;487:1:72;1227:14;:38;2401:219:16:o;2604:317:12:-;1128:14:72;;487:1;1128:39;1120:48;;;;;;584:1;1174:14;:40;;;;2790:124:12;2824:10;2848;2872:7;;2790:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2790:124:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2893:11:12;;-1:-1:-1;2893:11:12;;-1:-1:-1;2893:11:12;;-1:-1:-1;2790:124:12;;;2893:11;;2790:124;2893:11;2790:124;;-1:-1:-1;2790:20:12;;-1:-1:-1;;;;;2790:124:12:i;:::-;-1:-1:-1;;487:1:72;1227:14;:38;-1:-1:-1;;2604:317:12:o;1457:372:13:-;719:5:75;;-1:-1:-1;;;;;719:5:75;705:10;:19;697:28;;;;;;1641::13;;;:15;:28;;;:5;:28;;;;;;;;;:40;;-1:-1:-1;;1641:40:13;-1:-1:-1;;;;;1641:40:13;;;;;;;;1746:76;;;;;;;;;;;;;;;;;;;;;1457:372;;:::o;1563:291:12:-;1128:14:72;;487:1;1128:39;1120:48;;;;;;584:1;1174:14;:40;1731:116:12;1760:10;;1808:6;1828:9;1731:15;:116::i;3685:119:28:-;3750:9;3782:5;:15;;3775:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3775:22:28;;;;;;;;;;;;;;;;;;;;;;;3685:119;;:::o;1612:1195:18:-;1793:40;1888:23;2004:27;2074:32;2149:33;1857:20;1793:85;;1914:19;-1:-1:-1;;;;;1914:47:18;;:49;;;;;-1:-1:-1;;;1914:49:18;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1914:49:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1914:49:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1914:49:18;2034:30;;;;;;1914:49;2034:30;;;;;;;;;1914:49;;-1:-1:-1;1914:49:18;2034:30;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;2034:30:18;;2004:60;;2123:15;2109:30;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;2109:30:18;;2074:65;;2199:15;2185:30;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;2185:30:18;;2149:66;;2380:19;-1:-1:-1;;;;;2380:28:18;;2409:9;2380:39;;;;;-1:-1:-1;;;2380:39:18;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2380:39:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2380:39:18;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2380:39:18;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;2380:39:18;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;224:3;218:10;339:9;333:2;319:12;315:21;297:16;293:44;290:59;268:11;254:12;251:29;239:119;236:2;;;371:1;368;361:12;236:2;0:383;;2380:39:18;;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;224:3;218:10;339:9;333:2;319:12;315:21;297:16;293:44;290:59;268:11;254:12;251:29;239:119;236:2;;;371:1;368;361:12;236:2;0:383;;2380:39:18;;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;224:3;218:10;339:9;333:2;319:12;315:21;297:16;293:44;290:59;268:11;254:12;251:29;239:119;236:2;;;371:1;368;361:12;236:2;-1:-1;2330:89:18;;-1:-1:-1;2330:89:18;;-1:-1:-1;2380:39:18;;-1:-1:-1;2516:83:18;;-1:-1:-1;2537:10:18;;-1:-1:-1;2549:20:18;;-1:-1:-1;2330:89:18;;-1:-1:-1;2330:89:18;2516:20;:83::i;:::-;2703:11;;2696:104;;;;;-1:-1:-1;;;;;2696:104:18;;;;;;;;;2759:10;2696:104;;;;;;;;;;;;;;;;;;;;;2703:11;;;;;2696:40;;2737:20;;2759:10;;2771;;2783:16;;2696:104;;;;;;;;;;;;;;;;;;;;2703:11;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;2696:104:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2696:104:18;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2696:104:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2696:104:18;;;;1612:1195;;;;;;;:::o;4270:292:12:-;1128:14:72;;487:1;1128:39;1120:48;;;;;;584:1;1174:14;:40;4433:11:12;;4426:129;;;;;;4475:10;4426:129;;;;-1:-1:-1;;;;;4426:129:12;;;;;;;;;;;;;;;;;;;;;;4433:11;;;;;4426:35;;:129;;;;;4433:11;;4426:129;;;;;;;4433:11;;4426:129;;;5:2:-1;;;;30:1;27;20:12;5:2;4426:129:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;487:1:72;1227:14;:38;-1:-1:-1;;;;;4270:292:12:o;2263:125:28:-;2362:19;;-1:-1:-1;;;;;2362:19:28;2263:125;:::o;1001:111:75:-;719:5;;-1:-1:-1;;;;;719:5:75;705:10;:19;697:28;;;;;;1077:5;;;1058:25;;-1:-1:-1;;;;;1077:5:75;;;;1058:25;;;1105:1;1089:18;;-1:-1:-1;;1089:18:75;;;1001:111::o;2470:381:15:-;719:5:75;;-1:-1:-1;;;;;719:5:75;705:10;:19;697:28;;;;;;-1:-1:-1;;;;;2632:21:15;;;;;;:15;:21;;;;;;;;2624:30;;;;;;;;-1:-1:-1;;;;;2710:21:15;;2734:5;2710:21;;;:15;:21;;;;;;;;;:29;;-1:-1:-1;;2710:29:15;;;2816:15;:22;;;;;;;;;;;;;;;;;:28;;2726:4;;2816:22;;:15;:22;;;:15;:22;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2816:22:15;;;;;;;;;;;;;;;;;;;;;;:28;;;;:::i;:::-;2798:46;;;;:15;;:46;;;;;;:::i;1724:467:16:-;1128:14:72;;487:1;1128:39;1120:48;;;;;;584:1;1174:14;:40;-1:-1:-1;;;;;1911:21:16;;;;;;:15;:21;;;;;;;;1903:30;;;;;;;;2031:4;-1:-1:-1;;;;;2021:27:16;;:29;;;;;-1:-1:-1;;;2021:29:16;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2021:29:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2021:29:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2021:29:16;2009:9;:41;;;;;;;;:46;2001:55;;;;;;2096:88;2123:10;2147:4;2165:9;2096:13;:88::i;238:20:75:-;;;-1:-1:-1;;;;;238:20:75;;:::o;1375:273:15:-;719:5:75;;-1:-1:-1;;;;;719:5:75;705:10;:19;697:28;;;;;;-1:-1:-1;;;;;1529:30:15;;;;;:20;:30;;;;;:37;;-1:-1:-1;;1529:37:15;1562:4;1529:37;;;;;;1611:15;27:10:-1;;23:18;;;45:23;;1611:30:15;;;;;;;-1:-1:-1;;1611:30:15;;;;;;1375:273::o;1985:161:28:-;2111:28;;2081:7;2111:28;;;:5;:28;;;;;;-1:-1:-1;;;;;2111:28:28;;1985:161::o;5631:406:16:-;1128:14:72;;487:1;1128:39;1120:48;;;;;;584:1;1174:14;:40;5822:11:16;;5815:114;;;;;;-1:-1:-1;;;;;5815:114:16;;;;;;;5886:10;5815:114;;;;;;;;;;;;5822:11;;;;;5815:39;;:114;;;;;5822:11;;5815:114;;;;;;;5822:11;;5815:114;;;5:2:-1;;;;30:1;27;20:12;5:2;5815:114:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;5968:11:16;;5940:90;;-1:-1:-1;;;;;;5968:11:16;;-1:-1:-1;5993:4:16;6011:9;5940:14;:90::i;3246:2148::-;3447:18;3493:12;3911:19;3965:27;4029:22;4180:9;4283:25;4705;487:1:72;1128:14;;:39;1120:48;;;;;;;;584:1;1174:14;:40;3515:11:16;;-1:-1:-1;;;;;3603:21:16;;;3515:11;3603:21;;;:15;:21;;;;;;3478:4;;-1:-1:-1;3515:11:16;;;-1:-1:-1;3603:21:16;;3595:30;;;;;;;;3713:8;-1:-1:-1;;;;;3713:20:16;;:22;;;;;-1:-1:-1;;;3713:22:16;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3713:22:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3713:22:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3713:22:16;3701:9;:34;;;;;;;;:39;3693:48;;;;;;3826:36;;;;;;3840:10;3826:36;;;;;;;;;;;;-1:-1:-1;;;;;3826:13:16;;;;;:36;;;;;-1:-1:-1;;3826:36:16;;;;;;;-1:-1:-1;3826:13:16;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;3826:36:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3826:36:16;;;;3933:8;-1:-1:-1;;;;;3933:20:16;;:22;;;;;-1:-1:-1;;;3933:22:16;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3933:22:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3933:22:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3933:22:16;3995:24;;;;;;;;3933:22;;-1:-1:-1;;;;;;3995:22:16;;;;;:24;;;;;;;;;;;;;;;;:22;:24;;;5:2:-1;;;;30:1;27;20:12;5:2;3995:24:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3995:24:16;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3995:24:16;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;3995:24:16;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;224:3;218:10;339:9;333:2;319:12;315:21;297:16;293:44;290:59;268:11;254:12;251:29;239:119;236:2;;;371:1;368;361:12;236:2;0:383;;3995:24:16;;;;;;3965:54;;4054:8;-1:-1:-1;;;;;4054:17:16;;:19;;;;;-1:-1:-1;;;4054:19:16;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4054:19:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4054:19:16;;;;;;39:16:-1;36:1;17:17;2:54;101:4;4054:19:16;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;4054:19:16;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;224:3;218:10;339:9;333:2;319:12;315:21;297:16;293:44;290:59;268:11;254:12;251:29;239:119;236:2;;;371:1;368;361:12;236:2;-1:-1;4054:19:16;;-1:-1:-1;4192:1:16;;-1:-1:-1;;;;;4175:1213:16;4199:10;:17;4195:1;:21;4175:1213;;;4311:118;4351:5;4357:1;4351:8;;;;;;;;;;;;;;;;;;4377:11;4406:9;4311:22;:118::i;:::-;4283:146;;4507:5;-1:-1:-1;;;;;4507:25:16;;4550:10;4561:1;4550:13;;;;;;;;;;;;;;;;;;;4507:127;;;-1:-1:-1;;;4507:127:16;;;;;;-1:-1:-1;;;;;4507:127:16;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4507:127:16;;;;;;;-1:-1:-1;4507:127:16;;;;5:2:-1;;;;30:1;27;20:12;5:2;4507:127:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;4733:1:16;:6;;;;-1:-1:-1;;4840:30:16;;;4839:37;4835:543;;4967:5;-1:-1:-1;;;;;4967:25:16;;5014:10;5025:1;5014:13;;;;;;;;;;;;;;;;;;;4967:149;;;-1:-1:-1;;;4967:149:16;;;;;;-1:-1:-1;;;;;4967:149:16;;;;;;;5049:10;4967:149;;;;;;;;;;;;;;;;-1:-1:-1;;4967:149:16;;;;;;;-1:-1:-1;4967:149:16;;;;5:2:-1;;;;30:1;27;20:12;5:2;4967:149:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4967:149:16;;;;4835:543;;;5223:5;-1:-1:-1;;;;;5223:16:16;;5261:10;5272:1;5261:13;;;;;;;;;;;;;;;;;;;5223:140;;;-1:-1:-1;;;5223:140:16;;;;;;-1:-1:-1;;;;;5223:140:16;;;;;;;5296:10;5223:140;;;;;;;;;;;;;;;;-1:-1:-1;;5223:140:16;;;;;;;-1:-1:-1;5223:140:16;;;;5:2:-1;;;;30:1;27;20:12;5:2;5223:140:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5223:140:16;;;;4835:543;4218:3;;;;;4175:1213;;;-1:-1:-1;;487:1:72;1227:14;:38;-1:-1:-1;;;;;;;;;3246:2148:16:o;1710:18:28:-;;;;;-1:-1:-1;;;;;1710:18:28;;;;;;:::o;3240:689:12:-;1128:14:72;;3768:9:12;;487:1:72;1128:39;1120:48;;;;;;584:1;1174:14;:40;3460:1:12;3443:18;;3435:27;;;;;;3562:1;3541:22;;3533:31;;;;;;3648:36;;;3640:45;;;;;;-1:-1:-1;3780:1:12;3763:160;3783:18;;;3763:160;;;3822:90;3856:7;;3864:1;3856:10;;;;;;;;;;;;;-1:-1:-1;;;;;3856:10:12;3884:11;;3896:1;3884:14;;;;;;;;;;;;;;;3822:16;:90::i;:::-;3803:3;;3763:160;;;-1:-1:-1;;487:1:72;1227:14;:38;-1:-1:-1;;;3240:689:12:o;3319:1248:17:-;3678:39;;:::i;:::-;1128:14:72;;487:1;1128:39;1120:48;;;;;;584:1;1174:14;:40;3720:141:17;;;;;;;;;;;;3748:10;;3720:141;;;;3748:10;;3720:141;3748:10;3720:141;;;;;;;;;;3772:7;3720:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3793:19;;3720:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3826:25;;3720:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3720:14:17;;-1:-1:-1;;;;;3720:141:17:i;:::-;3678:183;;3934:202;3982:5;:15;;;4015:5;:18;;;4051:2;4071:8;;4080:1;4071:11;;;;;;;;;;;;;;;;;-1:-1:-1;4105:8:17;;4114:1;4105:11;;;;;;;;;;;;;;;;3934:30;:202::i;:::-;3913:233;;;;;;;;4221:69;4248:5;4267:13;4221;:69::i;:::-;4325:91;4350:5;4369:13;4396:10;;4325:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4325:11:17;;-1:-1:-1;;;;;4325:91:17:i;:::-;4448:112;4475:5;:18;;;4507:5;:16;;;4537:13;4448;:112::i;:::-;-1:-1:-1;;487:1:72;1227:14;:38;-1:-1:-1;;;;;;;;;;;3319:1248:17:o;1274:103:75:-;719:5;;-1:-1:-1;;;;;719:5:75;705:10;:19;697:28;;;;;;1343:29;1362:9;1343:18;:29::i;:::-;1274:103;:::o;2064:203:12:-;1128:14:72;;487:1;1128:39;1120:48;;;;;;584:1;1174:14;:40;2191:69:12;2221:6;2241:9;2191:16;:69::i;2106:1076:14:-;-1:-1:-1;;;;;2423:30:14;;2348:7;2423:30;;;:20;:30;;;;;;2348:7;;2423:30;;2415:39;;;;;;;;2520:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2520:28:14;;;;;2562:11;;;;2587:6;;;;2607:12;;2633:5;;2652:7;;2673:9;;;;2520:172;;;;;;;;;;;;2562:11;2520:172;;;;2562:11;2520:172;;;;;;;;;;;;;;;;;;-1:-1:-1;2520:172:14;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2520:172:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2520:172:14;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2520:172:14;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2520:172:14;;;;;;;;;;;;;;;;2491:201;;2791:4;2753:5;:15;;:35;2769:18;-1:-1:-1;;;;;2753:35:14;-1:-1:-1;;;;;2753:35:14;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;2854:5;:15;;2875:18;2854:40;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;2854:40:14;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:40:14;;;;;-1:-1:-1;;;;;2854:40:14;;;;;;;2978:18;-1:-1:-1;;;;;2949:190:14;;3010:8;3032:11;;3057:6;;3077:12;3103:5;3122:7;2949:190;;;;-1:-1:-1;;;;;2949:190:14;-1:-1:-1;;;;;2949:190:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2949:190:14;;;;;;;;;;;;;;;;-1:-1:-1;2949:190:14;;-1:-1:-1;;;;;;;;;;;2949:190:14;3157:18;2106:1076;-1:-1:-1;;;;;;;;;;;2106:1076:14:o;4011:163:28:-;4109:7;4139:28;;;:16;:28;;;;;;;4011:163::o;2489:109::-;2580:11;;-1:-1:-1;;;;;2580:11:28;2489:109;:::o;3099:119::-;3164:9;3196:5;:15;;3189:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3189:22:28;;;;;;;;;;;;;;;;;;;;;;3099:119;:::o;3409:146::-;-1:-1:-1;;;;;3527:21:28;3500:4;3527:21;;;:15;:21;;;;;;;;;3409:146::o;6618:270:71:-;6700:9;6727:13;6742:9;6823:19;6755:13;6763:1;6766;6755:7;:13::i;:::-;6726:42;;;;6779:4;6778:5;6774:110;;;6793:8;;;6774:110;6847:13;6851:1;6854:5;6847:3;:13::i;:::-;-1:-1:-1;6822:38:71;6618:270;-1:-1:-1;;;;;;6618:270:71:o;6674:1138:17:-;6874:26;;:::i;:::-;6955:39;;:::i;:::-;6997:785;;;;;;;;7050:13;;-1:-1:-1;;;;;6997:785:17;;;;;7050:13;7091;;;;6997:785;;;;;;7130:13;;;;6997:785;;;;;;;7173:13;;;;6997:785;;;;;;;7214:13;;;;6997:785;;;;;;;7251:10;;6997:785;;;;;;;;7293:10;;;;6997:785;;;;7329:10;;;;6997:785;;;;7370:10;;;;6997:785;;;;7411:10;;;6997:785;;;;7441:10;;;;6997:785;;;;;;;;;;;;;;;;;;;7594:177;7050:10;7251:7;7485:19;7544:25;7594:30;:177::i;:::-;6997:785;;6955:827;6674:1138;-1:-1:-1;;;;;;6674:1138:17:o;11130:870::-;11346:17;;-1:-1:-1;;;;;11440:34:17;;11320:13;11440:34;;;:15;:34;;;;;;;;11432:43;;;;;;;;11600:1;11574:6;:23;;;:27;:50;;;;;11623:1;11605:6;:15;;;:19;11574:50;11566:59;;;;;;;;11709:17;;;;11690:15;:36;;11682:45;;;;;;11836:3;-1:-1:-1;;;;;11836:15:17;;:17;;;;;-1:-1:-1;;;11836:17:17;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11836:17:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11836:17:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11836:17:17;11818:15;;;;:35;;;;;;;;:40;11810:49;;;;;;11970:3;-1:-1:-1;;;;;11970:15:17;;:17;;;;;-1:-1:-1;;;11970:17:17;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11970:17:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11970:17:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11970:17:17;11951:16;:36;;;;;;;;:41;11943:50;;;;;;11130:870;;;:::o;1238:128:74:-;1319:7;;;1339;;;;1332:15;;;;1238:128;;;;:::o;1060:116::-;1120:7;1142:8;;;;1135:16;;;;-1:-1:-1;1164:7:74;;;1060:116::o;427:107:73:-;490:7;517:2;512;:7;:17;;527:2;512:17;;;522:2;512:17;505:24;427:107;-1:-1:-1;;;427:107:73:o;9308:1577:16:-;9552:11;;-1:-1:-1;;;;;9640:21:16;;;9484:18;9640:21;;;:15;:21;;;;;;9515:4;;9552:11;;;;;10001:27;;;;9484:18;;;;;;9640:21;;9632:30;;;;;;;;9750:8;-1:-1:-1;;;;;9750:20:16;;:22;;;;;-1:-1:-1;;;9750:22:16;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9750:22:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9750:22:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9750:22:16;9738:9;:34;;;;;;;;:39;9730:48;;;;;;9863:8;-1:-1:-1;;;;;9863:13:16;;9877:12;9891:9;9863:38;;;;;-1:-1:-1;;;9863:38:16;;;;;;;-1:-1:-1;;;;;9863:38:16;-1:-1:-1;;;;;9863:38:16;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9863:38:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9863:38:16;;;;9969:8;-1:-1:-1;;;;;9969:20:16;;:22;;;;;-1:-1:-1;;;9969:22:16;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9969:22:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9969:22:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9969:22:16;10031:24;;;;;;;;9969:22;;-1:-1:-1;;;;;;10031:22:16;;;;;:24;;;;;;;;;;;;;;;;:22;:24;;;5:2:-1;;;;30:1;27;20:12;5:2;10031:24:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10031:24:16;;;;;;39:16:-1;36:1;17:17;2:54;101:4;10031:24:16;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;10031:24:16;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;224:3;218:10;339:9;333:2;319:12;315:21;297:16;293:44;290:59;268:11;254:12;251:29;239:119;236:2;;;371:1;368;361:12;236:2;0:383;;10031:24:16;;;;;;10001:54;;10087:8;-1:-1:-1;;;;;10087:17:16;;:19;;;;;-1:-1:-1;;;10087:19:16;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10087:19:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10087:19:16;;;;;;39:16:-1;36:1;17:17;2:54;101:4;10087:19:16;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;10087:19:16;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;224:3;218:10;339:9;333:2;319:12;315:21;297:16;293:44;290:59;268:11;254:12;251:29;239:119;236:2;;;371:1;368;361:12;236:2;-1:-1;10087:19:16;;-1:-1:-1;10211:1:16;;-1:-1:-1;;;;;10195:684:16;10218:10;:17;10214:1;:21;;;10195:684;;;10283:10;10294:1;10283:13;;;;;;;;;;;;;;;;;;;;10256:40;;10382:118;10422:5;10428:1;10422:8;;;;;;;;;;;;;;;;;;;;10448:11;10477:9;10382:22;:118::i;:::-;10555:123;;;;;;-1:-1:-1;;;;;10555:123:16;;;;;;;;;;;;;;;;;;;;;;10364:136;;-1:-1:-1;10555:25:16;;;;;;:123;;;;;-1:-1:-1;;10555:123:16;;;;;;;;-1:-1:-1;10555:25:16;:123;;;5:2:-1;;;;30:1;27;20:12;5:2;10555:123:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;10739:129:16;;;;;;-1:-1:-1;;;;;10739:129:16;;;;;;;10816:10;10739:129;;;;;;;;;;;;:25;;;;-1:-1:-1;10739:25:16;;-1:-1:-1;10739:129:16;;;;;-1:-1:-1;;10739:129:16;;;;;;;;-1:-1:-1;10739:25:16;:129;;;5:2:-1;;;;30:1;27;20:12;5:2;10739:129:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;10237:3:16;;;;;-1:-1:-1;10195:684:16;;-1:-1:-1;10195:684:16;6711:770:12;7277:9;6962:1;6945:7;:14;:18;6937:27;;;;;;;;7043:18;;7064:1;-1:-1:-1;7035:31:12;;;;;;7168:18;;7150:14;;:36;7142:45;;;;;;-1:-1:-1;7289:1:12;7272:203;7296:7;:14;7292:1;:18;7272:203;;;7331:133;7364:5;7387:3;7408:7;7416:1;7408:10;;;;;;;;;;;;;;;;;;7436:11;7448:1;7436:14;;;;;;;;;;;;;;;;;;7331:15;:133::i;:::-;7312:3;;7272:203;;;6711:770;;;;;:::o;4949:566::-;5193:19;;5298:11;;5178:141;;;-1:-1:-1;;;;;5178:141:12;;-1:-1:-1;;;;;5178:141:12;;;;;;;;;;;;;;;;;;;;5298:11;;;5178:141;;;;;;5193:19;;;;;5178:44;;:141;;;;;5193:19;;5178:141;;;;;;;5193:19;;5178:141;;;5:2:-1;;;;30:1;27;20:12;5:2;5178:141:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;5406:11:12;;5399:109;;;;;;-1:-1:-1;;;;;5399:109:12;;;;;;;;;;;;;;;;;;;;;;5406:11;;;;;-1:-1:-1;5399:39:12;;-1:-1:-1;5399:109:12;;;;;5406:11;;5399:109;;;;;;;5406:11;;5399:109;;;5:2:-1;;;;30:1;27;20:12;5:2;5399:109:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5399:109:12;;;;4949:566;;;;:::o;6346:2689:16:-;6518:18;6564:12;6647:19;6701:27;6765:22;6882:9;6993:33;7211:20;8052:23;6549:4;6518:36;;6586:5;:11;;;;;;;;;;-1:-1:-1;;;;;6586:11:16;6564:34;;6669:8;-1:-1:-1;;;;;6669:20:16;;:22;;;;;-1:-1:-1;;;6669:22:16;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6669:22:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6669:22:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6669:22:16;6731:24;;;;;;;;6669:22;;-1:-1:-1;;;;;;6731:22:16;;;;;:24;;;;;;;;;;;;;;;;:22;:24;;;5:2:-1;;;;30:1;27;20:12;5:2;6731:24:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6731:24:16;;;;;;39:16:-1;36:1;17:17;2:54;101:4;6731:24:16;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;6731:24:16;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;224:3;218:10;339:9;333:2;319:12;315:21;297:16;293:44;290:59;268:11;254:12;251:29;239:119;236:2;;;371:1;368;361:12;236:2;0:383;;6731:24:16;;;;;;6701:54;;6790:8;-1:-1:-1;;;;;6790:17:16;;:19;;;;;-1:-1:-1;;;6790:19:16;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6790:19:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6790:19:16;;;;;;39:16:-1;36:1;17:17;2:54;101:4;6790:19:16;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;6790:19:16;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;224:3;218:10;339:9;333:2;319:12;315:21;297:16;293:44;290:59;268:11;254:12;251:29;239:119;236:2;;;371:1;368;361:12;236:2;-1:-1;6790:19:16;;-1:-1:-1;6894:1:16;;-1:-1:-1;;;;;6877:2048:16;6901:10;:17;6897:1;:21;6877:2048;;;7029:118;7069:5;7075:1;7069:8;;;;;;;;;;;;;;;;;;7095:11;7124:9;7029:22;:118::i;:::-;6993:154;;7234:5;-1:-1:-1;;;;;7234:21:16;;7273:10;7284:1;7273:13;;;;;;;;;;;;;;;;;;7304:6;7234:90;;;;;-1:-1:-1;;;7234:90:16;;;;;;;-1:-1:-1;;;;;7234:90:16;-1:-1:-1;;;;;7234:90:16;;;;;;-1:-1:-1;;;;;7234:90:16;-1:-1:-1;;;;;7234:90:16;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7234:90:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7234:90:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7234:90:16;;-1:-1:-1;7343:41:16;;;7339:1348;;7482:5;-1:-1:-1;;;;;7482:25:16;;7529:10;7540:1;7529:13;;;;;;;;;;;;;;;;;;7564:6;7592:25;7482:153;;;;;-1:-1:-1;;;7482:153:16;;;;;;;-1:-1:-1;;;;;7482:153:16;-1:-1:-1;;;;;7482:153:16;;;;;;-1:-1:-1;;;;;7482:153:16;-1:-1:-1;;;;;7482:153:16;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7482:153:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7482:153:16;;;;7339:1348;;;7784:1;7769:12;:16;7765:219;;;7809:5;-1:-1:-1;;;;;7809:25:16;;7860:10;7871:1;7860:13;;;;;;;;;;;;;;;;;;7899:6;7931:12;7809:156;;;;;-1:-1:-1;;;7809:156:16;;;;;;;-1:-1:-1;;;;;7809:156:16;-1:-1:-1;;;;;7809:156:16;;;;;;-1:-1:-1;;;;;7809:156:16;-1:-1:-1;;;;;7809:156:16;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7809:156:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7809:156:16;;;;7765:219;8078:43;:25;8108:12;8078:43;:29;:43;:::i;:::-;8234:19;;8285:13;;8052:69;;-1:-1:-1;;;;;;8234:19:16;;8219:44;;8285:10;;8296:1;;8285:13;;;;;;;;;;;;;;;8320:43;:25;8350:12;8320:43;:29;:43;:::i;:::-;8385:6;8413:5;:11;;;;;;;;;;-1:-1:-1;;;;;8413:11:16;8219:223;;;;;-1:-1:-1;;;8219:223:16;;;;;;;-1:-1:-1;;;;;8219:223:16;-1:-1:-1;;;;;8219:223:16;;;;;;;;;;;-1:-1:-1;;;;;8219:223:16;-1:-1:-1;;;;;8219:223:16;;;;;;-1:-1:-1;;;;;8219:223:16;-1:-1:-1;;;;;8219:223:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8219:223:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8219:223:16;;;;8604:10;8615:1;8604:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8530:142:16;8578:4;-1:-1:-1;;;;;8530:142:16;;8639:15;8530:142;;;;;;;;;;;;;;;;;;7339:1348;8779:5;-1:-1:-1;;;;;8779:25:16;;8822:10;8833:1;8822:13;;;;;;;;;;;;;;;;;;;8779:135;;;-1:-1:-1;;;8779:135:16;;;;;;-1:-1:-1;;;;;8779:135:16;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8779:135:16;;;;;;;-1:-1:-1;8779:135:16;;;;5:2:-1;;;;30:1;27;20:12;5:2;8779:135:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;6920:3:16;;;;;-1:-1:-1;6877:2048:16;;-1:-1:-1;6877:2048:16;;8962:8;-1:-1:-1;;;;;8962:13:16;;8989:6;9009:9;8962:66;;;;;-1:-1:-1;;;8962:66:16;;;;;;;-1:-1:-1;;;;;8962:66:16;-1:-1:-1;;;;;8962:66:16;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8962:66:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8962:66:16;;;;6346:2689;;;;;;;;;;;;:::o;11196:260::-;11371:7;11401:48;11436:12;11401:30;:9;11415:15;11401:30;:13;:30;:::i;:::-;:34;:48;:34;:48;:::i;:::-;11394:55;11196:260;-1:-1:-1;;;;11196:260:16:o;5749:541:12:-;5933:11;;6017:102;;;;;;-1:-1:-1;;;;;6017:102:12;;;;;;;6076:10;6017:102;;;;;;;;;;;;5933:11;;;;;;;6017:25;;:102;;;;;5911:12;;6017:102;;;;;;;;5911:12;5933:11;6017:102;;;5:2:-1;;;;30:1;27;20:12;5:2;6017:102:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;6190:93:12;;;;;;-1:-1:-1;;;;;6190:93:12;;;;;;;6240:10;6190:93;;;;;;;;;;;;:16;;;;-1:-1:-1;6190:16:12;;-1:-1:-1;6190:93:12;;;;;-1:-1:-1;;6190:93:12;;;;;;;;-1:-1:-1;6190:16:12;:93;;;5:2:-1;;;;30:1;27;20:12;5:2;6190:93:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6190:93:12;;;;5749:541;;;:::o;5257:647:30:-;5454:4;5531:18;5591:22;:59;;;;;;;;;;;;;;;;;;;;5720:131;5770:9;5781:10;5753:39;;;;;;;;;;;;;;;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;;5753:39:30;;;;;-1:-1:-1;5753:39:30;;;26:21:-1;;;6:49;;5753:39:30;;;;;;;5743:50;;5753:39;;-1:-1:-1;5753:39:30;;;-1:-1:-1;5743:50:30;;;;;5753:39;5743:50;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;;5743:50:30;;;;;;;;;;;;-1:-1:-1;5720:131:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;263:2;;-1:-1;;;5720:131:30;;;;;;;;;;;-1:-1:-1;5720:131:30;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;5720:131:30;;-1:-1:-1;;5720:131:30;;-1:-1:-1;;;;;5869:28:30;;;;;;;;;;5257:647;-1:-1:-1;;;;;;;;5257:647:30:o;12364:2719:17:-;12591:11;;12769:16;;;;;12569:12;12750:36;;;:18;:36;;;;;;;;;12728:16;;12711:34;;12750:18;12711:34;;;;;;-1:-1:-1;;;;;12591:11:17;;;;12569:12;;12950:33;;12569:12;;;;;;;;;;;;12711:76;;;:38;:76;:::i;:::-;12683:104;;12925:13;12883:38;12903:17;12883:6;:15;;;:19;;:38;;;;:::i;:::-;:55;;12875:64;;;;;;13000:6;:25;;;:32;12986:47;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;12986:47:17;;12950:83;;13131:132;13174:6;:23;;;13211:13;13238:6;:15;;;13131:29;:132::i;:::-;13096:167;;13356:1;13345:12;;13340:674;13363:6;:25;;;:32;13359:1;:36;;;13340:674;;;13481:5;-1:-1:-1;;;;;13481:21:17;;13520:6;:25;;;13546:1;13520:28;;;;;;;;;;;;;;;;;;;;;;13566:19;;;;13481:118;;;-1:-1:-1;;;13481:118:17;;;;;;-1:-1:-1;;;;;13481:118:17;;;;;;;;;;;;;;;;;;;;;13520:28;13481:118;;;;;-1:-1:-1;13481:118:17;;;;5:2:-1;;;;30:1;27;20:12;5:2;13481:118:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13481:118:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13481:118:17;13751:31;;;;:34;;13481:118;;-1:-1:-1;13704:159:17;;13751:34;;;;;;;;;;;;;;;;;;13803:13;13834:6;:15;;;13704:29;:159::i;:::-;13677:186;-1:-1:-1;13969:34:17;:12;13677:186;13969:34;:16;:34;:::i;:::-;13947:16;13964:1;13947:19;;;;;;;;;;;;;;;;;;;;:56;13397:3;;;;;13340:674;;;14090:119;14125:10;14149:6;:19;;;14182:6;:17;;;14090:21;:119::i;:::-;14059:150;-1:-1:-1;14310:48:17;;;;14302:57;;;;;;14467:1;14463:5;;14458:275;14474:6;:25;;;:32;14470:1;:36;;;14458:275;;;14548:5;-1:-1:-1;;;;;14548:21:17;;14587:6;:25;;;14613:1;14587:28;;;;;;;;;;;;;;;;;;;;;;14633:19;;;;14548:118;;;-1:-1:-1;;;14548:118:17;;;;;;-1:-1:-1;;;;;14548:118:17;;;;;;;;;;;;;;;;;;;;;14587:28;14548:118;;;;;-1:-1:-1;14548:118:17;;;;5:2:-1;;;;30:1;27;20:12;5:2;14548:118:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14548:118:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14548:118:17;14702:19;;14548:118;;-1:-1:-1;14702:16:17;;:19;;;;;;;;;;;;;;;;;;;14688:33;;;14680:42;;;;;;14508:3;;;;;14458:275;;;14788:143;14816:6;14836:13;14863:24;14901:20;14788:14;:143::i;:::-;15040:16;;;;15023:34;;;;:16;:34;;;;;;:53;;15062:13;15023:53;:38;:53;:::i;:::-;15003:16;;;;;14986:34;;;;:16;:34;;;;;:90;;;;-1:-1:-1;;;;;;;;;;;12364:2719:17:o;1512:171:75:-;-1:-1:-1;;;;;1582:23:75;;;;1574:32;;;;;;1638:5;;;1617:38;;-1:-1:-1;;;;;1617:38:75;;;;1638:5;;;1617:38;;;1661:5;:17;;-1:-1:-1;;1661:17:75;-1:-1:-1;;;;;1661:17:75;;;;;;;;;;1512:171::o;293:251:71:-;402:8;;364:7;;;;;416:101;440:6;436:1;:10;416:101;;;473:1;-1:-1:-1;;;;;465:9:71;:1;467;465:4;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;465:9:71;;461:50;;;494:1;497:4;486:16;;;;;;461:50;448:3;;416:101;;;530:1;;-1:-1:-1;530:1:71;;-1:-1:-1;293:251:71;;;;;;;;:::o;6158:409::-;6241:9;6259:7;6276:14;6307:29;6375:9;6293:1;:8;6276:25;;6362:1;6353:6;:10;6339:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;6339:25:71;;6307:57;;6387:1;6375:13;;6370:73;6394:5;6390:1;:9;6370:73;;;6432:1;6434;6432:4;;;;;;;;;;;;;;;;;;6414:12;6427:1;6414:15;;;;;;;;;;-1:-1:-1;;;;;6414:22:71;;;:15;;;;;;;;;;:22;6401:3;;6370:73;;;-1:-1:-1;6465:1:71;6457:9;;6448:78;6472:6;6468:1;:10;6448:78;;;6515:1;6517;6515:4;;;;;;;;;;;;;;;;;;6493:12;6510:1;6506;:5;6493:19;;;;;;;;;;-1:-1:-1;;;;;6493:26:71;;;:19;;;;;;;;;;:26;6480:3;;6448:78;;;6539:12;6553:1;6555:5;6553:8;;;;;;;;;;;;;;;;;;6531:31;;;;6158:409;;;;;;;;:::o;3739:1154:30:-;3961:7;4085:10;3961:7;4085:13;;;;4143:10;4154:1;4143:13;;;;4203:10;4214:1;4203:13;;;;4261:10;4272:1;4261:13;;;;4323:10;4334:1;4323:13;;;;4383:7;4391:1;4383:10;;;;4439:7;4447:1;4439:10;;;;4503:7;4511:1;4503:10;;;;4561:7;4569:1;4561:10;;;;4624:7;4632:1;4624:10;;;;4687:7;4695:1;4687:10;;;;4739:19;4806:25;4051:825;;;;;;-1:-1:-1;;;;;4051:825:30;-1:-1:-1;;;;;4051:825:30;;;;;;;;-1:-1:-1;;;;;4051:825:30;-1:-1:-1;;;;;4051:825:30;;;;;;;;-1:-1:-1;;;;;4051:825:30;-1:-1:-1;;;;;4051:825:30;;;;;;;;-1:-1:-1;;;;;4051:825:30;-1:-1:-1;;;;;4051:825:30;;;;;;;;-1:-1:-1;;;;;4051:825:30;-1:-1:-1;;;;;4051:825:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4051:825:30;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4051:825:30;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4051:825:30;;;4028:858;;;;;;;;;;;;;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;;4028:858:30;;;;;;;;;;;;-1:-1:-1;;;;;;;;3739:1154:30:o;203:380:74:-;263:9;489:7;;485:36;;;-1:-1:-1;513:1:74;506:8;;485:36;-1:-1:-1;531:7:74;;;536:2;531;:7;551:6;;;;;;;;:12;544:20;;;665:283;725:7;941:2;936;:7;;;;;;;;;665:283;-1:-1:-1;;;665:283:74:o;6286:773:30:-;6438:7;6532:17;6793:33;6583:12;6552:44;;;;;;;6571:10;6559;6552:44;6532:64;-1:-1:-1;6653:14:30;;6649:96;;;6690:44;6721:12;6690:26;:10;6705;6690:26;:14;:26;:::i;:44::-;6683:51;;;;6649:96;6829:54;6856:26;:10;6871;6856:26;:14;:26;:::i;:::-;6829:22;:9;6843:7;6829:22;:13;:22;:::i;:54::-;6793:90;-1:-1:-1;6985:4:30;6957:32;;6949:41;;;;;;7008:44;7039:12;7008:26;:10;7023;7008:26;:14;:26;:::i;:44::-;7001:51;;6286:773;;;;;;;;:::o;8352:2560:17:-;8515:7;8538:20;8568:22;8720:44;;:::i;:::-;8974:16;9252:26;9331:21;9951:36;10036:37;8600:2274;8622:10;:17;8607:12;:32;8600:2274;;;8767:107;8820:10;8848:12;8767:35;:107::i;:::-;9009:15;;8993:32;;:15;:32;;;:5;:32;;;;;;8720:154;;-1:-1:-1;;;;;;8993:32:17;;-1:-1:-1;9101:22:17;;;9093:31;;;;;;9281:27;;;;:36;;9313:3;9281:36;:31;:36;:::i;:::-;9252:65;-1:-1:-1;9355:149:17;9387:10;9415:21;:12;9432:3;9415:21;:16;:21;:::i;:::-;9454:36;:12;9471:18;9454:36;:16;:36;:::i;:::-;9355:14;:149::i;:::-;9730:19;;9813:23;;;;;9715:192;;-1:-1:-1;;;;;9715:192:17;;-1:-1:-1;;;;;9715:192:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9331:173;;-1:-1:-1;9730:19:17;;;;9715:44;;:192;;;;;9730:19;;9715:192;;;;;;;;9730:19;;9715:192;;;5:2:-1;;;;30:1;27;20:12;5:2;9715:192:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9715:192:17;;;;10004:6;:17;;;9990:32;;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;9990:32:17;;9951:71;;10090:6;:17;;;10076:32;;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;10076:32:17;;10036:72;;10185:8;-1:-1:-1;;;;;10168:35:17;;10221:13;10252:10;10280:18;10316:6;:23;;;10357:6;:17;;;10392:8;10168:246;;;;;-1:-1:-1;;;10168:246:17;;;;;;;-1:-1:-1;;;;;10168:246:17;-1:-1:-1;;;;;10168:246:17;;;;;;-1:-1:-1;;;;;10168:246:17;-1:-1:-1;;;;;10168:246:17;;;;;;-1:-1:-1;;;;;10168:246:17;-1:-1:-1;;;;;10168:246:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10168:246:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10168:246:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10168:246:17;;;;;;39:16:-1;36:1;17:17;2:54;101:4;10168:246:17;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;;;5:11;;2:2;;;29:1;26;19:12;2:2;10168:246:17;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;224:3;218:10;339:9;333:2;319:12;315:21;297:16;293:44;290:59;268:11;254:12;251:29;239:119;236:2;;;371:1;368;361:12;236:2;0:383;;10168:246:17;;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;224:3;218:10;339:9;333:2;319:12;315:21;297:16;293:44;290:59;268:11;254:12;251:29;239:119;236:2;;;371:1;368;361:12;236:2;-1:-1;10122:292:17;;-1:-1:-1;10168:246:17;-1:-1:-1;10492:166:17;;-1:-1:-1;10530:8:17;;-1:-1:-1;10556:13:17;;-1:-1:-1;10122:292:17;;-1:-1:-1;10168:246:17;10492:20;:166::i;:::-;10753:36;:12;10770:18;10753:36;:16;:36;:::i;:::-;10738:51;;10820:43;10839:6;:23;;;10820:14;:18;;:43;;;;:::i;:::-;10803:60;;8600:2274;;;-1:-1:-1;10891:14:17;;8352:2560;-1:-1:-1;;;;;;;;;;8352:2560:17:o;15520:1210::-;15791:19;;15834:17;;;;16121:16;;-1:-1:-1;;;;;15791:19:17;;15776:44;;15865:46;:25;15895:15;15865:46;:29;:46;:::i;:::-;15971:19;;;;15776:248;;;-1:-1:-1;;;15776:248:17;;;;;;-1:-1:-1;;;;;15776:248:17;;;;;;;;;;;;;;;;;;;;16004:10;15776:248;;;;;;;;;;;-1:-1:-1;;15776:248:17;;;;;;;-1:-1:-1;15776:248:17;;;;5:2:-1;;;;30:1;27;20:12;5:2;15776:248:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;16070:21:17;;;;-1:-1:-1;;;;;16070:35:17;;16066:217;;16140:86;16175:6;16199:13;16140:17;:86::i;:::-;16121:105;;16066:217;;;-1:-1:-1;16271:1:17;16066:217;16471:6;:21;;;-1:-1:-1;;;;;16331:392:17;16416:10;-1:-1:-1;;;;;16331:392:17;16383:6;:19;;;-1:-1:-1;;;;;16331:392:17;;16352:6;:17;;;16440:6;:17;;;16506:6;:19;;;16539:13;16566:46;16596:15;16566:25;:29;;:46;;;;:::i;:::-;16697:16;;;;16331:392;;;-1:-1:-1;;;;;16331:392:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15520:1210;;;;;:::o;1528:692:29:-;1662:14;;:::i;:::-;1699:28;;:::i;:::-;1738:23;1764:41;1797:7;1764:28;:11;:26;:28::i;:::-;:32;:41;:32;:41;:::i;:::-;1863:22;;1839:47;;1973:2;1952:24;;;1946:31;1929:15;;;1922:56;2058:2;2037:24;;;2031:31;2014:15;;;2007:56;2149:2;2128:24;;;2122:31;2105:15;;;2098:56;-1:-1:-1;1846:6:29;1528:692;-1:-1:-1;;;1528:692:29:o;7359:681:51:-;7463:19;7519:10;;;;7498:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7721:8;;7715:14;;;7591:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7884:4;7879:2;:9;7869:20;;;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;7869:20:51;;7860:29;;7899:111;7920:23;:6;:21;:23::i;:::-;7978:4;7957:18;:1;:16;:18::i;:::-;:25;7996:6;:13;7899:7;:111::i;16986:1202:17:-;17243:19;;;17368:22;;;17431:15;;;;17123:7;;-1:-1:-1;;;;;17243:19:17;;17123:7;;;;17325:131;;17404:13;;17325:29;:131::i;:::-;17309:147;;17483:131;17526:6;:22;;;17562:13;17589:6;:15;;;17483:29;:131::i;:::-;17467:147;;17640:1;17629:8;:12;17625:259;;;17738:19;;;;17801;;;;17838:21;;;;17698:175;;;-1:-1:-1;;;;;17698:175:17;;-1:-1:-1;;;;;17698:175:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;;;;:175;;;;;-1:-1:-1;;17698:175:17;;;;;;;;-1:-1:-1;17698:22:17;:175;;;5:2:-1;;;;30:1;27;20:12;5:2;17698:175:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17698:175:17;;;;17625:259;17908:1;17897:8;:12;17893:250;;;18006:19;;;;18097:21;;;;17966:166;;;-1:-1:-1;;;;;17966:166:17;;-1:-1:-1;;;;;17966:166:17;;;;;;;;;;;;;18069:10;17966:166;;;;;;;;;;;;:22;;;;;;:166;;;;;-1:-1:-1;;17966:166:17;;;;;;;;-1:-1:-1;17966:22:17;:166;;;5:2:-1;;;;30:1;27;20:12;5:2;17966:166:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17966:166:17;;;;17893:250;18159:22;:8;18172;18159:22;:12;:22;:::i;:::-;18152:29;16986:1202;-1:-1:-1;;;;;;16986:1202:17:o;850:228:51:-;1029:2;1018:14;;850:228::o;2840:4207::-;2990:2;2981:6;:11;2977:4064;;;3279:1;3269:6;3265:2;3261:15;3256:3;3252:25;3248:33;3330:4;3326:9;3317:6;3311:13;3307:29;3379:4;3372;3366:11;3362:22;3420:1;3417;3414:8;3408:4;3401:22;3218:219;;;;;;3541:4;3531:6;:14;3527:59;;;3565:7;;3527:59;4275:4;4266:6;:13;4262:2769;;;4601:2;4593:6;4589:15;4579:25;;4649:6;4641;4637:19;4699:6;4693:4;4689:17;5006:4;5000:11;5209:198;5227:4;5219:6;5216:16;5209:198;;;5275:13;;5262:27;;5336:2;5372:13;;;;5324:15;;;;5209:198;;;5496:18;;-1:-1:-1;4308:1224:51;;;5777:2;5769:6;5765:15;5755:25;;5825:6;5817;5813:19;5875:6;5869:4;5865:17;6185:6;6179:13;6699:191;6716:4;6710;6706:15;6699:191;;;6764:11;;6751:25;;-1:-1:-1;;6809:13:51;;;;6855;;;;6699:191;;;6980:19;;-1:-1:-1;;2840:4207:51;;;:::o;1406:674:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1406:674:1;-1:-1:-1;;;;;1406:674:1;;;;;;;;;;;-1:-1:-1;1406:674:1;;;;;;;-1:-1:-1;1406:674:1;;;-1:-1:-1;1406:674:1;:::i;:::-;;;:::o;:::-;;;;;;;;;-1:-1:-1;1406:674:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;1406:674:1;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;1406:674:1;;;;;;",
"source": " /*\n Copyright 2018 Set Labs Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\npragma solidity 0.4.24;\n\nimport { CoreAccounting } from \"./extensions/CoreAccounting.sol\";\nimport { CoreExchangeDispatcher } from \"./extensions/CoreExchangeDispatcher.sol\";\nimport { CoreFactory } from \"./extensions/CoreFactory.sol\";\nimport { CoreInternal } from \"./extensions/CoreInternal.sol\";\nimport { CoreIssuance } from \"./extensions/CoreIssuance.sol\";\nimport { CoreIssuanceOrder } from \"./extensions/CoreIssuanceOrder.sol\";\nimport { CoreRebalanceAuction } from \"./extensions/CoreRebalanceAuction.sol\";\nimport { CoreState } from \"./lib/CoreState.sol\";\n\n\n/**\n * @title Core\n * @author Set Protocol\n *\n * The Core contract acts as a coordinator handling issuing, redeeming, and\n * creating Sets, as well as all collateral flows throughout the system.\n */\n /* solium-disable-next-line no-empty-blocks */\ncontract Core is\n CoreState,\n CoreExchangeDispatcher,\n CoreIssuanceOrder,\n CoreRebalanceAuction,\n CoreAccounting,\n CoreInternal,\n CoreFactory,\n CoreIssuance\n{\n /**\n * Constructor function for Core\n *\n * @param _transferProxy The address of the transfer proxy\n * @param _vault The address of the vault\n */\n constructor(\n address _transferProxy,\n address _vault\n )\n public\n {\n // Commit passed address to transferProxyAddress state variable\n state.transferProxy = _transferProxy;\n\n // Commit passed address to vault state variable\n state.vault = _vault;\n }\n}\n",
"sourcePath": "/Users/alexsoong/Source/set-protocol/set-protocol-contracts/contracts/core/Core.sol",
"ast": {
"absolutePath": "/Users/alexsoong/Source/set-protocol/set-protocol-contracts/contracts/core/Core.sol",
"exportedSymbols": {
"Core": [
111
]
},
"id": 112,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 58,
"literals": [
"solidity",
"0.4",
".24"
],
"nodeType": "PragmaDirective",
"src": "601:23:1"
},
{
"absolutePath": "/Users/alexsoong/Source/set-protocol/set-protocol-contracts/contracts/core/extensions/CoreAccounting.sol",
"file": "./extensions/CoreAccounting.sol",
"id": 60,
"nodeType": "ImportDirective",
"scope": 112,
"sourceUnit": 3469,
"src": "626:65:1",
"symbolAliases": [
{
"foreign": 59,
"local": null
}
],
"unitAlias": ""
},
{
"absolutePath": "/Users/alexsoong/Source/set-protocol/set-protocol-contracts/contracts/core/extensions/CoreExchangeDispatcher.sol",
"file": "./extensions/CoreExchangeDispatcher.sol",
"id": 62,
"nodeType": "ImportDirective",
"scope": 112,
"sourceUnit": 3509,
"src": "692:81:1",
"symbolAliases": [
{
"foreign": 61,
"local": null
}
],
"unitAlias": ""
},
{
"absolutePath": "/Users/alexsoong/Source/set-protocol/set-protocol-contracts/contracts/core/extensions/CoreFactory.sol",
"file": "./extensions/CoreFactory.sol",
"id": 64,
"nodeType": "ImportDirective",
"scope": 112,
"sourceUnit": 3612,
"src": "774:59:1",
"symbolAliases": [
{
"foreign": 63,
"local": null
}
],
"unitAlias": ""
},
{
"absolutePath": "/Users/alexsoong/Source/set-protocol/set-protocol-contracts/contracts/core/extensions/CoreInternal.sol",
"file": "./extensions/CoreInternal.sol",
"id": 66,
"nodeType": "ImportDirective",
"scope": 112,
"sourceUnit": 3719,
"src": "834:61:1",
"symbolAliases": [
{
"foreign": 65,
"local": null
}
],
"unitAlias": ""
},
{
"absolutePath": "/Users/alexsoong/Source/set-protocol/set-protocol-contracts/contracts/core/extensions/CoreIssuance.sol",
"file": "./extensions/CoreIssuance.sol",
"id": 68,
"nodeType": "ImportDirective",
"scope": 112,
"sourceUnit": 4265,
"src": "896:61:1",
"symbolAliases": [
{
"foreign": 67,
"local": null
}
],
"unitAlias": ""
},
{
"absolutePath": "/Users/alexsoong/Source/set-protocol/set-protocol-contracts/contracts/core/extensions/CoreIssuanceOrder.sol",
"file": "./extensions/CoreIssuanceOrder.sol",
"id": 70,
"nodeType": "ImportDirective",
"scope": 112,
"sourceUnit": 5155,
"src": "958:71:1",
"symbolAliases": [
{
"foreign": 69,
"local": null
}
],
"unitAlias": ""
},
{
"absolutePath": "/Users/alexsoong/Source/set-protocol/set-protocol-contracts/contracts/core/extensions/CoreRebalanceAuction.sol",
"file": "./extensions/CoreRebalanceAuction.sol",
"id": 72,
"nodeType": "ImportDirective",
"scope": 112,
"sourceUnit": 5256,
"src": "1030:77:1",
"symbolAliases": [
{
"foreign": 71,
"local": null
}
],
"unitAlias": ""
},
{
"absolutePath": "/Users/alexsoong/Source/set-protocol/set-protocol-contracts/contracts/core/lib/CoreState.sol",
"file": "./lib/CoreState.sol",
"id": 74,
"nodeType": "ImportDirective",
"scope": 112,
"sourceUnit": 5778,
"src": "1108:48:1",
"symbolAliases": [
{
"foreign": 73,
"local": null
}
],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 75,
"name": "CoreState",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 5777,
"src": "1427:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_CoreState_$5777",
"typeString": "contract CoreState"
}
},
"id": 76,
"nodeType": "InheritanceSpecifier",
"src": "1427:9:1"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 77,
"name": "CoreExchangeDispatcher",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3508,
"src": "1442:22:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_CoreExchangeDispatcher_$3508",
"typeString": "contract CoreExchangeDispatcher"
}
},
"id": 78,
"nodeType": "InheritanceSpecifier",
"src": "1442:22:1"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 79,
"name": "CoreIssuanceOrder",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 5154,
"src": "1470:17:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_CoreIssuanceOrder_$5154",
"typeString": "contract CoreIssuanceOrder"
}
},
"id": 80,
"nodeType": "InheritanceSpecifier",
"src": "1470:17:1"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 81,
"name": "CoreRebalanceAuction",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 5255,
"src": "1493:20:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_CoreRebalanceAuction_$5255",
"typeString": "contract CoreRebalanceAuction"
}
},
"id": 82,
"nodeType": "InheritanceSpecifier",
"src": "1493:20:1"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 83,
"name": "CoreAccounting",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3468,
"src": "1519:14:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_CoreAccounting_$3468",
"typeString": "contract CoreAccounting"
}
},
"id": 84,
"nodeType": "InheritanceSpecifier",
"src": "1519:14:1"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 85,
"name": "CoreInternal",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3718,
"src": "1539:12:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_CoreInternal_$3718",
"typeString": "contract CoreInternal"
}
},
"id": 86,
"nodeType": "InheritanceSpecifier",
"src": "1539:12:1"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 87,
"name": "CoreFactory",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3611,
"src": "1557:11:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_CoreFactory_$3611",
"typeString": "contract CoreFactory"
}
},
"id": 88,
"nodeType": "InheritanceSpecifier",
"src": "1557:11:1"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 89,
"name": "CoreIssuance",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 4264,
"src": "1574:12:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_CoreIssuance_$4264",
"typeString": "contract CoreIssuance"
}
},
"id": 90,
"nodeType": "InheritanceSpecifier",
"src": "1574:12:1"
}
],
"contractDependencies": [
3468,
3508,
3611,
3718,
4264,
5154,
5255,
5442,
5454,
5777,
10053,
10304
],
"contractKind": "contract",
"documentation": "@title Core\n@author Set Protocol\n * The Core contract acts as a coordinator handling issuing, redeeming, and\ncreating Sets, as well as all collateral flows throughout the system.",
"fullyImplemented": true,
"id": 111,
"linearizedBaseContracts": [
111,
4264,
3611,
3718,
3468,
5255,
5154,
10053,
3508,
5777,
10304,
5442,
5454
],
"name": "Core",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 109,
"nodeType": "Block",
"src": "1865:213:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 101,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 97,
"name": "state",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5673,
"src": "1947:5:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_State_$5671_storage",
"typeString": "struct CoreState.State storage ref"
}
},
"id": 99,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "transferProxy",
"nodeType": "MemberAccess",
"referencedDeclaration": 5646,
"src": "1947:19:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 100,
"name": "_transferProxy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 92,
"src": "1969:14:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1947:36:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 102,
"nodeType": "ExpressionStatement",
"src": "1947:36:1"
},
{
"expression": {
"argumentTypes": null,
"id": 107,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 103,
"name": "state",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5673,
"src": "2051:5:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_State_$5671_storage",
"typeString": "struct CoreState.State storage ref"
}
},
"id": 105,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "vault",
"nodeType": "MemberAccess",
"referencedDeclaration": 5648,
"src": "2051:11:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 106,
"name": "_vault",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 94,
"src": "2065:6:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2051:20:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 108,
"nodeType": "ExpressionStatement",
"src": "2051:20:1"
}
]
},
"documentation": "Constructor function for Core\n * @param _transferProxy The address of the transfer proxy\n@param _vault The address of the vault",
"id": 110,
"implemented": true,
"isConstructor": true,
"isDeclaredConst": false,
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 95,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 92,
"name": "_transferProxy",
"nodeType": "VariableDeclaration",
"scope": 110,
"src": "1793:22:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 91,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1793:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 94,
"name": "_vault",
"nodeType": "VariableDeclaration",
"scope": 110,
"src": "1825:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 93,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1825:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1783:62:1"
},
"payable": false,
"returnParameters": {
"id": 96,
"nodeType": "ParameterList",
"parameters": [],
"src": "1865:0:1"
},
"scope": 111,
"src": "1772:306:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
}
],
"scope": 112,
"src": "1406:674:1"
}
],
"src": "601:1480:1"
},
"legacyAST": {
"absolutePath": "/Users/alexsoong/Source/set-protocol/set-protocol-contracts/contracts/core/Core.sol",
"exportedSymbols": {
"Core": [
111
]
},
"id": 112,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 58,
"literals": [
"solidity",
"0.4",
".24"
],
"nodeType": "PragmaDirective",
"src": "601:23:1"
},
{
"absolutePath": "/Users/alexsoong/Source/set-protocol/set-protocol-contracts/contracts/core/extensions/CoreAccounting.sol",
"file": "./extensions/CoreAccounting.sol",
"id": 60,
"nodeType": "ImportDirective",
"scope": 112,
"sourceUnit": 3469,
"src": "626:65:1",
"symbolAliases": [
{
"foreign": 59,
"local": null
}
],
"unitAlias": ""
},
{
"absolutePath": "/Users/alexsoong/Source/set-protocol/set-protocol-contracts/contracts/core/extensions/CoreExchangeDispatcher.sol",
"file": "./extensions/CoreExchangeDispatcher.sol",
"id": 62,
"nodeType": "ImportDirective",
"scope": 112,
"sourceUnit": 3509,
"src": "692:81:1",
"symbolAliases": [
{
"foreign": 61,
"local": null
}
],
"unitAlias": ""
},
{
"absolutePath": "/Users/alexsoong/Source/set-protocol/set-protocol-contracts/contracts/core/extensions/CoreFactory.sol",
"file": "./extensions/CoreFactory.sol",
"id": 64,
"nodeType": "ImportDirective",
"scope": 112,
"sourceUnit": 3612,
"src": "774:59:1",
"symbolAliases": [
{
"foreign": 63,
"local": null
}
],
"unitAlias": ""
},
{
"absolutePath": "/Users/alexsoong/Source/set-protocol/set-protocol-contracts/contracts/core/extensions/CoreInternal.sol",
"file": "./extensions/CoreInternal.sol",
"id": 66,
"nodeType": "ImportDirective",
"scope": 112,
"sourceUnit": 3719,
"src": "834:61:1",
"symbolAliases": [
{
"foreign": 65,
"local": null
}
],
"unitAlias": ""
},
{
"absolutePath": "/Users/alexsoong/Source/set-protocol/set-protocol-contracts/contracts/core/extensions/CoreIssuance.sol",
"file": "./extensions/CoreIssuance.sol",
"id": 68,
"nodeType": "ImportDirective",
"scope": 112,
"sourceUnit": 4265,
"src": "896:61:1",
"symbolAliases": [
{
"foreign": 67,
"local": null
}
],
"unitAlias": ""
},
{
"absolutePath": "/Users/alexsoong/Source/set-protocol/set-protocol-contracts/contracts/core/extensions/CoreIssuanceOrder.sol",
"file": "./extensions/CoreIssuanceOrder.sol",
"id": 70,
"nodeType": "ImportDirective",
"scope": 112,
"sourceUnit": 5155,
"src": "958:71:1",
"symbolAliases": [
{
"foreign": 69,
"local": null
}
],
"unitAlias": ""
},
{
"absolutePath": "/Users/alexsoong/Source/set-protocol/set-protocol-contracts/contracts/core/extensions/CoreRebalanceAuction.sol",
"file": "./extensions/CoreRebalanceAuction.sol",
"id": 72,
"nodeType": "ImportDirective",
"scope": 112,
"sourceUnit": 5256,
"src": "1030:77:1",
"symbolAliases": [
{
"foreign": 71,
"local": null
}
],
"unitAlias": ""
},
{
"absolutePath": "/Users/alexsoong/Source/set-protocol/set-protocol-contracts/contracts/core/lib/CoreState.sol",
"file": "./lib/CoreState.sol",
"id": 74,
"nodeType": "ImportDirective",
"scope": 112,
"sourceUnit": 5778,
"src": "1108:48:1",
"symbolAliases": [
{
"foreign": 73,
"local": null
}
],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 75,
"name": "CoreState",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 5777,
"src": "1427:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_CoreState_$5777",
"typeString": "contract CoreState"
}
},
"id": 76,
"nodeType": "InheritanceSpecifier",
"src": "1427:9:1"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 77,
"name": "CoreExchangeDispatcher",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3508,
"src": "1442:22:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_CoreExchangeDispatcher_$3508",
"typeString": "contract CoreExchangeDispatcher"
}
},
"id": 78,
"nodeType": "InheritanceSpecifier",
"src": "1442:22:1"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 79,
"name": "CoreIssuanceOrder",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 5154,
"src": "1470:17:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_CoreIssuanceOrder_$5154",
"typeString": "contract CoreIssuanceOrder"
}
},
"id": 80,
"nodeType": "InheritanceSpecifier",
"src": "1470:17:1"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 81,
"name": "CoreRebalanceAuction",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 5255,
"src": "1493:20:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_CoreRebalanceAuction_$5255",
"typeString": "contract CoreRebalanceAuction"
}
},
"id": 82,
"nodeType": "InheritanceSpecifier",
"src": "1493:20:1"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 83,
"name": "CoreAccounting",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3468,
"src": "1519:14:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_CoreAccounting_$3468",
"typeString": "contract CoreAccounting"
}
},
"id": 84,
"nodeType": "InheritanceSpecifier",
"src": "1519:14:1"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 85,
"name": "CoreInternal",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3718,
"src": "1539:12:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_CoreInternal_$3718",
"typeString": "contract CoreInternal"
}
},
"id": 86,
"nodeType": "InheritanceSpecifier",
"src": "1539:12:1"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 87,
"name": "CoreFactory",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3611,
"src": "1557:11:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_CoreFactory_$3611",
"typeString": "contract CoreFactory"
}
},
"id": 88,
"nodeType": "InheritanceSpecifier",
"src": "1557:11:1"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 89,
"name": "CoreIssuance",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 4264,
"src": "1574:12:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_CoreIssuance_$4264",
"typeString": "contract CoreIssuance"
}
},
"id": 90,
"nodeType": "InheritanceSpecifier",
"src": "1574:12:1"
}
],
"contractDependencies": [
3468,
3508,
3611,
3718,
4264,
5154,
5255,
5442,
5454,
5777,
10053,
10304
],
"contractKind": "contract",
"documentation": "@title Core\n@author Set Protocol\n * The Core contract acts as a coordinator handling issuing, redeeming, and\ncreating Sets, as well as all collateral flows throughout the system.",
"fullyImplemented": true,
"id": 111,
"linearizedBaseContracts": [
111,
4264,
3611,
3718,
3468,
5255,
5154,
10053,
3508,
5777,
10304,
5442,
5454
],
"name": "Core",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 109,
"nodeType": "Block",
"src": "1865:213:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 101,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 97,
"name": "state",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5673,
"src": "1947:5:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_State_$5671_storage",
"typeString": "struct CoreState.State storage ref"
}
},
"id": 99,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "transferProxy",
"nodeType": "MemberAccess",
"referencedDeclaration": 5646,
"src": "1947:19:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 100,
"name": "_transferProxy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 92,
"src": "1969:14:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1947:36:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 102,
"nodeType": "ExpressionStatement",
"src": "1947:36:1"
},
{
"expression": {
"argumentTypes": null,
"id": 107,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 103,
"name": "state",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5673,
"src": "2051:5:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_State_$5671_storage",
"typeString": "struct CoreState.State storage ref"
}
},
"id": 105,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "vault",
"nodeType": "MemberAccess",
"referencedDeclaration": 5648,
"src": "2051:11:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 106,
"name": "_vault",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 94,
"src": "2065:6:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2051:20:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 108,
"nodeType": "ExpressionStatement",
"src": "2051:20:1"
}
]
},
"documentation": "Constructor function for Core\n * @param _transferProxy The address of the transfer proxy\n@param _vault The address of the vault",
"id": 110,
"implemented": true,
"isConstructor": true,
"isDeclaredConst": false,
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 95,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 92,
"name": "_transferProxy",
"nodeType": "VariableDeclaration",
"scope": 110,
"src": "1793:22:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 91,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1793:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 94,
"name": "_vault",
"nodeType": "VariableDeclaration",
"scope": 110,
"src": "1825:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 93,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1825:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1783:62:1"
},
"payable": false,
"returnParameters": {
"id": 96,
"nodeType": "ParameterList",
"parameters": [],
"src": "1865:0:1"
},
"scope": 111,
"src": "1772:306:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
}
],
"scope": 112,
"src": "1406:674:1"
}
],
"src": "601:1480:1"
},
"compiler": {
"name": "solc",
"version": "0.4.24+commit.e67f0147.Emscripten.clang"
},
"networks": {},
"schemaVersion": "2.0.0",
"updatedAt": "2018-10-02T05:37:04.654Z"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment