{"version":3,"file":"static/js/main.f1a07516.js","mappings":"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AG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GA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","sources":["../node_modules/@lottiefiles/react-lottie-player/node_modules/tslib/tslib.es6.js","../node_modules/@lottiefiles/react-lottie-player/node_modules/lottie-web/build/player/lottie.js","../node_modules/@lottiefiles/react-lottie-player/src/versions.ts","../node_modules/@lottiefiles/react-lottie-player/src/Player.tsx","../node_modules/@lottiefiles/react-lottie-player/node_modules/style-inject/dist/style-inject.es.js","../node_modules/@lottiefiles/react-lottie-player/src/ColorPicker.tsx","../node_modules/@lottiefiles/react-lottie-player/src/Popover.tsx","../node_modules/@lottiefiles/react-lottie-player/src/Seeker.tsx","../node_modules/@lottiefiles/react-lottie-player/src/Controls.tsx","../node_modules/lodash.throttle/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-scroll/modules/components/Button.js","../node_modules/react-scroll/modules/components/Element.js","../node_modules/react-scroll/modules/components/Link.js","../node_modules/react-scroll/modules/index.js","../node_modules/react-scroll/modules/mixins/Helpers.js","../node_modules/react-scroll/modules/mixins/animate-scroll.js","../node_modules/react-scroll/modules/mixins/cancel-events.js","../node_modules/react-scroll/modules/mixins/passive-event-listeners.js","../node_modules/react-scroll/modules/mixins/scroll-element.js","../node_modules/react-scroll/modules/mixins/scroll-events.js","../node_modules/react-scroll/modules/mixins/scroll-hash.js","../node_modules/react-scroll/modules/mixins/scroll-link.js","../node_modules/react-scroll/modules/mixins/scroll-spy.js","../node_modules/react-scroll/modules/mixins/scroller.js","../node_modules/react-scroll/modules/mixins/smooth.js","../node_modules/react-scroll/modules/mixins/utils.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../webpack/bootstrap","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","Components/timeline.js","Components/ButtonLink.js","Components/Icons.js","../node_modules/@lottiefiles/dotlottie-web/src/animation-frame-manager.ts","../node_modules/@lottiefiles/dotlottie-web/src/constants.ts","../node_modules/@lottiefiles/dotlottie-web/src/core/dotlottie-player.js","../node_modules/@lottiefiles/dotlottie-web/src/core/dotlottie-wasm-loader.ts","../node_modules/@lottiefiles/dotlottie-web/src/event-manager.ts","../node_modules/@lottiefiles/dotlottie-web/src/offscreen-observer.ts","../node_modules/@lottiefiles/dotlottie-web/src/resize-observer.ts","../node_modules/@lottiefiles/dotlottie-web/src/utils.ts","../node_modules/@lottiefiles/dotlottie-web/src/dotlottie.ts","../inline-worker:/home/runner/work/dotlottie-web/dotlottie-web/packages/web/src/worker/dotlottie.worker","../node_modules/@lottiefiles/dotlottie-web/src/worker/dotlottie.ts","../node_modules/@lottiefiles/dotlottie-web/src/worker/worker-manager.ts","Pages/Home.js","Pages/Clubs.js","Pages/Projects.js","App.js","ScrollToTop.js","AppWrapper.js","reportWebVitals.js","index.js"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","(typeof navigator !== \"undefined\") && (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n var svgNS = 'http://www.w3.org/2000/svg';\n var locationHref = '';\n var _useWebWorker = false;\n var initialDefaultFrame = -999999;\n\n var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\n };\n\n var getLocationHref = function getLocationHref() {\n return locationHref;\n };\n\n function createTag(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElement(type);\n }\n\n function extendPrototype(sources, destination) {\n var i;\n var len = sources.length;\n var sourcePrototype;\n\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\n var audioControllerFactory = function () {\n function AudioController(audioFactory) {\n this.audios = [];\n this.audioFactory = audioFactory;\n this._volume = 1;\n this._isMuted = false;\n }\n\n AudioController.prototype = {\n addAudio: function addAudio(audio) {\n this.audios.push(audio);\n },\n pause: function pause() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].pause();\n }\n },\n resume: function resume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].resume();\n }\n },\n setRate: function setRate(rateValue) {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].setRate(rateValue);\n }\n },\n createAudio: function createAudio(assetPath) {\n if (this.audioFactory) {\n return this.audioFactory(assetPath);\n }\n\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\n });\n }\n\n return {\n isPlaying: false,\n play: function play() {\n this.isPlaying = true;\n },\n seek: function seek() {\n this.isPlaying = false;\n },\n playing: function playing() {},\n rate: function rate() {},\n setVolume: function setVolume() {}\n };\n },\n setAudioFactory: function setAudioFactory(audioFactory) {\n this.audioFactory = audioFactory;\n },\n setVolume: function setVolume(value) {\n this._volume = value;\n\n this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\n\n this._updateVolume();\n },\n getVolume: function getVolume() {\n return this._volume;\n },\n _updateVolume: function _updateVolume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n }\n }\n };\n return function () {\n return new AudioController();\n };\n }();\n\n var createTypedArray = function () {\n function createRegularArray(type, len) {\n var i = 0;\n var arr = [];\n var value;\n\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n\n default:\n value = 1.1;\n break;\n }\n\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n\n return arr;\n }\n\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n\n if (type === 'int16') {\n return new Int16Array(len);\n }\n\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n\n return createRegularArray(type, len);\n }\n\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n\n return createRegularArray;\n }();\n\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\n var subframeEnabled = true;\n var expressionsPlugin = null;\n var expressionsInterfaces = null;\n var idPrefix$1 = '';\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n var _shouldRoundValues = false;\n var bmPow = Math.pow;\n var bmSqrt = Math.sqrt;\n var bmFloor = Math.floor;\n var bmMax = Math.max;\n var bmMin = Math.min;\n var BMMath = {};\n\n (function () {\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n var i;\n var len = propertyNames.length;\n\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n\n function ProjectInterface$1() {\n return {};\n }\n\n BMMath.random = Math.random;\n\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n\n return absArr;\n }\n\n return Math.abs(val);\n };\n\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n\n return value;\n }\n\n function styleDiv(element) {\n element.style.position = 'absolute';\n element.style.top = 0;\n element.style.left = 0;\n element.style.display = 'block';\n element.style.transformOrigin = '0 0';\n element.style.webkitTransformOrigin = '0 0';\n element.style.backfaceVisibility = 'visible';\n element.style.webkitBackfaceVisibility = 'visible';\n element.style.transformStyle = 'preserve-3d';\n element.style.webkitTransformStyle = 'preserve-3d';\n element.style.mozTransformStyle = 'preserve-3d';\n }\n\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n this.type = type;\n this.currentTime = currentTime;\n this.totalTime = totalTime;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n this.type = type;\n this.currentLoop = currentLoop;\n this.totalLoops = totalLoops;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\n }\n\n var createElementID = function () {\n var _count = 0;\n return function createID() {\n _count += 1;\n return idPrefix$1 + '__lottie_element_' + _count;\n };\n }();\n\n function HSVtoRGB(h, s, v) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n\n default:\n break;\n }\n\n return [r, g, b];\n }\n\n function RGBtoHSV(r, g, b) {\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var d = max - min;\n var h;\n var s = max === 0 ? 0 : d / max;\n var v = max / 255;\n\n switch (max) {\n case min:\n h = 0;\n break;\n\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n\n default:\n break;\n }\n\n return [h, s, v];\n }\n\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addHueToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[0] += offset / 360;\n\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n\n if (g < 0) {\n g = 0;\n }\n\n if (b < 0) {\n b = 0;\n }\n\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\n };\n\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\n };\n\n var getIdPrefix = function getIdPrefix() {\n return idPrefix$1;\n };\n\n function createNS(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElementNS(svgNS, type);\n }\n\n function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\n var dataManager = function () {\n var _counterId = 1;\n var processes = [];\n var workerFn;\n var workerInstance;\n var workerProxy = {\n onmessage: function onmessage() {},\n postMessage: function postMessage(path) {\n workerFn({\n data: path\n });\n }\n };\n var _workerSelf = {\n postMessage: function postMessage(data) {\n workerProxy.onmessage({\n data: data\n });\n }\n };\n\n function createWorker(fn) {\n if (window.Worker && window.Blob && getWebWorker()) {\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n type: 'text/javascript'\n }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n\n workerFn = fn;\n return workerProxy;\n }\n\n function setupWorker() {\n if (!workerInstance) {\n workerInstance = createWorker(function workerStart(e) {\n function dataFunctionManager() {\n function completeLayers(layers, comps) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n }\n\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n }\n }\n }\n }\n }\n\n if (layerData.ty === 0) {\n layerData.layers = findCompLayers(layerData.refId, comps);\n completeLayers(layerData.layers, comps);\n } else if (layerData.ty === 4) {\n completeShapes(layerData.shapes);\n } else if (layerData.ty === 5) {\n completeText(layerData);\n }\n }\n }\n }\n\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\n\n for (i = 0; i < len; i += 1) {\n if (chars[i].t === 1) {\n // var compData = findComp(chars[i].data.refId, assets);\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\n // chars[i].data.op = 99999;\n // chars[i].data.st = 0;\n // chars[i].data.sr = 1;\n // chars[i].w = compData.w;\n // chars[i].data.ks = {\n // a: { k: [0, 0, 0], a: 0 },\n // p: { k: [0, -compData.h, 0], a: 0 },\n // r: { k: 0, a: 0 },\n // s: { k: [100, 100], a: 0 },\n // o: { k: 100, a: 0 },\n // };\n\n completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n\n return JSON.parse(JSON.stringify(comp.layers));\n }\n\n return null;\n }\n\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n convertPathsToAbsoluteValues(arr[i].ks.k);\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n }\n\n if (arr[i].ks.k[j].e) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeShapes(arr[i].it);\n }\n }\n }\n\n function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\n\n for (i = 0; i < len; i += 1) {\n path.i[i][0] += path.v[i][0];\n path.i[i][1] += path.v[i][1];\n path.o[i][0] += path.v[i][0];\n path.o[i][1] += path.v[i][1];\n }\n }\n\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n\n return null;\n }\n\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\n\n function updateTextLayer(textLayer) {\n var documentData = textLayer.t.d;\n textLayer.t.d = {\n k: [{\n s: documentData,\n t: 0\n }]\n };\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkChars = function () {\n var minimumVersion = [4, 7, 99];\n return function (animationData) {\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n var i;\n var len = animationData.chars.length;\n\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\n\n if (charData.data && charData.data.shapes) {\n completeShapes(charData.data.shapes);\n charData.data.ip = 0;\n charData.data.op = 99999;\n charData.data.st = 0;\n charData.data.sr = 1;\n charData.data.ks = {\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n }\n };\n\n if (!animationData.chars[i].t) {\n charData.data.shapes.push({\n ty: 'no'\n });\n charData.data.shapes[0].it.push({\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n },\n sk: {\n k: 0,\n a: 0\n },\n sa: {\n k: 0,\n a: 0\n },\n ty: 'tr'\n });\n }\n }\n }\n }\n };\n }();\n\n var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n iterateShapes(shapes[i].it);\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\n jLen = shapes[i].c.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[i].c.k[j].s) {\n shapes[i].c.k[j].s[0] /= 255;\n shapes[i].c.k[j].s[1] /= 255;\n shapes[i].c.k[j].s[2] /= 255;\n shapes[i].c.k[j].s[3] /= 255;\n }\n\n if (shapes[i].c.k[j].e) {\n shapes[i].c.k[j].e[0] /= 255;\n shapes[i].c.k[j].e[1] /= 255;\n shapes[i].c.k[j].e[2] /= 255;\n shapes[i].c.k[j].e[3] /= 255;\n }\n }\n } else {\n shapes[i].c.k[0] /= 255;\n shapes[i].c.k[1] /= 255;\n shapes[i].c.k[2] /= 255;\n shapes[i].c.k[3] /= 255;\n }\n }\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n arr[i].ks.k.c = arr[i].closed;\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n arr[i].ks.k[j].s[0].c = arr[i].closed;\n }\n\n if (arr[i].ks.k[j].e) {\n arr[i].ks.k[j].e[0].c = arr[i].closed;\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeClosingShapes(arr[i].it);\n }\n }\n }\n\n function iterateLayers(layers) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n maskProps[j].pt.k.c = maskProps[j].cl;\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n }\n\n if (maskProps[j].pt.k[k].e) {\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n }\n }\n }\n }\n }\n\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n function completeData(animationData) {\n if (animationData.__complete) {\n return;\n }\n\n checkColors(animationData);\n checkText(animationData);\n checkChars(animationData);\n checkPathProperties(animationData);\n checkShapes(animationData);\n completeLayers(animationData.layers, animationData.assets);\n completeChars(animationData.chars, animationData.assets);\n animationData.__complete = true;\n }\n\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n }\n }\n\n var moduleOb = {};\n moduleOb.completeData = completeData;\n moduleOb.checkColors = checkColors;\n moduleOb.checkChars = checkChars;\n moduleOb.checkPathProperties = checkPathProperties;\n moduleOb.checkShapes = checkShapes;\n moduleOb.completeLayers = completeLayers;\n return moduleOb;\n }\n\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\n }\n\n if (!_workerSelf.assetLoader) {\n _workerSelf.assetLoader = function () {\n function formatResponse(xhr) {\n // using typeof doubles the time of execution of this method,\n // so if available, it's better to use the header to validate the type\n var contentTypeHeader = xhr.getResponseHeader('content-type');\n\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n\n return null;\n }\n\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\n\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n response = formatResponse(xhr);\n callback(response);\n } else {\n try {\n response = formatResponse(xhr);\n callback(response);\n } catch (err) {\n if (errorCallback) {\n errorCallback(err);\n }\n }\n }\n }\n };\n\n try {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), path, true);\n } catch (error) {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\n }\n\n xhr.send();\n }\n\n return {\n load: loadAsset\n };\n }();\n }\n\n if (e.data.type === 'loadAnimation') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.dataManager.completeData(data);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n } else if (e.data.type === 'complete') {\n var animation = e.data.animation;\n\n _workerSelf.dataManager.completeData(animation);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: animation,\n status: 'success'\n });\n } else if (e.data.type === 'loadData') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n }\n });\n\n workerInstance.onmessage = function (event) {\n var data = event.data;\n var id = data.id;\n var process = processes[id];\n processes[id] = null;\n\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\n }\n };\n }\n }\n\n function createProcess(onComplete, onError) {\n _counterId += 1;\n var id = 'processId_' + _counterId;\n processes[id] = {\n onComplete: onComplete,\n onError: onError\n };\n return id;\n }\n\n function loadAnimation(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadAnimation',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function loadData(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadData',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function completeAnimation(anim, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'complete',\n animation: anim,\n id: processId\n });\n }\n\n return {\n loadAnimation: loadAnimation,\n loadData: loadData,\n completeAnimation: completeAnimation\n };\n }();\n\n var ImagePreloader = function () {\n var proxyImage = function () {\n var canvas = createTag('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return canvas;\n }();\n\n function imageLoaded() {\n this.loadedAssets += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n }\n\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n\n if (box.width || _count > 500) {\n this._imageLoaded();\n\n clearInterval(intervalId);\n }\n\n _count += 1;\n }.bind(this), 50);\n }\n\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createImgData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createTag('img');\n img.crossOrigin = 'anonymous';\n img.addEventListener('load', this._imageLoaded, false);\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.src = path;\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createFootageData(data) {\n var ob = {\n assetData: data\n };\n var path = getAssetsPath(data, this.assetsPath, this.path);\n dataManager.loadData(path, function (footageData) {\n ob.img = footageData;\n\n this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (!assets[i].layers) {\n if (!assets[i].t || assets[i].t === 'seq') {\n this.totalImages += 1;\n this.images.push(this._createImageData(assets[i]));\n } else if (assets[i].t === 3) {\n this.totalFootages += 1;\n this.images.push(this.createFootageData(assets[i]));\n }\n }\n }\n }\n\n function setPath(path) {\n this.path = path || '';\n }\n\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\n }\n\n function setCacheType(type, elementHelper) {\n if (type === 'svg') {\n this._elementHelper = elementHelper;\n this._createImageData = this.createImageData.bind(this);\n } else {\n this._createImageData = this.createImgData.bind(this);\n }\n }\n\n function ImagePreloaderFactory() {\n this._imageLoaded = imageLoaded.bind(this);\n this._footageLoaded = footageLoaded.bind(this);\n this.testImageLoaded = testImageLoaded.bind(this);\n this.createFootageData = createFootageData.bind(this);\n this.assetsPath = '';\n this.path = '';\n this.totalImages = 0;\n this.totalFootages = 0;\n this.loadedAssets = 0;\n this.loadedFootagesCount = 0;\n this.imagesLoadedCb = null;\n this.images = [];\n }\n\n ImagePreloaderFactory.prototype = {\n loadAssets: loadAssets,\n setAssetsPath: setAssetsPath,\n setPath: setPath,\n loadedImages: loadedImages,\n loadedFootages: loadedFootages,\n destroy: destroy,\n getAsset: getAsset,\n createImgData: createImgData,\n createImageData: createImageData,\n imageLoaded: imageLoaded,\n footageLoaded: footageLoaded,\n setCacheType: setCacheType\n };\n return ImagePreloaderFactory;\n }();\n\n function BaseEvent() {}\n\n BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\n\n for (var i = 0; i < callbacks.length; i += 1) {\n callbacks[i](args);\n }\n }\n },\n addEventListener: function addEventListener(eventName, callback) {\n if (!this._cbs[eventName]) {\n this._cbs[eventName] = [];\n }\n\n this._cbs[eventName].push(callback);\n\n return function () {\n this.removeEventListener(eventName, callback);\n }.bind(this);\n },\n removeEventListener: function removeEventListener(eventName, callback) {\n if (!callback) {\n this._cbs[eventName] = null;\n } else if (this._cbs[eventName]) {\n var i = 0;\n var len = this._cbs[eventName].length;\n\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n\n i -= 1;\n len -= 1;\n }\n\n i += 1;\n }\n\n if (!this._cbs[eventName].length) {\n this._cbs[eventName] = null;\n }\n }\n }\n };\n\n var markerParser = function () {\n function parsePayloadLines(payload) {\n var lines = payload.split('\\r\\n');\n var keys = {};\n var line;\n var keysCount = 0;\n\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n\n if (keysCount === 0) {\n throw new Error();\n }\n\n return keys;\n }\n\n return function (_markers) {\n var markers = [];\n\n for (var i = 0; i < _markers.length; i += 1) {\n var _marker = _markers[i];\n var markerData = {\n time: _marker.tm,\n duration: _marker.dr\n };\n\n try {\n markerData.payload = JSON.parse(_markers[i].cm);\n } catch (_) {\n try {\n markerData.payload = parsePayloadLines(_markers[i].cm);\n } catch (__) {\n markerData.payload = {\n name: _markers[i].cm\n };\n }\n }\n\n markers.push(markerData);\n }\n\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\n\n while (i < len) {\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n this.compositions[i].prepareFrame(this.currentFrame);\n }\n\n return this.compositions[i].compInterface;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n\n function getRenderer(key) {\n return renderers[key];\n }\n\n function getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n } // Returns any renderer that is registered\n\n\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n\n return '';\n }\n\n function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\n var AnimationItem = function AnimationItem() {\n this._cbs = [];\n this.name = '';\n this.path = '';\n this.isLoaded = false;\n this.currentFrame = 0;\n this.currentRawFrame = 0;\n this.firstFrame = 0;\n this.totalFrames = 0;\n this.frameRate = 0;\n this.frameMult = 0;\n this.playSpeed = 1;\n this.playDirection = 1;\n this.playCount = 0;\n this.animationData = {};\n this.assets = [];\n this.isPaused = true;\n this.autoplay = false;\n this.loop = true;\n this.renderer = null;\n this.animationID = createElementID();\n this.assetsPath = '';\n this.timeCompleted = 0;\n this.segmentPos = 0;\n this.isSubframeEnabled = getSubframeEnabled();\n this.segments = [];\n this._idle = true;\n this._completedLoop = false;\n this.projectInterface = ProjectInterface();\n this.imagePreloader = new ImagePreloader();\n this.audioController = audioControllerFactory();\n this.markers = [];\n this.configAnimation = this.configAnimation.bind(this);\n this.onSetupError = this.onSetupError.bind(this);\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n this.expressionsPlugin = getExpressionsPlugin();\n };\n\n extendPrototype([BaseEvent], AnimationItem);\n\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n\n var animType = 'svg';\n\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\n }\n\n var RendererClass = getRenderer(animType);\n this.renderer = new RendererClass(this, params.rendererSettings);\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n this.renderer.setProjectInterface(this.projectInterface);\n this.animType = animType;\n\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n this.loop = true;\n } else if (params.loop === false) {\n this.loop = false;\n } else {\n this.loop = parseInt(params.loop, 10);\n }\n\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\n this.name = params.name ? params.name : '';\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n this.assetsPath = params.assetsPath;\n this.initialSegment = params.initialSegment;\n\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\n }\n\n if (params.animationData) {\n this.setupAnimation(params.animationData);\n } else if (params.path) {\n if (params.path.lastIndexOf('\\\\') !== -1) {\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n } else {\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n }\n\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n }\n };\n\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\n };\n\n AnimationItem.prototype.setData = function (wrapper, animationData) {\n if (animationData) {\n if (_typeof$4(animationData) !== 'object') {\n animationData = JSON.parse(animationData);\n }\n }\n\n var params = {\n wrapper: wrapper,\n animationData: animationData\n };\n var wrapperAttributes = wrapper.attributes;\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : getRegisteredRenderer() || 'canvas';\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n\n if (loop === 'false') {\n params.loop = false;\n } else if (loop === 'true') {\n params.loop = true;\n } else if (loop !== '') {\n params.loop = parseInt(loop, 10);\n }\n\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n params.autoplay = autoplay !== 'false';\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n\n if (prerender === 'false') {\n params.prerender = false;\n }\n\n if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\n }\n };\n\n AnimationItem.prototype.includeLayers = function (data) {\n if (data.op > this.animationData.op) {\n this.animationData.op = data.op;\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\n }\n\n var layers = this.animationData.layers;\n var i;\n var len = layers.length;\n var newLayers = data.layers;\n var j;\n var jLen = newLayers.length;\n\n for (j = 0; j < jLen; j += 1) {\n i = 0;\n\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n\n i += 1;\n }\n }\n\n if (data.chars || data.fonts) {\n this.renderer.globalData.fontManager.addChars(data.chars);\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n }\n\n if (data.assets) {\n len = data.assets.length;\n\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\n }\n\n var segment = segments.shift();\n this.timeCompleted = segment.time * this.frameRate;\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n this.segmentPos += 1;\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n this.trigger('data_failed');\n }.bind(this));\n };\n\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\n };\n\n AnimationItem.prototype.preloadImages = function () {\n this.imagePreloader.setAssetsPath(this.assetsPath);\n this.imagePreloader.setPath(this.path);\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n };\n\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n\n try {\n this.animationData = animData;\n\n if (this.initialSegment) {\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n this.firstFrame = Math.round(this.initialSegment[0]);\n } else {\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n this.firstFrame = Math.round(this.animationData.ip);\n }\n\n this.renderer.configAnimation(animData);\n\n if (!animData.assets) {\n animData.assets = [];\n }\n\n this.assets = this.animationData.assets;\n this.frameRate = this.animationData.fr;\n this.frameMult = this.animationData.fr / 1000;\n this.renderer.searchExtraCompositions(animData.assets);\n this.markers = markerParser(animData.markers || []);\n this.trigger('config_ready');\n this.preloadImages();\n this.loadSegments();\n this.updaFrameModifier();\n this.waitForFontsLoaded();\n\n if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\n }\n };\n\n AnimationItem.prototype.checkLoaded = function () {\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n this.isLoaded = true;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n\n if (this.autoplay) {\n this.play();\n }\n }\n };\n\n AnimationItem.prototype.resize = function (width, height) {\n // Adding this validation for backwards compatibility in case an event object was being passed down\n var _width = typeof width === 'number' ? width : undefined;\n\n var _height = typeof height === 'number' ? height : undefined;\n\n this.renderer.updateContainerSize(_width, _height);\n };\n\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\n };\n\n AnimationItem.prototype.gotoFrame = function () {\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n this.currentFrame = this.timeCompleted;\n }\n\n this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n\n try {\n if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_play');\n this.audioController.resume();\n\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === false) {\n this.isPaused = true;\n this.trigger('_pause');\n this._idle = true;\n this.trigger('_idle');\n this.audioController.pause();\n }\n };\n\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n\n return null;\n };\n\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n this.goToAndStop(marker.time, true);\n }\n } else if (isFrame) {\n this.setCurrentRawFrameValue(value);\n } else {\n this.setCurrentRawFrameValue(value * this.frameModifier);\n }\n\n this.pause();\n };\n\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n if (!marker.duration) {\n this.goToAndStop(marker.time, true);\n } else {\n this.playSegments([marker.time, marker.time + marker.duration], true);\n }\n }\n } else {\n this.goToAndStop(numValue, isFrame, name);\n }\n\n this.play();\n };\n\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n if (!this.loop || this.playCount === this.loop) {\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n _isComplete = true;\n nextValue = this.totalFrames - 1;\n }\n } else if (nextValue >= this.totalFrames) {\n this.playCount += 1;\n\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n this._completedLoop = true;\n this.trigger('loopComplete');\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n } else if (nextValue < 0) {\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n // eslint-disable-line no-plusplus\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n\n if (!this._completedLoop) {\n this._completedLoop = true;\n } else {\n this.trigger('loopComplete');\n }\n } else {\n _isComplete = true;\n nextValue = 0;\n }\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\n\n if (arr[1] < arr[0]) {\n if (this.frameModifier > 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(-1);\n }\n }\n\n this.totalFrames = arr[0] - arr[1];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[1];\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n } else if (arr[1] > arr[0]) {\n if (this.frameModifier < 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(1);\n }\n }\n\n this.totalFrames = arr[1] - arr[0];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n\n this.trigger('segmentStart');\n };\n\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\n\n if (this.isPaused) {\n if (this.currentRawFrame + this.firstFrame < init) {\n pendingFrame = init;\n } else if (this.currentRawFrame + this.firstFrame > end) {\n pendingFrame = end - init;\n }\n }\n\n this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n\n if (this.isPaused) {\n this.play();\n }\n };\n\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n\n if (forceFlag) {\n this.checkSegments(0);\n }\n };\n\n AnimationItem.prototype.checkSegments = function (offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset);\n return true;\n }\n\n return false;\n };\n\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\n }\n\n this.renderer.destroy();\n this.imagePreloader.destroy();\n this.trigger('destroy');\n this._cbs = null;\n this.onEnterFrame = null;\n this.onLoopComplete = null;\n this.onComplete = null;\n this.onSegmentStart = null;\n this.onDestroy = null;\n this.renderer = null;\n this.expressionsPlugin = null;\n this.imagePreloader = null;\n this.projectInterface = null;\n };\n\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setLoop = function (isLooping) {\n this.loop = isLooping;\n };\n\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.setVolume(val);\n };\n\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.mute();\n };\n\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.unmute();\n };\n\n AnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n this.audioController.setRate(this.playSpeed * this.playDirection);\n };\n\n AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n };\n\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n };\n\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n try {\n var element = this.renderer.getElementByPath(path);\n element.updateDocumentData(documentData, index);\n } catch (error) {// TODO: decide how to handle catch case\n }\n };\n\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n break;\n\n case 'drawnFrame':\n this.drawnFrameEvent.currentTime = this.currentFrame;\n this.drawnFrameEvent.totalTime = this.totalFrames;\n this.drawnFrameEvent.direction = this.frameModifier;\n this.triggerEvent(name, this.drawnFrameEvent);\n break;\n\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n\n default:\n this.triggerEvent(name);\n }\n }\n\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n var animationManager = function () {\n var moduleOb = {};\n var registeredAnimations = [];\n var initTime = 0;\n var len = 0;\n var playingAnimationsNum = 0;\n var _stopped = true;\n var _isFrozen = false;\n\n function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n\n i += 1;\n }\n }\n\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n\n var i = 0;\n\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n\n i += 1;\n }\n\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n\n return animations;\n }\n\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\n }\n\n function setupAnimation(animItem, element) {\n animItem.addEventListener('destroy', removeElement);\n animItem.addEventListener('_active', addPlayingCount);\n animItem.addEventListener('_idle', subtractPlayingCount);\n registeredAnimations.push({\n elem: element,\n animation: animItem\n });\n len += 1;\n }\n\n function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n\n function setSpeed(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n\n function setDirection(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n\n function play(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n\n initTime = nowTime;\n\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n\n function pause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n\n function goToAndStop(value, isFrame, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n\n function stop(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n\n function togglePause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n\n function destroy(animation) {\n var i;\n\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\n }\n }\n\n function searchAnimations(animationData, standalone, renderer) {\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n var i;\n var lenAnims = animElements.length;\n\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n\n registerAnimation(animElements[i], animationData);\n }\n\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\n }\n\n var body = document.getElementsByTagName('body')[0];\n body.innerText = '';\n var div = createTag('div');\n div.style.width = '100%';\n div.style.height = '100%';\n div.setAttribute('data-bm-type', renderer);\n body.appendChild(div);\n registerAnimation(div, animationData);\n }\n }\n\n function resize() {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n\n function freeze() {\n _isFrozen = true;\n }\n\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n\n function setVolume(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n\n function mute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n\n function unmute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\n }\n }\n\n moduleOb.registerAnimation = registerAnimation;\n moduleOb.loadAnimation = loadAnimation;\n moduleOb.setSpeed = setSpeed;\n moduleOb.setDirection = setDirection;\n moduleOb.play = play;\n moduleOb.pause = pause;\n moduleOb.stop = stop;\n moduleOb.togglePause = togglePause;\n moduleOb.searchAnimations = searchAnimations;\n moduleOb.resize = resize; // moduleOb.start = start;\n\n moduleOb.goToAndStop = goToAndStop;\n moduleOb.destroy = destroy;\n moduleOb.freeze = freeze;\n moduleOb.unfreeze = unfreeze;\n moduleOb.setVolume = setVolume;\n moduleOb.mute = mute;\n moduleOb.unmute = unmute;\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n return moduleOb;\n }();\n\n /* eslint-disable */\n var BezierFactory = function () {\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n if (beziers[str]) {\n return beziers[str];\n }\n\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) return aGuessT;\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n }\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\n\n\n function BezierEasing(points) {\n this._p = points;\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n this._precomputed = false;\n this.get = this.get.bind(this);\n }\n\n BezierEasing.prototype = {\n get: function get(x) {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n if (!this._precomputed) this._precompute();\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n\n if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n // Private part\n _precompute: function _precompute() {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n this._precomputed = true;\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n this._calcSampleValues();\n }\n },\n _calcSampleValues: function _calcSampleValues() {\n var mX1 = this._p[0],\n mX2 = this._p[2];\n\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\n _getTForX: function _getTForX(aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues;\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample; // Interpolate to provide an initial guess for t\n\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n\n if (initialSlope === 0.0) {\n return guessForT;\n }\n\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n };\n return ob;\n }();\n\n var pooling = function () {\n function _double(arr) {\n return arr.concat(createSizedArray(arr.length));\n }\n\n return {\n \"double\": _double\n };\n }();\n\n var poolFactory = function () {\n return function (initialLength, _create, _release) {\n var _length = 0;\n var _maxLength = initialLength;\n var pool = createSizedArray(_maxLength);\n var ob = {\n newElement: newElement,\n release: release\n };\n\n function newElement() {\n var element;\n\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n\n return element;\n }\n\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n if (_release) {\n _release(element);\n }\n\n pool[_length] = element;\n _length += 1;\n }\n\n return ob;\n };\n }();\n\n var bezierLengthPool = function () {\n function create() {\n return {\n addedLength: 0,\n percents: createTypedArray('float32', getDefaultCurveSegments()),\n lengths: createTypedArray('float32', getDefaultCurveSegments())\n };\n }\n\n return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n\n function release(element) {\n var i;\n var len = element.lengths.length;\n\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n\n element.lengths.length = 0;\n }\n\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\n\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n return det1 > -0.001 && det1 < 0.001;\n }\n\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n if (z1 === 0 && z2 === 0 && z3 === 0) {\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n }\n\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n var diffDist;\n\n if (dist1 > dist2) {\n if (dist1 > dist3) {\n diffDist = dist1 - dist2 - dist3;\n } else {\n diffDist = dist3 - dist2 - dist1;\n }\n } else if (dist3 > dist2) {\n diffDist = dist3 - dist2 - dist1;\n } else {\n diffDist = dist2 - dist1 - dist3;\n }\n\n return diffDist > -0.0001 && diffDist < 0.0001;\n }\n\n var getBezierLength = function () {\n return function (pt1, pt2, pt3, pt4) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point = [];\n var lastPoint = [];\n var lengthData = bezierLengthPool.newElement();\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n\n lastPoint[i] = point[i];\n }\n\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n\n lengthData.addedLength = addedLength;\n return lengthData;\n };\n }();\n\n function getSegmentsLength(shapeData) {\n var segmentsLength = segmentsLengthPool.newElement();\n var closed = shapeData.c;\n var pathV = shapeData.v;\n var pathO = shapeData.o;\n var pathI = shapeData.i;\n var i;\n var len = shapeData._length;\n var lengths = segmentsLength.lengths;\n var totalLength = 0;\n\n for (i = 0; i < len - 1; i += 1) {\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n totalLength += lengths[i].addedLength;\n }\n\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\n }\n\n var buildBezierData = function () {\n var storedData = {};\n return function (pt1, pt2, pt3, pt4) {\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n\n if (!storedData[bezierName]) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point;\n var lastPoint = null;\n\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n curveSegments = 2;\n }\n\n var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n\n return storedData[bezierName];\n };\n }();\n\n function getDistancePerc(perc, bezierData) {\n var percents = bezierData.percents;\n var lengths = bezierData.lengths;\n var len = percents.length;\n var initPos = bmFloor((len - 1) * perc);\n var lengthPos = perc * bezierData.addedLength;\n var lPerc = 0;\n\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\n\n while (flag) {\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n flag = false;\n } else {\n initPos += dir;\n }\n\n if (initPos < 0 || initPos >= len - 1) {\n // FIX for TypedArrays that don't store floating point values with enough accuracy\n if (initPos === len - 1) {\n return percents[initPos];\n }\n\n flag = false;\n }\n }\n\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n }\n\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent, bezierData);\n var u1 = 1 - t1;\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n return [ptX, ptY];\n }\n\n var bezierSegmentPoints = createTypedArray('float32', 8);\n\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n if (startPerc < 0) {\n startPerc = 0;\n } else if (startPerc > 1) {\n startPerc = 1;\n }\n\n var t0 = getDistancePerc(startPerc, bezierData);\n endPerc = endPerc > 1 ? 1 : endPerc;\n var t1 = getDistancePerc(endPerc, bezierData);\n var i;\n var len = pt1.length;\n var u0 = 1 - t0;\n var u1 = 1 - t1;\n var u0u0u0 = u0 * u0 * u0;\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0t0 = t0 * t0 * t0; //\n\n var u0u0u1 = u0 * u0 * u1;\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0t1 = t0 * t0 * t1; //\n\n var u0u1u1 = u0 * u1 * u1;\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1t1 = t0 * t1 * t1; //\n\n var u1u1u1 = u1 * u1 * u1;\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1t1 = t1 * t1 * t1;\n\n for (i = 0; i < len; i += 1) {\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n }\n\n return bezierSegmentPoints;\n }\n\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n\n var bez = bezFunction();\n\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\n }\n\n var iterationIndex = caching.lastIndex;\n var i = iterationIndex;\n var len = this.keyframes.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n\n iterationIndex = 0;\n break;\n }\n\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n var k;\n var kLen;\n var perc;\n var jLen;\n var j;\n var fnc;\n var nextKeyTime = nextKeyData.t - offsetTime;\n var keyTime = keyData.t - offsetTime;\n var endValue;\n\n if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n\n var bezierData = keyframeMetadata.bezierData;\n\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n } // caching._lastKeyframeIndex = -1;\n\n } else {\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n var distanceInLine = bezierData.segmentLength * perc;\n var segmentPerc;\n var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n flag = true;\n jLen = bezierData.points.length;\n\n while (flag) {\n addedLength += bezierData.points[j].partialLength;\n\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\n }\n\n break;\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n }\n\n break;\n }\n\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\n }\n }\n\n caching._lastPoint = j;\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n caching._lastKeyframeIndex = i;\n }\n } else {\n var outX;\n var outY;\n var inX;\n var inY;\n var keyValue;\n len = keyData.s.length;\n endValue = nextKeyData.s || keyData.e;\n\n if (this.sh && keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n newValue[0] = endValue[0];\n newValue[1] = endValue[1];\n newValue[2] = endValue[2];\n } else if (frameNum <= keyTime) {\n newValue[0] = keyData.s[0];\n newValue[1] = keyData.s[1];\n newValue[2] = keyData.s[2];\n } else {\n var quatStart = createQuaternion(keyData.s);\n var quatEnd = createQuaternion(endValue);\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n }\n } else {\n for (i = 0; i < len; i += 1) {\n if (keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n perc = 1;\n } else if (frameNum < keyTime) {\n perc = 0;\n } else {\n if (keyData.o.x.constructor === Array) {\n if (!keyframeMetadata.__fnct) {\n keyframeMetadata.__fnct = [];\n }\n\n if (!keyframeMetadata.__fnct[i]) {\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyframeMetadata.__fnct[i] = fnc;\n } else {\n fnc = keyframeMetadata.__fnct[i];\n }\n } else if (!keyframeMetadata.__fnct) {\n outX = keyData.o.x;\n outY = keyData.o.y;\n inX = keyData.i.x;\n inY = keyData.i.y;\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyData.keyframeMetadata = fnc;\n } else {\n fnc = keyframeMetadata.__fnct;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n }\n }\n\n endValue = nextKeyData.s || keyData.e;\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n\n caching.lastIndex = iterationIndex;\n return newValue;\n } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\n function slerp(a, b, t) {\n var out = [];\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n var bx = b[0];\n var by = b[1];\n var bz = b[2];\n var bw = b[3];\n var omega;\n var cosom;\n var sinom;\n var scale0;\n var scale1;\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\n\n if (1.0 - cosom > 0.000001) {\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n scale0 = 1.0 - t;\n scale1 = t;\n }\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n }\n\n function quaternionToEuler(out, quat) {\n var qx = quat[0];\n var qy = quat[1];\n var qz = quat[2];\n var qw = quat[3];\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n out[0] = heading / degToRads;\n out[1] = attitude / degToRads;\n out[2] = bank / degToRads;\n }\n\n function createQuaternion(values) {\n var heading = values[0] * degToRads;\n var attitude = values[1] * degToRads;\n var bank = values[2] * degToRads;\n var c1 = Math.cos(heading / 2);\n var c2 = Math.cos(attitude / 2);\n var c3 = Math.cos(bank / 2);\n var s1 = Math.sin(heading / 2);\n var s2 = Math.sin(attitude / 2);\n var s3 = Math.sin(bank / 2);\n var w = c1 * c2 * c3 - s1 * s2 * s3;\n var x = s1 * s2 * c3 + c1 * c2 * s3;\n var y = s1 * c2 * c3 + c1 * s2 * s3;\n var z = c1 * s2 * c3 - s1 * c2 * s3;\n return [x, y, z, w];\n }\n\n function getValueAtCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n\n if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n if (this._caching.lastFrame >= frameNum) {\n this._caching._lastKeyframeIndex = -1;\n this._caching.lastIndex = 0;\n }\n\n var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function setVValue(val) {\n var multipliedValue;\n\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue;\n this._mdf = true;\n }\n } else {\n var i = 0;\n var len = this.v.length;\n\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n\n i += 1;\n }\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = this._isFirstFrame;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = this.kf ? this.pv : this.data.k;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n function ValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.mult = mult || 1;\n this.data = data;\n this.v = mult ? data.k * mult : data.k;\n this.pv = data.k;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.vel = 0;\n this.effectsSequence = [];\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function MultiDimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n this.mult = mult || 1;\n this.data = data;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.frameId = -1;\n var i;\n var len = data.k.length;\n this.v = createTypedArray('float32', len);\n this.pv = createTypedArray('float32', len);\n this.vel = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n this.v[i] = data.k[i] * this.mult;\n this.pv[i] = data.k[i];\n }\n\n this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function KeyframedValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.frameId = -1;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: 0,\n _lastKeyframeIndex: -1\n };\n this.k = true;\n this.kf = true;\n this.data = data;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.v = initFrame;\n this.pv = initFrame;\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.addEffect = addEffect;\n }\n\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n var i;\n var len = data.k.length;\n var s;\n var e;\n var to;\n var ti;\n\n for (i = 0; i < len - 1; i += 1) {\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n s = data.k[i].s;\n e = data.k[i + 1].s;\n to = data.k[i].to;\n ti = data.k[i].ti;\n\n if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n }\n }\n }\n\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.data = data;\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.k = true;\n this.kf = true;\n this._isFirstFrame = true;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.frameId = -1;\n var arrLen = data.k[0].s.length;\n this.v = createTypedArray('float32', arrLen);\n this.pv = createTypedArray('float32', arrLen);\n\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\n }\n\n var PropertyFactory = function () {\n function getProp(elem, data, type, mult, container) {\n if (data.sid) {\n data = elem.globalData.slotManager.getProp(data);\n }\n\n var p;\n\n if (!data.k.length) {\n p = new ValueProperty(elem, data, mult, container);\n } else if (typeof data.k[0] === 'number') {\n p = new MultiDimensionalProperty(elem, data, mult, container);\n } else {\n switch (type) {\n case 0:\n p = new KeyframedValueProperty(elem, data, mult, container);\n break;\n\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n\n default:\n break;\n }\n }\n\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n\n return p;\n }\n\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\n\n DynamicPropertyContainer.prototype = {\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n this.container.addDynamicProperty(this);\n this._isAnimated = true;\n }\n },\n iterateDynamicProperties: function iterateDynamicProperties() {\n this._mdf = false;\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this._mdf = true;\n }\n }\n },\n initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n this.container = container;\n this.dynamicProperties = [];\n this._mdf = false;\n this._isAnimated = false;\n }\n };\n\n var pointPool = function () {\n function create() {\n return createTypedArray('float32', 2);\n }\n\n return poolFactory(8, create);\n }();\n\n function ShapePath() {\n this.c = false;\n this._length = 0;\n this._maxLength = 8;\n this.v = createSizedArray(this._maxLength);\n this.o = createSizedArray(this._maxLength);\n this.i = createSizedArray(this._maxLength);\n }\n\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\n\n while (i < len) {\n this.v[i] = pointPool.newElement();\n this.o[i] = pointPool.newElement();\n this.i[i] = pointPool.newElement();\n i += 1;\n }\n };\n\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n\n this._length = len;\n };\n\n ShapePath.prototype.doubleArrayLength = function () {\n this.v = this.v.concat(createSizedArray(this._maxLength));\n this.i = this.i.concat(createSizedArray(this._maxLength));\n this.o = this.o.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n };\n\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n\n case 'i':\n arr = this.i;\n break;\n\n case 'o':\n arr = this.o;\n break;\n\n default:\n arr = [];\n break;\n }\n\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n\n arr[pos][0] = x;\n arr[pos][1] = y;\n };\n\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n this.setXYAt(vX, vY, 'v', pos, replace);\n this.setXYAt(oX, oY, 'o', pos, replace);\n this.setXYAt(iX, iY, 'i', pos, replace);\n };\n\n ShapePath.prototype.reverse = function () {\n var newPath = new ShapePath();\n newPath.setPathData(this.c, this._length);\n var vertices = this.v;\n var outPoints = this.o;\n var inPoints = this.i;\n var init = 0;\n\n if (this.c) {\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n init = 1;\n }\n\n var cnt = this._length - 1;\n var len = this._length;\n var i;\n\n for (i = init; i < len; i += 1) {\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n cnt -= 1;\n }\n\n return newPath;\n };\n\n ShapePath.prototype.length = function () {\n return this._length;\n };\n\n var shapePool = function () {\n function create() {\n return new ShapePath();\n }\n\n function release(shapePath) {\n var len = shapePath._length;\n var i;\n\n for (i = 0; i < len; i += 1) {\n pointPool.release(shapePath.v[i]);\n pointPool.release(shapePath.i[i]);\n pointPool.release(shapePath.o[i]);\n shapePath.v[i] = null;\n shapePath.i[i] = null;\n shapePath.o[i] = null;\n }\n\n shapePath._length = 0;\n shapePath.c = false;\n }\n\n function clone(shape) {\n var cloned = factory.newElement();\n var i;\n var len = shape._length === undefined ? shape.v.length : shape._length;\n cloned.setLength(len);\n cloned.c = shape.c;\n\n for (i = 0; i < len; i += 1) {\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n }\n\n return cloned;\n }\n\n var factory = poolFactory(4, create, release);\n factory.clone = clone;\n return factory;\n }();\n\n function ShapeCollection() {\n this._length = 0;\n this._maxLength = 4;\n this.shapes = createSizedArray(this._maxLength);\n }\n\n ShapeCollection.prototype.addShape = function (shapeData) {\n if (this._length === this._maxLength) {\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n }\n\n this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\n }\n\n this._length = 0;\n };\n\n var shapeCollectionPool = function () {\n var ob = {\n newShapeCollection: newShapeCollection,\n release: release\n };\n var _length = 0;\n var _maxLength = 4;\n var pool = createSizedArray(_maxLength);\n\n function newShapeCollection() {\n var shapeCollection;\n\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n\n return shapeCollection;\n }\n\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n\n shapeCollection._length = 0;\n\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n pool[_length] = shapeCollection;\n _length += 1;\n }\n\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\n\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex;\n var keyPropS;\n var keyPropE;\n var isHold;\n var j;\n var k;\n var jLen;\n var kLen;\n var perc;\n var vertexValue;\n var kf = this.keyframes;\n\n if (frameNum < kf[0].t - this.offsetTime) {\n keyPropS = kf[0].s[0];\n isHold = true;\n iterationIndex = 0;\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\n\n isHold = true;\n } else {\n var i = iterationIndex;\n var len = kf.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\n\n if (!isHold) {\n if (frameNum >= nextKeyData.t - this.offsetTime) {\n perc = 1;\n } else if (frameNum < keyData.t - this.offsetTime) {\n perc = 0;\n } else {\n var fnc;\n\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n\n keyPropS = keyData.s[0];\n }\n\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n\n for (j = 0; j < jLen; j += 1) {\n for (k = 0; k < kLen; k += 1) {\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n previousValue.i[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n previousValue.o[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n previousValue.v[j][k] = vertexValue;\n }\n }\n }\n\n function interpolateShapeCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n var lastFrame = this._caching.lastFrame;\n\n if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n /// /\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n this.interpolateShape(frameNum, this.pv, this._caching); /// /\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function resetShape() {\n this.paths = this.localShapeCollection;\n }\n\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n\n var i;\n var len = shape1._length;\n\n for (i = 0; i < len; i += 1) {\n if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n return false;\n }\n }\n\n return true;\n }\n\n function setVValue(newPath) {\n if (!shapesEqual(this.v, newPath)) {\n this.v = shapePool.clone(newPath);\n this.localShapeCollection.releaseShapes();\n this.localShapeCollection.addShape(this.v);\n this._mdf = true;\n this.paths = this.localShapeCollection;\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var finalValue;\n\n if (this.kf) {\n finalValue = this.pv;\n } else if (this.data.ks) {\n finalValue = this.data.ks.k;\n } else {\n finalValue = this.data.pt.k;\n }\n\n var i;\n var len = this.effectsSequence.length;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function ShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.container = elem;\n this.elem = elem;\n this.data = data;\n this.k = false;\n this.kf = false;\n this._mdf = false;\n var pathData = type === 3 ? data.pt.k : data.ks.k;\n this.v = shapePool.clone(pathData);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.reset = resetShape;\n this.effectsSequence = [];\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\n\n function KeyframedShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.elem = elem;\n this.container = elem;\n this.offsetTime = elem.data.st;\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n this.keyframesMetadata = [];\n this.k = true;\n this.kf = true;\n var len = this.keyframes[0].s[0].i.length;\n this.v = shapePool.newElement();\n this.v.setPathData(this.keyframes[0].s[0].c, len);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.lastFrame = initFrame;\n this.reset = resetShape;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0\n };\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n }\n\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\n\n function EllShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 4);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.localShapeCollection.addShape(this.v);\n this.d = data.d;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertEllToPath();\n }\n },\n convertEllToPath: function convertEllToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var s0 = this.s.v[0] / 2;\n var s1 = this.s.v[1] / 2;\n\n var _cw = this.d !== 3;\n\n var _v = this.v;\n _v.v[0][0] = p0;\n _v.v[0][1] = p1 - s1;\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.v[1][1] = p1;\n _v.v[2][0] = p0;\n _v.v[2][1] = p1 + s1;\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.v[3][1] = p1;\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.i[0][1] = p1 - s1;\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.i[1][1] = p1 - s1 * cPoint;\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.i[2][1] = p1 + s1;\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.i[3][1] = p1 + s1 * cPoint;\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.o[0][1] = p1 - s1;\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.o[1][1] = p1 + s1 * cPoint;\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.o[2][1] = p1 + s1;\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.o[3][1] = p1 - s1 * cPoint;\n }\n };\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n return EllShapePropertyFactory;\n }();\n\n var StarShapeProperty = function () {\n function StarShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 0);\n this.elem = elem;\n this.comp = elem.comp;\n this.data = data;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n\n if (data.sy === 1) {\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n this.convertToPath = this.convertStarToPath;\n } else {\n this.convertToPath = this.convertPolygonToPath;\n }\n\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertToPath();\n }\n },\n convertStarToPath: function convertStarToPath() {\n var numPts = Math.floor(this.pt.v) * 2;\n var angle = Math.PI * 2 / numPts;\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\n\n var longFlag = true;\n var longRad = this.or.v;\n var shortRad = this.ir.v;\n var longRound = this.os.v;\n var shortRound = this.is.v;\n var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n var i;\n var rad;\n var roundness;\n var perimSegment;\n var currentAng = -Math.PI / 2;\n currentAng += this.r.v;\n var dir = this.data.d === 3 ? -1 : 1;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n rad = longFlag ? longRad : shortRad;\n roundness = longFlag ? longRound : shortRound;\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\n\n longFlag = !longFlag;\n currentAng += angle * dir;\n }\n },\n convertPolygonToPath: function convertPolygonToPath() {\n var numPts = Math.floor(this.pt.v);\n var angle = Math.PI * 2 / numPts;\n var rad = this.or.v;\n var roundness = this.os.v;\n var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n var i;\n var currentAng = -Math.PI * 0.5;\n var dir = this.data.d === 3 ? -1 : 1;\n currentAng += this.r.v;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n currentAng += angle * dir;\n }\n\n this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\n }();\n\n var RectShapeProperty = function () {\n function RectShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.c = true;\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\n }\n }\n\n RectShapePropertyFactory.prototype = {\n convertRectToPath: function convertRectToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var v0 = this.s.v[0] / 2;\n var v1 = this.s.v[1] / 2;\n var round = bmMin(v0, v1, this.r.v);\n var cPoint = round * (1 - roundCorner);\n this.v._length = 0;\n\n if (this.d === 2 || this.d === 1) {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n }\n } else {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n }\n }\n },\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n\n function getShapeProp(elem, data, type) {\n var prop;\n\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\n\n if (keys.length) {\n prop = new KeyframedShapeProperty(elem, data, type);\n } else {\n prop = new ShapeProperty(elem, data, type);\n }\n } else if (type === 5) {\n prop = new RectShapeProperty(elem, data);\n } else if (type === 6) {\n prop = new EllShapeProperty(elem, data);\n } else if (type === 7) {\n prop = new StarShapeProperty(elem, data);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n }\n\n function getConstructorFunction() {\n return ShapeProperty;\n }\n\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\n\n /**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\n\n var Matrix = function () {\n var _cos = Math.cos;\n var _sin = Math.sin;\n var _tan = Math.tan;\n var _rnd = Math.round;\n\n function reset() {\n this.props[0] = 1;\n this.props[1] = 0;\n this.props[2] = 0;\n this.props[3] = 0;\n this.props[4] = 0;\n this.props[5] = 1;\n this.props[6] = 0;\n this.props[7] = 0;\n this.props[8] = 0;\n this.props[9] = 0;\n this.props[10] = 1;\n this.props[11] = 0;\n this.props[12] = 0;\n this.props[13] = 0;\n this.props[14] = 0;\n this.props[15] = 1;\n return this;\n }\n\n function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n }\n\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n }\n\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n this.props[0] = a;\n this.props[1] = b;\n this.props[2] = c;\n this.props[3] = d;\n this.props[4] = e;\n this.props[5] = f;\n this.props[6] = g;\n this.props[7] = h;\n this.props[8] = i;\n this.props[9] = j;\n this.props[10] = k;\n this.props[11] = l;\n this.props[12] = m;\n this.props[13] = n;\n this.props[14] = o;\n this.props[15] = p;\n return this;\n }\n\n function translate(tx, ty, tz) {\n tz = tz || 0;\n\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n }\n\n return this;\n }\n\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n var _p = this.props;\n\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n _p[12] = _p[12] * a2 + _p[15] * m2;\n _p[13] = _p[13] * f2 + _p[15] * n2;\n _p[14] = _p[14] * k2 + _p[15] * o2;\n _p[15] *= p2; // }\n\n this._identityCalculated = false;\n return this;\n }\n\n var a1 = _p[0];\n var b1 = _p[1];\n var c1 = _p[2];\n var d1 = _p[3];\n var e1 = _p[4];\n var f1 = _p[5];\n var g1 = _p[6];\n var h1 = _p[7];\n var i1 = _p[8];\n var j1 = _p[9];\n var k1 = _p[10];\n var l1 = _p[11];\n var m1 = _p[12];\n var n1 = _p[13];\n var o1 = _p[14];\n var p1 = _p[15];\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\n\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n this._identityCalculated = false;\n return this;\n }\n\n function multiply(matrix) {\n var matrixProps = matrix.props;\n return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\n }\n\n function isIdentity() {\n if (!this._identityCalculated) {\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n this._identityCalculated = true;\n }\n\n return this._identity;\n }\n\n function equals(matr) {\n var i = 0;\n\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n }\n\n function clone(matr) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n\n return matr;\n }\n\n function cloneFromProps(props) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\n }\n }\n\n function applyToPoint(x, y, z) {\n return {\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n };\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\n }\n\n function applyToX(x, y, z) {\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n }\n\n function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n }\n\n function applyToZ(x, y, z) {\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n }\n\n function getInverseMatrix() {\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n var a = this.props[5] / determinant;\n var b = -this.props[1] / determinant;\n var c = -this.props[4] / determinant;\n var d = this.props[0] / determinant;\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n var inverseMatrix = new Matrix();\n inverseMatrix.props[0] = a;\n inverseMatrix.props[1] = b;\n inverseMatrix.props[4] = c;\n inverseMatrix.props[5] = d;\n inverseMatrix.props[12] = e;\n inverseMatrix.props[13] = f;\n return inverseMatrix;\n }\n\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n\n return retPts;\n }\n\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\n\n if (this.isIdentity()) {\n arr[0] = pt1[0];\n arr[1] = pt1[1];\n arr[2] = pt2[0];\n arr[3] = pt2[1];\n arr[4] = pt3[0];\n arr[5] = pt3[1];\n } else {\n var p0 = this.props[0];\n var p1 = this.props[1];\n var p4 = this.props[4];\n var p5 = this.props[5];\n var p12 = this.props[12];\n var p13 = this.props[13];\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n }\n\n return arr;\n }\n\n function applyToPointArray(x, y, z) {\n var arr;\n\n if (this.isIdentity()) {\n arr = [x, y, z];\n } else {\n arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n }\n\n return arr;\n }\n\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\n }\n\n var _p = this.props;\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n }\n\n function toCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n\n return cssValue;\n }\n\n function roundMatrixProperty(val) {\n var v = 10000;\n\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n\n return val;\n }\n\n function to2dCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var props = this.props;\n\n var _a = roundMatrixProperty(props[0]);\n\n var _b = roundMatrixProperty(props[1]);\n\n var _c = roundMatrixProperty(props[4]);\n\n var _d = roundMatrixProperty(props[5]);\n\n var _e = roundMatrixProperty(props[12]);\n\n var _f = roundMatrixProperty(props[13]);\n\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n }\n\n return function () {\n this.reset = reset;\n this.rotate = rotate;\n this.rotateX = rotateX;\n this.rotateY = rotateY;\n this.rotateZ = rotateZ;\n this.skew = skew;\n this.skewFromAxis = skewFromAxis;\n this.shear = shear;\n this.scale = scale;\n this.setTransform = setTransform;\n this.translate = translate;\n this.transform = transform;\n this.multiply = multiply;\n this.applyToPoint = applyToPoint;\n this.applyToX = applyToX;\n this.applyToY = applyToY;\n this.applyToZ = applyToZ;\n this.applyToPointArray = applyToPointArray;\n this.applyToTriplePoints = applyToTriplePoints;\n this.applyToPointStringified = applyToPointStringified;\n this.toCSS = toCSS;\n this.to2dCSS = to2dCSS;\n this.clone = clone;\n this.cloneFromProps = cloneFromProps;\n this.equals = equals;\n this.inversePoints = inversePoints;\n this.inversePoint = inversePoint;\n this.getInverseMatrix = getInverseMatrix;\n this._t = this.transform;\n this.isIdentity = isIdentity;\n this._identity = true;\n this._identityCalculated = false;\n this.props = createTypedArray('float32', 16);\n this.reset();\n };\n }();\n\n function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n\n function setLocation(href) {\n setLocationHref(href);\n }\n\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n\n return animationManager.loadAnimation(params);\n }\n\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n\n case 'matrix':\n return Matrix;\n\n default:\n return null;\n }\n }\n\n lottie.play = animationManager.play;\n lottie.pause = animationManager.pause;\n lottie.setLocationHref = setLocation;\n lottie.togglePause = animationManager.togglePause;\n lottie.setSpeed = animationManager.setSpeed;\n lottie.setDirection = animationManager.setDirection;\n lottie.stop = animationManager.stop;\n lottie.searchAnimations = searchAnimations;\n lottie.registerAnimation = animationManager.registerAnimation;\n lottie.loadAnimation = loadAnimation;\n lottie.setSubframeRendering = setSubframeRendering;\n lottie.resize = animationManager.resize; // lottie.start = start;\n\n lottie.goToAndStop = animationManager.goToAndStop;\n lottie.destroy = animationManager.destroy;\n lottie.setQuality = setQuality;\n lottie.inBrowser = inBrowser;\n lottie.installPlugin = installPlugin;\n lottie.freeze = animationManager.freeze;\n lottie.unfreeze = animationManager.unfreeze;\n lottie.setVolume = animationManager.setVolume;\n lottie.mute = animationManager.mute;\n lottie.unmute = animationManager.unmute;\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n lottie.useWebWorker = setWebWorker;\n lottie.setIDPrefix = setPrefix;\n lottie.__getFactory = getFactory;\n lottie.version = '5.12.2';\n\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n\n return null;\n }\n\n var queryString = '';\n\n if (standalone) {\n var scripts = document.getElementsByTagName('script');\n var index = scripts.length - 1;\n var myScript = scripts[index] || {\n src: ''\n };\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n\n renderer = getQueryVariable('renderer');\n }\n\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\n try {\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n ) {\n window.bodymovin = lottie;\n }\n } catch (err) {//\n }\n\n var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n\n return ob;\n }();\n\n function ShapeModifier() {}\n\n ShapeModifier.prototype.initModifierProperties = function () {};\n\n ShapeModifier.prototype.addShapeToModifier = function () {};\n\n ShapeModifier.prototype.addShape = function (data) {\n if (!this.closed) {\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n data.sh.container.addDynamicProperty(data.sh);\n var shapeData = {\n shape: data.sh,\n data: data,\n localShapeCollection: shapeCollectionPool.newShapeCollection()\n };\n this.shapes.push(shapeData);\n this.addShapeToModifier(shapeData);\n\n if (this._isAnimated) {\n data.setAsAnimated();\n }\n }\n };\n\n ShapeModifier.prototype.init = function (elem, data) {\n this.shapes = [];\n this.elem = elem;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, data);\n this.frameId = initialDefaultFrame;\n this.closed = false;\n this.k = false;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n\n extendPrototype([ShapeModifier], TrimModifier);\n\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n this.sValue = 0;\n this.eValue = 0;\n this.getValue = this.processKeys;\n this.m = data.m;\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n };\n\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\n\n if (e <= 1) {\n segments.push({\n s: s,\n e: e\n });\n } else if (s >= 1) {\n segments.push({\n s: s - 1,\n e: e - 1\n });\n } else {\n segments.push({\n s: s,\n e: 1\n });\n segments.push({\n s: 0,\n e: e - 1\n });\n }\n\n var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n\n return shapeSegments;\n };\n\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n\n pathsData.length = 0;\n return pathsData;\n };\n\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n\n if (o < 0) {\n o += 1;\n }\n\n if (this.s.v > 1) {\n s = 1 + o;\n } else if (this.s.v < 0) {\n s = 0 + o;\n } else {\n s = this.s.v + o;\n }\n\n if (this.e.v > 1) {\n e = 1 + o;\n } else if (this.e.v < 0) {\n e = 0 + o;\n } else {\n e = this.e.v + o;\n }\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n s = Math.round(s * 10000) * 0.0001;\n e = Math.round(e * 10000) * 0.0001;\n this.sValue = s;\n this.eValue = e;\n } else {\n s = this.sValue;\n e = this.eValue;\n }\n\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var pathsData;\n var pathData;\n var totalShapeLength;\n var totalModifierLength = 0;\n\n if (e === s) {\n for (i = 0; i < len; i += 1) {\n this.shapes[i].localShapeCollection.releaseShapes();\n this.shapes[i].shape._mdf = true;\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n\n if (this._mdf) {\n this.shapes[i].pathsData.length = 0;\n }\n }\n } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n var segments = [];\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n shapeData.shape.paths = shapeData.localShapeCollection;\n } else {\n shapePaths = shapeData.shape.paths;\n jLen = shapePaths._length;\n totalShapeLength = 0;\n\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\n\n for (j = 0; j < jLen; j += 1) {\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n pathsData.push(pathData);\n totalShapeLength += pathData.totalLength;\n }\n\n shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\n if (this.m === 2 && len > 1) {\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n addedLength += shapeData.totalShapeLength;\n } else {\n edges = [[shapeS, shapeE]];\n }\n\n jLen = edges.length;\n\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\n\n if (shapeE <= 1) {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength * shapeE\n });\n } else if (shapeS >= 1) {\n segments.push({\n s: shapeData.totalShapeLength * (shapeS - 1),\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n } else {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength\n });\n segments.push({\n s: 0,\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n }\n\n var newShapesData = this.addShapes(shapeData, segments[0]);\n\n if (segments[0].s !== segments[0].e) {\n if (segments.length > 1) {\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n\n if (lastShapeInCollection.c) {\n var lastShape = newShapesData.pop();\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n } else {\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1]);\n }\n }\n\n this.addPaths(newShapesData, localShapeCollection);\n }\n }\n\n shapeData.shape.paths = localShapeCollection;\n }\n }\n } else if (this._mdf) {\n for (i = 0; i < len; i += 1) {\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n // Don't remove this even if it's losing cached info.\n this.shapes[i].pathsData.length = 0;\n this.shapes[i].shape._mdf = true;\n }\n }\n };\n\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\n };\n\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n shapePath.setXYAt(points[1], points[5], 'o', pos);\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData;\n var shapePaths = shapeData.shape.paths.shapes;\n var i;\n var len = shapeData.shape.paths._length;\n var j;\n var jLen;\n var addedLength = 0;\n var currentLengthData;\n var segmentCount;\n var lengths;\n var segment;\n var shapes = [];\n var initPos;\n var newShape = true;\n\n if (!shapePath) {\n shapePath = shapePool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n\n shapes.push(shapePath);\n\n for (i = 0; i < len; i += 1) {\n lengths = pathsData[i].lengths;\n shapePath.c = shapePaths[i].c;\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n addedLength += currentLengthData.addedLength;\n shapePath.c = false;\n } else if (addedLength > shapeSegment.e) {\n shapePath.c = false;\n break;\n } else {\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\n\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n\n if (shapePath._length) {\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n }\n\n if (addedLength > shapeSegment.e) {\n break;\n }\n\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this._isAnimated = !!this.amount.effectsSequence.length;\n };\n\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n var percent = amount / 100;\n var centerPoint = [0, 0];\n var pathLength = path._length;\n var i = 0;\n\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\n }\n\n centerPoint[0] /= pathLength;\n centerPoint[1] /= pathLength;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < pathLength; i += 1) {\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n }\n\n return clonedPath;\n };\n\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r) {\n mat.rotate(-this.r.v);\n } else {\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.data.p.s) {\n if (this.data.p.z) {\n mat.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n mat.translate(this.px.v, this.py.v, 0);\n }\n } else {\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n\n this.iterateDynamicProperties();\n\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n this.v.rotate(-this.r.v);\n } else if (!this.r && this.appliedTransformations < 4) {\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\n\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n } else {\n v1 = this.p.pv;\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n }\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n v1 = [];\n v2 = [];\n var px = this.px;\n var py = this.py;\n\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n } else {\n v1 = [px.pv, py.pv];\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n }\n } else {\n v2 = defaultVector;\n v1 = v2;\n }\n\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n }\n\n if (this.data.p && this.data.p.s) {\n if (this.data.p.z) {\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n this.v.translate(this.px.v, this.py.v, 0);\n }\n } else {\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n this.frameId = this.elem.globalData.frameId;\n }\n\n function precalculateMatrix() {\n this.appliedTransformations = 0;\n this.pre.reset();\n\n if (!this.a.effectsSequence.length) {\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n this.appliedTransformations = 1;\n } else {\n return;\n }\n\n if (!this.s.effectsSequence.length) {\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n this.appliedTransformations = 2;\n } else {\n return;\n }\n\n if (this.sk) {\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n this.appliedTransformations = 3;\n } else {\n return;\n }\n }\n\n if (this.r) {\n if (!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v);\n this.appliedTransformations = 4;\n }\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n this.appliedTransformations = 4;\n }\n }\n\n function autoOrient() {//\n // var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\n }\n\n function TransformProperty(elem, data, container) {\n this.elem = elem;\n this.frameId = -1;\n this.propType = 'transform';\n this.data = data;\n this.v = new Matrix(); // Precalculated matrix with non animated properties\n\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\n\n if (data.p && data.p.s) {\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n\n if (data.p.z) {\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n }\n } else {\n this.p = PropertyFactory.getProp(elem, data.p || {\n k: [0, 0, 0]\n }, 1, 0, this);\n }\n\n if (data.rx) {\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n\n if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.or.k[i].to = null;\n data.or.k[i].ti = null;\n }\n }\n\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\n }\n\n if (data.sk) {\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n }\n\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: [0, 0, 0]\n }, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: [100, 100, 100]\n }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n\n if (data.o) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n } else {\n this.o = {\n _mdf: false,\n v: 1\n };\n }\n\n this._isDirty = true;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n }\n\n TransformProperty.prototype = {\n applyToMatrix: applyToMatrix,\n getValue: processKeys,\n precalculateMatrix: precalculateMatrix,\n autoOrient: autoOrient\n };\n extendPrototype([DynamicPropertyContainer], TransformProperty);\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n\n extendPrototype([ShapeModifier], RepeaterModifier);\n\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n this.data = data;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n\n this._isAnimated = !!this.dynamicProperties.length;\n this.pMatrix = new Matrix();\n this.rMatrix = new Matrix();\n this.sMatrix = new Matrix();\n this.tMatrix = new Matrix();\n this.matrix = new Matrix();\n };\n\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n var dir = inv ? -1 : 1;\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n rMatrix.rotate(-transform.r.v * dir * perc);\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n };\n\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n this.elem = elem;\n this.arr = arr;\n this.pos = pos;\n this.elemsData = elemsData;\n this._currentCopies = 0;\n this._elements = [];\n this._groups = [];\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, arr[pos]);\n\n while (pos > 0) {\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n this._elements.unshift(arr[pos]);\n }\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\n }\n }\n };\n\n RepeaterModifier.prototype.cloneElements = function (elements) {\n var newElements = JSON.parse(JSON.stringify(elements));\n this.resetElements(newElements);\n return newElements;\n };\n\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\n }\n };\n\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n var items;\n var itemsTransform;\n var i;\n var dir;\n var cont;\n var hasReloaded = false;\n\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\n\n if (this._groups.length < copies) {\n while (this._groups.length < copies) {\n var group = {\n it: this.cloneElements(this._elements),\n ty: 'gr'\n };\n group.it.push({\n a: {\n a: 0,\n ix: 1,\n k: [0, 0]\n },\n nm: 'Transform',\n o: {\n a: 0,\n ix: 7,\n k: 100\n },\n p: {\n a: 0,\n ix: 2,\n k: [0, 0]\n },\n r: {\n a: 1,\n ix: 6,\n k: [{\n s: 0,\n e: 0,\n t: 0\n }, {\n s: 0,\n e: 0,\n t: 1\n }]\n },\n s: {\n a: 0,\n ix: 3,\n k: [100, 100]\n },\n sa: {\n a: 0,\n ix: 5,\n k: 0\n },\n sk: {\n a: 0,\n ix: 4,\n k: 0\n },\n ty: 'tr'\n });\n this.arr.splice(0, 0, group);\n\n this._groups.splice(0, 0, group);\n\n this._currentCopies += 1;\n }\n\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n\n cont = 0;\n var renderFlag;\n\n for (i = 0; i <= this._groups.length - 1; i += 1) {\n renderFlag = cont < copies;\n this._groups[i]._render = renderFlag;\n this.changeGroupRender(this._groups[i].it, renderFlag);\n\n if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\n\n if (transformData.transform.op.v !== 0) {\n transformData.transform.op._mdf = true;\n transformData.transform.op.v = 0;\n } else {\n transformData.transform.op._mdf = false;\n }\n }\n\n cont += 1;\n }\n\n this._currentCopies = copies; /// /\n\n var offset = this.o.v;\n var offsetModulo = offset % 1;\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n var pProps = this.pMatrix.props;\n var rProps = this.rMatrix.props;\n var sProps = this.sMatrix.props;\n this.pMatrix.reset();\n this.rMatrix.reset();\n this.sMatrix.reset();\n this.tMatrix.reset();\n this.matrix.reset();\n var iteration = 0;\n\n if (offset > 0) {\n while (iteration < roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n iteration += 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n iteration += offsetModulo;\n }\n } else if (offset < 0) {\n while (iteration > roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n iteration -= 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\n }\n }\n\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n dir = this.data.m === 1 ? 1 : -1;\n cont = this._currentCopies;\n var j;\n var jLen;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n jLen = itemsTransform.length;\n items[items.length - 1].transform.mProps._mdf = true;\n items[items.length - 1].transform.op._mdf = true;\n items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n\n if (iteration !== 0) {\n if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n }\n\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n\n this.matrix.reset();\n } else {\n this.matrix.reset();\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n }\n\n iteration += 1;\n cont -= 1;\n i += dir;\n }\n } else {\n cont = this._currentCopies;\n i = 0;\n dir = 1;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n items[items.length - 1].transform.mProps._mdf = false;\n items[items.length - 1].transform.op._mdf = false;\n cont -= 1;\n i += dir;\n }\n }\n\n return hasReloaded;\n };\n\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n\n extendPrototype([ShapeModifier], RoundCornersModifier);\n\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this._isAnimated = !!this.rd.effectsSequence.length;\n };\n\n RoundCornersModifier.prototype.processPath = function (path, round) {\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var i;\n var len = path._length;\n var currentV;\n var currentI;\n var currentO;\n var closerV;\n var distance;\n var newPosPerc;\n var index = 0;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\n\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n if ((i === 0 || i === len - 1) && !path.c) {\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\n\n index += 1;\n } else {\n if (i === 0) {\n closerV = path.v[len - 1];\n } else {\n closerV = path.v[i - 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = iX;\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n vY = iY;\n oX = vX - (vX - currentV[0]) * roundCorner;\n oY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n\n if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = oX;\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n vY = oY;\n iX = vX - (vX - currentV[0]) * roundCorner;\n iY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n }\n } else {\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n index += 1;\n }\n }\n\n return clonedPath;\n };\n\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var rd = this.rd.v;\n\n if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function floatEqual(a, b) {\n return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n }\n\n function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c; // Complex roots\n\n if (s < 0) return [];\n var singleRoot = -b / (2 * a); // 1 root\n\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a); // 2 roots\n\n return [singleRoot - delta, singleRoot + delta];\n }\n\n function polynomialCoefficients(p0, p1, p2, p3) {\n return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n }\n\n function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\n }\n\n var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n this.a = [coeffx[0], coeffy[0]];\n this.b = [coeffx[1], coeffy[1]];\n this.c = [coeffx[2], coeffy[2]];\n this.d = [coeffx[3], coeffy[3]];\n this.points = [p0, p1, p2, p3];\n }\n\n PolynomialBezier.prototype.point = function (t) {\n return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\n };\n\n PolynomialBezier.prototype.derivative = function (t) {\n return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\n };\n\n PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\n };\n\n PolynomialBezier.prototype.inflectionPoints = function () {\n var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n if (floatZero(denom)) return [];\n var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n if (square < 0) return [];\n var root = Math.sqrt(square);\n\n if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\n });\n };\n\n PolynomialBezier.prototype.split = function (t) {\n if (t <= 0) return [singlePoint(this.points[0]), this];\n if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n var p10 = lerpPoint(this.points[0], this.points[1], t);\n var p11 = lerpPoint(this.points[1], this.points[2], t);\n var p12 = lerpPoint(this.points[2], this.points[3], t);\n var p20 = lerpPoint(p10, p11, t);\n var p21 = lerpPoint(p11, p12, t);\n var p3 = lerpPoint(p20, p21, t);\n return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n };\n\n function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n } // Derivative roots to find min/max\n\n\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n\n for (var i = 0; i < f.length; i += 1) {\n if (f[i] > 0 && f[i] < 1) {\n var val = bez.point(f[i])[comp];\n if (val < min) min = val;else if (val > max) max = val;\n }\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\n };\n };\n\n PolynomialBezier.prototype.boundingBox = function () {\n var bounds = this.bounds();\n return {\n left: bounds.x.min,\n right: bounds.x.max,\n top: bounds.y.min,\n bottom: bounds.y.max,\n width: bounds.x.max - bounds.x.min,\n height: bounds.y.max - bounds.y.min,\n cx: (bounds.x.max + bounds.x.min) / 2,\n cy: (bounds.y.max + bounds.y.min) / 2\n };\n };\n\n function intersectData(bez, t1, t2) {\n var box = bez.boundingBox();\n return {\n cx: box.cx,\n cy: box.cy,\n width: box.width,\n height: box.height,\n bez: bez,\n t: (t1 + t2) / 2,\n t1: t1,\n t2: t2\n };\n }\n\n function splitData(data) {\n var split = data.bez.split(0.5);\n return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n }\n\n function boxIntersect(b1, b2) {\n return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n }\n\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\n\n if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n intersections.push([d1.t, d2.t]);\n return;\n }\n\n var d1s = splitData(d1);\n var d2s = splitData(d2);\n intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n }\n\n PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n if (tolerance === undefined) tolerance = 2;\n if (maxRecursion === undefined) maxRecursion = 7;\n var intersections = [];\n intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n return intersections;\n };\n\n PolynomialBezier.shapeSegment = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n };\n\n PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n };\n\n function crossProduct(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n }\n\n function lineIntersection(start1, end1, start2, end2) {\n var v1 = [start1[0], start1[1], 1];\n var v2 = [end1[0], end1[1], 1];\n var v3 = [start2[0], start2[1], 1];\n var v4 = [end2[0], end2[1], 1];\n var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n if (floatZero(r[2])) return null;\n return [r[0] / r[2], r[1] / r[2]];\n }\n\n function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n\n extendPrototype([ShapeModifier], ZigZagModifier);\n\n ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n };\n\n function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n var angO = angle - Math.PI / 2;\n var angI = angle + Math.PI / 2;\n var px = point[0] + Math.cos(angle) * direction * amplitude;\n var py = point[1] - Math.sin(angle) * direction * amplitude;\n outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n }\n\n function getPerpendicularVector(pt1, pt2) {\n var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n var rot = -Math.PI * 0.5;\n var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n return rotatedVector;\n }\n\n function getProjectingAngle(path, cur) {\n var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n var nextIndex = (cur + 1) % path.length();\n var prevPoint = path.v[prevIndex];\n var nextPoint = path.v[nextIndex];\n var pVector = getPerpendicularVector(prevPoint, nextPoint);\n return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n }\n\n function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n var angle = getProjectingAngle(path, cur);\n var point = path.v[cur % path._length];\n var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n var nextPoint = path.v[(cur + 1) % path._length];\n var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n }\n\n function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n for (var i = 0; i < frequency; i += 1) {\n var t = (i + 1) / (frequency + 1);\n var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n var angle = segment.normalAngle(t);\n var point = segment.point(t);\n setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n direction = -direction;\n }\n\n return direction;\n }\n\n ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n var count = path._length;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n\n if (!path.c) {\n count -= 1;\n }\n\n if (count === 0) return clonedPath;\n var direction = -1;\n var segment = PolynomialBezier.shapeSegment(path, 0);\n zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n\n for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n\n return clonedPath;\n };\n\n ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amplitude = this.amplitude.v;\n var frequency = Math.max(0, Math.round(this.frequency.v));\n var pointType = this.pointsType.v;\n\n if (amplitude !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function linearOffset(p1, p2, amount) {\n var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n }\n\n function offsetSegment(segment, amount) {\n var p0;\n var p1a;\n var p1b;\n var p2b;\n var p2a;\n var p3;\n var e;\n e = linearOffset(segment.points[0], segment.points[1], amount);\n p0 = e[0];\n p1a = e[1];\n e = linearOffset(segment.points[1], segment.points[2], amount);\n p1b = e[0];\n p2b = e[1];\n e = linearOffset(segment.points[2], segment.points[3], amount);\n p2a = e[0];\n p3 = e[1];\n var p1 = lineIntersection(p0, p1a, p1b, p2b);\n if (p1 === null) p1 = p1a;\n var p2 = lineIntersection(p2a, p3, p1b, p2b);\n if (p2 === null) p2 = p2a;\n return new PolynomialBezier(p0, p1, p2, p3);\n }\n\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0]; // Bevel\n\n if (lineJoin === 3) return p0; // Connected, they don't need a joint\n\n if (pointEqual(p0, p1)) return p0; // Round\n\n if (lineJoin === 2) {\n var angleOut = -seg1.tangentAngle(1);\n var angleIn = -seg2.tangentAngle(0) + Math.PI;\n var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n return p1;\n } // Miter\n\n\n var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n var intersection = lineIntersection(t0, p0, p1, t1);\n\n if (intersection && pointDistance(intersection, p0) < miterLimit) {\n outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n return intersection;\n }\n\n return p0;\n }\n\n function getIntersection(a, b) {\n var intersect = a.intersections(b);\n if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n if (intersect.length) return intersect[0];\n return null;\n }\n\n function pruneSegmentIntersection(a, b) {\n var outa = a.slice();\n var outb = b.slice();\n var intersect = getIntersection(a[a.length - 1], b[0]);\n\n if (intersect) {\n outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n outb[0] = b[0].split(intersect[1])[1];\n }\n\n if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n\n return [outa, outb];\n }\n\n function pruneIntersections(segments) {\n var e;\n\n for (var i = 1; i < segments.length; i += 1) {\n e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n segments[i - 1] = e[0];\n segments[i] = e[1];\n }\n\n if (segments.length > 1) {\n e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n segments[segments.length - 1] = e[0];\n segments[0] = e[1];\n }\n\n return segments;\n }\n\n function offsetSegmentSplit(segment, amount) {\n /*\r\n We split each bezier segment into smaller pieces based\r\n on inflection points, this ensures the control point\r\n polygon is convex.\r\n (A cubic bezier can have none, one, or two inflection points)\r\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\n }\n\n if (flex.length === 1 || floatEqual(flex[1], 1)) {\n split = segment.split(flex[0]);\n left = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(right, amount)];\n }\n\n split = segment.split(flex[0]);\n left = split[0];\n var t = (flex[1] - flex[0]) / (1 - flex[0]);\n split = split[1].split(t);\n mid = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n }\n\n function OffsetPathModifier() {}\n\n extendPrototype([ShapeModifier], OffsetPathModifier);\n\n OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n this.lineJoin = data.lj;\n this._isAnimated = this.amount.effectsSequence.length !== 0;\n };\n\n OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n var outputBezier = shapePool.newElement();\n outputBezier.c = inputBezier.c;\n var count = inputBezier.length();\n\n if (!inputBezier.c) {\n count -= 1;\n }\n\n var i;\n var j;\n var segment;\n var multiSegments = [];\n\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n\n if (!inputBezier.c) {\n for (i = count - 1; i >= 0; i -= 1) {\n segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n }\n\n multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\n\n var lastPoint = null;\n var lastSeg = null;\n\n for (i = 0; i < multiSegments.length; i += 1) {\n var multiSegment = multiSegments[i];\n if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n lastSeg = multiSegment[multiSegment.length - 1];\n\n for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\n\n if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n } else {\n outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n }\n\n outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n lastPoint = segment.points[3];\n }\n }\n\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\n };\n\n OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n var miterLimit = this.miterLimit.v;\n var lineJoin = this.lineJoin;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function getFontProperties(fontData) {\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n var fWeight = 'normal';\n var fStyle = 'normal';\n var len = styles.length;\n var styleName;\n\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n\n case 'bold':\n fWeight = '700';\n break;\n\n case 'black':\n fWeight = '900';\n break;\n\n case 'medium':\n fWeight = '500';\n break;\n\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n\n default:\n break;\n }\n }\n\n return {\n style: fStyle,\n weight: fontData.fWeight || fWeight\n };\n }\n\n var FontManager = function () {\n var maxWaitingTime = 5000;\n var emptyChar = {\n w: 0,\n size: 0,\n shapes: [],\n data: {\n shapes: []\n }\n };\n var combinedCharacters = []; // Hindi characters\n\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n var BLACK_FLAG_CODE_POINT = 127988;\n var CANCEL_TAG_CODE_POINT = 917631;\n var A_TAG_CODE_POINT = 917601;\n var Z_TAG_CODE_POINT = 917626;\n var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n\n function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\n\n for (i = 0; i < len; i += 1) {\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n enabledFamilies.push(familyArray[i]);\n }\n }\n\n return enabledFamilies.join(',');\n }\n\n function setUpNode(font, family) {\n var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span'); // Characters that vary significantly among different fonts\n\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n parentNode.style.fontSize = '300px'; // Reset any font properties\n\n parentNode.style.fontVariant = 'normal';\n parentNode.style.fontStyle = 'normal';\n parentNode.style.fontWeight = 'normal';\n parentNode.style.letterSpacing = '0';\n parentNode.appendChild(node);\n document.body.appendChild(parentNode); // Remember width with no applied web font\n\n var width = node.offsetWidth;\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n return {\n node: node,\n w: width,\n parent: parentNode\n };\n }\n\n function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\n\n for (i = 0; i < len; i += 1) {\n if (this.fonts[i].loaded) {\n loadedCount -= 1;\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].monoCase.node;\n w = this.fonts[i].monoCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].sansCase.node;\n w = this.fonts[i].sansCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n }\n }\n\n if (this.fonts[i].loaded) {\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n }\n }\n }\n\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\n tHelper.setAttribute('font-family', fontData.fFamily);\n tHelper.setAttribute('font-style', fontProps.style);\n tHelper.setAttribute('font-weight', fontProps.weight);\n tHelper.textContent = '1';\n\n if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit';\n tHelper.setAttribute('class', fontData.fClass);\n } else {\n tHelper.style.fontFamily = fontData.fFamily;\n }\n\n def.appendChild(tHelper);\n helper = tHelper;\n } else {\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n helper = tCanvasHelper;\n }\n\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n\n return helper.measureText(text).width;\n }\n\n return {\n measureText: measure\n };\n }\n\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\n }\n\n if (!document.body) {\n this.isLoaded = true;\n fontData.list.forEach(function (data) {\n data.helper = createHelper(data);\n data.cache = {};\n });\n this.fonts = fontData.list;\n return;\n }\n\n var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\n\n for (i = 0; i < len; i += 1) {\n var shouldLoadFont = true;\n var loadedSelector;\n var j;\n fontArr[i].loaded = false;\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n\n if (!fontArr[i].fPath) {\n fontArr[i].loaded = true;\n _pendingFonts -= 1;\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n\n if (loadedSelector.length > 0) {\n shouldLoadFont = false;\n }\n\n if (shouldLoadFont) {\n var s = createTag('style');\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\n s.setAttribute('f-origin', fontArr[i].origin);\n s.setAttribute('f-family', fontArr[i].fFamily);\n s.type = 'text/css';\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n defs.appendChild(s);\n }\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var l = createTag('link');\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\n l.setAttribute('f-origin', fontArr[i].origin);\n l.type = 'text/css';\n l.rel = 'stylesheet';\n l.href = fontArr[i].fPath;\n document.body.appendChild(l);\n }\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (fontArr[i].fPath === loadedSelector[j].src) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var sc = createTag('link');\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n sc.setAttribute('f-origin', fontArr[i].origin);\n sc.setAttribute('rel', 'stylesheet');\n sc.setAttribute('href', fontArr[i].fPath);\n defs.appendChild(sc);\n }\n }\n\n fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\n }\n\n if (_pendingFonts === 0) {\n this.isLoaded = true;\n } else {\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n // Adding this timeout seems to fix it\n setTimeout(this.checkLoadedFonts.bind(this), 100);\n }\n }\n\n function addChars(chars) {\n if (!chars) {\n return;\n }\n\n if (!this.chars) {\n this.chars = [];\n }\n\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\n\n while (j < jLen) {\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n found = true;\n }\n\n j += 1;\n }\n\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\n\n while (i < len) {\n if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n return this.chars[i];\n }\n\n i += 1;\n }\n\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n && !this._warned) {\n this._warned = true;\n console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n }\n\n return emptyChar;\n }\n\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName); // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n\n var index = _char2;\n\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\n\n if (_char2 === ' ') {\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\n var singleSize = tHelper.measureText('||');\n fontData.cache[index] = (doubleSize - singleSize) / 100;\n } else {\n fontData.cache[index] = tHelper.measureText(_char2) / 100;\n }\n }\n\n return fontData.cache[index] * size;\n }\n\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n\n i += 1;\n }\n\n return this.fonts[0];\n }\n\n function getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return codePoint;\n } // Skin tone modifiers\n\n\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n\n function isZeroWidthJoiner(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n } // This codepoint may change the appearance of the preceding character.\n // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n // as a colorful image as compared to a monochrome text variant.\n\n\n function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n } // The regional indicator symbols are a set of 26 alphabetic Unicode\n /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n // two-letter country codes in a way that allows optional special treatment.\n\n\n function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n\n return false;\n } // Some Emoji implementations represent combinations of\n // two “regional indicator” letters as a single flag symbol.\n\n\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n } // Regional flags start with a BLACK_FLAG_CODE_POINT\n // folowed by 5 chars in the TAG range\n // and end with a CANCEL_TAG_CODE_POINT\n\n\n function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n\n var count = 0;\n index += 2;\n\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n\n count += 1;\n index += 2;\n }\n\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n }\n\n function setIsLoaded() {\n this.isLoaded = true;\n }\n\n var Font = function Font() {\n this.fonts = [];\n this.chars = null;\n this.typekitLoaded = 0;\n this.isLoaded = false;\n this._warned = false;\n this.initTime = Date.now();\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n };\n\n Font.isModifier = isModifier;\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\n Font.isFlagEmoji = isFlagEmoji;\n Font.isRegionalCode = isRegionalCode;\n Font.isCombinedCharacter = isCombinedCharacter;\n Font.isRegionalFlag = isRegionalFlag;\n Font.isVariationSelector = isVariationSelector;\n Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\n var fontPrototype = {\n addChars: addChars,\n addFonts: addFonts,\n getCharData: getCharData,\n getFontByName: getFontByName,\n measureText: measureText,\n checkLoadedFonts: checkLoadedFonts,\n setIsLoaded: setIsLoaded\n };\n Font.prototype = fontPrototype;\n return Font;\n }();\n\n function SlotManager(animationData) {\n this.animationData = animationData;\n }\n\n SlotManager.prototype.getProp = function (data) {\n if (this.animationData.slots && this.animationData.slots[data.sid]) {\n return Object.assign(data, this.animationData.slots[data.sid].p);\n }\n\n return data;\n };\n\n function slotFactory(animationData) {\n return new SlotManager(animationData);\n }\n\n function RenderableElement() {}\n\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false; // layer's display state\n\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n this.isTransparent = false; // list of animated components\n\n this.renderableComponents = [];\n },\n addRenderableComponent: function addRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component);\n }\n },\n removeRenderableComponent: function removeRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n }\n },\n prepareRenderableFrame: function prepareRenderableFrame(num) {\n this.checkLayerLimits(num);\n },\n checkTransparency: function checkTransparency() {\n if (this.finalTransform.mProp.o.v <= 0) {\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n this.isTransparent = true;\n this.hide();\n }\n } else if (this.isTransparent) {\n this.isTransparent = false;\n this.show();\n }\n },\n\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\n checkLayerLimits: function checkLayerLimits(num) {\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n if (this.isInRange !== true) {\n this.globalData._mdf = true;\n this._mdf = true;\n this.isInRange = true;\n this.show();\n }\n } else if (this.isInRange !== false) {\n this.globalData._mdf = true;\n this.isInRange = false;\n this.hide();\n }\n },\n renderRenderable: function renderRenderable() {\n var i;\n var len = this.renderableComponents.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\n },\n sourceRectAtTime: function sourceRectAtTime() {\n return {\n top: 0,\n left: 0,\n width: 100,\n height: 100\n };\n },\n getLayerSize: function getLayerSize() {\n if (this.data.ty === 5) {\n return {\n w: this.data.textData.width,\n h: this.data.textData.height\n };\n }\n\n return {\n w: this.data.width,\n h: this.data.height\n };\n }\n };\n\n var getBlendMode = function () {\n var blendModeEnums = {\n 0: 'source-over',\n 1: 'multiply',\n 2: 'screen',\n 3: 'overlay',\n 4: 'darken',\n 5: 'lighten',\n 6: 'color-dodge',\n 7: 'color-burn',\n 8: 'hard-light',\n 9: 'soft-light',\n 10: 'difference',\n 11: 'exclusion',\n 12: 'hue',\n 13: 'saturation',\n 14: 'color',\n 15: 'luminosity'\n };\n return function (mode) {\n return blendModeEnums[mode] || '';\n };\n }();\n\n function SliderEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function NoValueEffect() {\n this.p = {};\n }\n\n function EffectsManager(data, element) {\n var effects = data.ef || [];\n this.effectElements = [];\n var i;\n var len = effects.length;\n var effectItem;\n\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\n GroupEffect.prototype.init = function (data, element) {\n this.data = data;\n this.effectElements = [];\n this.initDynamicPropertyContainer(element);\n var i;\n var len = this.data.ef.length;\n var eff;\n var effects = this.data.ef;\n\n for (i = 0; i < len; i += 1) {\n eff = null;\n\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n\n var i = 0;\n var len = this.data.masksProperties.length;\n\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n initExpressions: function initExpressions() {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var LayerExpressionInterface = expressionsInterfaces('layer');\n var EffectsExpressionInterface = expressionsInterfaces('effects');\n var ShapeExpressionInterface = expressionsInterfaces('shape');\n var TextExpressionInterface = expressionsInterfaces('text');\n var CompExpressionInterface = expressionsInterfaces('comp');\n this.layerInterface = LayerExpressionInterface(this);\n\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\n\n if (this.data.ty === 0 || this.data.xt) {\n this.compInterface = CompExpressionInterface(this);\n } else if (this.data.ty === 4) {\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n this.layerInterface.content = this.layerInterface.shapeInterface;\n } else if (this.data.ty === 5) {\n this.layerInterface.textInterface = TextExpressionInterface(this);\n this.layerInterface.text = this.layerInterface.textInterface;\n }\n },\n setBlendMode: function setBlendMode() {\n var blendModeValue = getBlendMode(this.data.bm);\n var elem = this.baseElement || this.layerElement;\n elem.style['mix-blend-mode'] = blendModeValue;\n },\n initBaseData: function initBaseData(data, globalData, comp) {\n this.globalData = globalData;\n this.comp = comp;\n this.data = data;\n this.layerId = createElementID(); // Stretch factor for old animations missing this property.\n\n if (!this.data.sr) {\n this.data.sr = 1;\n } // effects manager\n\n\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n },\n getType: function getType() {\n return this.type;\n },\n sourceRectAtTime: function sourceRectAtTime() {}\n };\n\n /**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\n function FrameElement() {}\n\n FrameElement.prototype = {\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false; // list of animated properties\n\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n this._mdf = false;\n },\n\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true;\n this._mdf = true;\n }\n }\n }\n },\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n }\n }\n };\n\n function FootageElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\n this.initBaseData(data, globalData, comp);\n }\n\n FootageElement.prototype.prepareFrame = function () {};\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n\n FootageElement.prototype.renderFrame = function () {};\n\n FootageElement.prototype.destroy = function () {};\n\n FootageElement.prototype.initExpressions = function () {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var FootageInterface = expressionsInterfaces('footage');\n this.layerInterface = FootageInterface(this);\n };\n\n FootageElement.prototype.getFootageData = function () {\n return this.footageData;\n };\n\n function AudioElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.initBaseData(data, globalData, comp);\n this._isPlaying = false;\n this._canPlay = false;\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.audio = this.globalData.audioController.createAudio(assetPath);\n this._currentTime = 0;\n this.globalData.audioController.addAudio(this);\n this._volumeMultiplier = 1;\n this._volume = 1;\n this._previousVolume = null;\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n k: [100]\n }, 1, 0.01, this);\n }\n\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n this._currentTime = timeRemapped;\n } else {\n this._currentTime = num / this.data.sr;\n }\n\n this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\n AudioElement.prototype.renderFrame = function () {\n if (this.isInRange && this._canPlay) {\n if (!this._isPlaying) {\n this.audio.play();\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n this._isPlaying = true;\n } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n }\n }\n };\n\n AudioElement.prototype.show = function () {// this.audio.play()\n };\n\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\n };\n\n AudioElement.prototype.volume = function (volumeValue) {\n this._volumeMultiplier = volumeValue;\n this._previousVolume = volumeValue * this._volume;\n this.audio.volume(this._previousVolume);\n };\n\n AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n\n AudioElement.prototype.destroy = function () {};\n\n AudioElement.prototype.sourceRectAtTime = function () {};\n\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\n\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n this.buildItem(i);\n }\n }\n\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n\n case 0:\n return this.createComp(layer);\n\n case 1:\n return this.createSolid(layer);\n\n case 3:\n return this.createNull(layer);\n\n case 4:\n return this.createShape(layer);\n\n case 5:\n return this.createText(layer);\n\n case 6:\n return this.createAudio(layer);\n\n case 13:\n return this.createCamera(layer);\n\n case 15:\n return this.createFootage(layer);\n\n default:\n return this.createNull(layer);\n }\n };\n\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.includeLayers = function (newLayers) {\n this.completeLayers = false;\n var i;\n var len = newLayers.length;\n var j;\n var jLen = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n\n j += 1;\n }\n }\n };\n\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\n }\n };\n\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n var elements = this.elements;\n var layers = this.layers;\n var i = 0;\n var len = layers.length;\n\n while (i < len) {\n if (layers[i].ind == parentName) {\n // eslint-disable-line eqeqeq\n if (!elements[i] || elements[i] === true) {\n this.buildItem(i);\n this.addPendingElement(element);\n } else {\n hierarchy.push(elements[i]);\n elements[i].setAsParent();\n\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n\n i += 1;\n }\n };\n\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i]);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n BaseRenderer.prototype.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n\n return null;\n };\n\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.nm === pathValue) {\n element = this.elements[i];\n break;\n }\n }\n }\n\n if (path.length === 0) {\n return element;\n }\n\n return element.getElementByPath(path);\n };\n\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager();\n this.globalData.slotManager = slotFactory(animData);\n this.globalData.fontManager.addChars(animData.chars);\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n this.globalData.imageLoader = this.animationItem.imagePreloader;\n this.globalData.audioController = this.animationItem.audioController;\n this.globalData.frameId = 0;\n this.globalData.frameRate = animData.fr;\n this.globalData.nm = animData.nm;\n this.globalData.compSize = {\n w: animData.w,\n h: animData.h\n };\n };\n\n var effectTypes = {\n TRANSFORM_EFFECT: 'transformEFfect'\n };\n\n function TransformElement() {}\n\n TransformElement.prototype = {\n initTransform: function initTransform() {\n var mat = new Matrix();\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n o: 0\n },\n _matMdf: false,\n _localMatMdf: false,\n _opMdf: false,\n mat: mat,\n localMat: mat,\n localOpacity: 1\n };\n\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n } // TODO: check TYPE 11: Guided elements\n\n\n if (this.data.ty !== 11) {// this.createElements();\n }\n },\n renderTransform: function renderTransform() {\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n\n if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\n if (!this.finalTransform._matMdf) {\n while (i < len) {\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\n this.finalTransform._matMdf = true;\n break;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n\n for (i = 0; i < len; i += 1) {\n finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n\n if (this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n }\n\n if (this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n }\n },\n renderLocalTransform: function renderLocalTransform() {\n if (this.localTransforms) {\n var i = 0;\n var len = this.localTransforms.length;\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n\n if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n while (i < len) {\n if (this.localTransforms[i]._mdf) {\n this.finalTransform._localMatMdf = true;\n }\n\n if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n this.finalTransform._opMdf = true;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n\n localMat.multiply(this.finalTransform.mat);\n }\n\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\n }\n\n this.finalTransform.localOpacity = localOp;\n }\n }\n },\n searchEffectTransforms: function searchEffectTransforms() {\n if (this.renderableEffectsManager) {\n var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n\n if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\n\n for (i = 0; i < len; i += 1) {\n this.localTransforms.push(transformEffects[i]);\n }\n }\n }\n },\n globalToLocal: function globalToLocal(pt) {\n var transforms = [];\n transforms.push(this.finalTransform);\n var flag = true;\n var comp = this.comp;\n\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n\n var i;\n var len = transforms.length;\n var ptNew;\n\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\n\n return pt;\n },\n mHelper: new Matrix()\n };\n\n function MaskElement(data, element, globalData) {\n this.data = data;\n this.element = element;\n this.globalData = globalData;\n this.storedData = [];\n this.masksProperties = this.data.masksProperties || [];\n this.maskElement = null;\n var defs = this.globalData.defs;\n var i;\n var len = this.masksProperties ? this.masksProperties.length : 0;\n this.viewData = createSizedArray(len);\n this.solidPath = '';\n var path;\n var properties = this.masksProperties;\n var count = 0;\n var currentMasks = [];\n var j;\n var jLen;\n var layerId = createElementID();\n var rect;\n var expansor;\n var feMorph;\n var x;\n var maskType = 'clipPath';\n var maskRef = 'clip-path';\n\n for (i = 0; i < len; i += 1) {\n if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n maskType = 'mask';\n maskRef = 'mask';\n }\n\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n rect = createNS('rect');\n rect.setAttribute('fill', '#ffffff');\n rect.setAttribute('width', this.element.comp.data.w || 0);\n rect.setAttribute('height', this.element.comp.data.h || 0);\n currentMasks.push(rect);\n } else {\n rect = null;\n }\n\n path = createNS('path');\n\n if (properties[i].mode === 'n') {\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n elem: path,\n lastPath: ''\n };\n defs.appendChild(path);\n } else {\n count += 1;\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n path.setAttribute('clip-rule', 'nonzero');\n var filterID;\n\n if (properties[i].x.k !== 0) {\n maskType = 'mask';\n maskRef = 'mask';\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n filterID = createElementID();\n expansor = createNS('filter');\n expansor.setAttribute('id', filterID);\n feMorph = createNS('feMorphology');\n feMorph.setAttribute('operator', 'erode');\n feMorph.setAttribute('in', 'SourceGraphic');\n feMorph.setAttribute('radius', '0');\n expansor.appendChild(feMorph);\n defs.appendChild(expansor);\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n } else {\n feMorph = null;\n x = null;\n } // TODO move this to a factory or to a constructor\n\n\n this.storedData[i] = {\n elem: path,\n x: x,\n expan: feMorph,\n lastPath: '',\n lastOperator: '',\n filterId: filterID,\n lastRadius: 0\n };\n\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\n }\n\n var mask = createNS('mask');\n mask.setAttribute('mask-type', 'alpha');\n mask.setAttribute('id', layerId + '_' + count);\n mask.appendChild(path);\n defs.appendChild(mask);\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n currentMasks.length = 0;\n currentMasks.push(g);\n } else {\n currentMasks.push(path);\n }\n\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n } // TODO move this to a factory or to a constructor\n\n\n this.viewData[i] = {\n elem: path,\n lastPath: '',\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n invRect: rect\n };\n\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\n }\n\n if (count > 0) {\n this.maskElement.setAttribute('id', layerId);\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n defs.appendChild(this.maskElement);\n }\n\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.viewData[i].prop._mdf || isFirstFrame) {\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n }\n\n if (this.masksProperties[i].mode !== 'n') {\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n }\n\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\n\n if (this.storedData[i].x.v < 0) {\n if (this.storedData[i].lastOperator !== 'erode') {\n this.storedData[i].lastOperator = 'erode';\n this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n }\n\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\n } else {\n if (this.storedData[i].lastOperator !== 'dilate') {\n this.storedData[i].lastOperator = 'dilate';\n this.storedData[i].elem.setAttribute('filter', null);\n }\n\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n };\n\n MaskElement.prototype.createLayerSolidPath = function () {\n var path = 'M0,0 ';\n path += ' h' + this.globalData.compSize.w;\n path += ' v' + this.globalData.compSize.h;\n path += ' h-' + this.globalData.compSize.w;\n path += ' v-' + this.globalData.compSize.h + ' ';\n return path;\n };\n\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n var i;\n var len;\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n\n\n if (pathNodes.c && len > 1) {\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n } // pathNodes.__renderedString = pathString;\n\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n\n viewData.lastPath = pathString;\n }\n };\n\n MaskElement.prototype.destroy = function () {\n this.element = null;\n this.globalData = null;\n this.maskElement = null;\n this.data = null;\n this.masksProperties = null;\n };\n\n var filtersFactory = function () {\n var ob = {};\n ob.createFilter = createFilter;\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\n\n if (skipCoordinates !== true) {\n fil.setAttribute('filterUnits', 'objectBoundingBox');\n fil.setAttribute('x', '0%');\n fil.setAttribute('y', '0%');\n fil.setAttribute('width', '100%');\n fil.setAttribute('height', '100%');\n }\n\n return fil;\n }\n\n function createAlphaToLuminanceFilter() {\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\n return feColorMatrix;\n }\n\n return ob;\n }();\n\n var featureSupport = function () {\n var ob = {\n maskType: true,\n svgLumaHidden: true,\n offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\n };\n\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n ob.maskType = false;\n }\n\n if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\n\n function SVGEffects(elem) {\n var i;\n var source = 'SourceGraphic';\n var len = elem.data.ef ? elem.data.ef.length : 0;\n var filId = createElementID();\n var fil = filtersFactory.createFilter(filId, true);\n var count = 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects$1[type]) {\n var Effect = registeredEffects$1[type].effect;\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n source = idPrefix + count;\n\n if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect$1(id, effect, countsAsEffect) {\n registeredEffects$1[id] = {\n effect: effect,\n countsAsEffect: countsAsEffect\n };\n }\n\n function SVGBaseElement() {}\n\n SVGBaseElement.prototype = {\n initRendererElement: function initRendererElement() {\n this.layerElement = createNS('g');\n },\n createContainerElements: function createContainerElements() {\n this.matteElement = createNS('g');\n this.transformedElement = this.layerElement;\n this.maskedElement = this.layerElement;\n this._sizeChanged = false;\n var layerElementParent = null; // If this layer acts as a mask for the following layer\n\n if (this.data.td) {\n this.matteMasks = {};\n var gg = createNS('g');\n gg.setAttribute('id', this.layerId);\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n this.globalData.defs.appendChild(gg);\n } else if (this.data.tt) {\n this.matteElement.appendChild(this.layerElement);\n layerElementParent = this.matteElement;\n this.baseElement = this.matteElement;\n } else {\n this.baseElement = this.layerElement;\n }\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\n if (this.data.ty === 0 && !this.data.hd) {\n var cp = createNS('clipPath');\n var pt = createNS('path');\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n var clipId = createElementID();\n cp.setAttribute('id', clipId);\n cp.appendChild(pt);\n this.globalData.defs.appendChild(cp);\n\n if (this.checkMasks()) {\n var cpGroup = createNS('g');\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n cpGroup.appendChild(this.layerElement);\n this.transformedElement = cpGroup;\n\n if (layerElementParent) {\n layerElementParent.appendChild(this.transformedElement);\n } else {\n this.baseElement = this.transformedElement;\n }\n } else {\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n }\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n if (this.finalTransform._localMatMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n }\n\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\n }\n },\n destroyBaseElement: function destroyBaseElement() {\n this.layerElement = null;\n this.matteElement = null;\n this.maskManager.destroy();\n },\n getBaseElement: function getBaseElement() {\n if (this.data.hd) {\n return null;\n }\n\n return this.baseElement;\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n this.renderableEffectsManager = new SVGEffects(this);\n this.searchEffectTransforms();\n },\n getMatte: function getMatte(matteType) {\n // This should not be a common case. But for backward compatibility, we'll create the matte object.\n // It solves animations that have two consecutive layers marked as matte masks.\n // Which is an undefined behavior in AE.\n if (!this.matteMasks) {\n this.matteMasks = {};\n }\n\n if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\n\n if (matteType === 1 || matteType === 3) {\n var masker = createNS('mask');\n masker.setAttribute('id', id);\n masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n masker.appendChild(useElement);\n this.globalData.defs.appendChild(masker);\n\n if (!featureSupport.maskType && matteType === 1) {\n masker.setAttribute('mask-type', 'luminance');\n filId = createElementID();\n fil = filtersFactory.createFilter(filId);\n this.globalData.defs.appendChild(fil);\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n gg.appendChild(useElement);\n masker.appendChild(gg);\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n } else if (matteType === 2) {\n var maskGroup = createNS('mask');\n maskGroup.setAttribute('id', id);\n maskGroup.setAttribute('mask-type', 'alpha');\n var maskGrouper = createNS('g');\n maskGroup.appendChild(maskGrouper);\n filId = createElementID();\n fil = filtersFactory.createFilter(filId); /// /\n\n var feCTr = createNS('feComponentTransfer');\n feCTr.setAttribute('in', 'SourceGraphic');\n fil.appendChild(feCTr);\n var feFunc = createNS('feFuncA');\n feFunc.setAttribute('type', 'table');\n feFunc.setAttribute('tableValues', '1.0 0.0');\n feCTr.appendChild(feFunc); /// /\n\n this.globalData.defs.appendChild(fil);\n var alphaRect = createNS('rect');\n alphaRect.setAttribute('width', this.comp.data.w);\n alphaRect.setAttribute('height', this.comp.data.h);\n alphaRect.setAttribute('x', '0');\n alphaRect.setAttribute('y', '0');\n alphaRect.setAttribute('fill', '#ffffff');\n alphaRect.setAttribute('opacity', '0');\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n maskGrouper.appendChild(alphaRect);\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n maskGrouper.appendChild(useElement);\n\n if (!featureSupport.maskType) {\n maskGroup.setAttribute('mask-type', 'luminance');\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n maskGrouper.appendChild(alphaRect);\n gg.appendChild(this.layerElement);\n maskGrouper.appendChild(gg);\n }\n\n this.globalData.defs.appendChild(maskGroup);\n }\n\n this.matteMasks[matteType] = id;\n }\n\n return this.matteMasks[matteType];\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\n function HierarchyElement() {}\n\n HierarchyElement.prototype = {\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n this._isParent = false;\n this.checkParenting();\n },\n\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\n checkParenting: function checkParenting() {\n if (this.data.parent !== undefined) {\n this.comp.buildElementParenting(this, this.data.parent, []);\n }\n }\n };\n\n function RenderableDOMElement() {}\n\n (function () {\n var _prototype = {\n initElement: function initElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n },\n hide: function hide() {\n // console.log('HIDE', this);\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'none';\n this.hidden = true;\n }\n },\n show: function show() {\n // console.log('SHOW', this);\n if (this.isInRange && !this.isTransparent) {\n if (!this.data.hd) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'block';\n }\n\n this.hidden = false;\n this._isFirstFrame = true;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n renderInnerContent: function renderInnerContent() {},\n prepareFrame: function prepareFrame(num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n this.checkTransparency();\n },\n destroy: function destroy() {\n this.innerElem = null;\n this.destroyBaseElement();\n }\n };\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n })();\n\n function IImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n\n if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\n }\n\n this.initElement(data, globalData, comp);\n this.sourceRect = {\n top: 0,\n left: 0,\n width: this.assetData.w,\n height: this.assetData.h\n };\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\n IImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.innerElem = createNS('image');\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.innerElem);\n };\n\n IImageElement.prototype.sourceRectAtTime = function () {\n return this.sourceRect;\n };\n\n function ProcessedElement(element, position) {\n this.elem = element;\n this.pos = position;\n }\n\n function IShapeElement() {}\n\n IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapeModifiers[i].addShape(data);\n }\n },\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n var i = 0;\n var len = this.shapeModifiers.length;\n\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n\n var i;\n var len = this.shapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n // TODO: find a better solution for this\n\n if (shouldBreakProcess) {\n break;\n }\n }\n },\n searchProcessedElement: function searchProcessedElement(elem) {\n var elements = this.processedElements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n\n i += 1;\n }\n\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n\n while (i) {\n i -= 1;\n\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\n }\n\n elements.push(new ProcessedElement(elem, pos));\n },\n prepareFrame: function prepareFrame(num) {\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n }\n };\n\n var lineCapEnum = {\n 1: 'butt',\n 2: 'round',\n 3: 'square'\n };\n var lineJoinEnum = {\n 1: 'miter',\n 2: 'round',\n 3: 'bevel'\n };\n\n function SVGShapeData(transformers, level, shape) {\n this.caches = [];\n this.styles = [];\n this.transformers = transformers;\n this.lStr = '';\n this.sh = shape;\n this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\n // For now, since shapes add up with other shapes. They have to be calculated every time.\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\n\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n var i = 0;\n var len = transformers.length;\n\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n\n i += 1;\n }\n }\n\n SVGShapeData.prototype.setAsAnimated = function () {\n this._isAnimated = true;\n };\n\n function SVGStyleData(data, level) {\n this.data = data;\n this.type = data.ty;\n this.d = '';\n this.lvl = level;\n this._mdf = false;\n this.closed = data.hd === true;\n this.pElem = createNS('path');\n this.msElem = null;\n }\n\n SVGStyleData.prototype.reset = function () {\n this.d = '';\n this._mdf = false;\n };\n\n function DashProperty(elem, data, renderer, container) {\n this.elem = elem;\n this.frameId = -1;\n this.dataProps = createSizedArray(data.length);\n this.renderer = renderer;\n this.k = false;\n this.dashStr = '';\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n this.dashoffset = createTypedArray('float32', 1);\n this.initDynamicPropertyContainer(container);\n var i;\n var len = data.length || 0;\n var prop;\n\n for (i = 0; i < len; i += 1) {\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n this.k = prop.k || this.k;\n this.dataProps[i] = {\n n: data[i].n,\n p: prop\n };\n }\n\n if (!this.k) {\n this.getValue(true);\n }\n\n this._isAnimated = this.k;\n }\n\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n\n if (this.renderer === 'svg') {\n this.dashStr = '';\n }\n\n for (i = 0; i < len; i += 1) {\n if (this.dataProps[i].n !== 'o') {\n if (this.renderer === 'svg') {\n this.dashStr += ' ' + this.dataProps[i].p.v;\n } else {\n this.dashArray[i] = this.dataProps[i].p.v;\n }\n } else {\n this.dashoffset[0] = this.dataProps[i].p.v;\n }\n }\n }\n };\n\n extendPrototype([DynamicPropertyContainer], DashProperty);\n\n function SVGStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n function SVGFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n function SVGNoStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n function GradientProperty(elem, data, container) {\n this.data = data;\n this.c = createTypedArray('uint8c', data.p * 4);\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n this.o = createTypedArray('float32', cLength);\n this._cmdf = false;\n this._omdf = false;\n this._collapsable = this.checkCollapsable();\n this._hasOpacity = cLength;\n this.initDynamicPropertyContainer(container);\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n this.k = this.prop.k;\n this.getValue(true);\n }\n\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n if (diff > 0.01) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n };\n\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n\n return true;\n };\n\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\n\n for (i = 0; i < len; i += 1) {\n mult = i % 4 === 0 ? 100 : 255;\n val = Math.round(this.prop.v[i] * mult);\n\n if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n\n if (this.o.length) {\n len = this.prop.v.length;\n\n for (i = this.data.p * 4; i < len; i += 1) {\n mult = i % 2 === 0 ? 100 : 1;\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n\n if (this.o[i - this.data.p * 4] !== val) {\n this.o[i - this.data.p * 4] = val;\n this._omdf = !forceRender;\n }\n }\n }\n\n this._mdf = !forceRender;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n function SVGGradientFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.initGradientData(elem, data, styleOb);\n }\n\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n this.h = PropertyFactory.getProp(elem, data.h || {\n k: 0\n }, 0, 0.01, this);\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: 0\n }, 0, degToRads, this);\n this.g = new GradientProperty(elem, data.g, this);\n this.style = styleOb;\n this.stops = [];\n this.setGradientData(styleOb.pElem, data);\n this.setGradientOpacity(data, styleOb);\n this._isAnimated = !!this._isAnimated;\n };\n\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n var gradientId = createElementID();\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n gfill.setAttribute('id', gradientId);\n gfill.setAttribute('spreadMethod', 'pad');\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n var stops = [];\n var stop;\n var j;\n var jLen;\n jLen = data.g.p * 4;\n\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\n };\n\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n if (this.g._hasOpacity && !this.g._collapsable) {\n var stop;\n var j;\n var jLen;\n var mask = createNS('mask');\n var maskElement = createNS('path');\n mask.appendChild(maskElement);\n var opacityId = createElementID();\n var maskId = createElementID();\n mask.setAttribute('id', maskId);\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n opFill.setAttribute('id', opacityId);\n opFill.setAttribute('spreadMethod', 'pad');\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n var stops = this.stops;\n\n for (j = data.g.p * 4; j < jLen; j += 2) {\n stop = createNS('stop');\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\n opFill.appendChild(stop);\n stops.push(stop);\n }\n\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n this.of = opFill;\n this.ms = mask;\n this.ost = stops;\n this.maskId = maskId;\n styleOb.msElem = maskElement;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.initGradientData(elem, data, styleOb);\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n function ShapeGroupData() {\n this.it = [];\n this.prevViewData = [];\n this.gr = createNS('g');\n }\n\n function SVGTransformData(mProps, op, container) {\n this.transform = {\n mProps: mProps,\n op: op,\n container: container\n };\n this.elements = [];\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n }\n\n var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n if (length === 0) {\n return '';\n }\n\n var _o = pathNodes.o;\n var _i = pathNodes.i;\n var _v = pathNodes.v;\n var i;\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n\n for (i = 1; i < length; i += 1) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n }\n\n if (closed && length) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n shapeString += 'z';\n }\n\n return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n\n var _matrixHelper = new Matrix();\n\n var ob = {\n createRenderFunction: createRenderFunction\n };\n\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n\n case 'gf':\n return renderGradient;\n\n case 'gs':\n return renderGradientStroke;\n\n case 'st':\n return renderStroke;\n\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n\n case 'tr':\n return renderContentTransform;\n\n case 'no':\n return renderNoop;\n\n default:\n return null;\n }\n }\n\n function renderContentTransform(styleData, itemData, isFirstFrame) {\n if (isFirstFrame || itemData.transform.op._mdf) {\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n }\n\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n\n function renderNoop() {}\n\n function renderPath(styleData, itemData, isFirstFrame) {\n var j;\n var jLen;\n var pathStringTransformed;\n var redraw;\n var pathNodes;\n var l;\n var lLen = itemData.styles.length;\n var lvl = itemData.lvl;\n var paths;\n var mat;\n var iterations;\n var k;\n\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\n\n if (itemData.styles[l].lvl < lvl) {\n mat = _matrixHelper.reset();\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (iterations > 0) {\n mat.multiply(itemData.transformers[k].mProps.v);\n iterations -= 1;\n k -= 1;\n }\n }\n } else {\n mat = _identityMatrix;\n }\n\n paths = itemData.sh.paths;\n jLen = paths._length;\n\n if (redraw) {\n pathStringTransformed = '';\n\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\n }\n\n function renderGradient(styleData, itemData, isFirstFrame) {\n var gfill = itemData.gf;\n var hasOpacity = itemData.g._hasOpacity;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (itemData.o._mdf || isFirstFrame) {\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\n }\n\n if (itemData.s._mdf || isFirstFrame) {\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n gfill.setAttribute(attr1, pt1[0]);\n gfill.setAttribute(attr2, pt1[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n\n var stops;\n var i;\n var len;\n var stop;\n\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n stop.setAttribute('offset', cValues[i * 4] + '%');\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n }\n }\n\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n }\n }\n\n if (styleData.t === 1) {\n if (itemData.e._mdf || isFirstFrame) {\n gfill.setAttribute('x2', pt2[0]);\n gfill.setAttribute('y2', pt2[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('x2', pt2[0]);\n itemData.of.setAttribute('y2', pt2[1]);\n }\n }\n } else {\n var rad;\n\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n gfill.setAttribute('r', rad);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n if (!rad) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n }\n\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n gfill.setAttribute('fx', x);\n gfill.setAttribute('fy', y);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n } // gfill.setAttribute('fy','200');\n\n }\n }\n\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n }\n\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n /*\r\n This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\n\n\n SVGShapeElement.prototype.filterUniqueShapes = function () {\n var i;\n var len = this.shapes.length;\n var shape;\n var j;\n var jLen = this.stylesList.length;\n var style;\n var tempShapes = [];\n var areAnimated = false;\n\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\n };\n\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\n // TODO: prevent drawing of hidden styles\n var elementData;\n var styleOb = new SVGStyleData(data, level);\n var pathElement = styleOb.pElem;\n\n if (data.ty === 'st') {\n elementData = new SVGStrokeStyleData(this, data, styleOb);\n } else if (data.ty === 'fl') {\n elementData = new SVGFillStyleData(this, data, styleOb);\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n elementData = new GradientConstructor(this, data, styleOb);\n this.globalData.defs.appendChild(elementData.gf);\n\n if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms);\n this.globalData.defs.appendChild(elementData.of);\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n }\n } else if (data.ty === 'no') {\n elementData = new SVGNoStyleData(this, data, styleOb);\n }\n\n if (data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n pathElement.setAttribute('fill-opacity', '0');\n\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n return elementData;\n };\n\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n\n i += 1;\n }\n\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n };\n\n SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n var ownTransformers = [].concat(transformers);\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var currentTransform;\n var modifier;\n var processedPos;\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], level);\n } else {\n itemsData[i].style.closed = false;\n }\n\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\n }\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\n if (arr[i]._render) {\n if (itemsData[i].gr.parentNode !== container) {\n container.appendChild(itemsData[i].gr);\n }\n }\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n itemsData[i] = this.createTransformElement(arr[i], container);\n }\n\n currentTransform = itemsData[i].transform;\n ownTransformers.push(currentTransform);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n }\n\n this.setElementStyles(itemsData[i]);\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n render = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n len = ownStyles.length;\n\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n\n this.renderShape();\n\n for (i = 0; i < len; i += 1) {\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\n if (this.stylesList[i].msElem) {\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\n\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n }\n }\n };\n\n SVGShapeElement.prototype.destroy = function () {\n this.destroyBaseElement();\n this.shapesData = null;\n this.itemsData = null;\n };\n\n function LetterProps(o, sw, sc, fc, m, p) {\n this.o = o;\n this.sw = sw;\n this.sc = sc;\n this.fc = fc;\n this.m = m;\n this.p = p;\n this._mdf = {\n o: true,\n sw: !!sw,\n sc: !!sc,\n fc: !!fc,\n m: true,\n p: true\n };\n }\n\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n this._mdf.o = false;\n this._mdf.sw = false;\n this._mdf.sc = false;\n this._mdf.fc = false;\n this._mdf.m = false;\n this._mdf.p = false;\n var updated = false;\n\n if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\n }\n\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n this.p = p;\n this._mdf.p = true;\n updated = true;\n }\n\n return updated;\n };\n\n function TextProperty(elem, data) {\n this._frameId = initialDefaultFrame;\n this.pv = '';\n this.v = '';\n this.kf = false;\n this._isFirstFrame = true;\n this._mdf = false;\n\n if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\n }\n\n this.data = data;\n this.elem = elem;\n this.comp = this.elem.comp;\n this.keysIndex = 0;\n this.canResize = false;\n this.minimumFontSize = 1;\n this.effectsSequence = [];\n this.currentData = {\n ascent: 0,\n boxWidth: this.defaultBoxWidth,\n f: '',\n fStyle: '',\n fWeight: '',\n fc: '',\n j: '',\n justifyOffset: '',\n l: [],\n lh: 0,\n lineWidths: [],\n ls: '',\n of: '',\n s: '',\n sc: '',\n sw: 0,\n t: 0,\n tr: 0,\n sz: 0,\n ps: null,\n fillColorAnim: false,\n strokeColorAnim: false,\n strokeWidthAnim: false,\n yOffset: 0,\n finalSize: 0,\n finalText: [],\n finalLineHeight: 0,\n __complete: false\n };\n this.copyData(this.currentData, this.data.d.k[0].s);\n\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n\n TextProperty.prototype.defaultBoxWidth = [0, 0];\n\n TextProperty.prototype.copyData = function (obj, data) {\n for (var s in data) {\n if (Object.prototype.hasOwnProperty.call(data, s)) {\n obj[s] = data[s];\n }\n }\n\n return obj;\n };\n\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n\n return this.kf;\n };\n\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n\n for (i = 0; i < len; i += 1) {\n // Checking if index changed to prevent creating a new object every time the expression updates.\n if (currentIndex !== this.keysIndex) {\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n } else {\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n }\n }\n\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n };\n\n TextProperty.prototype.getKeyframeValue = function () {\n var textKeys = this.data.d.k;\n var frameNum = this.elem.comp.renderedFrame;\n var i = 0;\n var len = textKeys.length;\n\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n\n i += 1;\n }\n\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n\n return this.data.d.k[this.keysIndex].s;\n };\n\n TextProperty.prototype.buildFinalText = function (text) {\n var charactersArray = [];\n var i = 0;\n var len = text.length;\n var charCode;\n var secondCharCode;\n var shouldCombine = false;\n var shouldCombineNext = false;\n var currentChars = '';\n\n while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true; // It's a potential surrogate pair (this is the High surrogate)\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n if (FontManager.isRegionalFlag(text, i)) {\n currentChars = text.substr(i, 14);\n } else {\n secondCharCode = text.charCodeAt(i + 1); // It's a surrogate pair (this is the Low surrogate)\n\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n if (FontManager.isModifier(charCode, secondCharCode)) {\n currentChars = text.substr(i, 2);\n shouldCombine = true;\n } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n currentChars = text.substr(i, 4);\n } else {\n currentChars = text.substr(i, 2);\n }\n }\n }\n } else if (charCode > 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n\n if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n\n i += currentChars.length;\n }\n\n return charactersArray;\n };\n\n TextProperty.prototype.completeTextData = function (documentData) {\n documentData.__complete = true;\n var fontManager = this.elem.globalData.fontManager;\n var data = this.data;\n var letters = [];\n var i;\n var len;\n var newLineFlag;\n var index = 0;\n var val;\n var anchorGrouping = data.m.g;\n var currentSize = 0;\n var currentPos = 0;\n var currentLine = 0;\n var lineWidths = [];\n var lineWidth = 0;\n var maxLineWidth = 0;\n var j;\n var jLen;\n var fontData = fontManager.getFontByName(documentData.f);\n var charData;\n var cLength = 0;\n var fontProps = getFontProperties(fontData);\n documentData.fWeight = fontProps.weight;\n documentData.fStyle = fontProps.style;\n documentData.finalSize = documentData.s;\n documentData.finalText = this.buildFinalText(documentData.t);\n len = documentData.finalText.length;\n documentData.finalLineHeight = documentData.lh;\n var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var charCode;\n\n if (documentData.sz) {\n var flag = true;\n var boxWidth = documentData.sz[0];\n var boxHeight = documentData.sz[1];\n var currentHeight;\n var finalText;\n\n while (flag) {\n finalText = this.buildFinalText(documentData.t);\n currentHeight = 0;\n lineWidth = 0;\n len = finalText.length;\n trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var lastSpaceIndex = -1;\n\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\n\n if (finalText[i] === ' ') {\n lastSpaceIndex = i;\n } else if (charCode === 13 || charCode === 3) {\n lineWidth = 0;\n newLineFlag = true;\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n }\n\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n\n currentHeight += fontData.ascent * documentData.finalSize / 100;\n\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n documentData.finalSize -= 1;\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n } else {\n documentData.finalText = finalText;\n len = documentData.finalText.length;\n flag = false;\n }\n }\n }\n\n lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\n\n if (charCode === 13 || charCode === 3) {\n uncollapsedSpaces = 0;\n lineWidths.push(lineWidth);\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidth = -2 * trackingOffset;\n val = '';\n newLineFlag = true;\n currentLine += 1;\n } else {\n val = currentChar;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n } //\n\n\n if (currentChar === ' ') {\n uncollapsedSpaces += cLength + trackingOffset;\n } else {\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n uncollapsedSpaces = 0;\n }\n\n letters.push({\n l: cLength,\n an: cLength,\n add: currentSize,\n n: newLineFlag,\n anIndexes: [],\n val: val,\n line: currentLine,\n animatorJustifyOffset: 0\n });\n\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n currentSize = 0;\n index += 1;\n }\n } else {\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n\n default:\n documentData.justifyOffset = 0;\n }\n }\n\n documentData.lineWidths = lineWidths;\n var animators = data.a;\n var animatorData;\n var letterData;\n jLen = animators.length;\n var based;\n var ind;\n var indexes = [];\n\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n\n ind = 0;\n based = animatorData.s.b;\n\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\n\n if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n // eslint-disable-line eqeqeq\n if (animatorData.s.rn === 1) {\n indexes.push(ind);\n }\n\n ind += 1;\n }\n }\n\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n\n if (currentInd != letterData.anIndexes[j]) {\n // eslint-disable-line eqeqeq\n currentInd = letterData.anIndexes[j];\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n }\n\n letterData.anIndexes[j] = newInd;\n }\n }\n }\n\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n documentData.ls = documentData.ls || 0;\n documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n };\n\n TextProperty.prototype.updateDocumentData = function (newData, index) {\n index = index === undefined ? this.keysIndex : index;\n var dData = this.copyData({}, this.data.d.k[index].s);\n dData = this.copyData(dData, newData);\n this.data.d.k[index].s = dData;\n this.recalculate(index);\n this.setCurrentData(dData);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.recalculate = function (index) {\n var dData = this.data.d.k[index].s;\n dData.__complete = false;\n this.keysIndex = 0;\n this._isFirstFrame = true;\n this.getValue(dData);\n };\n\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n this.minimumFontSize = Math.floor(_fontValue) || 1;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n var TextSelectorProp = function () {\n var max = Math.max;\n var min = Math.min;\n var floor = Math.floor;\n\n function TextSelectorPropFactory(elem, data) {\n this._currentTextLength = -1;\n this.k = false;\n this.data = data;\n this.elem = elem;\n this.comp = elem.comp;\n this.finalS = 0;\n this.finalE = 0;\n this.initDynamicPropertyContainer(elem);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: 0\n }, 0, 0, this);\n\n if ('e' in data) {\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n } else {\n this.e = {\n v: 100\n };\n }\n\n this.o = PropertyFactory.getProp(elem, data.o || {\n k: 0\n }, 0, 0, this);\n this.xe = PropertyFactory.getProp(elem, data.xe || {\n k: 0\n }, 0, 0, this);\n this.ne = PropertyFactory.getProp(elem, data.ne || {\n k: 0\n }, 0, 0, this);\n this.sm = PropertyFactory.getProp(elem, data.sm || {\n k: 100\n }, 0, 0, this);\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n\n if (!this.dynamicProperties.length) {\n this.getValue();\n }\n }\n\n TextSelectorPropFactory.prototype = {\n getMult: function getMult(ind) {\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n this.getValue();\n }\n\n var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\n }\n\n if (this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0;\n } else {\n y2 = 1.0 + this.xe.v / 100.0;\n }\n\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n var mult = 0;\n var s = this.finalS;\n var e = this.finalE;\n var type = this.data.sh;\n\n if (type === 2) {\n if (e === s) {\n mult = ind >= e ? 1 : 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 3) {\n if (e === s) {\n mult = ind >= e ? 0 : 1;\n } else {\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 4) {\n if (e === s) {\n mult = 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n\n if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\n }\n }\n\n mult = easer(mult);\n } else if (type === 5) {\n if (e === s) {\n mult = 0;\n } else {\n var tot = e - s;\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\n ind = min(max(0, ind + 0.5 - s), e - s);\n var x = -tot / 2 + ind;\n var a = tot / 2;\n mult = Math.sqrt(1 - x * x / (a * a));\n }\n\n mult = easer(mult);\n } else if (type === 6) {\n if (e === s) {\n mult = 0;\n } else {\n ind = min(max(0, ind + 0.5 - s), e - s);\n mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n }\n\n mult = easer(mult);\n } else {\n if (ind >= floor(s)) {\n if (ind - s < 0) {\n mult = max(0, min(min(e, 1) - (s - ind), 1));\n } else {\n mult = max(0, min(e - ind, 1));\n }\n }\n\n mult = easer(mult);\n } // Smoothness implementation.\n // The smoothness represents a reduced range of the original [0; 1] range.\n // if smoothness is 25%, the new range will be [0.375; 0.625]\n // Steps are:\n // - find the lower value of the new range (threshold)\n // - if multiplier is smaller than that value, floor it to 0\n // - if it is larger,\n // - subtract the threshold\n // - divide it by the smoothness (this will return the range to [0; 1])\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n\n\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n\n var threshold = 0.5 - smoothness * 0.5;\n\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n\n if (mult > 1) {\n mult = 1;\n }\n }\n }\n\n return mult * this.a.v;\n },\n getValue: function getValue(newCharsFlag) {\n this.iterateDynamicProperties();\n this._mdf = newCharsFlag || this._mdf;\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\n }\n\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n var o = this.o.v / divisor;\n var s = this.s.v / divisor + o;\n var e = this.e.v / divisor + o;\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\n }\n\n return {\n getTextSelectorProp: getTextSelectorProp\n };\n }();\n\n function TextAnimatorDataProperty(elem, animatorProps, container) {\n var defaultData = {\n propType: false\n };\n var getProp = PropertyFactory.getProp;\n var textAnimatorAnimatables = animatorProps.a;\n this.a = {\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n };\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n this.s.t = animatorProps.s.t;\n }\n\n function TextAnimatorProperty(textData, renderType, elem) {\n this._isFirstFrame = true;\n this._hasMaskedPath = false;\n this._frameId = -1;\n this._textData = textData;\n this._renderType = renderType;\n this._elem = elem;\n this._animatorsData = createSizedArray(this._textData.a.length);\n this._pathData = {};\n this._moreOptions = {\n alignment: {}\n };\n this.renderedLetters = [];\n this.lettersChangedFlag = false;\n this.initDynamicPropertyContainer(elem);\n }\n\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\n\n for (i = 0; i < len; i += 1) {\n animatorProps = this._textData.a[i];\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n }\n\n if (this._textData.p && 'm' in this._textData.p) {\n this._pathData = {\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n };\n this._hasMaskedPath = true;\n } else {\n this._hasMaskedPath = false;\n }\n\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\n }\n\n this._isFirstFrame = false;\n var alignment = this._moreOptions.alignment.v;\n var animators = this._animatorsData;\n var textData = this._textData;\n var matrixHelper = this.mHelper;\n var renderType = this._renderType;\n var renderedLettersCount = this.renderedLetters.length;\n var xPos;\n var yPos;\n var i;\n var len;\n var letters = documentData.l;\n var pathInfo;\n var currentLength;\n var currentPoint;\n var segmentLength;\n var flag;\n var pointInd;\n var segmentInd;\n var prevPoint;\n var points;\n var segments;\n var partialLength;\n var totalLength;\n var perc;\n var tanAngle;\n var mask;\n\n if (this._hasMaskedPath) {\n mask = this._pathData.m;\n\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n\n if (this._pathData.r.v) {\n paths = paths.reverse();\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\n\n for (i = 0; i < len; i += 1) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n i = len;\n\n if (mask.v.c) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n this._pathData.pi = pathInfo;\n }\n\n pathInfo = this._pathData.pi;\n currentLength = this._pathData.f.v;\n segmentInd = 0;\n pointInd = 1;\n segmentLength = 0;\n flag = true;\n segments = pathInfo.segments;\n\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n\n len = letters.length;\n xPos = 0;\n yPos = 0;\n var yOff = documentData.finalSize * 1.2 * 0.714;\n var firstLine = true;\n var animatorProps;\n var animatorSelector;\n var j;\n var jLen;\n var letterValue;\n jLen = animators.length;\n var mult;\n var ind = -1;\n var offf;\n var xPathPos;\n var yPathPos;\n var initPathPos = currentLength;\n var initSegmentInd = segmentInd;\n var initPointInd = pointInd;\n var currentLine = -1;\n var elemOpacity;\n var sc;\n var sw;\n var fc;\n var k;\n var letterSw;\n var letterSc;\n var letterFc;\n var letterM = '';\n var letterP = this.defaultPropsArray;\n var letterO; //\n\n if (documentData.j === 2 || documentData.j === 1) {\n var animatorJustifyOffset = 0;\n var animatorFirstCharOffset = 0;\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n var lastIndex = 0;\n var isNewLine = true;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n } else {\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n }\n }\n }\n\n isNewLine = false;\n }\n }\n\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n } //\n\n\n for (i = 0; i < len; i += 1) {\n matrixHelper.reset();\n elemOpacity = 1;\n\n if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\n\n if (this._hasMaskedPath) {\n segmentInd = initSegmentInd;\n pointInd = initPointInd;\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n segmentLength = 0;\n }\n\n letterM = '';\n letterFc = '';\n letterSw = '';\n letterO = '';\n letterP = this.defaultPropsArray;\n } else {\n if (this._hasMaskedPath) {\n if (currentLine !== letters[i].line) {\n switch (documentData.j) {\n case 1:\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\n break;\n\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n\n default:\n break;\n }\n\n currentLine = letters[i].line;\n }\n\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\n }\n }\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.a.v[0] * mult;\n }\n }\n }\n\n flag = true; // Force alignment only works with a single line for now\n\n if (this._pathData.a.v) {\n currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n currentLength += this._pathData.f.v;\n }\n\n while (flag) {\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n flag = false;\n } else if (points) {\n segmentLength += currentPoint.partialLength;\n pointInd += 1;\n\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\n\n if (!segments[segmentInd]) {\n if (mask.v.c) {\n pointInd = 0;\n segmentInd = 0;\n points = segments[segmentInd].points;\n } else {\n segmentLength -= currentPoint.partialLength;\n points = null;\n }\n } else {\n points = segments[segmentInd].points;\n }\n }\n\n if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n }\n }\n\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0);\n } else {\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0); // Grouping alignment\n\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\n if (xPos !== 0 || documentData.j !== 0) {\n if (this._hasMaskedPath) {\n if (mult.length) {\n currentLength += animatorProps.t.v * mult[0];\n } else {\n currentLength += animatorProps.t.v * mult;\n }\n } else if (mult.length) {\n xPos += animatorProps.t.v * mult[0];\n } else {\n xPos += animatorProps.t.v * mult;\n }\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\n }\n\n if (documentData.strokeColorAnim) {\n if (documentData.sc) {\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n } else {\n sc = [0, 0, 0];\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n } else {\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n } else {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (animatorProps.sk.propType) {\n if (mult.length) {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n } else {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n }\n }\n\n if (animatorProps.r.propType) {\n if (mult.length) {\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n } else {\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\n }\n }\n\n if (animatorProps.ry.propType) {\n if (mult.length) {\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n } else {\n matrixHelper.rotateY(animatorProps.ry.v * mult);\n }\n }\n\n if (animatorProps.rx.propType) {\n if (mult.length) {\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n } else {\n matrixHelper.rotateX(animatorProps.rx.v * mult);\n }\n }\n\n if (animatorProps.o.propType) {\n if (mult.length) {\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n } else {\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n }\n }\n\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n if (mult.length) {\n sw += animatorProps.sw.v * mult[0];\n } else {\n sw += animatorProps.sw.v * mult;\n }\n }\n\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n } else {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n }\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n if (animatorProps.fc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n } else {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n }\n }\n }\n\n if (animatorProps.fh.propType) {\n if (mult.length) {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n } else {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n }\n }\n\n if (animatorProps.fs.propType) {\n if (mult.length) {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n } else {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n }\n }\n\n if (animatorProps.fb.propType) {\n if (mult.length) {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n } else {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n }\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (this._hasMaskedPath) {\n if (mult.length) {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n } else {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n } else if (mult.length) {\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n } else {\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\n }\n\n if (documentData.strokeColorAnim) {\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n }\n\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\n if (this._pathData.p.v) {\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\n\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\n\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\n currentLength += letters[i].an / 2;\n currentLength += documentData.tr * 0.001 * documentData.finalSize;\n }\n } else {\n matrixHelper.translate(xPos, yPos, 0);\n\n if (documentData.ps) {\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(offf, 0, 0);\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n }\n\n if (renderType === 'html') {\n letterM = matrixHelper.toCSS();\n } else if (renderType === 'svg') {\n letterM = matrixHelper.to2dCSS();\n } else {\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n }\n\n letterO = elemOpacity;\n }\n\n if (renderedLettersCount <= i) {\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n this.renderedLetters.push(letterValue);\n renderedLettersCount += 1;\n this.lettersChangedFlag = true;\n } else {\n letterValue = this.renderedLetters[i];\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n }\n }\n };\n\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\n\n ITextElement.prototype.initElement = function (data, globalData, comp) {\n this.lettersChangedFlag = true;\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n this.textAnimator.searchProperties(this.dynamicProperties);\n };\n\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n };\n\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n pathNodes = shapes[j].ks.k;\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n }\n }\n\n return shapeStr;\n };\n\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\n };\n\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n if (documentData.ps) {\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n matrixHelper.translate(0, -documentData.ls, 0);\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(xPos, yPos, 0);\n };\n\n ITextElement.prototype.buildColor = function (colorData) {\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n };\n\n ITextElement.prototype.emptyProp = new LetterProps();\n\n ITextElement.prototype.destroy = function () {};\n\n ITextElement.prototype.validateText = function () {\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText();\n this.textProperty._isFirstFrame = false;\n this.textProperty._mdf = false;\n }\n };\n\n var emptyShapeData = {\n shapes: []\n };\n\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\n\n while (i < len) {\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n textContents.push(currentTextContent);\n currentTextContent = '';\n } else {\n currentTextContent += textArray[i];\n }\n\n i += 1;\n }\n\n textContents.push(currentTextContent);\n return textContents;\n };\n\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\n // but since text internal content gets only rendered once and then it's never rerendered,\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n // Avoiding cloning is preferred since cloning each character shape data is expensive\n if (data.shapes && data.shapes.length) {\n var shape = data.shapes[0];\n\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n\n return data;\n };\n\n SVGTextLottieElement.prototype.buildNewText = function () {\n this.addDynamicProperty(this);\n var i;\n var len;\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n\n if (documentData.fc) {\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n } else {\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n }\n\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (fontData.fClass) {\n this.layerElement.setAttribute('class', fontData.fClass);\n } else {\n this.layerElement.setAttribute('font-family', fontData.fFamily);\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n this.layerElement.setAttribute('font-style', fStyle);\n this.layerElement.setAttribute('font-weight', fWeight);\n }\n\n this.layerElement.setAttribute('aria-label', documentData.t);\n var letters = documentData.l || [];\n var usesGlyphs = !!this.globalData.fontManager.chars;\n len = letters.length;\n var tSpan;\n var matrixHelper = this.mHelper;\n var shapeStr = '';\n var singleShape = this.data.singleShape;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n\n case 2:\n justify = 'middle';\n break;\n\n default:\n justify = 'start';\n break;\n }\n\n tElement.setAttribute('text-anchor', justify);\n tElement.setAttribute('letter-spacing', trackingOffset);\n var textContent = this.buildTextContents(documentData.finalText);\n len = textContent.length;\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n\n for (i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i].span || createNS('tspan');\n tSpan.textContent = textContent[i];\n tSpan.setAttribute('x', 0);\n tSpan.setAttribute('y', yPos);\n tSpan.style.display = 'inherit';\n tElement.appendChild(tSpan);\n\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\n\n for (i = 0; i < len; i += 1) {\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n childSpan: null,\n glyph: null\n };\n }\n\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\n if (cachedSpansLength <= i) {\n tSpan.setAttribute('stroke-linecap', 'butt');\n tSpan.setAttribute('stroke-linejoin', 'round');\n tSpan.setAttribute('stroke-miterlimit', '4');\n this.textSpans[i].span = tSpan;\n\n if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n\n tSpan.style.display = 'inherit';\n }\n\n matrixHelper.reset();\n\n if (singleShape) {\n if (letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n xPos += trackingOffset;\n }\n\n if (usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var glyphElement; // t === 1 means the character has been replaced with an animated shaped\n\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\n\n if (this.textSpans[i].glyph) {\n var glyph = this.textSpans[i].glyph;\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n glyph.destroy();\n }\n\n this.textSpans[i].glyph = glyphElement;\n glyphElement._debug = true;\n glyphElement.prepareFrame(0);\n glyphElement.renderFrame();\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n // this might have issues with strokes and might need a different solution\n\n if (charData.t === 1) {\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n }\n } else {\n if (singleShape) {\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n }\n\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n } //\n\n }\n\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n\n this._sizeChanged = true;\n };\n\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\n\n if (this._sizeChanged) {\n this._sizeChanged = false;\n var textBox = this.layerElement.getBBox();\n this.bbox = {\n top: textBox.y,\n left: textBox.x,\n width: textBox.width,\n height: textBox.height\n };\n }\n\n return this.bbox;\n };\n\n SVGTextLottieElement.prototype.getValue = function () {\n var i;\n var len = this.textSpans.length;\n var glyphElement;\n this.renderedFrame = this.comp.renderedFrame;\n\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n this.validateText();\n\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n this._sizeChanged = true;\n var i;\n var len;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var glyphElement;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n textSpan = this.textSpans[i].span;\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.renderFrame();\n }\n\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter._mdf.fc) {\n textSpan.setAttribute('fill', renderedLetter.fc);\n }\n }\n }\n }\n }\n };\n\n function ISolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([IImageElement], ISolidElement);\n\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.layerElement.appendChild(rect);\n };\n\n function NullElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initFrame();\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n }\n\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n NullElement.prototype.renderFrame = function () {};\n\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n\n NullElement.prototype.destroy = function () {};\n\n NullElement.prototype.sourceRectAtTime = function () {};\n\n NullElement.prototype.hide = function () {};\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n\n extendPrototype([BaseRenderer], SVGRendererBase);\n\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.configAnimation = function (animData) {\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n if (this.renderConfig.viewBoxSize) {\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n } else {\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n }\n\n if (!this.renderConfig.viewBoxOnly) {\n this.svgElement.setAttribute('width', animData.w);\n this.svgElement.setAttribute('height', animData.h);\n this.svgElement.style.width = '100%';\n this.svgElement.style.height = '100%';\n this.svgElement.style.transform = 'translate3d(0,0,0)';\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n }\n\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\n var defs = this.globalData.defs;\n this.setupGlobalData(animData, defs);\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.data = animData;\n var maskElement = createNS('clipPath');\n var rect = createNS('rect');\n rect.setAttribute('width', animData.w);\n rect.setAttribute('height', animData.h);\n rect.setAttribute('x', 0);\n rect.setAttribute('y', 0);\n var maskId = createElementID();\n maskElement.setAttribute('id', maskId);\n maskElement.appendChild(rect);\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n defs.appendChild(maskElement);\n this.layers = animData.layers;\n this.elements = createSizedArray(animData.layers.length);\n };\n\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n SVGRendererBase.prototype.updateContainerSize = function () {};\n\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n\n return -1;\n };\n\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n\n element.initExpressions();\n }\n\n this.appendElementInPos(element, pos);\n\n if (this.layers[pos].tt) {\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n\n if (elementIndex === -1) {\n return;\n }\n\n if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n this.buildItem(elementIndex);\n this.addPendingElement(element);\n } else {\n var matteElement = elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[pos].tt);\n element.setMatte(matteMask);\n }\n }\n };\n\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\n\n while (i < len) {\n if (this.elements[i] === element) {\n var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n var matteElement = this.elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[i].tt);\n element.setMatte(matteMask);\n break;\n }\n\n i += 1;\n }\n }\n }\n };\n\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n } // console.log('-------');\n // console.log('FRAME ',num);\n\n\n this.globalData.frameNum = num;\n this.globalData.frameId += 1;\n this.globalData.projectInterface.currentFrame = num;\n this.globalData._mdf = false;\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n }\n };\n\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n\n if (!newElement) {\n return;\n }\n\n var i = 0;\n var nextElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n nextElement = this.elements[i].getBaseElement();\n }\n\n i += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\n ICompElement.prototype.initElement = function (data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initRenderable();\n this.initHierarchy();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n\n this.hide();\n };\n /* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n }; */\n\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n\n var i;\n var len = this.elements.length;\n\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n } // This iteration needs to be backwards because of how expressions connect between each other\n\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n\n if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n };\n\n ICompElement.prototype.destroy = function () {\n this.destroyElements();\n this.destroyBaseElement();\n };\n\n function SVGCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = true;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\n SVGCompElement.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function SVGRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.svgElement = createNS('svg');\n var ariaLabel = '';\n\n if (config && config.title) {\n var titleElement = createNS('title');\n var titleId = createElementID();\n titleElement.setAttribute('id', titleId);\n titleElement.textContent = config.title;\n this.svgElement.appendChild(titleElement);\n ariaLabel += titleId;\n }\n\n if (config && config.description) {\n var descElement = createNS('desc');\n var descId = createElementID();\n descElement.setAttribute('id', descId);\n descElement.textContent = config.description;\n this.svgElement.appendChild(descElement);\n ariaLabel += ' ' + descId;\n }\n\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n }\n\n var defs = createNS('defs');\n this.svgElement.appendChild(defs);\n var maskElement = createNS('g');\n this.svgElement.appendChild(maskElement);\n this.layerElement = maskElement;\n this.renderConfig = {\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n progressiveLoad: config && config.progressiveLoad || false,\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n viewBoxOnly: config && config.viewBoxOnly || false,\n viewBoxSize: config && config.viewBoxSize || false,\n className: config && config.className || '',\n id: config && config.id || '',\n focusable: config && config.focusable,\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '100%',\n height: config && config.filterSize && config.filterSize.height || '100%',\n x: config && config.filterSize && config.filterSize.x || '0%',\n y: config && config.filterSize && config.filterSize.y || '0%'\n },\n width: config && config.width,\n height: config && config.height,\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n defs: defs,\n renderConfig: this.renderConfig\n };\n this.elements = [];\n this.pendingElements = [];\n this.destroyed = false;\n this.rendererType = 'svg';\n }\n\n extendPrototype([SVGRendererBase], SVGRenderer);\n\n SVGRenderer.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function ShapeTransformManager() {\n this.sequences = {};\n this.sequenceList = [];\n this.transform_key_count = 0;\n }\n\n ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n\n var sequence = this.sequences[key];\n\n if (!sequence) {\n sequence = {\n transforms: [].concat(transforms),\n finalTransform: new Matrix(),\n _mdf: false\n };\n this.sequences[key] = sequence;\n this.sequenceList.push(sequence);\n }\n\n return sequence;\n },\n processSequence: function processSequence(sequence, isFirstFrame) {\n var i = 0;\n var len = sequence.transforms.length;\n var _mdf = isFirstFrame;\n\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n\n i += 1;\n }\n\n if (_mdf) {\n sequence.finalTransform.reset();\n\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n }\n }\n\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\n\n for (i = 0; i < len; i += 1) {\n this.processSequence(this.sequenceList[i], isFirstFrame);\n }\n },\n getNewKey: function getNewKey() {\n this.transform_key_count += 1;\n return '_' + this.transform_key_count;\n }\n };\n\n var lumaLoader = function lumaLoader() {\n var id = '__lottie_element_luma_buffer';\n var lumaBuffer = null;\n var lumaBufferCtx = null;\n var svg = null; // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n // Naming it solution 2 to mark the extra comment lines.\n\n /*\r\n var svgString = [\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n ].join('');\r\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\r\n var url = URL.createObjectURL(blob);\r\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\n\n var fil = createNS('filter');\n var matrix = createNS('feColorMatrix');\n fil.setAttribute('id', id);\n matrix.setAttribute('type', 'matrix');\n matrix.setAttribute('color-interpolation-filters', 'sRGB');\n matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');\n fil.appendChild(matrix);\n\n _svg.appendChild(fil);\n\n _svg.setAttribute('id', id + '_svg');\n\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n\n return _svg;\n }\n\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d'); // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height; // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n\n var assetLoader = function () {\n return {\n loadLumaCanvas: lumaLoader.load,\n getLumaCanvas: lumaLoader.get,\n createCanvas: createCanvas\n };\n }();\n\n var registeredEffects = {};\n\n function CVEffects(elem) {\n var i;\n var len = elem.data.ef ? elem.data.ef.length : 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect(id, effect) {\n registeredEffects[id] = {\n effect: effect\n };\n }\n\n function CVMaskElement(data, element) {\n this.data = data;\n this.element = element;\n this.masksProperties = this.data.masksProperties || [];\n this.viewData = createSizedArray(this.masksProperties.length);\n var i;\n var len = this.masksProperties.length;\n var hasMasks = false;\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n\n this.hasMasks = hasMasks;\n\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\n }\n\n var transform = this.element.finalTransform.mat;\n var ctx = this.element.canvasContext;\n var i;\n var len = this.masksProperties.length;\n var pt;\n var pts;\n var data;\n ctx.beginPath();\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n if (this.masksProperties[i].inv) {\n ctx.moveTo(0, 0);\n ctx.lineTo(this.element.globalData.compSize.w, 0);\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n ctx.lineTo(0, this.element.globalData.compSize.h);\n ctx.lineTo(0, 0);\n }\n\n data = this.viewData[i].v;\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n ctx.moveTo(pt[0], pt[1]);\n var j;\n var jLen = data._length;\n\n for (j = 1; j < jLen; j += 1) {\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n }\n\n this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\n\n var operationsMap = {\n 1: 'source-in',\n 2: 'source-out',\n 3: 'source-in',\n 4: 'source-out'\n };\n CVBaseElement.prototype = {\n createElements: function createElements() {},\n initRendererElement: function initRendererElement() {},\n createContainerElements: function createContainerElements() {\n // If the layer is masked we will use two buffers to store each different states of the drawing\n // This solution is not ideal for several reason. But unfortunately, because of the recursive\n // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n // It might be challenging because the layer most likely is transformed in some way\n if (this.data.tt >= 1) {\n this.buffers = [];\n var canvasContext = this.globalData.canvasContext;\n var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas);\n var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas2);\n\n if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\n }\n }\n\n this.canvasContext = this.globalData.canvasContext;\n this.transformCanvas = this.globalData.transformCanvas;\n this.renderableEffectsManager = new CVEffects(this);\n this.searchEffectTransforms();\n },\n createContent: function createContent() {},\n setBlendMode: function setBlendMode() {\n var globalData = this.globalData;\n\n if (globalData.blendMode !== this.data.bm) {\n globalData.blendMode = this.data.bm;\n var blendModeValue = getBlendMode(this.data.bm);\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new CVMaskElement(this.data, this);\n this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n },\n hideElement: function hideElement() {\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n this.hidden = true;\n }\n },\n showElement: function showElement() {\n if (this.isInRange && !this.isTransparent) {\n this.hidden = false;\n this._isFirstFrame = true;\n this.maskManager._isFirstFrame = true;\n }\n },\n clearCanvas: function clearCanvas(canvasContext) {\n canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n },\n prepareLayer: function prepareLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[0];\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx); // on the first buffer we store the current state of the global drawing\n\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // The next four lines are to clear the canvas\n // TODO: Check if there is a way to clear the canvas without resetting the transform\n\n this.currentTransform = this.canvasContext.getTransform();\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n }\n },\n exitLayer: function exitLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[1]; // On the second buffer we store the current state of the global drawing\n // that only contains the content of this layer\n // (if it is a composition, it also includes the nested layers)\n\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // We clear the canvas again\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform); // We draw the mask\n\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true); // We draw the second buffer (that contains the content of this layer)\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); // If the mask is a Luma matte, we need to do two extra painting operations\n // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n\n if (this.data.tt >= 3 && !document._isProxy) {\n // We copy the painted mask to a buffer that has a color matrix filter applied to it\n // that applies the rgb values to the alpha channel\n var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n var lumaBufferCtx = lumaBuffer.getContext('2d');\n lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n this.clearCanvas(this.canvasContext); // we repaint the context with the mask applied to it\n\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0); // We finally draw the first buffer (that contains the content of the global drawing)\n // We use destination-over to draw the global drawing below the current layer\n\n this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform); // We reset the globalCompositeOperation to source-over, the standard type of operation\n\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n\n if (this.data.td === 1 && !forceRender) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.setBlendMode();\n var forceRealStack = this.data.ty === 0;\n this.prepareLayer();\n this.globalData.renderer.save(forceRealStack);\n this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n this.renderInnerContent();\n this.globalData.renderer.restore(forceRealStack);\n this.exitLayer();\n\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\n }\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.canvasContext = null;\n this.data = null;\n this.globalData = null;\n this.maskManager.destroy();\n },\n mHelper: new Matrix()\n };\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n function CVShapeData(element, data, styles, transformsManager) {\n this.styledShapes = [];\n this.tr = [0, 0, 0, 0, 0, 0];\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\n\n for (i = 0; i < len; i += 1) {\n if (!styles[i].closed) {\n styledShape = {\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\n trNodes: []\n };\n this.styledShapes.push(styledShape);\n styles[i].elements.push(styledShape);\n }\n }\n }\n\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n function CVShapeElement(data, globalData, comp) {\n this.shapes = [];\n this.shapesData = data.shapes;\n this.stylesList = [];\n this.itemsData = [];\n this.prevViewData = [];\n this.shapeModifiers = [];\n this.processedElements = [];\n this.transformsManager = new ShapeTransformManager();\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n CVShapeElement.prototype.transformHelper = {\n opacity: 1,\n _opMdf: false\n };\n CVShapeElement.prototype.dashResetter = [];\n\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n };\n\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n var styleElem = {\n data: data,\n type: data.ty,\n preTransforms: this.transformsManager.addTransformSequence(transforms),\n transforms: [],\n elements: [],\n closed: data.hd === true\n };\n var elementData = {};\n\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\n if (!elementData.c.k) {\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n }\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n elementData.h = PropertyFactory.getProp(this, data.h || {\n k: 0\n }, 0, 0.01, this);\n elementData.a = PropertyFactory.getProp(this, data.a || {\n k: 0\n }, 0, degToRads, this);\n elementData.g = new GradientProperty(this, data.g, this);\n }\n\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\n\n if (!elementData.d.k) {\n styleElem.da = elementData.d.dashArray;\n styleElem[\"do\"] = elementData.d.dashoffset[0];\n }\n }\n } else {\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n }\n\n this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createTransformElement = function (data) {\n var elementData = {\n transform: {\n opacity: 1,\n _opMdf: false,\n key: this.transformsManager.getNewKey(),\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n }\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createShapeElement = function (data) {\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n return elementData;\n };\n\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.push(transform);\n }\n }\n };\n\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var processedPos;\n var modifier;\n var currentTransform;\n var ownTransforms = [].concat(transforms);\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n } else {\n itemsData[i].style.closed = false;\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n currentTransform = this.createTransformElement(arr[i]);\n itemsData[i] = currentTransform;\n }\n\n ownTransforms.push(itemsData[i]);\n this.addTransformToStyleList(itemsData[i]);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i]);\n }\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n shouldRender = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.renderInnerContent = function () {\n this.transformHelper.opacity = 1;\n this.transformHelper._opMdf = false;\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n };\n\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n groupTransform.opacity = parentTransform.opacity;\n groupTransform.opacity *= groupTransform.op.v;\n groupTransform._opMdf = true;\n }\n };\n\n CVShapeElement.prototype.drawLayer = function () {\n var i;\n var len = this.stylesList.length;\n var j;\n var jLen;\n var k;\n var kLen;\n var elems;\n var nodes;\n var renderer = this.globalData.renderer;\n var ctx = this.globalData.canvasContext;\n var type;\n var currentStyle;\n\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type; // Skipping style when\n // Stroke width equals 0\n // style should not be rendered (extra unused repeaters)\n // current opacity equals 0\n // global opacity equals 0\n\n if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n renderer.save();\n elems = currentStyle.elements;\n\n if (type === 'st' || type === 'gs') {\n renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd); // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n\n renderer.ctxLineWidth(currentStyle.wi); // ctx.lineWidth = currentStyle.wi;\n\n renderer.ctxLineCap(currentStyle.lc); // ctx.lineCap = currentStyle.lc;\n\n renderer.ctxLineJoin(currentStyle.lj); // ctx.lineJoin = currentStyle.lj;\n\n renderer.ctxMiterLimit(currentStyle.ml || 0); // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd); // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n\n renderer.ctxOpacity(currentStyle.coOp);\n\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n\n nodes = elems[j].trNodes;\n kLen = nodes.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (nodes[k].t === 'm') {\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n } else if (nodes[k].t === 'c') {\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n } else {\n ctx.closePath();\n }\n }\n\n if (type === 'st' || type === 'gs') {\n // ctx.stroke();\n renderer.ctxStroke();\n\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n\n if (type !== 'st' && type !== 'gs') {\n // ctx.fill(currentStyle.r);\n this.globalData.renderer.ctxFill(currentStyle.r);\n }\n\n renderer.restore();\n }\n }\n };\n\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n var i;\n var len = items.length - 1;\n var groupTransform;\n groupTransform = parentTransform;\n\n for (i = len; i >= 0; i -= 1) {\n if (items[i].ty === 'tr') {\n groupTransform = data[i].transform;\n this.renderShapeTransform(parentTransform, groupTransform);\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n this.renderPath(items[i], data[i]);\n } else if (items[i].ty === 'fl') {\n this.renderFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'st') {\n this.renderStroke(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n this.renderGradientFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gr') {\n this.renderShape(groupTransform, items[i].it, data[i].it);\n } else if (items[i].ty === 'tm') {//\n }\n }\n\n if (isMain) {\n this.drawLayer();\n }\n };\n\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n var shapeNodes = styledShape.trNodes;\n var paths = shape.paths;\n var i;\n var len;\n var j;\n var jLen = paths._length;\n shapeNodes.length = 0;\n var groupTransformMat = styledShape.transforms.finalTransform;\n\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n if (i === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n });\n }\n\n if (len === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n if (pathNodes.c && len) {\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n });\n shapeNodes.push({\n t: 'z'\n });\n }\n }\n }\n\n styledShape.trNodes = shapeNodes;\n }\n };\n\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n if (pathData.hd !== true && pathData._shouldRender) {\n var i;\n var len = itemData.styledShapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\n\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n var ctx = this.globalData.canvasContext;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (styleData.t === 1) {\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n } else {\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n }\n\n var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\n\n for (i = 0; i < len; i += 1) {\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\n opacity = itemData.g.o[i * 2 + 1];\n }\n\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n\n styleElem.grd = grd;\n }\n\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\n }\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\n }\n };\n\n CVShapeElement.prototype.destroy = function () {\n this.shapesData = null;\n this.globalData = null;\n this.canvasContext = null;\n this.stylesList.length = 0;\n this.itemsData.length = 0;\n };\n\n function CVTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.yOffset = 0;\n this.fillColorAnim = false;\n this.strokeColorAnim = false;\n this.strokeWidthAnim = false;\n this.stroke = false;\n this.fill = false;\n this.justifyOffset = 0;\n this.currentRender = null;\n this.renderType = 'canvas';\n this.values = {\n fill: 'rgba(0,0,0,0)',\n stroke: 'rgba(0,0,0,0)',\n sWidth: 0,\n fValue: ''\n };\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\n CVTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var hasFill = false;\n\n if (documentData.fc) {\n hasFill = true;\n this.values.fill = this.buildColor(documentData.fc);\n } else {\n this.values.fill = 'rgba(0,0,0,0)';\n }\n\n this.fill = hasFill;\n var hasStroke = false;\n\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n var i;\n var len;\n var letters = documentData.l;\n var matrixHelper = this.mHelper;\n this.stroke = hasStroke;\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\n\n var charData;\n var shapeData;\n var k;\n var kLen;\n var shapes;\n var j;\n var jLen;\n var pathNodes;\n var commands;\n var pathArr;\n var singleShape = this.data.singleShape;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n shapeData = charData && charData.data || {};\n matrixHelper.reset();\n\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n kLen = shapes[j].ks.k.i.length;\n pathNodes = shapes[j].ks.k;\n pathArr = [];\n\n for (k = 1; k < kLen; k += 1) {\n if (k === 1) {\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n commands[commandsCounter] = pathArr;\n commandsCounter += 1;\n }\n }\n\n if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n\n cnt += 1;\n }\n };\n\n CVTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var ctx = this.canvasContext;\n ctx.font = this.values.fValue;\n this.globalData.renderer.ctxLineCap('butt'); // ctx.lineCap = 'butt';\n\n this.globalData.renderer.ctxLineJoin('miter'); // ctx.lineJoin = 'miter';\n\n this.globalData.renderer.ctxMiterLimit(4); // ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n }\n\n var i;\n var len;\n var j;\n var jLen;\n var k;\n var kLen;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var lastFill = null;\n var lastStroke = null;\n var lastStrokeW = null;\n var commands;\n var pathArr;\n var renderer = this.globalData.renderer;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc; // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill); // ctx.fillStyle = this.values.fill;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxFill(); // this.globalData.canvasContext.fill();\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n renderer.ctxLineWidth(renderedLetter.sw); // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth); // ctx.lineWidth = this.values.sWidth;\n }\n\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc); // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke); // ctx.strokeStyle = this.values.stroke;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxStroke(); // this.globalData.canvasContext.stroke();\n /// ctx.strokeText(letters[i].val,0,0);\n }\n\n if (renderedLetter) {\n this.globalData.renderer.restore();\n }\n }\n }\n };\n\n function CVImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.img = globalData.imageLoader.getAsset(this.assetData);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVImageElement.prototype.createContent = function () {\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n var canvas = createTag('canvas');\n canvas.width = this.assetData.w;\n canvas.height = this.assetData.h;\n var ctx = canvas.getContext('2d');\n var imgW = this.img.width;\n var imgH = this.img.height;\n var imgRel = imgW / imgH;\n var canvasRel = this.assetData.w / this.assetData.h;\n var widthCrop;\n var heightCrop;\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n\n if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n heightCrop = imgH;\n widthCrop = heightCrop * canvasRel;\n } else {\n widthCrop = imgW;\n heightCrop = widthCrop / canvasRel;\n }\n\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n this.img = canvas;\n }\n };\n\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\n };\n\n CVImageElement.prototype.destroy = function () {\n this.img = null;\n };\n\n function CVSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVSolidElement.prototype.renderInnerContent = function () {\n // var ctx = this.canvasContext;\n this.globalData.renderer.ctxFillStyle(this.data.sc); // ctx.fillStyle = this.data.sc;\n\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\n\n extendPrototype([BaseRenderer], CanvasRendererBase);\n\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n CanvasRendererBase.prototype.ctxTransform = function (props) {\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n return;\n }\n\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\n };\n\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n this.contextData.reset();\n };\n\n CanvasRendererBase.prototype.save = function () {\n this.canvasContext.save();\n };\n\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n if (actionFlag) {\n this.globalData.blendMode = 'source-over';\n }\n\n this.contextData.restore(actionFlag);\n };\n\n CanvasRendererBase.prototype.configAnimation = function (animData) {\n if (this.animationItem.wrapper) {\n this.animationItem.container = createTag('canvas');\n var containerStyle = this.animationItem.container.style;\n containerStyle.width = '100%';\n containerStyle.height = '100%';\n var origin = '0px 0px 0px';\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n containerStyle['-webkit-transform'] = origin;\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n this.animationItem.wrapper.appendChild(this.animationItem.container);\n this.canvasContext = this.animationItem.container.getContext('2d');\n\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\n }\n } else {\n this.canvasContext = this.renderConfig.context;\n }\n\n this.contextData.setContext(this.canvasContext);\n this.data = animData;\n this.layers = animData.layers;\n this.transformCanvas = {\n w: animData.w,\n h: animData.h,\n sx: 0,\n sy: 0,\n tx: 0,\n ty: 0\n };\n this.setupGlobalData(animData, document.body);\n this.globalData.canvasContext = this.canvasContext;\n this.globalData.renderer = this;\n this.globalData.isDashed = false;\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.globalData.transformCanvas = this.transformCanvas;\n this.elements = createSizedArray(animData.layers.length);\n this.updateContainerSize();\n };\n\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\n\n if (width) {\n elementWidth = width;\n elementHeight = height;\n this.canvasContext.canvas.width = elementWidth;\n this.canvasContext.canvas.height = elementHeight;\n } else {\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth;\n elementHeight = this.animationItem.wrapper.offsetHeight;\n } else {\n elementWidth = this.canvasContext.canvas.width;\n elementHeight = this.canvasContext.canvas.height;\n }\n\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n }\n\n var elementRel;\n var animationRel;\n\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n var par = this.renderConfig.preserveAspectRatio.split(' ');\n var fillType = par[1] || 'meet';\n var pos = par[0] || 'xMidYMid';\n var xPos = pos.substr(0, 4);\n var yPos = pos.substr(4);\n elementRel = elementWidth / elementHeight;\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\n\n if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n } else {\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n }\n\n if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.tx = 0;\n }\n\n if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.ty = 0;\n }\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n } else {\n this.transformCanvas.sx = this.renderConfig.dpr;\n this.transformCanvas.sy = this.renderConfig.dpr;\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n }\n\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n /* var i, len = this.elements.length;\r\n for(i=0;i= 0; i -= 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\n };\n\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n return;\n }\n\n this.renderedFrame = num;\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n this.globalData.frameId += 1;\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n this.globalData.projectInterface.currentFrame = num; // console.log('--------');\n // console.log('NEW: ',num);\n\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n if (this.renderConfig.clearCanvas === true) {\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n } else {\n this.save();\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n\n if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n var element = this.createItem(this.layers[pos], this, this.globalData);\n elements[pos] = element;\n element.initExpressions();\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\n };\n\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\n };\n\n CanvasRendererBase.prototype.show = function () {\n this.animationItem.container.style.display = 'block';\n };\n\n function CanvasContext() {\n this.opacity = -1;\n this.transform = createTypedArray('float32', 16);\n this.fillStyle = '';\n this.strokeStyle = '';\n this.lineWidth = '';\n this.lineCap = '';\n this.lineJoin = '';\n this.miterLimit = '';\n this.id = Math.random();\n }\n\n function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\n }\n\n this._length = len;\n this.nativeContext = null;\n this.transformMat = new Matrix();\n this.currentOpacity = 1; //\n\n this.currentFillStyle = '';\n this.appliedFillStyle = ''; //\n\n this.currentStrokeStyle = '';\n this.appliedStrokeStyle = ''; //\n\n this.currentLineWidth = '';\n this.appliedLineWidth = ''; //\n\n this.currentLineCap = '';\n this.appliedLineCap = ''; //\n\n this.currentLineJoin = '';\n this.appliedLineJoin = ''; //\n\n this.appliedMiterLimit = '';\n this.currentMiterLimit = '';\n }\n\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n\n this._length = newLength;\n };\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\n };\n\n CVContextData.prototype.restore = function (forceRestore) {\n this.cArrPos -= 1;\n var currentContext = this.stack[this.cArrPos];\n var transform = currentContext.transform;\n var i;\n var arr = this.cTr.props;\n\n for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\n }\n\n if (forceRestore) {\n this.nativeContext.restore();\n var prevStack = this.stack[this.cArrPos + 1];\n this.appliedFillStyle = prevStack.fillStyle;\n this.appliedStrokeStyle = prevStack.strokeStyle;\n this.appliedLineWidth = prevStack.lineWidth;\n this.appliedLineCap = prevStack.lineCap;\n this.appliedLineJoin = prevStack.lineJoin;\n this.appliedMiterLimit = prevStack.miterLimit;\n }\n\n this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\n }\n\n this.currentFillStyle = currentContext.fillStyle;\n this.currentStrokeStyle = currentContext.strokeStyle;\n this.currentLineWidth = currentContext.lineWidth;\n this.currentLineCap = currentContext.lineCap;\n this.currentLineJoin = currentContext.lineJoin;\n this.currentMiterLimit = currentContext.miterLimit;\n };\n\n CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n\n var props = this.cTr.props;\n\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n\n var currentStack = this.stack[this.cArrPos];\n var i;\n\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\n }\n\n this.cArrPos += 1;\n var newStack = this.stack[this.cArrPos];\n newStack.opacity = currentStack.opacity;\n newStack.fillStyle = currentStack.fillStyle;\n newStack.strokeStyle = currentStack.strokeStyle;\n newStack.lineWidth = currentStack.lineWidth;\n newStack.lineCap = currentStack.lineCap;\n newStack.lineJoin = currentStack.lineJoin;\n newStack.miterLimit = currentStack.miterLimit;\n };\n\n CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\n };\n\n CVContextData.prototype.fillStyle = function (value) {\n if (this.stack[this.cArrPos].fillStyle !== value) {\n this.currentFillStyle = value;\n this.stack[this.cArrPos].fillStyle = value;\n }\n };\n\n CVContextData.prototype.strokeStyle = function (value) {\n if (this.stack[this.cArrPos].strokeStyle !== value) {\n this.currentStrokeStyle = value;\n this.stack[this.cArrPos].strokeStyle = value;\n }\n };\n\n CVContextData.prototype.lineWidth = function (value) {\n if (this.stack[this.cArrPos].lineWidth !== value) {\n this.currentLineWidth = value;\n this.stack[this.cArrPos].lineWidth = value;\n }\n };\n\n CVContextData.prototype.lineCap = function (value) {\n if (this.stack[this.cArrPos].lineCap !== value) {\n this.currentLineCap = value;\n this.stack[this.cArrPos].lineCap = value;\n }\n };\n\n CVContextData.prototype.lineJoin = function (value) {\n if (this.stack[this.cArrPos].lineJoin !== value) {\n this.currentLineJoin = value;\n this.stack[this.cArrPos].lineJoin = value;\n }\n };\n\n CVContextData.prototype.miterLimit = function (value) {\n if (this.stack[this.cArrPos].miterLimit !== value) {\n this.currentMiterLimit = value;\n this.stack[this.cArrPos].miterLimit = value;\n }\n };\n\n CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props); // Taking the last transform value from the stored stack of transforms\n\n var currentTransform = this.cTr; // Applying the last transform value after the new transform to respect the order of transformations\n\n this.transformMat.multiply(currentTransform); // Storing the new transformed value in the stored transform\n\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props; // Applying the new transform to the canvas\n\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n\n this.stack[this.cArrPos].opacity = currentOpacity;\n }\n };\n\n CVContextData.prototype.fill = function (rule) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fill(rule);\n };\n\n CVContextData.prototype.fillRect = function (x, y, w, h) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fillRect(x, y, w, h);\n };\n\n CVContextData.prototype.stroke = function () {\n if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n this.appliedStrokeStyle = this.currentStrokeStyle;\n this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n }\n\n if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\n }\n\n this.nativeContext.stroke();\n };\n\n function CVCompElement(data, globalData, comp) {\n this.completeLayers = false;\n this.layers = data.layers;\n this.pendingElements = [];\n this.elements = createSizedArray(this.layers.length);\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\n CVCompElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.data.w, 0);\n ctx.lineTo(this.data.w, this.data.h);\n ctx.lineTo(0, this.data.h);\n ctx.lineTo(0, 0);\n ctx.clip();\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.layers = null;\n this.elements = null;\n };\n\n CVCompElement.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function CanvasRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: config && config.context || null,\n progressiveLoad: config && config.progressiveLoad || false,\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n className: config && config.className || '',\n id: config && config.id || '',\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.renderConfig.dpr = config && config.dpr || 1;\n\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\n\n this.renderedFrame = -1;\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1\n };\n this.contextData = new CVContextData();\n this.elements = [];\n this.pendingElements = [];\n this.transformMat = new Matrix();\n this.completeLayers = false;\n this.rendererType = 'canvas';\n\n if (this.renderConfig.clearCanvas) {\n this.ctxTransform = this.contextData.transform.bind(this.contextData);\n this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n this.ctxFill = this.contextData.fill.bind(this.contextData);\n this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n this.save = this.contextData.save.bind(this.contextData);\n }\n }\n\n extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\n\n if (this.data.hasMask) {\n this.svgElement = createNS('svg');\n this.layerElement = createNS('g');\n this.maskedElement = this.layerElement;\n this.svgElement.appendChild(this.layerElement);\n this.baseElement.appendChild(this.svgElement);\n } else {\n this.layerElement = this.baseElement;\n }\n\n styleDiv(this.baseElement);\n },\n createContainerElements: function createContainerElements() {\n this.renderableEffectsManager = new CVEffects(this);\n this.transformedElement = this.baseElement;\n this.maskedElement = this.layerElement;\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n\n if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\n }\n\n if (this.finalTransform._opMdf) {\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n\n if (this.matteElement) {\n this.matteElement = null;\n }\n\n if (this.maskManager) {\n this.maskManager.destroy();\n this.maskManager = null;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n },\n addEffects: function addEffects() {},\n setMatte: function setMatte() {}\n };\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n function HSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n HSolidElement.prototype.createContent = function () {\n var rect;\n\n if (this.data.hasMask) {\n rect = createNS('rect');\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.svgElement.setAttribute('width', this.data.sw);\n this.svgElement.setAttribute('height', this.data.sh);\n } else {\n rect = createTag('div');\n rect.style.width = this.data.sw + 'px';\n rect.style.height = this.data.sh + 'px';\n rect.style.backgroundColor = this.data.sc;\n }\n\n this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\n\n if (this.data.hasMask) {\n this.layerElement.appendChild(this.shapesContainer);\n cont = this.svgElement;\n } else {\n cont = createNS('svg');\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n cont.setAttribute('width', size.w);\n cont.setAttribute('height', size.h);\n cont.appendChild(this.shapesContainer);\n this.layerElement.appendChild(cont);\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n\n return point;\n };\n\n HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n var shape = item.sh.v;\n var transformers = item.transformers;\n var i;\n var len = shape._length;\n var vPoint;\n var oPoint;\n var nextIPoint;\n var nextVPoint;\n\n if (len <= 1) {\n return;\n }\n\n for (i = 0; i < len - 1; i += 1) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n\n if (shape.c) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n };\n\n HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n var bounds = this.shapeBoundingBox;\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n };\n\n HShapeElement.prototype.shapeBoundingBox = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n HShapeElement.prototype.tempBoundingBox = {\n x: 0,\n xMax: 0,\n y: 0,\n yMax: 0,\n width: 0,\n height: 0\n };\n\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n // eslint-disable-line no-plusplus\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n c = 3 * p1[i] - 3 * p0[i];\n b |= 0; // eslint-disable-line no-bitwise\n\n a |= 0; // eslint-disable-line no-bitwise\n\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {//\n } else if (a === 0) {\n t = -c / b;\n\n if (t > 0 && t < 1) {\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n }\n } else {\n b2ac = b * b - 4 * c * a;\n\n if (b2ac >= 0) {\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n }\n }\n }\n\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n };\n\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n };\n\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n if (itemsData[i] && itemsData[i].sh) {\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n } else if (itemsData[i] && itemsData[i].it) {\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\n } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n }\n }\n };\n\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n\n if (kfw > width) {\n width = kfw;\n }\n }\n\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\n };\n\n HShapeElement.prototype.currentBoxContains = function (box) {\n return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n };\n\n HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\n\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n var tempBoundingBox = this.tempBoundingBox;\n var max = 999999;\n tempBoundingBox.x = max;\n tempBoundingBox.xMax = -max;\n tempBoundingBox.y = max;\n tempBoundingBox.yMax = -max;\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\n\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n\n var changed = false;\n\n if (this.currentBBox.w !== tempBoundingBox.width) {\n this.currentBBox.w = tempBoundingBox.width;\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\n changed = true;\n }\n\n if (this.currentBBox.h !== tempBoundingBox.height) {\n this.currentBBox.h = tempBoundingBox.height;\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\n changed = true;\n }\n\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n this.currentBBox.w = tempBoundingBox.width;\n this.currentBBox.h = tempBoundingBox.height;\n this.currentBBox.x = tempBoundingBox.x;\n this.currentBBox.y = tempBoundingBox.y;\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n var shapeStyle = this.shapeCont.style;\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n shapeStyle.transform = shapeTransform;\n shapeStyle.webkitTransform = shapeTransform;\n }\n }\n };\n\n function HTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.textPaths = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n this.renderType = 'svg';\n this.isMasked = false;\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\n\n if (this.isMasked) {\n this.renderType = 'svg';\n this.compW = this.comp.data.w;\n this.compH = this.comp.data.h;\n this.svgElement.setAttribute('width', this.compW);\n this.svgElement.setAttribute('height', this.compH);\n var g = createNS('g');\n this.maskedElement.appendChild(g);\n this.innerElem = g;\n } else {\n this.renderType = 'html';\n this.innerElem = this.layerElement;\n }\n\n this.checkParenting();\n };\n\n HTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var innerElemStyle = this.innerElem.style;\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n innerElemStyle.fill = textColor;\n innerElemStyle.color = textColor;\n\n if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\n if (fontData.fClass) {\n this.innerElem.className = fontData.fClass;\n } else {\n innerElemStyle.fontFamily = fontData.fFamily;\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n innerElemStyle.fontStyle = fStyle;\n innerElemStyle.fontWeight = fWeight;\n }\n }\n\n var i;\n var len;\n var letters = documentData.l;\n len = letters.length;\n var tSpan;\n var tParent;\n var tCont;\n var matrixHelper = this.mHelper;\n var shapes;\n var shapeStr = '';\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.globalData.fontManager.chars) {\n if (!this.textPaths[cnt]) {\n tSpan = createNS('path');\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n tSpan.setAttribute('stroke-miterlimit', '4');\n } else {\n tSpan = this.textPaths[cnt];\n }\n\n if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tCont = tParent.children[0];\n } else {\n tParent = createTag('div');\n tParent.style.lineHeight = 0;\n tCont = createNS('svg');\n tCont.appendChild(tSpan);\n styleDiv(tParent);\n }\n }\n } else if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tSpan = this.textPaths[cnt];\n } else {\n tParent = createTag('span');\n styleDiv(tParent);\n tSpan = createTag('span');\n styleDiv(tSpan);\n tParent.appendChild(tSpan);\n }\n } else {\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n } // tSpan.setAttribute('visibility', 'hidden');\n\n\n if (this.globalData.fontManager.chars) {\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var shapeData;\n\n if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n\n matrixHelper.reset();\n\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n shapes = shapeData.shapes[0].it;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n shapeStr = this.createPathShape(matrixHelper, shapes);\n tSpan.setAttribute('d', shapeStr);\n }\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n\n if (shapeData && shapeData.shapes) {\n // document.body.appendChild is needed to get exact measure of shape\n document.body.appendChild(tCont);\n var boundingBox = tCont.getBBox();\n tCont.setAttribute('width', boundingBox.width + 2);\n tCont.setAttribute('height', boundingBox.height + 2);\n tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n var tContStyle = tCont.style;\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n tContStyle.transform = tContTranslation;\n tContStyle.webkitTransform = tContTranslation;\n letters[i].yOffset = boundingBox.y - 1;\n } else {\n tCont.setAttribute('width', 1);\n tCont.setAttribute('height', 1);\n }\n\n tParent.appendChild(tCont);\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } else {\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent); //\n\n var tStyle = tSpan.style;\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n tStyle.transform = tSpanTranslation;\n tStyle.webkitTransform = tSpanTranslation;\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } //\n\n\n if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n\n HTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var svgStyle;\n\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\n }\n\n if (this.isMasked && this.finalTransform._matMdf) {\n // Todo Benchmark if using this is better than getBBox\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n svgStyle = this.svgElement.style;\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n svgStyle.transform = translation;\n svgStyle.webkitTransform = translation;\n }\n }\n\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\n }\n\n var i;\n var len;\n var count = 0;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var textPath;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n count += 1;\n } else {\n textSpan = this.textSpans[i];\n textPath = this.textPaths[i];\n renderedLetter = renderedLetters[count];\n count += 1;\n\n if (renderedLetter._mdf.m) {\n if (!this.isMasked) {\n textSpan.style.webkitTransform = renderedLetter.m;\n textSpan.style.transform = renderedLetter.m;\n } else {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n textSpan.style.opacity = renderedLetter.o;\n\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n\n var margin = 1;\n\n if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n this.currentBBox.w = boundingBox.width + margin * 2;\n this.currentBBox.h = boundingBox.height + margin * 2;\n this.currentBBox.x = boundingBox.x - margin;\n this.currentBBox.y = boundingBox.y - margin;\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n svgStyle = this.svgElement.style;\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n svgStyle.transform = svgTransform;\n svgStyle.webkitTransform = svgTransform;\n }\n }\n };\n\n function HCameraElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initHierarchy();\n var getProp = PropertyFactory.getProp;\n this.pe = getProp(this, data.pe, 0, 0, this);\n\n if (data.ks.p.s) {\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n } else {\n this.p = getProp(this, data.ks.p, 1, 0, this);\n }\n\n if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\n }\n\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\n var i;\n var len = data.ks.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.ks.or.k[i].to = null;\n data.ks.or.k[i].ti = null;\n }\n }\n\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\n this.or.sh = true;\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n this.mat = new Matrix();\n this._prevMat = new Matrix();\n this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n this.finalTransform = {\n mProp: this\n };\n }\n\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\n HCameraElement.prototype.setup = function () {\n var i;\n var len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n perspectiveStyle = comp.perspectiveElem.style;\n containerStyle = comp.container.style;\n var perspective = this.pe.v + 'px';\n var origin = '0px 0px 0px';\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n perspectiveStyle.perspective = perspective;\n perspectiveStyle.webkitPerspective = perspective;\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n perspectiveStyle.transform = matrix;\n perspectiveStyle.webkitTransform = matrix;\n }\n }\n };\n\n HCameraElement.prototype.createElements = function () {};\n\n HCameraElement.prototype.hide = function () {};\n\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n\n if (this.hierarchy) {\n len = this.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n }\n }\n\n if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n this.mat.reset();\n\n if (this.hierarchy) {\n len = this.hierarchy.length - 1;\n\n for (i = len; i >= 0; i -= 1) {\n var mTransf = this.hierarchy[i].finalTransform.mProp;\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n }\n }\n\n if (this.p) {\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n } else {\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n }\n\n if (this.a) {\n var diffVector;\n\n if (this.p) {\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n } else {\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n }\n\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n }\n\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n this.mat.translate(0, 0, this.pe.v);\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\n\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n if (hasMatrixChanged) {\n var matValue = this.mat.toCSS();\n containerStyle = comp.container.style;\n containerStyle.transform = matValue;\n containerStyle.webkitTransform = matValue;\n }\n\n if (this.pe._mdf) {\n perspectiveStyle = comp.perspectiveElem.style;\n perspectiveStyle.perspective = this.pe.v + 'px';\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n }\n }\n }\n\n this.mat.clone(this._prevMat);\n }\n }\n\n this._isFirstFrame = false;\n };\n\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n HCameraElement.prototype.destroy = function () {};\n\n HCameraElement.prototype.getBaseElement = function () {\n return null;\n };\n\n function HImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\n\n if (this.data.hasMask) {\n this.imageElem = createNS('image');\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.imageElem);\n this.baseElement.setAttribute('width', this.assetData.w);\n this.baseElement.setAttribute('height', this.assetData.h);\n } else {\n this.layerElement.appendChild(img);\n }\n\n img.crossOrigin = 'anonymous';\n img.src = assetPath;\n\n if (this.data.ln) {\n this.baseElement.setAttribute('id', this.data.ln);\n }\n };\n\n function HybridRendererBase(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n\n if (!newDOMElement) {\n return;\n }\n\n var layer = this.layers[pos];\n\n if (!layer.ddd || !this.supports3d) {\n if (this.threeDElements) {\n this.addTo3dContainer(newDOMElement, pos);\n } else {\n var i = 0;\n var nextDOMElement;\n var nextLayer;\n var tmpDOMElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n nextLayer = this.elements[i];\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n nextDOMElement = tmpDOMElement || nextDOMElement;\n }\n\n i += 1;\n }\n\n if (nextDOMElement) {\n if (!layer.ddd || !this.supports3d) {\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n }\n } else if (!layer.ddd || !this.supports3d) {\n this.layerElement.appendChild(newDOMElement);\n }\n }\n } else {\n this.addTo3dContainer(newDOMElement, pos);\n }\n };\n\n HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n\n return new HShapeElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n\n return new HTextElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n\n return new HImageElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n\n return new HSolidElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n\n i += 1;\n }\n\n return null;\n };\n\n HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n var perspectiveElem = createTag('div');\n var style;\n var containerStyle;\n styleDiv(perspectiveElem);\n var container = createTag('div');\n styleDiv(container);\n\n if (type === '3d') {\n style = perspectiveElem.style;\n style.width = this.globalData.compSize.w + 'px';\n style.height = this.globalData.compSize.h + 'px';\n var center = '50% 50%';\n style.webkitTransformOrigin = center;\n style.mozTransformOrigin = center;\n style.transformOrigin = center;\n containerStyle = container.style;\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n containerStyle.transform = matrix;\n containerStyle.webkitTransform = matrix;\n }\n\n perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\n var threeDContainerData = {\n container: container,\n perspectiveElem: perspectiveElem,\n startPos: pos,\n endPos: pos,\n type: type\n };\n this.threeDElements.push(threeDContainerData);\n return threeDContainerData;\n };\n\n HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n if (currentContainer !== '3d') {\n currentContainer = '3d';\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n } else {\n if (currentContainer !== '2d') {\n currentContainer = '2d';\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n\n len = this.threeDElements.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n\n break;\n }\n\n i += 1;\n }\n };\n\n HybridRendererBase.prototype.configAnimation = function (animData) {\n var resizerElem = createTag('div');\n var wrapper = this.animationItem.wrapper;\n var style = resizerElem.style;\n style.width = animData.w + 'px';\n style.height = animData.h + 'px';\n this.resizerElem = resizerElem;\n styleDiv(resizerElem);\n style.transformStyle = 'flat';\n style.mozTransformStyle = 'flat';\n style.webkitTransformStyle = 'flat';\n\n if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\n }\n\n wrapper.appendChild(resizerElem);\n style.overflow = 'hidden';\n var svg = createNS('svg');\n svg.setAttribute('width', '1');\n svg.setAttribute('height', '1');\n styleDiv(svg);\n this.resizerElem.appendChild(svg);\n var defs = createNS('defs');\n svg.appendChild(defs);\n this.data = animData; // Mask animation\n\n this.setupGlobalData(animData, svg);\n this.globalData.defs = defs;\n this.layers = animData.layers;\n this.layerElement = this.resizerElem;\n this.build3dContainers();\n this.updateContainerSize();\n };\n\n HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n HybridRendererBase.prototype.updateContainerSize = function () {\n var elementWidth = this.animationItem.wrapper.offsetWidth;\n var elementHeight = this.animationItem.wrapper.offsetHeight;\n var elementRel = elementWidth / elementHeight;\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n var sx;\n var sy;\n var tx;\n var ty;\n\n if (animationRel > elementRel) {\n sx = elementWidth / this.globalData.compSize.w;\n sy = elementWidth / this.globalData.compSize.w;\n tx = 0;\n ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n } else {\n sx = elementHeight / this.globalData.compSize.h;\n sy = elementHeight / this.globalData.compSize.h;\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n ty = 0;\n }\n\n var style = this.resizerElem.style;\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n style.transform = style.webkitTransform;\n };\n\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\n\n if (this.camera) {\n this.camera.setup();\n } else {\n var cWidth = this.globalData.compSize.w;\n var cHeight = this.globalData.compSize.h;\n var i;\n var len = this.threeDElements.length;\n\n for (i = 0; i < len; i += 1) {\n var style = this.threeDElements[i].perspectiveElem.style;\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n style.perspective = style.webkitPerspective;\n }\n }\n };\n\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n function HCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = !data.hasMask;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\n if (this.data.hasMask) {\n this.svgElement.setAttribute('width', this.data.w);\n this.svgElement.setAttribute('height', this.data.h);\n this.transformedElement = this.baseElement;\n } else {\n this.transformedElement = this.layerElement;\n }\n };\n\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n function HybridRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n },\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([HybridRendererBase], HybridRenderer);\n\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n var CompExpressionInterface = function () {\n return function (comp) {\n function _thisLayerFunction(name) {\n var i = 0;\n var len = comp.layers.length;\n\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n\n i += 1;\n }\n\n return null; // return {active:false};\n }\n\n Object.defineProperty(_thisLayerFunction, '_name', {\n value: comp.data.nm\n });\n _thisLayerFunction.layer = _thisLayerFunction;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n _thisLayerFunction.displayStartTime = 0;\n _thisLayerFunction.numLayers = comp.layers.length;\n return _thisLayerFunction;\n };\n }();\n\n function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n /* eslint-disable */\n\n /*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256,\n // each RC4 output is 0 <= x < 256\n chunks = 6,\n // at least six RC4 outputs for each double\n digits = 52,\n // there are 52 significant digits in a double\n rngname = 'random',\n // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n\n var prng = function prng() {\n var n = arc4.g(chunks),\n // Start with a numerator n < 2 ^ 48\n d = startdenom,\n // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n\n d *= width; // denominator and generating a\n\n x = arc4.g(1); // new least-significant-byte.\n }\n\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n\n d /= 2; // right using integer math until\n\n x >>>= 1; // we have exactly the desired bits.\n }\n\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4);\n } // Only provide the .state method if requested via options.state.\n\n\n prng.state = function () {\n return copy(arc4, {});\n };\n } // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n\n\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\n } // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n }\n\n math['seed' + rngname] = seedrandom; //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = me.i = me.j = 0,\n s = me.S = []; // The empty key [] is treated as [0].\n\n if (!keylen) {\n key = [keylen++];\n } // Set up S using the standard key scheduling algorithm.\n\n\n while (i < width) {\n s[i] = i++;\n }\n\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n s[j] = t;\n } // The \"g\" method returns the next (count) outputs as one number.\n\n\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S;\n\n while (count--) {\n t = s[i = mask & i + 1];\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n }\n\n me.i = i;\n me.j = j;\n return r; // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n };\n } //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n\n\n function copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n } //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n\n\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\n\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1));\n } catch (e) {}\n }\n }\n\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n } //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n\n\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n\n return tostring(key);\n } //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n\n\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\n\n var out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\n }\n } //\n // tostring()\n // Converts an array of charcodes to a string\n //\n\n\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n } //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n\n\n mixkey(math.random(), pool); //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n // End anonymous scope, and pass initial values.\n }\n\n ;\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\n var ExpressionManager = function () {\n 'use strict';\n\n var ob = {};\n var Math = BMMath;\n var window = null;\n var document = null;\n var XMLHttpRequest = null;\n var fetch = null;\n var frames = null;\n var _lottieGlobal = {};\n initialize$2(BMMath);\n\n function resetFrame() {\n _lottieGlobal = {};\n }\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n\n return retArr;\n }\n\n if (a.propType) {\n return a.v;\n }\n\n return -a;\n }\n\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n\n function sum(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a + b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] + b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n var add = sum;\n\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n\n return a - b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a - b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] - b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function div(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n\n return a % b;\n }\n\n var $bm_sum = sum;\n var $bm_sub = sub;\n var $bm_mul = mul;\n var $bm_div = div;\n var $bm_mod = mod;\n\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n\n return Math.min(Math.max(num, min), max);\n }\n\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n\n var radians_to_degrees = radiansToDegrees;\n\n function degreesToRadians(val) {\n return val * degToRads;\n }\n\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0;\n return Math.abs(arr1 - arr2);\n }\n\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n\n return Math.sqrt(addedLength);\n }\n\n function normalize(vec) {\n return div(vec, length(vec));\n }\n\n function rgbToHsl(val) {\n var r = val[0];\n var g = val[1];\n var b = val[2];\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n\n if (max === min) {\n h = 0; // achromatic\n\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n\n default:\n break;\n }\n\n h /= 6;\n }\n\n return [h, s, l, val[3]];\n }\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n function hslToRgb(val) {\n var h = val[0];\n var s = val[1];\n var l = val[2];\n var r;\n var g;\n var b;\n\n if (s === 0) {\n r = l; // achromatic\n\n b = l; // achromatic\n\n g = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [r, g, b, val[3]];\n }\n\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin;\n value2 = tMax;\n tMin = 0;\n tMax = 1;\n }\n\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n\n if (t <= tMin) {\n return value1;\n }\n\n if (t >= tMax) {\n return value2;\n }\n\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n\n return arr;\n }\n\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0;\n max = 1;\n } else {\n max = min;\n min = undefined;\n }\n }\n\n if (max.length) {\n var i;\n var len = max.length;\n\n if (!min) {\n min = createTypedArray('float32', len);\n }\n\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n\n return arr;\n }\n\n if (min === undefined) {\n min = 0;\n }\n\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\n\n function createPath(points, inTangents, outTangents, closed) {\n var i;\n var len = points.length;\n var path = shapePool.newElement();\n path.setPathData(!!closed, len);\n var arrPlaceholder = [0, 0];\n var inVertexPoint;\n var outVertexPoint;\n\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n }\n\n return path;\n }\n\n function initiateExpression(elem, data, property) {\n // Bail out if we don't want expressions\n function noOp(_value) {\n return _value;\n }\n\n if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n var _needsRandom = val.indexOf('random') !== -1;\n\n var elemType = elem.data.ty;\n var transform;\n var $bm_transform;\n var content;\n var effect;\n var thisProperty = property;\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\n Object.defineProperty(thisProperty, 'value', {\n get: function get() {\n return thisProperty.v;\n }\n });\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n elem.comp.displayStartTime = 0;\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n var width = elem.data.sw ? elem.data.sw : 0;\n var height = elem.data.sh ? elem.data.sh : 0;\n var name = elem.data.nm;\n var loopIn;\n var loop_in;\n var loopOut;\n var loop_out;\n var smooth;\n var toWorld;\n var fromWorld;\n var fromComp;\n var toComp;\n var fromCompToSurface;\n var position;\n var rotation;\n var anchorPoint;\n var scale;\n var thisLayer;\n var thisComp;\n var mask;\n var valueAtTime;\n var velocityAtTime;\n var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n\n var wiggle = function wiggle(freq, amp) {\n var iWiggle;\n var j;\n var lenWiggle = this.pv.length ? this.pv.length : 1;\n var addedAmps = createTypedArray('float32', lenWiggle);\n freq = 5;\n var iterations = Math.floor(time * freq);\n iWiggle = 0;\n j = 0;\n\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\n }\n\n iWiggle += 1;\n } // var rnd2 = BMMath.random();\n\n\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n\n return arr;\n }\n\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n return [yaw, pitch, 0];\n }\n\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\n\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin;\n val2 = tMax;\n } else {\n t = (t - tMin) / (tMax - tMin);\n }\n\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n\n var mult = fn(t);\n\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n\n return arr;\n }\n\n return (val2 - val1) * mult + val1;\n }\n\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0;\n keyTime = 0;\n } else {\n index = -1;\n time *= elem.comp.globalData.frameRate;\n\n if (time < data.k[0].t) {\n index = 1;\n keyTime = data.k[0].t;\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n break;\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2;\n keyTime = data.k[iKey + 1].t;\n } else {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n\n break;\n }\n }\n\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\n\n ind -= 1;\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: []\n };\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n lenKey = arr.length;\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n\n return obKey;\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return fr / fps;\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return t * fps;\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n\n return value.substring(init, end);\n }\n\n return '';\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n\n return value.substr(init, end);\n }\n\n return '';\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\n\n var time;\n var velocity;\n var value;\n var text;\n var textIndex;\n var textTotal;\n var selectorValue;\n var index = elem.data.ind;\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n var parent;\n var randSeed = Math.floor(Math.random() * 1000000);\n var globalData = elem.globalData;\n\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\n\n if (!thisLayer) {\n text = elem.layerInterface.text;\n thisLayer = elem.layerInterface;\n thisComp = elem.comp.compInterface;\n toWorld = thisLayer.toWorld.bind(thisLayer);\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\n fromComp = thisLayer.fromComp.bind(thisLayer);\n toComp = thisLayer.toComp.bind(thisLayer);\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n fromCompToSurface = fromComp;\n }\n\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n\n if (!effect) {\n effect = thisLayer(4);\n }\n\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n\n expression_function();\n this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n } // Bundlers will see these as dead code and unless we reference them\n\n\n executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n return executeExpression;\n }\n\n ob.initiateExpression = initiateExpression;\n ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];\n ob.resetFrame = resetFrame;\n return ob;\n }();\n\n var Expressions = function () {\n var ob = {};\n ob.initExpressions = initExpressions;\n ob.resetFrame = ExpressionManager.resetFrame;\n\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n\n function pushExpression() {\n stackCount += 1;\n }\n\n function popExpression() {\n stackCount -= 1;\n\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n\n function releaseInstances() {\n var i;\n var len = registers.length;\n\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n\n registers.length = 0;\n }\n\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n animation.renderer.globalData.pushExpression = pushExpression;\n animation.renderer.globalData.popExpression = popExpression;\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n }\n\n return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\n\n return this._mask.prop;\n }\n });\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function get() {\n if (this._mask.op.k) {\n this._mask.op.getValue();\n }\n\n return this._mask.op.v * 100;\n }\n });\n\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n var i;\n var len = maskManager.viewData.length;\n\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n\n var maskFunction = function maskFunction(name) {\n i = 0;\n\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n return maskFunction;\n };\n\n return MaskManager;\n }();\n\n var ExpressionPropertyInterface = function () {\n var defaultUnidimensionalValue = {\n pv: 0,\n v: 0,\n mult: 1\n };\n var defaultMultidimensionalValue = {\n pv: [0, 0, 0],\n v: [0, 0, 0],\n mult: 1\n };\n\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function get() {\n return property.getVelocityAtTime(property.comp.currentFrame);\n }\n });\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n\n var value = '';\n\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s;\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e;\n } else {\n value = property.keyframes[pos - 2].s;\n }\n\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n valueProp.value = type === 'unidimensional' ? value[0] : value;\n return valueProp;\n };\n\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var val = property.pv * mult;\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n val = property.v * mult;\n\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n\n return expressionValue;\n };\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var len = property.data && property.data.l || property.pv.length;\n var expressionValue = createTypedArray('float32', len);\n var arrValue = createTypedArray('float32', len);\n expressionValue.value = arrValue;\n completeProperty(expressionValue, property, 'multidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n\n return expressionValue;\n };\n } // TODO: try to avoid using this getter\n\n\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\n\n return MultidimensionalPropertyInterface(property);\n };\n }();\n\n var TransformExpressionInterface = function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale;\n\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz)\n });\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r)\n });\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx)\n });\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry)\n });\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s)\n });\n\n var _px;\n\n var _py;\n\n var _pz;\n\n var _transformFactory;\n\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\n\n return [_px(), _py(), _pz ? _pz() : 0];\n }\n });\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px)\n });\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py)\n });\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz)\n });\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a)\n });\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o)\n });\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk)\n });\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa)\n });\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or)\n });\n return _thisFunction;\n };\n }();\n\n var LayerExpressionInterface = function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix();\n\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat;\n }\n\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.applyPoint(toWorldMat, arr);\n }\n\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\n\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.invertPoint(toWorldMat, arr);\n }\n\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\n\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\n\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.inversePoint(arr);\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n\n return function (elem) {\n var transformInterface;\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface;\n\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n\n default:\n return null;\n }\n }\n\n _thisLayerFunction.getMatrix = getMatrix;\n _thisLayerFunction.invertPoint = invertPoint;\n _thisLayerFunction.applyPoint = applyPoint;\n _thisLayerFunction.toWorld = toWorld;\n _thisLayerFunction.toWorldVec = toWorldVec;\n _thisLayerFunction.fromWorld = fromWorld;\n _thisLayerFunction.fromWorldVec = fromWorldVec;\n _thisLayerFunction.toComp = toWorld;\n _thisLayerFunction.fromComp = fromComp;\n _thisLayerFunction.sampleImage = sampleImage;\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n _thisLayerFunction._elem = elem;\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function get() {\n return elem.hierarchy.length;\n }\n },\n parent: {\n get: function get() {\n return elem.hierarchy[0].layerInterface;\n }\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function get() {\n return transformInterface;\n }\n },\n active: {\n get: function get() {\n return elem.isInRange;\n }\n }\n });\n _thisLayerFunction.startTime = elem.data.st;\n _thisLayerFunction.index = elem.data.ind;\n _thisLayerFunction.source = elem.data.refId;\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n _thisLayerFunction._name = elem.data.nm;\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n return _thisLayerFunction;\n };\n }();\n\n var propertyGroupFactory = function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return parentPropertyGroup(val - 1);\n };\n };\n }();\n\n var PropertyInterface = function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName\n };\n\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return propertyGroup(val - 1);\n }\n\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\n\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = [];\n var effectsData = elem.data.ef;\n var i;\n var len = elem.effectsManager.effectElements.length;\n\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n\n var effects = elem.data.ef || [];\n\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n\n return null;\n }\n\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef;\n var i = 0;\n var len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i];\n }\n\n return effectElements[i]();\n }\n\n i += 1;\n }\n\n throw new Error();\n }\n\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n var effectElements = [];\n var i;\n var len = data.ef.length;\n\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n }\n }\n\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\n });\n }\n\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function get() {\n return data.np;\n }\n },\n _name: {\n value: data.nm\n },\n propertyGroup: {\n value: _propertyGroup\n }\n });\n groupInterface.enabled = data.en !== 0;\n groupInterface.active = groupInterface.enabled;\n return groupInterface;\n }\n\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n\n return expressionProperty();\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n\n return interfaceFunction;\n }\n\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n\n function interfaceFunction(val) {\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n return interfaceFunction.path;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n _name: {\n value: shape.nm\n },\n ix: {\n value: shape.ix\n },\n propertyIndex: {\n value: shape.ix\n },\n mn: {\n value: shape.mn\n },\n propertyGroup: {\n value: propertyGroup\n }\n });\n return interfaceFunction;\n };\n }();\n\n var ShapeExpressionInterface = function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = [];\n var i;\n var len = shapes ? shapes.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n }\n }\n\n return arr;\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n\n return null;\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n interfaceFunction.numProperties = interfaces.length;\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.transform = transformInterface;\n interfaceFunction.propertyIndex = shape.cix;\n interfaceFunction._name = shape.nm;\n return interfaceFunction;\n }\n\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content;\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n\n default:\n return interfaceFunction.transform;\n }\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.content = content;\n interfaceFunction.transform = transformInterface;\n Object.defineProperty(interfaceFunction, '_name', {\n get: function get() {\n return shape.nm;\n }\n }); // interfaceFunction.content = interfaceFunction;\n\n interfaceFunction.numProperties = shape.np;\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.nm = shape.nm;\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s)\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n type: {\n get: function get() {\n return 'a';\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n\n return interfaceFunction;\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w)\n },\n dash: {\n get: function get() {\n return dashOb;\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n return interfaceFunction;\n }\n\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end;\n }\n\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.propertyGroup = propertyGroup;\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s)\n },\n end: {\n get: ExpressionPropertyInterface(view.e)\n },\n offset: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n }\n\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o)\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p)\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a)\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s)\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r)\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.ty = 'tr';\n interfaceFunction.mn = shape.mn;\n interfaceFunction.propertyGroup = propertyGroup;\n return interfaceFunction;\n }\n\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r)\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt)\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or)\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os)\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir)\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r)\n },\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c)\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n return function (shapes, view, propertyGroup) {\n var interfaces;\n\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n\n if (value === 0) {\n return propertyGroup;\n }\n\n return interfaces[value - 1];\n }\n\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function parentGroupWrapper() {\n return propertyGroup;\n }\n\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n _interfaceFunction.numProperties = interfaces.length;\n _interfaceFunction._name = 'Contents';\n return _interfaceFunction;\n };\n }();\n\n var TextExpressionInterface = function () {\n return function (elem) {\n var _sourceText;\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n\n if (!_sourceText || stringValue !== _sourceText.value) {\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n var propertyNameIndex = value.indexOf(currentPropertyName);\n\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n return '';\n }\n\n return init;\n };\n\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n\n return null;\n }\n\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n\n return null;\n }\n\n _interfaceFunction._name = 'Data';\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n return _interfaceFunction;\n };\n }();\n\n var interfaces = {\n layer: LayerExpressionInterface,\n effects: EffectsExpressionInterface,\n comp: CompExpressionInterface,\n shape: ShapeExpressionInterface,\n text: TextExpressionInterface,\n footage: FootageInterface\n };\n\n function getInterface(type) {\n return interfaces[type] || null;\n }\n\n var expressionHelpers = function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true;\n prop.x = true;\n prop.initiateExpression = ExpressionManager.initiateExpression;\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n }\n }\n\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n this._cachingAtTime.lastFrame = frameNum;\n }\n\n return this._cachingAtTime.value;\n }\n\n function getSpeedAtTime(frameNum) {\n var delta = -0.01;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var speed = 0;\n\n if (v1.length) {\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n\n return speed;\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n\n var delta = -0.001; // frameNum += this.elem.data.st;\n\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta;\n }\n } else {\n velocity = (v2 - v1) / delta;\n }\n\n return velocity;\n }\n\n function getStaticValueAtTime() {\n return this.pv;\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\n\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty\n };\n }();\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var firstKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n }\n\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (iterations % 2 !== 0) {\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n\n return ret;\n }\n\n return (endV - initV) * repeats + current;\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n }\n\n return ret;\n }\n\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var lastKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n lastKeyFrame = keyframes[duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n }\n\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\n if (iterations % 2 === 0) {\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n\n return ret;\n }\n\n return current - (endV - initV) * repeats;\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return ret;\n }\n\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n\n if (samples <= 1) {\n return this.pv;\n }\n\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n var initFrame = currentTime - width;\n var endFrame = currentTime + width;\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n var i = 0;\n var j = 0;\n var value;\n\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n\n var sampleValue;\n\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j];\n }\n } else {\n value += sampleValue;\n }\n\n i += 1;\n }\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples;\n }\n } else {\n value /= samples;\n }\n\n return value;\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n } /// /\n\n\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time);\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n }\n\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time);\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time);\n var skewAxis = this.sa.getValueAtTime(time);\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time);\n matrix.rotate(-rotation * this.r.mult);\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time);\n var rotationY = this.ry.getValueAtTime(time);\n var rotationX = this.rx.getValueAtTime(time);\n var orientation = this.or.getValueAtTime(time);\n matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n }\n\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time);\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n }\n } else {\n var position = this.p.getValueAtTime(time);\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n }\n\n return matrix; /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n\n var propertyGetProp = PropertyFactory.getProp;\n\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n prop.loopOut = loopOut;\n prop.loopIn = loopIn;\n prop.smooth = smooth;\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n prop.numKeys = data.a === 1 ? data.k.length : 0;\n prop.propertyIndex = data.ix;\n var value = 0;\n\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n\n return prop;\n };\n\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame\n };\n }\n\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n this._cachingAtTime.lastTime = frameNum;\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n }\n\n return this._cachingAtTime.shapeValue;\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n function ShapeExpressions() {}\n\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n var i;\n var len = shapePath._length;\n var vertices = shapePath[prop];\n var points = shapePath.v;\n var arr = createSizedArray(len);\n\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]];\n }\n }\n\n return arr;\n },\n points: function points(time) {\n return this.vertices('v', time);\n },\n inTangents: function inTangents(time) {\n return this.vertices('i', time);\n },\n outTangents: function outTangents(time) {\n return this.vertices('o', time);\n },\n isClosed: function isClosed() {\n return this.v.c;\n },\n pointOnPath: function pointOnPath(perc, time) {\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\n\n var segmentsLength = this._segmentsLength;\n var lengths = segmentsLength.lengths;\n var lengthPos = segmentsLength.totalLength * perc;\n var i = 0;\n var len = lengths.length;\n var accumulatedLength = 0;\n var pt;\n\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i;\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n break;\n } else {\n accumulatedLength += lengths[i].addedLength;\n }\n\n i += 1;\n }\n\n if (!pt) {\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n }\n\n return pt;\n },\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c;\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999;\n }\n\n var pt1 = this.pointOnPath(perc, time);\n var pt2 = this.pointOnPath(perc + 0.001, time);\n var xLength = pt2[0] - pt1[0];\n var yLength = pt2[1] - pt1[1];\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n\n if (magnitude === 0) {\n return [0, 0];\n }\n\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n return unitVector;\n },\n tangentOnPath: function tangentOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'tangent');\n },\n normalOnPath: function normalOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'normal');\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime\n };\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n prop.propertyIndex = data.ix;\n prop.lock = false;\n\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n };\n }\n\n function initialize$1() {\n addPropertyDecorator();\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n this.addEffect(this.getExpressionValue.bind(this));\n return true;\n }\n\n return null;\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n\n if (currentValue.t !== newValue) {\n var newData = {};\n this.copyData(newData, currentValue);\n newData.t = newValue.toString();\n newData.__complete = false;\n return newData;\n }\n\n return currentValue;\n };\n\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes();\n var hasExpressions = this.searchExpressions();\n this.kf = isKeyframed || hasExpressions;\n return this.kf;\n };\n\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\n\n SVGComposableEffect.prototype = {\n createMergeNode: function createMergeNode(resultId, ins) {\n var feMerge = createNS('feMerge');\n feMerge.setAttribute('result', resultId);\n var feMergeNode;\n var i;\n\n for (i = 0; i < ins.length; i += 1) {\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', ins[i]);\n feMerge.appendChild(feMergeNode);\n feMerge.appendChild(feMergeNode);\n }\n\n return feMerge;\n }\n };\n\n var linearFilterValue = '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0';\n\n function SVGTintFilter(filter, filterManager, elem, id, source) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n this.linearFilter = feColorMatrix;\n feColorMatrix.setAttribute('result', id + '_tint_1');\n filter.appendChild(feColorMatrix);\n feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id + '_tint_2');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n filter.appendChild(feMerge);\n }\n\n extendPrototype([SVGComposableEffect], SVGTintFilter);\n\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var colorBlack = this.filterManager.effectElements[0].p.v;\n var colorWhite = this.filterManager.effectElements[1].p.v;\n var opacity = this.filterManager.effectElements[2].p.v / 100;\n this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n }\n };\n\n function SVGFillFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id);\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n }\n\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color = this.filterManager.effectElements[2].p.v;\n var opacity = this.filterManager.effectElements[6].p.v;\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGStrokeEffect(fil, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.elem = elem;\n this.paths = [];\n }\n\n SVGStrokeEffect.prototype.initialize = function () {\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n var path;\n var groupPath;\n var i;\n var len;\n\n if (this.filterManager.effectElements[1].p.v === 1) {\n len = this.elem.maskManager.masksProperties.length;\n i = 0;\n } else {\n i = this.filterManager.effectElements[0].p.v - 1;\n len = i + 1;\n }\n\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n\n for (i; i < len; i += 1) {\n path = createNS('path');\n groupPath.appendChild(path);\n this.paths.push({\n p: path,\n m: i\n });\n }\n\n if (this.filterManager.effectElements[10].p.v === 3) {\n var mask = createNS('mask');\n var id = createElementID();\n mask.setAttribute('id', id);\n mask.setAttribute('mask-type', 'alpha');\n mask.appendChild(groupPath);\n this.elem.globalData.defs.appendChild(mask);\n var g = createNS('g');\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\n\n this.elem.layerElement.appendChild(g);\n this.masker = mask;\n groupPath.setAttribute('stroke', '#fff');\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (this.filterManager.effectElements[10].p.v === 2) {\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n\n for (i = 0; i < len; i += 1) {\n if (this.paths[i].m !== -1) {\n mask = this.elem.maskManager.viewData[this.paths[i].m];\n path = this.paths[i].p;\n\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\n\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n var dasharrayValue;\n\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var l = path.getTotalLength();\n dasharrayValue = '0 0 0 ' + l * s + ' ';\n var lineLength = l * (e - s);\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n var units = Math.floor(lineLength / segment);\n var j;\n\n for (j = 0; j < units; j += 1) {\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n }\n\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\n } else {\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n }\n\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\n }\n }\n\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n }\n\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\n\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n var color = this.filterManager.effectElements[3].p.v;\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n }\n }\n };\n\n function SVGTritoneFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n filter.appendChild(feColorMatrix);\n var feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n this.matrixFilter = feComponentTransfer;\n var feFuncR = createNS('feFuncR');\n feFuncR.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncR);\n this.feFuncR = feFuncR;\n var feFuncG = createNS('feFuncG');\n feFuncG.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncG);\n this.feFuncG = feFuncG;\n var feFuncB = createNS('feFuncB');\n feFuncB.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncB);\n this.feFuncB = feFuncB;\n filter.appendChild(feComponentTransfer);\n }\n\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color1 = this.filterManager.effectElements[0].p.v;\n var color2 = this.filterManager.effectElements[1].p.v;\n var color3 = this.filterManager.effectElements[2].p.v;\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n this.feFuncR.setAttribute('tableValues', tableR);\n this.feFuncG.setAttribute('tableValues', tableG);\n this.feFuncB.setAttribute('tableValues', tableB);\n }\n };\n\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var effectElements = this.filterManager.effectElements;\n var feComponentTransfer = createNS('feComponentTransfer'); // Red\n\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n } // Green\n\n\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n } // Blue\n\n\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n } // Alpha\n\n\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n } // RGB\n\n\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n }\n\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n filter.appendChild(feComponentTransfer);\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n }\n\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n var feFunc = createNS(type);\n feFunc.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFunc);\n return feFunc;\n };\n\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n var cnt = 0;\n var segments = 256;\n var perc;\n var min = Math.min(inputBlack, inputWhite);\n var max = Math.max(inputBlack, inputWhite);\n var table = Array.call(null, {\n length: segments\n });\n var colorValue;\n var pos = 0;\n var outputDelta = outputWhite - outputBlack;\n var inputDelta = inputWhite - inputBlack;\n\n while (cnt <= 256) {\n perc = cnt / 256;\n\n if (perc <= min) {\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n } else if (perc >= max) {\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n } else {\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n }\n\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n\n return table.join(' ');\n };\n\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n this.feFuncRComposed.setAttribute('tableValues', val);\n this.feFuncGComposed.setAttribute('tableValues', val);\n this.feFuncBComposed.setAttribute('tableValues', val);\n }\n\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n this.feFuncR.setAttribute('tableValues', val);\n }\n\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n this.feFuncG.setAttribute('tableValues', val);\n }\n\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n this.feFuncB.setAttribute('tableValues', val);\n }\n\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n this.feFuncA.setAttribute('tableValues', val);\n }\n }\n };\n\n function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n var filterSize = filterManager.data.fs || globalFilterSize;\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n feGaussianBlur.setAttribute('stdDeviation', '0');\n this.feGaussianBlur = feGaussianBlur;\n filter.appendChild(feGaussianBlur);\n var feOffset = createNS('feOffset');\n feOffset.setAttribute('dx', '25');\n feOffset.setAttribute('dy', '0');\n feOffset.setAttribute('in', id + '_drop_shadow_1');\n feOffset.setAttribute('result', id + '_drop_shadow_2');\n this.feOffset = feOffset;\n filter.appendChild(feOffset);\n var feFlood = createNS('feFlood');\n feFlood.setAttribute('flood-color', '#00ff00');\n feFlood.setAttribute('flood-opacity', '1');\n feFlood.setAttribute('result', id + '_drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in', id + '_drop_shadow_3');\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\n feComposite.setAttribute('operator', 'in');\n feComposite.setAttribute('result', id + '_drop_shadow_4');\n filter.appendChild(feComposite);\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n filter.appendChild(feMerge); //\n }\n\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n }\n\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n var col = this.filterManager.effectElements[0].p.v;\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n }\n\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\n\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n var distance = this.filterManager.effectElements[3].p.v;\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n var x = distance * Math.cos(angle);\n var y = distance * Math.sin(angle);\n this.feOffset.setAttribute('dx', x);\n this.feOffset.setAttribute('dy', y);\n }\n }\n };\n\n var _svgMatteSymbols = [];\n\n function SVGMatte3Effect(filterElem, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.filterElem = filterElem;\n this.elem = elem;\n elem.matteElement = createNS('g');\n elem.matteElement.appendChild(elem.layerElement);\n elem.matteElement.appendChild(elem.transformedElement);\n elem.baseElement = elem.matteElement;\n }\n\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n\n i += 1;\n }\n\n var nextChild;\n\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\n };\n\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n if (!this.findSymbol(mask)) {\n var symbolId = createElementID();\n var masker = createNS('mask');\n masker.setAttribute('id', mask.layerId);\n masker.setAttribute('mask-type', 'alpha');\n\n _svgMatteSymbols.push(mask);\n\n var defs = elem.globalData.defs;\n defs.appendChild(masker);\n var symbol = createNS('symbol');\n symbol.setAttribute('id', symbolId);\n this.replaceInParent(mask, symbolId);\n symbol.appendChild(mask.layerElement);\n defs.appendChild(symbol);\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n masker.appendChild(useElem);\n mask.data.hd = false;\n mask.show();\n }\n\n elem.setMatte(mask.layerId);\n };\n\n SVGMatte3Effect.prototype.initialize = function () {\n var ind = this.filterManager.effectElements[0].p.v;\n var elements = this.elem.comp.elements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n\n i += 1;\n }\n\n this.initialized = true;\n };\n\n SVGMatte3Effect.prototype.renderFrame = function () {\n if (!this.initialized) {\n this.initialize();\n }\n };\n\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\n filter.setAttribute('x', '-100%');\n filter.setAttribute('y', '-100%');\n filter.setAttribute('width', '300%');\n filter.setAttribute('height', '300%');\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('result', id);\n filter.appendChild(feGaussianBlur);\n this.feGaussianBlur = feGaussianBlur;\n }\n\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n // Empirical value, matching AE's blur appearance.\n var kBlurrinessToSigma = 0.3;\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\n\n TransformEffect.prototype.init = function (effectsManager) {\n this.effectsManager = effectsManager;\n this.type = effectTypes.TRANSFORM_EFFECT;\n this.matrix = new Matrix();\n this.opacity = -1;\n this._mdf = false;\n this._opMdf = false;\n };\n\n TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\n\n if (forceFrame || this.effectsManager._mdf) {\n var effectElements = this.effectsManager.effectElements;\n var anchor = effectElements[0].p.v;\n var position = effectElements[1].p.v;\n var isUniformScale = effectElements[2].p.v === 1;\n var scaleHeight = effectElements[3].p.v;\n var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n var skew = effectElements[5].p.v;\n var skewAxis = effectElements[6].p.v;\n var rotation = effectElements[7].p.v;\n this.matrix.reset();\n this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n this.matrix.rotate(-rotation * degToRads);\n this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n this.matrix.translate(position[0], position[1], 0);\n this._mdf = true;\n\n if (this.opacity !== effectElements[8].p.v) {\n this.opacity = effectElements[8].p.v;\n this._opMdf = true;\n }\n }\n };\n\n function SVGTransformEffect(_, filterManager) {\n this.init(filterManager);\n }\n\n extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n\n extendPrototype([TransformEffect], CVTransformEffect);\n\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\n ShapeModifiers.registerModifier('tm', TrimModifier);\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\n ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\n ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\n\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize(); // Registering svg effects\n\n registerEffect$1(20, SVGTintFilter, true);\n registerEffect$1(21, SVGFillFilter, true);\n registerEffect$1(22, SVGStrokeEffect, false);\n registerEffect$1(23, SVGTritoneFilter, true);\n registerEffect$1(24, SVGProLevelsFilter, true);\n registerEffect$1(25, SVGDropShadowEffect, true);\n registerEffect$1(28, SVGMatte3Effect, false);\n registerEffect$1(29, SVGGaussianBlurEffect, true);\n registerEffect$1(35, SVGTransformEffect, false);\n registerEffect(35, CVTransformEffect);\n\n return lottie;\n\n}));\n","export const REACT_LOTTIE_PLAYER_VERSION = \"3.5.4\"; \nexport const LOTTIE_WEB_VERSION = \"^5.12.2\";\n","import lottie, { AnimationItem } from 'lottie-web';\nimport * as React from 'react';\n\nimport { LOTTIE_WEB_VERSION, REACT_LOTTIE_PLAYER_VERSION } from './versions';\n\n/**\n * Parse a resource into a JSON object or a URL string\n */\nexport function parseSrc(src: string | object): string | object {\n if (typeof src === 'object') {\n return src;\n }\n\n try {\n return JSON.parse(src);\n } catch (e) {\n // Do nothing...\n }\n\n // Try construct an absolute URL from the src URL\n try {\n return new URL(src).toString();\n } catch (e) {\n // Do nothing...\n }\n\n return src;\n}\n\n// Necessary so that we can add Lottie to the window afterwards\ndeclare global {\n interface Window {\n lottie: any;\n }\n}\n\n// Define valid player states\nexport enum PlayerState {\n Loading = 'loading',\n Playing = 'playing',\n Paused = 'paused',\n Stopped = 'stopped',\n Frozen = 'frozen',\n Error = 'error',\n}\n\n// Define player events\nexport enum PlayerEvent {\n Load = 'load',\n InstanceSaved = 'instanceSaved',\n Error = 'error',\n Ready = 'ready',\n Play = 'play',\n Pause = 'pause',\n Stop = 'stop',\n Freeze = 'freeze',\n Loop = 'loop',\n Complete = 'complete',\n Frame = 'frame',\n}\n\nexport type Versions = {\n lottieWebVersion: string;\n lottiePlayerVersion: string;\n};\n\nexport type PlayerDirection = -1 | 1;\n\nexport interface IPlayerProps {\n id?: string;\n lottieRef?: (ref: AnimationItem) => void;\n onEvent?: (event: PlayerEvent) => any;\n onStateChange?: (state: PlayerState) => any;\n onBackgroundChange?: (color: string) => void;\n autoplay?: boolean;\n background?: string;\n children?: React.ReactNode | React.ReactNode[];\n controls?: boolean;\n direction?: PlayerDirection;\n hover?: boolean;\n loop?: boolean | number;\n renderer?: any;\n speed?: number;\n src: object | string;\n style?: React.CSSProperties;\n rendererSettings?: object;\n keepLastFrame?: boolean;\n className?: string;\n}\n\ninterface IPlayerState {\n animationData: any;\n background: string;\n containerRef: React.Ref | null;\n debug?: boolean;\n instance: AnimationItem | null;\n seeker: number;\n playerState: PlayerState;\n}\n\n// Build default config for lottie-web player\nconst defaultOptions = {\n clearCanvas: false,\n hideOnTransparent: true,\n progressiveLoad: true,\n};\n\nexport class Player extends React.Component {\n public static async getDerivedStateFromProps(nextProps: any, prevState: any) {\n if (nextProps.background !== prevState.background) {\n return { background: nextProps.background };\n } else {\n return null;\n }\n }\n\n public container: Element | null = null;\n public unmounted = false;\n\n constructor(props: IPlayerProps) {\n super(props);\n\n if (typeof window !== 'undefined') {\n window.lottie = lottie;\n }\n this.state = {\n animationData: null,\n background: 'transparent',\n containerRef: React.createRef(),\n debug: true,\n instance: null,\n playerState: PlayerState.Loading,\n seeker: 0,\n };\n }\n\n /**\n * Returns the lottie-web version and this player's version\n */\n public getVersions(): Versions {\n return {\n lottieWebVersion: LOTTIE_WEB_VERSION,\n lottiePlayerVersion: REACT_LOTTIE_PLAYER_VERSION,\n };\n }\n\n static defaultProps = {\n loop: false,\n };\n\n public async componentDidMount() {\n if (!this.unmounted) {\n await this.createLottie();\n }\n }\n\n public componentWillUnmount() {\n this.unmounted = true;\n if (this.state.instance) {\n this.state.instance.destroy();\n }\n }\n\n public async componentDidUpdate(prevProps: any) {\n if (this.props.src !== prevProps.src) {\n if (this.state.instance) {\n this.state.instance.destroy();\n }\n await this.createLottie();\n }\n }\n handleBgChange = (childData: any) => {\n this.setState({ background: childData });\n };\n triggerDownload = (dataUri: any, filename: any) => {\n const element = document.createElement('a');\n\n element.href = dataUri;\n element.download = filename;\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n };\n snapshot = (download = true) => {\n let data;\n const id = this.props.id ? this.props.id : 'lottie';\n const lottieElement = document.getElementById(id);\n if (this.props.renderer === 'svg') {\n // Get SVG element and serialize markup\n if (lottieElement) {\n const svgElement = lottieElement.querySelector('svg');\n\n if (svgElement) {\n const serializedSvg = new XMLSerializer().serializeToString(svgElement);\n data = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(serializedSvg);\n }\n }\n\n // Trigger file download if needed\n if (download) {\n // this.triggerDownload(data, `snapshot_${progress}.svg`);\n this.triggerDownload(data, `snapshot.svg`);\n }\n } else if (this.props.renderer === 'canvas') {\n if (lottieElement) {\n const canvas = lottieElement.querySelector('canvas');\n if (canvas) {\n data = canvas.toDataURL('image/png');\n }\n }\n // Trigger file download if needed\n if (download) {\n // this.triggerDownload(data, `snapshot_${progress}.png`);\n this.triggerDownload(data, `snapshot.png`);\n }\n }\n\n return data;\n };\n\n public render() {\n const { children, loop, style, onBackgroundChange, className } = this.props;\n const { animationData, instance, playerState, seeker, debug, background } = this.state;\n\n return (\n
\n {this.state.playerState === PlayerState.Error ? (\n
\n \n ⚠️\n \n
\n ) : (\n (this.container = el)}\n style={{\n background,\n margin: '0 auto',\n outline: 'none',\n overflow: 'hidden',\n ...style,\n }}\n className={className}\n >
\n )}\n {React.Children.map(children, child => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, {\n animationData,\n background,\n debug,\n instance,\n loop,\n pause: () => this.pause(),\n play: () => this.play(),\n playerState,\n seeker,\n setBackground: (value: string) => {\n this.setState({ background: value });\n\n if (typeof onBackgroundChange === 'function') {\n onBackgroundChange(value);\n }\n },\n setSeeker: (f: number, p: boolean) => this.setSeeker(f, p),\n stop: () => this.stop(),\n toggleDebug: () => this.toggleDebug(),\n setLoop: (loop: boolean) => this.setLoop(loop),\n colorChangedEvent: (hex: string) => {\n this.handleBgChange(hex);\n },\n snapshot: () => {\n this.snapshot();\n },\n });\n }\n return null;\n })}\n \n );\n }\n\n private toggleDebug() {\n this.setState({ debug: !this.state.debug });\n }\n\n private async createLottie() {\n const {\n autoplay,\n direction,\n loop,\n lottieRef,\n renderer,\n speed,\n src,\n background,\n rendererSettings,\n hover,\n } = this.props;\n const { instance } = this.state;\n\n if (!src || !this.container) {\n return;\n }\n\n // Load the resource information\n try {\n // Parse the src to see if it is a URL or Lottie JSON data\n let animationData = parseSrc(src);\n\n if (typeof animationData === 'string') {\n const fetchResult = await fetch(animationData as string).catch(() => {\n this.setState({ playerState: PlayerState.Error });\n this.triggerEvent(PlayerEvent.Error);\n throw new Error('@LottieFiles/lottie-react: Animation data could not be fetched.');\n });\n\n animationData = await fetchResult.json().catch(() => {\n this.setState({ playerState: PlayerState.Error });\n this.triggerEvent(PlayerEvent.Error);\n throw new Error('@LottieFiles/lottie-react: Animation data could not be fetched.');\n });\n }\n\n // Clear previous animation, if any\n if (instance) {\n instance.destroy();\n }\n\n // Initialize lottie player and load animation\n const newInstance = lottie.loadAnimation({\n rendererSettings: rendererSettings || defaultOptions,\n animationData,\n autoplay: autoplay || false,\n container: this.container as Element,\n loop: loop || false,\n renderer,\n });\n if (speed) {\n newInstance.setSpeed(speed);\n }\n this.setState({ animationData });\n\n this.setState({ instance: newInstance }, () => {\n this.triggerEvent(PlayerEvent.InstanceSaved);\n\n if (typeof lottieRef === 'function') {\n lottieRef(newInstance);\n }\n if (autoplay) {\n this.play();\n }\n });\n\n // Handle new frame event\n newInstance.addEventListener('enterFrame', () => {\n this.triggerEvent(PlayerEvent.Frame);\n\n this.setState({\n seeker: Math.floor((newInstance as any).currentFrame),\n });\n });\n\n // Handle lottie-web ready event\n newInstance.addEventListener('DOMLoaded', () => {\n this.triggerEvent(PlayerEvent.Load);\n });\n\n // Handle animation data load complete\n newInstance.addEventListener('data_ready', () => {\n this.triggerEvent(PlayerEvent.Ready);\n });\n\n // Set error state when animation load fail event triggers\n newInstance.addEventListener('data_failed', () => {\n this.setState({ playerState: PlayerState.Error });\n this.triggerEvent(PlayerEvent.Error);\n });\n\n // Handle new loop event\n newInstance.addEventListener('loopComplete', () => {\n this.triggerEvent(PlayerEvent.Loop);\n });\n\n // Set state to paused if loop is off and anim has completed\n newInstance.addEventListener('complete', () => {\n this.triggerEvent(PlayerEvent.Complete);\n this.setState({ playerState: PlayerState.Paused });\n\n if (!this.props.keepLastFrame || this.props.loop) {\n this.setSeeker(0);\n }\n });\n\n // Set handlers to auto play animation on hover if enabled\n if (this.container) {\n this.container.addEventListener('mouseenter', () => {\n if (hover && this.state.playerState !== PlayerState.Playing) {\n if (this.props.keepLastFrame) {\n this.stop();\n }\n this.play();\n }\n });\n this.container.addEventListener('mouseleave', () => {\n if (hover && this.state.playerState === PlayerState.Playing) {\n this.stop();\n }\n });\n }\n\n // Set initial playback speed and direction\n if (speed) {\n this.setPlayerSpeed(speed);\n }\n\n if (direction) {\n this.setPlayerDirection(direction);\n }\n\n if (background) {\n this.setState({ background });\n }\n } catch (e) {\n this.setState({ playerState: PlayerState.Error });\n this.triggerEvent(PlayerEvent.Error);\n }\n }\n\n public play() {\n const { instance } = this.state;\n\n if (instance) {\n this.triggerEvent(PlayerEvent.Play);\n\n instance.play();\n\n this.setState({ playerState: PlayerState.Playing });\n }\n }\n\n public pause() {\n const { instance } = this.state;\n\n if (instance) {\n this.triggerEvent(PlayerEvent.Pause);\n\n instance.pause();\n\n this.setState({ playerState: PlayerState.Paused });\n }\n }\n\n public stop() {\n const { instance } = this.state;\n\n if (instance) {\n this.triggerEvent(PlayerEvent.Stop);\n\n instance.stop();\n\n this.setState({ playerState: PlayerState.Stopped });\n }\n }\n\n public setPlayerSpeed(speed: number) {\n const { instance } = this.state;\n\n if (instance) {\n instance.setSpeed(speed);\n }\n }\n\n public setPlayerDirection(direction: PlayerDirection) {\n const { instance } = this.state;\n\n if (instance) {\n instance.setDirection(direction);\n }\n }\n\n public setSeeker(seek: number, play = false) {\n const { instance, playerState } = this.state;\n\n if (instance) {\n if (!play || playerState !== PlayerState.Playing) {\n instance.goToAndStop(seek, true);\n this.triggerEvent(PlayerEvent.Pause);\n this.setState({ playerState: PlayerState.Paused });\n } else {\n instance.goToAndPlay(seek, true);\n }\n }\n }\n\n public setLoop(loop: boolean) {\n const { instance } = this.state;\n\n if (instance) {\n instance.loop = loop;\n this.setState({ instance: instance });\n }\n }\n private triggerEvent(event: PlayerEvent) {\n const { onEvent } = this.props;\n\n if (onEvent) {\n onEvent(event);\n }\n }\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import * as React from 'react';\n\ninterface ColorPickerProps {\n colorChangedEvent?: (hex: string) => void;\n}\nexport class ColorPicker extends React.Component {\n state = {\n red: 0,\n green: 0,\n blue: 0,\n rgba: null,\n hex: '#000000',\n colorComponents: [],\n };\n\n handleChange = (rgb: string, value: any) => {\n if (rgb === 'r') {\n const hex =\n '#' +\n (value | (1 << 8)).toString(16).slice(1) +\n (this.state.green | (1 << 8)).toString(16).slice(1) +\n (this.state.blue | (1 << 8)).toString(16).slice(1);\n this.setState({ hex: hex });\n } else if (rgb === 'g') {\n const hex =\n '#' +\n (this.state.red | (1 << 8)).toString(16).slice(1) +\n (value | (1 << 8)).toString(16).slice(1) +\n (this.state.blue | (1 << 8)).toString(16).slice(1);\n this.setState({ hex: hex });\n } else if (rgb === 'b') {\n const hex =\n '#' +\n (this.state.red | (1 << 8)).toString(16).slice(1) +\n (this.state.green | (1 << 8)).toString(16).slice(1) +\n (value | (1 << 8)).toString(16).slice(1);\n this.setState({ hex: hex });\n }\n };\n parseColor = (input: string) => {\n if (typeof input !== 'string') {\n return;\n }\n if (input[0] === '#') {\n const _colorComponents =\n input.length === 4\n ? [input.slice(1, 2), input.slice(2, 3), input.slice(3, 4)].map(n => parseInt(`${n}${n}`, 16))\n : [input.slice(1, 3), input.slice(3, 5), input.slice(5, 7)].map(n => parseInt(n, 16));\n this.setState({ colorComponents: _colorComponents });\n } else if (input.startsWith('rgb')) {\n const _colorComponents = input.match(/\\d+/g)?.map(n => parseInt(n));\n if (_colorComponents !== undefined) {\n this.setState({ colorComponents: _colorComponents });\n }\n }\n\n if (this.state.colorComponents.length) {\n this.setState({ red: this.state.colorComponents[0] });\n this.setState({ green: this.state.colorComponents[1] });\n this.setState({ blue: this.state.colorComponents[2] });\n }\n };\n\n componentDidUpdate(_prevProps: any, prevState: any) {\n if (this.props.colorChangedEvent) {\n if (this.state.hex !== prevState.hex) {\n this.props.colorChangedEvent(this.state.hex);\n }\n }\n return true;\n }\n public render() {\n return (\n
\n
\n
\n Red\n {\n this.setState({ red: event.target.value });\n this.handleChange('r', event.target.value);\n }}\n />\n {\n this.setState({ red: event.target.value });\n this.handleChange('r', event.target.value);\n }}\n />\n
\n
\n Green\n {\n this.setState({ green: event.target.value });\n this.handleChange('g', event.target.value);\n }}\n />\n {\n this.setState({ green: event.target.value });\n this.handleChange('g', event.target.value);\n }}\n />\n
\n
\n Blue\n {\n this.setState({ blue: event.target.value });\n this.handleChange('b', event.target.value);\n }}\n />\n {\n this.setState({ blue: event.target.value });\n this.handleChange('b', event.target.value);\n }}\n />\n
\n
\n
\n \n
\n {\n this.setState({ hex: e.target.value });\n this.parseColor(e.target.value);\n }}\n />\n
\n
\n
\n );\n }\n}\n","/* eslint-disable jsx-a11y/mouse-events-have-key-events */\n/* eslint-disable react/jsx-no-comment-textnodes */\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { ReactNode } from 'react';\n\ninterface IPopoverProps {\n children: ReactNode;\n icon: ReactNode;\n}\n\nexport const Popover: React.FC = (props: IPopoverProps) => {\n const { children, icon } = props;\n const [_triggerRef, setTriggerRef] = useState(null);\n const [_contentRef, setContentRef] = useState(null);\n const [_alignment, setAlignment] = useState(null);\n const [_open, setOpen] = useState(false);\n\n useEffect(() => {\n if (_triggerRef && _contentRef) {\n const triggerBounds = _triggerRef.getBoundingClientRect();\n const contentBounds = _contentRef.getBoundingClientRect();\n\n const alignment = triggerBounds.left + contentBounds.width > window.innerWidth ? -1 : 0;\n\n setAlignment(alignment);\n }\n }, [_alignment, _contentRef, _triggerRef]);\n\n // /**\n // * Show content box\n // */\n const show = () => {\n setOpen(true);\n };\n\n /**\n * Hide content box\n */\n const hide = () => {\n setOpen(false);\n };\n\n return (\n {\n show();\n }}\n onMouseLeave={() => {\n hide();\n }}\n ref={triggerRef => {\n setTriggerRef(triggerRef);\n }}\n >\n
{icon}
\n\n {\n setContentRef(contentRef);\n }}\n style={{\n bottom: '22px',\n right: '0px',\n zIndex: 2,\n visibility: _open ? 'visible' : 'hidden',\n }}\n >\n {children}\n \n \n );\n};\nexport default Popover;\n","import './Styles.css';\n\nimport * as React from 'react';\n\n// const active = 'rgba(15, 204, 206, 0.4)';\n// const inactive = '#dbdbdb';\n\ninterface ISeekerProps {\n className?: string;\n disabled?: boolean;\n max: number;\n min: number;\n onChange: (e: any) => void;\n onChangeStart?: (v: number) => void;\n onChangeEnd?: (v: number) => void;\n showLabels?: boolean;\n step: number;\n value: number;\n darkTheme?: boolean;\n}\n\nexport class Seeker extends React.Component {\n inputRef: any = React.createRef();\n\n constructor(props: ISeekerProps) {\n super(props);\n this.state = { value: 0 };\n }\n\n handleChange = () => (event: any) => {\n const value = event.target.value;\n const frame = Math.floor((value / 100) * this.props.max);\n this.props.onChange(frame);\n };\n\n render() {\n const progress = (this.props.value / this.props.max) * 100;\n const seekerStyle = {\n backgroundImage: `-webkit-gradient(linear, left top, right top, color-stop(${progress}%, rgba(15, 204, 206, 0.4)), color-stop(${progress}%, #DAE1E7))`,\n };\n const seekerContainerStyle = {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n width: '100%',\n marginRight: '5px',\n marginLeft: '5px',\n position: 'relative',\n } as React.CSSProperties;\n\n const minLabelStyle = {\n position: 'absolute',\n left: 0,\n marginTop: '8px',\n width: '20px',\n display: 'block',\n border: '0px',\n backgroundColor: this.props.darkTheme ? '#505050' : 'rgb(218, 225, 231)',\n color: this.props.darkTheme ? '#B9B9B9' : '#555',\n padding: '2px',\n textAlign: 'center',\n borderRadius: '3px',\n fontSize: '8px',\n fontWeight: 'bold',\n } as React.CSSProperties;\n const maxLabelStyle = {\n position: 'absolute',\n right: 0,\n marginTop: '8px',\n width: '20px',\n display: 'block',\n border: '0px',\n backgroundColor: this.props.darkTheme ? '#505050' : 'rgb(218, 225, 231)',\n color: this.props.darkTheme ? '#B9B9B9' : '#555',\n padding: '2px',\n textAlign: 'center',\n borderRadius: '3px',\n fontSize: '8px',\n fontWeight: 'bold',\n } as React.CSSProperties;\n return (\n
\n \n {this.props.showLabels && (\n
\n
{this.props.min}
\n
{this.props.max}
\n
\n )}\n
\n );\n }\n}\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport './Styles.css';\n\nimport * as React from 'react';\n\nimport { ColorPicker } from './ColorPicker';\nimport { PlayerEvent, PlayerState } from './Player';\nimport { Popover } from './Popover';\nimport { Seeker } from './Seeker';\n\nconst ControlButtonStyle = {\n display: 'inline-flex',\n cursor: 'pointer',\n};\n\ninterface IControlProps {\n instance?: any;\n loop?: boolean;\n pause?: () => void;\n play?: () => void;\n playerState?: PlayerState;\n seeker?: number;\n setLoop?: (value: boolean) => void;\n setSeeker?: (seek: number, play: boolean) => void;\n stop?: () => void;\n visible?: boolean;\n buttons?: string[];\n debug?: boolean;\n toggleDebug?: () => void;\n showLabels?: boolean;\n darkTheme?: boolean;\n transparentTheme?: boolean;\n colorChangedEvent?: () => void;\n snapshot?: () => void;\n}\n\nexport class Controls extends React.Component {\n public constructor(props: IControlProps) {\n super(props);\n\n this.state = {\n activeFrame: 0,\n mouseDown: false,\n };\n }\n\n public render() {\n const { instance, playerState, seeker, setLoop, setSeeker, play, pause, stop, visible, buttons } = this.props;\n\n // Render nothing if lottie instance is not available\n if (!instance) {\n return null;\n }\n\n // Hide controls if not set to visible\n if (!visible) {\n return null;\n }\n\n const showPlayButton = !buttons || buttons.includes('play');\n const showStopButton = !buttons || buttons.includes('stop');\n const showRepeatButton = !buttons || buttons.includes('repeat');\n const showFrameInput = !buttons || buttons.includes('frame');\n const showBackgroundChange = !buttons || buttons.includes('background');\n const showSnapshot = !buttons || buttons.includes('snapshot');\n const ICON_SIZE = { width: 14, height: 14, viewBox: '0 0 24 24' };\n const currentFrame = Math.round(instance.currentFrame);\n\n return (\n \n {showPlayButton && (\n {\n if (playerState === PlayerState.Playing) {\n if (typeof pause === 'function') {\n pause();\n }\n } else {\n if (typeof play === 'function') {\n play();\n }\n }\n }}\n onKeyDown={() => {\n if (playerState === PlayerState.Playing) {\n if (typeof pause === 'function') {\n pause();\n }\n } else {\n if (typeof play === 'function') {\n play();\n }\n }\n }}\n className=\"lf-player-btn\"\n style={ControlButtonStyle}\n >\n {playerState === PlayerState.Playing ? (\n \n \n \n \n ) : (\n \n \n \n )}\n \n )}\n {showStopButton && (\n stop && stop()}\n onKeyDown={() => stop && stop()}\n className={playerState === PlayerState.Stopped ? 'lf-player-btn active' : 'lf-player-btn'}\n style={ControlButtonStyle}\n >\n \n \n \n \n )}\n {\n if (setSeeker) {\n this.setState({ activeFrame: newFrame }, () => {\n setSeeker(newFrame, false);\n });\n }\n }}\n onChangeEnd={(newFrame: any) => {\n if (setSeeker) {\n this.setState({ activeFrame: newFrame }, () => {\n setSeeker(newFrame, false);\n });\n }\n }}\n showLabels={this.props.showLabels}\n darkTheme={this.props.darkTheme}\n />\n {showFrameInput && (\n
\n \n
\n )}\n {showRepeatButton && (\n {\n if (instance && setLoop) {\n setLoop(!instance.loop);\n }\n }}\n onKeyDown={() => {\n if (instance && setLoop) {\n setLoop(!instance.loop);\n }\n }}\n className={instance.loop ? 'lf-player-btn active' : 'lf-player-btn'}\n style={ControlButtonStyle}\n >\n \n \n \n \n \n )}\n {showBackgroundChange && (\n \n \n \n }\n >\n
\n \n
\n \n )}\n {showSnapshot && (\n \n \n \n \n \n \n }\n >\n {\n if (setSeeker) setSeeker(currentFrame + (e.deltaY > 0 ? -1 : 1), false);\n }}\n >\n
Frame {currentFrame}
\n
\n Download SVG\n
\n
\n Download PNG\n
\n Scroll with mousewheel to find exact frame\n \n \n )}\n \n );\n }\n}\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3= Math.floor(elemTopBound) && offsetY < Math.floor(elemBottomBound);\n var isOutside = offsetY < Math.floor(elemTopBound) || offsetY >= Math.floor(elemBottomBound);\n var activeLink = scroller.getActiveLink();\n\n if (isOutside) {\n if (to === activeLink) {\n scroller.setActiveLink(void 0);\n }\n\n if (_this2.props.hashSpy && scrollHash.getHash() === to) {\n scrollHash.changeHash();\n }\n\n if (_this2.props.spy && _this2.state.active) {\n _this2.setState({ active: false });\n _this2.props.onSetInactive && _this2.props.onSetInactive();\n }\n\n return scrollSpy.updateStates();\n }\n\n if (isInside && activeLink !== to) {\n scroller.setActiveLink(to);\n\n _this2.props.hashSpy && scrollHash.changeHash(to);\n\n if (_this2.props.spy) {\n _this2.setState({ active: true });\n _this2.props.onSetActive && _this2.props.onSetActive(to);\n }\n return scrollSpy.updateStates();\n }\n };\n };\n\n ;\n\n Scroll.propTypes = protoTypes;\n\n Scroll.defaultProps = { offset: 0 };\n\n return Scroll;\n },\n Element: function Element(Component) {\n\n console.warn(\"Helpers.Element is deprecated since v1.7.0\");\n\n var Element = function (_React$Component2) {\n _inherits(Element, _React$Component2);\n\n function Element(props) {\n _classCallCheck(this, Element);\n\n var _this3 = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this, props));\n\n _this3.childBindings = {\n domNode: null\n };\n return _this3;\n }\n\n _createClass(Element, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (typeof window === 'undefined') {\n return false;\n }\n this.registerElems(this.props.name);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.name !== prevProps.name) {\n this.registerElems(this.props.name);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (typeof window === 'undefined') {\n return false;\n }\n defaultScroller.unregister(this.props.name);\n }\n }, {\n key: 'registerElems',\n value: function registerElems(name) {\n defaultScroller.register(name, this.childBindings.domNode);\n }\n }, {\n key: 'render',\n value: function render() {\n return React.createElement(Component, _extends({}, this.props, { parentBindings: this.childBindings }));\n }\n }]);\n\n return Element;\n }(React.Component);\n\n ;\n\n Element.propTypes = {\n name: PropTypes.string,\n id: PropTypes.string\n };\n\n return Element;\n }\n};\n\nmodule.exports = Helpers;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _smooth = require('./smooth');\n\nvar _smooth2 = _interopRequireDefault(_smooth);\n\nvar _cancelEvents = require('./cancel-events');\n\nvar _cancelEvents2 = _interopRequireDefault(_cancelEvents);\n\nvar _scrollEvents = require('./scroll-events');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\r\n * Gets the easing type from the smooth prop within options.\r\n */\nvar getAnimationType = function getAnimationType(options) {\n return _smooth2.default[options.smooth] || _smooth2.default.defaultEasing;\n};\n/*\r\n * Function helper\r\n */\nvar functionWrapper = function functionWrapper(value) {\n return typeof value === 'function' ? value : function () {\n return value;\n };\n};\n/*\r\n * Wraps window properties to allow server side rendering\r\n */\nvar currentWindowProperties = function currentWindowProperties() {\n if (typeof window !== 'undefined') {\n return window.requestAnimationFrame || window.webkitRequestAnimationFrame;\n }\n};\n\n/*\r\n * Helper function to never extend 60fps on the webpage.\r\n */\nvar requestAnimationFrameHelper = function () {\n return currentWindowProperties() || function (callback, element, delay) {\n window.setTimeout(callback, delay || 1000 / 60, new Date().getTime());\n };\n}();\n\nvar makeData = function makeData() {\n return {\n currentPosition: 0,\n startPosition: 0,\n targetPosition: 0,\n progress: 0,\n duration: 0,\n cancel: false,\n\n target: null,\n containerElement: null,\n to: null,\n start: null,\n delta: null,\n percent: null,\n delayTimeout: null\n };\n};\n\nvar currentPositionX = function currentPositionX(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollLeft;\n } else {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;\n }\n};\n\nvar currentPositionY = function currentPositionY(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollTop;\n } else {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n }\n};\n\nvar scrollContainerWidth = function scrollContainerWidth(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollWidth - containerElement.offsetWidth;\n } else {\n var body = document.body;\n var html = document.documentElement;\n\n return Math.max(body.scrollWidth, body.offsetWidth, html.clientWidth, html.scrollWidth, html.offsetWidth);\n }\n};\n\nvar scrollContainerHeight = function scrollContainerHeight(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollHeight - containerElement.offsetHeight;\n } else {\n var body = document.body;\n var html = document.documentElement;\n\n return Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);\n }\n};\n\nvar animateScroll = function animateScroll(easing, options, timestamp) {\n var data = options.data;\n\n // Cancel on specific events\n if (!options.ignoreCancelEvents && data.cancel) {\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](data.to, data.target, data.currentPositionY);\n }\n return;\n };\n\n data.delta = Math.round(data.targetPosition - data.startPosition);\n\n if (data.start === null) {\n data.start = timestamp;\n }\n\n data.progress = timestamp - data.start;\n\n data.percent = data.progress >= data.duration ? 1 : easing(data.progress / data.duration);\n\n data.currentPosition = data.startPosition + Math.ceil(data.delta * data.percent);\n\n if (data.containerElement && data.containerElement !== document && data.containerElement !== document.body) {\n if (options.horizontal) {\n data.containerElement.scrollLeft = data.currentPosition;\n } else {\n data.containerElement.scrollTop = data.currentPosition;\n }\n } else {\n if (options.horizontal) {\n window.scrollTo(data.currentPosition, 0);\n } else {\n window.scrollTo(0, data.currentPosition);\n }\n }\n\n if (data.percent < 1) {\n var easedAnimate = animateScroll.bind(null, easing, options);\n requestAnimationFrameHelper.call(window, easedAnimate);\n return;\n }\n\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](data.to, data.target, data.currentPosition);\n }\n};\n\nvar setContainer = function setContainer(options) {\n options.data.containerElement = !options ? null : options.containerId ? document.getElementById(options.containerId) : options.container && options.container.nodeType ? options.container : document;\n};\n\nvar animateTopScroll = function animateTopScroll(scrollOffset, options, to, target) {\n options.data = options.data || makeData();\n\n window.clearTimeout(options.data.delayTimeout);\n\n var setCancel = function setCancel() {\n options.data.cancel = true;\n };\n _cancelEvents2.default.subscribe(setCancel);\n\n setContainer(options);\n\n options.data.start = null;\n options.data.cancel = false;\n options.data.startPosition = options.horizontal ? currentPositionX(options) : currentPositionY(options);\n options.data.targetPosition = options.absolute ? scrollOffset : scrollOffset + options.data.startPosition;\n\n if (options.data.startPosition === options.data.targetPosition) {\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](options.data.to, options.data.target, options.data.currentPosition);\n }\n return;\n }\n\n options.data.delta = Math.round(options.data.targetPosition - options.data.startPosition);\n\n options.data.duration = functionWrapper(options.duration)(options.data.delta);\n options.data.duration = isNaN(parseFloat(options.data.duration)) ? 1000 : parseFloat(options.data.duration);\n options.data.to = to;\n options.data.target = target;\n\n var easing = getAnimationType(options);\n var easedAnimate = animateScroll.bind(null, easing, options);\n\n if (options && options.delay > 0) {\n options.data.delayTimeout = window.setTimeout(function () {\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](options.data.to, options.data.target);\n }\n requestAnimationFrameHelper.call(window, easedAnimate);\n }, options.delay);\n return;\n }\n\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](options.data.to, options.data.target);\n }\n requestAnimationFrameHelper.call(window, easedAnimate);\n};\n\nvar proceedOptions = function proceedOptions(options) {\n options = _extends({}, options);\n options.data = options.data || makeData();\n options.absolute = true;\n return options;\n};\n\nvar scrollToTop = function scrollToTop(options) {\n animateTopScroll(0, proceedOptions(options));\n};\n\nvar scrollTo = function scrollTo(toPosition, options) {\n animateTopScroll(toPosition, proceedOptions(options));\n};\n\nvar scrollToBottom = function scrollToBottom(options) {\n options = proceedOptions(options);\n setContainer(options);\n animateTopScroll(options.horizontal ? scrollContainerWidth(options) : scrollContainerHeight(options), options);\n};\n\nvar scrollMore = function scrollMore(toPosition, options) {\n options = proceedOptions(options);\n setContainer(options);\n var currentPosition = options.horizontal ? currentPositionX(options) : currentPositionY(options);\n animateTopScroll(toPosition + currentPosition, options);\n};\n\nexports.default = {\n animateTopScroll: animateTopScroll,\n getAnimationType: getAnimationType,\n scrollToTop: scrollToTop,\n scrollToBottom: scrollToBottom,\n scrollTo: scrollTo,\n scrollMore: scrollMore\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nvar events = ['mousedown', 'mousewheel', 'touchmove', 'keydown'];\n\nexports.default = {\n subscribe: function subscribe(cancelEvent) {\n return typeof document !== 'undefined' && events.forEach(function (event) {\n return (0, _passiveEventListeners.addPassiveEventListener)(document, event, cancelEvent);\n });\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\r\n * Tell the browser that the event listener won't prevent a scroll.\r\n * Allowing the browser to continue scrolling without having to\r\n * to wait for the listener to return.\r\n */\nvar addPassiveEventListener = exports.addPassiveEventListener = function addPassiveEventListener(target, eventName, listener) {\n var listenerName = listener.name;\n if (!listenerName) {\n listenerName = eventName;\n console.warn('Listener must be a named function.');\n }\n\n if (!attachedListeners.has(eventName)) attachedListeners.set(eventName, new Set());\n var listeners = attachedListeners.get(eventName);\n if (listeners.has(listenerName)) return;\n\n var supportsPassiveOption = function () {\n var supportsPassiveOption = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassiveOption = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n return supportsPassiveOption;\n }();\n target.addEventListener(eventName, listener, supportsPassiveOption ? { passive: true } : false);\n listeners.add(listenerName);\n};\n\nvar removePassiveEventListener = exports.removePassiveEventListener = function removePassiveEventListener(target, eventName, listener) {\n target.removeEventListener(eventName, listener);\n attachedListeners.get(eventName).delete(listener.name || eventName);\n};\n\nvar attachedListeners = new Map();","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _scroller = require('./scroller');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nexports.default = function (Component) {\n var Element = function (_React$Component) {\n _inherits(Element, _React$Component);\n\n function Element(props) {\n _classCallCheck(this, Element);\n\n var _this = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this, props));\n\n _this.childBindings = {\n domNode: null\n };\n return _this;\n }\n\n _createClass(Element, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (typeof window === 'undefined') {\n return false;\n }\n this.registerElems(this.props.name);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.name !== prevProps.name) {\n this.registerElems(this.props.name);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (typeof window === 'undefined') {\n return false;\n }\n _scroller2.default.unregister(this.props.name);\n }\n }, {\n key: 'registerElems',\n value: function registerElems(name) {\n _scroller2.default.register(name, this.childBindings.domNode);\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(Component, _extends({}, this.props, { parentBindings: this.childBindings }));\n }\n }]);\n\n return Element;\n }(_react2.default.Component);\n\n ;\n\n Element.propTypes = {\n name: _propTypes2.default.string,\n id: _propTypes2.default.string\n };\n\n return Element;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar Events = {\n\tregistered: {},\n\tscrollEvent: {\n\t\tregister: function register(evtName, callback) {\n\t\t\tEvents.registered[evtName] = callback;\n\t\t},\n\t\tremove: function remove(evtName) {\n\t\t\tEvents.registered[evtName] = null;\n\t\t}\n\t}\n};\n\nexports.default = Events;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar scrollHash = {\n mountFlag: false,\n initialized: false,\n scroller: null,\n containers: {},\n\n mount: function mount(scroller) {\n this.scroller = scroller;\n\n this.handleHashChange = this.handleHashChange.bind(this);\n window.addEventListener('hashchange', this.handleHashChange);\n\n this.initStateFromHash();\n this.mountFlag = true;\n },\n mapContainer: function mapContainer(to, container) {\n this.containers[to] = container;\n },\n isMounted: function isMounted() {\n return this.mountFlag;\n },\n isInitialized: function isInitialized() {\n return this.initialized;\n },\n initStateFromHash: function initStateFromHash() {\n var _this = this;\n\n var hash = this.getHash();\n if (hash) {\n window.setTimeout(function () {\n _this.scrollTo(hash, true);\n _this.initialized = true;\n }, 10);\n } else {\n this.initialized = true;\n }\n },\n scrollTo: function scrollTo(to, isInit) {\n var scroller = this.scroller;\n var element = scroller.get(to);\n if (element && (isInit || to !== scroller.getActiveLink())) {\n var container = this.containers[to] || document;\n scroller.scrollTo(to, { container: container });\n }\n },\n getHash: function getHash() {\n return _utils2.default.getHash();\n },\n changeHash: function changeHash(to, saveHashHistory) {\n if (this.isInitialized() && _utils2.default.getHash() !== to) {\n _utils2.default.updateHash(to, saveHashHistory);\n }\n },\n handleHashChange: function handleHashChange() {\n this.scrollTo(this.getHash());\n },\n unmount: function unmount() {\n this.scroller = null;\n this.containers = null;\n window.removeEventListener('hashchange', this.handleHashChange);\n }\n};\n\nexports.default = scrollHash;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollSpy = require('./scroll-spy');\n\nvar _scrollSpy2 = _interopRequireDefault(_scrollSpy);\n\nvar _scroller = require('./scroller');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _scrollHash = require('./scroll-hash');\n\nvar _scrollHash2 = _interopRequireDefault(_scrollHash);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar protoTypes = {\n to: _propTypes2.default.string.isRequired,\n containerId: _propTypes2.default.string,\n container: _propTypes2.default.object,\n activeClass: _propTypes2.default.string,\n activeStyle: _propTypes2.default.object,\n spy: _propTypes2.default.bool,\n horizontal: _propTypes2.default.bool,\n smooth: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.string]),\n offset: _propTypes2.default.number,\n delay: _propTypes2.default.number,\n isDynamic: _propTypes2.default.bool,\n onClick: _propTypes2.default.func,\n duration: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.func]),\n absolute: _propTypes2.default.bool,\n onSetActive: _propTypes2.default.func,\n onSetInactive: _propTypes2.default.func,\n ignoreCancelEvents: _propTypes2.default.bool,\n hashSpy: _propTypes2.default.bool,\n saveHashHistory: _propTypes2.default.bool,\n spyThrottle: _propTypes2.default.number\n};\n\nexports.default = function (Component, customScroller) {\n\n var scroller = customScroller || _scroller2.default;\n\n var Link = function (_React$PureComponent) {\n _inherits(Link, _React$PureComponent);\n\n function Link(props) {\n _classCallCheck(this, Link);\n\n var _this = _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).call(this, props));\n\n _initialiseProps.call(_this);\n\n _this.state = {\n active: false\n };\n return _this;\n }\n\n _createClass(Link, [{\n key: 'getScrollSpyContainer',\n value: function getScrollSpyContainer() {\n var containerId = this.props.containerId;\n var container = this.props.container;\n\n if (containerId && !container) {\n return document.getElementById(containerId);\n }\n\n if (container && container.nodeType) {\n return container;\n }\n\n return document;\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.spy || this.props.hashSpy) {\n var scrollSpyContainer = this.getScrollSpyContainer();\n\n if (!_scrollSpy2.default.isMounted(scrollSpyContainer)) {\n _scrollSpy2.default.mount(scrollSpyContainer, this.props.spyThrottle);\n }\n\n if (this.props.hashSpy) {\n if (!_scrollHash2.default.isMounted()) {\n _scrollHash2.default.mount(scroller);\n }\n _scrollHash2.default.mapContainer(this.props.to, scrollSpyContainer);\n }\n\n _scrollSpy2.default.addSpyHandler(this.spyHandler, scrollSpyContainer);\n\n this.setState({\n container: scrollSpyContainer\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _scrollSpy2.default.unmount(this.stateHandler, this.spyHandler);\n }\n }, {\n key: 'render',\n value: function render() {\n var className = \"\";\n\n if (this.state && this.state.active) {\n className = ((this.props.className || \"\") + \" \" + (this.props.activeClass || \"active\")).trim();\n } else {\n className = this.props.className;\n }\n\n var style = {};\n\n if (this.state && this.state.active) {\n style = _extends({}, this.props.style, this.props.activeStyle);\n } else {\n style = _extends({}, this.props.style);\n }\n\n var props = _extends({}, this.props);\n\n for (var prop in protoTypes) {\n if (props.hasOwnProperty(prop)) {\n delete props[prop];\n }\n }\n\n props.className = className;\n props.style = style;\n props.onClick = this.handleClick;\n\n return _react2.default.createElement(Component, props);\n }\n }]);\n\n return Link;\n }(_react2.default.PureComponent);\n\n var _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.scrollTo = function (to, props) {\n scroller.scrollTo(to, _extends({}, _this2.state, props));\n };\n\n this.handleClick = function (event) {\n\n /*\r\n * give the posibility to override onClick\r\n */\n\n if (_this2.props.onClick) {\n _this2.props.onClick(event);\n }\n\n /*\r\n * dont bubble the navigation\r\n */\n\n if (event.stopPropagation) event.stopPropagation();\n if (event.preventDefault) event.preventDefault();\n\n /*\r\n * do the magic!\r\n */\n _this2.scrollTo(_this2.props.to, _this2.props);\n };\n\n this.spyHandler = function (x, y) {\n var scrollSpyContainer = _this2.getScrollSpyContainer();\n\n if (_scrollHash2.default.isMounted() && !_scrollHash2.default.isInitialized()) {\n return;\n }\n\n var horizontal = _this2.props.horizontal;\n\n var to = _this2.props.to;\n var element = null;\n var isInside = void 0;\n var isOutside = void 0;\n\n if (horizontal) {\n var elemLeftBound = 0;\n var elemRightBound = 0;\n var containerLeft = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var containerCords = scrollSpyContainer.getBoundingClientRect();\n containerLeft = containerCords.left;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n if (!element) {\n return;\n }\n\n var cords = element.getBoundingClientRect();\n elemLeftBound = cords.left - containerLeft + x;\n elemRightBound = elemLeftBound + cords.width;\n }\n\n var offsetX = x - _this2.props.offset;\n isInside = offsetX >= Math.floor(elemLeftBound) && offsetX < Math.floor(elemRightBound);\n isOutside = offsetX < Math.floor(elemLeftBound) || offsetX >= Math.floor(elemRightBound);\n } else {\n var elemTopBound = 0;\n var elemBottomBound = 0;\n var containerTop = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var _containerCords = scrollSpyContainer.getBoundingClientRect();\n containerTop = _containerCords.top;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n if (!element) {\n return;\n }\n\n var _cords = element.getBoundingClientRect();\n elemTopBound = _cords.top - containerTop + y;\n elemBottomBound = elemTopBound + _cords.height;\n }\n\n var offsetY = y - _this2.props.offset;\n isInside = offsetY >= Math.floor(elemTopBound) && offsetY < Math.floor(elemBottomBound);\n isOutside = offsetY < Math.floor(elemTopBound) || offsetY >= Math.floor(elemBottomBound);\n }\n\n var activeLink = scroller.getActiveLink();\n\n if (isOutside) {\n if (to === activeLink) {\n scroller.setActiveLink(void 0);\n }\n\n if (_this2.props.hashSpy && _scrollHash2.default.getHash() === to) {\n var _props$saveHashHistor = _this2.props.saveHashHistory,\n saveHashHistory = _props$saveHashHistor === undefined ? false : _props$saveHashHistor;\n\n _scrollHash2.default.changeHash(\"\", saveHashHistory);\n }\n\n if (_this2.props.spy && _this2.state.active) {\n _this2.setState({ active: false });\n _this2.props.onSetInactive && _this2.props.onSetInactive(to, element);\n }\n }\n\n if (isInside && (activeLink !== to || _this2.state.active === false)) {\n scroller.setActiveLink(to);\n\n var _props$saveHashHistor2 = _this2.props.saveHashHistory,\n _saveHashHistory = _props$saveHashHistor2 === undefined ? false : _props$saveHashHistor2;\n\n _this2.props.hashSpy && _scrollHash2.default.changeHash(to, _saveHashHistory);\n\n if (_this2.props.spy) {\n _this2.setState({ active: true });\n _this2.props.onSetActive && _this2.props.onSetActive(to, element);\n }\n }\n };\n };\n\n ;\n\n Link.propTypes = protoTypes;\n\n Link.defaultProps = { offset: 0 };\n\n return Link;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _lodash = require('lodash.throttle');\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The eventHandler will execute at a rate of 15fps by default\nvar eventThrottler = function eventThrottler(eventHandler) {\n var throttleAmount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 66;\n return (0, _lodash2.default)(eventHandler, throttleAmount);\n};\n\nvar scrollSpy = {\n\n spyCallbacks: [],\n spySetState: [],\n scrollSpyContainers: [],\n\n mount: function mount(scrollSpyContainer, throttle) {\n if (scrollSpyContainer) {\n var eventHandler = eventThrottler(function (event) {\n scrollSpy.scrollHandler(scrollSpyContainer);\n }, throttle);\n scrollSpy.scrollSpyContainers.push(scrollSpyContainer);\n (0, _passiveEventListeners.addPassiveEventListener)(scrollSpyContainer, 'scroll', eventHandler);\n }\n },\n isMounted: function isMounted(scrollSpyContainer) {\n return scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer) !== -1;\n },\n currentPositionX: function currentPositionX(scrollSpyContainer) {\n if (scrollSpyContainer === document) {\n var supportPageOffset = window.pageYOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;\n } else {\n return scrollSpyContainer.scrollLeft;\n }\n },\n currentPositionY: function currentPositionY(scrollSpyContainer) {\n if (scrollSpyContainer === document) {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n } else {\n return scrollSpyContainer.scrollTop;\n }\n },\n scrollHandler: function scrollHandler(scrollSpyContainer) {\n var callbacks = scrollSpy.scrollSpyContainers[scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer)].spyCallbacks || [];\n callbacks.forEach(function (c) {\n return c(scrollSpy.currentPositionX(scrollSpyContainer), scrollSpy.currentPositionY(scrollSpyContainer));\n });\n },\n addStateHandler: function addStateHandler(handler) {\n scrollSpy.spySetState.push(handler);\n },\n addSpyHandler: function addSpyHandler(handler, scrollSpyContainer) {\n var container = scrollSpy.scrollSpyContainers[scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer)];\n\n if (!container.spyCallbacks) {\n container.spyCallbacks = [];\n }\n\n container.spyCallbacks.push(handler);\n\n handler(scrollSpy.currentPositionX(scrollSpyContainer), scrollSpy.currentPositionY(scrollSpyContainer));\n },\n updateStates: function updateStates() {\n scrollSpy.spySetState.forEach(function (s) {\n return s();\n });\n },\n unmount: function unmount(stateHandler, spyHandler) {\n scrollSpy.scrollSpyContainers.forEach(function (c) {\n return c.spyCallbacks && c.spyCallbacks.length && c.spyCallbacks.indexOf(spyHandler) > -1 && c.spyCallbacks.splice(c.spyCallbacks.indexOf(spyHandler), 1);\n });\n\n if (scrollSpy.spySetState && scrollSpy.spySetState.length && scrollSpy.spySetState.indexOf(stateHandler) > -1) {\n scrollSpy.spySetState.splice(scrollSpy.spySetState.indexOf(stateHandler), 1);\n }\n\n document.removeEventListener('scroll', scrollSpy.scrollHandler);\n },\n\n\n update: function update() {\n return scrollSpy.scrollSpyContainers.forEach(function (c) {\n return scrollSpy.scrollHandler(c);\n });\n }\n};\n\nexports.default = scrollSpy;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _animateScroll = require('./animate-scroll');\n\nvar _animateScroll2 = _interopRequireDefault(_animateScroll);\n\nvar _scrollEvents = require('./scroll-events');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar __mapped = {};\nvar __activeLink = void 0;\n\nexports.default = {\n\n unmount: function unmount() {\n __mapped = {};\n },\n\n register: function register(name, element) {\n __mapped[name] = element;\n },\n\n unregister: function unregister(name) {\n delete __mapped[name];\n },\n\n get: function get(name) {\n return __mapped[name] || document.getElementById(name) || document.getElementsByName(name)[0] || document.getElementsByClassName(name)[0];\n },\n\n setActiveLink: function setActiveLink(link) {\n return __activeLink = link;\n },\n\n getActiveLink: function getActiveLink() {\n return __activeLink;\n },\n\n scrollTo: function scrollTo(to, props) {\n\n var target = this.get(to);\n\n if (!target) {\n console.warn(\"target Element not found\");\n return;\n }\n\n props = _extends({}, props, { absolute: false });\n\n var containerId = props.containerId;\n var container = props.container;\n\n var containerElement = void 0;\n if (containerId) {\n containerElement = document.getElementById(containerId);\n } else if (container && container.nodeType) {\n containerElement = container;\n } else {\n containerElement = document;\n }\n\n props.absolute = true;\n\n var horizontal = props.horizontal;\n var scrollOffset = _utils2.default.scrollOffset(containerElement, target, horizontal) + (props.offset || 0);\n\n /*\r\n * if animate is not provided just scroll into the view\r\n */\n if (!props.smooth) {\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](to, target);\n }\n\n if (containerElement === document) {\n if (props.horizontal) {\n window.scrollTo(scrollOffset, 0);\n } else {\n window.scrollTo(0, scrollOffset);\n }\n } else {\n containerElement.scrollTop = scrollOffset;\n }\n\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](to, target);\n }\n\n return;\n }\n\n /*\r\n * Animate scrolling\r\n */\n\n _animateScroll2.default.animateTopScroll(scrollOffset, props, to, target);\n }\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n /*\r\n * https://github.com/oblador/angular-scroll (duScrollDefaultEasing)\r\n */\n defaultEasing: function defaultEasing(x) {\n if (x < 0.5) {\n return Math.pow(x * 2, 2) / 2;\n }\n return 1 - Math.pow((1 - x) * 2, 2) / 2;\n },\n /*\r\n * https://gist.github.com/gre/1650294\r\n */\n // no easing, no acceleration\n linear: function linear(x) {\n return x;\n },\n // accelerating from zero velocity\n easeInQuad: function easeInQuad(x) {\n return x * x;\n },\n // decelerating to zero velocity\n easeOutQuad: function easeOutQuad(x) {\n return x * (2 - x);\n },\n // acceleration until halfway, then deceleration\n easeInOutQuad: function easeInOutQuad(x) {\n return x < .5 ? 2 * x * x : -1 + (4 - 2 * x) * x;\n },\n // accelerating from zero velocity \n easeInCubic: function easeInCubic(x) {\n return x * x * x;\n },\n // decelerating to zero velocity π\n easeOutCubic: function easeOutCubic(x) {\n return --x * x * x + 1;\n },\n // acceleration until halfway, then deceleration \n easeInOutCubic: function easeInOutCubic(x) {\n return x < .5 ? 4 * x * x * x : (x - 1) * (2 * x - 2) * (2 * x - 2) + 1;\n },\n // accelerating from zero velocity \n easeInQuart: function easeInQuart(x) {\n return x * x * x * x;\n },\n // decelerating to zero velocity \n easeOutQuart: function easeOutQuart(x) {\n return 1 - --x * x * x * x;\n },\n // acceleration until halfway, then deceleration\n easeInOutQuart: function easeInOutQuart(x) {\n return x < .5 ? 8 * x * x * x * x : 1 - 8 * --x * x * x * x;\n },\n // accelerating from zero velocity\n easeInQuint: function easeInQuint(x) {\n return x * x * x * x * x;\n },\n // decelerating to zero velocity\n easeOutQuint: function easeOutQuint(x) {\n return 1 + --x * x * x * x * x;\n },\n // acceleration until halfway, then deceleration \n easeInOutQuint: function easeInOutQuint(x) {\n return x < .5 ? 16 * x * x * x * x * x : 1 + 16 * --x * x * x * x * x;\n }\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar updateHash = function updateHash(hash, historyUpdate) {\n var hashVal = hash.indexOf(\"#\") === 0 ? hash.substring(1) : hash;\n var hashToUpdate = hashVal ? \"#\" + hashVal : \"\";\n var curLoc = window && window.location;\n var urlToPush = hashToUpdate ? curLoc.pathname + curLoc.search + hashToUpdate : curLoc.pathname + curLoc.search;\n historyUpdate ? history.pushState(history.state, \"\", urlToPush) : history.replaceState(history.state, \"\", urlToPush);\n};\n\nvar getHash = function getHash() {\n return window.location.hash.replace(/^#/, \"\");\n};\n\nvar filterElementInContainer = function filterElementInContainer(container) {\n return function (element) {\n return container.contains ? container != element && container.contains(element) : !!(container.compareDocumentPosition(element) & 16);\n };\n};\n\nvar isPositioned = function isPositioned(element) {\n return getComputedStyle(element).position !== \"static\";\n};\n\nvar getElementOffsetInfoUntil = function getElementOffsetInfoUntil(element, predicate) {\n var offsetTop = element.offsetTop;\n var currentOffsetParent = element.offsetParent;\n\n while (currentOffsetParent && !predicate(currentOffsetParent)) {\n offsetTop += currentOffsetParent.offsetTop;\n currentOffsetParent = currentOffsetParent.offsetParent;\n }\n\n return { offsetTop: offsetTop, offsetParent: currentOffsetParent };\n};\n\nvar scrollOffset = function scrollOffset(c, t, horizontal) {\n if (horizontal) {\n return c === document ? t.getBoundingClientRect().left + (window.scrollX || window.pageXOffset) : getComputedStyle(c).position !== \"static\" ? t.offsetLeft : t.offsetLeft - c.offsetLeft;\n } else {\n if (c === document) {\n return t.getBoundingClientRect().top + (window.scrollY || window.pageYOffset);\n }\n\n // The offsetParent of an element, according to MDN, is its nearest positioned\n // (an element whose position is anything other than static) ancestor. The offsetTop\n // of an element is taken with respect to its offsetParent which may not neccessarily\n // be its parentElement except the parent itself is positioned.\n\n // So if containerElement is positioned, then it must be an offsetParent somewhere\n // If it happens that targetElement is a descendant of the containerElement, and there\n // is not intermediate positioned element between the two of them, i.e.\n // targetElement\"s offsetParent is the same as the containerElement, then the\n // distance between the two will be the offsetTop of the targetElement.\n // If, on the other hand, there are intermediate positioned elements between the\n // two entities, the distance between the targetElement and the containerElement\n // will be the accumulation of the offsetTop of the element and that of its\n // subsequent offsetParent until the containerElement is reached, since it\n // will also be an offsetParent at some point due to the fact that it is positioned.\n\n // If the containerElement is not positioned, then it can\"t be an offsetParent,\n // which means that the offsetTop of the targetElement would not be with respect to it.\n // However, if the two of them happen to have the same offsetParent, then\n // the distance between them will be the difference between their offsetTop\n // since they are both taken with respect to the same entity.\n // The last resort would be to accumulate their offsetTop until a common\n // offsetParent is reached (usually the document) and taking the difference\n // between the accumulated offsetTops\n\n if (isPositioned(c)) {\n if (t.offsetParent !== c) {\n var isContainerElementOrDocument = function isContainerElementOrDocument(e) {\n return e === c || e === document;\n };\n\n var _getElementOffsetInfo = getElementOffsetInfoUntil(t, isContainerElementOrDocument),\n offsetTop = _getElementOffsetInfo.offsetTop,\n offsetParent = _getElementOffsetInfo.offsetParent;\n\n if (offsetParent !== c) {\n throw new Error(\"Seems containerElement is not an ancestor of the Element\");\n }\n\n return offsetTop;\n }\n\n return t.offsetTop;\n }\n\n if (t.offsetParent === c.offsetParent) {\n return t.offsetTop - c.offsetTop;\n }\n\n var isDocument = function isDocument(e) {\n return e === document;\n };\n return getElementOffsetInfoUntil(t, isDocument).offsetTop - getElementOffsetInfoUntil(c, isDocument).offsetTop;\n }\n};\n\nexports.default = {\n updateHash: updateHash,\n getHash: getHash,\n filterElementInContainer: filterElementInContainer,\n scrollOffset: scrollOffset\n};","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"45297a17\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"website:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkwebsite\"] = self[\"webpackChunkwebsite\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n // We keep the raw Response for redirects so we can return it verbatim\n response: Response;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface HandlerResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData\n status?: number;\n}\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\ntype DataFunctionReturnValue = Promise | DataFunctionValue;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (\n args: LoaderFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (\n args: ActionFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionStatus?: number;\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\nexport interface DataStrategyMatch\n extends AgnosticRouteMatch {\n shouldLoad: boolean;\n resolve: (\n handlerOverride?: (\n handler: (ctx?: unknown) => DataFunctionReturnValue\n ) => Promise\n ) => Promise;\n}\n\nexport interface DataStrategyFunctionArgs\n extends DataFunctionArgs {\n matches: DataStrategyMatch[];\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise;\n}\n\nexport interface AgnosticPatchRoutesOnMissFunction<\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> {\n (opts: {\n path: string;\n matches: M[];\n patch: (routeId: string | null, children: AgnosticRouteObject[]) => void;\n }): void | Promise;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction | boolean;\n action?: ActionFunction | boolean;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: string[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\n\nexport function matchRoutesImpl<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename: string,\n allowPartial: boolean\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(\n branches[i],\n decoded,\n allowPartial\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string,\n allowPartial = false\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n let route = meta.route;\n\n if (\n !match &&\n end &&\n allowPartial &&\n !routesMeta[routesMeta.length - 1].route.index\n ) {\n match = matchPath(\n {\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false,\n },\n remainingPathname\n );\n }\n\n if (!match) {\n return null;\n }\n\n Object.assign(matchedParams, match.params);\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nexport function decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DataStrategyMatch,\n AgnosticRouteObject,\n DataResult,\n DataStrategyFunction,\n DataStrategyFunctionArgs,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n HandlerResult,\n ImmutableRouteKey,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n AgnosticPatchRoutesOnMissFunction,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n matchRoutesImpl,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE DO NOT USE\n *\n * Patch additional children routes into an existing parent route\n * @param routeId The parent route id or a callback function accepting `patch`\n * to perform batch patching\n * @param children The additional children routes\n */\n patchRoutes(routeId: string | null, children: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n v7_skipActionErrorRevalidation: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n unstable_patchRoutesOnMiss?: AgnosticPatchRoutesOnMissFunction;\n unstable_dataStrategy?: DataStrategyFunction;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: {\n routeId?: string;\n requestContext?: unknown;\n unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n unstable_viewTransitionOpts?: ViewTransitionOpts;\n unstable_flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n unstable_viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ntype PendingActionResult = [string, SuccessResult | ErrorResult];\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * Tuple for the returned or thrown value from the current action. The routeId\n * is the action route for success and the bubbled boundary route for errors.\n */\n pendingActionResult?: PendingActionResult;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.unstable_dataStrategy || defaultDataStrategy;\n let patchRoutesOnMissImpl = init.unstable_patchRoutesOnMiss;\n\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n v7_skipActionErrorRevalidation: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null && !patchRoutesOnMissImpl) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n // In SPA apps, if the user provided a patchRoutesOnMiss implementation and\n // our initial match is a splat route, clear them out so we run through lazy\n // discovery on hydration in case there's a more accurate lazy route match.\n // In SSR apps (with `hydrationData`), we expect that the server will send\n // up the proper matched routes so we don't want to run lazy discovery on\n // initial hydration and want to hydrate into the splat route.\n if (initialMatches && patchRoutesOnMissImpl && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(\n initialMatches,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n\n let initialized: boolean;\n if (!initialMatches) {\n // We need to run patchRoutesOnMiss in initialize()\n initialized = false;\n initialMatches = [];\n } else if (initialMatches.some((m) => m.route.lazy)) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!initialMatches.some((m) => m.route.loader)) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n let isRouteInitialized = (m: AgnosticDataRouteMatch) => {\n // No loader, nothing to initialize\n if (!m.route.loader) {\n return true;\n }\n // Explicitly opting-in to running on hydration\n if (\n typeof m.route.loader === \"function\" &&\n m.route.loader.hydrate === true\n ) {\n return false;\n }\n // Otherwise, initialized if hydrated with data or an error\n return (\n (loaderData && loaderData[m.route.id] !== undefined) ||\n (errors && errors[m.route.id] !== undefined)\n );\n };\n\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches.slice(0, idx + 1).every(isRouteInitialized);\n } else {\n initialized = initialMatches.every(isRouteInitialized);\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Map of pending patchRoutesOnMiss() promises (keyed by path/matches) so\n // that we only kick them off once for a given combo\n let pendingPatchRoutes = new Map<\n string,\n ReturnType\n >();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionResult: PendingActionResult | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: ResultType.error, error: opts.pendingError },\n ];\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n fogOfWar.active,\n { replace: opts.replace, flushSync }\n );\n\n if (actionResult.shortCircuited) {\n return;\n }\n\n // If we received a 404 from handleAction, it's because we couldn't lazily\n // discover the destination route so we don't want to call loaders\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (\n isErrorResult(result) &&\n isRouteErrorResponse(result.error) &&\n result.error.status === 404\n ) {\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error,\n },\n });\n return;\n }\n }\n\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // No need to do fog of war matching again on loader execution\n fogOfWar.active = false;\n\n // Create a GET request for the loaders\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n\n // Call loaders\n let {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors,\n } = await handleLoaders(\n request,\n location,\n matches,\n fogOfWar.active,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: updatedMatches || matches,\n ...getActionDataForCommit(pendingActionResult),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let { boundaryId, error } = handleDiscoverRouteError(\n location.pathname,\n discoverResult\n );\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [\n boundaryId,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else if (!discoverResult.matches) {\n let { notFoundMatches, error, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n pendingActionResult: [\n route.id,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches\n );\n result = results[0];\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(\n result.response.headers.get(\"Location\")!,\n new URL(request.url),\n basename\n );\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, {\n submission,\n replace,\n });\n return { shortCircuited: true };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions to the current location are REPLACE\n // navigations, but if the action threw an error that'll be rendered in\n // an errorElement, we fall back to PUSH so that the user can use the\n // back button to get back to the pre-submission form location to try\n // again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n matches,\n pendingActionResult: [boundaryMatch.route.id, result],\n };\n }\n\n return {\n matches,\n pendingActionResult: [actionMatch.route.id, result],\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionResult?: PendingActionResult\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n let shouldUpdateNavigationState =\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration);\n\n // When fog of war is enabled, we enter our `loading` state earlier so we\n // can discover new routes during the `loading` state. We skip this if\n // we've already run actions since we would have done our matching already.\n // If the children() function threw then, we want to proceed with the\n // partial matches it discovered.\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData !== undefined ? { actionData } : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let { boundaryId, error } = handleDiscoverRouteError(\n location.pathname,\n discoverResult\n );\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: error,\n },\n };\n } else if (!discoverResult.matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionResult\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? { [pendingActionResult[0]]: pendingActionResult[1].error }\n : null,\n ...getActionDataForCommit(pendingActionResult),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n if (shouldUpdateNavigationState) {\n let updates: Partial = {};\n if (!isFogOfWar) {\n // Only update navigation/actionNData if we didn't already do it above\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== undefined) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, { flushSync });\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(request, redirect.result, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingActionResult,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n // During partial hydration, preserve SSR errors for routes that don't re-run\n if (future.v7_partialHydration && initialHydration && state.errors) {\n Object.entries(state.errors)\n .filter(([id]) => !matchesToLoad.some((m) => m.route.id === id))\n .forEach(([routeId, error]) => {\n errors = Object.assign(errors || {}, { [routeId]: error });\n });\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n matches,\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getUpdatedActionData(\n pendingActionResult: PendingActionResult | undefined\n ): Record | null | undefined {\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n return {\n [pendingActionResult[0]]: pendingActionResult[1].data as any,\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n\n function getUpdatedRevalidatingFetchers(\n revalidatingFetchers: RevalidatingFetcher[]\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n return new Map(state.fetchers);\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n function detectAndHandle405Error(m: AgnosticDataRouteMatch) {\n if (!m.route.action && !m.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return true;\n }\n return false;\n }\n\n if (!isFogOfWar && detectAndHandle405Error(match)) {\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n requestMatches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n let { error } = handleDiscoverRouteError(path, discoverResult);\n setFetcherError(key, routeId, error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n requestMatches = discoverResult.matches;\n match = getTargetMatch(requestMatches, path);\n\n if (detectAndHandle405Error(match)) {\n return;\n }\n }\n }\n\n // Call the action for the fetcher\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\n \"action\",\n fetchRequest,\n [match],\n requestMatches\n );\n let actionResult = actionResults[0];\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, {\n fetcherSubmission: submission,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n [match.route.id, actionResult]\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(revalidationRequest, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n let { error } = handleDiscoverRouteError(path, discoverResult);\n setFetcherError(key, routeId, error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n matches = discoverResult.matches;\n match = getTargetMatch(matches, path);\n }\n }\n\n // Call the loader for this fetcher route match\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\n \"loader\",\n fetchRequest,\n [match],\n matches\n );\n let result = results[0];\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n request: Request,\n redirect: RedirectResult,\n {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true,\n });\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.response.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[]\n ): Promise {\n try {\n let results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n request,\n matchesToLoad,\n matches,\n manifest,\n mapRouteProperties\n );\n\n return await Promise.all(\n results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result as Response;\n return {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n matchesToLoad[i].route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n }\n\n return convertHandlerResultToDataResult(result);\n })\n );\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n return matchesToLoad.map(() => ({\n type: ResultType.error,\n error: e,\n }));\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n let [loaderResults, ...fetcherResults] = await Promise.all([\n matchesToLoad.length\n ? callDataStrategy(\"loader\", request, matchesToLoad, matches)\n : [],\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n let fetcherRequest = createClientSideRequest(\n init.history,\n f.path,\n f.controller.signal\n );\n return callDataStrategy(\n \"loader\",\n fetcherRequest,\n [f.match],\n f.matches\n ).then((r) => r[0]);\n } else {\n return Promise.resolve({\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n });\n }\n }),\n ]);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return {\n loaderResults,\n fetcherResults,\n };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function handleNavigational404(pathname: string) {\n let error = getInternalRouterError(404, { pathname });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { matches, route } = getShortCircuitMatches(routesToUse);\n\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n\n return { notFoundMatches: matches, route, error };\n }\n\n function handleDiscoverRouteError(\n pathname: string,\n discoverResult: DiscoverRoutesErrorResult\n ) {\n return {\n boundaryId: findNearestBoundary(discoverResult.partialMatches).route.id,\n error: getInternalRouterError(400, {\n type: \"route-discovery\",\n pathname,\n message:\n discoverResult.error != null && \"message\" in discoverResult.error\n ? discoverResult.error\n : String(discoverResult.error),\n }),\n };\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function checkFogOfWar(\n matches: AgnosticDataRouteMatch[] | null,\n routesToUse: AgnosticDataRouteObject[],\n pathname: string\n ): { active: boolean; matches: AgnosticDataRouteMatch[] | null } {\n if (patchRoutesOnMissImpl) {\n if (!matches) {\n let fogMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n return { active: true, matches: fogMatches || [] };\n } else {\n let leafRoute = matches[matches.length - 1].route;\n if (\n leafRoute.path &&\n (leafRoute.path === \"*\" || leafRoute.path.endsWith(\"/*\"))\n ) {\n // If we matched a splat, it might only be because we haven't yet fetched\n // the children that would match with a higher score, so let's fetch\n // around and find out\n let partialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: partialMatches };\n }\n }\n }\n\n return { active: false, matches: null };\n }\n\n type DiscoverRoutesSuccessResult = {\n type: \"success\";\n matches: AgnosticDataRouteMatch[] | null;\n };\n type DiscoverRoutesErrorResult = {\n type: \"error\";\n error: any;\n partialMatches: AgnosticDataRouteMatch[];\n };\n type DiscoverRoutesAbortedResult = { type: \"aborted\" };\n type DiscoverRoutesResult =\n | DiscoverRoutesSuccessResult\n | DiscoverRoutesErrorResult\n | DiscoverRoutesAbortedResult;\n\n async function discoverRoutes(\n matches: AgnosticDataRouteMatch[],\n pathname: string,\n signal: AbortSignal\n ): Promise {\n let partialMatches: AgnosticDataRouteMatch[] | null = matches;\n let route =\n partialMatches.length > 0\n ? partialMatches[partialMatches.length - 1].route\n : null;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n try {\n await loadLazyRouteChildren(\n patchRoutesOnMissImpl!,\n pathname,\n partialMatches,\n routesToUse,\n manifest,\n mapRouteProperties,\n pendingPatchRoutes,\n signal\n );\n } catch (e) {\n return { type: \"error\", error: e, partialMatches };\n } finally {\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity so when we `updateState` at the end of\n // this navigation/fetch `router.routes` will be a new identity and\n // trigger a re-run of memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n }\n }\n\n if (signal.aborted) {\n return { type: \"aborted\" };\n }\n\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n let matchedSplat = false;\n if (newMatches) {\n let leafRoute = newMatches[newMatches.length - 1].route;\n\n if (leafRoute.index) {\n // If we found an index route, we can stop\n return { type: \"success\", matches: newMatches };\n }\n\n if (leafRoute.path && leafRoute.path.length > 0) {\n if (leafRoute.path === \"*\") {\n // If we found a splat route, we can't be sure there's not a\n // higher-scoring route down some partial matches trail so we need\n // to check that out\n matchedSplat = true;\n } else {\n // If we found a non-splat route, we can stop\n return { type: \"success\", matches: newMatches };\n }\n }\n }\n\n let newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n // If we are no longer partially matching anything, this was either a\n // legit splat match above, or it's a 404. Also avoid loops if the\n // second pass results in the same partial matches\n if (\n !newPartialMatches ||\n partialMatches.map((m) => m.route.id).join(\"-\") ===\n newPartialMatches.map((m) => m.route.id).join(\"-\")\n ) {\n return { type: \"success\", matches: matchedSplat ? newMatches : null };\n }\n\n partialMatches = newPartialMatches;\n route = partialMatches[partialMatches.length - 1].route;\n if (route.path === \"*\") {\n // The splat is still our most accurate partial, so run with it\n return { type: \"success\", matches: partialMatches };\n }\n }\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n function patchRoutes(\n routeId: string | null,\n children: AgnosticRouteObject[]\n ): void {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n manifest,\n mapRouteProperties\n );\n\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity and trigger a reflow via `updateState`\n // to re-run memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\n }\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n patchRoutes,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(\n request: Request,\n {\n requestContext,\n skipLoaderErrorBubbling,\n unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n unstable_dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null\n );\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n routeId?: string;\n unstable_dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n unstable_dataStrategy || null,\n false,\n match\n );\n\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `HandlerResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isHandlerResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches,\n isRouteRequest,\n requestContext,\n unstable_dataStrategy\n );\n result = results[0];\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")!,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling\n ? actionMatch\n : findNearestBoundary(matches, actionMatch.route.id);\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n null,\n [boundaryMatch.route.id, result]\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : result.statusCode != null\n ? result.statusCode\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n null\n );\n\n return {\n ...context,\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionHeaders: result.headers\n ? { [actionMatch.route.id]: result.headers }\n : {},\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null,\n pendingActionResult?: PendingActionResult\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : pendingActionResult && isErrorResult(pendingActionResult[1])\n ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0])\n : matches;\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? {\n [pendingActionResult[0]]: pendingActionResult[1].error,\n }\n : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await callDataStrategy(\n \"loader\",\n request,\n matchesToLoad,\n matches,\n isRouteRequest,\n requestContext,\n unstable_dataStrategy\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionResult,\n activeDeferreds,\n skipLoaderErrorBubbling\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n isRouteRequest: boolean,\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null\n ): Promise {\n let results = await callDataStrategyImpl(\n unstable_dataStrategy || defaultDataStrategy,\n type,\n request,\n matchesToLoad,\n matches,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n return await Promise.all(\n results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result as Response;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n matchesToLoad[i].route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n );\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n\n return convertHandlerResultToDataResult(result);\n })\n );\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isInitialLoad: boolean,\n skipActionErrorRevalidation: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionResult?: PendingActionResult\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingActionResult\n ? isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : pendingActionResult[1].data\n : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[0]\n : undefined;\n let boundaryMatches = boundaryId\n ? getLoaderMatchesUntilBoundary(matches, boundaryId)\n : matches;\n\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult\n ? pendingActionResult[1].statusCode\n : undefined;\n let shouldSkipRevalidation =\n skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (isInitialLoad) {\n if (typeof route.loader !== \"function\" || route.loader.hydrate) {\n return true;\n }\n return (\n state.loaderData[route.id] === undefined &&\n // Don't re-run if the loader ran and threw an error\n (!state.errors || state.errors[route.id] === undefined)\n );\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n isInitialLoad ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Idempotent utility to execute patchRoutesOnMiss() to lazily load route\n * definitions and update the routes/routeManifest\n */\nasync function loadLazyRouteChildren(\n patchRoutesOnMissImpl: AgnosticPatchRoutesOnMissFunction,\n path: string,\n matches: AgnosticDataRouteMatch[],\n routes: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n pendingRouteChildren: Map>,\n signal: AbortSignal\n) {\n let key = [path, ...matches.map((m) => m.route.id)].join(\"-\");\n try {\n let pending = pendingRouteChildren.get(key);\n if (!pending) {\n pending = patchRoutesOnMissImpl({\n path,\n matches,\n patch: (routeId, children) => {\n if (!signal.aborted) {\n patchRoutesImpl(\n routeId,\n children,\n routes,\n manifest,\n mapRouteProperties\n );\n }\n },\n });\n pendingRouteChildren.set(key, pending);\n }\n\n if (pending && isPromise(pending)) {\n await pending;\n }\n } finally {\n pendingRouteChildren.delete(key);\n }\n}\n\nfunction patchRoutesImpl(\n routeId: string | null,\n children: AgnosticRouteObject[],\n routesToUse: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction\n) {\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n let dataChildren = convertRoutesToDataRoutes(\n children,\n mapRouteProperties,\n [routeId, \"patch\", String(route.children?.length || \"0\")],\n manifest\n );\n if (route.children) {\n route.children.push(...dataChildren);\n } else {\n route.children = dataChildren;\n }\n } else {\n let dataChildren = convertRoutesToDataRoutes(\n children,\n mapRouteProperties,\n [\"patch\", String(routesToUse.length || \"0\")],\n manifest\n );\n routesToUse.push(...dataChildren);\n }\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nfunction defaultDataStrategy(\n opts: DataStrategyFunctionArgs\n): ReturnType {\n return Promise.all(opts.matches.map((m) => m.resolve()));\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise {\n let routeIdsToLoad = matchesToLoad.reduce(\n (acc, m) => acc.add(m.route.id),\n new Set()\n );\n let loadedMatches = new Set();\n\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: matches.map((match) => {\n let shouldLoad = routeIdsToLoad.has(match.route.id);\n // `resolve` encapsulates the route.lazy, executing the\n // loader/action, and mapping return values/thrown errors to a\n // HandlerResult. Users can pass a callback to take fine-grained control\n // over the execution of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = (handlerOverride) => {\n loadedMatches.add(match.route.id);\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n manifest,\n mapRouteProperties,\n handlerOverride,\n requestContext\n )\n : Promise.resolve({ type: ResultType.data, result: undefined });\n };\n\n return {\n ...match,\n shouldLoad,\n resolve,\n };\n }),\n request,\n params: matches[0].params,\n context: requestContext,\n });\n\n // Throw if any loadRoute implementations not called since they are what\n // ensures a route is fully loaded\n matches.forEach((m) =>\n invariant(\n loadedMatches.has(m.route.id),\n `\\`match.resolve()\\` was not called for route id \"${m.route.id}\". ` +\n \"You must call `match.resolve()` on every match passed to \" +\n \"`dataStrategy` to ensure all routes are properly loaded.\"\n )\n );\n\n // Filter out any middleware-only matches for which we didn't need to run handlers\n return results.filter((_, i) => routeIdsToLoad.has(matches[i].route.id));\n}\n\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n handlerOverride: Parameters[0],\n staticContext?: unknown\n): Promise {\n let result: HandlerResult;\n let onReject: (() => void) | undefined;\n\n let runHandler = (\n handler: AgnosticRouteObject[\"loader\"] | AgnosticRouteObject[\"action\"]\n ): Promise => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n // This will never resolve so safe to type it as Promise to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n let actualHandler = (ctx?: unknown) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean ` +\n `\"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n params: match.params,\n context: staticContext,\n },\n ...(ctx !== undefined ? [ctx] : [])\n );\n };\n\n let handlerPromise: Promise;\n if (handlerOverride) {\n handlerPromise = handlerOverride((ctx: unknown) => actualHandler(ctx));\n } else {\n handlerPromise = (async () => {\n try {\n let val = await actualHandler();\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n }\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value!;\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, result: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result.result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // HandlerResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return { type: ResultType.error, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n return result;\n}\n\nasync function convertHandlerResultToDataResult(\n handlerResult: HandlerResult\n): Promise {\n let { result, type, status } = handlerResult;\n\n if (isResponse(result)) {\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : status,\n };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result, statusCode: status };\n}\n\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(\n response: Response,\n request: Request,\n routeId: string,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n v7_relativeSplatPath: boolean\n) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n response.headers.set(\"Location\", location);\n }\n\n return response;\n}\n\nfunction normalizeRedirectLocation(\n location: string,\n currentUrl: URL,\n basename: string\n): string {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\")\n ? new URL(currentUrl.protocol + normalizedLocation)\n : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingActionResult: PendingActionResult | undefined,\n activeDeferreds: Map,\n skipLoaderErrorBubbling: boolean\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n let pendingError =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : undefined;\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n loaderData[pendingActionResult[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingActionResult: PendingActionResult | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionResult,\n activeDeferreds,\n false // This method is only called client side so we always want to bubble\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\nfunction getActionDataForCommit(\n pendingActionResult: PendingActionResult | undefined\n) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1])\n ? {\n // Clear out prior actionData on errors\n actionData: {},\n }\n : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data,\n },\n };\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n message,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\" | \"route-discovery\";\n message?: string;\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (type === \"route-discovery\") {\n errorMessage =\n `Unable to match URL \"${pathname}\" - the \\`unstable_patchRoutesOnMiss()\\` ` +\n `function threw the following error:\\n${message}`;\n } else if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isPromise(val: unknown): val is Promise {\n return typeof val === \"object\" && val != null && \"then\" in val;\n}\n\nfunction isHandlerResult(result: unknown): result is HandlerResult {\n return (\n result != null &&\n typeof result === \"object\" &&\n \"type\" in result &&\n \"result\" in result &&\n (result.type === ResultType.data || result.type === ResultType.error)\n );\n}\n\nfunction isRedirectHandlerResult(result: HandlerResult) {\n return (\n isResponse(result.result) && redirectStatusCodes.has(result.result.status)\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject\n // Omit `future` since those can be pulled from the `router`\n // `NavigationContext` needs future since it doesn't have a `router` in all cases\n extends Omit {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n future: {\n v7_relativeSplatPath: boolean;\n };\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_decodePath as decodePath,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, decodePath(pathname)),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, future, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { future } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"],\n future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n // Determine the remaining pathname by removing the # of URL segments the\n // parentPathnameBase has, instead of removing based on character count.\n // This is because we can't guarantee that incoming/outgoing encodings/\n // decodings will match exactly.\n // We decode paths before matching on a per-segment basis with\n // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n // match what `window.location.pathname` would reflect. Those don't 100%\n // align when it comes to encoded URI characters such as % and &.\n //\n // So we may end up with:\n // pathname: \"/descendant/a%25b/match\"\n // parentPathnameBase: \"/descendant/a%b\"\n //\n // And the direct substring removal approach won't work :/\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined ||\n matches[matches.length - 1].route.lazy !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState,\n future\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error !== undefined ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null,\n future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id] !== undefined\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n\n if (match.route.id) {\n let { loaderData, errors } = dataRouterState;\n let needsToRunLoader =\n match.route.loader &&\n loaderData[match.route.id] === undefined &&\n (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error: any;\n let shouldRenderHydrateFallback = false;\n let errorElement: React.ReactNode | null = null;\n let hydrateFallbackElement: React.ReactNode | null = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n RouterSubscriber,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n v7_relativeSplatPath: boolean;\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n // Only accept future flags relevant to rendering behavior\n // routing flags should be accessed via router.future\n future?: Partial>;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n\n let setState = React.useCallback(\n (newState: RouterState) => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n },\n [setStateImpl, v7_startTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n React.useEffect(() => {\n warning(\n fallbackElement == null || !router.future.v7_partialHydration,\n \"`` is deprecated when using \" +\n \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n );\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a