60806040526005805462ff00001961ff001960ff19909216600117919091166101001716905534801561003157600080fd5b5060008054600160a060020a0319163317808255604051600160a060020a039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36b033b2e3c9fd0803ce80000006002819055336000818152600360209081526040808320859055805194855251929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a36119a9806100e56000396000f3006080604052600436106101a05763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101a5578063095ea7b31461022f5780630b26cf6614610267578063111a18d31461028a57806318160ddd146102ae57806323b872dd146102d5578063285d70d4146102ff578063313ce5671461031957806339509351146103445780634000aea01461036857806340c10f191461039957806342966c68146103bd5780634bf365df146103d55780635f504a82146103ea578063672434821461041b57806369ffa08a146104a957806370a08231146104d0578063710bf322146104f1578063715018a61461051257806379ba509714610527578063859ba28c1461053c5780638da5cb5b1461057d57806392ff0d311461059257806395d89b41146105a7578063966ff650146105bc5780639cd23707146105d1578063a2309ff8146105eb578063a457c2d714610600578063a9059cbb14610624578063c706775514610648578063cd5965831461065d578063ce793a2014610672578063dd62ed3e14610687575b600080fd5b3480156101b157600080fd5b506101ba6106ae565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f45781810151838201526020016101dc565b50505050905090810190601f1680156102215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023b57600080fd5b50610253600160a060020a03600435166024356106e5565b604080519115158252519081900360200190f35b34801561027357600080fd5b50610288600160a060020a036004351661074b565b005b34801561029657600080fd5b50610288600160a060020a0360043516602435610835565b3480156102ba57600080fd5b506102c36108bf565b60408051918252519081900360200190f35b3480156102e157600080fd5b50610253600160a060020a03600435811690602435166044356108c5565b34801561030b57600080fd5b5061028860043515156109ba565b34801561032557600080fd5b5061032e610a47565b6040805160ff9092168252519081900360200190f35b34801561035057600080fd5b50610253600160a060020a0360043516602435610a4c565b34801561037457600080fd5b5061025360048035600160a060020a0316906024803591604435918201910135610a77565b3480156103a557600080fd5b50610253600160a060020a0360043516602435610b9d565b3480156103c957600080fd5b50610288600435610c53565b3480156103e157600080fd5b50610253610ce1565b3480156103f657600080fd5b506103ff610cef565b60408051600160a060020a039092168252519081900360200190f35b34801561042757600080fd5b506040805160206004803580820135838102808601850190965280855261025395369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610cfe9650505050505050565b3480156104b557600080fd5b50610288600160a060020a0360043581169060243516610e47565b3480156104dc57600080fd5b506102c3600160a060020a036004351661101c565b3480156104fd57600080fd5b50610288600160a060020a0360043516611037565b34801561051e57600080fd5b506102886101a0565b34801561053357600080fd5b506102886110e2565b34801561054857600080fd5b5061055161116a565b6040805167ffffffffffffffff9485168152928416602084015292168183015290519081900360600190f35b34801561058957600080fd5b506103ff611174565b34801561059e57600080fd5b50610253611183565b3480156105b357600080fd5b506101ba611192565b3480156105c857600080fd5b506102c36111c9565b3480156105dd57600080fd5b5061028860043515156111cf565b3480156105f757600080fd5b506102c361125f565b34801561060c57600080fd5b50610253600160a060020a0360043516602435611265565b34801561063057600080fd5b50610253600160a060020a0360043516602435611287565b34801561065457600080fd5b50610253611375565b34801561066957600080fd5b506103ff61137e565b34801561067e57600080fd5b50610288611394565b34801561069357600080fd5b506102c3600160a060020a03600435811690602435166113f1565b60408051808201909152600d81527f5061707972757320546f6b656e00000000000000000000000000000000000000602082015281565b336000818152600460209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b600054600160a060020a0316331461076257600080fd5b60055460ff16151561077357600080fd5b600160a060020a038116158015906107a05750600554600160a060020a0382811663010000009092041614155b80156107b057506107b08161141c565b15156107bb57600080fd5b600554604051600160a060020a03808416926301000000900416907f6bc3d5f48e77b5ff80e5e6583401d7b5bc6f5b5023984f33ff6d04fed1e839e690600090a360058054600160a060020a0390921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b600054600160a060020a031633148015610851575060055460ff165b151561085c57600080fd5b6108668282611424565b600754610879908263ffffffff6114f716565b600755604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b60025490565b60055460009062010000900460ff16806108e95750600054600160a060020a031633145b15156108f457600080fd5b6108ff84848461150d565b151561090a57600080fd5b6109138361141c565b801561093e57506040805160008082526020820190925261093c91869186918691905b50611525565b155b156109b057600554600160a060020a03848116630100000090920416141561096557600080fd5b60408051600160a060020a0380871682528516602082015280820184905290517f11249f0fc79fc134a15a10d1da8291b79515bf987e036ced05b9ec119614070b9181900360600190a15b5060019392505050565b600054600160a060020a031633146109d157600080fd5b60055460ff61010090910416151581151514156109ed57600080fd5b6005805482151561010090810261ff00199092169190911791829055604080519190920460ff161515815290517f46c335b7f4282279447634dab2ba206ffb5ac6ce9744a5957353fced8b6044dc9181900360200190a150565b601281565b6000600160a060020a0383161515610a6357600080fd5b610a6e338484611690565b50600192915050565b60055460009062010000900460ff1680610a9b5750600054600160a060020a031633145b1515610aa657600080fd5b600160a060020a038516301415610abc57600080fd5b610ac68585611739565b1515610ad157600080fd5b84600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16868686604051808481526020018060200182810382528484828181526020019250808284376040519201829003965090945050505050a3610b468561141c565b15610b9257610b8733868686868080601f01602080910402602001604051908101604052809392919081815260200183838082843750611525945050505050565b1515610b9257600080fd5b506001949350505050565b600554600090610100900460ff161515610bb657600080fd5b600054600160a060020a0316331480610be0575060055463010000009004600160a060020a031633145b1515610beb57600080fd5b610bf58383611746565b600654610c08908363ffffffff6114f716565b600655604080518381529051600160a060020a038516917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a250600192915050565b600054600160a060020a0316331480610c7d575060055463010000009004600160a060020a031633145b1515610c8857600080fd5b610c923382611424565b600754610ca5908263ffffffff6114f716565b60075560408051828152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a250565b600554610100900460ff1690565b600154600160a060020a031690565b6000806000806000600560029054906101000a900460ff1680610d2b5750600054600160a060020a031633145b1515610d3657600080fd5b8551875114610d4457600080fd5b33600090815260036020526040812054945092505b8551831015610e28578583815181101515610d7057fe5b9060200190602002015191508683815181101515610d8a57fe5b60209081029091010151905081841015610da357600080fd5b8683815181101515610db157fe5b6020908102919091010151600160a060020a03163314610def57600160a060020a038116600090815260036020526040902080548301905592819003925b604080518381529051600160a060020a03831691339160008051602061195e8339815191529181900360200190a3600190920191610d59565b5050336000908152600360205260409020919091555060019392505050565b600080548190600160a060020a0316331480610e74575060055463010000009004600160a060020a031633145b1515610e7f57600080fd5b600160a060020a0383161515610e9457600080fd5b600160a060020a0384161515610ee057604051600160a060020a03841690303180156108fc02916000818181858888f19350505050158015610eda573d6000803e3d6000fd5b50611016565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051859350600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015610f4457600080fd5b505af1158015610f58573d6000803e3d6000fd5b505050506040513d6020811015610f6e57600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301526024820184905291519293509084169163a9059cbb916044808201926020929091908290030181600087803b158015610fdf57600080fd5b505af1158015610ff3573d6000803e3d6000fd5b505050506040513d602081101561100957600080fd5b5051151561101657600080fd5b50505050565b600160a060020a031660009081526003602052604090205490565b600054600160a060020a0316331461104e57600080fd5b600160a060020a038116158015906110745750600054600160a060020a03828116911614155b151561107f57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091179182905560008054604051938316939216917fb51454ce8c7f26becd312a46c4815553887f2ec876a0b8dc813b87f62edf6f809190a350565b600154600160a060020a031633146110f957600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b6002600080909192565b600054600160a060020a031690565b60055462010000900460ff1690565b60408051808201909152600381527f5050520000000000000000000000000000000000000000000000000000000000602082015281565b60075490565b600054600160a060020a031633146111e657600080fd5b60055460ff62010000909104161515811515141561120357600080fd5b600580548215156201000090810262ff0000199092169190911791829055604080519190920460ff161515815290517f6488c20eb299903c41aa1b53c3ad5a3140aca395935e57cc52c1cc8dae8d9e179181900360200190a150565b60065490565b6000600160a060020a038316151561127c57600080fd5b610a6e3384846117f3565b60055460009062010000900460ff16806112ab5750600054600160a060020a031633145b15156112b657600080fd5b6112c08383611739565b15156112cb57600080fd5b6112d48361141c565b80156112fd5750604080516000808252602082019092526112fb9133918691869190610936565b155b15610a6e57600554600160a060020a03848116630100000090920416141561132457600080fd5b60408051338152600160a060020a038516602082015280820184905290517f11249f0fc79fc134a15a10d1da8291b79515bf987e036ced05b9ec119614070b9181900360600190a150600192915050565b60055460ff1690565b60055463010000009004600160a060020a031690565b600054600160a060020a031633146113ab57600080fd5b60055460ff1615156113bc57600080fd5b6005805460ff191690556040517f8f985c5eed42f02e8b4264b5a49167ee86ef75b7c9439e5a09f2891543740c7e90600090a1565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b6000903b1190565b600160a060020a038216151561143957600080fd5b6000811180156114615750600160a060020a0382166000908152600360205260409020548111155b151561146c57600080fd5b600160a060020a038216600090815260036020526040902054611495908263ffffffff61186916565b600160a060020a0383166000908152600360205260409020556002546114c1908263ffffffff61186916565b600255604080518281529051600091600160a060020a0385169160008051602061195e8339815191529181900360200190a35050565b60008282018381101561150657fe5b9392505050565b600061151a8433846117f3565b6109b084848461187b565b600083600160a060020a03168584846040516024018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561159257818101518382015260200161157a565b50505050905090810190601f1680156115bf5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa4c0ed36000000000000000000000000000000000000000000000000000000001781529051825192975095508594509250905080838360005b8381101561164657818101518382015260200161162e565b50505050905090810190601f1680156116735780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af1979650505050505050565b6000811161169d57600080fd5b600160a060020a038084166000908152600460209081526040808320938616835292905220546116d3908263ffffffff6114f716565b600160a060020a0384811660008181526004602090815260408083209488168084529482529182902085905581519485529051929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000610a6e33848461187b565b600160a060020a038216151561175b57600080fd5b6000811161176857600080fd5b600160a060020a038216600090815260036020526040902054611791908263ffffffff6114f716565b600160a060020a0383166000908152600360205260409020556002546117bd908263ffffffff6114f716565b600255604080518281529051600160a060020a0384169160009160008051602061195e8339815191529181900360200190a35050565b6000811180156118285750600160a060020a038084166000908152600460209081526040808320938616835292905220548111155b151561183357600080fd5b600160a060020a038084166000908152600460209081526040808320938616835292905220546116d3908263ffffffff61186916565b60008282111561187557fe5b50900390565b600160a060020a038216151561189057600080fd5b600160a060020a0383166000908152600360205260409020548111156118b557600080fd5b600160a060020a0383166000908152600360205260409020546118de908263ffffffff61186916565b600160a060020a038085166000908152600360205260408082209390935590841681522054611913908263ffffffff6114f716565b600160a060020a03808416600081815260036020908152604091829020949094558051858152905191939287169260008051602061195e83398151915292918290030190a35050505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582080517aaa47a8ce9b8bcaeaf5823e5733ef1c3374a773b03d9d99c17b0fe48cf80029