60806040523480156200001157600080fd5b50604080518082018252600a81526905374616b6520733432360b41b6020808301918252835180850190945260048452630733432360e41b90840152815191929162000060916003916200007f565b508051620000769060049060208401906200007f565b50505062000162565b8280546200008d9062000125565b90600052602060002090601f016020900481019282620000b15760008555620000fc565b82601f10620000cc57805160ff1916838001178555620000fc565b82800160010185558215620000fc579182015b82811115620000fc578251825591602001919060010190620000df565b506200010a9291506200010e565b5090565b5b808211156200010a57600081556001016200010f565b600181811c908216806200013a57607f821691505b602082108114156200015c57634e487b7160e01b600052602260045260246000fd5b50919050565b6113e580620001726000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806340510e72116100a257806395d89b411161007157806395d89b411461023f578063a457c2d714610247578063a9059cbb1461025a578063b8b0f4501461026d578063dd62ed3e1461028057600080fd5b806340510e72146101ef578063500ac49d146101f957806370a082311461020c578063888632661461021f57600080fd5b806322d41740116100e957806322d417401461017c57806323b872dd146101a7578063313ce567146101ba57806336138920146101c957806339509351146101dc57600080fd5b8063052712461461011b57806306fdde0314610125578063095ea7b31461014357806318160ddd14610166575b600080fd5b6101236102b9565b005b61012d610357565b60405161013a91906110f9565b60405180910390f35b610156610151366004611166565b6103e9565b604051901515815260200161013a565b61016e610400565b60405190815260200161013a565b60055461018f906001600160a01b031681565b6040516001600160a01b03909116815260200161013a565b6101566101b5366004611192565b610483565b6040516012815260200161013a565b6101236101d73660046111d3565b610592565b6101566101ea366004611166565b6107e3565b60075461016e9081565b61012361020736600461122e565b61081f565b61016e61021a3660046111d3565b610a4e565b61016e61022d3660046111d3565b60066020526000908152604090205481565b61012d610ade565b610156610255366004611166565b610aed565b610156610268366004611166565b610b86565b61012361027b36600461122e565b610c14565b61016e61028e36600461127a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b0316156103175760405162461bcd60e51b815260206004820181905260248201527f5374616b696e6720506f6f6c20686173206265656e207265676973746572656460448201526064015b60405180910390fd5b600580546001600160a01b031916339081179091556040517f2ad0cb57e49b77afcdce6a998e7b9ba7fcaefc65947b952512b443cffe7c686690600090a2565b606060038054610366906112b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610392906112b3565b80156103df5780601f106103b4576101008083540402835291602001916103df565b820191906000526020600020905b8154815290600101906020018083116103c257829003601f168201915b5050505050905090565b60006103f6338484610d63565b5060015b92915050565b60055460405163e294d5d360e01b815260075460048201526000916001600160a01b03169063e294d5d39060240160206040518083038186803b15801561044657600080fd5b505afa15801561045a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047e91906112ee565b905090565b6001600160a01b038084166000908152600160209081526040808320938616835292905290812054828110156104ef5760405162461bcd60e51b81526020600482015260116024820152706578636565647320616c6c6f77616e636560781b604482015260640161030e565b6104fc8533858403610d63565b600554604051639da8e18360e01b8152600481018590526000916001600160a01b031690639da8e1839060240160206040518083038186803b15801561054157600080fd5b505afa158015610555573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105799190611307565b9050610586868683610e87565b50600195945050505050565b6005546040805163084c71a360e21b815290516000926001600160a01b031691632131c68c916004808301926020929190829003018186803b1580156105d757600080fd5b505afa1580156105eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060f919061132b565b9050806001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b15801561064a57600080fd5b505afa15801561065e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610682919061132b565b6001600160a01b0316336001600160a01b0316146106db5760405162461bcd60e51b81526020600482015260166024820152754f6e6c792061646d696e2063616e206d69677261746560501b604482015260640161030e565b806001600160a01b031663c690c59f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561071457600080fd5b505afa158015610728573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074c9190611348565b6107985760405162461bcd60e51b815260206004820152601d60248201527f44414f206973206e6f74206174206d6967726174696f6e207374617465000000604482015260640161030e565b600580546001600160a01b0319166001600160a01b0384169081179091556040517fffa78fbfbea2eac0ed453036712a1f665aa5f15802376a05dea9c0a29ac7fb3a90600090a25050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103f691859061081a908690611380565b610d63565b6005546001600160a01b0316331461086d5760405162461bcd60e51b815260206004820152601160248201527013db9b1e4814dd185ada5b99c8141bdbdb607a1b604482015260640161030e565b6001600160a01b0382166108bd5760405162461bcd60e51b81526020600482015260176024820152761c1c9bda1a589a5d1959081b9d5b1b081858d8dbdd5b9d604a1b604482015260640161030e565b60408051602081019091526007548152600019906108db908361106d565b136109285760405162461bcd60e51b815260206004820152601d60248201527f6578636565647320746f74616c20646973636f756e7420666163746f72000000604482015260640161030e565b6001600160a01b03821660009081526006602090815260409182902082519182019092529054815260001961095d828461106d565b1361099c5760405162461bcd60e51b815260206004820152600f60248201526e657863656564732062616c616e636560881b604482015260640161030e565b6001600160a01b0383166000908152600660209081526040918290208251918201909252905481526109ce908361109e565b6001600160a01b0384166000908152600660209081526040918290209251909255805191820190526007548152610a05908361109e565b5160075581516040519081526001600160a01b038416907fcdcf24e0acbbcfdb94fea252b4f9d8d2f9438404a9ccf602491f9ef9f09f0e0b9060200160405180910390a2505050565b6005546001600160a01b03828116600090815260066020526040808220905163e294d5d360e01b8152905460048201529092919091169063e294d5d39060240160206040518083038186803b158015610aa657600080fd5b505afa158015610aba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fa91906112ee565b606060048054610366906112b3565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610b6f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161030e565b610b7c3385858403610d63565b5060019392505050565b600554604051639da8e18360e01b81526004810183905260009182916001600160a01b0390911690639da8e1839060240160206040518083038186803b158015610bcf57600080fd5b505afa158015610be3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c079190611307565b9050610b7c338583610e87565b6005546001600160a01b03163314610c625760405162461bcd60e51b815260206004820152601160248201527013db9b1e4814dd185ada5b99c8141bdbdb607a1b604482015260640161030e565b6001600160a01b038216610cb25760405162461bcd60e51b81526020600482015260176024820152761c1c9bda1a589a5d1959081b9d5b1b081858d8dbdd5b9d604a1b604482015260640161030e565b6001600160a01b038216600090815260066020908152604091829020825191820190925290548152610ce490826110d0565b6001600160a01b0383166000908152600660209081526040918290209251909255805191820190526007548152610d1b90826110d0565b5160075580516040519081526001600160a01b038316907fd03b0c91aa32a034094304d3998df273e2d09546617c92aba59a03dd97bc553a9060200160405180910390a25050565b6001600160a01b038316610dc55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161030e565b6001600160a01b038216610e265760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161030e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ed35760405162461bcd60e51b815260206004820152601360248201527273656e646572206e756c6c206164647265737360681b604482015260640161030e565b6001600160a01b038216610f225760405162461bcd60e51b8152602060048201526016602482015275726563697069656e74206e756c6c206164647265737360501b604482015260640161030e565b6001600160a01b038316600090815260066020908152604091829020825191820190925290548152600019610f57828461106d565b13610f965760405162461bcd60e51b815260206004820152600f60248201526e657863656564732062616c616e636560881b604482015260640161030e565b6001600160a01b038416600090815260066020908152604091829020825191820190925290548152610fc8908361109e565b6001600160a01b0380861660009081526006602090815260408083209451909455918616815282902082519182019092529054815261100790836110d0565b6001600160a01b03808516600081815260066020526040908190209351909355845192519092918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9161105f91815260200190565b60405180910390a350505050565b80518251600091111561108357506000196103fa565b815183511115611095575060016103fa565b50600092915050565b60408051602081019091526000815260408051602081019091528251845182916110c791611398565b90529392505050565b60408051602081019091526000815260408051602081019091528251845182916110c791611380565b600060208083528351808285015260005b818110156111265785810183015185820160400152820161110a565b81811115611138576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461116357600080fd5b50565b6000806040838503121561117957600080fd5b82356111848161114e565b946020939093013593505050565b6000806000606084860312156111a757600080fd5b83356111b28161114e565b925060208401356111c28161114e565b929592945050506040919091013590565b6000602082840312156111e557600080fd5b81356111f08161114e565b9392505050565b6040516020810167ffffffffffffffff8111828210171561122857634e487b7160e01b600052604160045260246000fd5b60405290565b600080828403604081121561124257600080fd5b833561124d8161114e565b92506020601f198201121561126157600080fd5b5061126a6111f7565b6020939093013583525092909150565b6000806040838503121561128d57600080fd5b82356112988161114e565b915060208301356112a88161114e565b809150509250929050565b600181811c908216806112c757607f821691505b602082108114156112e857634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561130057600080fd5b5051919050565b60006020828403121561131957600080fd5b6113216111f7565b9151825250919050565b60006020828403121561133d57600080fd5b81516111f08161114e565b60006020828403121561135a57600080fd5b815180151581146111f057600080fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156113935761139361136a565b500190565b6000828210156113aa576113aa61136a565b50039056fea26469706673582212201e3b0baea81fad48cc893b2e07da82453e3b4b0927efbd615cdfecd5c1b04e7164736f6c63430008090033