0x6080604052600436106100955760003560e01c8063b19385f711610059578063b19385f714610165578063b818f9e414610178578063e7cd4a0414610198578063f2fde38b146101b8578063f7ece0cf146101d857600080fd5b80631e13eee1146100a15780632d871b73146100d6578063372c12b1146100f6578063715018a6146101265780638da5cb5b1461013d57600080fd5b3661009c57005b600080fd5b3480156100ad57600080fd5b506100c16100bc366004610f01565b6101f8565b60405190151581526020015b60405180910390f35b3480156100e257600080fd5b506100c16100f1366004610f85565b6103d4565b34801561010257600080fd5b506100c1610111366004610fc7565b60016020526000908152604090205460ff1681565b34801561013257600080fd5b5061013b61045c565b005b34801561014957600080fd5b506000546040516001600160a01b0390911681526020016100cd565b6100c1610173366004610fe9565b610470565b34801561018457600080fd5b506100c1610193366004611055565b610704565b3480156101a457600080fd5b506100c16101b3366004610fc7565b6109b1565b3480156101c457600080fd5b5061013b6101d3366004610fc7565b6109e7565b3480156101e457600080fd5b506100c16101f3366004611055565b610a25565b3360009081526001602052604081205460ff166102305760405162461bcd60e51b8152600401610227906110ef565b60405180910390fd5b60005b858110156103c757600087878381811061024f5761024f611118565b90506020020160208101906102649190610fc7565b9050600085858481811061027a5761027a611118565b60200291909101359150506001600160a01b0382166102ef57804710156102b35760405162461bcd60e51b81526004016102279061112e565b6040516001600160a01b0388169082156108fc029083906000818181858888f193505050501580156102e9573d6000803e3d6000fd5b506103b2565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015610335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103599190611165565b10156103a75760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e7420746f6b656e2062616c616e63650000000000006044820152606401610227565b6103b2828883610c17565b505080806103bf90611194565b915050610233565b5060019695505050505050565b60006103de610d17565b60005b828110156104505760006001600086868581811061040157610401611118565b90506020020160208101906104169190610fc7565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061044881611194565b9150506103e1565b50600190505b92915050565b610464610d17565b61046e6000610d44565b565b600080805b858110156106d757600087878381811061049157610491611118565b90506020020160208101906104a69190610fc7565b9050333060008888868181106104be576104be611118565b905060200201359050600081116105175760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401610227565b6001600160a01b0384166105365761052f81876111ad565b95506106c0565b604051636eb1769f60e11b81526001600160a01b038481166004830152838116602483015282919086169063dd62ed3e90604401602060405180830381865afa158015610587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ab9190611165565b10156105f95760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e20616c6c6f77616e6365000000006044820152606401610227565b6040516370a0823160e01b81526001600160a01b0384811660048301528291908616906370a0823190602401602060405180830381865afa158015610642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106669190611165565b10156106b45760405162461bcd60e51b815260206004820152601f60248201527f496e73756666696369656e7420617574686f72697a65642062616c616e6365006044820152606401610227565b6106c084848484610d94565b5050505080806106cf90611194565b915050610475565b50804710156106f85760405162461bcd60e51b81526004016102279061112e565b50600195945050505050565b3360009081526001602052604081205460ff166107335760405162461bcd60e51b8152600401610227906110ef565b60005b868110156109a357600088888381811061075257610752611118565b90506020020160208101906107679190610fc7565b9050600087878481811061077d5761077d611118565b90506020020160208101906107929190610fc7565b90503060008787868181106107a9576107a9611118565b905060200201359050600081116108025760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401610227565b604051636eb1769f60e11b81526001600160a01b038481166004830152838116602483015282919086169063dd62ed3e90604401602060405180830381865afa158015610853573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190611165565b10156108c55760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e20616c6c6f77616e6365000000006044820152606401610227565b6040516370a0823160e01b81526001600160a01b0384811660048301528291908616906370a0823190602401602060405180830381865afa15801561090e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109329190611165565b10156109805760405162461bcd60e51b815260206004820152601f60248201527f496e73756666696369656e7420617574686f72697a65642062616c616e6365006044820152606401610227565b61098c84848484610d94565b50505050808061099b90611194565b915050610736565b506001979650505050505050565b60006109bb610d17565b506001600160a01b0381166000908152600160208190526040909120805460ff1916821790555b919050565b6109ef610d17565b6001600160a01b038116610a1957604051631e4fbdf760e01b815260006004820152602401610227565b610a2281610d44565b50565b3360009081526001602052604081205460ff16610a545760405162461bcd60e51b8152600401610227906110ef565b60005b868110156109a3576000888883818110610a7357610a73611118565b9050602002016020810190610a889190610fc7565b90506000878784818110610a9e57610a9e611118565b9050602002016020810190610ab39190610fc7565b90506000868685818110610ac957610ac9611118565b60200291909101359150506001600160a01b038316610b3e5780471015610b025760405162461bcd60e51b81526004016102279061112e565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610b38573d6000803e3d6000fd5b50610c01565b6040516370a0823160e01b815230600482015281906001600160a01b038516906370a0823190602401602060405180830381865afa158015610b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba89190611165565b1015610bf65760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e7420746f6b656e2062616c616e63650000000000006044820152606401610227565b610c01838383610c17565b5050508080610c0f90611194565b915050610a57565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610c7391906111c0565b6000604051808303816000865af19150503d8060008114610cb0576040519150601f19603f3d011682016040523d82523d6000602084013e610cb5565b606091505b5091509150818015610cdf575080511580610cdf575080806020019051810190610cdf91906111ef565b610d105760405162461bcd60e51b815260206004820152600260248201526114d560f21b6044820152606401610227565b5050505050565b6000546001600160a01b0316331461046e5760405163118cdaa760e01b8152336004820152602401610227565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610df891906111c0565b6000604051808303816000865af19150503d8060008114610e35576040519150601f19603f3d011682016040523d82523d6000602084013e610e3a565b606091505b5091509150818015610e64575080511580610e64575080806020019051810190610e6491906111ef565b610e965760405162461bcd60e51b815260206004820152600360248201526229aa2360e91b6044820152606401610227565b505050505050565b60008083601f840112610eb057600080fd5b50813567ffffffffffffffff811115610ec857600080fd5b6020830191508360208260051b8501011115610ee357600080fd5b9250929050565b80356001600160a01b03811681146109e257600080fd5b600080600080600060608688031215610f1957600080fd5b853567ffffffffffffffff80821115610f3157600080fd5b610f3d89838a01610e9e565b9097509550859150610f5160208901610eea565b94506040880135915080821115610f6757600080fd5b50610f7488828901610e9e565b969995985093965092949392505050565b60008060208385031215610f9857600080fd5b823567ffffffffffffffff811115610faf57600080fd5b610fbb85828601610e9e565b90969095509350505050565b600060208284031215610fd957600080fd5b610fe282610eea565b9392505050565b60008060008060408587031215610fff57600080fd5b843567ffffffffffffffff8082111561101757600080fd5b61102388838901610e9e565b9096509450602087013591508082111561103c57600080fd5b5061104987828801610e9e565b95989497509550505050565b6000806000806000806060878903121561106e57600080fd5b863567ffffffffffffffff8082111561108657600080fd5b6110928a838b01610e9e565b909850965060208901359150808211156110ab57600080fd5b6110b78a838b01610e9e565b909650945060408901359150808211156110d057600080fd5b506110dd89828a01610e9e565b979a9699509497509295939492505050565b6020808252600f908201526e139bdd081dda1a5d195b1a5cdd1959608a1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60208082526018908201527f496e73756666696369656e74204554482062616c616e63650000000000000000604082015260600190565b60006020828403121561117757600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000600182016111a6576111a661117e565b5060010190565b808201808211156104565761045661117e565b6000825160005b818110156111e157602081860181015185830152016111c7565b506000920191825250919050565b60006020828403121561120157600080fd5b81518015158114610fe257600080fdfea2646970667358221220e61ee5d0fe66efbcd63086cc084d3a350bf7455d80e2f764de3e002399765ddf64736f6c63430008140033
0x608060405234801561001057600080fd5b5060405161134438038061134483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b611247806100fd6000396000f3fe6080604052600436106100955760003560e01c8063b19385f711610059578063b19385f714610165578063b818f9e414610178578063e7cd4a0414610198578063f2fde38b146101b8578063f7ece0cf146101d857600080fd5b80631e13eee1146100a15780632d871b73146100d6578063372c12b1146100f6578063715018a6146101265780638da5cb5b1461013d57600080fd5b3661009c57005b600080fd5b3480156100ad57600080fd5b506100c16100bc366004610f01565b6101f8565b60405190151581526020015b60405180910390f35b3480156100e257600080fd5b506100c16100f1366004610f85565b6103d4565b34801561010257600080fd5b506100c1610111366004610fc7565b60016020526000908152604090205460ff1681565b34801561013257600080fd5b5061013b61045c565b005b34801561014957600080fd5b506000546040516001600160a01b0390911681526020016100cd565b6100c1610173366004610fe9565b610470565b34801561018457600080fd5b506100c1610193366004611055565b610704565b3480156101a457600080fd5b506100c16101b3366004610fc7565b6109b1565b3480156101c457600080fd5b5061013b6101d3366004610fc7565b6109e7565b3480156101e457600080fd5b506100c16101f3366004611055565b610a25565b3360009081526001602052604081205460ff166102305760405162461bcd60e51b8152600401610227906110ef565b60405180910390fd5b60005b858110156103c757600087878381811061024f5761024f611118565b90506020020160208101906102649190610fc7565b9050600085858481811061027a5761027a611118565b60200291909101359150506001600160a01b0382166102ef57804710156102b35760405162461bcd60e51b81526004016102279061112e565b6040516001600160a01b0388169082156108fc029083906000818181858888f193505050501580156102e9573d6000803e3d6000fd5b506103b2565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015610335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103599190611165565b10156103a75760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e7420746f6b656e2062616c616e63650000000000006044820152606401610227565b6103b2828883610c17565b505080806103bf90611194565b915050610233565b5060019695505050505050565b60006103de610d17565b60005b828110156104505760006001600086868581811061040157610401611118565b90506020020160208101906104169190610fc7565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061044881611194565b9150506103e1565b50600190505b92915050565b610464610d17565b61046e6000610d44565b565b600080805b858110156106d757600087878381811061049157610491611118565b90506020020160208101906104a69190610fc7565b9050333060008888868181106104be576104be611118565b905060200201359050600081116105175760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401610227565b6001600160a01b0384166105365761052f81876111ad565b95506106c0565b604051636eb1769f60e11b81526001600160a01b038481166004830152838116602483015282919086169063dd62ed3e90604401602060405180830381865afa158015610587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ab9190611165565b10156105f95760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e20616c6c6f77616e6365000000006044820152606401610227565b6040516370a0823160e01b81526001600160a01b0384811660048301528291908616906370a0823190602401602060405180830381865afa158015610642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106669190611165565b10156106b45760405162461bcd60e51b815260206004820152601f60248201527f496e73756666696369656e7420617574686f72697a65642062616c616e6365006044820152606401610227565b6106c084848484610d94565b5050505080806106cf90611194565b915050610475565b50804710156106f85760405162461bcd60e51b81526004016102279061112e565b50600195945050505050565b3360009081526001602052604081205460ff166107335760405162461bcd60e51b8152600401610227906110ef565b60005b868110156109a357600088888381811061075257610752611118565b90506020020160208101906107679190610fc7565b9050600087878481811061077d5761077d611118565b90506020020160208101906107929190610fc7565b90503060008787868181106107a9576107a9611118565b905060200201359050600081116108025760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401610227565b604051636eb1769f60e11b81526001600160a01b038481166004830152838116602483015282919086169063dd62ed3e90604401602060405180830381865afa158015610853573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190611165565b10156108c55760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e20616c6c6f77616e6365000000006044820152606401610227565b6040516370a0823160e01b81526001600160a01b0384811660048301528291908616906370a0823190602401602060405180830381865afa15801561090e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109329190611165565b10156109805760405162461bcd60e51b815260206004820152601f60248201527f496e73756666696369656e7420617574686f72697a65642062616c616e6365006044820152606401610227565b61098c84848484610d94565b50505050808061099b90611194565b915050610736565b506001979650505050505050565b60006109bb610d17565b506001600160a01b0381166000908152600160208190526040909120805460ff1916821790555b919050565b6109ef610d17565b6001600160a01b038116610a1957604051631e4fbdf760e01b815260006004820152602401610227565b610a2281610d44565b50565b3360009081526001602052604081205460ff16610a545760405162461bcd60e51b8152600401610227906110ef565b60005b868110156109a3576000888883818110610a7357610a73611118565b9050602002016020810190610a889190610fc7565b90506000878784818110610a9e57610a9e611118565b9050602002016020810190610ab39190610fc7565b90506000868685818110610ac957610ac9611118565b60200291909101359150506001600160a01b038316610b3e5780471015610b025760405162461bcd60e51b81526004016102279061112e565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610b38573d6000803e3d6000fd5b50610c01565b6040516370a0823160e01b815230600482015281906001600160a01b038516906370a0823190602401602060405180830381865afa158015610b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba89190611165565b1015610bf65760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e7420746f6b656e2062616c616e63650000000000006044820152606401610227565b610c01838383610c17565b5050508080610c0f90611194565b915050610a57565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610c7391906111c0565b6000604051808303816000865af19150503d8060008114610cb0576040519150601f19603f3d011682016040523d82523d6000602084013e610cb5565b606091505b5091509150818015610cdf575080511580610cdf575080806020019051810190610cdf91906111ef565b610d105760405162461bcd60e51b815260206004820152600260248201526114d560f21b6044820152606401610227565b5050505050565b6000546001600160a01b0316331461046e5760405163118cdaa760e01b8152336004820152602401610227565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610df891906111c0565b6000604051808303816000865af19150503d8060008114610e35576040519150601f19603f3d011682016040523d82523d6000602084013e610e3a565b606091505b5091509150818015610e64575080511580610e64575080806020019051810190610e6491906111ef565b610e965760405162461bcd60e51b815260206004820152600360248201526229aa2360e91b6044820152606401610227565b505050505050565b60008083601f840112610eb057600080fd5b50813567ffffffffffffffff811115610ec857600080fd5b6020830191508360208260051b8501011115610ee357600080fd5b9250929050565b80356001600160a01b03811681146109e257600080fd5b600080600080600060608688031215610f1957600080fd5b853567ffffffffffffffff80821115610f3157600080fd5b610f3d89838a01610e9e565b9097509550859150610f5160208901610eea565b94506040880135915080821115610f6757600080fd5b50610f7488828901610e9e565b969995985093965092949392505050565b60008060208385031215610f9857600080fd5b823567ffffffffffffffff811115610faf57600080fd5b610fbb85828601610e9e565b90969095509350505050565b600060208284031215610fd957600080fd5b610fe282610eea565b9392505050565b60008060008060408587031215610fff57600080fd5b843567ffffffffffffffff8082111561101757600080fd5b61102388838901610e9e565b9096509450602087013591508082111561103c57600080fd5b5061104987828801610e9e565b95989497509550505050565b6000806000806000806060878903121561106e57600080fd5b863567ffffffffffffffff8082111561108657600080fd5b6110928a838b01610e9e565b909850965060208901359150808211156110ab57600080fd5b6110b78a838b01610e9e565b909650945060408901359150808211156110d057600080fd5b506110dd89828a01610e9e565b979a9699509497509295939492505050565b6020808252600f908201526e139bdd081dda1a5d195b1a5cdd1959608a1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60208082526018908201527f496e73756666696369656e74204554482062616c616e63650000000000000000604082015260600190565b60006020828403121561117757600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000600182016111a6576111a661117e565b5060010190565b808201808211156104565761045661117e565b6000825160005b818110156111e157602081860181015185830152016111c7565b506000920191825250919050565b60006020828403121561120157600080fd5b81518015158114610fe257600080fdfea2646970667358221220e61ee5d0fe66efbcd63086cc084d3a350bf7455d80e2f764de3e002399765ddf64736f6c634300081400330000000000000000000000004e16f68b13f15b40b0313f35e01bf2e6f636eb9a