60806040526008805460ff191690553480156200001b57600080fd5b50604080518082018252600680825265233937bd32b760d11b60208084018281528551808701909652928552840152815191929160099162000061916003919062000222565b5081516200007790600490602085019062000222565b506005805460ff191660ff92909216919091179055504690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000bb62000188565b805160209182012060408051808201825260018152603160f81b90840152805180840194909452838101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606084015260808301939093523060a0808401919091528351808403909101815260c0909201928390528151910120600a55600b80546001600160a01b0319163317908190556001600160a01b0316906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3620002ce565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015620002185780601f10620001ec5761010080835404028352916020019162000218565b820191906000526020600020905b815481529060010190602001808311620001fa57829003601f168201915b5050505050905090565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200025a5760008555620002a5565b82601f106200027557805160ff1916838001178555620002a5565b82800160010185558215620002a5579182015b82811115620002a557825182559160200191906001019062000288565b50620002b3929150620002b7565b5090565b5b80821115620002b35760008155600101620002b8565b61190d80620002de6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806370a08231116101045780639caf9b00116100a2578063d505accf11610071578063d505accf146105bd578063dd62ed3e1461060e578063f2fde38b1461063c578063fbfa77cf14610662576101da565b80639caf9b0014610513578063a22b35ce14610539578063a457c2d714610565578063a9059cbb14610591576101da565b806379cc6790116100de57806379cc6790146104955780637ecebe00146104c15780638da5cb5b146104e757806395d89b411461050b576101da565b806370a0823114610441578063715018a614610467578063727aa4fc1461046f576101da565b806330adf81f1161017c57806340c10f191161014b57806340c10f19146103a457806342966c68146103d057806353d6fd59146103ed5780636817031b1461041b576101da565b806330adf81f1461034a578063313ce567146103525780633644e515146103705780633950935114610378576101da565b8063153b0d1e116101b8578063153b0d1e146102c257806318160ddd146102f257806323b872dd1461030c5780632df6a73314610342576101da565b806306fdde03146101df578063095ea7b31461025c57806309fd82121461029c575b600080fd5b6101e761066a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610221578181015183820152602001610209565b50505050905090810190601f16801561024e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102886004803603604081101561027257600080fd5b506001600160a01b038135169060200135610700565b604080519115158252519081900360200190f35b610288600480360360208110156102b257600080fd5b50356001600160a01b0316610716565b6102f0600480360360408110156102d857600080fd5b506001600160a01b0381351690602001351515610734565b005b6102fa6107ac565b60408051918252519081900360200190f35b6102886004803603606081101561032257600080fd5b506001600160a01b038135811691602081013590911690604001356107b2565b6102f061081b565b6102fa610877565b61035a61089b565b6040805160ff9092168252519081900360200190f35b6102fa6108a4565b6102886004803603604081101561038e57600080fd5b506001600160a01b0381351690602001356108aa565b6102f0600480360360408110156103ba57600080fd5b506001600160a01b0381351690602001356108e0565b6102f0600480360360208110156103e657600080fd5b5035610937565b6102f06004803603604081101561040357600080fd5b506001600160a01b0381351690602001351515610944565b6102886004803603602081101561043157600080fd5b50356001600160a01b03166109bc565b6102fa6004803603602081101561045757600080fd5b50356001600160a01b0316610a31565b6102f0610a4c565b6102f06004803603602081101561048557600080fd5b50356001600160a01b0316610ae3565b6102f0600480360360408110156104ab57600080fd5b506001600160a01b038135169060200135610b91565b6102fa600480360360208110156104d757600080fd5b50356001600160a01b0316610b9b565b6104ef610bc2565b604080516001600160a01b039092168252519081900360200190f35b6101e7610bd1565b6102886004803603602081101561052957600080fd5b50356001600160a01b0316610c32565b6102f06004803603604081101561054f57600080fd5b506001600160a01b038135169060200135610c50565b6102886004803603604081101561057b57600080fd5b506001600160a01b038135169060200135610c9c565b610288600480360360408110156105a757600080fd5b506001600160a01b038135169060200135610ceb565b6102f0600480360360e08110156105d357600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610cf8565b6102fa6004803603604081101561062457600080fd5b506001600160a01b0381358116916020013516610f25565b6102f06004803603602081101561065257600080fd5b50356001600160a01b0316610f50565b6104ef61103e565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106f65780601f106106cb576101008083540402835291602001916106f6565b820191906000526020600020905b8154815290600101906020018083116106d957829003601f168201915b5050505050905090565b600061070d33848461104d565b50600192915050565b6001600160a01b031660009081526006602052604090205460ff1690565b600b546001600160a01b03163314610781576040805162461bcd60e51b81526020600482018190526024820152600080516020611805833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b60025490565b60006107bf848484611139565b610811843361080c856040518060600160405280602881526020016117ba602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906113b2565b61104d565b5060019392505050565b600b546001600160a01b03163314610868576040805162461bcd60e51b81526020600482018190526024820152600080516020611805833981519152604482015290519081900360640190fd5b6008805460ff19166001179055565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055460ff1690565b600a5481565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161070d91859061080c9086611449565b600c546001600160a01b031633146109295760405162461bcd60e51b81526004018080602001828103825260238152602001806117e26023913960400191505060405180910390fd5b61093382826114aa565b5050565b610941338261159a565b50565b600b546001600160a01b03163314610991576040805162461bcd60e51b81526020600482018190526024820152600080516020611805833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600b546000906001600160a01b03163314610a0c576040805162461bcd60e51b81526020600482018190526024820152600080516020611805833981519152604482015290519081900360640190fd5b50600c80546001600160a01b0383166001600160a01b03199091161790556001919050565b6001600160a01b031660009081526020819052604090205490565b600b546001600160a01b03163314610a99576040805162461bcd60e51b81526020600482018190526024820152600080516020611805833981519152604482015290519081900360640190fd5b600b546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600b80546001600160a01b0319169055565b600b546001600160a01b03163314610b30576040805162461bcd60e51b81526020600482018190526024820152600080516020611805833981519152604482015290519081900360640190fd5b6000610b3b82610a31565b11610b7f576040805162461bcd60e51b815260206004820152600f60248201526e2737ba3434b733903a3790313ab93760891b604482015290519081900360640190fd5b61094133610b8c83610a31565b61159a565b6109338282610c50565b6001600160a01b0381166000908152600960205260408120610bbc90611696565b92915050565b600b546001600160a01b031690565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106f65780601f106106cb576101008083540402835291602001916106f6565b6001600160a01b031660009081526007602052604090205460ff1690565b6000610c808260405180606001604052806024815260200161182560249139610c798633610f25565b91906113b2565b9050610c8d83338361104d565b610c97838361159a565b505050565b600061070d338461080c856040518060600160405280602581526020016118b3602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906113b2565b600061070d338484611139565b83421115610d4d576040805162461bcd60e51b815260206004820152601860248201527f5065726d69743a206578706972656420646561646c696e650000000000000000604482015290519081900360640190fd5b6001600160a01b03871660009081526009602052604081207f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c990899089908990610d9690611696565b604080516020808201979097526001600160a01b0395861681830152939094166060840152608083019190915260a082015260c08082018990528251808303909101815260e082018352805190840120600a5461190160f01b610100840152610102830152610122808301829052835180840390910181526101428301808552815191860191909120600091829052610162840180865281905260ff8a166101828501526101a284018990526101c28401889052935191955092936001926101e280820193601f1981019281900390910190855afa158015610e7c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610eb25750896001600160a01b0316816001600160a01b0316145b610eed5760405162461bcd60e51b81526004018080602001828103825260218152602001806117996021913960400191505060405180910390fd5b6001600160a01b038a166000908152600960205260409020610f0e9061169a565b610f198a8a8a61104d565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600b546001600160a01b03163314610f9d576040805162461bcd60e51b81526020600482018190526024820152600080516020611805833981519152604482015290519081900360640190fd5b6001600160a01b038116610fe25760405162461bcd60e51b815260040180806020018281038252602681526020018061172b6026913960400191505060405180910390fd5b600b546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c546001600160a01b031690565b6001600160a01b0383166110925760405162461bcd60e51b815260040180806020018281038252602481526020018061188f6024913960400191505060405180910390fd5b6001600160a01b0382166110d75760405162461bcd60e51b81526004018080602001828103825260228152602001806117516022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661117e5760405162461bcd60e51b815260040180806020018281038252602581526020018061186a6025913960400191505060405180910390fd5b6001600160a01b0382166111c35760405162461bcd60e51b81526004018080602001828103825260238152602001806116e66023913960400191505060405180910390fd5b6001600160a01b03831660009081526007602052604090205460ff1615801561120557506001600160a01b03821660009081526007602052604090205460ff16155b611247576040805162461bcd60e51b815260206004820152600e60248201526d45524332303a2062616420626f7960901b604482015290519081900360640190fd5b60085460ff166112e1576001600160a01b03831660009081526006602052604090205460ff168061129057506001600160a01b03821660009081526006602052604090205460ff165b6112e1576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206e6f7420796574206f70656e20666f722074726164696e6700604482015290519081900360640190fd5b6112ec838383610c97565b61132981604051806060016040528060268152602001611773602691396001600160a01b03861660009081526020819052604090205491906113b2565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546113589082611449565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156114415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114065781810151838201526020016113ee565b50505050905090810190601f1680156114335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156114a3576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216611505576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611510308383610c97565b60025461151d9082611449565b6002556001600160a01b0382166000908152602081905260409020546115439082611449565b6001600160a01b038316600081815260208181526040918290209390935580518481529051919230927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b0382166115df5760405162461bcd60e51b81526004018080602001828103825260218152602001806118496021913960400191505060405180910390fd5b6115eb82600083610c97565b61162881604051806060016040528060228152602001611709602291396001600160a01b03851660009081526020819052604090205491906113b2565b6001600160a01b03831660009081526020819052604090205560025461164e90826116a3565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b5490565b80546001019055565b60006114a383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113b256fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63655a65726f537761705065726d69743a20496e76616c6964207369676e617475726545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655661756c744f776e65643a2063616c6c6572206973206e6f7420746865205661756c744f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203d0d96df9eed88d7fc0d6b8340091841736232cf22463805ef0fb596b7309dca64736f6c63430007050033