60806040523480156200001157600080fd5b506040805160208082018352600080835283519182019093529182529060026200003c838262000103565b5060036200004b828262000103565b50600160005550506001600955620001cf565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200008957607f821691505b602082108103620000aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620000fe57600081815260208120601f850160051c81016020861015620000d95750805b601f850160051c820191505b81811015620000fa57828155600101620000e5565b5050505b505050565b81516001600160401b038111156200011f576200011f6200005e565b620001378162000130845462000074565b84620000b0565b602080601f8311600181146200016f5760008415620001565750858301515b600019600386901b1c1916600185901b178555620000fa565b600085815260208120601f198616915b82811015620001a0578886015182559484019460019091019084016200017f565b5085821015620001bf5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6134d880620001df6000396000f3fe6080604052600436106102dc5760003560e01c8063705a5b4011610184578063a22cb465116100d6578063c08fa1a41161008a578063cfe7fadc11610064578063cfe7fadc14610811578063e764307414610831578063e985e9c51461085157600080fd5b8063c08fa1a4146107ae578063c23dc68f146107c4578063c87b56dd146107f157600080fd5b8063ad62f1ca116100bb578063ad62f1ca14610760578063b88d4fde14610780578063c002d23d1461079357600080fd5b8063a22cb46514610727578063a2309ff81461074757600080fd5b806384d242261161013857806395d89b411161011257806395d89b41146106ae57806399a2557a146106f4578063a0712d681461071457600080fd5b806384d242261461063f5780638da5cb5b1461065f5780639182aace1461068657600080fd5b80637236bb79116101695780637236bb79146105d55780637c4772b4146105fd5780638462151c1461061257600080fd5b8063705a5b40146105a057806370a08231146105b557600080fd5b80633135c3071161023d57806342842e0e116101f15780635bbb2177116101cb5780635bbb2177146105335780636352211e146105605780636ba4c1381461058057600080fd5b806342842e0e146104f65780634311de8f14610509578063510db75a1461051e57600080fd5b80633697a679116102225780633697a679146104ab5780633f36d80a146104cb5780634254337e146104e157600080fd5b80633135c3071461048057806332cb6b0c1461049557600080fd5b806318160ddd1161029457806324bbd0491161027957806324bbd049146104165780632a0acc6a146104305780632f99c6cc1461045857600080fd5b806318160ddd146103e657806323b872dd1461040357600080fd5b8063081812fc116102c5578063081812fc14610365578063095ea7b3146103aa57806314d63e95146103bf57600080fd5b806301ffc9a7146102e157806306fdde0314610316575b600080fd5b3480156102ed57600080fd5b506103016102fc3660046129c1565b6108a7565b60405190151581526020015b60405180910390f35b34801561032257600080fd5b5060408051808201909152600b81527f4d7920476f6f6420446f6700000000000000000000000000000000000000000060208201525b60405161030d9190612a2e565b34801561037157600080fd5b50610385610380366004612a41565b61098c565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161030d565b6103bd6103b8366004612a7c565b6109f6565b005b3480156103cb57600080fd5b506103d86405d21dba0081565b60405190815260200161030d565b3480156103f257600080fd5b5060015460005403600019016103d8565b6103bd610411366004612aa8565b610ae1565b34801561042257600080fd5b50600a546103019060ff1681565b34801561043c57600080fd5b5061038573c68a90aadf4ec0ec24833684ea394eb9cf43de9081565b34801561046457600080fd5b50610385731af73ca2e9bf3a138f0fa24c3cc59ae24c13a56581565b34801561048c57600080fd5b506103d8603281565b3480156104a157600080fd5b506103d861061381565b3480156104b757600080fd5b506103bd6104c6366004612bc1565b610d53565b3480156104d757600080fd5b506103d861012c81565b3480156104ed57600080fd5b506103d8610dcb565b6103bd610504366004612aa8565b610df7565b34801561051557600080fd5b506103bd610e17565b34801561052a57600080fd5b506103bd610f79565b34801561053f57600080fd5b5061055361054e366004612bf6565b61100e565b60405161030d9190612c6b565b34801561056c57600080fd5b5061038561057b366004612a41565b6110da565b34801561058c57600080fd5b506103bd61059b366004612d19565b6110e5565b3480156105ac57600080fd5b506103d8600f81565b3480156105c157600080fd5b506103d86105d0366004612daf565b6113b6565b3480156105e157600080fd5b5061038573f941d3aabf2ee0f5589e68ba6047b8329592b36681565b34801561060957600080fd5b506103d8611438565b34801561061e57600080fd5b5061063261062d366004612daf565b611491565b60405161030d9190612dcc565b34801561064b57600080fd5b5061063261065a366004612daf565b6115bc565b34801561066b57600080fd5b5073c68a90aadf4ec0ec24833684ea394eb9cf43de90610385565b34801561069257600080fd5b50610385737eebc5fcc4020e0a72365aae47b3998b5c71ed4c81565b3480156106ba57600080fd5b5060408051808201909152600481527f474f4f44000000000000000000000000000000000000000000000000000000006020820152610358565b34801561070057600080fd5b5061063261070f366004612e04565b6117f4565b6103bd610722366004612a41565b6119bc565b34801561073357600080fd5b506103bd610742366004612e47565b611d0c565b34801561075357600080fd5b50600054600019016103d8565b34801561076c57600080fd5b506103bd61077b366004612e80565b611da3565b6103bd61078e366004612ea5565b611e79565b34801561079f57600080fd5b506103d866737693eb33400081565b3480156107ba57600080fd5b506103d8600b5481565b3480156107d057600080fd5b506107e46107df366004612a41565b611ee9565b60405161030d9190612f25565b3480156107fd57600080fd5b5061035861080c366004612a41565b611f71565b34801561081d57600080fd5b506103bd61082c366004612f77565b612067565b34801561083d57600080fd5b506103bd61084c366004612daf565b6120e2565b34801561085d57600080fd5b5061030161086c366004612fbe565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260076020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061093a57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061098657507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061099782612285565b6109cd576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009081526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000610a01826110da565b90503373ffffffffffffffffffffffffffffffffffffffff821614610a6057610a2a813361086c565b610a60576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000610aec826122d3565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b53576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260066020526040902080543380821473ffffffffffffffffffffffffffffffffffffffff881690911417610bc657610b90863361086c565b610bc6576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516610c13576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015610c1e57600082555b73ffffffffffffffffffffffffffffffffffffffff8681166000908152600560205260408082208054600019019055918716808252919020805460010190554260a01b177c0200000000000000000000000000000000000000000000000000000000176000858152600460205260408120919091557c020000000000000000000000000000000000000000000000000000000084169003610cef57600184016000818152600460205260408120549003610ced576000548114610ced5760008181526004602052604090208490555b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b3373c68a90aadf4ec0ec24833684ea394eb9cf43de9014610dbb5760405162461bcd60e51b815260206004820152600e60248201527f4e6f7420617574686f72697a656400000000000000000000000000000000000060448201526064015b60405180910390fd5b600d610dc78282613085565b5050565b6000610dd5611438565b60005460001901610de890610613613174565b610df29190613174565b905090565b610e1283838360405180602001604052806000815250611e79565b505050565b3373c68a90aadf4ec0ec24833684ea394eb9cf43de9014610e7a5760405162461bcd60e51b815260206004820152600e60248201527f4e6f7420617574686f72697a65640000000000000000000000000000000000006044820152606401610db2565b60004711610eca5760405162461bcd60e51b815260206004820152601460248201527f4e6f7468696e6720746f207769746864726177210000000000000000000000006044820152606401610db2565b604051600090731af73ca2e9bf3a138f0fa24c3cc59ae24c13a5659047908381818185875af1925050503d8060008114610f20576040519150601f19603f3d011682016040523d82523d6000602084013e610f25565b606091505b5050905080610f765760405162461bcd60e51b815260206004820152600e60248201527f43616e27742077697468647261770000000000000000000000000000000000006044820152606401610db2565b50565b3373c68a90aadf4ec0ec24833684ea394eb9cf43de9014610fdc5760405162461bcd60e51b815260206004820152600e60248201527f4e6f7420617574686f72697a65640000000000000000000000000000000000006044820152606401610db2565b600a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00811660ff90911615179055565b60608160008167ffffffffffffffff81111561102c5761102c612ae9565b60405190808252806020026020018201604052801561107e57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161104a5790505b50905060005b8281146110d1576110ac8686838181106110a0576110a0613187565b90506020020135611ee9565b8282815181106110be576110be613187565b6020908102919091010152600101611084565b50949350505050565b6000610986826122d3565b6110ed612374565b600a5460ff1661113f5760405162461bcd60e51b815260206004820152600d60248201527f4d696e74206e6f74206f70656e000000000000000000000000000000000000006044820152606401610db2565b6000805b82518110156112e757600083828151811061116057611160613187565b6020908102919091018101516000818152600c90925260409091205490915060ff166112d4576040517f6352211e000000000000000000000000000000000000000000000000000000008152600481018290523390737eebc5fcc4020e0a72365aae47b3998b5c71ed4c90636352211e90602401602060405180830381865afa1580156111f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121591906131b6565b73ffffffffffffffffffffffffffffffffffffffff1614611235826123cd565b60405160200161124591906131d3565b604051602081830303815290604052906112725760405162461bcd60e51b8152600401610db29190612a2e565b506000818152600c6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600b8054919290916112c0908490613218565b909155506112d19050600184613218565b92505b50806112df8161322b565b915050611143565b50600081116113385760405162461bcd60e51b815260206004820152601060248201527f4e6f7468696e6720746f20636c61696d000000000000000000000000000000006044820152606401610db2565b610613816113496000546000190190565b6113539190613218565b11156113a15760405162461bcd60e51b815260206004820152600960248201527f536f6c64206f75742100000000000000000000000000000000000000000000006044820152606401610db2565b6113ab338261250a565b50610f766001600955565b600073ffffffffffffffffffffffffffffffffffffffff8216611405576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205467ffffffffffffffff1690565b6000600b5461012c1161144b5750600090565b6000600b5461012c61145d9190613174565b6001546000805492935091036000190161147990610613613174565b9050808211611488578161148a565b805b9250505090565b606060008060006114a1856113b6565b905060008167ffffffffffffffff8111156114be576114be612ae9565b6040519080825280602002602001820160405280156114e7578160200160208202803683370190505b5060408051608081018252600080825260208201819052918101829052606081019190915290915060015b8386146115b05761152281612648565b915081604001516115a857815173ffffffffffffffffffffffffffffffffffffffff161561154f57815194505b8773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036115a8578083878060010198508151811061159b5761159b613187565b6020026020010181815250505b600101611512565b50909695505050505050565b6040517f8462151c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152606090600090737eebc5fcc4020e0a72365aae47b3998b5c71ed4c90638462151c90602401600060405180830381865afa158015611640573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116689190810190613245565b90506000815167ffffffffffffffff81111561168657611686612ae9565b6040519080825280602002602001820160405280156116af578160200160208202803683370190505b5090506000805b835181101561174e57600c60008583815181106116d5576116d5613187565b60209081029190910181015182528101919091526040016000205460ff1661173c5783818151811061170957611709613187565b602002602001015183838151811061172357611723613187565b6020908102919091010152611739600183613218565b91505b806117468161322b565b9150506116b6565b5060008167ffffffffffffffff81111561176a5761176a612ae9565b604051908082528060200260200182016040528015611793578160200160208202803683370190505b50905060005b828110156117ea578381815181106117b3576117b3613187565b60200260200101518282815181106117cd576117cd613187565b6020908102919091010152806117e28161322b565b915050611799565b5095945050505050565b606081831061182f576040517f32c1995a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061183b60005490565b9050600185101561184b57600194505b80841115611857578093505b6000611862876113b6565b905084861015611881578585038181101561187b578091505b50611885565b5060005b60008167ffffffffffffffff8111156118a0576118a0612ae9565b6040519080825280602002602001820160405280156118c9578160200160208202803683370190505b509050816000036118df5793506119b592505050565b60006118ea88611ee9565b9050600081604001516118fb575080515b885b88811415801561190d5750848714155b156119a95761191b81612648565b925082604001516119a157825173ffffffffffffffffffffffffffffffffffffffff161561194857825191505b8a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a1578084888060010199508151811061199457611994613187565b6020026020010181815250505b6001016118fd565b50505092835250909150505b9392505050565b6119c4612374565b323314611a135760405162461bcd60e51b815260206004820181905260248201527f536d61727420636f6e7472616374206d696e7473206e6f7420616c6c6f7765646044820152606401610db2565b600a5460ff16611a655760405162461bcd60e51b815260206004820152600d60248201527f4d696e74206e6f74206f70656e000000000000000000000000000000000000006044820152606401610db2565b611a6d610dcb565b811115611abc5760405162461bcd60e51b815260206004820152600960248201527f536f6c64206f75742100000000000000000000000000000000000000000000006044820152606401610db2565b600f811115611b325760405162461bcd60e51b8152602060048201526024808201527f5065722d7472616e73616374696f6e206d696e74206c696d697420657863656560448201527f64656421000000000000000000000000000000000000000000000000000000006064820152608401610db2565b603281611b3e336113b6565b611b489190613218565b1115611b965760405162461bcd60e51b815260206004820152601b60248201527f57616c6c6574206d696e74206c696d69742065786365656465642100000000006044820152606401610db2565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526405d21dba009073f941d3aabf2ee0f5589e68ba6047b8329592b366906370a0823190602401602060405180830381865afa158015611c05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2991906132cb565b1015611c9d5760405162461bcd60e51b815260206004820152602a60248201527f4d7573742068617665206d696e203235204845454c20746f6b656e73206f6e2060448201527f7468652077616c6c6574000000000000000000000000000000000000000000006064820152608401610db2565b6000611cb066737693eb334000836132e4565b905080341015611d025760405162461bcd60e51b815260206004820152601360248201527f496e73756666696369656e742066756e647321000000000000000000000000006044820152606401610db2565b6113ab338361250a565b33600081815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b3373c68a90aadf4ec0ec24833684ea394eb9cf43de9014611e065760405162461bcd60e51b815260206004820152600e60248201527f4e6f7420617574686f72697a65640000000000000000000000000000000000006044820152606401610db2565b61061382611e176000546000190190565b611e219190613218565b1115611e6f5760405162461bcd60e51b815260206004820152600960248201527f536f6c64206f75742100000000000000000000000000000000000000000000006044820152606401610db2565b610dc781836126ed565b611e84848484610ae1565b73ffffffffffffffffffffffffffffffffffffffff83163b15611ee357611ead84848484612707565b611ee3576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6040805160808101825260008082526020820181905291810182905260608101919091526040805160808101825260008082526020820181905291810182905260608101919091526001831080611f4257506000548310155b15611f4d5792915050565b611f5683612648565b9050806040015115611f685792915050565b6119b583612862565b6000818152600e6020526040812080546060929190611f8f90612fec565b90501115612035576000828152600e602052604090208054611fb090612fec565b80601f0160208091040260200160405190810160405280929190818152602001828054611fdc90612fec565b80156120295780601f10611ffe57610100808354040283529160200191612029565b820191906000526020600020905b81548152906001019060200180831161200c57829003601f168201915b50505050509050919050565b600d612040836123cd565b6040516020016120519291906132fb565b6040516020818303038152906040529050919050565b3373c68a90aadf4ec0ec24833684ea394eb9cf43de90146120ca5760405162461bcd60e51b815260206004820152600e60248201527f4e6f7420617574686f72697a65640000000000000000000000000000000000006044820152606401610db2565b6000828152600e60205260409020610e128282613085565b3373c68a90aadf4ec0ec24833684ea394eb9cf43de90146121455760405162461bcd60e51b815260206004820152600e60248201527f4e6f7420617574686f72697a65640000000000000000000000000000000000006044820152606401610db2565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff82169063a9059cbb90731af73ca2e9bf3a138f0fa24c3cc59ae24c13a5659083906370a0823190602401602060405180830381865afa1580156121cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f191906132cb565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af1158015612261573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc791906133c8565b600081600111158015612299575060005482105b80156109865750506000908152600460205260409020547c0100000000000000000000000000000000000000000000000000000000161590565b600081806001116123425760005481101561234257600081815260046020526040812054907c010000000000000000000000000000000000000000000000000000000082169003612340575b806000036119b557506000190160008181526004602052604090205461231f565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600954036123c65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610db2565b6002600955565b60608160000361241057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561243a57806124248161322b565b91506124339050600a83613414565b9150612414565b60008167ffffffffffffffff81111561245557612455612ae9565b6040519080825280601f01601f19166020018201604052801561247f576020820181803683370190505b5090505b841561250257612494600183613174565b91506124a1600a86613428565b6124ac906030613218565b60f81b8183815181106124c1576124c1613187565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506124fb600a86613414565b9450612483565b949350505050565b6000805490829003612548576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b81811461260457808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a46001016125cc565b508160000361263f576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005550505050565b604080516080810182526000808252602082018190529181018290526060810191909152600082815260046020526040902054610986906040805160808101825273ffffffffffffffffffffffffffffffffffffffff8316815260a083901c67ffffffffffffffff1660208201527c0100000000000000000000000000000000000000000000000000000000831615159181019190915260e89190911c606082015290565b610dc7828260405180602001604052806000815250612900565b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061276290339089908890889060040161343c565b6020604051808303816000875af192505050801561279d575060408051601f3d908101601f1916820190925261279a91810190613485565b60015b612814573d8080156127cb576040519150601f19603f3d011682016040523d82523d6000602084013e6127d0565b606091505b50805160000361280c576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050949350505050565b604080516080810182526000808252602082018190529181018290526060810191909152610986612892836122d3565b6040805160808101825273ffffffffffffffffffffffffffffffffffffffff8316815260a083901c67ffffffffffffffff1660208201527c0100000000000000000000000000000000000000000000000000000000831615159181019190915260e89190911c606082015290565b61290a838361250a565b73ffffffffffffffffffffffffffffffffffffffff83163b15610e12576000548281035b6129416000868380600101945086612707565b612977576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81811061292e57816000541461298c57600080fd5b5050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610f7657600080fd5b6000602082840312156129d357600080fd5b81356119b581612993565b60005b838110156129f95781810151838201526020016129e1565b50506000910152565b60008151808452612a1a8160208601602086016129de565b601f01601f19169290920160200192915050565b6020815260006119b56020830184612a02565b600060208284031215612a5357600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f7657600080fd5b60008060408385031215612a8f57600080fd5b8235612a9a81612a5a565b946020939093013593505050565b600080600060608486031215612abd57600080fd5b8335612ac881612a5a565b92506020840135612ad881612a5a565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612b4157612b41612ae9565b604052919050565b600067ffffffffffffffff831115612b6357612b63612ae9565b612b766020601f19601f86011601612b18565b9050828152838383011115612b8a57600080fd5b828260208301376000602084830101529392505050565b600082601f830112612bb257600080fd5b6119b583833560208501612b49565b600060208284031215612bd357600080fd5b813567ffffffffffffffff811115612bea57600080fd5b61250284828501612ba1565b60008060208385031215612c0957600080fd5b823567ffffffffffffffff80821115612c2157600080fd5b818501915085601f830112612c3557600080fd5b813581811115612c4457600080fd5b8660208260051b8501011115612c5957600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b818110156115b057612ce283855173ffffffffffffffffffffffffffffffffffffffff815116825267ffffffffffffffff602082015116602083015260408101511515604083015262ffffff60608201511660608301525050565b9284019260809290920191600101612c87565b600067ffffffffffffffff821115612d0f57612d0f612ae9565b5060051b60200190565b60006020808385031215612d2c57600080fd5b823567ffffffffffffffff811115612d4357600080fd5b8301601f81018513612d5457600080fd5b8035612d67612d6282612cf5565b612b18565b81815260059190911b82018301908381019087831115612d8657600080fd5b928401925b82841015612da457833582529284019290840190612d8b565b979650505050505050565b600060208284031215612dc157600080fd5b81356119b581612a5a565b6020808252825182820181905260009190848201906040850190845b818110156115b057835183529284019291840191600101612de8565b600080600060608486031215612e1957600080fd5b8335612e2481612a5a565b95602085013595506040909401359392505050565b8015158114610f7657600080fd5b60008060408385031215612e5a57600080fd5b8235612e6581612a5a565b91506020830135612e7581612e39565b809150509250929050565b60008060408385031215612e9357600080fd5b823591506020830135612e7581612a5a565b60008060008060808587031215612ebb57600080fd5b8435612ec681612a5a565b93506020850135612ed681612a5a565b925060408501359150606085013567ffffffffffffffff811115612ef957600080fd5b8501601f81018713612f0a57600080fd5b612f1987823560208401612b49565b91505092959194509250565b815173ffffffffffffffffffffffffffffffffffffffff16815260208083015167ffffffffffffffff169082015260408083015115159082015260608083015162ffffff169082015260808101610986565b60008060408385031215612f8a57600080fd5b82359150602083013567ffffffffffffffff811115612fa857600080fd5b612fb485828601612ba1565b9150509250929050565b60008060408385031215612fd157600080fd5b8235612fdc81612a5a565b91506020830135612e7581612a5a565b600181811c9082168061300057607f821691505b602082108103613039577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610e1257600081815260208120601f850160051c810160208610156130665750805b601f850160051c820191505b81811015610d4b57828155600101613072565b815167ffffffffffffffff81111561309f5761309f612ae9565b6130b3816130ad8454612fec565b8461303f565b602080601f8311600181146130e857600084156130d05750858301515b600019600386901b1c1916600185901b178555610d4b565b600085815260208120601f198616915b82811015613117578886015182559484019460019091019084016130f8565b50858210156131355787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561098657610986613145565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156131c857600080fd5b81516119b581612a5a565b7f4e6f7420616e206f776e6572206f66204845454c204e4654207631202300000081526000825161320b81601d8501602087016129de565b91909101601d0192915050565b8082018082111561098657610986613145565b6000600019820361323e5761323e613145565b5060010190565b6000602080838503121561325857600080fd5b825167ffffffffffffffff81111561326f57600080fd5b8301601f8101851361328057600080fd5b805161328e612d6282612cf5565b81815260059190911b820183019083810190878311156132ad57600080fd5b928401925b82841015612da4578351825292840192908401906132b2565b6000602082840312156132dd57600080fd5b5051919050565b808202811582820484141761098657610986613145565b600080845461330981612fec565b60018281168015613321576001811461335457613383565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450613383565b8860005260208060002060005b8581101561337a5781548a820152908401908201613361565b50505082870194505b5050505083516133978183602088016129de565b7f2e6a736f6e0000000000000000000000000000000000000000000000000000009101908152600501949350505050565b6000602082840312156133da57600080fd5b81516119b581612e39565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613423576134236133e5565b500490565b600082613437576134376133e5565b500690565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261347b6080830184612a02565b9695505050505050565b60006020828403121561349757600080fd5b81516119b58161299356fea2646970667358221220a4ab4c86dc8e183e0f9baeef2359a1b652bd88d54777747e8dc800737b52c0d864736f6c63430008110033