0x60806040523480156200001157600080fd5b50600054610100900460ff166200002f5760005460ff161562000039565b62000039620000bc565b620000765760405162461bcd60e51b815260040180806020018281038252602e81526020018062001d63602e913960400191505060405180910390fd5b600054610100900460ff16158015620000a2576000805460ff1961ff0019909116610100171660011790555b8015620000b5576000805461ff00191690555b50620000e0565b6000620000d430620000da60201b620008a41760201c565b15905090565b3b151590565b611c7380620000f06000396000f3fe60806040526004361061009a5760003560e01c80638129fc1c11610069578063b31dbb9f1161004e578063b31dbb9f14610266578063dd1b9c4a14610296578063f77c4791146102c3576100a1565b80638129fc1c146101e25780639a85fa7a146101f7576100a1565b80633689311f146100a65780633cebb823146101015780635d585189146101365780637ca25184146101b4576100a1565b366100a157005b600080fd5b3480156100b257600080fd5b506100ef600480360360808110156100c957600080fd5b506001600160a01b038135811691602081013582169160408201351690606001356102f4565b60408051918252519081900360200190f35b34801561010d57600080fd5b506101346004803603602081101561012457600080fd5b50356001600160a01b031661044d565b005b34801561014257600080fd5b5061017f6004803603608081101561015957600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356104d1565b60408051600295860b81529390940b60208401526001600160801b039182168385015216606082015290519081900360800190f35b3480156101c057600080fd5b506101c9610610565b6040805163ffffffff9092168252519081900360200190f35b3480156101ee57600080fd5b50610134610636565b34801561020357600080fd5b5061024d6004803603608081101561021a57600080fd5b5080356001600160a01b0316906020810135600290810b91604081013590910b90606001356001600160801b031661075d565b6040805192835260208301919091528051918290030190f35b34801561027257600080fd5b506101346004803603602081101561028957600080fd5b503563ffffffff166107f4565b3480156102a257600080fd5b506102ab610889565b6040805162ffffff9092168252519081900360200190f35b3480156102cf57600080fd5b506102d861088f565b604080516001600160a01b039092168252519081900360200190f35b604080517f1698ee820000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301528481166024830152610bb860448301529151600092839290881691631698ee8291606480820192602092909190829003018186803b15801561036c57600080fd5b505afa158015610380573d6000803e3d6000fd5b505050506040513d602081101561039657600080fd5b505190506001600160a01b0381166103f5576040805162461bcd60e51b815260206004820152600660248201527f5555435f50410000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8215610444576000805461042a908390760100000000000000000000000000000000000000000000900463ffffffff166108ae565b90506104408161043986610c23565b8888610c78565b9250505b50949350505050565b610455610da6565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100006001600160a01b0384169081029190911790915560408051338152602081019290925280517f6aef1fb5b23d0e109fc7f2b0601019e1edbacd177e31a441ec8548e8dd14f0f79281900390910190a150565b6000806000806000886001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561051257600080fd5b505afa158015610526573d6000803e3d6000fd5b505050506040513d602081101561053c57600080fd5b5051604080517f3850c7bd00000000000000000000000000000000000000000000000000000000815290519192506000916001600160a01b038c1691633850c7bd9160048083019260e0929190829003018186803b15801561059d57600080fd5b505afa1580156105b1573d6000803e3d6000fd5b505050506040513d60e08110156105c757600080fd5b5051905060006105d68a610e0d565b905060006105e48285611182565b90506105fa84820382838785018e8e898b6111ce565b929f919e509c50909a5098505050505050505050565b600054760100000000000000000000000000000000000000000000900463ffffffff1681565b600054610100900460ff166106515760005460ff1615610659565b6106596112cb565b6106945760405162461bcd60e51b815260040180806020018281038252602e815260200180611c10602e913960400191505060405180910390fd5b600054610100900460ff161580156106dd57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0061ff0019909116610100171660011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16336201000002177fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff1677070800000000000000000000000000000000000000000000179055801561075a576000805461ff00191690555b50565b6000806000866001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561079b57600080fd5b505afa1580156107af573d6000803e3d6000fd5b505050506040513d60e08110156107c557600080fd5b505190506107e5816107d6886112dc565b6107df886112dc565b87611637565b92509250505b94509492505050565b6107fc610da6565b600080547fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff1676010000000000000000000000000000000000000000000063ffffffff84169081029190911790915560408051338152602081019290925280517f2a73f159056987ccddfa5e92b1b62b50947b9eefc23d41753305375bae1fffe09281900390910190a150565b610bb881565b6000546201000090046001600160a01b031681565b803b15155b919050565b600063ffffffff821661092a57826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156108f457600080fd5b505afa158015610908573d6000803e3d6000fd5b505050506040513d60e081101561091e57600080fd5b50602001519050610c1d565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061095957fe5b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061098257fe5b63ffffffff9092166020928302919091018201526040517f883bdbfd000000000000000000000000000000000000000000000000000000008152600481018281528351602483015283516000936001600160a01b0389169363883bdbfd938793909283926044019185820191028083838b5b83811015610a0c5781810151838201526020016109f4565b505050509050019250505060006040518083038186803b158015610a2f57600080fd5b505afa158015610a43573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040908152811015610a8a57600080fd5b8101908080516040519392919084640100000000821115610aaa57600080fd5b908301906020820185811115610abf57600080fd5b8251866020820283011164010000000082111715610adc57600080fd5b82525081516020918201928201910280838360005b83811015610b09578181015183820152602001610af1565b5050505090500160405260200180516040519392919084640100000000821115610b3257600080fd5b908301906020820185811115610b4757600080fd5b8251866020820283011164010000000082111715610b6457600080fd5b82525081516020918201928201910280838360005b83811015610b91578181015183820152602001610b79565b50505050905001604052505050509050600081600081518110610bb057fe5b602002602001015182600181518110610bc557fe5b60200260200101510390508463ffffffff168160060b81610be257fe5b05935060008160060b128015610c0c57508463ffffffff168160060b81610c0557fe5b0760060b15155b15610c1957600019909301925b5050505b92915050565b60007001000000000000000000000000000000008210610c745760405162461bcd60e51b8152600401808060200182810382526027815260200180611be96027913960400191505060405180910390fd5b5090565b600080610c84866112dc565b90506001600160801b036001600160a01b03821611610d1d576001600160a01b0380821680029084811690861610610ce857610ce37801000000000000000000000000000000000000000000000000876001600160801b0316836116d2565b610d15565b610d1581876001600160801b031678010000000000000000000000000000000000000000000000006116d2565b925050610444565b6000610d3c6001600160a01b03831680680100000000000000006116d2565b9050836001600160a01b0316856001600160a01b031610610d8157610d7c700100000000000000000000000000000000876001600160801b0316836116d2565b610440565b61044081876001600160801b03167001000000000000000000000000000000006116d2565b6000546201000090046001600160a01b03163314610e0b576040805162461bcd60e51b815260206004820152600660248201527f5555435f41430000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b565b60006401000276a36001600160a01b03831610801590610e49575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b610e9a576040805162461bcd60e51b815260206004820152600160248201527f5200000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c97908811961790941790921717909117171760808110610f3b57607f810383901c9150610f45565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc5568101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1461117357886001600160a01b0316611157826112dc565b6001600160a01b0316111561116c578161116e565b805b611175565b815b9998505050505050505050565b6000808260020b8460020b8161119457fe5b05905060008460020b1280156111bb57508260020b8460020b816111b457fe5b0760020b15155b156111c557600019015b90910292915050565b6000806000806111df8c8c87611782565b6111ea8a8a87611782565b60006111f9878e8e8c8c611980565b9050600061120a888d8d8d8d611980565b90506000826001600160801b0316118061122d57506000816001600160801b0316115b61127e576040805162461bcd60e51b815260206004820152600760248201527f5555435f42414c00000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b806001600160801b0316826001600160801b031611156112ac578d95508c94509092506001915082906112ba565b8b95508a9450925060029150825b505098509850985098945050505050565b60006112d6306108a4565b15905090565b60008060008360020b126112f3578260020b6112fb565b8260020b6000035b9050620d89e8811115611355576040805162461bcd60e51b815260206004820152600160248201527f5400000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006001821661137657700100000000000000000000000000000000611388565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156113bc576ffff97272373d413259a46990580e213a0260801c5b60048216156113db576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156113fa576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611419576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611438576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611457576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611476576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611496576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156114b6576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156114d6576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156114f6576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611516576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611536576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611556576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611576576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611597576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156115b7576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156115d6576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156115f3576b048a170391f7dc42444e8fa20260801c5b60008460020b131561160e57806000198161160a57fe5b0490505b640100000000810615611622576001611625565b60005b60ff16602082901c0192505050919050565b600080836001600160a01b0316856001600160a01b03161115611658579293925b846001600160a01b0316866001600160a01b0316116116835761167c8585856119ab565b91506107eb565b836001600160a01b0316866001600160a01b031610156116bc576116a88685856119ab565b91506116b5858785611a14565b90506107eb565b6116c7858585611a14565b905094509492505050565b600080806000198587098686029250828110908390030390508061170857600084116116fd57600080fd5b50829004905061177b565b80841161171457600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b8160020b8360020b126117dc576040805162461bcd60e51b815260206004820152600760248201527f5555435f544c5500000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618600284900b1215611855576040805162461bcd60e51b815260206004820152600960248201527f5555435f544c4d494e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b620d89e8600283900b13156118b1576040805162461bcd60e51b815260206004820152600960248201527f5555435f54414d41580000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8060020b8360020b816118c057fe5b0760020b15611916576040805162461bcd60e51b815260206004820152600760248201527f5555435f544c5300000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8060020b8260020b8161192557fe5b0760020b1561197b576040805162461bcd60e51b815260206004820152600760248201527f5555435f54555300000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b505050565b600061199f8661198f876112dc565b611998876112dc565b8686611a68565b90505b95945050505050565b6000826001600160a01b0316846001600160a01b031611156119cb579192915b836001600160a01b0316611a04606060ff16846001600160801b0316901b8686036001600160a01b0316866001600160a01b03166116d2565b81611a0b57fe5b04949350505050565b6000826001600160a01b0316846001600160a01b03161115611a34579192915b611a60826001600160801b03168585036001600160a01b03166c010000000000000000000000006116d2565b949350505050565b6000836001600160a01b0316856001600160a01b03161115611a88579293925b846001600160a01b0316866001600160a01b031611611ab357611aac858585611b20565b90506119a2565b836001600160a01b0316866001600160a01b03161015611b15576000611ada878686611b20565b90506000611ae9878986611b8c565b9050806001600160801b0316826001600160801b031610611b0a5780611b0c565b815b925050506119a2565b61199f858584611b8c565b6000826001600160a01b0316846001600160a01b03161115611b40579192915b6000611b6c856001600160a01b0316856001600160a01b03166c010000000000000000000000006116d2565b90506119a2611b8784838888036001600160a01b03166116d2565b611bd2565b6000826001600160a01b0316846001600160a01b03161115611bac579192915b611a60611b87836c010000000000000000000000008787036001600160a01b03166116d2565b806001600160801b03811681146108a957600080fdfe53616665436173743a2076616c756520646f65736e27742066697420696e203132382062697473496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564a2646970667358221220fd2abaab949a2721edb5e6bb9d70b9f84055ab40ea4dad0da9a1021ff1bee37464736f6c63430007060033496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564