0x6080604052600436106101d15760003560e01c8063590f897e116100f75780638da5cb5b11610095578063a9059cbb11610064578063a9059cbb146106b1578063dd62ed3e146106ee578063ddbf52661461072b578063f2fde38b14610754576101d8565b80638da5cb5b146105f557806395d89b4114610620578063a457c2d71461064b578063a514a07d14610688576101d8565b8063768dc710116100d1578063768dc7101461053957806378109e54146105765780637caefa89146105a15780637d1db4a5146105ca576101d8565b8063590f897e146104ba57806370a08231146104e5578063715018a614610522576101d8565b8063313ce5671161016f57806340b9a54b1161013e57806340b9a54b146103fc57806349bd5a5e146104275780634a74bb02146104525780634be4e9e41461047d576101d8565b8063313ce5671461032e5780633343ab8314610359578063357e4df11461039657806339509351146103bf576101d8565b80631694505e116101ab5780631694505e1461027057806318160ddd1461029b578063220f6696146102c657806323b872dd146102f1576101d8565b806306fdde03146101dd578063095ea7b31461020857806313fad07a14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f261077d565b6040516101ff91906124d2565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a919061258d565b61080f565b60405161023c91906125e8565b60405180910390f35b34801561025157600080fd5b5061025a61082d565b60405161026791906125e8565b60405180910390f35b34801561027c57600080fd5b50610285610840565b6040516102929190612662565b60405180910390f35b3480156102a757600080fd5b506102b0610866565b6040516102bd919061268c565b60405180910390f35b3480156102d257600080fd5b506102db610870565b6040516102e891906125e8565b60405180910390f35b3480156102fd57600080fd5b50610318600480360381019061031391906126a7565b610883565b60405161032591906125e8565b60405180910390f35b34801561033a57600080fd5b5061034361095c565b6040516103509190612716565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b91906126a7565b610973565b60405161038d91906125e8565b60405180910390f35b3480156103a257600080fd5b506103bd60048036038101906103b89190612731565b610b71565b005b3480156103cb57600080fd5b506103e660048036038101906103e1919061258d565b610c1b565b6040516103f391906125e8565b60405180910390f35b34801561040857600080fd5b50610411610cce565b60405161041e919061268c565b60405180910390f35b34801561043357600080fd5b5061043c610cd4565b6040516104499190612780565b60405180910390f35b34801561045e57600080fd5b50610467610cfa565b60405161047491906125e8565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f919061279b565b610d0d565b6040516104b191906125e8565b60405180910390f35b3480156104c657600080fd5b506104cf610d63565b6040516104dc919061268c565b60405180910390f35b3480156104f157600080fd5b5061050c6004803603810190610507919061279b565b610d69565b604051610519919061268c565b60405180910390f35b34801561052e57600080fd5b50610537610db2565b005b34801561054557600080fd5b50610560600480360381019061055b919061279b565b610eec565b60405161056d91906125e8565b60405180910390f35b34801561058257600080fd5b5061058b610f0c565b604051610598919061268c565b60405180910390f35b3480156105ad57600080fd5b506105c860048036038101906105c391906127f4565b610f12565b005b3480156105d657600080fd5b506105df610fac565b6040516105ec919061268c565b60405180910390f35b34801561060157600080fd5b5061060a610fb2565b6040516106179190612780565b60405180910390f35b34801561062c57600080fd5b50610635610fdb565b60405161064291906124d2565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d919061258d565b61106d565b60405161067f91906125e8565b60405180910390f35b34801561069457600080fd5b506106af60048036038101906106aa919061284d565b61113a565b005b3480156106bd57600080fd5b506106d860048036038101906106d3919061258d565b6111d3565b6040516106e591906125e8565b60405180910390f35b3480156106fa57600080fd5b506107156004803603810190610710919061287a565b6111f1565b604051610722919061268c565b60405180910390f35b34801561073757600080fd5b50610752600480360381019061074d91906128ba565b611278565b005b34801561076057600080fd5b5061077b6004803603810190610776919061279b565b61137b565b005b60606008805461078c90612916565b80601f01602080910402602001604051908101604052809291908181526020018280546107b890612916565b80156108055780601f106107da57610100808354040283529160200191610805565b820191906000526020600020905b8154815290600101906020018083116107e857829003601f168201915b5050505050905090565b600061082361081c61154f565b8484611557565b6001905092915050565b601a60169054906101000a900460ff1681565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b601a60149054906101000a900460ff1681565b60006108908484846116eb565b6109518461089c61154f565b61094c8560405180606001604052806028815260200161316260289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061090261154f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5c9092919063ffffffff16565b611557565b600190509392505050565b6000600a60009054906101000a900460ff16905090565b600061097d61154f565b73ffffffffffffffffffffffffffffffffffffffff1661099b610fb2565b73ffffffffffffffffffffffffffffffffffffffff16146109f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e890612993565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a56906129ff565b60405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a9a9190612780565b602060405180830381865afa158015610ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adb9190612a34565b905080831115610ae9578092505b8473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401610b24929190612a61565b6020604051808303816000875af1158015610b43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b679190612a9f565b9150509392505050565b610b7a33610d0d565b610bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb090612b18565b60405180910390fd5b600e548183610bc89190612b67565b1115610c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0090612be7565b60405180910390fd5b80601181905550816010819055505050565b6000610cc4610c2861154f565b84610cbf8560036000610c3961154f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db190919063ffffffff16565b611557565b6001905092915050565b60105481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a60159054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60115481565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dba61154f565b73ffffffffffffffffffffffffffffffffffffffff16610dd8610fb2565b73ffffffffffffffffffffffffffffffffffffffff1614610e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2590612993565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60046020528060005260406000206000915054906101000a900460ff1681565b60155481565b610f1a61154f565b73ffffffffffffffffffffffffffffffffffffffff16610f38610fb2565b73ffffffffffffffffffffffffffffffffffffffff1614610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8590612993565b60405180910390fd5b80600d60016101000a81548160ff021916908360ff16021790555050565b60175481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054610fea90612916565b80601f016020809104026020016040519081016040528092919081815260200182805461101690612916565b80156110635780601f1061103857610100808354040283529160200191611063565b820191906000526020600020905b81548152906001019060200180831161104657829003601f168201915b5050505050905090565b600061113061107a61154f565b8461112b8560405180606001604052806025815260200161318a60259139600360006110a461154f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5c9092919063ffffffff16565b611557565b6001905092915050565b61114261154f565b73ffffffffffffffffffffffffffffffffffffffff16611160610fb2565b73ffffffffffffffffffffffffffffffffffffffff16146111b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ad90612993565b60405180910390fd5b80601a60166101000a81548160ff02191690831515021790555050565b60006111e76111e061154f565b84846116eb565b6001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61128061154f565b73ffffffffffffffffffffffffffffffffffffffff1661129e610fb2565b73ffffffffffffffffffffffffffffffffffffffff16146112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112eb90612993565b60405180910390fd5b601a60149054906101000a900460ff1615611344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133b90612c53565b60405180910390fd5b600061134f30610d69565b90506000606483836113619190612c73565b61136b9190612ce4565b905061137681611dc7565b505050565b61138361154f565b73ffffffffffffffffffffffffffffffffffffffff166113a1610fb2565b73ffffffffffffffffffffffffffffffffffffffff16146113f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ee90612993565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145d90612d87565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081836115319190612c73565b905092915050565b600081836115479190612ce4565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115c15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f790612df3565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116de919061268c565b60405180910390a3505050565b6116f3610fb2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561177c5750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117b457503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561180e5750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118685750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118a75750611877610fb2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b506118b0610fb2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561191e57506118ee610fb2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156119cd57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561198d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6119cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c390612e5f565b60405180910390fd5b5b60008111611a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0790612ef1565b60405180910390fd5b600d60019054906101000a900460ff1660ff16600d60009054906101000a900460ff1660ff1610158015611a515750601a60149054906101000a900460ff16155b8015611aab5750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ac35750601a60159054906101000a900460ff165b15611b06576000600d60006101000a81548160ff021916908360ff1602179055506000611aef30610d69565b90506000811115611b0457611b0381611dc7565b5b505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611bad5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c785750601a60169054906101000a900460ff168015611c1d5750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611c775750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c865760009050611d4a565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ce957601054600f81905550611d49565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d4857601154600f819055505b5b5b611d5684848484611e3b565b50505050565b6000838311158290611da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9b91906124d2565b60405180910390fd5b5082840390509392505050565b60008183611dbf9190612b67565b905092915050565b6001601a60146101000a81548160ff021916908315150217905550611deb81611ea5565b6000479050611e1c600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826120e8565b506000601a60146101000a81548160ff02191690831515021790555050565b80611e4d57611e48612133565b611e86565b600d600081819054906101000a900460ff1680929190611e6c90612f11565b91906101000a81548160ff021916908360ff160217905550505b611e9184848461218f565b80611e9f57611e9e6123ca565b5b50505050565b6000600267ffffffffffffffff811115611ec257611ec1612f3a565b5b604051908082528060200260200182016040528015611ef05781602001602082028036833780820191505090505b5090503081600081518110611f0857611f07612f69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611faf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd39190612fad565b81600181518110611fe757611fe6612f69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061204e30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611557565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120b29594939291906130d3565b600060405180830381600087803b1580156120cc57600080fd5b505af11580156120e0573d6000803e3d6000fd5b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561212e573d6000803e3d6000fd5b505050565b6000600f5414801561214757506000601054145b801561215557506000601154145b61218d57601054601381905550601154601481905550600f54601281905550600060108190555060006011819055506000600f819055505b565b60008061219b836123e7565b915091506121f183600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461242c90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061228682600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db190919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061231b81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123bb919061268c565b60405180910390a35050505050565b601254600f81905550601354601081905550601454601181905550565b60008060006064600f54856123fc9190612c73565b6124069190612ce4565b9050600061241d828661242c90919063ffffffff16565b90508082935093505050915091565b6000818361243a919061312d565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561247c578082015181840152602081019050612461565b60008484015250505050565b6000601f19601f8301169050919050565b60006124a482612442565b6124ae818561244d565b93506124be81856020860161245e565b6124c781612488565b840191505092915050565b600060208201905081810360008301526124ec8184612499565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612524826124f9565b9050919050565b61253481612519565b811461253f57600080fd5b50565b6000813590506125518161252b565b92915050565b6000819050919050565b61256a81612557565b811461257557600080fd5b50565b60008135905061258781612561565b92915050565b600080604083850312156125a4576125a36124f4565b5b60006125b285828601612542565b92505060206125c385828601612578565b9150509250929050565b60008115159050919050565b6125e2816125cd565b82525050565b60006020820190506125fd60008301846125d9565b92915050565b6000819050919050565b600061262861262361261e846124f9565b612603565b6124f9565b9050919050565b600061263a8261260d565b9050919050565b600061264c8261262f565b9050919050565b61265c81612641565b82525050565b60006020820190506126776000830184612653565b92915050565b61268681612557565b82525050565b60006020820190506126a1600083018461267d565b92915050565b6000806000606084860312156126c0576126bf6124f4565b5b60006126ce86828701612542565b93505060206126df86828701612542565b92505060406126f086828701612578565b9150509250925092565b600060ff82169050919050565b612710816126fa565b82525050565b600060208201905061272b6000830184612707565b92915050565b60008060408385031215612748576127476124f4565b5b600061275685828601612578565b925050602061276785828601612578565b9150509250929050565b61277a81612519565b82525050565b60006020820190506127956000830184612771565b92915050565b6000602082840312156127b1576127b06124f4565b5b60006127bf84828501612542565b91505092915050565b6127d1816126fa565b81146127dc57600080fd5b50565b6000813590506127ee816127c8565b92915050565b60006020828403121561280a576128096124f4565b5b6000612818848285016127df565b91505092915050565b61282a816125cd565b811461283557600080fd5b50565b60008135905061284781612821565b92915050565b600060208284031215612863576128626124f4565b5b600061287184828501612838565b91505092915050565b60008060408385031215612891576128906124f4565b5b600061289f85828601612542565b92505060206128b085828601612542565b9150509250929050565b6000602082840312156128d0576128cf6124f4565b5b60006128de84828501612578565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061292e57607f821691505b602082108103612941576129406128e7565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061297d60208361244d565b915061298882612947565b602082019050919050565b600060208201905081810360008301526129ac81612970565b9050919050565b7f43616e206e6f742072656d6f7665206e617469766520746f6b656e0000000000600082015250565b60006129e9601b8361244d565b91506129f4826129b3565b602082019050919050565b60006020820190508181036000830152612a18816129dc565b9050919050565b600081519050612a2e81612561565b92915050565b600060208284031215612a4a57612a496124f4565b5b6000612a5884828501612a1f565b91505092915050565b6000604082019050612a766000830185612771565b612a83602083018461267d565b9392505050565b600081519050612a9981612821565b92915050565b600060208284031215612ab557612ab46124f4565b5b6000612ac384828501612a8a565b91505092915050565b7f21536869626e6f6269446576656c6f7065720000000000000000000000000000600082015250565b6000612b0260128361244d565b9150612b0d82612acc565b602082019050919050565b60006020820190508181036000830152612b3181612af5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b7282612557565b9150612b7d83612557565b9250828201905080821115612b9557612b94612b38565b5b92915050565b7f46656520697320746f6f20686967682100000000000000000000000000000000600082015250565b6000612bd160108361244d565b9150612bdc82612b9b565b602082019050919050565b60006020820190508181036000830152612c0081612bc4565b9050919050565b7f43757272656e746c792070726f63657373696e672c20747279206c617465722e600082015250565b6000612c3d60208361244d565b9150612c4882612c07565b602082019050919050565b60006020820190508181036000830152612c6c81612c30565b9050919050565b6000612c7e82612557565b9150612c8983612557565b9250828202612c9781612557565b91508282048414831517612cae57612cad612b38565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612cef82612557565b9150612cfa83612557565b925082612d0a57612d09612cb5565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612d7160268361244d565b9150612d7c82612d15565b604082019050919050565b60006020820190508181036000830152612da081612d64565b9050919050565b7f4552523a207a65726f2061646472657373000000000000000000000000000000600082015250565b6000612ddd60118361244d565b9150612de882612da7565b602082019050919050565b60006020820190508181036000830152612e0c81612dd0565b9050919050565b7f4552523a205573696e6720302061646472657373210000000000000000000000600082015250565b6000612e4960158361244d565b9150612e5482612e13565b602082019050919050565b60006020820190508181036000830152612e7881612e3c565b9050919050565b7f546f6b656e2076616c7565206d75737420626520686967686572207468616e2060008201527f7a65726f2e000000000000000000000000000000000000000000000000000000602082015250565b6000612edb60258361244d565b9150612ee682612e7f565b604082019050919050565b60006020820190508181036000830152612f0a81612ece565b9050919050565b6000612f1c826126fa565b915060ff8203612f2f57612f2e612b38565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612fa78161252b565b92915050565b600060208284031215612fc357612fc26124f4565b5b6000612fd184828501612f98565b91505092915050565b6000819050919050565b6000612fff612ffa612ff584612fda565b612603565b612557565b9050919050565b61300f81612fe4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61304a81612519565b82525050565b600061305c8383613041565b60208301905092915050565b6000602082019050919050565b600061308082613015565b61308a8185613020565b935061309583613031565b8060005b838110156130c65781516130ad8882613050565b97506130b883613068565b925050600181019050613099565b5085935050505092915050565b600060a0820190506130e8600083018861267d565b6130f56020830187613006565b81810360408301526131078186613075565b90506131166060830185612771565b613123608083018461267d565b9695505050505050565b600061313882612557565b915061314383612557565b925082820390508181111561315b5761315a612b38565b5b9291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207e6b53641192dd6d67ab35a12b2c053b7f2c0d482d3cadf7d82bd304afb3e68c64736f6c63430008110033
0x60806040527382ebfb1a083bb281de3d8f9eb4dfa88080bc34fc600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280601081526020017f4661626c65204f66205368696e6f6269000000000000000000000000000000008152506008908162000124919062000b3f565b506040518060400160405280600781526020017f5348494e4f424900000000000000000000000000000000000000000000000000815250600990816200016b919062000b3f565b506012600a60006101000a81548160ff021916908360ff1602179055506b033b2e3c9fd0803ce8000000600b556000600d60006101000a81548160ff021916908360ff1602179055506003600d60016101000a81548160ff021916908360ff1602179055506064600e556001600f5560016010556002601155600f546012556010546013556011546014556200022d6064620002196005600b546200086c60201b620015231790919060201c565b6200088460201b620015391790919060201c565b6015556015546016556200026d6064620002596004600b546200086c60201b620015231790919060201c565b6200088460201b620015391790919060201c565b6017556017546018556001601a60156101000a81548160ff0219169083151502179055506001601a60166101000a81548160ff021916908315150217905550348015620002b957600080fd5b507382ebfb1a083bb281de3d8f9eb4dfa88080bc34fc6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600b5460026000620004186200089c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e1919062000c90565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000549573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200056f919062000c90565b6040518363ffffffff1660e01b81526004016200058e92919062000cd3565b6020604051808303816000875af1158015620005ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d4919062000c90565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460006200066b6200089c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460007382ebfb1a083bb281de3d8f9eb4dfa88080bc34fc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007fc6200089c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516200085d919062000d11565b60405180910390a35062000e0f565b600081836200087c919062000d5d565b905092915050565b6000818362000894919062000dd7565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200094757607f821691505b6020821081036200095d576200095c620008ff565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009c77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000988565b620009d3868362000988565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000a2062000a1a62000a1484620009eb565b620009f5565b620009eb565b9050919050565b6000819050919050565b62000a3c83620009ff565b62000a5462000a4b8262000a27565b84845462000995565b825550505050565b600090565b62000a6b62000a5c565b62000a7881848462000a31565b505050565b5b8181101562000aa05762000a9460008262000a61565b60018101905062000a7e565b5050565b601f82111562000aef5762000ab98162000963565b62000ac48462000978565b8101602085101562000ad4578190505b62000aec62000ae38562000978565b83018262000a7d565b50505b505050565b600082821c905092915050565b600062000b146000198460080262000af4565b1980831691505092915050565b600062000b2f838362000b01565b9150826002028217905092915050565b62000b4a82620008c5565b67ffffffffffffffff81111562000b665762000b65620008d0565b5b62000b7282546200092e565b62000b7f82828562000aa4565b600060209050601f83116001811462000bb7576000841562000ba2578287015190505b62000bae858262000b21565b86555062000c1e565b601f19841662000bc78662000963565b60005b8281101562000bf15784890151825560018201915060208501945060208101905062000bca565b8683101562000c11578489015162000c0d601f89168262000b01565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c588262000c2b565b9050919050565b62000c6a8162000c4b565b811462000c7657600080fd5b50565b60008151905062000c8a8162000c5f565b92915050565b60006020828403121562000ca95762000ca862000c26565b5b600062000cb98482850162000c79565b91505092915050565b62000ccd8162000c4b565b82525050565b600060408201905062000cea600083018562000cc2565b62000cf9602083018462000cc2565b9392505050565b62000d0b81620009eb565b82525050565b600060208201905062000d28600083018462000d00565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d6a82620009eb565b915062000d7783620009eb565b925082820262000d8781620009eb565b9150828204841483151762000da15762000da062000d2e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000de482620009eb565b915062000df183620009eb565b92508262000e045762000e0362000da8565b5b828204905092915050565b6131e48062000e1f6000396000f3fe6080604052600436106101d15760003560e01c8063590f897e116100f75780638da5cb5b11610095578063a9059cbb11610064578063a9059cbb146106b1578063dd62ed3e146106ee578063ddbf52661461072b578063f2fde38b14610754576101d8565b80638da5cb5b146105f557806395d89b4114610620578063a457c2d71461064b578063a514a07d14610688576101d8565b8063768dc710116100d1578063768dc7101461053957806378109e54146105765780637caefa89146105a15780637d1db4a5146105ca576101d8565b8063590f897e146104ba57806370a08231146104e5578063715018a614610522576101d8565b8063313ce5671161016f57806340b9a54b1161013e57806340b9a54b146103fc57806349bd5a5e146104275780634a74bb02146104525780634be4e9e41461047d576101d8565b8063313ce5671461032e5780633343ab8314610359578063357e4df11461039657806339509351146103bf576101d8565b80631694505e116101ab5780631694505e1461027057806318160ddd1461029b578063220f6696146102c657806323b872dd146102f1576101d8565b806306fdde03146101dd578063095ea7b31461020857806313fad07a14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f261077d565b6040516101ff91906124d2565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a919061258d565b61080f565b60405161023c91906125e8565b60405180910390f35b34801561025157600080fd5b5061025a61082d565b60405161026791906125e8565b60405180910390f35b34801561027c57600080fd5b50610285610840565b6040516102929190612662565b60405180910390f35b3480156102a757600080fd5b506102b0610866565b6040516102bd919061268c565b60405180910390f35b3480156102d257600080fd5b506102db610870565b6040516102e891906125e8565b60405180910390f35b3480156102fd57600080fd5b50610318600480360381019061031391906126a7565b610883565b60405161032591906125e8565b60405180910390f35b34801561033a57600080fd5b5061034361095c565b6040516103509190612716565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b91906126a7565b610973565b60405161038d91906125e8565b60405180910390f35b3480156103a257600080fd5b506103bd60048036038101906103b89190612731565b610b71565b005b3480156103cb57600080fd5b506103e660048036038101906103e1919061258d565b610c1b565b6040516103f391906125e8565b60405180910390f35b34801561040857600080fd5b50610411610cce565b60405161041e919061268c565b60405180910390f35b34801561043357600080fd5b5061043c610cd4565b6040516104499190612780565b60405180910390f35b34801561045e57600080fd5b50610467610cfa565b60405161047491906125e8565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f919061279b565b610d0d565b6040516104b191906125e8565b60405180910390f35b3480156104c657600080fd5b506104cf610d63565b6040516104dc919061268c565b60405180910390f35b3480156104f157600080fd5b5061050c6004803603810190610507919061279b565b610d69565b604051610519919061268c565b60405180910390f35b34801561052e57600080fd5b50610537610db2565b005b34801561054557600080fd5b50610560600480360381019061055b919061279b565b610eec565b60405161056d91906125e8565b60405180910390f35b34801561058257600080fd5b5061058b610f0c565b604051610598919061268c565b60405180910390f35b3480156105ad57600080fd5b506105c860048036038101906105c391906127f4565b610f12565b005b3480156105d657600080fd5b506105df610fac565b6040516105ec919061268c565b60405180910390f35b34801561060157600080fd5b5061060a610fb2565b6040516106179190612780565b60405180910390f35b34801561062c57600080fd5b50610635610fdb565b60405161064291906124d2565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d919061258d565b61106d565b60405161067f91906125e8565b60405180910390f35b34801561069457600080fd5b506106af60048036038101906106aa919061284d565b61113a565b005b3480156106bd57600080fd5b506106d860048036038101906106d3919061258d565b6111d3565b6040516106e591906125e8565b60405180910390f35b3480156106fa57600080fd5b506107156004803603810190610710919061287a565b6111f1565b604051610722919061268c565b60405180910390f35b34801561073757600080fd5b50610752600480360381019061074d91906128ba565b611278565b005b34801561076057600080fd5b5061077b6004803603810190610776919061279b565b61137b565b005b60606008805461078c90612916565b80601f01602080910402602001604051908101604052809291908181526020018280546107b890612916565b80156108055780601f106107da57610100808354040283529160200191610805565b820191906000526020600020905b8154815290600101906020018083116107e857829003601f168201915b5050505050905090565b600061082361081c61154f565b8484611557565b6001905092915050565b601a60169054906101000a900460ff1681565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b601a60149054906101000a900460ff1681565b60006108908484846116eb565b6109518461089c61154f565b61094c8560405180606001604052806028815260200161316260289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061090261154f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5c9092919063ffffffff16565b611557565b600190509392505050565b6000600a60009054906101000a900460ff16905090565b600061097d61154f565b73ffffffffffffffffffffffffffffffffffffffff1661099b610fb2565b73ffffffffffffffffffffffffffffffffffffffff16146109f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e890612993565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a56906129ff565b60405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a9a9190612780565b602060405180830381865afa158015610ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adb9190612a34565b905080831115610ae9578092505b8473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401610b24929190612a61565b6020604051808303816000875af1158015610b43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b679190612a9f565b9150509392505050565b610b7a33610d0d565b610bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb090612b18565b60405180910390fd5b600e548183610bc89190612b67565b1115610c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0090612be7565b60405180910390fd5b80601181905550816010819055505050565b6000610cc4610c2861154f565b84610cbf8560036000610c3961154f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db190919063ffffffff16565b611557565b6001905092915050565b60105481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a60159054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60115481565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dba61154f565b73ffffffffffffffffffffffffffffffffffffffff16610dd8610fb2565b73ffffffffffffffffffffffffffffffffffffffff1614610e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2590612993565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60046020528060005260406000206000915054906101000a900460ff1681565b60155481565b610f1a61154f565b73ffffffffffffffffffffffffffffffffffffffff16610f38610fb2565b73ffffffffffffffffffffffffffffffffffffffff1614610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8590612993565b60405180910390fd5b80600d60016101000a81548160ff021916908360ff16021790555050565b60175481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054610fea90612916565b80601f016020809104026020016040519081016040528092919081815260200182805461101690612916565b80156110635780601f1061103857610100808354040283529160200191611063565b820191906000526020600020905b81548152906001019060200180831161104657829003601f168201915b5050505050905090565b600061113061107a61154f565b8461112b8560405180606001604052806025815260200161318a60259139600360006110a461154f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5c9092919063ffffffff16565b611557565b6001905092915050565b61114261154f565b73ffffffffffffffffffffffffffffffffffffffff16611160610fb2565b73ffffffffffffffffffffffffffffffffffffffff16146111b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ad90612993565b60405180910390fd5b80601a60166101000a81548160ff02191690831515021790555050565b60006111e76111e061154f565b84846116eb565b6001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61128061154f565b73ffffffffffffffffffffffffffffffffffffffff1661129e610fb2565b73ffffffffffffffffffffffffffffffffffffffff16146112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112eb90612993565b60405180910390fd5b601a60149054906101000a900460ff1615611344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133b90612c53565b60405180910390fd5b600061134f30610d69565b90506000606483836113619190612c73565b61136b9190612ce4565b905061137681611dc7565b505050565b61138361154f565b73ffffffffffffffffffffffffffffffffffffffff166113a1610fb2565b73ffffffffffffffffffffffffffffffffffffffff16146113f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ee90612993565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145d90612d87565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081836115319190612c73565b905092915050565b600081836115479190612ce4565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115c15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f790612df3565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116de919061268c565b60405180910390a3505050565b6116f3610fb2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561177c5750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117b457503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561180e5750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118685750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118a75750611877610fb2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b506118b0610fb2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561191e57506118ee610fb2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156119cd57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561198d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6119cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c390612e5f565b60405180910390fd5b5b60008111611a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0790612ef1565b60405180910390fd5b600d60019054906101000a900460ff1660ff16600d60009054906101000a900460ff1660ff1610158015611a515750601a60149054906101000a900460ff16155b8015611aab5750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ac35750601a60159054906101000a900460ff165b15611b06576000600d60006101000a81548160ff021916908360ff1602179055506000611aef30610d69565b90506000811115611b0457611b0381611dc7565b5b505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611bad5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c785750601a60169054906101000a900460ff168015611c1d5750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611c775750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c865760009050611d4a565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ce957601054600f81905550611d49565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d4857601154600f819055505b5b5b611d5684848484611e3b565b50505050565b6000838311158290611da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9b91906124d2565b60405180910390fd5b5082840390509392505050565b60008183611dbf9190612b67565b905092915050565b6001601a60146101000a81548160ff021916908315150217905550611deb81611ea5565b6000479050611e1c600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826120e8565b506000601a60146101000a81548160ff02191690831515021790555050565b80611e4d57611e48612133565b611e86565b600d600081819054906101000a900460ff1680929190611e6c90612f11565b91906101000a81548160ff021916908360ff160217905550505b611e9184848461218f565b80611e9f57611e9e6123ca565b5b50505050565b6000600267ffffffffffffffff811115611ec257611ec1612f3a565b5b604051908082528060200260200182016040528015611ef05781602001602082028036833780820191505090505b5090503081600081518110611f0857611f07612f69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611faf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd39190612fad565b81600181518110611fe757611fe6612f69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061204e30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611557565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120b29594939291906130d3565b600060405180830381600087803b1580156120cc57600080fd5b505af11580156120e0573d6000803e3d6000fd5b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561212e573d6000803e3d6000fd5b505050565b6000600f5414801561214757506000601054145b801561215557506000601154145b61218d57601054601381905550601154601481905550600f54601281905550600060108190555060006011819055506000600f819055505b565b60008061219b836123e7565b915091506121f183600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461242c90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061228682600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db190919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061231b81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123bb919061268c565b60405180910390a35050505050565b601254600f81905550601354601081905550601454601181905550565b60008060006064600f54856123fc9190612c73565b6124069190612ce4565b9050600061241d828661242c90919063ffffffff16565b90508082935093505050915091565b6000818361243a919061312d565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561247c578082015181840152602081019050612461565b60008484015250505050565b6000601f19601f8301169050919050565b60006124a482612442565b6124ae818561244d565b93506124be81856020860161245e565b6124c781612488565b840191505092915050565b600060208201905081810360008301526124ec8184612499565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612524826124f9565b9050919050565b61253481612519565b811461253f57600080fd5b50565b6000813590506125518161252b565b92915050565b6000819050919050565b61256a81612557565b811461257557600080fd5b50565b60008135905061258781612561565b92915050565b600080604083850312156125a4576125a36124f4565b5b60006125b285828601612542565b92505060206125c385828601612578565b9150509250929050565b60008115159050919050565b6125e2816125cd565b82525050565b60006020820190506125fd60008301846125d9565b92915050565b6000819050919050565b600061262861262361261e846124f9565b612603565b6124f9565b9050919050565b600061263a8261260d565b9050919050565b600061264c8261262f565b9050919050565b61265c81612641565b82525050565b60006020820190506126776000830184612653565b92915050565b61268681612557565b82525050565b60006020820190506126a1600083018461267d565b92915050565b6000806000606084860312156126c0576126bf6124f4565b5b60006126ce86828701612542565b93505060206126df86828701612542565b92505060406126f086828701612578565b9150509250925092565b600060ff82169050919050565b612710816126fa565b82525050565b600060208201905061272b6000830184612707565b92915050565b60008060408385031215612748576127476124f4565b5b600061275685828601612578565b925050602061276785828601612578565b9150509250929050565b61277a81612519565b82525050565b60006020820190506127956000830184612771565b92915050565b6000602082840312156127b1576127b06124f4565b5b60006127bf84828501612542565b91505092915050565b6127d1816126fa565b81146127dc57600080fd5b50565b6000813590506127ee816127c8565b92915050565b60006020828403121561280a576128096124f4565b5b6000612818848285016127df565b91505092915050565b61282a816125cd565b811461283557600080fd5b50565b60008135905061284781612821565b92915050565b600060208284031215612863576128626124f4565b5b600061287184828501612838565b91505092915050565b60008060408385031215612891576128906124f4565b5b600061289f85828601612542565b92505060206128b085828601612542565b9150509250929050565b6000602082840312156128d0576128cf6124f4565b5b60006128de84828501612578565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061292e57607f821691505b602082108103612941576129406128e7565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061297d60208361244d565b915061298882612947565b602082019050919050565b600060208201905081810360008301526129ac81612970565b9050919050565b7f43616e206e6f742072656d6f7665206e617469766520746f6b656e0000000000600082015250565b60006129e9601b8361244d565b91506129f4826129b3565b602082019050919050565b60006020820190508181036000830152612a18816129dc565b9050919050565b600081519050612a2e81612561565b92915050565b600060208284031215612a4a57612a496124f4565b5b6000612a5884828501612a1f565b91505092915050565b6000604082019050612a766000830185612771565b612a83602083018461267d565b9392505050565b600081519050612a9981612821565b92915050565b600060208284031215612ab557612ab46124f4565b5b6000612ac384828501612a8a565b91505092915050565b7f21536869626e6f6269446576656c6f7065720000000000000000000000000000600082015250565b6000612b0260128361244d565b9150612b0d82612acc565b602082019050919050565b60006020820190508181036000830152612b3181612af5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b7282612557565b9150612b7d83612557565b9250828201905080821115612b9557612b94612b38565b5b92915050565b7f46656520697320746f6f20686967682100000000000000000000000000000000600082015250565b6000612bd160108361244d565b9150612bdc82612b9b565b602082019050919050565b60006020820190508181036000830152612c0081612bc4565b9050919050565b7f43757272656e746c792070726f63657373696e672c20747279206c617465722e600082015250565b6000612c3d60208361244d565b9150612c4882612c07565b602082019050919050565b60006020820190508181036000830152612c6c81612c30565b9050919050565b6000612c7e82612557565b9150612c8983612557565b9250828202612c9781612557565b91508282048414831517612cae57612cad612b38565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612cef82612557565b9150612cfa83612557565b925082612d0a57612d09612cb5565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612d7160268361244d565b9150612d7c82612d15565b604082019050919050565b60006020820190508181036000830152612da081612d64565b9050919050565b7f4552523a207a65726f2061646472657373000000000000000000000000000000600082015250565b6000612ddd60118361244d565b9150612de882612da7565b602082019050919050565b60006020820190508181036000830152612e0c81612dd0565b9050919050565b7f4552523a205573696e6720302061646472657373210000000000000000000000600082015250565b6000612e4960158361244d565b9150612e5482612e13565b602082019050919050565b60006020820190508181036000830152612e7881612e3c565b9050919050565b7f546f6b656e2076616c7565206d75737420626520686967686572207468616e2060008201527f7a65726f2e000000000000000000000000000000000000000000000000000000602082015250565b6000612edb60258361244d565b9150612ee682612e7f565b604082019050919050565b60006020820190508181036000830152612f0a81612ece565b9050919050565b6000612f1c826126fa565b915060ff8203612f2f57612f2e612b38565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612fa78161252b565b92915050565b600060208284031215612fc357612fc26124f4565b5b6000612fd184828501612f98565b91505092915050565b6000819050919050565b6000612fff612ffa612ff584612fda565b612603565b612557565b9050919050565b61300f81612fe4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61304a81612519565b82525050565b600061305c8383613041565b60208301905092915050565b6000602082019050919050565b600061308082613015565b61308a8185613020565b935061309583613031565b8060005b838110156130c65781516130ad8882613050565b97506130b883613068565b925050600181019050613099565b5085935050505092915050565b600060a0820190506130e8600083018861267d565b6130f56020830187613006565b81810360408301526131078186613075565b90506131166060830185612771565b613123608083018461267d565b9695505050505050565b600061313882612557565b915061314383612557565b925082820390508181111561315b5761315a612b38565b5b9291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207e6b53641192dd6d67ab35a12b2c053b7f2c0d482d3cadf7d82bd304afb3e68c64736f6c63430008110033