0x608060405234801561001057600080fd5b506110cc806100206000396000f3fe60806040526004361061005d5763ffffffff60e060020a60003504166223de2981146100675780630c2ef7dc1461015e5780639cce94d114610199578063c07786de146101cc578063c0ee0b8a146101e1578063e11a6ce8146102a9575b6100656102be565b005b34801561007357600080fd5b50610065600480360360c081101561008a57600080fd5b600160a060020a03823581169260208101358216926040820135909216916060820135919081019060a0810160808201356401000000008111156100cd57600080fd5b8201836020820111156100df57600080fd5b8035906020019184600183028401116401000000008311171561010157600080fd5b91939092909160208101903564010000000081111561011f57600080fd5b82018360208201111561013157600080fd5b8035906020019184600183028401116401000000008311171561015357600080fd5b50909250905061054e565b34801561016a57600080fd5b506100656004803603604081101561018157600080fd5b50600160a060020a0381358116916020013516610562565b3480156101a557600080fd5b50610065600480360360208110156101bc57600080fd5b5035600160a060020a03166107cd565b3480156101d857600080fd5b506100656102be565b3480156101ed57600080fd5b506100656004803603606081101561020457600080fd5b600160a060020a038235169160208101359181019060608101604082013564010000000081111561023457600080fd5b82018360208201111561024657600080fd5b8035906020019184600183028401116401000000008311171561026857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a64945050505050565b3480156102b557600080fd5b50610065610c31565b3031600080806102cc610d08565b91945092509050600061030d670de0b6b3a76400006103016102f4828663ffffffff610ea416565b889063ffffffff610ebe16565b9063ffffffff610ef016565b90506000610321868363ffffffff610ea416565b9050600085600160a060020a031682600036604051808383808284376040519201945060009350909150508083038185875af1925050503d8060008114610384576040519150601f19603f3d011682016040523d82523d6000602084013e610389565b606091505b505090508015156103fb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f436f6c642077616c6c65742072656a6563746564207061796d656e7400000000604482015290519081900360640190fd5b600085600160a060020a031684600036604051808383808284376040519201945060009350909150508083038185875af1925050503d806000811461045c576040519150601f19603f3d011682016040523d82523d6000602084013e610461565b606091505b505090508015156104d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f486f742077616c6c65742072656a6563746564207061796d656e740000000000604482015290519081900360640190fd5b60008051602061108183398151915260003360008b604051808560038111156104f857fe5b60ff16815260200184600160a060020a0316600160a060020a0316815260200183600160a060020a0316600160a060020a0316815260200182815260200194505050505060405180910390a15050505050505050565b6105588786610f14565b5050505050505050565b604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152600160a060020a038381166004830152306024830152915160009285169163dd62ed3e916044808301926020929190829003018186803b1580156105cc57600080fd5b505afa1580156105e0573d6000803e3d6000fd5b505050506040513d60208110156105f657600080fd5b505190506000811161060757600080fd5b6000806000610614610d08565b91945092509050600061063c670de0b6b3a76400006103016102f4828663ffffffff610ea416565b90506000610650868363ffffffff610ea416565b604080517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a038a811660048301528881166024830152604482018490529151929350908a16916323b872dd916064808201926020929091908290030181600087803b1580156106c757600080fd5b505af11580156106db573d6000803e3d6000fd5b505050506040513d60208110156106f157600080fd5b505115156106fe57600080fd5b604080517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a0389811660048301528681166024830152604482018590529151918a16916323b872dd916064808201926020929091908290030181600087803b15801561077257600080fd5b505af1158015610786573d6000803e3d6000fd5b505050506040513d602081101561079c57600080fd5b505115156107a957600080fd5b6000805160206110818339815191526001888a89604051808560038111156104f857fe5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600091600160a060020a038416916370a0823191602480820192602092909190829003018186803b15801561083057600080fd5b505afa158015610844573d6000803e3d6000fd5b505050506040513d602081101561085a57600080fd5b505190506000811161086b57600080fd5b6000806000610878610d08565b9194509250905060006108a0670de0b6b3a76400006103016102f4828663ffffffff610ea416565b905060006108b4868363ffffffff610ea416565b905086600160a060020a031663a9059cbb86836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561091957600080fd5b505af115801561092d573d6000803e3d6000fd5b505050506040513d602081101561094357600080fd5b5051151561095057600080fd5b86600160a060020a031663a9059cbb85846040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156109b357600080fd5b505af11580156109c7573d6000803e3d6000fd5b505050506040513d60208110156109dd57600080fd5b505115156109ea57600080fd5b60008051602061108183398151915260016000898960405180856003811115610a0f57fe5b60ff16815260200184600160a060020a0316600160a060020a0316815260200183600160a060020a0316600160a060020a0316815260200182815260200194505050505060405180910390a150505050505050565b811515610a7057610c2c565b6000806000610a7d610d08565b919450925090506000610ab2670de0b6b3a7640000610301610aa5828663ffffffff610ea416565b899063ffffffff610ebe16565b90506000610ac6878363ffffffff610ea416565b604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0388166004820152602481018390529051919250339163a9059cbb916044808201926020929091908290030181600087803b158015610b3257600080fd5b505af1158015610b46573d6000803e3d6000fd5b505050506040513d6020811015610b5c57600080fd5b50511515610b6957600080fd5b604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0386166004820152602481018490529051339163a9059cbb9160448083019260209291908290030181600087803b158015610bd157600080fd5b505af1158015610be5573d6000803e3d6000fd5b505050506040513d6020811015610bfb57600080fd5b50511515610c0857600080fd5b600080516020611081833981519152600389338a604051808560038111156104f857fe5b505050565b604080517f455243373737546f6b656e73526563697069656e7400000000000000000000006020808301919091528251808303601501815260358301808552815191909201207f29965a1d000000000000000000000000000000000000000000000000000000009091523060398301819052605983018290526079830152915173820b586c8c28125366c998641b09dcbe7d4cbf06916329965a1d91609980830192600092919082900301818387803b158015610ced57600080fd5b505af1158015610d01573d6000803e3d6000fd5b5050505050565b600080600080731502dd4985e38afd43e9012d3cad61874df11e79905080600160a060020a0316636be13c926040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610d6157600080fd5b505afa158015610d75573d6000803e3d6000fd5b505050506040513d6020811015610d8b57600080fd5b5051604080517f29113bc80000000000000000000000000000000000000000000000000000000081529051600160a060020a038416916329113bc8916004808301926020929190829003018186803b158015610de657600080fd5b505afa158015610dfa573d6000803e3d6000fd5b505050506040513d6020811015610e1057600080fd5b5051604080517f71ca337d0000000000000000000000000000000000000000000000000000000081529051600160a060020a038516916371ca337d916004808301926020929190829003018186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b50519195509350915050909192565b600082821115610eb357600080fd5b508082035b92915050565b6000821515610ecf57506000610eb8565b828202828482811515610ede57fe5b0414610ee957600080fd5b9392505050565b6000808211610efe57600080fd5b60008284811515610f0b57fe5b04949350505050565b6000806000610f21610d08565b919450925090506000610f49670de0b6b3a76400006103016102f4828663ffffffff610ea416565b90506000610f5d868363ffffffff610ea416565b604080517fd0679d34000000000000000000000000000000000000000000000000000000008152600160a060020a03881660048201526024810183905290519192503391829163d0679d3491604480830192600092919082900301818387803b158015610fc957600080fd5b505af1158015610fdd573d6000803e3d6000fd5b5050505080600160a060020a031663d0679d3486856040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b15801561104457600080fd5b505af1158015611058573d6000803e3d6000fd5b50505050600080516020611081833981519152600289338a604051808560038111156104f857fefefe61545d8d2664f358b31985ddc97d6ad155cfb1d8fa6d4698b819c3fd5971f1a165627a7a723058203449067cbc361c3975438339b65d51c685009501e91d4240fe057010255f0fbe0029