0x6080604052600436106102135760003560e01c806378109e5411610118578063a8aa1b31116100a0578063d24c6e831161006f578063d24c6e83146105e4578063dd62ed3e14610604578063ded1e4381461064a578063f2fde38b1461066a578063f887ea401461068a57600080fd5b8063a8aa1b3114610564578063a9059cbb14610584578063b2bdfa7b146105a4578063cec10c11146105c457600080fd5b80638a4068dd116100e75780638a4068dd146104cd5780638a8c523c146104e25780638da5cb5b146104f757806395d89b411461051557806397613b281461054457600080fd5b806378109e541461045a5780637c519ffb146104705780637d1db4a514610485578063893d20e81461049b57600080fd5b8063313ce5671161019b5780636ddd17131161016a5780636ddd1713146103b957806370a08231146103da578063715018a614610410578063751039fc1461042557806377b54bad1461043a57600080fd5b8063313ce567146103485780635526566914610364578063571ac8b0146103795780635d83e1d51461039957600080fd5b806318160ddd116101e257806318160ddd146102bb5780631df4ccfc146102d057806323b872dd146102e65780632ad756721461030657806330c9a6a01461032857600080fd5b80630445b6671461021f57806306fdde031461024857806308fd3d051461026a578063095ea7b31461029b57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b50610235601e5481565b6040519081526020015b60405180910390f35b34801561025457600080fd5b5061025d6106aa565b60405161023f9190611ca1565b34801561027657600080fd5b50601d5461028b90600160a01b900460ff1681565b604051901515815260200161023f565b3480156102a757600080fd5b5061028b6102b6366004611d0b565b6106ca565b3480156102c757600080fd5b50600354610235565b3480156102dc57600080fd5b50610235600f5481565b3480156102f257600080fd5b5061028b610301366004611d35565b610737565b34801561031257600080fd5b50610326610321366004611d71565b6107f9565b005b34801561033457600080fd5b50610235610343366004611dd6565b6108da565b34801561035457600080fd5b506040516009815260200161023f565b34801561037057600080fd5b50610235610921565b34801561038557600080fd5b5061028b610394366004611def565b610992565b3480156103a557600080fd5b506103266103b4366004611dd6565b6109a0565b3480156103c557600080fd5b50601d5461028b90600160a81b900460ff1681565b3480156103e657600080fd5b506102356103f5366004611def565b6001600160a01b031660009081526006602052604090205490565b34801561041c57600080fd5b50610326610a2e565b34801561043157600080fd5b50610326610aa2565b34801561044657600080fd5b5061028b610455366004611d0b565b610ad9565b34801561046657600080fd5b5061023560055481565b34801561047c57600080fd5b50610326610c70565b34801561049157600080fd5b5061023560045481565b3480156104a757600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b3480156104d957600080fd5b50610326610cad565b3480156104ee57600080fd5b50610326610ce9565b34801561050357600080fd5b506000546001600160a01b03166104b5565b34801561052157600080fd5b5060408051808201909152600681526542414249455360d01b602082015261025d565b34801561055057600080fd5b5061032661055f366004611e18565b610d28565b34801561057057600080fd5b50601d546104b5906001600160a01b031681565b34801561059057600080fd5b5061028b61059f366004611d0b565b610dbb565b3480156105b057600080fd5b506000546104b5906001600160a01b031681565b3480156105d057600080fd5b506103266105df366004611e36565b610dc8565b3480156105f057600080fd5b506103266105ff366004611e62565b610e03565b34801561061057600080fd5b5061023561061f366004611ea5565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561065657600080fd5b5061028b610665366004611ed8565b610ed1565b34801561067657600080fd5b50610326610685366004611def565b610ee5565b34801561069657600080fd5b50601b546104b5906001600160a01b031681565b60606040518060600160405280603181526020016120b060319139905090565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107259086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383166000908152600760209081526040808320338452909152812054600019146107e4576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526007825283812033825290915291909120546107bf918490610fcf565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b6107ef848484611009565b90505b9392505050565b6000546001600160a01b0316331461082c5760405162461bcd60e51b815260040161082390611efa565b60405180910390fd5b601480546001600160a01b038781166001600160a01b031992831617909255601580548784169083168117909155601680548785169084168117909155601880548786169085168117909155601780549587169590941685179093556040805192835260208301949094529281019190915260608101919091527f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b159060800160405180910390a15050505050565b60006107316108e7610921565b601d546001600160a01b031660009081526006602052604090205461091b90610914906002905b9061136c565b859061136c565b906113ee565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead60009081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2254600354919261098d9290916109879190611430565b90611430565b905090565b6000610731826000196106ca565b6000546001600160a01b031633146109ca5760405162461bcd60e51b815260040161082390611efa565b60018110156109d857600080fd5b6103e8816003546109e99190611f45565b6109f39190611f5c565b60058190556040519081527f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be519060200160405180910390a150565b6000546001600160a01b03163314610a585760405162461bcd60e51b815260040161082390611efa565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610acc5760405162461bcd60e51b815260040161082390611efa565b6003546004819055600555565b6000306001600160a01b03841603610b445760405162461bcd60e51b815260206004820152602860248201527f746f6b656e416464726573732063616e206e6f7420626520746865206e6174696044820152673b32903a37b5b2b760c11b6064820152608401610823565b81600003610bb7576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb49190611f7e565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160145460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303816000875af1158015610c4c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f29190611f97565b6000546001600160a01b03163314610c9a5760405162461bcd60e51b815260040161082390611efa565b6102716011556103e86012819055601355565b6014546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610ce6573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610d135760405162461bcd60e51b815260040161082390611efa565b601d805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610d525760405162461bcd60e51b815260040161082390611efa565b601d805460ff60a81b1916600160a81b84151581029190911791829055601e8390556040805184815260ff9290930491909116151560208301527f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60910160405180910390a15050565b60006107f2338484611009565b6000546001600160a01b03163314610df25760405162461bcd60e51b815260040161082390611efa565b601191909155601291909155601355565b6000546001600160a01b03163314610e2d5760405162461bcd60e51b815260040161082390611efa565b600a869055600d859055600b849055600c839055600e829055610e5e82610e58858188818c8c611472565b90611472565b600f556010819055610e71600282611f5c565b600f5410610ec15760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e203530250000006044820152606401610823565b610ec96114d1565b505050505050565b600082610edd836108da565b119392505050565b6000546001600160a01b03163314610f0f5760405162461bcd60e51b815260040161082390611efa565b6001600160a01b038116610f745760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610823565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008184841115610ff35760405162461bcd60e51b81526004016108239190611ca1565b5060006110008486611fb4565b95945050505050565b601f5460009060ff16156110295761102284848461156c565b90506107f2565b6001600160a01b03841660009081526001602052604090205460ff1615801561106b57506001600160a01b03831660009081526001602052604090205460ff16155b156110c057601d54600160a01b900460ff166110c05760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610823565b6001600160a01b03841660009081526001602052604090205460ff161580156110f257506001600160a01b0383163014155b801561110957506001600160a01b03831661dead14155b80156111235750601d546001600160a01b03848116911614155b801561113d57506018546001600160a01b03848116911614155b801561115757506015546001600160a01b03848116911614155b801561117c57506001600160a01b03831660009081526009602052604090205460ff16155b1561121d576001600160a01b0383166000908152600660205260409020546005546111a78483611fc7565b111561121b5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610823565b505b6112278483611640565b61122f6116ad565b1561123c5761123c611703565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526006909152919091205461128e918490610fcf565b6001600160a01b038516600090815260066020908152604080832093909355600890529081205460ff16806112db57506001600160a01b03841660009081526008602052604090205460ff165b6112ef576112ea858486611aea565b6112f1565b825b6001600160a01b0385166000908152600660205260409020549091506113179082611472565b6001600160a01b038086166000818152600660205260409081902093909355915190871690600080516020612090833981519152906113599085815260200190565b60405180910390a3506001949350505050565b60008260000361137e57506000610731565b600061138a8385611f45565b9050826113978583611f5c565b146107f25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610823565b60006107f283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c73565b60006107f283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fcf565b60008061147f8385611fc7565b9050838110156107f25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610823565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b93280061150e606461091b601254600f5461136c90919063ffffffff16565b61152a606461091b601154600f5461136c90919063ffffffff16565b611546606461091b601354600f5461136c90919063ffffffff16565b6040805160ff9485168152928416602084015292168183015290519081900360600190a1565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546115bd918490610fcf565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546115ec9083611472565b6001600160a01b0380851660008181526006602052604090819020939093559151908616906000805160206120908339815191529061162e9086815260200190565b60405180910390a35060019392505050565b6004548111158061166957506001600160a01b03821660009081526009602052604090205460ff165b6116a95760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610823565b5050565b601d546000906001600160a01b031633148015906116ce5750601f5460ff16155b80156116e35750601d54600160a81b900460ff165b801561098d575050601e5430600090815260066020526040902054101590565b601f805460ff19166001179055601954601a5460009161172291610ed1565b61172e57600a54611731565b60005b90506000611755600261091b600f5461091b86601e5461136c90919063ffffffff16565b9050600061176e82601e5461143090919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106117a8576117a8611fda565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106117d9576117d9611fda565b6001600160a01b039283166020918202929092010152601b5460405163791ac94760e01b81524792919091169063791ac94790611823908690600090879030904290600401611ff0565b600060405180830381600087803b15801561183d57600080fd5b505af1158015611851573d6000803e3d6000fd5b50505050600061186a824761143090919063ffffffff16565b9050600061188561187c8860026113ee565b600f5490611430565b9050600061189a600261091b8481878d61136c565b905060006118b78361091b600b548761136c90919063ffffffff16565b905060006118d48461091b600d548861136c90919063ffffffff16565b905060006118f18561091b600c548961136c90919063ffffffff16565b6015546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114611943576040519150601f19603f3d011682016040523d82523d6000602084013e611948565b606091505b50506016546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611998576040519150601f19603f3d011682016040523d82523d6000602084013e61199d565b606091505b50506017546040519192506001600160a01b0316908490600081818185875af1925050503d80600081146119ed576040519150601f19603f3d011682016040523d82523d6000602084013e6119f2565b606091505b5060009250508b159050611ad257601b5460145460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611a70573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a959190612061565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601f805460ff1916905550505050505050505050565b601354601d54600091906001600160a01b0390811690841603611b105750601154611b2b565b601d546001600160a01b0390811690861603611b2b57506012545b6000611b586010546064611b3f9190611f45565b61091b8461090e600f548a61136c90919063ffffffff16565b90506000611b77600f5461091b600e548561136c90919063ffffffff16565b90506000611b858383611430565b30600090815260066020526040902054909150611ba29082611472565b30600090815260066020526040808220929092556018546001600160a01b031681522054611bd09083611472565b6018546001600160a01b0390811660009081526006602090815260409182902093909355518381523092918b1691600080516020612090833981519152910160405180910390a38115611c5d57600354611c2a9083611430565b6003556040518281526000906001600160a01b038a16906000805160206120908339815191529060200160405180910390a35b611c678784611430565b98975050505050505050565b60008183611c945760405162461bcd60e51b81526004016108239190611ca1565b5060006110008486611f5c565b600060208083528351808285015260005b81811015611cce57858101830151858201604001528201611cb2565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611d0657600080fd5b919050565b60008060408385031215611d1e57600080fd5b611d2783611cef565b946020939093013593505050565b600080600060608486031215611d4a57600080fd5b611d5384611cef565b9250611d6160208501611cef565b9150604084013590509250925092565b600080600080600060a08688031215611d8957600080fd5b611d9286611cef565b9450611da060208701611cef565b9350611dae60408701611cef565b9250611dbc60608701611cef565b9150611dca60808701611cef565b90509295509295909350565b600060208284031215611de857600080fd5b5035919050565b600060208284031215611e0157600080fd5b6107f282611cef565b8015158114610ce657600080fd5b60008060408385031215611e2b57600080fd5b8235611d2781611e0a565b600080600060608486031215611e4b57600080fd5b505081359360208301359350604090920135919050565b60008060008060008060c08789031215611e7b57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60008060408385031215611eb857600080fd5b611ec183611cef565b9150611ecf60208401611cef565b90509250929050565b60008060408385031215611eeb57600080fd5b50508035926020909101359150565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761073157610731611f2f565b600082611f7957634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611f9057600080fd5b5051919050565b600060208284031215611fa957600080fd5b81516107f281611e0a565b8181038181111561073157610731611f2f565b8082018082111561073157610731611f2f565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120405784516001600160a01b03168352938301939183019160010161201b565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561207657600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef42616279324d61644d6178456c656374726963426f6f676f6c6158727058696e75737461724c6f62616d6143756d496e75a264697066735822122011ec50d8ff9d81f7a33127112a4a83e1176b807a6a8ad404d2bae8d18ed69f6164736f6c63430008130033
0x6080604052620000126009600a62000670565b62000022906349703b0962000681565b600381905562000043906064906200003c90600162000440565b90620004d7565b6004556003546200005e906064906200003c90600162000440565b6005556001600a556002600b556001600c556000600d556000600e55600e54600c54600a54600b54600d546200009591906200069b565b620000a191906200069b565b620000ad91906200069b565b620000b991906200069b565b600f5560646010819055601181905560128190556013819055601e601955601a55601d805461ffff60a01b1916600160a81b1790556003546103e8906200010290604662000681565b6200010e9190620006b1565b601e553480156200011e57600080fd5b50600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015620001de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002049190620006d4565b600280546001600160a01b0319166001600160a01b03928316179055601b546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000263573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002899190620006d4565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af1158015620002db573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003019190620006d4565b601d80546001600160a01b039283166001600160a01b031991821681178355601c805483169091179055306000818152600760209081526040808320601b5488168452825280832060001990553380845260088352818420805460ff1990811660019081179092556009855283862080548216831790559754891685528285208054891682179055601580549099168552828520805489168217905594845281842080549097169094179095556014805485168417905585548416734d82c48ee16159211b93212b90c5c18a962afa571790955560168054841683179055601780548416831790556018805490931661dead179092556003548183526006855283832081905592519283529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200074f565b6000826000036200045457506000620004d1565b600062000462838562000681565b905082620004718583620006b1565b14620004ce5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b6000620004ce83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200052160201b60201c565b60008183620005455760405162461bcd60e51b8152600401620004c59190620006ff565b506000620005548486620006b1565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005b45781600019048211156200059857620005986200055d565b80851615620005a657918102915b93841c939080029062000578565b509250929050565b600082620005cd57506001620004d1565b81620005dc57506000620004d1565b8160018114620005f55760028114620006005762000620565b6001915050620004d1565b60ff8411156200061457620006146200055d565b50506001821b620004d1565b5060208310610133831016604e8410600b841016171562000645575081810a620004d1565b62000651838362000573565b80600019048211156200066857620006686200055d565b029392505050565b6000620004ce60ff841683620005bc565b8082028115828204841417620004d157620004d16200055d565b80820180821115620004d157620004d16200055d565b600082620006cf57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620006e757600080fd5b81516001600160a01b0381168114620004ce57600080fd5b600060208083528351808285015260005b818110156200072e5785810183015185820160400152820162000710565b506000604082860101526040601f19601f8301168501019250505092915050565b612116806200075f6000396000f3fe6080604052600436106102135760003560e01c806378109e5411610118578063a8aa1b31116100a0578063d24c6e831161006f578063d24c6e83146105e4578063dd62ed3e14610604578063ded1e4381461064a578063f2fde38b1461066a578063f887ea401461068a57600080fd5b8063a8aa1b3114610564578063a9059cbb14610584578063b2bdfa7b146105a4578063cec10c11146105c457600080fd5b80638a4068dd116100e75780638a4068dd146104cd5780638a8c523c146104e25780638da5cb5b146104f757806395d89b411461051557806397613b281461054457600080fd5b806378109e541461045a5780637c519ffb146104705780637d1db4a514610485578063893d20e81461049b57600080fd5b8063313ce5671161019b5780636ddd17131161016a5780636ddd1713146103b957806370a08231146103da578063715018a614610410578063751039fc1461042557806377b54bad1461043a57600080fd5b8063313ce567146103485780635526566914610364578063571ac8b0146103795780635d83e1d51461039957600080fd5b806318160ddd116101e257806318160ddd146102bb5780631df4ccfc146102d057806323b872dd146102e65780632ad756721461030657806330c9a6a01461032857600080fd5b80630445b6671461021f57806306fdde031461024857806308fd3d051461026a578063095ea7b31461029b57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b50610235601e5481565b6040519081526020015b60405180910390f35b34801561025457600080fd5b5061025d6106aa565b60405161023f9190611ca1565b34801561027657600080fd5b50601d5461028b90600160a01b900460ff1681565b604051901515815260200161023f565b3480156102a757600080fd5b5061028b6102b6366004611d0b565b6106ca565b3480156102c757600080fd5b50600354610235565b3480156102dc57600080fd5b50610235600f5481565b3480156102f257600080fd5b5061028b610301366004611d35565b610737565b34801561031257600080fd5b50610326610321366004611d71565b6107f9565b005b34801561033457600080fd5b50610235610343366004611dd6565b6108da565b34801561035457600080fd5b506040516009815260200161023f565b34801561037057600080fd5b50610235610921565b34801561038557600080fd5b5061028b610394366004611def565b610992565b3480156103a557600080fd5b506103266103b4366004611dd6565b6109a0565b3480156103c557600080fd5b50601d5461028b90600160a81b900460ff1681565b3480156103e657600080fd5b506102356103f5366004611def565b6001600160a01b031660009081526006602052604090205490565b34801561041c57600080fd5b50610326610a2e565b34801561043157600080fd5b50610326610aa2565b34801561044657600080fd5b5061028b610455366004611d0b565b610ad9565b34801561046657600080fd5b5061023560055481565b34801561047c57600080fd5b50610326610c70565b34801561049157600080fd5b5061023560045481565b3480156104a757600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b3480156104d957600080fd5b50610326610cad565b3480156104ee57600080fd5b50610326610ce9565b34801561050357600080fd5b506000546001600160a01b03166104b5565b34801561052157600080fd5b5060408051808201909152600681526542414249455360d01b602082015261025d565b34801561055057600080fd5b5061032661055f366004611e18565b610d28565b34801561057057600080fd5b50601d546104b5906001600160a01b031681565b34801561059057600080fd5b5061028b61059f366004611d0b565b610dbb565b3480156105b057600080fd5b506000546104b5906001600160a01b031681565b3480156105d057600080fd5b506103266105df366004611e36565b610dc8565b3480156105f057600080fd5b506103266105ff366004611e62565b610e03565b34801561061057600080fd5b5061023561061f366004611ea5565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561065657600080fd5b5061028b610665366004611ed8565b610ed1565b34801561067657600080fd5b50610326610685366004611def565b610ee5565b34801561069657600080fd5b50601b546104b5906001600160a01b031681565b60606040518060600160405280603181526020016120b060319139905090565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107259086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383166000908152600760209081526040808320338452909152812054600019146107e4576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526007825283812033825290915291909120546107bf918490610fcf565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b6107ef848484611009565b90505b9392505050565b6000546001600160a01b0316331461082c5760405162461bcd60e51b815260040161082390611efa565b60405180910390fd5b601480546001600160a01b038781166001600160a01b031992831617909255601580548784169083168117909155601680548785169084168117909155601880548786169085168117909155601780549587169590941685179093556040805192835260208301949094529281019190915260608101919091527f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b159060800160405180910390a15050505050565b60006107316108e7610921565b601d546001600160a01b031660009081526006602052604090205461091b90610914906002905b9061136c565b859061136c565b906113ee565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead60009081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2254600354919261098d9290916109879190611430565b90611430565b905090565b6000610731826000196106ca565b6000546001600160a01b031633146109ca5760405162461bcd60e51b815260040161082390611efa565b60018110156109d857600080fd5b6103e8816003546109e99190611f45565b6109f39190611f5c565b60058190556040519081527f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be519060200160405180910390a150565b6000546001600160a01b03163314610a585760405162461bcd60e51b815260040161082390611efa565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610acc5760405162461bcd60e51b815260040161082390611efa565b6003546004819055600555565b6000306001600160a01b03841603610b445760405162461bcd60e51b815260206004820152602860248201527f746f6b656e416464726573732063616e206e6f7420626520746865206e6174696044820152673b32903a37b5b2b760c11b6064820152608401610823565b81600003610bb7576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb49190611f7e565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160145460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303816000875af1158015610c4c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f29190611f97565b6000546001600160a01b03163314610c9a5760405162461bcd60e51b815260040161082390611efa565b6102716011556103e86012819055601355565b6014546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610ce6573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610d135760405162461bcd60e51b815260040161082390611efa565b601d805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610d525760405162461bcd60e51b815260040161082390611efa565b601d805460ff60a81b1916600160a81b84151581029190911791829055601e8390556040805184815260ff9290930491909116151560208301527f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60910160405180910390a15050565b60006107f2338484611009565b6000546001600160a01b03163314610df25760405162461bcd60e51b815260040161082390611efa565b601191909155601291909155601355565b6000546001600160a01b03163314610e2d5760405162461bcd60e51b815260040161082390611efa565b600a869055600d859055600b849055600c839055600e829055610e5e82610e58858188818c8c611472565b90611472565b600f556010819055610e71600282611f5c565b600f5410610ec15760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e203530250000006044820152606401610823565b610ec96114d1565b505050505050565b600082610edd836108da565b119392505050565b6000546001600160a01b03163314610f0f5760405162461bcd60e51b815260040161082390611efa565b6001600160a01b038116610f745760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610823565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008184841115610ff35760405162461bcd60e51b81526004016108239190611ca1565b5060006110008486611fb4565b95945050505050565b601f5460009060ff16156110295761102284848461156c565b90506107f2565b6001600160a01b03841660009081526001602052604090205460ff1615801561106b57506001600160a01b03831660009081526001602052604090205460ff16155b156110c057601d54600160a01b900460ff166110c05760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610823565b6001600160a01b03841660009081526001602052604090205460ff161580156110f257506001600160a01b0383163014155b801561110957506001600160a01b03831661dead14155b80156111235750601d546001600160a01b03848116911614155b801561113d57506018546001600160a01b03848116911614155b801561115757506015546001600160a01b03848116911614155b801561117c57506001600160a01b03831660009081526009602052604090205460ff16155b1561121d576001600160a01b0383166000908152600660205260409020546005546111a78483611fc7565b111561121b5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610823565b505b6112278483611640565b61122f6116ad565b1561123c5761123c611703565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526006909152919091205461128e918490610fcf565b6001600160a01b038516600090815260066020908152604080832093909355600890529081205460ff16806112db57506001600160a01b03841660009081526008602052604090205460ff165b6112ef576112ea858486611aea565b6112f1565b825b6001600160a01b0385166000908152600660205260409020549091506113179082611472565b6001600160a01b038086166000818152600660205260409081902093909355915190871690600080516020612090833981519152906113599085815260200190565b60405180910390a3506001949350505050565b60008260000361137e57506000610731565b600061138a8385611f45565b9050826113978583611f5c565b146107f25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610823565b60006107f283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c73565b60006107f283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fcf565b60008061147f8385611fc7565b9050838110156107f25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610823565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b93280061150e606461091b601254600f5461136c90919063ffffffff16565b61152a606461091b601154600f5461136c90919063ffffffff16565b611546606461091b601354600f5461136c90919063ffffffff16565b6040805160ff9485168152928416602084015292168183015290519081900360600190a1565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546115bd918490610fcf565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546115ec9083611472565b6001600160a01b0380851660008181526006602052604090819020939093559151908616906000805160206120908339815191529061162e9086815260200190565b60405180910390a35060019392505050565b6004548111158061166957506001600160a01b03821660009081526009602052604090205460ff165b6116a95760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610823565b5050565b601d546000906001600160a01b031633148015906116ce5750601f5460ff16155b80156116e35750601d54600160a81b900460ff165b801561098d575050601e5430600090815260066020526040902054101590565b601f805460ff19166001179055601954601a5460009161172291610ed1565b61172e57600a54611731565b60005b90506000611755600261091b600f5461091b86601e5461136c90919063ffffffff16565b9050600061176e82601e5461143090919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106117a8576117a8611fda565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106117d9576117d9611fda565b6001600160a01b039283166020918202929092010152601b5460405163791ac94760e01b81524792919091169063791ac94790611823908690600090879030904290600401611ff0565b600060405180830381600087803b15801561183d57600080fd5b505af1158015611851573d6000803e3d6000fd5b50505050600061186a824761143090919063ffffffff16565b9050600061188561187c8860026113ee565b600f5490611430565b9050600061189a600261091b8481878d61136c565b905060006118b78361091b600b548761136c90919063ffffffff16565b905060006118d48461091b600d548861136c90919063ffffffff16565b905060006118f18561091b600c548961136c90919063ffffffff16565b6015546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114611943576040519150601f19603f3d011682016040523d82523d6000602084013e611948565b606091505b50506016546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611998576040519150601f19603f3d011682016040523d82523d6000602084013e61199d565b606091505b50506017546040519192506001600160a01b0316908490600081818185875af1925050503d80600081146119ed576040519150601f19603f3d011682016040523d82523d6000602084013e6119f2565b606091505b5060009250508b159050611ad257601b5460145460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611a70573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a959190612061565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601f805460ff1916905550505050505050505050565b601354601d54600091906001600160a01b0390811690841603611b105750601154611b2b565b601d546001600160a01b0390811690861603611b2b57506012545b6000611b586010546064611b3f9190611f45565b61091b8461090e600f548a61136c90919063ffffffff16565b90506000611b77600f5461091b600e548561136c90919063ffffffff16565b90506000611b858383611430565b30600090815260066020526040902054909150611ba29082611472565b30600090815260066020526040808220929092556018546001600160a01b031681522054611bd09083611472565b6018546001600160a01b0390811660009081526006602090815260409182902093909355518381523092918b1691600080516020612090833981519152910160405180910390a38115611c5d57600354611c2a9083611430565b6003556040518281526000906001600160a01b038a16906000805160206120908339815191529060200160405180910390a35b611c678784611430565b98975050505050505050565b60008183611c945760405162461bcd60e51b81526004016108239190611ca1565b5060006110008486611f5c565b600060208083528351808285015260005b81811015611cce57858101830151858201604001528201611cb2565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611d0657600080fd5b919050565b60008060408385031215611d1e57600080fd5b611d2783611cef565b946020939093013593505050565b600080600060608486031215611d4a57600080fd5b611d5384611cef565b9250611d6160208501611cef565b9150604084013590509250925092565b600080600080600060a08688031215611d8957600080fd5b611d9286611cef565b9450611da060208701611cef565b9350611dae60408701611cef565b9250611dbc60608701611cef565b9150611dca60808701611cef565b90509295509295909350565b600060208284031215611de857600080fd5b5035919050565b600060208284031215611e0157600080fd5b6107f282611cef565b8015158114610ce657600080fd5b60008060408385031215611e2b57600080fd5b8235611d2781611e0a565b600080600060608486031215611e4b57600080fd5b505081359360208301359350604090920135919050565b60008060008060008060c08789031215611e7b57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60008060408385031215611eb857600080fd5b611ec183611cef565b9150611ecf60208401611cef565b90509250929050565b60008060408385031215611eeb57600080fd5b50508035926020909101359150565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761073157610731611f2f565b600082611f7957634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611f9057600080fd5b5051919050565b600060208284031215611fa957600080fd5b81516107f281611e0a565b8181038181111561073157610731611f2f565b8082018082111561073157610731611f2f565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120405784516001600160a01b03168352938301939183019160010161201b565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561207657600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef42616279324d61644d6178456c656374726963426f6f676f6c6158727058696e75737461724c6f62616d6143756d496e75a264697066735822122011ec50d8ff9d81f7a33127112a4a83e1176b807a6a8ad404d2bae8d18ed69f6164736f6c63430008130033