{"version":3,"file":"index.js","mappings":";;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;;;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC9KA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC3EA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;;;;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AAAA;AAAA;AAEA;;;;;;;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AAAA;AAAA;AAEA;;;;;;;;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;;;;;;;;;;;;;;;;;ACzCA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;ACnBA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;;;;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;;;;;;;;;;;;;;;ACXA;AACA;AACA;AACA;AAAA;AAAA;AAEA;;;;;;;;;;;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;;;;;;;;;;;;;;ACrDA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC3ZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1DA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAQA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACtUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC5IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;;;;;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC7OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC5CA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC5BA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACpLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AClNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACxNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AChSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;;;;;;;;;;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACrDA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACxZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAIA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAIA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACvWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC5fA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;;;;;;;;;;;;;;;;AC9GA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACjRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACjNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;;;;;;;;;;;;;;;;;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACnJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AChQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;;;;;;;;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACztBA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAGA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;;;;;;;;;;;;;;;AC5+DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChHA;AACA;;;;;;;;;;;;;;;ACDA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxVA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAGA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACzsCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC5JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACnDA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC9KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACncA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAIA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC7IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAIA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACnTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AChSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACxXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;;;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAIA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAIA;AAIA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AAIA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;AAIA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAIA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAoCA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;AC13SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACz2CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAGA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AChkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAIA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAGA;;;;;;;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AASA;;;;;;;;;;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAIA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAGA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAGA;;;;;;;;;;;;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAGA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;;;;;;;;;;;;;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AACA;;;;;;;;;;;;;;;;ACxBA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;;;;;;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;;;;;;;;;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;;;;;;;;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAKA;AAAA;AAEA;AACA;;;;;;;;;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAEA;AAAA;AAGA;AACA;AAEA;AAAA;AACA;AAAA;AAEA;AACA;AAEA;AAAA;AACA;AAAA;AAEA;AACA;AAEA;AAAA;AACA;AAAA;AAEA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAIA;AAAA;AAAA;AACA;AAGA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAIA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC7JA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;;;;;;;;;;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;;;;;;;;;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACPA;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACNA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWA;AAYA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA","sources":["webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/Color.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/ColorPicker.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/Contextbar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/DragMoveHandler.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/Dropdown.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/DropdownMenu.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/DropdownSeparator.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/Icon.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/Loader.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/RangeSlider.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/StrokeStylePicker.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/StrokeWidthPicker.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/Toolbar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/ToolbarButton.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/ToolbarFileButton.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/ToolbarItemGroup.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/ToolbarSeparator.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/Tools.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/TooltipManager.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/TranslationManager.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/classNames.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/icons.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/common/utils.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/custom/history.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/index.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/lib/hyperapp/index.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/CanvasLayer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/CanvasModule.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/eraser/EraserLayer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/eraser/EraserModule.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/eraser/EraserToolbar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/form-fields/CheckBoxWidget.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/form-fields/ComboBoxWidget.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/form-fields/EditFormFieldLayer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/form-fields/FormFieldModule.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/form-fields/ListBoxWidget.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/form-fields/RadioButtonWidget.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/form-fields/SelectListWidget.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/form-fields/TextBoxWidget.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/form-fields/WidgetBase.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/freetext-annotation/AddFreetextAnnotationLayer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/freetext-annotation/AddFreetextAnnotationToolbar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/freetext-annotation/EditFreetextAnnotationLayer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/freetext-annotation/EditFreetextAnnotationToolbar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/freetext-annotation/FreetextAnnotationModule.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/freetext-annotation/RichTextEditor.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/highlight-annotation/AddHighlightAnnotationLayer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/highlight-annotation/AddHighlightAnnotationToolbar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/highlight-annotation/EditHighlightAnnotationLayer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/highlight-annotation/EditHighlightAnnotationToolbar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/highlight-annotation/HighlightAnnotationModule.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/image-annotations/ImageAnnotationModule.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/index.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/ink-annotation/AddInkAnnotationLayer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/ink-annotation/AddInkAnnotationToolbar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/ink-annotation/EditInkAnnotationLayer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/ink-annotation/EditInkAnnotationToolbar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/ink-annotation/InkAnnotationModule.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/popup/Popup.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/popup/PopupLayer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/popup/PopupModule.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/print-service/PrintServiceDialog.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/print-service/PrintServiceLayer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/print-service/PrintServiceModule.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/shape-annotations/AddShapeAnnotationLayer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/shape-annotations/AddShapeAnnotationToolbar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/shape-annotations/EditShapeAnnotationLayer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/shape-annotations/EditShapeAnnotationToolbar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/shape-annotations/ShapeAnnotationModule.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/stamp-annotation/AddStampAnnotationLayer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/stamp-annotation/AddStampAnnotationToolbar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/stamp-annotation/StampAnnotationModule.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/text-annotation/AddTextAnnotationLayer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/text-annotation/AddTextAnnotationToolbar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/modules/text-annotation/TextAnnotationModule.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-api/ImageContainer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-api/PdfViewerApi.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-api/PdfViewingWrapper.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-api/annotationDefaultBehaviors.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-api/enums.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-api/index.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-api/types.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/CanvasEvents.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/PdfViewerCanvas.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/state/annotations.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/state/appState.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/state/canvas.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/state/document.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/state/pointer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/state/scroll.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/state/search.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/state/store.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/state/viewer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/view-layers/AnnotationSelectionLayer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/view-layers/BusyStateLayer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/view-layers/PdfDocumentLayer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/view-layers/ScrollLayer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/view-layers/TextSelectionLayer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/view-layers/ViewLayerBase.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/view-layers/canvasShapes.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/view-layers/views/AnnotationBorder.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/view-layers/views/AnnotationContextBar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewer-canvas/view-layers/views/TextSelectionContextBar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-viewing/PdfViewing.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/PdfWebViewer.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/UserSettings.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/WebViewerOptions.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/state/index.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/state/layout.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/state/navigationPanel.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/state/passwordForm.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/state/pdfDocument.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/state/search.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/App.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/CustomButtons.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/DropZone.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/Layout.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/annotationbar/Annotationbar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/appbar/AddonsToolbar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/appbar/AnnotationsMenu.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/appbar/AppBar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/appbar/DocumentBar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/appbar/Menu.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/appbar/NavigationBar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/appbar/SearchBar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/appbar/SearchOptions.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/appbar/ViewBar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/appbar/ZoomBar.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/modal/ApplicationError.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/modal/LoadApplication.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/modal/LoadFile.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/modal/Modal.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/modal/OpenFile.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/modal/OpenFileError.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/modal/PasswordForm.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/modal/SaveFile.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/modal/UnsavedChanges.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/navigation/AnnotationList.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/navigation/AnnotationListItem.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/navigation/AnnotationNavigation.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/navigation/NavigationPanel.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/navigation/OutlineList.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/navigation/OutlineNavigation.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/../../packages/four-heights-pdf-web-viewer/build/es6/pdf-web-viewer/views/navigation/ThumbnailNavigation.js","webpack://@pdf-tools/pdf-web-viewer-demowebapp/webpack/bootstrap","webpack://@pdf-tools/pdf-web-viewer-demowebapp/webpack/runtime/define property getters","webpack://@pdf-tools/pdf-web-viewer-demowebapp/webpack/runtime/hasOwnProperty shorthand","webpack://@pdf-tools/pdf-web-viewer-demowebapp/webpack/runtime/make namespace object","webpack://@pdf-tools/pdf-web-viewer-demowebapp/./src/index.js"],"sourcesContent":["/** internal */\nexport class Color {\n constructor(color) {\n this.pR = 0;\n this.pG = 0;\n this.pB = 0;\n this.pA = 0;\n color = color.replace(/\\s+/gi, '');\n if (color === 'transparent') {\n this.pR = 255;\n this.pG = 255;\n this.pB = 255;\n this.pA = 0;\n }\n else if (color.indexOf('#') === 0) {\n if (color.length === 4) {\n this.pR = parseInt(color.substring(1, 2), 16);\n this.pG = parseInt(color.substring(2, 3), 16);\n this.pB = parseInt(color.substring(3, 4), 16);\n this.pA = 255;\n }\n else if (color.length === 5) {\n this.pR = parseInt(color.substring(1, 2), 16);\n this.pG = parseInt(color.substring(2, 3), 16);\n this.pB = parseInt(color.substring(3, 4), 16);\n this.pA = parseInt(color.substring(4, 5), 16);\n }\n else if (color.length === 7) {\n this.pR = parseInt(color.substring(1, 3), 16);\n this.pG = parseInt(color.substring(3, 5), 16);\n this.pB = parseInt(color.substring(5, 7), 16);\n this.pA = 255;\n }\n else if (color.length === 9) {\n this.pR = parseInt(color.substring(1, 3), 16);\n this.pG = parseInt(color.substring(3, 5), 16);\n this.pB = parseInt(color.substring(5, 7), 16);\n this.pA = parseInt(color.substring(7, 9), 16);\n }\n else {\n throw new Error('invalid color string: ' + color);\n }\n }\n else if (color.indexOf('rgb') === 0) {\n const values = color.substring(color.indexOf('(') + 1, color.indexOf(')')).split(',');\n if (values.length < 3 || values.length > 4) {\n throw new Error('invalid color string: ' + color);\n }\n this.pR = parseInt(values[0], 10);\n this.pG = parseInt(values[1], 10);\n this.pB = parseInt(values[2], 10);\n if (values.length === 4) {\n this.pA = Math.floor(parseFloat(values[3]) * 255);\n }\n else {\n this.pA = 255;\n }\n }\n else {\n throw new Error('invalid color string: ' + color);\n }\n }\n isDark() {\n return this.pR * 0.3 + this.pG * 0.59 + this.pB * 0.11 < 127;\n }\n get r() {\n return this.pR;\n }\n set r(r) {\n this.pR = r;\n }\n get g() {\n return this.pG;\n }\n set g(g) {\n this.pG = g;\n }\n get b() {\n return this.pB;\n }\n set b(b) {\n this.pB = b;\n }\n get a() {\n return Math.floor((this.pA / 255) * 1000) / 1000;\n }\n darken(percent) {\n const f = 1 - Math.abs(percent / 100);\n const r = Math.floor(this.pR * f);\n const g = Math.floor(this.pG * f);\n const b = Math.floor(this.pB * f);\n this.pR = r > 255 ? 255 : r;\n this.pG = g > 255 ? 255 : g;\n this.pB = b > 255 ? 255 : b;\n }\n setOpacity(opacity) {\n this.pA = Math.floor(opacity * 255);\n }\n toRgb() {\n return `rgb(${this.pR},${this.pG},${this.pB})`;\n }\n toRgba() {\n return `rgba(${this.pR},${this.pG},${this.pB},${this.a})`;\n }\n toHexRgb() {\n return `#${this.toHex(this.pR)}${this.toHex(this.pG)}${this.toHex(this.pB)}`;\n }\n toHexRgba() {\n return `#${this.toHex(this.pR)}${this.toHex(this.pG)}${this.toHex(this.pB)}${this.toHex(this.pA)}`;\n }\n toHex(value) {\n let h = value.toString(16);\n if (h.length === 1) {\n h = '0' + h;\n }\n return h;\n }\n}\n","import { h } from '../lib/hyperapp';\nimport { classNames } from './classNames';\nimport { Color } from '../common/Color';\nimport { DropdownComponent } from './Dropdown';\nimport { Icon } from './Icon';\nimport { tooltipManager } from './TooltipManager';\n/** internal */\nexport const ColorPicker = ({ icon, tooltip, disabled, colors, color, allowRgba = true, mode, onChange, }) => {\n const items = allowRgba ? colors : colors.filter((c) => new Color(c).a >= 1);\n if (mode === 'buttons' && window.innerWidth > 580) {\n return h(ColorPickerButtons, { icon: icon, colors: items, color: color, onChange: onChange });\n }\n else {\n return (h(ColorPickerDropdown, { icon: icon, tooltip: tooltip, disabled: disabled, colors: items, color: color, onChange: onChange }));\n }\n};\nconst ColorPickerDropdown = ({ icon, tooltip, disabled, colors, color, onChange, }) => {\n if (disabled) {\n return (h(\"div\", { class: \"pwv-ColorPicker pwv-Dropdown pwv-ToolbarItem pwv-disabled\" },\n h(\"button\", Object.assign({}, tooltipManager.createTooltip(tooltip), { oncreate: DropdownComponent.create, onremove: DropdownComponent.remove }),\n h(Icon, { icon: icon }),\n h(\"div\", { class: classNames('pwv-ColorPicker__selectedColor'), style: { backgroundColor: color } }))));\n }\n else {\n return (h(\"div\", { class: \"pwv-ColorPicker pwv-Dropdown pwv-ToolbarItem\" },\n h(\"button\", Object.assign({}, tooltipManager.createTooltip(tooltip), { oncreate: DropdownComponent.create, onremove: DropdownComponent.remove }),\n h(Icon, { icon: icon }),\n h(\"div\", { class: classNames('pwv-ColorPicker__selectedColor'), style: { backgroundColor: color } })),\n h(\"div\", { class: classNames('pwv-DropdownPanel', {\n 'pwv-DropdownPanel-wide': colors.length > 6,\n }) }, colors.map((c) => (h(\"button\", { disabled: c.toLowerCase() === color.toLowerCase(), class: classNames('pwv-ColorPicker__Button', {\n 'pwv-selected': c.toLowerCase() === color.toLowerCase(),\n }), onclick: (e) => {\n onChange && onChange(c);\n } },\n h(\"div\", { style: { backgroundColor: c } })))))));\n }\n};\nconst ColorPickerButtons = ({ icon, colors, color, onChange }) => {\n return (h(\"div\", { class: \"pwv-ColorPicker--buttons pwv-ToolbarItem\" }, colors.map((c) => (h(\"button\", { disabled: c.toLowerCase() === color.toLowerCase(), class: classNames('pwv-ColorPicker__Button', {\n 'pwv-selected': c.toLowerCase() === color.toLowerCase(),\n }), onclick: (e) => {\n onChange && onChange(c);\n } },\n h(\"div\", { style: { backgroundColor: c } }))))));\n};\n","import { h } from '../lib/hyperapp';\nconst stopPropagation = (e) => {\n e.stopPropagation();\n};\n/** internal */\nexport const Contextbar = ({}, children) => {\n return (h(\"div\", { class: \"pwv-contextbar\", oncreate: (element) => {\n element.addEventListener('click', (e) => {\n e.preventDefault();\n }, { passive: false });\n element.addEventListener('mousedown', stopPropagation, false);\n element.addEventListener('mousemove', stopPropagation, false);\n element.addEventListener('mouseup', stopPropagation, false);\n element.addEventListener('touchstart', stopPropagation, { passive: false });\n element.addEventListener('touchmove', stopPropagation, { passive: true });\n element.addEventListener('touchend', stopPropagation, { passive: true });\n } },\n h(\"div\", { class: \"pwv-contextbar-content\" }, children)));\n};\n","export class DragMoveHandler {\n /* tslint:disable-next-line:max-line-length */\n constructor(element, onDragStart, onDragMove, onDragEnd, onClick, onDblClick) {\n this.lastPosX = 0;\n this.lastPosY = 0;\n this.startPosX = 0;\n this.startPosY = 0;\n this.isSuspended = false;\n this.dragging = false;\n this.clickTimer = null;\n this.dragStartTimer = null;\n this.clickDuration = 250;\n this.dragStartDuration = 300;\n this.dblClickTimer = null;\n this.dblClickDuration = 250;\n this.suspend = this.suspend.bind(this);\n this.resume = this.resume.bind(this);\n this.onMouseDown = this.onMouseDown.bind(this);\n this.onTouchStart = this.onTouchStart.bind(this);\n this.start = this.start.bind(this);\n this.onMouseMove = this.onMouseMove.bind(this);\n this.onTouchMove = this.onTouchMove.bind(this);\n this.move = this.move.bind(this);\n this.onMouseUp = this.onMouseUp.bind(this);\n this.onTouchEnd = this.onTouchEnd.bind(this);\n this.end = this.end.bind(this);\n this.element = element;\n this.onDragStart = onDragStart;\n this.onDragMove = onDragMove;\n this.onDragEnd = onDragEnd;\n this.onClick = onClick;\n this.onDblClick = onDblClick;\n this.disableCanvasEvents = true;\n this.element.addEventListener('mousedown', this.onMouseDown, { passive: true });\n this.element.addEventListener('touchstart', this.onTouchStart, { passive: false });\n }\n suspend() {\n window.removeEventListener('mousemove', this.onMouseMove);\n window.removeEventListener('mouseup', this.onMouseUp);\n window.removeEventListener('touchmove', this.onTouchMove);\n window.removeEventListener('touchend', this.onTouchEnd);\n this.element.removeEventListener('mousedown', this.onMouseDown);\n this.element.removeEventListener('touchstart', this.onTouchStart);\n this.isSuspended = true;\n }\n resume() {\n if (this.isSuspended) {\n this.element.addEventListener('mousedown', this.onMouseDown, { passive: true });\n this.element.addEventListener('touchstart', this.onTouchStart, { passive: false });\n }\n }\n clearClickTimer() {\n if (this.clickTimer !== null) {\n window.clearTimeout(this.clickTimer);\n this.clickTimer = null;\n }\n }\n clearDblClickTimer() {\n if (this.dblClickTimer !== null) {\n window.clearTimeout(this.dblClickTimer);\n this.dblClickTimer = null;\n }\n }\n clearDragStartTimer() {\n if (this.dragStartTimer !== null) {\n window.clearTimeout(this.dragStartTimer);\n this.dragStartTimer = null;\n }\n }\n onMouseDown(e) {\n if (e.buttons === 1) {\n this.start(e.clientX, e.clientY);\n window.addEventListener('mousemove', this.onMouseMove, { passive: true });\n window.addEventListener('mouseup', this.onMouseUp, { passive: true });\n }\n }\n onTouchStart(e) {\n if (e.touches.length === 1) {\n this.start(e.touches[0].clientX, e.touches[0].clientY);\n window.addEventListener('touchmove', this.onTouchMove, { passive: false });\n window.addEventListener('touchend', this.onTouchEnd, { passive: false });\n }\n }\n start(clientX, clientY) {\n if (this.disableCanvasEvents) {\n window.dispatchEvent(new Event('pdfwebviewer.DragMoveHandlerStart'));\n }\n this.startPosX = this.lastPosX = clientX;\n this.startPosY = this.lastPosY = clientY;\n this.dragging = false;\n if (!this.dblClickTimer) {\n this.clickTimer = window.setTimeout(() => {\n this.clickTimer = null;\n }, this.clickDuration);\n this.dragStartTimer = window.setTimeout(() => {\n this.dragging = true;\n this.onDragStart({\n clientX: this.startPosX,\n clientY: this.startPosY,\n movementX: 0,\n movementY: 0,\n element: this.element,\n });\n }, this.dragStartDuration);\n }\n }\n onMouseMove(e) {\n this.move(e.clientX, e.clientY);\n }\n onTouchMove(e) {\n this.move(e.touches[0].clientX, e.touches[0].clientY);\n }\n move(clientX, clientY) {\n let movementX = clientX - this.lastPosX;\n let movementY = clientY - this.lastPosY;\n this.lastPosX = clientX;\n this.lastPosY = clientY;\n if (this.clickTimer || this.dragStartTimer) {\n if (Math.abs(movementX) > 5 || Math.abs(movementY) > 5) {\n this.clearClickTimer();\n this.clearDragStartTimer();\n this.dragging = true;\n this.onDragStart({\n clientX: this.startPosX,\n clientY: this.startPosY,\n movementX: 0,\n movementY: 0,\n element: this.element,\n });\n movementX = clientX - this.startPosX;\n movementY = clientY - this.startPosY;\n }\n }\n if (this.dragging) {\n this.onDragMove({ clientX, clientY, movementX, movementY, element: this.element });\n }\n }\n onMouseUp(e) {\n window.removeEventListener('mousemove', this.onMouseMove);\n window.removeEventListener('mouseup', this.onMouseUp);\n this.end();\n }\n onTouchEnd(e) {\n window.removeEventListener('touchmove', this.onTouchMove);\n window.removeEventListener('touchend', this.onTouchEnd);\n this.end();\n }\n end() {\n const moved = this.startPosX !== this.lastPosX || this.startPosY !== this.lastPosY;\n const clientX = this.lastPosX;\n const clientY = this.lastPosY;\n if (this.disableCanvasEvents) {\n window.dispatchEvent(new Event('pdfwebviewer.DragMoveHandlerEnd'));\n }\n if (this.dblClickTimer !== null) {\n this.clearDblClickTimer();\n if (this.onDblClick) {\n this.onDblClick({ clientX, clientY, movementX: 0, movementY: 0, element: this.element });\n }\n }\n else if (this.clickTimer !== null) {\n if (this.onClick) {\n this.onClick({ clientX, clientY, movementX: 0, movementY: 0, element: this.element });\n }\n this.dblClickTimer = window.setTimeout(() => {\n this.dblClickTimer = null;\n }, this.dblClickDuration);\n }\n if (this.dragging) {\n this.onDragEnd({ clientX, clientY, movementX: 0, movementY: 0, moved, element: this.element });\n }\n this.clearClickTimer();\n this.clearDragStartTimer();\n }\n}\n","import { h } from '../lib/hyperapp';\nimport { tooltipManager } from './TooltipManager';\nimport { Icon, icons } from './Icon';\nimport { classNames } from './classNames';\nexport const Dropdown = ({ disabled, text, icon, name, value, tooltip, width, className, items, align, hideCaret, renderButton, onChange, }) => {\n const selectedItem = items.find((item) => item.value === value);\n if (!text && selectedItem) {\n text = selectedItem.text;\n }\n const style = width\n ? {\n width: width + 'px',\n }\n : {};\n return (h(\"div\", { class: classNames('pwv-Dropdown', { 'pwv-disabled': disabled }, { 'pwv-Dropdown--alignLeft': !align || align === 'left' }, { 'pwv-Dropdown--alignRight': align === 'right' }, { 'pwv-Dropdown--alignCenter': align === 'center' }, className), style: style },\n h(\"button\", Object.assign({ name: name }, tooltipManager.createTooltip(tooltip), { oncreate: DropdownComponent.create, onremove: DropdownComponent.remove, disabled: disabled }),\n renderButton ? (renderButton(value, text)) : (h(\"span\", { class: \"pwv-Dropdown-text\" },\n icon && h(Icon, { icon: icon }),\n text)),\n !hideCaret && (h(\"span\", { class: \"pwv-Dropdown-caret\" },\n h(Icon, { icon: icons.dropdownCaret })))),\n !disabled && (h(\"div\", { class: \"pwv-DropdownPanel\" },\n h(\"ul\", null, items.map((item) => (h(\"li\", { class: \"pwv-DropdownItem\", onclick: () => onChange && onChange(item.value) }, item.renderItem ? (item.renderItem(item)) : (h(\"span\", { class: \"pwv-Dropdown-item-text\" }, item.text))))))))));\n};\nexport class DropdownComponent {\n static create(btnElement) {\n ;\n btnElement.parentElement.dropdown = new DropdownComponent(btnElement);\n }\n static remove(btnElement) {\n ;\n btnElement.parentElement.dropdown.unmount();\n }\n constructor(btnElement) {\n this.button = btnElement;\n this.element = btnElement.parentElement;\n this.handleOnClick = this.handleOnClick.bind(this);\n this.setMaxPanelHeight = this.setMaxPanelHeight.bind(this);\n this.button.addEventListener('click', this.handleOnClick, false);\n tooltipManager.bindCssTooltip(this.button);\n window.addEventListener('resize', this.setMaxPanelHeight);\n }\n unmount() {\n this.button.removeEventListener('click', this.handleOnClick);\n this.button.removeEventListener('resize', this.setMaxPanelHeight);\n }\n setMaxPanelHeight() {\n const dropdownPanel = this.element.querySelector('.pwv-DropdownPanel');\n if (dropdownPanel) {\n const maxHeight = window.innerHeight - dropdownPanel.getBoundingClientRect().top;\n if (dropdownPanel.scrollHeight > maxHeight) {\n dropdownPanel.style.maxHeight = `${maxHeight - 10}px`;\n dropdownPanel.classList.add('pwv-DropdownPanel--scroll');\n }\n else {\n dropdownPanel.style.maxHeight = '';\n dropdownPanel.classList.remove('pwv-DropdownPanel--scroll');\n }\n }\n }\n handleOnClick(e) {\n if (!this.element.classList.contains('pwv-Dropdown--open')) {\n this.element.classList.add('pwv-Dropdown--open');\n this.setMaxPanelHeight();\n const t = new Date().getTime();\n e.openDropdown = t;\n const closeDropdownPanel = (ev) => {\n if (ev.openDropdown !== t) {\n window.removeEventListener('click', closeDropdownPanel);\n this.element.classList.remove('pwv-Dropdown--open');\n }\n };\n window.addEventListener('click', closeDropdownPanel, false);\n }\n }\n}\n","import { h } from '../lib/hyperapp';\nimport { tooltipManager } from './TooltipManager';\nimport { Icon } from './Icon';\nimport { classNames } from './classNames';\nimport { DropdownComponent } from './Dropdown';\nexport const DropdownMenu = ({ icon, className, tooltip }, children) => {\n return (h(\"div\", { class: classNames('pwv-Dropdown', className) },\n h(\"button\", Object.assign({ class: \"pwv-ToolbarButton\" }, tooltipManager.createTooltip(tooltip), { oncreate: DropdownComponent.create, onremove: DropdownComponent.remove }), icon && h(Icon, { icon: icon })),\n h(\"div\", { class: \"pwv-DropdownPanel\" }, children)));\n};\n","import { h } from '../lib/hyperapp';\n/** internal */\nexport const DropdownSeparator = ({}) => {\n return (h(\"div\", { class: \"pwv-DropdownSeparator\" },\n h(\"span\", null)));\n};\n","import { h } from '../lib/hyperapp';\nimport { classNames } from './classNames';\nexport * from './icons';\n/** internal */\nexport const Icon = ({ icon, className, fill, bg, title }) => (h(\"span\", { class: classNames('pwv-icon', className), title: title },\n h(\"svg\", { viewBox: `0 0 ${icon.width} ${icon.height}` },\n icon.bg && bg && h(\"path\", { d: icon.bg, fill: bg }),\n h(\"path\", { d: icon.path, fill: fill, \"shape-rendering\": \"geometricPrecision\", \"stroke-width\": \"1px\" }))));\n","import { h } from '../lib/hyperapp';\n/** internal */\nexport const Loader = ({}) => {\n return (h(\"div\", { class: \"pwv-Loader\" },\n h(\"div\", null)));\n};\n","import { h } from '../lib/hyperapp';\nimport { DropdownComponent } from './Dropdown';\nimport { Icon, icons } from './Icon';\nimport { classNames } from './classNames';\nimport { tooltipManager } from './TooltipManager';\n/** internal */\nexport const RangeSlider = ({ min, max, value, icon, className, text, tooltip, label, disabled, onChange, }) => {\n const elmProps = {\n title: tooltip,\n };\n if (disabled) {\n return (h(\"div\", Object.assign({}, tooltipManager.createTooltip(tooltip), { class: classNames('pwv-RangeSlider', 'pwv-ToolbarItem', 'pwv-Dropdown', 'pwv-disabled', className) }),\n label ||\n (icon && (h(\"span\", { class: \"pwv-Dropdown-label\" },\n label,\n icon && h(Icon, { icon: icon })))),\n h(\"span\", { class: \"pwv-Dropdown-text\" }, text),\n h(\"span\", { class: \"pwv-Dropdown-caret\" },\n h(Icon, { icon: icons.dropdownCaret }))));\n }\n else {\n return (h(\"div\", { class: classNames('pwv-RangeSlider', 'pwv-commandbar-item', 'pwv-Dropdown', className) },\n h(\"button\", Object.assign({}, tooltipManager.createTooltip(tooltip), { oncreate: DropdownComponent.create, onremove: DropdownComponent.remove }),\n label ||\n (icon && (h(\"span\", { class: \"pwv-Dropdown-label\" },\n label,\n icon && h(Icon, { icon: icon })))),\n h(\"span\", { class: \"pwv-Dropdown-text\" }, text),\n h(\"span\", { class: \"pwv-Dropdown-caret\" },\n h(Icon, { icon: icons.dropdownCaret }))),\n h(\"div\", { class: \"pwv-DropdownPanel\" },\n h(\"input\", { type: \"range\", min: min, max: max, value: value, oninput: (e) => {\n const input = e.currentTarget;\n const intVal = parseInt(input.value, undefined);\n onChange(intVal);\n }, onchange: (e) => {\n e.preventDefault();\n const input = e.currentTarget;\n window.dispatchEvent(new Event('click'));\n } }))));\n }\n};\n","import { h } from '../lib/hyperapp';\nimport { AnnotationBorderStyle } from '../pdf-viewer-api';\nimport { Dropdown } from './Dropdown';\nconst StrokeItem = ({ value }) => {\n const strokeStyle = value === AnnotationBorderStyle.DASHED ? 'dashed' : 'solid';\n return (h(\"div\", { class: `pwv-stroke-style-picker-item pwv-stroke-style-${strokeStyle}` },\n h(\"span\", null)));\n};\nconst StrokeButton = ({ value }) => {\n const strokeStyle = value === AnnotationBorderStyle.DASHED ? 'dashed' : 'solid';\n return (h(\"div\", { class: `pwv-stroke-style-picker-button pwv-stroke-style-${strokeStyle}` },\n h(\"span\", null)));\n};\nexport const StrokeStylePicker = ({ disabled, value, tooltip, shapeType, onChange, }) => {\n const items = [AnnotationBorderStyle.SOLID, AnnotationBorderStyle.DASHED].map((item) => ({\n value: item,\n renderItem: (i) => h(StrokeItem, { value: item }),\n }));\n return (h(Dropdown, { className: `pwv-stroke-style-picker pwv-stroke-style-picker-${shapeType}`, align: \"right\", disabled: disabled, tooltip: tooltip, items: items, value: value, renderButton: (value) => h(StrokeButton, { value: value }), onChange: onChange }));\n};\n","import { h } from '../lib/hyperapp';\nimport { Dropdown } from './Dropdown';\nconst StrokeItem = ({ value, noneStrokeText }) => {\n if (value === 0) {\n return (h(\"div\", { class: \"pwv-stroke-width-picker-item\" },\n h(\"span\", null, noneStrokeText)));\n }\n return (h(\"div\", { class: \"pwv-stroke-width-picker-item\" },\n h(\"span\", null,\n value,\n \"pt\"),\n h(\"span\", { class: \"pwv-stroke-width\", style: { height: `${value}px` } })));\n};\nexport const StrokeWidthPicker = ({ disabled, noneStrokeText, strokeWidths, value, tooltip, onChange, }) => {\n const items = strokeWidths.map((item) => ({\n value: item,\n renderItem: (i) => h(StrokeItem, { value: i.value, noneStrokeText: noneStrokeText }),\n }));\n return (h(Dropdown, { className: \"pwv-stroke-width-picker\", align: \"right\", tooltip: tooltip, disabled: disabled, items: items, value: value, renderButton: (value) => h(StrokeItem, { value: value, noneStrokeText: noneStrokeText }), onChange: onChange }));\n};\n","import { h } from '../lib/hyperapp';\nimport { classNames } from './classNames';\n/** internal */\nexport const Toolbar = ({ className, dense, allowWrap, alignCenter }, children) => {\n return (h(\"div\", { class: classNames('pwv-Toolbar', { 'pwv-Toolbar--center': alignCenter }, { 'pwv-Toolbar--dense': dense }, { 'pwv-Toolbar--wrap': allowWrap }, className) }, children));\n};\n","import { h } from '../lib/hyperapp';\nimport { Icon } from './Icon';\nimport { classNames } from './classNames';\nimport { tooltipManager } from './TooltipManager';\n/** internal */\nexport const ToolbarButton = ({ icon, disabled, active, name, onClick, tooltip, className }, children) => {\n if (disabled) {\n return (h(\"button\", Object.assign({ name: name, disabled: disabled, oncreate: tooltipManager.bindCssTooltip }, tooltipManager.createTooltip(tooltip), { class: classNames('pwv-ToolbarButton', 'pwv-ToolbarButton--disabled', className) }),\n icon && h(Icon, { icon: icon }),\n children.length > 0 && h(\"span\", { class: \"pwv-ToolbarButton__Text\" }, children)));\n }\n else {\n return (h(\"button\", Object.assign({ name: name, oncreate: tooltipManager.bindCssTooltip }, tooltipManager.createTooltip(tooltip), { class: classNames('pwv-ToolbarButton', className, {\n 'pwv-ToolbarButton--selected': active,\n }), onclick: (e) => {\n onClick && onClick(e);\n } }),\n icon && h(Icon, { icon: icon }),\n children.length > 0 && h(\"span\", { class: \"pwv-ToolbarButton__Text\" }, children)));\n }\n};\n","import { h } from '../lib/hyperapp';\nimport { Icon } from './Icon';\nimport { classNames } from './classNames';\nimport { tooltipManager } from './TooltipManager';\n/** internal */\nexport const ToolbarFileButton = ({ icon, accept, className, tooltip, disabled, name, onFileSelected, }) => {\n if (disabled) {\n return (h(\"div\", Object.assign({ oncreate: tooltipManager.bindCssTooltip }, tooltipManager.createTooltip(tooltip), { class: classNames('pwv-ToolbarButton', 'pwv-ToolbarButton--disabled', className) }),\n h(Icon, { icon: icon })));\n }\n else {\n return (h(\"label\", Object.assign({ name: name, tabindex: \"auto\", oncreate: tooltipManager.bindCssTooltip }, tooltipManager.createTooltip(tooltip), { class: classNames('pwv-ToolbarButton', className) }),\n h(Icon, { icon: icon }),\n h(\"input\", { style: { display: 'none' }, type: \"file\", accept: accept, onchange: (e) => {\n if (onFileSelected && e.currentTarget.files && e.currentTarget.files.length) {\n const file = e.currentTarget.files[0];\n onFileSelected(file);\n e.currentTarget.value = '';\n }\n }, oncreate: (input) => {\n const id = 'fi_' + performance.now();\n input.id = id;\n const label = input.parentElement;\n label.setAttribute('for', id);\n } })));\n }\n};\n","import { h } from '../lib/hyperapp';\nimport { classNames } from './classNames';\n/** internal */\nexport const ToolbarItemGroup = ({ className, pushRight }, children) => {\n return (h(\"div\", { class: classNames('pwv-ToolbarItemGroup', className, {\n 'pwv-ToolbarItemGroup--pushRight': pushRight,\n }), oncreate: (element) => {\n if (pushRight) {\n element.parentNode.classList.add('pwv-Toolbar--paddingRight');\n }\n } }, children));\n};\n","import { h } from '../lib/hyperapp';\n/** internal */\nexport const ToolbarSeparator = ({}) => {\n return (h(\"div\", { class: \"pwv-ToolbarSeparator\" },\n h(\"span\", null)));\n};\n","import { PdfItemType } from '../pdf-viewer-api/enums';\nexport function convertPdfToCssPixel(pdfPixel) {\n const regex = /(\\d*\\.?\\d+)/.exec(pdfPixel);\n const size = regex && regex.length > 1 ? parseFloat(regex[1]) : 12;\n return roundToTwo((size / 72) * 96) + 'px';\n}\nexport function convertCssToPdfPixel(cssPixel) {\n const regex = /(\\d*\\.?\\d+)/.exec(cssPixel);\n const size = regex && regex.length > 1 ? parseFloat(regex[1]) : 12;\n return roundToTwo((size / 96) * 72) + 'pt';\n}\nexport function roundToTwo(num) {\n return Math.round(num * 100) / 100;\n}\nexport function getColorPalette(type, options) {\n if (type === PdfItemType.INK) {\n return options.annotation.colors.foregroundColors;\n }\n else {\n return options.annotation.colors.highlightColors;\n }\n}\nexport function createPdfTime() {\n const time = new Date();\n const year = time.getFullYear();\n let month = `${time.getMonth() + 1}`;\n month = padString(month, 2, '0');\n let day = `${time.getDate()}`;\n day = padString(day, 2, '0');\n let hour = `${time.getHours()}`;\n hour = padString(hour, 2, '0');\n let minutes = `${time.getMinutes()}`;\n minutes = padString(minutes, 2, '0');\n let seconds = `${time.getSeconds()}`;\n seconds = padString(seconds, 2, '0');\n let offsetString = time.getTimezoneOffset() < 0 ? '+' : '';\n const hourOffset = -1 * Math.floor(time.getTimezoneOffset() / 60);\n offsetString += padString(hourOffset.toString(), 2, '0') + `'`;\n const minuteOffset = -1 * Math.floor(time.getTimezoneOffset() % 60);\n offsetString += padString(minuteOffset.toString(), 2, '0') + `'`;\n const dateString = `(D:${year}${month}${day}${hour}${minutes}${seconds}${offsetString})`;\n return dateString;\n}\nexport const formatDate = (dateStr) => {\n if (dateStr.indexOf('(D:') === 0) {\n // todo: convert to local time\n return `${dateStr.substring(9, 11)}.${dateStr.substring(7, 11)}.${dateStr.substring(3, 7)} ${dateStr.substring(11, 13)}:${dateStr.substring(13, 15)}`;\n }\n return `${dateStr.substring(8, 10)}.${dateStr.substring(6, 8)}.${dateStr.substring(2, 6)} ${dateStr.substring(10, 12)}:${dateStr.substring(12, 14)}`;\n};\nexport function padString(s, paddingSize, fill) {\n if (s.length < paddingSize) {\n s = `${fill.repeat(paddingSize - s.length)}${s}`;\n }\n return s;\n}\nexport function imageDataUrlToUint8Array(dataUrl) {\n const base64 = dataUrl.replace(/^data:[a-z]+\\/[a-z]+;base64,/i, '');\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n const lookup = new Uint8Array(256);\n for (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n let bufferLength = base64.length * 0.75;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n const arraybuffer = new ArrayBuffer(bufferLength);\n const bytes = new Uint8Array(arraybuffer);\n let p = 0;\n let encoded1 = 0;\n let encoded2 = 0;\n let encoded3 = 0;\n let encoded4 = 0;\n for (let i = 0; i < base64.length; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n // tslint:disable: no-bitwise\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return bytes;\n}\n","let tooltipType;\n/** internal */\nexport const tooltipManager = {\n setType: (type) => {\n tooltipType = type;\n },\n bindCssTooltip: (element, text) => {\n if (tooltipType !== 'css') {\n return;\n }\n element.onmouseover = (e) => {\n const elm = e.currentTarget;\n let viewerElm = elm.closest('.pwv-ViewerCanvas');\n if (!viewerElm) {\n viewerElm = elm.closest('.pwv-WebViewer');\n }\n if (viewerElm) {\n elm.classList.remove('pwv-tooltip-top', 'pwv-tooltip-left', 'pwv-tooltip-right', 'pwv-tooltip-bottom');\n const elmRect = elm.getBoundingClientRect();\n const viewerRect = viewerElm.getBoundingClientRect();\n const top = elmRect.top - viewerRect.top;\n const left = elmRect.left - viewerRect.left;\n const right = viewerRect.right - elmRect.right;\n const bottom = viewerRect.bottom - elmRect.bottom;\n top < 45\n ? element.classList.add('pwv-tooltip-bottom')\n : element.classList.add('pwv-tooltip-top');\n if (left < 45) {\n element.classList.add('pwv-tooltip-right');\n }\n else if (right < 45) {\n element.classList.add('pwv-tooltip-left');\n }\n }\n };\n },\n createTooltip: (text) => {\n if (!text) {\n return undefined;\n }\n switch (tooltipType) {\n case 'title':\n return {\n title: text,\n };\n case 'css':\n return {\n 'data-pwv-tooltip': text,\n };\n default:\n return undefined;\n }\n },\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nlet translations = {};\nlet translationRequested = false;\n/** internal */\nexport const translationManager = {\n language: '',\n addTranslations: (res) => {\n translations = Object.assign(Object.assign({}, translations), res);\n },\n getText: (key) => {\n const res = translations[key];\n if (!res) {\n switch (key) {\n case 'applicationError.title':\n return 'Error';\n case 'applicationError.defaultMessage':\n return 'Configuration Error';\n case 'applicationError.reload':\n return '';\n }\n console.warn(`key not found ${key}`);\n return key;\n }\n return res;\n },\n loadTranslations: (language) => __awaiter(void 0, void 0, void 0, function* () {\n if (language !== translationManager.language ||\n (!translationRequested && Object.keys(translations).length === 0)) {\n translationManager.language = language;\n translationRequested = true;\n const translationFileUrl = window.Module.locateFile(`translations.${language}.json`);\n try {\n const res = yield fetch(translationFileUrl);\n if (res.ok) {\n translations = yield res.json();\n }\n else {\n throw new Error(`failed to load translation file '${translationFileUrl}`);\n }\n }\n catch (err) {\n // console.error(err)\n console.error(`**************************************\nFailed to load translations.${language}.js\n\n%cThe PDF Web Viewer failed to load a required script resource. Either the \"Base URL\" (PDFTOOLS_FOURHEIGHTS_PDFVIEWING_BASEURL) is not configured correctly or the static assets have not been copied to the configured location. For more information please consult the documentation.\n\n%cwindow.PDFTOOLS_FOURHEIGHTS_PDFVIEWING_BASEURL=${window.PDFTOOLS_FOURHEIGHTS_PDFVIEWING_BASEURL}\n%c**************************************`, 'color: orange', 'color: gray', 'color: red');\n }\n }\n }),\n};\n","/** internal */\nexport const classNames = (...args) => {\n const classes = [];\n args.forEach((arg) => {\n if (typeof arg === 'string') {\n classes.push(arg);\n }\n else if (typeof arg === 'object') {\n const keys = Object.keys(arg);\n keys.forEach((k) => {\n if (arg[k]) {\n classes.push(k);\n }\n });\n }\n });\n return classes.join(' ');\n};\n","/** internal */\n/* tslint:disable:max-line-length */\nexport const icons = {\n openFile: {\n width: 576,\n height: 512,\n path: 'M527.95 224H480v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h385.057c28.068 0 54.135-14.733 68.599-38.84l67.453-112.464C588.24 264.812 565.285 224 527.95 224zM48 96h146.745l64 64H432c8.837 0 16 7.163 16 16v48H171.177c-28.068 0-54.135 14.733-68.599 38.84L32 380.47V112c0-8.837 7.163-16 16-16zm493.695 184.232l-67.479 112.464A47.997 47.997 0 0 1 433.057 416H44.823l82.017-136.696A48 48 0 0 1 168 256h359.975c12.437 0 20.119 13.568 13.72 24.232z',\n },\n saveFile: {\n width: 448,\n height: 512,\n path: 'M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM288 64v96H96V64h192zm128 368c0 8.822-7.178 16-16 16H48c-8.822 0-16-7.178-16-16V80c0-8.822 7.178-16 16-16h16v104c0 13.255 10.745 24 24 24h208c13.255 0 24-10.745 24-24V64.491a15.888 15.888 0 0 1 7.432 4.195l83.882 83.882A15.895 15.895 0 0 1 416 163.882V432zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 144c-30.879 0-56-25.121-56-56s25.121-56 56-56 56 25.121 56 56-25.121 56-56 56z',\n },\n print: {\n width: 512,\n height: 512,\n path: 'M432 192h-16v-82.75c0-8.49-3.37-16.62-9.37-22.63L329.37 9.37c-6-6-14.14-9.37-22.63-9.37H126.48C109.64 0 96 14.33 96 32v160H80c-44.18 0-80 35.82-80 80v96c0 8.84 7.16 16 16 16h80v112c0 8.84 7.16 16 16 16h288c8.84 0 16-7.16 16-16V384h80c8.84 0 16-7.16 16-16v-96c0-44.18-35.82-80-80-80zM320 45.25L370.75 96H320V45.25zM128.12 32H288v64c0 17.67 14.33 32 32 32h64v64H128.02l.1-160zM384 480H128v-96h256v96zm96-128H32v-80c0-26.47 21.53-48 48-48h352c26.47 0 48 21.53 48 48v80zm-80-88c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24z',\n },\n docNavigation: {\n width: 512,\n height: 512,\n path: 'M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm16 400c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V192h448v240zM32 160V80c0-8.8 7.2-16 16-16h416c8.8 0 16 7.2 16 16v80H32z',\n },\n nextPage: {\n width: 448,\n height: 512,\n path: 'M216.464 36.465l-7.071 7.07c-4.686 4.686-4.686 12.284 0 16.971L387.887 239H12c-6.627 0-12 5.373-12 12v10c0 6.627 5.373 12 12 12h375.887L209.393 451.494c-4.686 4.686-4.686 12.284 0 16.971l7.071 7.07c4.686 4.686 12.284 4.686 16.97 0l211.051-211.05c4.686-4.686 4.686-12.284 0-16.971L233.434 36.465c-4.686-4.687-12.284-4.687-16.97 0z',\n },\n previousPage: {\n width: 448,\n height: 512,\n path: 'M231.536 475.535l7.071-7.07c4.686-4.686 4.686-12.284 0-16.971L60.113 273H436c6.627 0 12-5.373 12-12v-10c0-6.627-5.373-12-12-12H60.113L238.607 60.506c4.686-4.686 4.686-12.284 0-16.971l-7.071-7.07c-4.686-4.686-12.284-4.686-16.97 0L3.515 247.515c-4.686 4.686-4.686 12.284 0 16.971l211.051 211.05c4.686 4.686 12.284 4.686 16.97-.001z',\n },\n zoomIn: {\n width: 512,\n height: 512,\n path: 'M384 250v12c0 6.6-5.4 12-12 12h-98v98c0 6.6-5.4 12-12 12h-12c-6.6 0-12-5.4-12-12v-98h-98c-6.6 0-12-5.4-12-12v-12c0-6.6 5.4-12 12-12h98v-98c0-6.6 5.4-12 12-12h12c6.6 0 12 5.4 12 12v98h98c6.6 0 12 5.4 12 12zm120 6c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-32 0c0-119.9-97.3-216-216-216-119.9 0-216 97.3-216 216 0 119.9 97.3 216 216 216 119.9 0 216-97.3 216-216z',\n },\n zoomOut: {\n width: 512,\n height: 512,\n path: 'M140 274c-6.6 0-12-5.4-12-12v-12c0-6.6 5.4-12 12-12h232c6.6 0 12 5.4 12 12v12c0 6.6-5.4 12-12 12H140zm364-18c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-32 0c0-119.9-97.3-216-216-216-119.9 0-216 97.3-216 216 0 119.9 97.3 216 216 216 119.9 0 216-97.3 216-216z',\n },\n search: {\n width: 512,\n height: 512,\n path: 'M508.5 481.6l-129-129c-2.3-2.3-5.3-3.5-8.5-3.5h-10.3C395 312 416 262.5 416 208 416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c54.5 0 104-21 141.1-55.2V371c0 3.2 1.3 6.2 3.5 8.5l129 129c4.7 4.7 12.3 4.7 17 0l9.9-9.9c4.7-4.7 4.7-12.3 0-17zM208 384c-97.3 0-176-78.7-176-176S110.7 32 208 32s176 78.7 176 176-78.7 176-176 176z',\n },\n fitActualSize: {\n width: 448,\n height: 512,\n path: 'M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H32v116c0 6.6-5.4 12-12 12h-8c-6.6 0-12-5.4-12-12zM300 32h124c13.3 0 24 10.7 24 24v124c0 6.6-5.4 12-12 12h-8c-6.6 0-12-5.4-12-12V64H300c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12zm148 300v124c0 13.3-10.7 24-24 24H300c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h116V332c0-6.6 5.4-12 12-12h8c6.6 0 12 5.4 12 12zM148 480H24c-13.3 0-24-10.7-24-24V332c0-6.6 5.4-12 12-12h8c6.6 0 12 5.4 12 12v116h116c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12z',\n },\n fitWidth: {\n width: 512,\n height: 512,\n path: 'M399.959 170.585c-4.686 4.686-4.686 12.284 0 16.971L451.887 239H60.113l51.928-51.444c4.686-4.686 4.686-12.284 0-16.971l-7.071-7.07c-4.686-4.686-12.284-4.686-16.97 0l-84.485 84c-4.686 4.686-4.686 12.284 0 16.971l84.485 84c4.686 4.686 12.284 4.686 16.97 0l7.071-7.07c4.686-4.686 4.686-12.284 0-16.971L60.113 273h391.773l-51.928 51.444c-4.686 4.686-4.686 12.284 0 16.971l7.071 7.07c4.686 4.686 12.284 4.686 16.97 0l84.485-84c4.687-4.686 4.687-12.284 0-16.971l-84.485-84c-4.686-4.686-12.284-4.686-16.97 0l-7.07 7.071z',\n },\n fitPage: {\n width: 512,\n height: 512,\n path: 'M337.782 434.704l-73.297 73.782c-4.686 4.686-12.284 4.686-16.971 0l-73.296-73.782c-4.686-4.686-4.686-12.284 0-16.97l7.07-7.07c4.686-4.686 12.284-4.686 16.971 0L239 451.887h1V272H60.113v1l41.224 40.741c4.686 4.686 4.686 12.284 0 16.971l-7.071 7.07c-4.686 4.686-12.284 4.686-16.97 0L3.515 264.485c-4.686-4.686-4.686-12.284 0-16.971l73.782-73.297c4.686-4.686 12.284-4.686 16.971 0l7.071 7.071c4.686 4.686 4.686 12.284 0 16.971L60.113 239v1H240V60.113h-1l-40.741 41.224c-4.686 4.686-12.284 4.686-16.971 0l-7.07-7.071c-4.686-4.686-4.687-12.284 0-16.97l73.297-73.782c4.686-4.686 12.284-4.686 16.971 0l73.297 73.782c4.686 4.686 4.686 12.284 0 16.971l-7.071 7.071c-4.686 4.686-12.284 4.686-16.971 0L273 60.113h-1V240h179.887v-1l-41.224-40.741c-4.686-4.686-4.686-12.284 0-16.971l7.071-7.07c4.686-4.686 12.284-4.686 16.97 0l73.782 73.297c4.687 4.686 4.686 12.284 0 16.971l-73.782 73.297c-4.686 4.686-12.284 4.686-16.97 0l-7.071-7.07c-4.686-4.686-4.686-12.284 0-16.971L451.887 273v-1H272v179.887h1l40.741-41.224c4.686-4.686 12.284-4.686 16.971 0l7.07 7.071c4.686 4.685 4.686 12.283 0 16.97z',\n },\n edit: {\n width: 576,\n height: 512,\n path: 'M417.8 315.5l20-20c3.8-3.8 10.2-1.1 10.2 4.2V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h292.3c5.3 0 8 6.5 4.2 10.2l-20 20c-1.1 1.1-2.7 1.8-4.2 1.8H48c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h352c8.8 0 16-7.2 16-16V319.7c0-1.6.6-3.1 1.8-4.2zm145.9-191.2L251.2 436.8l-99.9 11.1c-13.4 1.5-24.7-9.8-23.2-23.2l11.1-99.9L451.7 12.3c16.4-16.4 43-16.4 59.4 0l52.6 52.6c16.4 16.4 16.4 43 0 59.4zm-93.6 48.4L403.4 106 169.8 339.5l-8.3 75.1 75.1-8.3 233.5-233.6zm71-85.2l-52.6-52.6c-3.8-3.8-10.2-4-14.1 0L426 83.3l66.7 66.7 48.4-48.4c3.9-3.8 3.9-10.2 0-14.1z',\n },\n stickyNote: {\n width: 512,\n height: 512,\n path: 'M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm32 352c0 17.6-14.4 32-32 32H293.3l-8.5 6.4L192 460v-76H64c-17.6 0-32-14.4-32-32V64c0-17.6 14.4-32 32-32h384c17.6 0 32 14.4 32 32v288zM280 240H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h144c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8zm96-96H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h240c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8z',\n bg: 'M 448,0 H 64 C 28.7,0 0,28.7 0,64 v 288 c 0,35.3 28.7,64 64,64 h 96 v 84 c 0,7.1 5.8,12 12,12 2.4,0 4.9,-0.7 7.1,-2.4 L 304,416 h 144 c 35.3,0 64,-28.7 64,-64 V 64 C 512,28.7 483.3,0 448,0 Z',\n },\n stickyNoteAdd: {\n width: 512,\n height: 512,\n path: 'M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm32 352c0 17.6-14.4 32-32 32H293.3l-8.5 6.4L192 460v-76H64c-17.6 0-32-14.4-32-32V64c0-17.6 14.4-32 32-32h384c17.6 0 32 14.4 32 32v288zM344 192h-72v-72c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v72h-72c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h72v72c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-72h72c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8z',\n },\n stickyNoteEdit: {\n width: 512,\n height: 512,\n path: 'M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm32 352c0 17.6-14.4 32-32 32H293.3l-8.5 6.4L192 460v-76H64c-17.6 0-32-14.4-32-32V64c0-17.6 14.4-32 32-32h384c17.6 0 32 14.4 32 32v288zM336 105.4c-12.5-12.5-32.8-12.5-45.2 0l-126.1 126c-2 2-3.4 4.5-4.2 7.3l-16 61.2c-1.4 5.5.1 11.3 4.2 15.4 3 3 7.1 4.7 11.3 4.7 1.3 0 2.7-.2 4-.5l61.2-16c2.8-.7 5.3-2.2 7.3-4.2l126.1-126.1c12.5-12.5 12.5-32.8 0-45.2L336 105.4zM213 273.6l-30.6 8 8-30.6 75-75 22.6 22.6-75 75zm97.6-97.6L288 153.4l25.4-25.4 22.6 22.6-25.4 25.4z',\n },\n stickyNoteRemove: {\n width: 640,\n height: 512,\n path: 'M637 485.2l-96.7-76.1-22.5-17.7-443.2-349-5.2-4.1L23 1.8C19.6-1 14.5-.4 11.8 3l-10 12.5C-1 19-.4 24 3 26.8l61 48L96 100l360.7 284 15.9 12.5L617 510.2c3.4 2.8 8.5 2.2 11.2-1.2l10-12.5c2.8-3.5 2.2-8.5-1.2-11.3zM368 384h-10.7l-8.5 6.4L256 460v-76H128c-17.6 0-32-14.4-32-32V161.1l-32-25.2V352c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L368 416h51.7l-40.6-32H368zM512 32c17.6 0 32 14.4 32 32v286.9l28.2 22.2c2.3-6.6 3.8-13.7 3.8-21.1V64c0-35.3-28.7-64-64-64H128c-8.4 0-16.4 1.7-23.7 4.7L139 32h373z',\n },\n nextMatch: {\n width: 448,\n height: 512,\n path: 'M311.03 131.515l-7.071 7.07c-4.686 4.686-4.686 12.284 0 16.971L387.887 239H12c-6.627 0-12 5.373-12 12v10c0 6.627 5.373 12 12 12h375.887l-83.928 83.444c-4.686 4.686-4.686 12.284 0 16.971l7.071 7.07c4.686 4.686 12.284 4.686 16.97 0l116.485-116c4.686-4.686 4.686-12.284 0-16.971L328 131.515c-4.686-4.687-12.284-4.687-16.97 0z',\n },\n previousMatch: {\n width: 448,\n height: 512,\n path: 'M136.97 380.485l7.071-7.07c4.686-4.686 4.686-12.284 0-16.971L60.113 273H436c6.627 0 12-5.373 12-12v-10c0-6.627-5.373-12-12-12H60.113l83.928-83.444c4.686-4.686 4.686-12.284 0-16.971l-7.071-7.07c-4.686-4.686-12.284-4.686-16.97 0l-116.485 116c-4.686 4.686-4.686 12.284 0 16.971l116.485 116c4.686 4.686 12.284 4.686 16.97-.001z',\n },\n outlineOpen: {\n width: 320,\n height: 512,\n path: 'M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z',\n },\n outlineClosed: {\n width: 192,\n height: 512,\n path: 'M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z',\n },\n dropdownCaret: {\n width: 448,\n height: 512,\n path: 'M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z',\n },\n addLayer: {\n width: 512,\n height: 512,\n path: 'M504 96h-88V8c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v88h-88c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h88v88c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-88h88c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm-6.77 270.71l-99.72-42.87 99.72-42.87c8.35-3.6 12.19-13.23 8.58-21.52-3.65-8.29-13.32-12.13-21.74-8.48l-225.32 96.86c-1.81.77-3.74.77-5.48 0L45.23 258.4l193.45-83.16c8.35-3.59 12.19-13.23 8.58-21.52-3.65-8.28-13.26-12.13-21.74-8.48L14.81 235.81C5.81 239.66 0 248.52 0 258.4c0 9.87 5.81 18.74 14.77 22.58l99.73 42.87-99.7 42.85C5.81 370.55 0 379.42 0 389.31c0 9.87 5.81 18.74 14.77 22.58l225.32 96.84c5.06 2.17 10.48 3.28 15.9 3.28s10.84-1.09 15.9-3.28l225.29-96.83c9-3.85 14.81-12.72 14.81-22.59.01-9.89-5.8-18.76-14.76-22.6zM258.74 478.72c-1.81.77-3.74.77-5.48 0L45.23 389.29 156 341.68l84.1 36.15c5.06 2.17 10.48 3.28 15.9 3.28s10.84-1.09 15.9-3.28l84.12-36.16 110.78 47.62-208.06 89.43z',\n },\n eraser: {\n width: 512,\n height: 512,\n path: 'M497.942 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.744-18.744-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48 48 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-8c0-6.627-5.373-12-12-12H323.883l174.059-174.059zM292.686 68.687c6.243-6.243 16.374-6.254 22.628-.001l160 160c6.243 6.243 6.253 16.374 0 22.627L358.627 368.001 176 185.373 292.686 68.687zM144 448a15.895 15.895 0 0 1-11.314-4.686l-96-96c-6.243-6.243-6.253-16.374 0-22.627L153.373 208 336 390.628l-52.686 52.686A15.895 15.895 0 0 1 272 448H144z',\n },\n ok: {\n width: 448,\n height: 512,\n path: 'M413.505 91.951L133.49 371.966l-98.995-98.995c-4.686-4.686-12.284-4.686-16.971 0L6.211 284.284c-4.686 4.686-4.686 12.284 0 16.971l118.794 118.794c4.686 4.686 12.284 4.686 16.971 0l299.813-299.813c4.686-4.686 4.686-12.284 0-16.971l-11.314-11.314c-4.686-4.686-12.284-4.686-16.97 0z',\n },\n alignCenter: {\n width: 448,\n height: 512,\n path: 'M352 52v24a6 6 0 0 1-6 6H102a6 6 0 0 1-6-6V52a6 6 0 0 1 6-6h244a6 6 0 0 1 6 6zM6 210h436a6 6 0 0 0 6-6v-24a6 6 0 0 0-6-6H6a6 6 0 0 0-6 6v24a6 6 0 0 0 6 6zm0 256h436a6 6 0 0 0 6-6v-24a6 6 0 0 0-6-6H6a6 6 0 0 0-6 6v24a6 6 0 0 0 6 6zm340-164H102a6 6 0 0 0-6 6v24a6 6 0 0 0 6 6h244a6 6 0 0 0 6-6v-24a6 6 0 0 0-6-6z',\n },\n alignJustify: {\n width: 448,\n height: 512,\n path: 'M0 76V52a6 6 0 0 1 6-6h436a6 6 0 0 1 6 6v24a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6zm6 134h436a6 6 0 0 0 6-6v-24a6 6 0 0 0-6-6H6a6 6 0 0 0-6 6v24a6 6 0 0 0 6 6zm0 256h436a6 6 0 0 0 6-6v-24a6 6 0 0 0-6-6H6a6 6 0 0 0-6 6v24a6 6 0 0 0 6 6zm0-128h436a6 6 0 0 0 6-6v-24a6 6 0 0 0-6-6H6a6 6 0 0 0-6 6v24a6 6 0 0 0 6 6z',\n },\n alignLeft: {\n width: 448,\n height: 512,\n path: 'M288 52v24a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6V52a6 6 0 0 1 6-6h276a6 6 0 0 1 6 6zM6 210h436a6 6 0 0 0 6-6v-24a6 6 0 0 0-6-6H6a6 6 0 0 0-6 6v24a6 6 0 0 0 6 6zm0 256h436a6 6 0 0 0 6-6v-24a6 6 0 0 0-6-6H6a6 6 0 0 0-6 6v24a6 6 0 0 0 6 6zm276-164H6a6 6 0 0 0-6 6v24a6 6 0 0 0 6 6h276a6 6 0 0 0 6-6v-24a6 6 0 0 0-6-6z',\n },\n alignRight: {\n width: 448,\n height: 512,\n path: 'M160 76V52a6 6 0 0 1 6-6h276a6 6 0 0 1 6 6v24a6 6 0 0 1-6 6H166a6 6 0 0 1-6-6zM6 210h436a6 6 0 0 0 6-6v-24a6 6 0 0 0-6-6H6a6 6 0 0 0-6 6v24a6 6 0 0 0 6 6zm0 256h436a6 6 0 0 0 6-6v-24a6 6 0 0 0-6-6H6a6 6 0 0 0-6 6v24a6 6 0 0 0 6 6zm160-128h276a6 6 0 0 0 6-6v-24a6 6 0 0 0-6-6H166a6 6 0 0 0-6 6v24a6 6 0 0 0 6 6z',\n },\n bold: {\n width: 320,\n height: 512,\n path: 'M249.139 242.128c33.922-18.988 53.22-53.503 53.22-95.748 0-42.421-19.499-80.713-49.665-97.55C232.561 37.505 207.478 32 176.01 32H12C5.373 32 0 37.373 0 44v8c0 6.627 5.373 12 12 12h19.95v384H12c-6.627 0-12 5.373-12 12v8c0 6.627 5.373 12 12 12h169.68c19.934 0 45.622-1.177 67.493-10.348C292.198 451.781 320 406.247 320 353.65c0-52.496-28.196-96.372-70.861-111.522zM66.041 64.201H176.01c24.929 0 43.694 4.153 57.357 12.692 21.38 13.439 33.642 38.537 33.642 68.858 0 49.531-32.265 82.81-80.289 82.81H66.041V64.201zm167.194 375.685c-12.585 5.325-29.449 7.914-51.555 7.914H66.041V260.76h124.458c56.314 0 94.151 37.837 94.151 94.151 0 40.208-19.2 71.966-51.415 84.975z',\n },\n italic: {\n width: 256,\n height: 512,\n path: 'M102.791 64h45.215L73.143 448H23.762a12 12 0 0 0-11.764 9.632l-1.61 8C8.892 473.062 14.573 480 22.151 480h128.817a12 12 0 0 0 11.764-9.632l1.61-8c1.495-7.43-4.186-14.368-11.764-14.368h-45.215l74.864-384h50.011a12 12 0 0 0 11.764-9.632l1.61-8C247.108 38.938 241.427 32 233.849 32H104.401a12 12 0 0 0-11.764 9.632l-1.61 8C89.532 57.062 95.213 64 102.791 64z',\n },\n underline: {\n width: 448,\n height: 512,\n path: 'M0 500v-8c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12H12c-6.627 0-12-5.373-12-12zM291.142 12v8c0 6.627 5.373 12 12 12h42.72v226.509c0 85.451-46.451 128.726-122.145 128.726-74.322 0-121.569-40.289-121.569-127.572V32h42.721c6.627 0 12-5.373 12-12v-8c0-6.627-5.373-12-12-12H26.659c-6.627 0-12 5.373-12 12v8c0 6.627 5.373 12 12 12H69.38v228.818c0 106.811 63.591 158.094 154.913 158.094 89.287 0 154.337-52.813 154.337-158.094V32h42.721c6.627 0 12-5.373 12-12v-8c0-6.627-5.373-12-12-12H303.142c-6.628 0-12 5.373-12 12z',\n },\n squiggly: {\n width: 448,\n height: 512,\n path: 'M 111.80004,416.25781 -0.09375,473.46875 v 38.51563 l 111.89379,-57.21094 112.14242,57.33789 112.14243,-57.33985 112.14244,57.33985 V 473.59375 L 336.08881,416.25781 223.94246,473.5957 Z M 291.142,12 v 8 c 0,6.627 5.373,12 12,12 h 42.72 v 226.509 c 0,85.451 -46.451,128.726 -122.145,128.726 -74.322,0 -121.569,-40.289 -121.569,-127.572 V 32 h 42.721 c 6.627,0 12,-5.373 12,-12 v -8 c 0,-6.627 -5.373,-12 -12,-12 H 26.659 c -6.627,0 -12,5.373 -12,12 v 8 c 0,6.627 5.373,12 12,12 H 69.38 v 228.818 c 0,106.811 63.591,158.094 154.913,158.094 89.287,0 154.337,-52.813 154.337,-158.094 V 32 h 42.721 c 6.627,0 12,-5.373 12,-12 v -8 c 0,-6.627 -5.373,-12 -12,-12 H 303.142 c -6.628,0 -12,5.373 -12,12 z',\n },\n strikethrough: {\n width: 512,\n height: 512,\n path: 'M500 272H12c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h488c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-199.246 16c34.104 17.688 58.216 40.984 58.216 83.01 0 57.657-45.969 87.221-104.86 87.221-43.044 0-101.711-17.734-101.711-60.762V388c0-6.627-5.373-12-12-12h-10.72c-6.627 0-12 5.373-12 12v15.77c0 60.082 76.565 87.291 136.431 87.291 78.593 0 140.211-46.632 140.211-123.832 0-35.712-11.87-60.522-30.603-79.229h-62.964zm-137.387-64h74.348c-43.357-17.896-75.865-37.601-75.865-84.203 0-52.844 43.64-79.03 96.041-79.03 32.008 0 90.37 12.598 90.37 44.38V116c0 6.627 5.373 12 12 12h10.721c6.627 0 12-5.373 12-12V96.327c0-44.421-64.45-68.391-125.091-68.391-72.526 0-131.392 41.225-131.392 115.011 0 38.214 14.813 63.053 36.868 81.053z',\n },\n fontColor: {\n width: 448,\n height: 512,\n path: 'M232.594 32h-17.187a11.998 11.998 0 0 0-11.239 7.796L51.473 448H28c-6.627 0-12 5.373-12 12v8c0 6.627 5.373 12 12 12h88c6.627 0 12-5.373 12-12v-8c0-6.627-5.373-12-12-12H87.913l44.651-120.46h182.253L360.063 448H332c-6.627 0-12 5.373-12 12v8c0 6.627 5.373 12 12 12h88c6.627 0 12-5.373 12-12v-8c0-6.627-5.373-12-12-12h-23.473L243.833 39.796A12 12 0 0 0 232.594 32zm-87.958 263.34l75.696-201.241c1.5-3.857 2.714-7.827 3.668-11.427.95 3.589 2.159 7.544 3.651 11.382l75.098 201.286H144.636z',\n },\n fillColor: {\n width: 576,\n height: 512,\n path: 'M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm0 160c-17.64 0-32-14.36-32-31.96.26-9.78 13.57-37.67 32.01-68.73 18.43 31.04 31.73 58.91 31.99 68.69 0 17.64-14.36 32-32 32zm-9.37-262.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-92.85 92.85L56.97 2.35c-3.12-3.12-8.19-3.12-11.31 0L34.34 13.66c-3.12 3.12-3.12 8.19 0 11.31l99.88 99.88-106.1 106.1c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.76.01-45.26zm-244.2 244.2C246.34 473.34 230.27 480 213.18 480s-33.16-6.66-45.24-18.74l-117.2-117.2c-6.88-6.88-11.77-15.14-14.91-24.06h363.85L258.43 461.26zM431.68 288H33.06c2.2-12.96 8.2-24.94 17.69-34.43l106.09-106.11 87.85 87.85c6.25 6.25 16.38 6.25 22.62 0 6.25-6.25 6.25-16.38 0-22.62l-87.85-87.85L272.29 32h.02L480 239.68 431.68 288z',\n },\n drop: {\n width: 352,\n height: 512,\n path: 'M205.22 22.09C201.21 7.53 188.61 0 175.97 0c-12.35 0-24.74 7.2-29.19 22.09C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 480c-79.4 0-144-65.54-144-146.09 0-48.36 23-81.32 54.84-126.94 29.18-41.81 65.34-93.63 89.18-170.91 23.83 77.52 60.06 129.31 89.3 171.08C297.06 252.52 320 285.3 320 333.91 320 414.46 255.4 480 176 480zm0-64c-44.12 0-80-35.89-80-80 0-8.84-7.16-16-16-16s-16 7.16-16 16c0 61.75 50.25 112 112 112 8.84 0 16-7.16 16-16s-7.16-16-16-16z',\n },\n checkbox: {\n width: 448,\n height: 512,\n path: 'M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm16 400c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16h352c8.8 0 16 7.2 16 16v352z',\n },\n checkboxChecked: {\n width: 448,\n height: 512,\n path: 'M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm0 32c8.823 0 16 7.178 16 16v352c0 8.822-7.177 16-16 16H48c-8.822 0-16-7.178-16-16V80c0-8.822 7.178-16 16-16h352m-34.301 98.293l-8.451-8.52c-4.667-4.705-12.265-4.736-16.97-.068l-163.441 162.13-68.976-69.533c-4.667-4.705-12.265-4.736-16.97-.068l-8.52 8.451c-4.705 4.667-4.736 12.265-.068 16.97l85.878 86.572c4.667 4.705 12.265 4.736 16.97.068l180.48-179.032c4.704-4.667 4.735-12.265.068-16.97z',\n },\n pageLayoutModeNone: {\n width: 512,\n height: 512,\n path: 'M 404.00446,340.39588 H 307.417 c -8.8907,0 -16.09791,-7.20735 -16.09791,-16.0979 V 226.90563 H 129.53513 c -9.33519,0 -16.90281,7.56764 -16.90281,16.90282 V 508.86602 H 82.046291 V 243.80845 c 0,-26.22737 21.261469,-47.48883 47.488839,-47.48883 h 185.16393 c 13.26225,0 25.94064,5.4538 35.06108,15.08212 l 76.00853,80.24116 c 5.66469,5.9802 8.82181,13.90391 8.82181,22.14106 v 195.63997 h -30.58602 z m -1.01739,-27.15345 -79.47231,-86.3368 h -1.60979 v 86.3368 z M 82.851029,3.1447104 H 113.43705 V 99.732162 c 0,9.335168 7.56762,16.902808 16.90282,16.902808 h 257.56652 c 9.33518,0 16.9028,-7.56764 16.9028,-16.902808 V 3.1447104 h 30.58603 V 99.732162 c 0,26.227348 -21.26147,47.488828 -47.48883,47.488828 H 130.33987 c -26.22737,0 -47.488841,-21.26148 -47.488841,-47.488828 z',\n },\n pageLayoutModeSinglePage: {\n width: 384,\n height: 512,\n path: 'M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zm-22.6 22.7c2.1 2.1 3.5 4.6 4.2 7.4H256V32.5c2.8.7 5.3 2.1 7.4 4.2l83.9 83.9zM336 480H48c-8.8 0-16-7.2-16-16V48c0-8.8 7.2-16 16-16h176v104c0 13.3 10.7 24 24 24h104v304c0 8.8-7.2 16-16 16z',\n },\n warning: {\n width: 576,\n height: 512,\n path: 'M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.054-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.952 83.154 0l239.94 416.028zm-27.658 15.991l-240-416c-6.16-10.678-21.583-10.634-27.718 0l-240 416C27.983 466.678 35.731 480 48 480h480c12.323 0 19.99-13.369 13.859-23.996zM288 372c-15.464 0-28 12.536-28 28s12.536 28 28 28 28-12.536 28-28-12.536-28-28-28zm-11.49-212h22.979c6.823 0 12.274 5.682 11.99 12.5l-7 168c-.268 6.428-5.556 11.5-11.99 11.5h-8.979c-6.433 0-11.722-5.073-11.99-11.5l-7-168c-.283-6.818 5.167-12.5 11.99-12.5zM288 372c-15.464 0-28 12.536-28 28s12.536 28 28 28 28-12.536 28-28-12.536-28-28-28z',\n },\n lock: {\n width: 448,\n height: 512,\n path: 'M224 420c-11 0-20-9-20-20v-64c0-11 9-20 20-20s20 9 20 20v64c0 11-9 20-20 20zm224-148v192c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V272c0-26.5 21.5-48 48-48h16v-64C64 71.6 136-.3 224.5 0 312.9.3 384 73.1 384 161.5V224h16c26.5 0 48 21.5 48 48zM96 224h256v-64c0-70.6-57.4-128-128-128S96 89.4 96 160v64zm320 240V272c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h352c8.8 0 16-7.2 16-16z',\n },\n unlock: {\n width: 640,\n height: 512,\n path: 'M227 417c-11 0-20-9-20-20v-64c0-11 9-20 20-20s20 9 20 20v64c0 11-9 20-20 20zM480.5 0C392-.3 320 71.6 320 160v64H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-62.6c0-70.7 56.7-129 127.3-129.4C550.2 31.6 608 89.2 608 160v84c0 6.6 5.4 12 12 12h8c6.6 0 12-5.4 12-12v-82.5C640 73.1 568.9.3 480.5 0zM400 256c8.8 0 16 7.2 16 16v192c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h352z',\n },\n history: {\n width: 512,\n height: 512,\n path: 'M20 24h10c6.627 0 12 5.373 12 12v94.625C85.196 57.047 165.239 7.715 256.793 8.001 393.18 8.428 504.213 120.009 504 256.396 503.786 393.181 392.834 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.354-12.561-.482-17.433l7.069-7.069c4.503-4.503 11.749-4.714 16.482-.454C150.782 449.238 200.935 470 256 470c117.744 0 214-95.331 214-214 0-117.744-95.331-214-214-214-82.862 0-154.737 47.077-190.289 116H164c6.627 0 12 5.373 12 12v10c0 6.627-5.373 12-12 12H20c-6.627 0-12-5.373-12-12V36c0-6.627 5.373-12 12-12zm321.647 315.235l4.706-6.47c3.898-5.36 2.713-12.865-2.647-16.763L272 263.853V116c0-6.627-5.373-12-12-12h-8c-6.627 0-12 5.373-12 12v164.147l84.884 61.734c5.36 3.899 12.865 2.714 16.763-2.646z',\n },\n error: {\n width: 512,\n height: 512,\n path: 'M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z',\n },\n pdfFile: {\n width: 384,\n height: 512,\n path: 'M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zm-22.6 22.7c2.1 2.1 3.5 4.6 4.2 7.4H256V32.5c2.8.7 5.3 2.1 7.4 4.2l83.9 83.9zM336 480H48c-8.8 0-16-7.2-16-16V48c0-8.8 7.2-16 16-16h176v104c0 13.3 10.7 24 24 24h104v304c0 8.8-7.2 16-16 16zm-48-244v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm0 64v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm0 64v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12z',\n },\n fileError: {\n width: 384,\n height: 512,\n path: 'M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zm-22.6 22.7c2.1 2.1 3.5 4.6 4.2 7.4H256V32.5c2.8.7 5.3 2.1 7.4 4.2l83.9 83.9zM336 480H48c-8.8 0-16-7.2-16-16V48c0-8.8 7.2-16 16-16h176v104c0 13.3 10.7 24 24 24h104v304c0 8.8-7.2 16-16 16zm-73.3-127.9c4.7 4.7 4.7 12.3 0 17l-5.7 5.7c-4.7 4.7-12.3 4.7-17 0l-48-48.2-48.1 48.1c-4.7 4.7-12.3 4.7-17 0l-5.7-5.7c-4.7-4.7-4.7-12.3 0-17l48.1-48.1-48.1-48.1c-4.7-4.7-4.7-12.3 0-17l5.7-5.7c4.7-4.7 12.3-4.7 17 0l48.1 48.1 48.1-48.1c4.7-4.7 12.3-4.7 17 0l5.7 5.7c4.7 4.7 4.7 12.3 0 17L214.6 304l48.1 48.1z',\n },\n sidePaneThumbnails: {\n width: 512,\n height: 512,\n path: 'M 111.73 0.28125 C 85.231 0.28125 63.73 21.781 63.73 48.281 L 63.73 63.73 L 48.359 63.73 C 21.859 63.73 0.35938 85.231 0.35938 111.73 L 0.35938 463.73 C 0.35938 490.23 21.859 511.73 48.359 511.73 L 400.36 511.73 C 426.86 511.73 448.36 490.23 448.36 463.73 L 448.36 448.28 L 463.73 448.28 C 490.23 448.28 511.73 426.78 511.73 400.28 L 511.73 48.281 C 511.73 21.781 490.23 0.28125 463.73 0.28125 L 111.73 0.28125 z M 111.73 32.281 L 463.73 32.281 C 472.55 32.281 479.73 39.461 479.73 48.281 L 479.73 400.28 C 479.73 409.1 472.55 416.28 463.73 416.28 L 448.36 416.28 L 448.36 111.73 C 448.36 85.231 426.86 63.73 400.36 63.73 L 95.73 63.73 L 95.73 48.281 C 95.73 39.461 102.91 32.281 111.73 32.281 z M 48.359 95.73 L 400.36 95.73 C 409.18 95.73 416.36 102.91 416.36 111.73 L 416.36 463.73 C 416.36 472.55 409.18 479.73 400.36 479.73 L 48.359 479.73 C 39.539 479.73 32.359 472.55 32.359 463.73 L 32.359 111.73 C 32.359 102.91 39.539 95.73 48.359 95.73 z M 104.36 175.73 C 99.938 175.73 96.359 179.31 96.359 183.73 L 96.359 199.73 C 96.359 204.15 99.938 207.73 104.36 207.73 L 248.36 207.73 C 252.78 207.73 256.36 204.15 256.36 199.73 L 256.36 183.73 C 256.36 179.31 252.78 175.73 248.36 175.73 L 104.36 175.73 z M 104.36 271.73 C 99.938 271.73 96.359 275.31 96.359 279.73 L 96.359 295.73 C 96.359 300.15 99.938 303.73 104.36 303.73 L 344.36 303.73 C 348.78 303.73 352.36 300.15 352.36 295.73 L 352.36 279.73 C 352.36 275.31 348.78 271.73 344.36 271.73 L 104.36 271.73 z M 104.36 367.73 C 99.938 367.73 96.359 371.31 96.359 375.73 L 96.359 391.73 C 96.359 396.15 99.938 399.73 104.36 399.73 L 184.36 399.73 C 188.78 399.73 192.36 396.15 192.36 391.73 L 192.36 375.73 C 192.36 371.31 188.78 367.73 184.36 367.73 L 104.36 367.73 z',\n },\n sidePaneAnnotation: {\n width: 512,\n height: 512,\n path: 'M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm32 352c0 17.6-14.4 32-32 32H293.3l-8.5 6.4L192 460v-76H64c-17.6 0-32-14.4-32-32V64c0-17.6 14.4-32 32-32h384c17.6 0 32 14.4 32 32v288zM280 240H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h144c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8zm96-96H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h240c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8z',\n },\n sidePaneOutline: {\n width: 512,\n height: 512,\n path: 'M88 56H40a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h48a16 16 0 0 0 16-16V72a16 16 0 0 0-16-16zm0 160H40a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h48a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16zm0 160H40a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h48a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16zm416 24H168a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h336a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8zm0-320H168a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h336a8 8 0 0 0 8-8V88a8 8 0 0 0-8-8zm0 160H168a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h336a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8z',\n },\n annotation: {\n width: 512,\n height: 512,\n path: 'M256 64c123.5 0 224 79 224 176S379.5 416 256 416c-28.3 0-56.3-4.3-83.2-12.8l-15.2-4.8-13 9.2c-23 16.3-58.5 35.3-102.6 39.6 12-15.1 29.8-40.4 40.8-69.6l7.1-18.7-13.7-14.6C47.3 313.7 32 277.6 32 240c0-97 100.5-176 224-176m0-32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26 3.8 8.8 12.4 14.5 22 14.5 61.5 0 110-25.7 139.1-46.3 29 9.1 60.2 14.3 93 14.3 141.4 0 256-93.1 256-208S397.4 32 256 32z',\n bg: 'M 256,32 C 114.6,32 0,125.1 0,240 0,287.6 19.9,331.2 52.9,366.3 38,405.7 7,439.1 6.5,439.5 c -6.6,7 -8.4,17.2 -4.6,26 3.8,8.8 12.4,14.5 22,14.5 61.5,0 110,-25.7 139.1,-46.3 29,9.1 60.2,14.3 93,14.3 141.4,0 256,-93.1 256,-208 C 512,125.1 397.4,32 256,32 Z',\n },\n highlighter: {\n width: 544,\n height: 512,\n path: 'M528.61 75.91l-60.49-60.52C457.91 5.16 444.45 0 430.98 0a52.38 52.38 0 0 0-34.75 13.15L110.59 261.8c-10.29 9.08-14.33 23.35-10.33 36.49l12.49 41.02-36.54 36.56c-6.74 6.75-6.74 17.68 0 24.43l.25.26L0 479.98 99.88 512l43.99-44.01.02.02c6.75 6.75 17.69 6.75 24.44 0l36.46-36.47 40.91 12.53c18.01 5.51 31.41-4.54 36.51-10.32l248.65-285.9c18.35-20.82 17.37-52.32-2.25-71.94zM91.05 475.55l-32.21-10.33 40.26-42.03 22.14 22.15-30.19 30.21zm167.16-62.99c-.63.72-1.4.94-2.32.94-.26 0-.54-.02-.83-.05l-40.91-12.53-18.39-5.63-39.65 39.67-46.85-46.88 39.71-39.72-5.6-18.38-12.49-41.02c-.34-1.13.01-2.36.73-3l44.97-39.15 120.74 120.8-39.11 44.95zm248.51-285.73L318.36 343.4l-117.6-117.66L417.4 37.15c4.5-3.97 17.55-9.68 28.1.88l60.48 60.52c7.65 7.65 8.04 20 .74 28.28z',\n bg: 'M 528.61,75.91 468.12,15.39 C 457.91,5.16 444.45,0 430.98,0 418.17896,-0.01016736 405.81733,4.6676871 396.23,13.15 L 110.59,261.8 c -10.29,9.08 -14.33,23.35 -10.33,36.49 l 12.49,41.02 -36.54,36.56 c -6.74,6.75 -6.74,17.68 0,24.43 l 0.25,0.26 L 0,479.98 99.88,512 l 43.99,-44.01 0.02,0.02 c 6.75,6.75 17.69,6.75 24.44,0 l 36.46,-36.47 40.91,12.53 c 18.01,5.51 31.41,-4.54 36.51,-10.32 l 248.65,-285.9 c 18.35,-20.82 17.37,-52.32 -2.25,-71.94 z',\n },\n rectangularHighlighter: {\n width: 512,\n height: 512,\n path: 'M486.4 128c14.14 0 25.6-11.46 25.6-25.6V25.6C512 11.46 500.54 0 486.4 0h-76.8C395.46 0 384 11.46 384 25.6V48H128V25.6C128 11.46 116.54 0 102.4 0H25.6C11.46 0 0 11.46 0 25.6v76.8C0 116.54 11.46 128 25.6 128H48v256H25.6C11.46 384 0 395.46 0 409.6v76.8C0 500.54 11.46 512 25.6 512h76.8c14.14 0 25.6-11.46 25.6-25.6V464h256v22.4c0 14.14 11.46 25.6 25.6 25.6h76.8c14.14 0 25.6-11.46 25.6-25.6v-76.8c0-14.14-11.46-25.6-25.6-25.6H464V128h22.4zM416 32h64v64h-64V32zM32 96V32h64v64H32zm64 384H32v-64h64v64zm384-64v64h-64v-64h64zm-48-32h-22.4c-14.14 0-25.6 11.46-25.6 25.6V432H128v-22.4c0-14.14-11.46-25.6-25.6-25.6H80V128h22.4c14.14 0 25.6-11.46 25.6-25.6V80h256v22.4c0 14.14 11.46 25.6 25.6 25.6H432v256z',\n },\n pencil: {\n width: 512,\n height: 512,\n path: 'M493.255 56.236l-37.49-37.49c-24.993-24.993-65.515-24.994-90.51 0L12.838 371.162.151 485.346c-1.698 15.286 11.22 28.203 26.504 26.504l114.184-12.687 352.417-352.417c24.992-24.994 24.992-65.517-.001-90.51zm-95.196 140.45L174 420.745V386h-48v-48H91.255l224.059-224.059 82.745 82.745zM126.147 468.598l-58.995 6.555-30.305-30.305 6.555-58.995L63.255 366H98v48h48v34.745l-19.853 19.853zm344.48-344.48l-49.941 49.941-82.745-82.745 49.941-49.941c12.505-12.505 32.748-12.507 45.255 0l37.49 37.49c12.506 12.506 12.507 32.747 0 45.255z',\n bg: 'm 493.255,56.236 -37.49,-37.49 c -24.993,-24.993 -65.515,-24.994 -90.51,0 L 12.838,371.162 0.151,485.346 c -1.698,15.286 11.22,28.203 26.504,26.504 L 140.839,499.163 493.256,146.746 c 24.992,-24.994 24.992,-65.517 -10e-4,-90.51 z',\n },\n freeText: {\n width: 512,\n height: 512,\n path: 'm 460,81 v 72 c 0,4.42 -3.58,8 -8,8 h -16 c -4.42,0 -8,-3.58 -8,-8 V 97 H 272 v 338 h 72 c 4.42,0 8,3.58 8,8 v 16 c 0,4.42 -3.58,8 -8,8 H 168 c -4.42,0 -8,-3.58 -8,-8 v -16 c 0,-4.42 3.58,-8 8,-8 h 72 V 97 H 84 v 56 c 0,4.42 -3.582,8 -8,8 H 60 c -4.418,0 -8,-3.58 -8,-8 V 81 c 0,-8.837 7.163,-16 16,-16 h 376 c 8.84,0 16,7.163 16,16 z',\n bg: 'M512 512H0V0h512v512z',\n },\n stamp: {\n width: 508,\n height: 512,\n path: 'm 333.71644,332.74589 h 121.26625 l 52.08896,87.08726 H 508.009 V 512.0005 H 0 V 419.83315 H 0.80598227 L 54.686486,332.74589 H 178.89175 V 241.68498 C 139.83419,229.2037 120.83357,188.0785 120.83357,122.28502 120.83357,50.03435 163.8049,8.54414 246.15327,0.3862 V 0 h 4.2226 14.81043 v 0.26345 c 83.1756,7.85642 126.58831,49.40078 126.58831,122.02157 0,65.79348 -19.00062,106.91868 -58.05817,119.39996 z m 0,26.85191 v 11.42093 l -0.57524,1.90136 c -7.77664,25.70458 -26.80014,40.76443 -54.91507,44.75071 -3.13022,0.44382 -6.37313,0.75038 -9.72577,0.91907 2e-5,0.0515 5e-5,0.10303 8e-5,0.15469 h -18.12457 -4.2226 c 0,-0.0231 0,-0.0462 0,-0.0693 -34.59286,-1.15044 -57.8689,-16.6105 -66.68629,-45.75514 l -0.57523,-1.90136 V 359.5978 H 70.109423 L 33.186454,419.83315 H 474.69705 l -35.1373,-60.23535 z m -72.20597,-332.75872 -5.41897,-0.0189 -4.95803,0.0158 C 180.53972,32.90225 147.68548,63.8059 147.68548,122.285 c 0,60.26373 16.08094,90.41551 46.87034,95.62098 l 11.18782,1.8915 v 147.12358 c 5.83066,16.85951 19.64352,24.97158 44.63223,24.97158 h 5.92822 5.92822 c 24.9887,0 38.80158,-8.11207 44.63222,-24.97158 V 219.79748 l 11.18782,-1.8915 c 30.7894,-5.20547 46.87035,-35.35725 46.87035,-95.62098 0,-58.46923 -32.84314,-89.37232 -103.41223,-95.44594 z M 26.96748,485.1486 H 481.04152 V 446.68506 H 26.96748 Z',\n bg: 'm 333.71644,332.74589 h 121.26625 l 52.08896,87.08726 H 508.009 V 512.0005 H 0 V 419.83315 H 0.80598227 L 54.686486,332.74589 H 178.89175 V 241.68498 C 139.83419,229.2037 120.83357,188.0785 120.83357,122.28502 120.83357,50.03435 163.8049,8.54414 246.15327,0.3862 V 0 h 4.2226 14.81043 v 0.26345 c 83.1756,7.85642 126.58831,49.40078 126.58831,122.02157 0,65.79348 -19.00062,106.91868 -58.05817,119.39996 z',\n },\n redaction: {\n width: 512,\n height: 512,\n path: 'M 256 341.332031 L 256 426.667969 L 64 426.667969 L 64 341.332031 Z M 448 384 L 448 405.332031 L 298.667969 405.332031 L 298.667969 384 Z M 448 213.332031 L 448 298.667969 L 64 298.667969 L 64 213.332031 Z M 448 85.332031 L 448 170.667969 L 256 170.667969 L 256 85.332031 Z M 213.332031 128 L 213.332031 149.332031 L 64 149.332031 L 64 128 Z M 213.332031 128',\n },\n rotate: {\n width: 512,\n height: 512,\n path: 'M492 8h-10c-6.627 0-12 5.373-12 12v110.625C426.804 57.047 346.761 7.715 255.207 8.001 118.82 8.428 7.787 120.009 8 256.396 8.214 393.181 119.166 504 256 504c63.926 0 122.202-24.187 166.178-63.908 5.113-4.618 5.354-12.561.482-17.433l-7.069-7.069c-4.503-4.503-11.749-4.714-16.482-.454C361.218 449.238 311.065 470 256 470c-117.744 0-214-95.331-214-214 0-117.744 95.331-214 214-214 82.862 0 154.737 47.077 190.289 116H332c-6.627 0-12 5.373-12 12v10c0 6.627 5.373 12 12 12h160c6.627 0 12-5.373 12-12V20c0-6.627-5.373-12-12-12z',\n },\n rotateLeft: {\n width: 512,\n height: 512,\n path: 'M20 8h10c6.627 0 12 5.373 12 12v110.625C85.196 57.047 165.239 7.715 256.793 8.001 393.18 8.428 504.213 120.009 504 256.396 503.786 393.181 392.834 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.354-12.561-.482-17.433l7.069-7.069c4.503-4.503 11.749-4.714 16.482-.454C150.782 449.238 200.935 470 256 470c117.744 0 214-95.331 214-214 0-117.744-95.331-214-214-214-82.862 0-154.737 47.077-190.289 116H180c6.627 0 12 5.373 12 12v10c0 6.627-5.373 12-12 12H20c-6.627 0-12-5.373-12-12V20c0-6.627 5.373-12 12-12z',\n },\n rotateRight: {\n width: 512,\n height: 512,\n path: 'M492 8h-10c-6.627 0-12 5.373-12 12v110.625C426.804 57.047 346.761 7.715 255.207 8.001 118.82 8.428 7.787 120.009 8 256.396 8.214 393.181 119.166 504 256 504c63.926 0 122.202-24.187 166.178-63.908 5.113-4.618 5.354-12.561.482-17.433l-7.069-7.069c-4.503-4.503-11.749-4.714-16.482-.454C361.218 449.238 311.065 470 256 470c-117.744 0-214-95.331-214-214 0-117.744 95.331-214 214-214 82.862 0 154.737 47.077 190.289 116H332c-6.627 0-12 5.373-12 12v10c0 6.627 5.373 12 12 12h160c6.627 0 12-5.373 12-12V20c0-6.627-5.373-12-12-12z',\n },\n close: {\n width: 320,\n height: 512,\n path: 'M193.94 256L296.5 153.44l21.15-21.15c3.12-3.12 3.12-8.19 0-11.31l-22.63-22.63c-3.12-3.12-8.19-3.12-11.31 0L160 222.06 36.29 98.34c-3.12-3.12-8.19-3.12-11.31 0L2.34 120.97c-3.12 3.12-3.12 8.19 0 11.31L126.06 256 2.34 379.71c-3.12 3.12-3.12 8.19 0 11.31l22.63 22.63c3.12 3.12 8.19 3.12 11.31 0L160 289.94 262.56 392.5l21.15 21.15c3.12 3.12 8.19 3.12 11.31 0l22.63-22.63c3.12-3.12 3.12-8.19 0-11.31L193.94 256z',\n },\n options: {\n width: 512,\n height: 512,\n path: 'M482.696 299.276l-32.61-18.827a195.168 195.168 0 0 0 0-48.899l32.61-18.827c9.576-5.528 14.195-16.902 11.046-27.501-11.214-37.749-31.175-71.728-57.535-99.595-7.634-8.07-19.817-9.836-29.437-4.282l-32.562 18.798a194.125 194.125 0 0 0-42.339-24.48V38.049c0-11.13-7.652-20.804-18.484-23.367-37.644-8.909-77.118-8.91-114.77 0-10.831 2.563-18.484 12.236-18.484 23.367v37.614a194.101 194.101 0 0 0-42.339 24.48L105.23 81.345c-9.621-5.554-21.804-3.788-29.437 4.282-26.36 27.867-46.321 61.847-57.535 99.595-3.149 10.599 1.47 21.972 11.046 27.501l32.61 18.827a195.168 195.168 0 0 0 0 48.899l-32.61 18.827c-9.576 5.528-14.195 16.902-11.046 27.501 11.214 37.748 31.175 71.728 57.535 99.595 7.634 8.07 19.817 9.836 29.437 4.283l32.562-18.798a194.08 194.08 0 0 0 42.339 24.479v37.614c0 11.13 7.652 20.804 18.484 23.367 37.645 8.909 77.118 8.91 114.77 0 10.831-2.563 18.484-12.236 18.484-23.367v-37.614a194.138 194.138 0 0 0 42.339-24.479l32.562 18.798c9.62 5.554 21.803 3.788 29.437-4.283 26.36-27.867 46.321-61.847 57.535-99.595 3.149-10.599-1.47-21.972-11.046-27.501zm-65.479 100.461l-46.309-26.74c-26.988 23.071-36.559 28.876-71.039 41.059v53.479a217.145 217.145 0 0 1-87.738 0v-53.479c-33.621-11.879-43.355-17.395-71.039-41.059l-46.309 26.74c-19.71-22.09-34.689-47.989-43.929-75.958l46.329-26.74c-6.535-35.417-6.538-46.644 0-82.079l-46.329-26.74c9.24-27.969 24.22-53.869 43.929-75.969l46.309 26.76c27.377-23.434 37.063-29.065 71.039-41.069V44.464a216.79 216.79 0 0 1 87.738 0v53.479c33.978 12.005 43.665 17.637 71.039 41.069l46.309-26.76c19.709 22.099 34.689 47.999 43.929 75.969l-46.329 26.74c6.536 35.426 6.538 46.644 0 82.079l46.329 26.74c-9.24 27.968-24.219 53.868-43.929 75.957zM256 160c-52.935 0-96 43.065-96 96s43.065 96 96 96 96-43.065 96-96-43.065-96-96-96zm0 160c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64z',\n },\n delete: {\n width: 512,\n height: 512,\n path: 'M368 64l-33.6-44.8C325.3 7.1 311.1 0 296 0h-80c-15.1 0-29.3 7.1-38.4 19.2L144 64H40c-13.3 0-24 10.7-24 24v2c0 3.3 2.7 6 6 6h20.9l33.2 372.3C78.3 493 99 512 123.9 512h264.2c24.9 0 45.6-19 47.8-43.7L469.1 96H490c3.3 0 6-2.7 6-6v-2c0-13.3-10.7-24-24-24H368zM216 32h80c5 0 9.8 2.4 12.8 6.4L328 64H184l19.2-25.6c3-4 7.8-6.4 12.8-6.4zm188 433.4c-.7 8.3-7.6 14.6-15.9 14.6H123.9c-8.3 0-15.2-6.3-15.9-14.6L75 96h362l-33 369.4z',\n },\n copy: {\n width: 448,\n height: 512,\n path: 'M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM352 32.491a15.88 15.88 0 0 1 7.431 4.195l51.882 51.883A15.885 15.885 0 0 1 415.508 96H352V32.491zM288 464c0 8.822-7.178 16-16 16H48c-8.822 0-16-7.178-16-16V144c0-8.822 7.178-16 16-16h80v240c0 26.51 21.49 48 48 48h112v48zm128-96c0 8.822-7.178 16-16 16H176c-8.822 0-16-7.178-16-16V48c0-8.822 7.178-16 16-16h144v72c0 13.2 10.8 24 24 24h72v240z',\n },\n created: {\n width: 448,\n height: 512,\n path: 'M400 64c8.8 0 16 7.2 16 16v352c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16h352m0-32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-60 206h-98v-98c0-6.6-5.4-12-12-12h-12c-6.6 0-12 5.4-12 12v98h-98c-6.6 0-12 5.4-12 12v12c0 6.6 5.4 12 12 12h98v98c0 6.6 5.4 12 12 12h12c6.6 0 12-5.4 12-12v-98h98c6.6 0 12-5.4 12-12v-12c0-6.6-5.4-12-12-12z',\n },\n pen: {\n width: 512,\n height: 512,\n path: 'M493.25 56.26l-37.51-37.51C443.25 6.25 426.87 0 410.49 0s-32.76 6.25-45.26 18.74L12.85 371.12.15 485.34C-1.45 499.72 9.88 512 23.95 512c.89 0 1.78-.05 2.69-.15l114.14-12.61 352.48-352.48c24.99-24.99 24.99-65.51-.01-90.5zM126.09 468.68l-93.03 10.31 10.36-93.17 263.89-263.89 82.77 82.77-263.99 263.98zm344.54-344.54l-57.93 57.93-82.77-82.77 57.93-57.93c6.04-6.04 14.08-9.37 22.63-9.37 8.55 0 16.58 3.33 22.63 9.37l37.51 37.51c12.47 12.48 12.47 32.78 0 45.26z',\n },\n rectangle: {\n width: 512,\n height: 512,\n path: 'M480 32v448H32V32h448m32-32H0v512h512V0z',\n bg: 'M 512,0 H 0 v 512 h 512 z',\n },\n circle: {\n width: 512,\n height: 512,\n path: 'M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm216 248c0 118.7-96.1 216-216 216-118.7 0-216-96.1-216-216 0-118.7 96.1-216 216-216 118.7 0 216 96.1 216 216z',\n bg: 'M 256,8 C 119,8 8,119 8,256 8,393 119,504 256,504 393,504 504,393 504,256 504,119 393,8 256,8 Z',\n },\n circleDashed: {\n width: 512,\n height: 512,\n path: 'M 217.9 10.91 C 177.84 17.083 140.95 32.842 109.64 55.766 L 132.58 78.705 C 157.62 61.229 186.56 48.91 217.9 43.344 L 217.9 10.91 z M 294.09 10.91 L 294.09 43.355 C 325.33 48.924 354.3 61.224 379.41 78.725 L 402.36 55.773 C 371.05 32.849 334.16 17.082 294.09 10.91 z M 55.77 109.64 C 32.851 140.96 17.095 177.84 10.922 217.9 L 43.365 217.9 C 48.935 186.67 61.234 157.71 78.729 132.6 L 55.77 109.64 z M 456.24 109.65 L 433.3 132.58 C 450.77 157.62 463.09 186.56 468.66 217.9 L 501.08 217.9 C 494.91 177.84 479.16 140.95 456.24 109.65 z M 10.92 294.09 C 17.096 334.15 32.846 371.05 55.771 402.36 L 78.707 379.43 C 61.228 354.38 48.91 325.43 43.342 294.09 L 10.92 294.09 z M 468.64 294.09 C 463.07 325.33 450.77 354.29 433.27 379.4 L 456.23 402.36 C 479.15 371.04 494.91 334.15 501.08 294.09 L 468.64 294.09 z M 132.6 433.28 L 109.65 456.23 C 140.96 479.15 177.84 494.92 217.9 501.09 L 217.9 468.64 C 186.67 463.07 157.71 450.77 132.6 433.28 z M 379.42 433.29 C 354.38 450.77 325.44 463.09 294.09 468.66 L 294.09 501.09 C 334.15 494.92 371.05 479.16 402.36 456.23 L 379.42 433.29 z',\n },\n shapes: {\n width: 512,\n height: 512,\n path: 'M480 288H320c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V320c0-17.67-14.33-32-32-32zm0 192H320V320h160v160zM128 256C57.31 256 0 313.31 0 384s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 224c-52.93 0-96-43.07-96-96 0-52.94 43.07-96 96-96 52.94 0 96 43.06 96 96 0 52.93-43.06 96-96 96zm378.98-278.86L400.07 18.29C392.95 6.1 380.47 0 368 0s-24.95 6.1-32.07 18.29L229.02 201.14c-14.26 24.38 3.56 54.86 32.07 54.86h213.82c28.51 0 46.33-30.48 32.07-54.86zm-27.6 20.39c-.94 1.64-2.45 2.47-4.47 2.47H261.09c-2.02 0-3.53-.83-4.47-2.47-1.21-2.12-.35-3.6.02-4.23L363.55 34.44c.95-1.62 2.44-2.44 4.45-2.44s3.5.82 4.45 2.44L479.36 217.3c.37.63 1.24 2.11.02 4.23z',\n },\n image: {\n width: 512,\n height: 512,\n path: 'M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm16 336c0 8.822-7.178 16-16 16H48c-8.822 0-16-7.178-16-16V112c0-8.822 7.178-16 16-16h416c8.822 0 16 7.178 16 16v288zM112 232c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56 25.072 56 56 56zm0-80c13.234 0 24 10.766 24 24s-10.766 24-24 24-24-10.766-24-24 10.766-24 24-24zm207.029 23.029L224 270.059l-31.029-31.029c-9.373-9.373-24.569-9.373-33.941 0l-88 88A23.998 23.998 0 0 0 64 344v28c0 6.627 5.373 12 12 12h360c6.627 0 12-5.373 12-12v-92c0-6.365-2.529-12.47-7.029-16.971l-88-88c-9.373-9.372-24.569-9.372-33.942 0zM416 352H96v-4.686l80-80 48 48 112-112 80 80V352z',\n },\n pageLayoutMode0: {\n width: 800,\n height: 512,\n path: 'M 287.48 56 C 266.77 56.079 249.97 72.872 249.97 93.57 L 249.97 418.51 C 249.97 439.21 266.77 456 287.48 456 L 512.52 456 C 533.23 456 550.03 439.21 550.03 418.51 L 550.03 159.1 C 550.03 149.18 546.04 139.58 539.01 132.55 L 473.45 67.016 C 466.42 59.984 456.88 56 446.96 56 L 287.48 56 z M 287.48 81.072 L 425 81.072 L 425 162.31 C 425 172.7 433.36 181.05 443.76 181.05 L 525.03 181.05 L 525.03 418.51 L 525.02 418.51 C 525.02 425.38 519.39 431.01 512.52 431.01 L 287.48 431.01 C 280.6 431.01 274.97 425.38 274.97 418.51 L 274.97 93.57 C 274.97 86.697 280.6 81.072 287.48 81.072 z M 450.01 81.465 C 452.2 82.012 454.15 83.104 455.79 84.744 L 521.35 150.28 C 522.99 151.92 524.09 153.87 524.63 156.06 L 450.01 156.06 L 450.01 81.465 z',\n },\n pageLayoutMode1: {\n width: 800,\n height: 512,\n path: 'M 249.97 -7.6191 L 249.97 162.51 C 249.97 183.21 266.77 200 287.48 200 L 512.52 200 C 533.23 200 550.03 183.21 550.03 162.51 L 550.03 -7.6191 L 525.03 -7.6191 L 525.03 162.51 L 525.02 162.51 C 525.02 169.38 519.4 175.01 512.52 175.01 L 287.48 175.01 C 280.6 175.01 274.98 169.38 274.98 162.51 L 274.98 -7.6191 L 249.97 -7.6191 z M 287.48 312 C 266.77 312.08 249.97 328.87 249.97 349.57 L 249.97 523.16 L 274.98 523.16 L 274.98 349.57 C 274.98 342.7 280.6 337.07 287.48 337.07 L 425.01 337.07 L 425.01 418.31 C 425.01 428.7 433.36 437.05 443.76 437.05 L 525.03 437.05 L 525.03 523.16 L 550.03 523.16 L 550.03 415.1 C 550.03 405.18 546.04 395.58 539.01 388.55 L 473.45 323.01 C 466.42 315.98 456.88 312 446.96 312 L 287.48 312 z M 450.01 337.46 C 452.2 338.01 454.15 339.1 455.79 340.74 L 521.35 406.28 C 522.99 407.92 524.09 409.87 524.63 412.06 L 450.01 412.06 L 450.01 337.46 z',\n },\n pageLayoutMode2: {\n width: 800,\n height: 512,\n path: 'M 49.971 0.5293 L 49.971 162.51 C 49.971 183.21 66.771 200 87.479 200 L 312.52 200 C 333.23 200 350.03 183.21 350.03 162.51 L 350.03 0.5293 L 325.02 0.5293 L 325.02 162.51 C 325.02 169.38 319.39 175.01 312.52 175.01 L 87.479 175.01 C 80.602 175.01 74.975 169.38 74.975 162.51 L 74.975 0.5293 L 49.971 0.5293 z M 449.97 0.53906 L 449.97 162.51 C 449.97 183.21 466.77 200 487.48 200 L 712.52 200 C 733.23 200 750.03 183.21 750.03 162.51 L 750.03 0.53906 L 725.03 0.53906 L 725.03 162.51 L 725.02 162.51 C 725.02 169.38 719.39 175.01 712.52 175.01 L 487.48 175.01 C 480.6 175.01 474.97 169.38 474.97 162.51 L 474.97 0.53906 L 449.97 0.53906 z M 87.479 312 C 66.772 312.08 49.971 328.87 49.971 349.57 L 49.971 511.69 L 74.975 511.69 L 74.975 349.57 C 74.975 342.7 80.602 337.07 87.479 337.07 L 225 337.07 L 225 418.31 C 225 428.7 233.36 437.05 243.76 437.05 L 325.02 437.05 L 325.02 511.69 L 350.03 511.69 L 350.03 415.1 C 350.03 405.18 346.04 395.58 339.01 388.55 L 273.45 323.01 C 266.42 315.98 256.88 312 246.96 312 L 87.479 312 z M 487.48 312 C 466.77 312.08 449.97 328.87 449.97 349.57 L 449.97 511.67 L 474.97 511.67 L 474.97 349.57 C 474.97 342.7 480.6 337.07 487.48 337.07 L 625 337.07 L 625 418.31 C 625 428.7 633.36 437.05 643.76 437.05 L 725.03 437.05 L 725.03 511.67 L 750.03 511.67 L 750.03 415.1 C 750.03 405.18 746.04 395.58 739.01 388.55 L 673.45 323.01 C 666.42 315.98 656.88 312 646.96 312 L 487.48 312 z M 250.01 337.46 C 252.2 338.01 254.15 339.1 255.79 340.74 L 321.35 406.28 C 322.99 407.92 324.09 409.87 324.63 412.06 L 250.01 412.06 L 250.01 337.46 z M 650.01 337.46 C 652.2 338.01 654.15 339.1 655.79 340.74 L 721.35 406.28 C 722.99 407.92 724.09 409.87 724.63 412.06 L 650.01 412.06 L 650.01 337.46 z',\n },\n pageLayoutMode3: {\n width: 800,\n height: 512,\n path: 'M 449.97 0.48047 L 449.97 162.51 C 449.97 183.21 466.77 200 487.48 200 L 712.52 200 C 733.23 200 750.03 183.21 750.03 162.51 L 750.03 0.48047 L 725.03 0.48047 L 725.03 162.51 L 725.02 162.51 C 725.02 169.38 719.39 175.01 712.52 175.01 L 487.48 175.01 C 480.6 175.01 474.97 169.38 474.97 162.51 L 474.97 0.48047 L 449.97 0.48047 z M 87.479 312 C 66.772 312.08 49.971 328.87 49.971 349.57 L 49.971 511.89 L 74.975 511.89 L 74.975 349.57 C 74.975 342.7 80.602 337.07 87.479 337.07 L 225 337.07 L 225 418.31 C 225 428.7 233.36 437.05 243.76 437.05 L 325.02 437.05 L 325.02 511.89 L 350.03 511.89 L 350.03 415.1 C 350.03 405.18 346.04 395.58 339.01 388.55 L 273.45 323.01 C 266.42 315.98 256.88 312 246.96 312 L 87.479 312 z M 487.48 312 C 466.77 312.08 449.97 328.87 449.97 349.57 L 449.97 511.93 L 474.97 511.93 L 474.97 349.57 C 474.97 342.7 480.6 337.07 487.48 337.07 L 625 337.07 L 625 418.31 C 625 428.7 633.36 437.05 643.76 437.05 L 725.03 437.05 L 725.03 511.93 L 750.03 511.93 L 750.03 415.1 C 750.03 405.18 746.04 395.58 739.01 388.55 L 673.45 323.01 C 666.42 315.98 656.88 312 646.96 312 L 487.48 312 z M 250.01 337.46 C 252.2 338.01 254.15 339.1 255.79 340.74 L 321.35 406.28 C 322.99 407.92 324.09 409.87 324.63 412.06 L 250.01 412.06 L 250.01 337.46 z M 650.01 337.46 C 652.2 338.01 654.15 339.1 655.79 340.74 L 721.35 406.28 C 722.99 407.92 724.09 409.87 724.63 412.06 L 650.01 412.06 L 650.01 337.46 z',\n },\n pageLayoutMode4: {\n width: 800,\n height: 512,\n path: 'M 87.479 55.998 C 66.772 56.077 49.971 72.871 49.971 93.57 L 49.971 418.51 C 49.971 439.2 66.771 456 87.479 456 L 312.52 456 C 333.23 456 350.03 439.2 350.03 418.51 L 350.03 159.1 C 350.03 149.18 346.04 139.58 339.01 132.55 L 273.45 67.014 C 266.42 59.983 256.88 55.998 246.96 55.998 L 87.479 55.998 z M 487.48 55.998 C 466.77 56.077 449.97 72.87 449.97 93.568 L 449.97 418.51 C 449.97 439.2 466.77 456 487.48 456 L 712.52 456 C 733.23 456 750.03 439.2 750.03 418.51 L 750.03 159.1 C 750.03 149.18 746.04 139.58 739.01 132.55 L 673.45 67.014 C 666.42 59.983 656.88 55.998 646.96 55.998 L 487.48 55.998 z M 87.479 81.072 L 225 81.072 L 225 162.31 C 225 172.7 233.36 181.05 243.76 181.05 L 325.02 181.05 L 325.02 418.5 C 325.02 425.38 319.39 431.01 312.52 431.01 L 87.479 431.01 C 80.602 431.01 74.975 425.38 74.975 418.51 L 74.975 93.57 C 74.975 86.697 80.602 81.072 87.479 81.072 z M 487.48 81.072 L 625 81.072 L 625 162.31 C 625 172.7 633.36 181.05 643.76 181.05 L 725.03 181.05 L 725.03 418.5 L 725.02 418.5 C 725.02 425.38 719.39 431.01 712.52 431.01 L 487.48 431.01 C 480.6 431.01 474.97 425.38 474.97 418.51 L 474.97 93.57 C 474.97 86.697 480.6 81.072 487.48 81.072 z M 250.01 81.463 C 252.2 82.01 254.15 83.104 255.79 84.744 L 321.35 150.28 C 322.99 151.92 324.09 153.87 324.63 156.06 L 250.01 156.06 L 250.01 81.463 z M 650.01 81.463 C 652.2 82.01 654.15 83.104 655.79 84.744 L 721.35 150.28 C 722.99 151.92 724.09 153.87 724.63 156.06 L 650.01 156.06 L 650.01 81.463 z',\n },\n pageLayoutMode5: {\n width: 800,\n height: 512,\n path: 'M739.01,132.548l-65.561-65.533C666.416,59.983,656.885,56,646.961,56H487.479c-20.707,0.079-37.508,16.872-37.508,37.57 v324.937c0,20.698,16.799,37.494,37.508,37.494h225.043c20.707,0,37.508-16.796,37.508-37.494V159.104 C750.029,149.184,746.041,139.578,739.01,132.548z M650.008,81.464c2.188,0.547,4.143,1.641,5.781,3.281l65.563,65.533 c1.643,1.641,2.734,3.593,3.279,5.779h-74.623V81.464z M725.025,418.505c-0.002,6.878-5.631,12.501-12.506,12.501H487.479 c-6.877,0-12.504-5.623-12.504-12.499V93.57c0-6.873,5.627-12.497,12.504-12.497h137.525v81.233 c0,10.389,8.361,18.745,18.756,18.745h81.266V418.505z',\n },\n closeFile: {\n width: 384,\n height: 512,\n path: 'M369.9,97.9,286,14A48,48,0,0,0,252.1-.1H48A48.16,48.16,0,0,0,0,48V464a48,48,0,0,0,48,48H336a48,48,0,0,0,48-48V131.9A48.23,48.23,0,0,0,369.9,97.9Zm-22.6,22.7a15.73,15.73,0,0,1,4.2,7.4H256V32.5a15.73,15.73,0,0,1,7.4,4.2ZM336,480H48a16,16,0,0,1-16-16V48A16,16,0,0,1,48,32H224V136a23.94,23.94,0,0,0,24,24H352V464A16,16,0,0,1,336,480ZM262.71,369.05l-5.66,5.66a12,12,0,0,1-17,0L192,326.63l-48.08,48.08a12,12,0,0,1-17,0l-5.66-5.66a12,12,0,0,1,0-17L169.37,304l-48.08-48.08a12,12,0,0,1,0-17l5.66-5.66a12,12,0,0,1,17,0L192,281.37l48.08-48.08a12,12,0,0,1,17,0l5.66,5.66a12,12,0,0,1,0,17L214.63,304l48.08,48.08A12,12,0,0,1,262.71,369.05Z',\n },\n bars: {\n width: 448,\n height: 512,\n path: 'M442 114H6a6 6 0 0 1-6-6V84a6 6 0 0 1 6-6h436a6 6 0 0 1 6 6v24a6 6 0 0 1-6 6zm0 160H6a6 6 0 0 1-6-6v-24a6 6 0 0 1 6-6h436a6 6 0 0 1 6 6v24a6 6 0 0 1-6 6zm0 160H6a6 6 0 0 1-6-6v-24a6 6 0 0 1 6-6h436a6 6 0 0 1 6 6v24a6 6 0 0 1-6 6z',\n },\n};\n","export const getKeyboardCommands = (e, shortcuts, excludeNodeTypes = ['INPUT', 'SELECT', 'TEXTAREA']) => {\n if (!shortcuts || excludeNodeTypes.includes(e.target.nodeName)) {\n return [];\n }\n let cmd = [];\n Object.keys(shortcuts).forEach((sc) => {\n const keybinding = shortcuts[sc];\n if (keybinding) {\n const key = e.key.length > 1 ? e.key : e.key.toLowerCase();\n if (key === keybinding.key &&\n e.altKey === Boolean(keybinding.altKey) &&\n e.ctrlKey === Boolean(keybinding.ctrlKey) &&\n e.shiftKey === Boolean(keybinding.shiftKey)) {\n cmd.push([sc, shortcuts[sc].superKey]);\n }\n }\n });\n return cmd;\n};\n","import { createPdfTime } from '../common/Tools';\n// tslint:disable-next-line: max-line-length\nexport function addHistoryEntry(annotation, type, author, content, subject) {\n let data = {};\n if (annotation.privateData) {\n data = JSON.parse(annotation.privateData);\n }\n else {\n data = {\n 'PDF Tools AG': {},\n };\n }\n if (!data.hasOwnProperty('PDF Tools AG')) {\n data['PDF Tools AG'] = {};\n }\n if (!data['PDF Tools AG'].hasOwnProperty('Private')) {\n data['PDF Tools AG'].Private = {};\n }\n if (!data['PDF Tools AG'].Private.hasOwnProperty('History')) {\n data['PDF Tools AG'].Private.History = [];\n }\n data['PDF Tools AG'].Private.LastModified = createPdfTime();\n const historyItem = {\n D: createPdfTime(),\n T: `(${author})`,\n };\n if (type === 'create') {\n historyItem.Type = '/Create';\n }\n else if (type === 'edit') {\n historyItem.Type = '/Edit';\n historyItem.params = [];\n if (content !== null && annotation.content !== content) {\n historyItem.params.push('/Contents');\n historyItem.params.push(`(${content})`);\n }\n if (subject !== null && annotation.subject !== subject) {\n historyItem.params.push('/Subj');\n historyItem.params.push(`(${subject})`);\n }\n if (historyItem.params.length === 0) {\n return;\n }\n }\n else if (type === 'lock') {\n historyItem.Type = '/Lock';\n }\n else if (type === 'unlock') {\n historyItem.Type = '/Unlock';\n }\n else if (type === 'delete') {\n historyItem.Type = '/Delete';\n annotation.popup.isOpen = false;\n }\n if (historyItem) {\n data['PDF Tools AG'].Private.History.push(historyItem);\n }\n annotation.privateData = JSON.stringify(data);\n}\n","export * from './pdf-web-viewer/PdfWebViewer';\nexport * from './pdf-web-viewer/WebViewerOptions';\nexport * from './pdf-viewer-canvas/PdfViewerCanvas';\nexport * from './pdf-viewer-api';\nexport * from './modules';\n","export function h(name, attributes) {\n var rest = [];\n var children = [];\n var length = arguments.length;\n while (length-- > 2)\n rest.push(arguments[length]);\n while (rest.length) {\n var node = rest.pop();\n if (node && node.pop) {\n for (length = node.length; length--;) {\n rest.push(node[length]);\n }\n }\n else if (node != null && node !== true && node !== false) {\n children.push(node);\n }\n }\n return typeof name === \"function\"\n ? name(attributes || {}, children)\n : {\n nodeName: name,\n attributes: attributes || {},\n children: children,\n key: attributes && attributes.key\n };\n}\nexport function app(state, actions, view, container) {\n var map = [].map;\n var rootElement = (container && container.children[0]) || null;\n var oldNode = rootElement && recycleElement(rootElement);\n var lifecycle = [];\n var skipRender;\n var isRecycling = true;\n var globalState = clone(state);\n var wiredActions = wireStateToActions([], globalState, clone(actions));\n scheduleRender();\n return wiredActions;\n function recycleElement(element) {\n return {\n nodeName: element.nodeName.toLowerCase(),\n attributes: {},\n children: map.call(element.childNodes, function (element) {\n return element.nodeType === 3 // Node.TEXT_NODE\n ? element.nodeValue\n : recycleElement(element);\n })\n };\n }\n function resolveNode(node) {\n return typeof node === \"function\"\n ? resolveNode(node(globalState, wiredActions))\n : node != null\n ? node\n : \"\";\n }\n function render() {\n skipRender = !skipRender;\n var node = resolveNode(view);\n if (container && !skipRender) {\n rootElement = patch(container, rootElement, oldNode, (oldNode = node));\n }\n isRecycling = false;\n while (lifecycle.length)\n lifecycle.pop()();\n }\n function scheduleRender() {\n if (!skipRender) {\n skipRender = true;\n setTimeout(render);\n }\n }\n function clone(target, source) {\n var out = {};\n for (var i in target)\n out[i] = target[i];\n for (var i in source)\n out[i] = source[i];\n return out;\n }\n function setPartialState(path, value, source) {\n var target = {};\n if (path.length) {\n target[path[0]] =\n path.length > 1\n ? setPartialState(path.slice(1), value, source[path[0]])\n : value;\n return clone(source, target);\n }\n return value;\n }\n function getPartialState(path, source) {\n var i = 0;\n while (i < path.length) {\n source = source[path[i++]];\n }\n return source;\n }\n function wireStateToActions(path, state, actions) {\n for (var key in actions) {\n typeof actions[key] === \"function\"\n ? (function (key, action) {\n actions[key] = function (data) {\n var result = action(data);\n if (typeof result === \"function\") {\n result = result(getPartialState(path, globalState), actions);\n }\n if (result &&\n result !== (state = getPartialState(path, globalState)) &&\n !result.then // !isPromise\n ) {\n scheduleRender((globalState = setPartialState(path, clone(state, result), globalState)));\n }\n return result;\n };\n })(key, actions[key])\n : wireStateToActions(path.concat(key), (state[key] = clone(state[key])), (actions[key] = clone(actions[key])));\n }\n return actions;\n }\n function getKey(node) {\n return node ? node.key : null;\n }\n function eventListener(event) {\n return event.currentTarget.events[event.type](event);\n }\n function updateAttribute(element, name, value, oldValue, isSvg) {\n if (name === \"key\") {\n }\n else if (name === \"style\") {\n if (typeof value === \"string\") {\n element.style.cssText = value;\n }\n else {\n if (typeof oldValue === \"string\")\n oldValue = element.style.cssText = \"\";\n for (var i in clone(oldValue, value)) {\n var style = value == null || value[i] == null ? \"\" : value[i];\n if (i[0] === \"-\") {\n element.style.setProperty(i, style);\n }\n else {\n element.style[i] = style;\n }\n }\n }\n }\n else {\n if (name[0] === \"o\" && name[1] === \"n\") {\n name = name.slice(2);\n if (element.events) {\n if (!oldValue)\n oldValue = element.events[name];\n }\n else {\n element.events = {};\n }\n element.events[name] = value;\n if (value) {\n if (!oldValue) {\n element.addEventListener(name, eventListener);\n }\n }\n else {\n element.removeEventListener(name, eventListener);\n }\n }\n else if (name in element &&\n name !== \"list\" &&\n name !== \"type\" &&\n name !== \"draggable\" &&\n name !== \"spellcheck\" &&\n name !== \"translate\" &&\n !isSvg) {\n element[name] = value == null ? \"\" : value;\n }\n else if (value != null && value !== false) {\n element.setAttribute(name, value);\n }\n if (value == null || value === false) {\n element.removeAttribute(name);\n }\n }\n }\n function createElement(node, isSvg) {\n var element = typeof node === \"string\" || typeof node === \"number\"\n ? document.createTextNode(node)\n : (isSvg = isSvg || node.nodeName === \"svg\")\n ? document.createElementNS(\"http://www.w3.org/2000/svg\", node.nodeName)\n : document.createElement(node.nodeName);\n var attributes = node.attributes;\n if (attributes) {\n if (attributes.oncreate) {\n lifecycle.push(function () {\n attributes.oncreate(element);\n });\n }\n for (var i = 0; i < node.children.length; i++) {\n element.appendChild(createElement((node.children[i] = resolveNode(node.children[i])), isSvg));\n }\n for (var name in attributes) {\n updateAttribute(element, name, attributes[name], null, isSvg);\n }\n }\n return element;\n }\n function updateElement(element, oldAttributes, attributes, isSvg) {\n for (var name in clone(oldAttributes, attributes)) {\n if (attributes[name] !==\n (name === \"value\" || name === \"checked\"\n ? element[name]\n : oldAttributes[name])) {\n updateAttribute(element, name, attributes[name], oldAttributes[name], isSvg);\n }\n }\n var cb = isRecycling ? attributes.oncreate : attributes.onupdate;\n if (cb) {\n lifecycle.push(function () {\n cb(element, oldAttributes);\n });\n }\n }\n function removeChildren(element, node) {\n var attributes = node.attributes;\n if (attributes) {\n for (var i = 0; i < node.children.length; i++) {\n removeChildren(element.childNodes[i], node.children[i]);\n }\n if (attributes.ondestroy) {\n attributes.ondestroy(element);\n }\n }\n return element;\n }\n function removeElement(parent, element, node) {\n function done() {\n parent.removeChild(removeChildren(element, node));\n }\n var cb = node.attributes && node.attributes.onremove;\n if (cb) {\n cb(element, done);\n }\n else {\n done();\n }\n }\n function patch(parent, element, oldNode, node, isSvg) {\n if (node === oldNode) {\n }\n else if (oldNode == null || oldNode.nodeName !== node.nodeName) {\n var newElement = createElement(node, isSvg);\n parent.insertBefore(newElement, element);\n if (oldNode != null) {\n removeElement(parent, element, oldNode);\n }\n element = newElement;\n }\n else if (oldNode.nodeName == null) {\n element.nodeValue = node;\n }\n else {\n updateElement(element, oldNode.attributes, node.attributes, (isSvg = isSvg || node.nodeName === \"svg\"));\n var oldKeyed = {};\n var newKeyed = {};\n var oldElements = [];\n var oldChildren = oldNode.children;\n var children = node.children;\n for (var i = 0; i < oldChildren.length; i++) {\n oldElements[i] = element.childNodes[i];\n var oldKey = getKey(oldChildren[i]);\n if (oldKey != null) {\n oldKeyed[oldKey] = [oldElements[i], oldChildren[i]];\n }\n }\n var i = 0;\n var k = 0;\n while (k < children.length) {\n var oldKey = getKey(oldChildren[i]);\n var newKey = getKey((children[k] = resolveNode(children[k])));\n if (newKeyed[oldKey]) {\n i++;\n continue;\n }\n if (newKey != null && newKey === getKey(oldChildren[i + 1])) {\n if (oldKey == null) {\n removeElement(element, oldElements[i], oldChildren[i]);\n }\n i++;\n continue;\n }\n if (newKey == null || isRecycling) {\n if (oldKey == null) {\n patch(element, oldElements[i], oldChildren[i], children[k], isSvg);\n k++;\n }\n i++;\n }\n else {\n var keyedNode = oldKeyed[newKey] || [];\n if (oldKey === newKey) {\n patch(element, keyedNode[0], keyedNode[1], children[k], isSvg);\n i++;\n }\n else if (keyedNode[0]) {\n patch(element, element.insertBefore(keyedNode[0], oldElements[i]), keyedNode[1], children[k], isSvg);\n }\n else {\n patch(element, oldElements[i], null, children[k], isSvg);\n }\n newKeyed[newKey] = children[k];\n k++;\n }\n }\n while (i < oldChildren.length) {\n if (getKey(oldChildren[i]) == null) {\n removeElement(element, oldElements[i], oldChildren[i]);\n }\n i++;\n }\n for (var i in oldKeyed) {\n if (!newKeyed[i]) {\n removeElement(element, oldKeyed[i][0], oldKeyed[i][1]);\n }\n }\n }\n return element;\n }\n}\n","import { addHistoryEntry } from '../custom/history';\nexport class CanvasLayer {\n constructor(module, name, containerElement, store, pdfApi, pdfViewerCanvas, options) {\n this.canvasContexts = [];\n this.htmlLayers = [];\n this.containerElement = containerElement;\n this.store = store;\n this.pdfApi = pdfApi;\n this.pdfViewerCanvas = pdfViewerCanvas;\n this.options = options;\n this.module = module;\n this.name = name;\n this.remove = this.remove.bind(this);\n this.onAnnotationCreated = this.onAnnotationCreated.bind(this);\n }\n resize(width, height) {\n const tempCanvas = document.createElement('canvas');\n tempCanvas.width = width * devicePixelRatio;\n tempCanvas.height = height * devicePixelRatio;\n const tempContext = tempCanvas.getContext('2d');\n this.canvasContexts.forEach((ctx) => {\n tempContext.drawImage(ctx.canvas, 0, 0);\n ctx.canvas.style.width = width + 'px';\n ctx.canvas.style.height = height + 'px';\n ctx.canvas.width = width * devicePixelRatio;\n ctx.canvas.height = height * devicePixelRatio;\n ctx.drawImage(tempContext.canvas, 0, 0);\n });\n }\n remove() {\n this.module.removeCanvasLayer(this.name);\n }\n createHtmlLayer() {\n const element = document.createElement('div');\n this.htmlLayers.push(element);\n if (this.containerElement) {\n this.containerElement.appendChild(element);\n }\n return element;\n }\n createCanvas() {\n const element = document.createElement('canvas');\n element.style.position = 'absolute';\n element.style.top = '0';\n element.style.left = '0';\n element.style.right = '0';\n element.style.bottom = '0';\n const context = element.getContext('2d');\n this.canvasContexts.push(context);\n if (this.containerElement) {\n this.containerElement.appendChild(element);\n const rect = this.containerElement.getBoundingClientRect();\n context.canvas.width = rect.width * devicePixelRatio;\n context.canvas.height = rect.height * devicePixelRatio;\n context.canvas.style.width = rect.width + 'px';\n context.canvas.style.height = rect.height + 'px';\n }\n return context;\n }\n removeHtmlElements() {\n if (this.containerElement) {\n for (let i = 0; i < this.htmlLayers.length; i++) {\n this.containerElement.removeChild(this.htmlLayers[i]);\n }\n this.htmlLayers = [];\n }\n }\n removeCanvasElements() {\n if (this.containerElement) {\n for (let i = 0; i < this.canvasContexts.length; i++) {\n this.containerElement.removeChild(this.canvasContexts[i].canvas);\n }\n this.canvasContexts = [];\n }\n }\n onAnnotationCreated(annotation) {\n if (this.options.annotation.trackHistory) {\n addHistoryEntry(annotation, 'create', this.options.viewer.general.user);\n return this.pdfApi.updateItem(annotation);\n }\n return new Promise((resolve) => resolve(annotation));\n }\n}\n","export var CanvasModuleType;\n(function (CanvasModuleType) {\n CanvasModuleType[CanvasModuleType[\"Tool\"] = 0] = \"Tool\";\n CanvasModuleType[CanvasModuleType[\"Layer\"] = 1] = \"Layer\";\n})(CanvasModuleType || (CanvasModuleType = {}));\nexport class CanvasModule {\n constructor() {\n this.canvasLayers = {};\n this.store = null;\n this.pdfApi = null;\n this.pdfViewerCanvas = null;\n this.options = null;\n this.name = null;\n this.containerElement = null;\n this.createCanvasLayer = this.createCanvasLayer.bind(this);\n this.removeCanvasLayer = this.removeCanvasLayer.bind(this);\n }\n register(containerElement, store, pdfApi, pdfViewerCanvas, options) {\n this.containerElement = containerElement;\n this.store = store;\n this.pdfApi = pdfApi;\n this.pdfViewerCanvas = pdfViewerCanvas;\n this.options = options;\n return this.onRegister();\n }\n render(timestamp, state) {\n const keys = Object.keys(this.canvasLayers);\n for (let i = 0; i < keys.length; i++) {\n this.canvasLayers[keys[i]].render(timestamp, state);\n }\n }\n deactivate() {\n const keys = Object.keys(this.canvasLayers);\n for (let i = 0; i < keys.length; i++) {\n const name = keys[i];\n this.canvasLayers[name].onRemove();\n delete this.canvasLayers[name];\n }\n }\n resize(width, height) {\n const keys = Object.keys(this.canvasLayers);\n for (let i = 0; i < keys.length; i++) {\n this.canvasLayers[keys[i]].resize(width, height);\n }\n }\n getCanvasSize() {\n const rect = {\n width: 0,\n height: 0,\n };\n if (this.containerElement !== null) {\n const clientRect = this.containerElement.getBoundingClientRect();\n rect.width = clientRect.width;\n rect.height = clientRect.height;\n }\n return rect;\n }\n onSave() {\n const promise = new Promise((resolve, reject) => {\n const keys = Object.keys(this.canvasLayers);\n const promises = [];\n for (let i = 0; i < keys.length; i++) {\n promises.push(this.canvasLayers[keys[i]].onSave());\n }\n Promise.all(promises)\n .then(() => {\n resolve();\n })\n .catch((error) => {\n reject('OnSave failed on a canvas layer: ' + error);\n });\n });\n return promise;\n }\n createCanvasLayer(name, canvasLayer, args) {\n if (this.containerElement &&\n this.store &&\n this.pdfApi &&\n this.pdfViewerCanvas &&\n this.options) {\n if (this.canvasLayers[name]) {\n throw new Error('duplicate canvas layer name');\n }\n const layer = new canvasLayer(this, name, this.containerElement, this.store, this.pdfApi, this.pdfViewerCanvas, this.options);\n this.canvasLayers[name] = layer;\n layer.onCreate(args);\n }\n else {\n throw new Error('canvas layer is not registered');\n }\n }\n removeCanvasLayer(name) {\n if (this.canvasLayers[name]) {\n this.canvasLayers[name].onRemove();\n delete this.canvasLayers[name];\n }\n }\n}\n","import { CanvasLayer } from '../CanvasLayer';\nimport { PdfItemType } from '../../pdf-viewer-api/';\nimport { CursorStyle } from '../../pdf-viewer-canvas/state/viewer';\nimport { createEraserToolbar } from './EraserToolbar';\nconst moduleLayerName = 'EraserTool';\nexport class EraserLayer extends CanvasLayer {\n constructor() {\n super(...arguments);\n this.context = null;\n this.eraserRadius = this.options.annotation.eraserRadius;\n }\n onCreate(args) {\n this.setEraserRadius = this.setEraserRadius.bind(this);\n this.remove = this.remove.bind(this);\n this.context = this.createCanvas();\n const toolbarElement = this.module.toolbarElement;\n createEraserToolbar({\n radius: this.eraserRadius,\n onRadiusChanged: this.setEraserRadius,\n onCancel: this.remove,\n }, toolbarElement);\n this.store.viewer.beginModule(moduleLayerName);\n }\n onRemove() {\n this.removeCanvasElements();\n this.context = null;\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n toolbarElement.innerHTML = '';\n this.store.viewer.endModule(moduleLayerName);\n }\n onSave() {\n return new Promise((resolve) => {\n return resolve();\n });\n }\n render(timestamp, state) {\n var _a;\n if (state.viewer.modeChanged && state.viewer.selectedModuleName !== moduleLayerName) {\n this.remove();\n return;\n }\n const pointerPos = {\n x: state.pointer.x.devicePixels,\n y: state.pointer.y.devicePixels,\n };\n const pointerPdfPos = this.pdfApi.transformScreenPointToPdfPoint(pointerPos);\n const cursorStyle = pointerPdfPos.isOnPage ? CursorStyle.NONE : CursorStyle.NOT_ALLOWED;\n this.store.viewer.setCursorStyle(cursorStyle);\n const ctx = this.context;\n if (ctx) {\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n if (pointerPdfPos.isOnPage) {\n ctx.save();\n ctx.lineWidth = 1;\n if (this.eraserRadius >= 8) {\n ctx.setLineDash([4 * devicePixelRatio, 4 * devicePixelRatio]);\n }\n ctx.beginPath();\n ctx.arc(pointerPos.x, pointerPos.y, (this.eraserRadius * devicePixelRatio) / 2, 0, 2 * Math.PI);\n ctx.stroke();\n ctx.restore();\n }\n }\n if (!pointerPdfPos.isOnPage || state.pointer.action !== 'click') {\n return;\n }\n const inkAnnotations = (_a = this.pdfApi\n .getAnnotationsOnPoint(pointerPos)) === null || _a === void 0 ? void 0 : _a.filter((a) => a.itemType === PdfItemType.INK);\n if (!inkAnnotations) {\n return;\n }\n const annot = this.deleteFirstInkLineCloseToPoint(inkAnnotations, pointerPdfPos.pdfPoint);\n if (annot) {\n this.updateInkAnnotation(annot);\n }\n }\n setEraserRadius(radius) {\n this.options.annotation.eraserRadius = radius;\n this.eraserRadius = radius;\n }\n deleteFirstInkLineCloseToPoint(inkAnnotations, pdfPoint) {\n if (!this.context) {\n return null;\n }\n const ctx = this.context;\n ctx.save();\n for (let inkAnnotation of inkAnnotations) {\n ctx.lineWidth = Math.max(inkAnnotation.border.width, this.eraserRadius * devicePixelRatio);\n ctx.lineCap = 'round';\n for (let inkLine of inkAnnotation.inkList) {\n const path = new Path2D();\n let isFirstPoint = true;\n for (let point of inkLine) {\n if (isFirstPoint) {\n path.moveTo(point.x, point.y);\n isFirstPoint = false;\n }\n else {\n path.lineTo(point.x, point.y);\n }\n }\n const isPointInStroke = ctx.isPointInStroke(path, pdfPoint.pdfX, pdfPoint.pdfY);\n if (isPointInStroke) {\n inkAnnotation.inkList.splice(inkAnnotation.inkList.indexOf(inkLine), 1);\n return inkAnnotation;\n }\n }\n }\n ctx.restore();\n return null;\n }\n updateInkAnnotation(inkAnnotation) {\n return new Promise((resolve, reject) => {\n if (inkAnnotation.inkList.length) {\n this.pdfApi\n .updateItem(inkAnnotation)\n .then((item) => {\n this.store.annotations.updateAnnotation(item);\n resolve();\n })\n .catch((err) => {\n console.error(err);\n reject();\n });\n }\n else {\n const id = inkAnnotation.id;\n this.pdfApi\n .deleteItem(inkAnnotation)\n .then(() => {\n resolve();\n })\n .catch((err) => {\n console.error(err);\n reject();\n });\n }\n });\n }\n}\n","import { CanvasModule, CanvasModuleType } from '../CanvasModule';\nimport { EraserLayer } from './EraserLayer';\nexport class EraserModule extends CanvasModule {\n constructor() {\n super();\n this.toolbarElement = null;\n this.name = EraserModule.moduleInfo.name;\n this.activate = this.activate.bind(this);\n }\n onRegister() {\n this.toolbarElement = document.createElement('div');\n return {\n toolbar: this.toolbarElement,\n };\n }\n activate() {\n if (!this.canvasLayers['add']) {\n this.createCanvasLayer('add', EraserLayer);\n }\n else {\n this.removeCanvasLayer('add');\n }\n }\n}\nEraserModule.moduleInfo = {\n name: 'EraserModule',\n moduleType: CanvasModuleType.Tool,\n requiredFeatures: {\n annotate: true,\n fillFormFields: false,\n },\n translationKey: 'eraser.begin',\n icon: 'eraser',\n};\n","import { app, h } from '../../lib/hyperapp';\nimport { translationManager } from '../../common/TranslationManager';\nimport { Toolbar } from '../../common/Toolbar';\nimport { ToolbarItemGroup } from '../../common/ToolbarItemGroup';\nimport { ToolbarButton } from '../../common/ToolbarButton';\nimport { icons } from '../../common/icons';\nimport { ToolbarSeparator } from '../../common/ToolbarSeparator';\nimport { RangeSlider } from '../../common/RangeSlider';\nexport const createEraserToolbar = (props, element) => {\n const state = {\n radius: props.radius,\n };\n const actions = {\n setRadius: (radius) => ($state) => {\n props.onRadiusChanged(radius);\n return Object.assign(Object.assign({}, $state), { radius });\n },\n setCancel: () => ($state) => {\n return Object.assign({}, $state);\n },\n };\n const App = () => h(EraserToolbar, null);\n const EraserToolbar = ({}) => ($state, $actions) => (h(Toolbar, { allowWrap: true, alignCenter: true },\n h(ToolbarItemGroup, null,\n h(RangeSlider, { tooltip: translationManager.getText('eraser.eraserWidth'), min: 2, max: 50, step: 1, value: $state.radius, text: `${$state.radius}px`, icon: icons.circleDashed, onChange: $actions.setRadius, className: \"pwv-opacityslider\" })),\n h(ToolbarItemGroup, { pushRight: true },\n h(ToolbarSeparator, null),\n h(ToolbarButton, { icon: icons.close, onClick: props.onCancel }))));\n return app(state, actions, App, element);\n};\n","import { WidgetBase } from './WidgetBase';\nexport class CheckBoxWidget extends WidgetBase {\n createFormField() {\n const formField = document.createElement('label');\n formField.classList.add('pwv-formField__CheckBox');\n formField.style.overflow = 'hidden';\n const checkbox = document.createElement('input');\n checkbox.type = 'checkbox';\n checkbox.checked = this.widget.selected;\n checkbox.style.position = 'absolute';\n checkbox.style.top = '-20px';\n checkbox.style.left = '-20px';\n formField.appendChild(checkbox);\n this.handleOnChange = this.handleOnChange.bind(this);\n this.handleOnKeyDown = this.handleOnKeyDown.bind(this);\n this.handleOnBlur = this.handleOnBlur.bind(this);\n formField.addEventListener('change', this.handleOnChange);\n formField.addEventListener('keydown', this.handleOnKeyDown);\n formField.addEventListener('blur', this.handleOnBlur);\n return formField;\n }\n onRemove() {\n this.editorElement.removeEventListener('change', this.handleOnChange);\n this.editorElement.removeEventListener('keydown', this.handleOnKeyDown);\n this.editorElement.removeEventListener('blur', this.handleOnBlur);\n }\n setFocus() {\n this.editorElement.focus();\n }\n handleOnKeyDown(e) {\n if (e.code === 'Tab') {\n this.onTab(e.shiftKey);\n }\n else if (e.code === 'Escape') {\n this.onBlur();\n }\n }\n handleOnBlur(e) {\n this.onBlur();\n }\n handleOnChange(e) {\n this.widget.push();\n this.saveWidget();\n }\n}\n","import { WidgetBase } from './WidgetBase';\nexport class ComboBoxWidget extends WidgetBase {\n constructor() {\n super(...arguments);\n this.btnClearPressed = false;\n this.hasPendingChanges = false;\n this.saveThrottlingTimer = undefined;\n }\n createFormField() {\n // bind events\n this.inputOnFocus = this.inputOnFocus.bind(this);\n this.inputOnBlur = this.inputOnBlur.bind(this);\n this.inputOnInput = this.inputOnInput.bind(this);\n this.inputOnChange = this.inputOnChange.bind(this);\n this.inputOnKeyDown = this.inputOnKeyDown.bind(this);\n this.btnOnClick = this.btnOnClick.bind(this);\n this.btnOnMouseDown = this.btnOnMouseDown.bind(this);\n this.btnOnMouseUp = this.btnOnMouseUp.bind(this);\n // form field\n const formField = document.createElement('div');\n formField.classList.add('pwv-formField__ComboBox');\n // datalist\n this.dataList = document.createElement('datalist');\n this.dataList.id = Math.random().toString(36).substring(2, 8);\n for (let i = 0; i < this.widget.options.size; i++) {\n const value = this.widget.options.get(i);\n const item = document.createElement('option');\n item.value = value;\n item.textContent = value;\n this.dataList.appendChild(item);\n }\n // input\n this.input = document.createElement('input');\n this.input.setAttribute('list', this.dataList.id);\n this.input.style.border = 'none';\n this.input.style.boxSizing = 'border-box';\n this.input.style.width = '100%';\n this.input.style.maxWidth = '100%';\n this.input.value =\n this.widget.chosen !== null\n ? this.widget.options.get(this.widget.chosen)\n : this.widget.customEntry;\n this.input.addEventListener('focus', this.inputOnFocus);\n this.input.addEventListener('blur', this.inputOnBlur);\n this.input.addEventListener('input', this.inputOnInput);\n this.input.addEventListener('change', this.inputOnChange);\n this.input.addEventListener('keydown', this.inputOnKeyDown);\n // clear button\n this.btnClear = document.createElement('button');\n this.btnClear.tabIndex = -1;\n const icon = document.createElement('span');\n icon.classList.add('pwv-icon');\n const iconSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n iconSvg.setAttribute('viewBox', '0 0 320 512');\n const iconPath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n iconPath.setAttribute('d', 'M193.94 256L296.5 153.44l21.15-21.15c3.12-3.12 3.12-8.19 0-11.31l-22.63-22.63c-3.12-3.12-8.19-3.12-11.31 0L160 222.06 36.29 98.34c-3.12-3.12-8.19-3.12-11.31 0L2.34 120.97c-3.12 3.12-3.12 8.19 0 11.31L126.06 256 2.34 379.71c-3.12 3.12-3.12 8.19 0 11.31l22.63 22.63c3.12 3.12 8.19 3.12 11.31 0L160 289.94 262.56 392.5l21.15 21.15c3.12 3.12 8.19 3.12 11.31 0l22.63-22.63c3.12-3.12 3.12-8.19 0-11.31L193.94 256z');\n iconPath.setAttribute('stroke-width', '1px');\n iconPath.setAttribute('shape-rendering', 'optimizeQuality');\n iconSvg.appendChild(iconPath);\n icon.appendChild(iconSvg);\n this.btnClear.appendChild(icon);\n this.btnClear.addEventListener('mousedown', this.btnOnMouseDown);\n this.btnClear.addEventListener('mouseup', this.btnOnMouseUp);\n this.btnClear.addEventListener('mouseleave', this.btnOnMouseUp);\n this.btnClear.addEventListener('click', this.btnOnClick);\n formField.appendChild(this.input);\n formField.appendChild(this.dataList);\n formField.appendChild(this.btnClear);\n return formField;\n }\n onRemove() {\n if (this.saveThrottlingTimer) {\n window.clearTimeout(this.saveThrottlingTimer);\n }\n if (this.hasPendingChanges) {\n this.saveWidget();\n }\n this.input.removeEventListener('focus', this.inputOnFocus);\n this.input.removeEventListener('blur', this.inputOnBlur);\n this.input.removeEventListener('input', this.inputOnInput);\n this.input.removeEventListener('change', this.inputOnChange);\n this.input.removeEventListener('keydown', this.inputOnKeyDown);\n this.btnClear.removeEventListener('mousedown', this.btnOnMouseDown);\n this.btnClear.removeEventListener('mouseup', this.btnOnMouseUp);\n this.btnClear.removeEventListener('mouseleave', this.btnOnMouseUp);\n this.btnClear.removeEventListener('click', this.btnOnClick);\n }\n setFocus() {\n this.input.focus();\n }\n updateBtnVisibility() {\n if (this.btnClear) {\n this.btnClear.style.display = this.input.value === '' ? 'none' : 'flex';\n }\n }\n updateWidget() {\n const { value, list } = this.input;\n const options = list.options;\n const chosen = [...options].findIndex((i) => i.value === value);\n if (chosen >= 0) {\n this.widget.chosen = chosen;\n }\n else {\n this.widget.customEntry = value;\n }\n if (this.saveThrottlingTimer) {\n window.clearTimeout(this.saveThrottlingTimer);\n }\n this.saveThrottlingTimer = window.setTimeout(() => {\n this.saveWidget();\n this.hasPendingChanges = false;\n }, 500);\n }\n inputOnFocus(e) {\n this.updateBtnVisibility();\n }\n inputOnBlur(e) {\n if (!this.btnClearPressed) {\n this.saveWidget();\n this.hasPendingChanges = false;\n this.onBlur();\n }\n }\n inputOnInput(e) {\n this.updateBtnVisibility();\n this.updateWidget();\n }\n inputOnChange(e) {\n this.updateBtnVisibility();\n }\n inputOnKeyDown(e) {\n if (e.code === 'Tab') {\n this.onTab(e.shiftKey);\n }\n else if (e.code === 'Escape') {\n this.input.blur();\n }\n }\n btnOnClick(e) {\n this.input.value = '';\n this.updateWidget();\n this.updateBtnVisibility();\n this.input.focus();\n }\n btnOnMouseDown(e) {\n this.btnClearPressed = true;\n }\n btnOnMouseUp(e) {\n this.input.focus();\n this.btnClearPressed = false;\n }\n}\n","import { CanvasLayer } from '../CanvasLayer';\nimport { PdfItemType, WidgetType } from '../../pdf-viewer-api';\nimport { CheckBoxWidget } from './CheckBoxWidget';\nimport { ComboBoxWidget } from './ComboBoxWidget';\nimport { SelectListWidget } from './SelectListWidget';\nimport { ListBoxWidget } from './ListBoxWidget';\nimport { RadioButtonWidget } from './RadioButtonWidget';\nimport { TextBoxWidget } from './TextBoxWidget';\nconst moduleLayerName = 'EditFormField';\nconst stopPropagation = (e) => {\n e.stopPropagation();\n};\nexport class EditFormFieldLayer extends CanvasLayer {\n constructor() {\n super(...arguments);\n this.widgetAnnotation = null;\n this.formFieldElement = null;\n this.hasFocus = false;\n this.widgetEditor = null;\n }\n onCreate(args) {\n const { annotationId, action } = args;\n this.store.viewer.beginModule(moduleLayerName);\n this.widgetAnnotation = this.pdfApi.getItem(annotationId);\n this.selectNextFormField = this.selectNextFormField.bind(this);\n this.blur = this.blur.bind(this);\n this.formFieldElement = this.createHtmlLayer();\n this.formFieldElement.classList.add('pwv-formField');\n this.formFieldElement.addEventListener('mousedown', stopPropagation, false);\n this.formFieldElement.addEventListener('mousemove', stopPropagation, false);\n this.formFieldElement.addEventListener('mouseup', stopPropagation, false);\n this.formFieldElement.addEventListener('touchstart', stopPropagation, { passive: false });\n this.formFieldElement.addEventListener('touchmove', stopPropagation, { passive: true });\n this.formFieldElement.addEventListener('touchend', stopPropagation, { passive: true });\n this.updateFormFieldElementPosition();\n const widget = this.widgetAnnotation.widget;\n const widgetType = this.widgetAnnotation.widgetType;\n if (action === 'click' &&\n (widgetType === WidgetType.CHECK_BOX || widgetType === WidgetType.RADIO_BUTTON)) {\n widget.push();\n this.widgetAnnotation.pdfDocument.editAnnotation(widget);\n }\n const bb = widget.boundingBox;\n const paddingX = 4;\n const paddingY = 6;\n this.pdfApi.goToRectangle({\n page: bb.pageNumber,\n pdfX: bb.x - paddingX,\n pdfY: bb.y - paddingY,\n pdfW: bb.width + 2 * paddingX,\n pdfH: bb.height + 2 * paddingY,\n });\n const options = {\n widget: widget,\n widgetType: widgetType,\n pdfDocument: this.widgetAnnotation.pdfDocument,\n onTab: (shiftKey) => {\n this.selectNextFormField(shiftKey);\n },\n onBlur: () => {\n if (this.hasFocus) {\n this.blur();\n }\n },\n };\n switch (options.widgetType) {\n case WidgetType.CHECK_BOX:\n this.widgetEditor = new CheckBoxWidget(this.formFieldElement, options);\n break;\n case WidgetType.RADIO_BUTTON:\n this.widgetEditor = new RadioButtonWidget(this.formFieldElement, options);\n break;\n case WidgetType.TEXT_BOX:\n this.widgetEditor = new TextBoxWidget(this.formFieldElement, options);\n break;\n case WidgetType.COMBO_BOX:\n {\n if (widget.customEntryAllowed) {\n this.widgetEditor = new ComboBoxWidget(this.formFieldElement, options);\n }\n else {\n this.widgetEditor = new SelectListWidget(this.formFieldElement, options);\n }\n }\n break;\n case WidgetType.LIST_BOX:\n this.widgetEditor = new ListBoxWidget(this.formFieldElement, options);\n break;\n }\n this.hasFocus = true;\n }\n cancel() {\n this.remove();\n }\n onSave() {\n const promise = new Promise((resolve, reject) => {\n resolve();\n });\n return promise;\n }\n close() {\n this.remove();\n }\n onRemove() {\n var _a;\n this.hasFocus = false;\n (_a = this.widgetEditor) === null || _a === void 0 ? void 0 : _a.onRemove();\n this.removeHtmlElements();\n this.formFieldElement = null;\n this.store.viewer.endModule(moduleLayerName);\n }\n render(timestamp, state) {\n var _a;\n if (state.viewer.modeChanged && state.viewer.selectedModuleName !== moduleLayerName) {\n this.remove();\n return;\n }\n if (this.formFieldElement) {\n // update position\n if (state.canvas.canvasInvalidated || state.viewer.modeChanged) {\n this.updateFormFieldElementPosition();\n }\n // handle click events\n if (state.pointer.action === 'click') {\n const pointerCssPos = {\n x: state.pointer.x.cssPixels,\n y: state.pointer.y.cssPixels,\n };\n const insideHorizontal = pointerCssPos.x > this.formFieldElement.offsetLeft &&\n pointerCssPos.x < this.formFieldElement.offsetLeft + this.formFieldElement.offsetWidth;\n const insideVertical = pointerCssPos.y > this.formFieldElement.offsetTop &&\n pointerCssPos.y < this.formFieldElement.offsetTop + this.formFieldElement.offsetHeight;\n if (!insideHorizontal || !insideVertical) {\n this.blur();\n const annotationsOnPoint = this.pdfApi.getAnnotationsOnPoint({\n x: state.pointer.x.devicePixels,\n y: state.pointer.y.devicePixels,\n });\n if (annotationsOnPoint && annotationsOnPoint.length) {\n for (let i = 0; i < annotationsOnPoint.length; i++) {\n const annotationOnPoint = annotationsOnPoint[i];\n if (annotationOnPoint.itemType === PdfItemType.WIDGET &&\n !annotationOnPoint.widget.readOnly) {\n this.pdfViewerCanvas.activateModule('FormFieldModule', {\n annotationId: annotationOnPoint.id,\n action: 'click',\n });\n }\n }\n }\n return;\n }\n }\n }\n if (state.document.zoomChanged || state.viewer.modeChanged) {\n (_a = this.widgetEditor) === null || _a === void 0 ? void 0 : _a.setZoom(state.document.zoom);\n }\n }\n updateFormFieldElementPosition() {\n if (this.widgetAnnotation && this.formFieldElement) {\n const screenRect = this.pdfApi.transformPdfPageRectToScreenRect(this.widgetAnnotation.pdfRect);\n this.formFieldElement.style.left = `${screenRect.x / devicePixelRatio - 2}px`;\n this.formFieldElement.style.top = `${screenRect.y / devicePixelRatio - 2}px`;\n this.formFieldElement.style.width = `${screenRect.w / devicePixelRatio + 1}px`;\n this.formFieldElement.style.height = `${screenRect.h / devicePixelRatio + 1}px`;\n }\n }\n selectNextFormField(reverse) {\n if (this.widgetAnnotation) {\n const { annotations, document } = this.store.getState();\n const pageCount = this.pdfApi.getPageCount();\n const getNextFormFieldOnPage = (pageNumber, index) => {\n const list = annotations.byPage[pageNumber];\n for (let i = index; i < list.length; i++) {\n const annotId = list[i];\n const annotation = annotations.all[annotId];\n if (annotation.itemType === PdfItemType.WIDGET &&\n !annotation.widget.readOnly) {\n return annotation;\n }\n }\n if (pageCount === 1 && index === 0) {\n return null;\n }\n const nextPage = pageCount > pageNumber ? pageNumber + 1 : 1;\n return getNextFormFieldOnPage(nextPage, 0);\n };\n const getPreviewsFormFieldOnPage = (pageNumber, index) => {\n const list = annotations.byPage[pageNumber];\n const start = index < 0 ? list.length - 1 : index;\n for (let i = start; i >= 0; i--) {\n const annotId = list[i];\n const annotation = annotations.all[annotId];\n if (annotation.itemType === PdfItemType.WIDGET &&\n !annotation.widget.readOnly) {\n return annotation;\n }\n }\n if (pageNumber === 1) {\n return null;\n }\n return getPreviewsFormFieldOnPage(pageNumber - 1, -1);\n };\n const currentWidgetIndex = annotations.byPage[this.widgetAnnotation.page].findIndex((a) => { var _a; return a === ((_a = this.widgetAnnotation) === null || _a === void 0 ? void 0 : _a.id); });\n let currentPage = this.widgetAnnotation.page;\n let nextFormField = null;\n if (reverse) {\n if (currentWidgetIndex === 0) {\n if (currentPage === 1) {\n nextFormField = this.widgetAnnotation;\n }\n else {\n nextFormField = getPreviewsFormFieldOnPage(this.widgetAnnotation.page - 1, -1);\n }\n }\n else {\n nextFormField = getPreviewsFormFieldOnPage(this.widgetAnnotation.page, currentWidgetIndex - 1);\n }\n }\n else {\n nextFormField = getNextFormFieldOnPage(this.widgetAnnotation.page, currentWidgetIndex + 1);\n }\n if (nextFormField) {\n this.blur();\n this.pdfViewerCanvas.activateModule('FormFieldModule', {\n annotationId: nextFormField.id,\n action: 'select',\n });\n }\n }\n }\n blur() {\n if (this.hasFocus) {\n this.hasFocus = false;\n this.remove();\n }\n }\n}\n","import { CanvasModule, CanvasModuleType } from '../CanvasModule';\nimport { EditFormFieldLayer } from './EditFormFieldLayer';\nexport class FormFieldModule extends CanvasModule {\n constructor() {\n super();\n this.name = FormFieldModule.moduleInfo.name;\n }\n onRegister() {\n return {};\n }\n activate(args) {\n if (!this.canvasLayers['edit']) {\n this.onEdit(args);\n }\n }\n onEdit(args) {\n this.createCanvasLayer('edit', EditFormFieldLayer, args);\n }\n}\nFormFieldModule.moduleInfo = {\n name: 'FormFieldModule',\n moduleType: CanvasModuleType.Layer,\n requiredFeatures: {\n annotate: false,\n fillFormFields: true,\n },\n};\n","import { WidgetBase } from './WidgetBase';\nexport class ListBoxWidget extends WidgetBase {\n createFormField() {\n const formField = document.createElement('select');\n formField.setAttribute('required', 'true');\n if (this.widget.multiSelectAllowed) {\n formField.setAttribute('multiple', 'true');\n }\n else {\n formField.setAttribute('size', `${this.widget.options.size}`);\n }\n formField.classList.add('pwv-formField__ListBox');\n const values = Array.from(this.widget.chosen.values());\n for (let i = 0; i < this.widget.options.size; i++) {\n const value = this.widget.options.get(i);\n const item = document.createElement('option');\n item.value = i.toString();\n item.textContent = value;\n formField.appendChild(item);\n item.selected = values.includes(i);\n }\n this.handleOnChange = this.handleOnChange.bind(this);\n this.handleOnKeyDown = this.handleOnKeyDown.bind(this);\n this.handleOnBlur = this.handleOnBlur.bind(this);\n formField.addEventListener('change', this.handleOnChange);\n formField.addEventListener('keydown', this.handleOnKeyDown);\n formField.addEventListener('blur', this.handleOnBlur);\n formField.addEventListener('wheel', (e) => {\n e.stopPropagation();\n });\n return formField;\n }\n onRemove() {\n this.editorElement.removeEventListener('change', this.handleOnChange);\n this.editorElement.removeEventListener('keydown', this.handleOnKeyDown);\n this.editorElement.removeEventListener('blur', this.handleOnBlur);\n }\n setFocus() {\n this.editorElement.focus();\n }\n handleOnKeyDown(e) {\n if (e.code === 'Tab') {\n this.onTab(e.shiftKey);\n }\n else if (e.code === 'Escape') {\n this.onBlur();\n }\n }\n handleOnBlur(e) {\n this.onBlur();\n }\n handleOnChange(e) {\n let selectedOptions = [];\n if (!e.target.value) {\n const value = Array.from(this.widget.chosen.values()).shift();\n selectedOptions = [value];\n e.target.value = value;\n }\n else {\n selectedOptions = [...e.target.options]\n .filter((o) => o.selected)\n .map((o) => parseInt(o.value));\n if (!this.widget.multiSelectAllowed) {\n const value = selectedOptions[0];\n selectedOptions = [value];\n e.target.value = value;\n }\n }\n this.widget.chosen.clear();\n selectedOptions.forEach((o) => this.widget.chosen.add(o));\n this.saveWidget();\n }\n}\n","import { WidgetBase } from './WidgetBase';\nexport class RadioButtonWidget extends WidgetBase {\n createFormField() {\n const formField = document.createElement('label');\n formField.classList.add('pwv-formField__RadioButton');\n formField.style.overflow = 'hidden';\n const radio = document.createElement('input');\n radio.type = 'radio';\n radio.checked = this.widget.selected;\n radio.style.position = 'absolute';\n radio.style.top = '-20px';\n radio.style.left = '-20px';\n formField.appendChild(radio);\n this.handleOnChange = this.handleOnChange.bind(this);\n this.handleOnKeyDown = this.handleOnKeyDown.bind(this);\n this.handleOnBlur = this.handleOnBlur.bind(this);\n formField.addEventListener('change', this.handleOnChange);\n formField.addEventListener('keydown', this.handleOnKeyDown);\n formField.addEventListener('blur', this.handleOnBlur);\n return formField;\n }\n onRemove() {\n this.editorElement.removeEventListener('change', this.handleOnChange);\n this.editorElement.removeEventListener('keydown', this.handleOnKeyDown);\n this.editorElement.removeEventListener('blur', this.handleOnBlur);\n }\n setFocus() {\n this.editorElement.focus();\n }\n handleOnKeyDown(e) {\n if (e.code === 'Tab') {\n this.onTab(e.shiftKey);\n }\n else if (e.code === 'Escape') {\n this.onBlur();\n }\n }\n handleOnBlur(e) {\n this.onBlur();\n }\n handleOnChange(e) {\n this.widget.push();\n this.saveWidget();\n }\n}\n","import { WidgetBase } from './WidgetBase';\nexport class SelectListWidget extends WidgetBase {\n createFormField() {\n const formField = document.createElement('select');\n formField.classList.add('pwv-formField__SelectList');\n for (let i = 0; i < this.widget.options.size; i++) {\n const value = this.widget.options.get(i);\n const item = document.createElement('option');\n item.value = i.toString();\n item.textContent = value;\n formField.appendChild(item);\n }\n formField.value = this.widget.chosen;\n this.handleOnChange = this.handleOnChange.bind(this);\n this.handleOnKeyDown = this.handleOnKeyDown.bind(this);\n this.handleOnBlur = this.handleOnBlur.bind(this);\n formField.addEventListener('change', this.handleOnChange);\n formField.addEventListener('keydown', this.handleOnKeyDown);\n formField.addEventListener('blur', this.handleOnBlur);\n return formField;\n }\n onRemove() {\n // this.editorElement.removeEventListener('change', this.handleOnChange)\n // this.editorElement.removeEventListener('keydown', this.handleOnKeyDown)\n // this.editorElement.removeEventListener('blur', this.handleOnBlur)\n }\n setFocus() {\n this.editorElement.focus();\n }\n handleOnKeyDown(e) {\n if (e.code === 'Tab') {\n this.onTab(e.shiftKey);\n }\n else if (e.code === 'Escape') {\n this.onBlur();\n }\n }\n handleOnBlur(e) {\n this.onBlur();\n }\n handleOnChange(e) {\n this.widget.chosen = parseInt(e.target.value);\n this.saveWidget();\n }\n}\n","import { WidgetBase } from './WidgetBase';\nexport class TextBoxWidget extends WidgetBase {\n createFormField() {\n const formField = this.widget.multilineAllowed\n ? document.createElement('textarea')\n : document.createElement('input');\n formField.classList.add('pwv-formField__TextBox');\n if (this.widget.text) {\n formField.value = this.widget.text;\n }\n if (this.widget.maxLength && this.widget.maxLength >= 0) {\n formField.maxLength = this.widget.maxLength;\n }\n if (this.widget.comb) {\n formField.style.letterSpacing = '1em';\n }\n this.handleOnChange = this.handleOnChange.bind(this);\n this.handleOnKeyDown = this.handleOnKeyDown.bind(this);\n this.handleOnBlur = this.handleOnBlur.bind(this);\n formField.addEventListener('input', this.handleOnChange);\n formField.addEventListener('keydown', this.handleOnKeyDown);\n formField.addEventListener('blur', this.handleOnBlur);\n return formField;\n }\n onRemove() {\n // this.editorElement.removeEventListener('change', this.handleOnChange)\n // this.editorElement.removeEventListener('keydown', this.handleOnKeyDown)\n // this.editorElement.removeEventListener('blur', this.handleOnBlur)\n }\n setFocus() {\n this.editorElement.focus();\n }\n handleOnKeyDown(e) {\n if (e.code === 'Tab') {\n this.onTab(e.shiftKey);\n }\n else if (e.code === 'Escape') {\n this.onBlur();\n }\n }\n handleOnBlur(e) {\n this.onBlur();\n }\n handleOnChange(e) {\n try {\n this.widget.text = e.target.value;\n }\n catch (err) {\n console.warn(err);\n }\n this.saveWidget();\n }\n}\n","export class WidgetBase {\n constructor(element, options) {\n this.element = element;\n this.widgetType = options.widgetType;\n this.widget = options.widget;\n this.pdfDocument = options.pdfDocument;\n this.onTab = options.onTab;\n this.onBlur = options.onBlur;\n this.editorElement = this.createFormField();\n this.editorElement.classList.add('pwv-formField__Element');\n this.element.appendChild(this.editorElement);\n window.setTimeout(() => {\n this.setFocus();\n }, 1);\n }\n saveWidget() {\n this.pdfDocument\n .editAnnotation(this.widget)\n .then(() => { })\n .catch((err) => {\n console.warn(err);\n });\n }\n setZoom(zoom) {\n this.editorElement.style.transform = `scale(${zoom})`;\n this.editorElement.style.width = this.element.clientWidth / zoom + 'px';\n this.editorElement.style.height = this.element.clientHeight / zoom + 'px';\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { CanvasLayer } from '../CanvasLayer';\nimport { PdfItemType, AnnotationBorderStyle, } from '../../pdf-viewer-api';\nimport { CursorStyle } from '../../pdf-viewer-canvas/state/viewer';\nimport { getRectFromSelection } from '../../pdf-viewer-canvas/state/document';\nimport { createAddFreetextAnnotationToolbar } from './AddFreetextAnnotationToolbar';\nconst moduleLayerName = 'AddFreetextAnnotation';\nexport class AddFreetextAnnotationLayer extends CanvasLayer {\n constructor() {\n super(...arguments);\n this.context = null;\n this.colors = [];\n this.selectedColor = '';\n this.borderWidths = [];\n this.pointerDown = false;\n this.startPoint = null;\n this.page = 0;\n }\n onCreate() {\n this.setColor = this.setColor.bind(this);\n this.setBorderWidth = this.setBorderWidth.bind(this);\n this.close = this.close.bind(this);\n this.context = this.createCanvas();\n this.colors = this.options.annotation.colors.backgroundColors;\n this.selectedColor =\n this.options.annotation.colors.freetextBackgroundColor ||\n this.options.annotation.colors.defaultBackgroundColor;\n // todo: get values from options\n this.borderWidths = [0, 1, 2, 3, 4];\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n createAddFreetextAnnotationToolbar({\n colors: this.colors,\n selectedColor: this.selectedColor,\n borderWidths: this.borderWidths,\n selectedBorderWidth: this.options.annotation.freetextBorderWidth || this.options.annotation.defaultBorderWidth,\n onColorChanged: this.setColor,\n onBorderWidthChanged: this.setBorderWidth,\n onClose: this.close,\n }, toolbarElement);\n this.store.viewer.beginModule(moduleLayerName);\n }\n onSave() {\n const promise = new Promise((resolve, reject) => {\n resolve();\n });\n return promise;\n }\n onRemove() {\n this.removeCanvasElements();\n this.context = null;\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n toolbarElement.innerHTML = '';\n this.store.viewer.setCursorStyle(CursorStyle.DEFAULT);\n this.store.viewer.endModule(moduleLayerName);\n }\n render(timestamp, state) {\n if (state.viewer.modeChanged && state.viewer.selectedModuleName !== moduleLayerName) {\n this.remove();\n return;\n }\n if (this.context) {\n const update = state.viewer.modeChanged ||\n state.pointer.positionChanged ||\n state.pointer.action ||\n state.document.zoomChanged;\n if (update) {\n const ctx = this.context;\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n const pointerPos = { x: state.pointer.x.devicePixels, y: state.pointer.y.devicePixels };\n const pointerPdfPos = this.pdfApi.transformScreenPointToPdfPoint(pointerPos);\n if (pointerPdfPos.isOnPage) {\n this.store.viewer.setCursorStyle(CursorStyle.CROSSHAIR);\n }\n else {\n this.store.viewer.setCursorStyle(CursorStyle.NOT_ALLOWED);\n }\n if (state.pointer.isDown) {\n if (!this.pointerDown) {\n this.startPoint = pointerPos;\n this.pointerDown = true;\n if (this.page === 0 && pointerPdfPos.isOnPage) {\n this.page = pointerPdfPos.pdfPoint.page;\n }\n }\n if (this.startPoint) {\n const rect = getRectFromSelection(state.document, {\n x: this.startPoint.x,\n y: this.startPoint.y,\n }, {\n x: pointerPos.x,\n y: pointerPos.y,\n }, this.page);\n if (rect) {\n const lineWidth = 2 * devicePixelRatio;\n ctx.save();\n ctx.strokeStyle = this.options.viewer.general.textSelectionColor;\n ctx.fillStyle = this.options.viewer.general.textSelectionColor;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash([lineWidth, lineWidth]);\n ctx.strokeRect(rect.x, rect.y, rect.w, rect.h);\n ctx.globalAlpha = 0.33;\n ctx.fillRect(rect.x, rect.y, rect.w, rect.h);\n ctx.restore();\n }\n }\n }\n else if (this.pointerDown && this.startPoint) {\n const rect = getRectFromSelection(state.document, {\n x: this.startPoint.x,\n y: this.startPoint.y,\n }, {\n x: pointerPos.x,\n y: pointerPos.y,\n }, this.page);\n if (rect) {\n this.createFreeTextAnnotation(rect);\n this.pointerDown = false;\n this.startPoint = null;\n this.remove();\n }\n }\n }\n }\n }\n setColor(color) {\n this.selectedColor = color;\n this.options.annotation.colors.freetextBackgroundColor = color;\n }\n setBorderWidth(borderWidth) {\n this.options.annotation.freetextBorderWidth = borderWidth;\n }\n close() {\n this.remove();\n }\n createFreeTextAnnotation(rect) {\n return __awaiter(this, void 0, void 0, function* () {\n const pdfRect = this.pdfApi.transformScreenRectToPdfRect(rect, this.page);\n const { pdfY, pdfH, pdfW, pdfX, page } = pdfRect;\n const pageSize = yield this.pdfApi.getPagePdfSize(page);\n const minWidth = 20;\n const minHeight = 18;\n const isRotated = this.pdfApi.getRotation() % 180 !== 0;\n pdfRect.pdfW = isRotated ? Math.max(minHeight, pdfW) : Math.max(minWidth, pdfW);\n pdfRect.pdfH = isRotated ? Math.max(minWidth, pdfH) : Math.max(minHeight, pdfH);\n pdfRect.pdfX = Math.min(pdfX, pageSize.width - pdfRect.pdfW);\n pdfRect.pdfY = Math.min(pdfY, pageSize.height - pdfRect.pdfH);\n const annotation = {\n itemType: PdfItemType.FREE_TEXT,\n color: this.selectedColor === 'transparent' ? '#00000000' : this.selectedColor,\n author: this.options.viewer.general.user,\n page: pdfRect.page,\n pdfRect,\n border: {\n width: this.options.annotation.freetextBorderWidth || this.options.annotation.defaultBorderWidth,\n style: AnnotationBorderStyle.SOLID,\n },\n /* tslint:disable-next-line: max-line-length */\n richtext: `
`,\n fontName: 'Arial',\n fontColor: this.options.annotation.fonts.freetextFontColor,\n fontSize: this.options.annotation.fonts.freetextFontSize,\n };\n this.pdfApi.createItem(annotation).then((item) => {\n this.onAnnotationCreated(item).then((item) => {\n const module = this.module;\n module.onEdit(item.id);\n });\n });\n });\n }\n}\n","import { app, h } from '../../lib/hyperapp';\nimport { translationManager } from '../../common/TranslationManager';\nimport { Toolbar } from '../../common/Toolbar';\nimport { ToolbarItemGroup } from '../../common/ToolbarItemGroup';\nimport { ToolbarButton } from '../../common/ToolbarButton';\nimport { icons } from '../../common/icons';\nimport { ToolbarSeparator } from '../../common/ToolbarSeparator';\nimport { ColorPicker } from '../../common/ColorPicker';\nimport { StrokeWidthPicker } from '../../common/StrokeWidthPicker';\nexport const createAddFreetextAnnotationToolbar = (props, element) => {\n const state = {\n colors: props.colors,\n selectedColor: props.selectedColor,\n borderWidths: props.borderWidths,\n selectedBorderWidth: props.selectedBorderWidth,\n };\n const actions = {\n setColor: (color) => ($state) => {\n props.onColorChanged(color);\n return Object.assign(Object.assign({}, $state), { selectedColor: color });\n },\n setBorderWith: (borderWidth) => ($state) => {\n props.onBorderWidthChanged(borderWidth);\n return Object.assign(Object.assign({}, $state), { selectedBorderWidth: borderWidth });\n },\n };\n const App = () => h(AddFreetextAnnotationToolbar, null);\n /* tslint:disable-next-line:max-line-length */\n const AddFreetextAnnotationToolbar = ({}) => ($state, $actions) => (h(Toolbar, { allowWrap: true, alignCenter: true },\n h(ToolbarItemGroup, null,\n h(ColorPicker, { colors: $state.colors, color: $state.selectedColor, icon: icons.fillColor, mode: \"buttons\", onChange: $actions.setColor }),\n h(StrokeWidthPicker, { tooltip: translationManager.getText('annotFreeText.borderWidth'), noneStrokeText: translationManager.getText('border.none'), strokeWidths: $state.borderWidths, value: $state.selectedBorderWidth, onChange: $actions.setBorderWith })),\n h(ToolbarItemGroup, { pushRight: true },\n h(ToolbarSeparator, null),\n h(ToolbarButton, { icon: icons.close, onClick: props.onClose }))));\n return app(state, actions, App, element);\n};\n","import { CanvasLayer } from '../CanvasLayer';\nimport { Color } from '../../common/Color';\nimport { createEditFreetextAnnotationToolbar, } from './EditFreetextAnnotationToolbar';\nimport { RichTextEditor } from './RichTextEditor';\nimport { convertPdfToCssPixel, convertCssToPdfPixel } from '../../common/Tools';\nimport { addHistoryEntry } from '../../custom/history';\nconst moduleLayerName = 'EditFreetextAnnotation';\nexport class EditFreetextAnnotationLayer extends CanvasLayer {\n constructor() {\n super(...arguments);\n this.freetextAnnotation = null;\n this.editorElement = null;\n this.richTextEditor = null;\n this.toolbarView = null;\n this.color = this.options.annotation.fonts.freetextFontColor;\n this.fontSize = `${this.options.annotation.fonts.defaultFontSize}pt`;\n this.borderWidth = 1;\n this.fontSizeCSS = convertPdfToCssPixel(`${this.options.annotation.fonts.defaultFontSize}`);\n this.fontName = this.options.annotation.fonts.freetextFontFamily;\n }\n onCreate(annotationId) {\n this.store.viewer.beginModule(moduleLayerName);\n this.freetextAnnotation = this.pdfApi.getItem(annotationId);\n this.updateFreeTextAnnotation = this.updateFreeTextAnnotation.bind(this);\n this.close = this.close.bind(this);\n this.executeCommand = this.executeCommand.bind(this);\n this.editorElement = this.createHtmlLayer();\n this.editorElement.style.position = 'absolute';\n this.editorElement.style.zIndex = '4';\n const annotationOptions = this.options.annotation;\n this.color = annotationOptions.colors.freetextFontColor;\n this.borderWidth = this.freetextAnnotation.border.width;\n this.fontName = annotationOptions.fonts.freetextFontFamily;\n this.fontSize = `${annotationOptions.fonts.freetextFontSize}`;\n this.fontSizeCSS = convertPdfToCssPixel(`${annotationOptions.fonts.freetextFontSize}`);\n if (this.freetextAnnotation.richText) {\n const colorRes = /.*color:(.*?);/.exec(this.freetextAnnotation.richText);\n const fontNameRes = /.*font-family:(.*?);/.exec(this.freetextAnnotation.richText);\n const fontSizeRes = /.*font-size:(.*?)[;|\\\"]/.exec(this.freetextAnnotation.richText);\n if (colorRes && colorRes.length > 1) {\n this.color = colorRes[1];\n }\n if (fontNameRes && fontNameRes.length > 1) {\n this.fontName = fontNameRes[1];\n }\n if (fontSizeRes && fontSizeRes.length > 1) {\n this.fontSize = fontSizeRes[1];\n this.fontSizeCSS = convertPdfToCssPixel(this.fontSize);\n }\n }\n else {\n this.color = this.freetextAnnotation.color;\n this.fontName = this.freetextAnnotation.fontName;\n this.fontSizeCSS = convertPdfToCssPixel(this.freetextAnnotation.fontSize);\n }\n this.richTextEditor = new RichTextEditor(this.editorElement, {\n content: this.freetextAnnotation.content,\n richText: this.freetextAnnotation.richText,\n backgroundColor: this.freetextAnnotation.color,\n borderWidth: this.freetextAnnotation.border.width,\n fontName: this.fontName,\n fontColor: this.color,\n fontSizeCSS: this.fontSizeCSS,\n });\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n this.toolbarView = createEditFreetextAnnotationToolbar({\n annotation: this.freetextAnnotation,\n backgroundColors: [...annotationOptions.colors.backgroundColors],\n borderWidths: [0, 1, 2, 3, 4],\n fontColors: [...annotationOptions.colors.foregroundColors],\n fontFamilies: annotationOptions.fonts.fontFamilies,\n fontSizes: annotationOptions.fonts.fontSizes,\n selectedFont: this.fontName,\n selectedBackgroundColor: this.freetextAnnotation.color,\n selectedFontColor: this.color,\n selectedFontSize: this.fontSize,\n selectedBorderWidth: this.borderWidth,\n allowLockAnnotations: this.options.viewer.permissions.allowLockAnnotations,\n hideAnnotationSubject: this.options.annotation.hideAnnotationSubject || false,\n onCmd: this.executeCommand,\n onClose: this.close,\n }, toolbarElement);\n }\n onSave() {\n return new Promise((resolve, reject) => {\n this.updateFreeTextAnnotation().then(() => {\n this.remove();\n resolve();\n });\n });\n }\n close() {\n this.updateFreeTextAnnotation().then(() => {\n this.remove();\n });\n }\n onRemove() {\n this.removeHtmlElements();\n this.editorElement = null;\n this.freetextAnnotation = null;\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n toolbarElement.innerHTML = '';\n this.store.viewer.endModule(moduleLayerName);\n }\n render(timestamp, state) {\n if (state.viewer.modeChanged && state.viewer.selectedModuleName !== moduleLayerName) {\n this.remove();\n return;\n }\n if (this.editorElement && state.pointer.action === 'click') {\n const insideHorizontal = state.pointer.x.cssPixels > this.editorElement.offsetLeft &&\n state.pointer.x.cssPixels < this.editorElement.offsetLeft + this.editorElement.offsetWidth;\n const insideVertical = state.pointer.y.cssPixels > this.editorElement.offsetTop &&\n state.pointer.y.cssPixels < this.editorElement.offsetTop + this.editorElement.offsetHeight;\n if (!insideHorizontal || !insideVertical) {\n this.updateFreeTextAnnotation();\n this.remove();\n return;\n }\n }\n if (this.editorElement && this.freetextAnnotation && this.richTextEditor) {\n const updatePosition = state.canvas.canvasInvalidated || state.viewer.modeChanged;\n if (updatePosition) {\n const screenRect = this.pdfApi.transformPdfPageRectToScreenRect(this.freetextAnnotation.pdfRect);\n this.editorElement.style.left = `${screenRect.x / devicePixelRatio}px`;\n this.editorElement.style.top = `${screenRect.y / devicePixelRatio}px`;\n const width = screenRect.w / devicePixelRatio;\n const height = screenRect.h / devicePixelRatio;\n const rotation = (this.freetextAnnotation.rotation + state.document.rotation) % 360;\n this.editorElement.style.transform = `rotate(${rotation}deg)`;\n if (rotation == 90) {\n this.editorElement.style.width = `${height}px`;\n this.editorElement.style.height = `${width}px`;\n this.editorElement.style.transformOrigin = `${width / 2}px ${width / 2}px`;\n }\n else if (rotation == 180) {\n this.editorElement.style.width = `${width}px`;\n this.editorElement.style.height = `${height}px`;\n this.editorElement.style.transformOrigin = `${width / 2}px ${height / 2}px`;\n }\n else if (rotation == 270) {\n this.editorElement.style.width = `${height}px`;\n this.editorElement.style.height = `${width}px`;\n this.editorElement.style.transformOrigin = `${height / 2}px ${height / 2}px`;\n }\n else {\n this.editorElement.style.width = `${width}px`;\n this.editorElement.style.height = `${height}px`;\n }\n }\n if (state.document.zoomChanged || state.viewer.modeChanged) {\n this.richTextEditor.setZoom(state.document.zoom);\n }\n }\n }\n executeCommand(cmd) {\n var _a;\n switch (cmd.cmd) {\n case 'setFont': {\n this.options.annotation.fonts.freetextFontFamily = cmd.args;\n break;\n }\n case 'setFontSize': {\n this.options.annotation.fonts.freetextFontSize = cmd.args;\n break;\n }\n }\n (_a = this.richTextEditor) === null || _a === void 0 ? void 0 : _a.executeCommand(cmd);\n }\n updateFreeTextAnnotation() {\n const promise = new Promise((resolve, reject) => {\n if (this.richTextEditor && this.freetextAnnotation) {\n const richTextObj = this.richTextEditor.getEditorValues();\n const subject = this.toolbarView\n ? this.toolbarView.getState().updatedSubject\n : this.freetextAnnotation.subject;\n if (this.options.annotation.trackHistory) {\n addHistoryEntry(this.freetextAnnotation, 'edit', this.options.viewer.general.user, richTextObj.content, subject);\n }\n const fontColor = new Color(richTextObj.fontColor);\n const backgroundColor = richTextObj.backgroundColor === ''\n ? null\n : new Color(richTextObj.backgroundColor);\n this.freetextAnnotation.content = richTextObj.content;\n this.freetextAnnotation.subject = subject;\n this.freetextAnnotation.richText = richTextObj.richText;\n this.freetextAnnotation.fontColor = fontColor.toHexRgb();\n this.freetextAnnotation.fontName =\n richTextObj.fontName !== null ? richTextObj.fontName : 'Helvetica';\n this.freetextAnnotation.fontSize = richTextObj.fontSizeCSS\n ? convertCssToPdfPixel(richTextObj.fontSizeCSS)\n : this.freetextAnnotation.fontSize;\n this.freetextAnnotation.color = backgroundColor !== null ? backgroundColor.toRgba() : null;\n this.freetextAnnotation.border.width = richTextObj.borderWidth;\n this.pdfApi\n .updateItem(this.freetextAnnotation)\n .then((item) => {\n this.store.annotations.updateAnnotation(item);\n resolve();\n })\n .catch((err) => {\n console.error(err);\n reject();\n });\n }\n });\n return promise;\n }\n}\n","import { app, h } from '../../lib/hyperapp';\nimport { translationManager } from '../../common/TranslationManager';\nimport { Toolbar } from '../../common/Toolbar';\nimport { ToolbarItemGroup } from '../../common/ToolbarItemGroup';\nimport { ToolbarButton } from '../../common/ToolbarButton';\nimport { Dropdown } from '../../common/Dropdown';\nimport { ColorPicker } from '../../common/ColorPicker';\nimport { icons } from '../../common/icons';\nimport { ToolbarSeparator } from '../../common/ToolbarSeparator';\nimport { StrokeWidthPicker } from '../../common/StrokeWidthPicker';\n/** internal */\nexport const createEditFreetextAnnotationToolbar = (props, element) => {\n const state = {\n annotation: props.annotation,\n updatedSubject: props.annotation.subject,\n backgroundColors: props.backgroundColors,\n borderWidths: props.borderWidths,\n selectedBorderWidth: props.selectedBorderWidth,\n fontColors: props.fontColors,\n fontFamilies: props.fontFamilies,\n fontSizes: props.fontSizes,\n selectedFont: props.selectedFont,\n selectedBackgroundColor: props.selectedBackgroundColor,\n selectedFontColor: props.selectedFontColor,\n selectedFontSize: props.selectedFontSize,\n hasRangeSelection: false,\n };\n const actions = {\n getState: () => ($state) => $state,\n setBorderWith: (borderWidth) => ($state) => {\n // props.onBorderWidthChanged(borderWidth)\n props.onCmd({ cmd: 'setBorderWidth', args: borderWidth });\n return Object.assign(Object.assign({}, $state), { selectedBorderWidth: borderWidth });\n },\n executeCommand: (cmd) => ($state) => {\n props.onCmd(cmd);\n return $state;\n },\n setFontFamily: (fontName) => ($state) => {\n props.onCmd({ cmd: 'setFont', args: fontName });\n return Object.assign(Object.assign({}, $state), { selectedFont: fontName });\n },\n setFontSize: (fontSize) => ($state) => {\n props.onCmd({ cmd: 'setFontSize', args: fontSize });\n return Object.assign(Object.assign({}, $state), { selectedFontSize: `${fontSize}pt` });\n },\n setFontColor: (color) => ($state) => {\n props.onCmd({ cmd: 'setFontColor', args: color });\n return Object.assign(Object.assign({}, $state), { selectedFontColor: color });\n },\n setBackgroundColor: (color) => ($state) => {\n props.onCmd({ cmd: 'setFillColor', args: color });\n return Object.assign(Object.assign({}, $state), { selectedBackgroundColor: color });\n },\n setSubject: (subject) => ($state) => {\n return Object.assign(Object.assign({}, $state), { annotation: $state.annotation, updatedSubject: subject });\n },\n hasRangeSelectionChanged: (hasRangeSelection) => ($state) => (Object.assign(Object.assign({}, $state), { hasRangeSelection })),\n close: () => ($state) => {\n props.onClose();\n return $state;\n },\n };\n const App = () => (h(EditFreetextAnnotationToolbar, { hideAnnotationSubject: props.hideAnnotationSubject }));\n /* tslint:disable-next-line:max-line-length */\n const EditFreetextAnnotationToolbar = ({ hideAnnotationSubject }) => ($state, $actions) => (h(Toolbar, { allowWrap: true, alignCenter: true },\n h(ToolbarItemGroup, null,\n h(Dropdown, { tooltip: translationManager.getText('annotFreeText.fontFamily'), text: $state.selectedFont, value: $state.selectedFont, width: 150, items: $state.fontFamilies.map((font) => ({\n text: font,\n value: font,\n })), onChange: $actions.setFontFamily }),\n h(Dropdown, { tooltip: translationManager.getText('annotFreeText.fontSize'), text: $state.selectedFontSize, value: $state.selectedFontSize, width: 85, align: \"right\", items: $state.fontSizes.map((size, index) => ({\n text: `${size}pt`,\n value: size,\n })), onChange: $actions.setFontSize }),\n h(ToolbarSeparator, null)),\n h(ToolbarItemGroup, null,\n h(ColorPicker, { tooltip: translationManager.getText('annotFreeText.fontColor'), colors: $state.fontColors, icon: icons.fontColor, color: $state.selectedFontColor, onChange: $actions.setFontColor }),\n h(ColorPicker, { tooltip: translationManager.getText('annotFreeText.bgColor'), colors: $state.backgroundColors, icon: icons.fillColor, color: $state.selectedBackgroundColor, onChange: $actions.setBackgroundColor }),\n h(StrokeWidthPicker, { tooltip: translationManager.getText('annotFreeText.borderWidth'), noneStrokeText: translationManager.getText('border.none'), strokeWidths: $state.borderWidths, value: $state.selectedBorderWidth, onChange: $actions.setBorderWith }),\n h(ToolbarSeparator, null)),\n h(ToolbarItemGroup, null,\n h(ToolbarButton, { tooltip: translationManager.getText('annotFreeText.alignLeft'), icon: icons.alignLeft, onClick: () => {\n $actions.executeCommand({ cmd: 'justifyLeft' });\n } }),\n h(ToolbarButton, { tooltip: translationManager.getText('annotFreeText.alignCenter'), icon: icons.alignCenter, onClick: () => {\n $actions.executeCommand({ cmd: 'justifyCenter' });\n } }),\n h(ToolbarButton, { tooltip: translationManager.getText('annotFreeText.alignRight'), icon: icons.alignRight, onClick: () => {\n $actions.executeCommand({ cmd: 'justifyRight' });\n } }),\n h(ToolbarSeparator, null)),\n h(ToolbarItemGroup, null,\n h(ToolbarButton, { tooltip: translationManager.getText('annotFreeText.bold'), icon: icons.bold, onClick: () => {\n $actions.executeCommand({ cmd: 'bold' });\n } }),\n h(ToolbarButton, { tooltip: translationManager.getText('annotFreeText.italic'), icon: icons.italic, onClick: () => {\n $actions.executeCommand({ cmd: 'italic' });\n } }),\n h(ToolbarButton, { tooltip: translationManager.getText('annotFreeText.underline'), icon: icons.underline, onClick: () => {\n $actions.executeCommand({ cmd: 'underline' });\n } }),\n h(ToolbarSeparator, null)),\n props.allowLockAnnotations && (h(ToolbarItemGroup, null,\n h(ToolbarButton, { tooltip: translationManager.getText($state.annotation.isLocked() ? 'annotFreeText.unlock' : 'annotFreeText.lock'), icon: $state.annotation.isLocked() ? icons.lock : icons.unlock, onClick: () => {\n $state.annotation.setLock(!$state.annotation.isLocked());\n $actions.close();\n } }),\n h(ToolbarSeparator, null))),\n !hideAnnotationSubject && (h(ToolbarItemGroup, null,\n h(\"div\", { class: 'pwv-freetext-subject' },\n h(\"input\", { id: 'pwv-freetext-subject-' + $state.annotation.id, placeholder: translationManager.getText('annotFreeText.subjectPlaceholder'), onchange: (e) => {\n $actions.setSubject(e.currentTarget.value);\n }, value: $state.updatedSubject })))),\n h(ToolbarItemGroup, { pushRight: true },\n h(ToolbarButton, { icon: icons.ok, onClick: $actions.close }))));\n return app(state, actions, App, element);\n};\n","import { CanvasModule, CanvasModuleType } from '../CanvasModule';\nimport { AddFreetextAnnotationLayer } from './AddFreetextAnnotationLayer';\nimport { PdfItemType } from '../../pdf-viewer-api';\nimport { icons } from '../../common/Icon';\nimport { translationManager } from '../../common/TranslationManager';\nimport { EditFreetextAnnotationLayer } from './EditFreetextAnnotationLayer';\nexport class FreetextAnnotationModule extends CanvasModule {\n constructor() {\n super();\n this.annotationbarElement = null;\n this.toolbarElement = null;\n this.name = FreetextAnnotationModule.moduleInfo.name;\n this.onEdit = this.onEdit.bind(this);\n }\n onRegister() {\n this.toolbarElement = document.createElement('div');\n return {\n toolbar: this.toolbarElement,\n contextbar: {\n itemTypes: [PdfItemType.FREE_TEXT],\n icon: icons.edit,\n tooltip: translationManager.getText('annotFreeText.edit'),\n onCmd: (annotationId) => {\n this.onEdit(annotationId);\n },\n },\n };\n }\n activate(annotationId) {\n if (annotationId) {\n this.onEdit(annotationId);\n }\n else {\n if (!this.canvasLayers['add']) {\n if (this.store) {\n this.store.viewer.deselectAnnotation();\n }\n this.createCanvasLayer('add', AddFreetextAnnotationLayer);\n }\n else {\n this.removeCanvasLayer('add');\n }\n }\n }\n onEdit(annotationId) {\n this.createCanvasLayer('edit', EditFreetextAnnotationLayer, annotationId);\n }\n}\nFreetextAnnotationModule.moduleInfo = {\n name: 'FreetextAnnotationModule',\n moduleType: CanvasModuleType.Tool,\n requiredFeatures: {\n annotate: true,\n fillFormFields: false,\n },\n translationKey: 'annotFreeText.add',\n icon: 'freeText',\n};\n","import { Color } from '../../common/Color';\nimport { convertPdfToCssPixel, roundToTwo } from '../../common/Tools';\n/** internal */\nexport class RichTextEditor {\n constructor(element, content) {\n this.hasRangeSelection = false;\n // bind events\n this.executeCommand = this.executeCommand.bind(this);\n this.handleOnPaste = this.handleOnPaste.bind(this);\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n this.content = content;\n // create elements\n this.element = element;\n this.element.style.background = 'white';\n this.element.classList.add('pwv-freetexteditor');\n this.editorElement = document.createElement('iframe');\n this.editorElement.width = '100%';\n this.editorElement.height = '100%';\n this.editorElement.frameBorder = '0';\n this.editorElement.style.transformOrigin = '0 0';\n this.element.appendChild(this.editorElement);\n this.editorDocument = this.editorElement.contentDocument;\n this.editorDocument.open();\n this.editorDocument.close();\n // set content\n let text = content.richText;\n text = text.replace(/\\(10|13|x0A|x0D);/gi, ']*)>/gi, '
');\n text = text.replace(/<\\/div\\>/gi, '
');\n text = text.replace(//gi, '
');\n text = text.replace(/\\ ${annot.info.content}
/gi, '
');\n text = text.replace(/(\\n|\\r)/gi, '');\n // const underline = //gi\n // const found = text.match(underline) // find underline tags\n // if (found && found.length > 0) {\n // // if they exist remove them\n // text = text.replace(/<\\/?u>/gi, '')\n // text = text.replace(/style=\\\"/gi, 'style=\"text-decoration:underline') // set text-decoration instead\n // }\n text = text.replace(//gi, '');\n text = text.replace(/<\\/u>/gi, '');\n text = text.replace(/\\ \\;/gi, ' '); // remove non breaking space\n text = text.replace(/overflow\\:.*?\\;/gi, ''); // remove: overflow:...;\n text = text.replace(/background-color\\:.*?\\;/gi, ''); // remove background-color:...;\n text = text.replace(/border\\:.*?\\;/gi, ''); // remove border:...;\n text = text.replace(/border-color\\:.*?\\;/gi, ''); // remove border-color:...;\n text = text.replace(/border-style\\:.*?\\;/gi, ''); // remove border-style:...;\n text = text.replace(/border-width\\:.*?\\;/gi, ''); // remove border-width:...;\n text = text.replace(/font-size\\:\\s*(\\d*\\.?\\d+)px\\s*\\;/gi, (_, size) => {\n size = parseFloat(size);\n // calculate font size in pdf units\n size = roundToTwo((size / 96) * 72);\n return 'font-size:' + size + 'pt;';\n });\n text = text.replace(/rgb\\((.+?)\\)/gi, (rgb) => {\n return new Color(rgb).toHexRgb();\n });\n // remove spaces within the styles tag\n text = text.replace(/style=\"(.*?)\"/gi, (styles) => {\n return styles.replace(/\\s*/gi, '');\n });\n return text;\n }\n getContent(richText) {\n const parser = new DOMParser();\n const node = parser.parseFromString(richText, 'text/html').documentElement;\n let nodes = node ? node.querySelector('*') : null;\n if (nodes) {\n while (true) {\n nodes = nodes.nextSibling;\n if (nodes) {\n if (nodes.nodeName.toLocaleLowerCase() === 'body') {\n return nodes.innerText;\n }\n }\n else {\n break;\n }\n }\n }\n return null;\n }\n handleOnPaste(e) {\n e.preventDefault();\n const text = e.clipboardData.getData('text/plain');\n if (text) {\n this.executeCommand({\n cmd: 'insertText',\n args: text,\n });\n }\n }\n handleSelectionChange(e) { }\n}\n","import { CanvasLayer } from '../CanvasLayer';\nimport { PdfItemType, } from '../../pdf-viewer-api';\nimport { CursorStyle } from '../../pdf-viewer-canvas/state/viewer';\nimport { renderTextSelection } from '../../pdf-viewer-canvas/view-layers/canvasShapes';\nimport { Color } from '../../common/Color';\nimport { createAddHighlightAnnotationToolbar } from './AddHighlightAnnotationToolbar';\nimport { getRectFromSelection } from '../../pdf-viewer-canvas/state/document';\nexport var HighlightTool;\n(function (HighlightTool) {\n HighlightTool[HighlightTool[\"HIGHLIGHT\"] = 0] = \"HIGHLIGHT\";\n HighlightTool[HighlightTool[\"RECTANGULAR_HIGHLIGHT\"] = 1] = \"RECTANGULAR_HIGHLIGHT\";\n HighlightTool[HighlightTool[\"UNDERLINE\"] = 2] = \"UNDERLINE\";\n HighlightTool[HighlightTool[\"SQUIGGLY\"] = 3] = \"SQUIGGLY\";\n HighlightTool[HighlightTool[\"STRIKE_OUT\"] = 4] = \"STRIKE_OUT\";\n})(HighlightTool || (HighlightTool = {}));\nconst moduleLayerName = 'AddHighlightAnnotation';\nexport class AddHighlightAnnotationLayer extends CanvasLayer {\n constructor() {\n super(...arguments);\n this.colors = [];\n this.selectedColor = '';\n this.selectedTool = HighlightTool.HIGHLIGHT;\n this.pdfStartPoint = null;\n this.screenStartPoint = null;\n this.pointerDown = false;\n this.page = 0;\n this.selecting = false;\n this.selection = null;\n }\n onCreate() {\n this.setColor = this.setColor.bind(this);\n this.close = this.close.bind(this);\n this.setTool = this.setTool.bind(this);\n this.context = this.createCanvas();\n const annotationOptions = this.options.annotation;\n this.colors = annotationOptions.colors.highlightColors;\n this.selectedColor = annotationOptions.colors.highlightAnnotationColor;\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n createAddHighlightAnnotationToolbar({\n colors: this.colors,\n selectedColor: this.selectedColor,\n selectedTool: this.selectedTool,\n onColorChanged: this.setColor,\n onToolChanged: this.setTool,\n onClose: this.close,\n }, toolbarElement);\n this.store.viewer.beginModule(moduleLayerName);\n }\n onSave() {\n const promise = new Promise((resolve, reject) => {\n resolve();\n });\n return promise;\n }\n onRemove() {\n this.removeCanvasElements();\n this.context = null;\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n toolbarElement.innerHTML = '';\n this.store.viewer.endModule(moduleLayerName);\n }\n render(timestamp, state) {\n if (state.viewer.modeChanged && state.viewer.selectedModuleName !== moduleLayerName) {\n this.remove();\n return;\n }\n if (this.context) {\n if (this.selectedTool === HighlightTool.RECTANGULAR_HIGHLIGHT) {\n const ctx = this.context;\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n const pointerPos = {\n x: state.pointer.x.devicePixels,\n y: state.pointer.y.devicePixels,\n };\n const pointerPdfPos = this.pdfApi.transformScreenPointToPdfPoint(pointerPos);\n if (pointerPdfPos.isOnPage) {\n this.store.viewer.setCursorStyle(CursorStyle.CROSSHAIR);\n }\n else {\n this.store.viewer.setCursorStyle(CursorStyle.NOT_ALLOWED);\n }\n if (state.pointer.isDown) {\n if (!this.pointerDown) {\n this.screenStartPoint = pointerPos;\n this.pointerDown = true;\n if (this.page === 0 && pointerPdfPos.isOnPage) {\n this.page = pointerPdfPos.pdfPoint.page;\n }\n }\n if (this.screenStartPoint) {\n const rect = getRectFromSelection(state.document, {\n x: this.screenStartPoint.x,\n y: this.screenStartPoint.y,\n }, {\n x: pointerPos.x,\n y: pointerPos.y,\n }, this.page);\n if (rect) {\n const lineWidth = 2 * devicePixelRatio;\n ctx.save();\n ctx.strokeStyle = this.options.viewer.general.textSelectionColor;\n ctx.fillStyle = this.options.viewer.general.textSelectionColor;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash([lineWidth, lineWidth]);\n ctx.strokeRect(rect.x, rect.y, rect.w, rect.h);\n ctx.globalAlpha = 0.33;\n ctx.fillRect(rect.x, rect.y, rect.w, rect.h);\n ctx.restore();\n }\n }\n }\n else if (this.pointerDown && this.screenStartPoint) {\n const rect = getRectFromSelection(state.document, {\n x: this.screenStartPoint.x,\n y: this.screenStartPoint.y,\n }, {\n x: pointerPos.x,\n y: pointerPos.y,\n }, this.page);\n if (rect) {\n this.createRectangularHighlightAnnotation(rect);\n this.pointerDown = false;\n this.screenStartPoint = null;\n this.page = 0;\n }\n }\n }\n else {\n let drawSelection = state.canvas.canvasInvalidated;\n if (state.pointer.positionChanged) {\n const pointerPos = {\n x: state.pointer.x.devicePixels,\n y: state.pointer.y.devicePixels,\n };\n const pointerPdfPos = this.pdfApi.transformScreenPointToPdfPoint(pointerPos);\n let currentTextFragment = null;\n if (pointerPdfPos.isOnPage) {\n currentTextFragment = this.pdfApi.getTextFragmentOnPoint(pointerPos);\n if (currentTextFragment) {\n this.store.viewer.setCursorStyle(CursorStyle.TEXT);\n }\n else {\n this.store.viewer.setCursorStyle(CursorStyle.DEFAULT);\n }\n }\n else {\n this.store.viewer.setCursorStyle(CursorStyle.DEFAULT);\n }\n if (state.pointer.stateChanged) {\n if (state.pointer.isDown) {\n if (pointerPdfPos.isOnPage) {\n if (currentTextFragment) {\n const startPdfPos = pointerPdfPos;\n this.selecting = true;\n this.selection = null;\n this.pdfStartPoint = startPdfPos.pdfPoint;\n drawSelection = true;\n }\n }\n }\n else {\n if (this.selecting) {\n const ctx = this.context;\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n this.createHighlightAnnotation();\n this.selecting = false;\n }\n }\n }\n if (this.selecting &&\n this.pdfStartPoint &&\n this.pdfStartPoint !== pointerPdfPos.pdfPoint) {\n const endPoint = this.pdfApi.getClosestPointOnPdfByScreenPoint(pointerPos);\n this.selection = this.pdfApi.getTextSelection(this.pdfStartPoint, endPoint);\n }\n drawSelection = true;\n }\n if (drawSelection && this.selection) {\n const ctx = this.context;\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n const screenSelection = [];\n for (let i = 0; i < this.selection.quadrilaterals.length; i++) {\n const path = this.pdfApi.transformQuadrilateralToViewport(this.selection.quadrilaterals[i]);\n screenSelection.push(path);\n }\n renderTextSelection(ctx, devicePixelRatio * state.document.zoom, this.options.viewer.general.textSelectionColor, screenSelection);\n }\n }\n }\n }\n setColor(color) {\n this.selectedColor = color;\n this.options.annotation.colors.highlightAnnotationColor = color;\n }\n setTool(tool) {\n this.selectedTool = tool;\n }\n close() {\n this.remove();\n }\n getPdfItemTypeForTool() {\n switch (this.selectedTool) {\n case HighlightTool.HIGHLIGHT:\n return PdfItemType.HIGHLIGHT;\n case HighlightTool.RECTANGULAR_HIGHLIGHT:\n return PdfItemType.HIGHLIGHT;\n case HighlightTool.UNDERLINE:\n return PdfItemType.UNDERLINE;\n case HighlightTool.SQUIGGLY:\n return PdfItemType.SQUIGGLY;\n case HighlightTool.STRIKE_OUT:\n return PdfItemType.STRIKE_OUT;\n default:\n throw new Error('unknown Highlight tool');\n }\n }\n createRectangularHighlightAnnotation(rect) {\n const pdfRect = this.pdfApi.transformScreenRectToPdfRect(rect, this.page);\n const colorObj = new Color(this.selectedColor);\n colorObj.setOpacity(this.options.annotation.highlightOpacity);\n const color = colorObj.toRgba();\n const quadrilaterals = [];\n quadrilaterals.push({\n pageNumber: this.page,\n bottomLeft: { x: pdfRect.pdfX, y: pdfRect.pdfY },\n bottomRight: { x: pdfRect.pdfX + pdfRect.pdfW, y: pdfRect.pdfY },\n topLeft: { x: pdfRect.pdfX, y: pdfRect.pdfY + pdfRect.pdfH },\n topRight: { x: pdfRect.pdfX + pdfRect.pdfW, y: pdfRect.pdfY + pdfRect.pdfH },\n });\n const args = {\n itemType: PdfItemType.HIGHLIGHT,\n page: this.page,\n pdfRect,\n color,\n author: this.options.viewer.general.user,\n quadrilaterals,\n };\n this.pdfApi.createItem(args).then((item) => {\n this.onAnnotationCreated(item);\n });\n }\n createHighlightAnnotation() {\n if (this.pdfApi && this.store) {\n const pdfItemType = this.getPdfItemTypeForTool();\n const selection = this.selection;\n this.selection = null;\n if (selection) {\n const selByPage = [];\n for (let i = 0; i < selection.quadrilaterals.length; i++) {\n const quadrilateral = selection.quadrilaterals[i];\n if (!selByPage[quadrilateral.pageNumber]) {\n selByPage[quadrilateral.pageNumber] = [];\n }\n selByPage[quadrilateral.pageNumber].push(quadrilateral);\n }\n let color = this.selectedColor;\n if (pdfItemType === PdfItemType.HIGHLIGHT) {\n const colorObj = new Color(color);\n colorObj.setOpacity(this.options.annotation.highlightOpacity);\n color = colorObj.toRgba();\n }\n for (let i = 0; i < selByPage.length; i++) {\n if (selByPage[i]) {\n const quadrilaterals = selByPage[i];\n const args = {\n itemType: pdfItemType,\n page: i,\n pdfRect: {\n pdfX: 0,\n pdfY: 0,\n pdfW: 0,\n pdfH: 0,\n page: i,\n },\n color,\n author: this.options.viewer.general.user,\n quadrilaterals,\n };\n this.pdfApi.createItem(args).then((item) => {\n this.onAnnotationCreated(item);\n });\n }\n }\n }\n }\n }\n}\n","import { app, h } from '../../lib/hyperapp';\nimport { translationManager } from '../../common/TranslationManager';\nimport { Toolbar } from '../../common/Toolbar';\nimport { ToolbarItemGroup } from '../../common/ToolbarItemGroup';\nimport { ToolbarButton } from '../../common/ToolbarButton';\nimport { icons } from '../../common/icons';\nimport { ToolbarSeparator } from '../../common/ToolbarSeparator';\nimport { ColorPicker } from '../../common/ColorPicker';\nimport { HighlightTool } from './AddHighlightAnnotationLayer';\nexport const createAddHighlightAnnotationToolbar = (props, element) => {\n const state = {\n colors: props.colors,\n selectedTool: props.selectedTool,\n selectedColor: props.selectedColor,\n };\n const actions = {\n setColor: (color) => ($state) => {\n props.onColorChanged(color);\n return Object.assign(Object.assign({}, $state), { selectedColor: color });\n },\n setTool: (tool) => ($state) => {\n props.onToolChanged(tool);\n return Object.assign(Object.assign({}, $state), { selectedTool: tool });\n },\n };\n const App = () => h(AddHighlightAnnotationToolbar, null);\n /* tslint:disable-next-line:max-line-length */\n const AddHighlightAnnotationToolbar = ({}) => ($state, $actions) => (h(Toolbar, { allowWrap: true, alignCenter: true },\n h(ToolbarItemGroup, null,\n h(ColorPicker, { colors: $state.colors, color: $state.selectedColor, icon: icons.fillColor, mode: \"buttons\", onChange: $actions.setColor }),\n h(ToolbarSeparator, null)),\n h(ToolbarItemGroup, null,\n h(ToolbarButton, { tooltip: translationManager.getText('annotHighlight.highlight'), icon: icons.highlighter, active: $state.selectedTool === HighlightTool.HIGHLIGHT, onClick: () => {\n $actions.setTool(HighlightTool.HIGHLIGHT);\n } }),\n h(ToolbarButton, { tooltip: translationManager.getText('annotHighlight.underline'), icon: icons.underline, active: $state.selectedTool === HighlightTool.UNDERLINE, onClick: () => {\n $actions.setTool(HighlightTool.UNDERLINE);\n } }),\n h(ToolbarButton, { tooltip: translationManager.getText('annotHighlight.squiggly'), icon: icons.squiggly, active: $state.selectedTool === HighlightTool.SQUIGGLY, onClick: () => {\n $actions.setTool(HighlightTool.SQUIGGLY);\n } }),\n h(ToolbarButton, { tooltip: translationManager.getText('annotHighlight.strikeOut'), icon: icons.strikethrough, active: $state.selectedTool === HighlightTool.STRIKE_OUT, onClick: () => {\n $actions.setTool(HighlightTool.STRIKE_OUT);\n } }),\n h(ToolbarButton, { tooltip: translationManager.getText('annotHighlight.rectangularHighlight'), icon: icons.rectangularHighlighter, active: $state.selectedTool === HighlightTool.RECTANGULAR_HIGHLIGHT, onClick: () => {\n $actions.setTool(HighlightTool.RECTANGULAR_HIGHLIGHT);\n } })),\n h(ToolbarItemGroup, { pushRight: true },\n h(ToolbarSeparator, null),\n h(ToolbarButton, { icon: icons.close, onClick: props.onClose }))));\n return app(state, actions, App, element);\n};\n","import { CanvasLayer } from '../CanvasLayer';\nimport { Color } from '../../common/Color';\nimport { createEditHighlightAnnotationToolbar } from './EditHighlightAnnotationToolbar';\nconst moduleLayerName = 'EditHighlightAnnotation';\nexport class EditHighlightAnnotationLayer extends CanvasLayer {\n constructor() {\n super(...arguments);\n this.highlightAnnotation = null;\n this.colors = [];\n this.selectedColor = '';\n }\n onCreate(annotationId) {\n this.highlightAnnotation = this.pdfApi.getItem(annotationId);\n this.setColor = this.setColor.bind(this);\n this.close = this.close.bind(this);\n this.context = this.createCanvas();\n const annotationOptions = this.options.annotation;\n this.colors = annotationOptions.colors.highlightColors;\n this.selectedColor = annotationOptions.colors.highlightAnnotationColor;\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n createEditHighlightAnnotationToolbar({\n colors: this.colors,\n selectedColor: this.selectedColor,\n onColorChanged: this.setColor,\n onClose: this.close,\n }, toolbarElement);\n this.store.viewer.beginModule(moduleLayerName);\n }\n onSave() {\n const promise = new Promise((resolve, reject) => {\n resolve();\n });\n return promise;\n }\n onRemove() {\n this.removeCanvasElements();\n this.context = null;\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n toolbarElement.innerHTML = '';\n this.store.viewer.endModule(moduleLayerName);\n }\n render(timestamp, state) {\n var _a;\n if (state.viewer.modeChanged && state.viewer.selectedModuleName !== moduleLayerName) {\n this.close();\n return;\n }\n if (state.pointer.action === 'click' || state.pointer.action === 'dblclick') {\n const highlightAnnotation = (_a = this.pdfApi\n .getAnnotationsOnPoint({\n x: state.pointer.x.devicePixels,\n y: state.pointer.y.devicePixels,\n })) === null || _a === void 0 ? void 0 : _a.find((a) => this.highlightAnnotation && a.id === this.highlightAnnotation.id);\n if (!highlightAnnotation) {\n this.close();\n return;\n }\n }\n if (this.context && this.highlightAnnotation) {\n const ctx = this.context;\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n const rect = this.pdfApi.transformPdfPageRectToScreenRect(this.highlightAnnotation.pdfRect);\n const lineWidth = 2 * devicePixelRatio;\n ctx.save();\n ctx.strokeStyle = this.options.viewer.general.textSelectionColor;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash([lineWidth, lineWidth]);\n ctx.strokeRect(rect.x - lineWidth, rect.y - lineWidth, rect.w + 2 * lineWidth, rect.h + 2 * lineWidth);\n ctx.restore();\n }\n }\n setColor(color) {\n if (this.highlightAnnotation && this.highlightAnnotation.color) {\n const newColor = new Color(color);\n const currentColor = new Color(this.highlightAnnotation.color);\n newColor.setOpacity(currentColor.a);\n this.highlightAnnotation.color = newColor.toRgba();\n this.updateHighlightAnnotation();\n }\n }\n close() {\n this.remove();\n }\n updateHighlightAnnotation() {\n const promise = new Promise((resolve, reject) => {\n if (this.pdfApi && this.highlightAnnotation) {\n this.pdfApi\n .updateItem(this.highlightAnnotation)\n .then((item) => {\n resolve();\n })\n .catch((error) => {\n console.warn(error);\n });\n }\n else {\n reject();\n }\n });\n return promise;\n }\n}\n","import { app, h } from '../../lib/hyperapp';\nimport { Toolbar } from '../../common/Toolbar';\nimport { ToolbarItemGroup } from '../../common/ToolbarItemGroup';\nimport { ToolbarButton } from '../../common/ToolbarButton';\nimport { icons } from '../../common/icons';\nimport { ToolbarSeparator } from '../../common/ToolbarSeparator';\nimport { ColorPicker } from '../../common/ColorPicker';\nexport const createEditHighlightAnnotationToolbar = (props, element) => {\n const state = {\n colors: props.colors,\n selectedColor: props.selectedColor,\n };\n const actions = {\n setColor: (color) => ($state) => {\n props.onColorChanged(color);\n return Object.assign(Object.assign({}, $state), { selectedColor: color });\n },\n };\n const App = () => h(EditHighlightAnnotationToolbar, null);\n /* tslint:disable-next-line:max-line-length */\n const EditHighlightAnnotationToolbar = ({}) => ($state, $actions) => (h(Toolbar, { allowWrap: true, alignCenter: true },\n h(ToolbarItemGroup, null,\n h(ColorPicker, { colors: $state.colors, color: $state.selectedColor, icon: icons.fillColor, mode: \"buttons\", onChange: $actions.setColor })),\n h(ToolbarItemGroup, { pushRight: true },\n h(ToolbarSeparator, null),\n h(ToolbarButton, { icon: icons.close, onClick: props.onClose }))));\n return app(state, actions, App, element);\n};\n","import { CanvasModule, CanvasModuleType } from '../CanvasModule';\nimport { AddHighlightAnnotationLayer } from './AddHighlightAnnotationLayer';\nimport { PdfItemType } from '../../pdf-viewer-api';\nimport { icons } from '../../common/Icon';\nimport { translationManager } from '../../common/TranslationManager';\nimport { EditHighlightAnnotationLayer } from './EditHighlightAnnotationLayer';\nexport class HighlightAnnotationModule extends CanvasModule {\n constructor() {\n super();\n this.toolbarElement = null;\n this.name = HighlightAnnotationModule.moduleInfo.name;\n this.activate = this.activate.bind(this);\n }\n onRegister() {\n this.toolbarElement = document.createElement('div');\n return {\n toolbar: this.toolbarElement,\n contextbar: {\n itemTypes: [\n PdfItemType.HIGHLIGHT,\n PdfItemType.UNDERLINE,\n PdfItemType.SQUIGGLY,\n PdfItemType.STRIKE_OUT,\n ],\n icon: icons.edit,\n tooltip: translationManager.getText('annotHighlight.edit'),\n onCmd: (annotationId) => {\n this.onEdit(annotationId);\n },\n },\n };\n }\n activate() {\n if (!this.canvasLayers['add']) {\n this.createCanvasLayer('add', AddHighlightAnnotationLayer);\n }\n else {\n this.removeCanvasLayer('add');\n }\n }\n onEdit(annotationId) {\n this.createCanvasLayer('edit', EditHighlightAnnotationLayer, annotationId);\n }\n}\nHighlightAnnotationModule.moduleInfo = {\n name: 'HighlightAnnotationModule',\n moduleType: CanvasModuleType.Tool,\n requiredFeatures: {\n annotate: true,\n fillFormFields: false,\n },\n translationKey: 'annotHighlight.add',\n icon: 'highlighter',\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { CanvasModule, CanvasModuleType } from '../CanvasModule';\nimport { PdfItemType } from '../../pdf-viewer-api';\nimport { imageDataUrlToUint8Array } from '../../common/Tools';\nimport { MIN_SIZE } from '../../pdf-viewer-canvas/view-layers/views/AnnotationBorder';\nexport class ImageAnnotationModule extends CanvasModule {\n constructor() {\n super();\n this.toolbarElement = null;\n this.fileInput = null;\n this.name = ImageAnnotationModule.moduleInfo.name;\n this.createImage = this.createImage.bind(this);\n this.onFileSelected = this.onFileSelected.bind(this);\n this.createImageStampAnnotation = this.createImageStampAnnotation.bind(this);\n }\n onRegister() {\n this.toolbarElement = document.createElement('div');\n this.fileInput = document.createElement('input');\n this.fileInput.setAttribute('type', 'file');\n this.fileInput.setAttribute('accept', '.jpg, .jpeg, .jpe, .jif, .jfif, .jfi, .jp2, .j2k, .jpf, .jpm, .jpg2, .j2c, .jpc, .jpx, .mj2 .tif, tiff, .png, .gif, .bmp');\n this.fileInput.style.position = 'absolute';\n this.fileInput.style.left = '-5000px';\n this.fileInput.onchange = (e) => {\n if (e.currentTarget.files && e.currentTarget.files.length) {\n const file = e.currentTarget.files[0];\n this.onFileSelected(file);\n e.currentTarget.value = '';\n }\n };\n this.toolbarElement.append(this.fileInput);\n return {\n toolbar: this.toolbarElement,\n };\n }\n activate(file) {\n if (file) {\n this.onFileSelected(file);\n }\n else if (this.fileInput) {\n this.fileInput.click();\n }\n }\n createImage(dataUrl) {\n const image = new Image();\n image.onload = () => {\n // image needs to be over min since the moment it is added\n const anyUnderMinSize = image.width < MIN_SIZE || image.width < MIN_SIZE;\n let width = image.width;\n let height = image.height;\n // set the smallest to MIN_SIZE\n // and scale keeping aspect ratio\n if (anyUnderMinSize && width <= height) {\n height = (MIN_SIZE * height) / width;\n width = MIN_SIZE;\n }\n else if (anyUnderMinSize && height < width) {\n width = (MIN_SIZE * width) / height;\n height = MIN_SIZE;\n }\n const imageInfo = {\n width: width,\n height: height,\n stampImage: imageDataUrlToUint8Array(image.src),\n };\n this.createImageStampAnnotation(imageInfo);\n };\n image.src = dataUrl;\n }\n onFileSelected(file) {\n return __awaiter(this, void 0, void 0, function* () {\n const reader = new FileReader();\n const _this = this;\n reader.onload = function (e) {\n _this.createImage(e.target.result);\n };\n reader.readAsDataURL(file);\n });\n }\n createImageStampAnnotation(imageInfo) {\n if (this.pdfApi !== null && this.store !== null && this.options !== null) {\n const state = this.store.getState();\n const document = state.document;\n const canvasRect = this.getCanvasSize();\n const screenCenter = {\n x: canvasRect.width / 2,\n y: canvasRect.height / 2,\n };\n // get page to insert image\n let page = this.pdfApi.getPageNumber();\n const screenRect = {\n x: 0,\n y: 0,\n w: canvasRect.width,\n h: canvasRect.height,\n };\n const pageScreenRect = this.pdfApi.getPageScreenRect(page);\n const x1 = Math.max(screenRect.x, pageScreenRect.x);\n const y1 = Math.max(screenRect.y, pageScreenRect.y);\n const x2 = Math.min(screenRect.w, pageScreenRect.x + pageScreenRect.w);\n const y2 = Math.min(screenRect.h, pageScreenRect.y + pageScreenRect.h);\n const boundingRect = {\n x: x1,\n y: y1,\n w: x2 - x1,\n h: y2 - y1,\n };\n const pageBoundingBox = this.pdfApi.transformScreenRectToPdfRect(boundingRect, page);\n const imagepPdfRect = {\n pdfX: 0,\n pdfY: 0,\n pdfW: imageInfo.width * 0.24,\n pdfH: imageInfo.height * 0.24,\n page,\n };\n if (imagepPdfRect.pdfW > pageBoundingBox.pdfW) {\n const f = (pageBoundingBox.pdfW / imagepPdfRect.pdfW) * 0.97;\n imagepPdfRect.pdfW = imagepPdfRect.pdfW * f;\n imagepPdfRect.pdfH = imagepPdfRect.pdfH * f;\n }\n if (imagepPdfRect.pdfH > pageBoundingBox.pdfH) {\n const f = (pageBoundingBox.pdfH / imagepPdfRect.pdfH) * 0.97;\n imagepPdfRect.pdfW = imagepPdfRect.pdfW * f;\n imagepPdfRect.pdfH = imagepPdfRect.pdfH * f;\n }\n imagepPdfRect.pdfX = (pageBoundingBox.pdfW - imagepPdfRect.pdfW) / 2 + pageBoundingBox.pdfX;\n imagepPdfRect.pdfY = (pageBoundingBox.pdfH - imagepPdfRect.pdfH) / 2 + pageBoundingBox.pdfY;\n this.pdfApi.registerStampImage(imageInfo.stampImage).then((imageId) => {\n if (this.pdfApi !== null && this.options !== null) {\n const annotation = {\n itemType: PdfItemType.STAMP,\n imageId,\n page,\n color: this.options.annotation.colors.defaultHighlightColor,\n pdfRect: imagepPdfRect,\n author: this.options.viewer.general.user,\n };\n this.pdfApi\n .createItem(annotation)\n .then((annot) => {\n // select new annotation\n const pdfViewerCanvasApi = this.pdfViewerCanvas;\n pdfViewerCanvasApi.dispatchEvent('itemSelected', annot);\n })\n .catch((err) => {\n console.error(err);\n });\n }\n });\n }\n }\n}\nImageAnnotationModule.moduleInfo = {\n name: 'ImageAnnotationModule',\n moduleType: CanvasModuleType.Tool,\n requiredFeatures: {\n annotate: true,\n fillFormFields: false,\n },\n translationKey: 'annotImage.add',\n icon: 'image',\n};\n","export * from './freetext-annotation/FreetextAnnotationModule';\nexport * from './highlight-annotation/HighlightAnnotationModule';\nexport * from './ink-annotation/InkAnnotationModule';\nexport * from './popup/PopupModule';\nexport * from './stamp-annotation/StampAnnotationModule';\nexport * from './text-annotation/TextAnnotationModule';\nexport * from './image-annotations/ImageAnnotationModule';\nexport * from './shape-annotations/ShapeAnnotationModule';\nexport * from './eraser/EraserModule';\nexport * from './print-service/PrintServiceModule';\nexport * from './form-fields/FormFieldModule';\nexport * from './CanvasLayer';\nexport * from './CanvasModule';\n","import { CanvasLayer } from '../CanvasLayer';\nimport { PdfItemType, AnnotationBorderStyle, } from '../../pdf-viewer-api';\nimport { CursorStyle } from '../../pdf-viewer-canvas/state/viewer';\nimport { createAddInkAnnotationToolbar, } from './AddInkAnnotationToolbar';\nimport { Color } from '../../common/Color';\nconst moduleLayerName = 'AddInkAnnotation';\nexport class AddInkAnnotationLayer extends CanvasLayer {\n constructor() {\n super(...arguments);\n this.context = null;\n this.drawing = false;\n this.lines = [];\n this.page = null;\n this.zoom = null;\n this.inkWidth = 1;\n this.penColors = [];\n this.penWidths = [];\n this.penColor = '';\n this.penOpacity = 1;\n this.boundingBox = null;\n this.toolbar = null;\n this.handlePointerMove = (e) => {\n if (!e.isPrimary) {\n this.handlePointerUp(e);\n return;\n }\n const x = e.offsetX * devicePixelRatio;\n const y = e.offsetY * devicePixelRatio;\n const pdfPoint = this.pdfApi.getClosestPointOnPdfByScreenPoint({ x, y }, this.page);\n this.lines[this.lines.length - 1].push(pdfPoint);\n if (this.context) {\n const screenPoint = this.pdfApi.transformPdfPointToScreenPoint(pdfPoint);\n this.context.lineTo(screenPoint.x, screenPoint.y);\n this.context.stroke();\n }\n };\n this.handlePointerUp = (e) => {\n if (this.context) {\n const { canvas } = this.context;\n canvas.removeEventListener('pointermove', this.handlePointerMove);\n canvas.removeEventListener('pointerup', this.handlePointerUp);\n canvas.removeEventListener('pointercancel', this.handlePointerUp);\n }\n this.endLine();\n };\n }\n onCreate() {\n this.setPenColor = this.setPenColor.bind(this);\n this.setPenSize = this.setPenSize.bind(this);\n this.setPenOpacity = this.setPenOpacity.bind(this);\n this.add = this.add.bind(this);\n this.undo = this.undo.bind(this);\n this.save = this.save.bind(this);\n const annotationOptions = this.options.annotation;\n this.context = this.createCanvas();\n this.penColors = annotationOptions.colors.foregroundColors;\n this.penWidths = annotationOptions.strokeWidths;\n this.inkWidth = annotationOptions.inkWidth;\n this.setPenColor(annotationOptions.colors.inkColor);\n this.setPenOpacity(annotationOptions.colors.inkOpacity);\n this.store.viewer.beginModule(moduleLayerName);\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n this.toolbar = createAddInkAnnotationToolbar({\n penColors: this.penColors,\n penWidths: this.penWidths,\n selectedPenColor: annotationOptions.colors.inkColor,\n selectedPenSize: annotationOptions.inkWidth,\n penOpacity: annotationOptions.colors.inkOpacity,\n onPenColorChanged: this.setPenColor,\n onPenSizeChanged: this.setPenSize,\n onPenOpacityChanged: this.setPenOpacity,\n onSave: this.save,\n onUndo: this.undo,\n onAdd: this.add,\n onCancel: this.remove,\n }, toolbarElement);\n }\n onSave() {\n const promise = new Promise((resolve, reject) => {\n this.createInkAnnotation()\n .then(() => {\n this.remove();\n resolve();\n })\n .catch(() => {\n reject();\n });\n });\n return promise;\n }\n onRemove() {\n if (this.lines && this.lines.length > 0) {\n this.createInkAnnotation().then(() => {\n this.onRemove();\n });\n }\n else {\n this.removeCanvasElements();\n this.context = null;\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n toolbarElement.innerHTML = '';\n this.store.viewer.endModule(moduleLayerName);\n }\n }\n render(timestamp, state) {\n if (this.drawing) {\n return;\n }\n if (state.viewer.modeChanged && state.viewer.selectedModuleName !== moduleLayerName) {\n this.remove();\n return;\n }\n if (this.zoom === null || state.document.zoomChanged) {\n this.zoom = state.document.zoom;\n this.drawLines();\n }\n if (state.scroll.leftPositionChanged || state.scroll.topPositionChanged) {\n this.drawLines();\n }\n const pointerPos = {\n x: state.pointer.x.devicePixels,\n y: state.pointer.y.devicePixels,\n };\n const pdfPoint = this.pdfApi.transformScreenPointToPdfPoint(pointerPos);\n if (state.pointer.stateChanged) {\n if (state.pointer.isDown) {\n const page = pdfPoint.isOnPage ? pdfPoint.pdfPoint.page : null;\n if (this.page === null && page) {\n this.page = page;\n }\n if (typeof this.page === 'number' && this.page === page) {\n const pdfPointRes = this.pdfApi.getClosestPointOnPdfByScreenPoint(pointerPos, this.page);\n if (pdfPointRes) {\n this.startLine(pointerPos, pdfPointRes);\n }\n }\n }\n }\n if (state.pointer.positionChanged) {\n if (pdfPoint.isOnPage && (this.page === null || pdfPoint.pdfPoint.page === this.page)) {\n this.store.viewer.setCursorStyle(CursorStyle.CROSSHAIR);\n }\n else {\n this.store.viewer.setCursorStyle(CursorStyle.NOT_ALLOWED);\n }\n }\n }\n startLine(point, pdfPoint) {\n var _a;\n this.lines.push([pdfPoint]);\n this.pdfViewerCanvas.suspendCanvasEvents();\n this.drawing = true;\n if (this.context) {\n const { canvas } = this.context;\n canvas.addEventListener('pointermove', this.handlePointerMove);\n canvas.addEventListener('pointerup', this.handlePointerUp);\n canvas.addEventListener('pointercancel', this.handlePointerUp);\n this.drawLines();\n const ctx = this.context;\n ctx.save();\n ctx.strokeStyle = this.penColor;\n ctx.lineWidth = this.inkWidth * devicePixelRatio * ((_a = this.zoom) !== null && _a !== void 0 ? _a : 1);\n ctx.lineCap = 'round';\n ctx.lineJoin = 'round';\n ctx.moveTo(point.x, point.y);\n }\n }\n endLine() {\n var _a, _b;\n this.drawing = false;\n this.pdfViewerCanvas.resumeCanvasEvents();\n (_a = this.context) === null || _a === void 0 ? void 0 : _a.restore();\n this.drawBoundingBox();\n (_b = this.toolbar) === null || _b === void 0 ? void 0 : _b.setLineCount(this.lines.length);\n }\n drawLines() {\n if (this.context) {\n const ctx = this.context;\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n const annotationOptions = this.options.annotation;\n ctx.save();\n ctx.strokeStyle = this.penColor;\n ctx.lineWidth = this.inkWidth * devicePixelRatio * this.zoom;\n ctx.lineCap = 'round';\n ctx.lineJoin = 'round';\n this.lines.forEach((pointList) => {\n ctx.beginPath();\n const p1 = this.pdfApi.transformPdfPointToScreenPoint(pointList[0]);\n ctx.moveTo(p1.x, p1.y);\n for (let i = 0; i < pointList.length; i++) {\n const p = this.pdfApi.transformPdfPointToScreenPoint(pointList[i]);\n ctx.lineTo(p.x, p.y);\n }\n ctx.stroke();\n });\n ctx.restore();\n }\n }\n drawBoundingBox() {\n if (this.context && this.lines && this.lines.length > 0) {\n const pdfRect = {\n pdfX: 0,\n pdfY: 0,\n pdfW: 0,\n pdfH: 0,\n page: this.page ? this.page : 0,\n };\n let x1 = 1000000000;\n let x2 = 0;\n let y1 = 1000000000;\n let y2 = 0;\n this.lines.forEach((pointList) => {\n const line = [];\n for (let i = 0; i < pointList.length; i++) {\n const p = pointList[i];\n if (p.pdfX < x1) {\n x1 = p.pdfX;\n }\n if (p.pdfX > x2) {\n x2 = p.pdfX;\n }\n if (p.pdfY < y1) {\n y1 = p.pdfY;\n }\n if (p.pdfY > y2) {\n y2 = p.pdfY;\n }\n }\n });\n pdfRect.pdfX = x1;\n pdfRect.pdfY = y1;\n pdfRect.pdfW = x2 - x1;\n pdfRect.pdfH = y2 - y1;\n const rect = this.pdfApi.transformPdfPageRectToScreenRect(pdfRect);\n const ctx = this.context;\n ctx.save();\n ctx.strokeStyle = this.options.viewer.general.textSelectionColor;\n ctx.lineWidth = 1 * devicePixelRatio;\n ctx.setLineDash([2 * devicePixelRatio, 3 * devicePixelRatio]);\n const p = this.inkWidth * devicePixelRatio;\n const p2 = p * 2;\n ctx.strokeRect(rect.x - p, rect.y - p, rect.w + p2, rect.h + p2);\n ctx.restore();\n }\n }\n setPenColor(color) {\n this.options.annotation.colors.inkColor = color;\n this.penColor = color;\n this.drawLines();\n this.drawBoundingBox();\n }\n setPenOpacity(opacity) {\n this.options.annotation.colors.inkOpacity = opacity;\n this.penOpacity = opacity;\n if (this.context) {\n this.context.canvas.style.opacity = `${opacity / 100}`;\n }\n this.drawLines();\n this.drawBoundingBox();\n }\n setPenSize(size) {\n this.inkWidth = size;\n this.options.annotation.inkWidth = size;\n this.drawLines();\n this.drawBoundingBox();\n }\n save() {\n this.createInkAnnotation();\n this.remove();\n }\n add() {\n this.createInkAnnotation();\n this.drawLines();\n }\n undo() {\n if (this.lines && this.lines.length > 0) {\n this.lines.pop();\n if (this.lines.length === 0) {\n this.page = null;\n this.boundingBox = null;\n }\n else {\n this.boundingBox = this.getBoundingBox();\n }\n if (this.toolbar) {\n this.toolbar.setLineCount(this.lines.length);\n }\n this.store.canvas.setCanvasInvalidated(true);\n this.drawLines();\n this.drawBoundingBox();\n }\n }\n createInkAnnotation() {\n const promise = new Promise((resolve, reject) => {\n if (this.pdfApi) {\n if (this.page && this.lines && this.lines.length > 0) {\n const inkList = [];\n let x1 = 1000000000;\n let x2 = 0;\n let y1 = 1000000000;\n let y2 = 0;\n this.lines.forEach((pointList) => {\n const line = [];\n for (let i = 0; i < pointList.length; i++) {\n const p = pointList[i];\n if (p.pdfX < x1) {\n x1 = p.pdfX;\n }\n if (p.pdfX > x2) {\n x2 = p.pdfX;\n }\n if (p.pdfY < y1) {\n y1 = p.pdfY;\n }\n if (p.pdfY > y2) {\n y2 = p.pdfY;\n }\n line.push(p.pdfX);\n line.push(p.pdfY);\n }\n inkList.push(line);\n });\n const rgbaColor = new Color(this.options.annotation.colors.inkColor);\n rgbaColor.setOpacity(this.options.annotation.colors.inkOpacity / 100);\n const inkAnnotation = {\n itemType: PdfItemType.INK,\n page: this.page,\n pdfRect: {\n pdfX: x1,\n pdfY: y1,\n pdfW: x2 - x1,\n pdfH: y2 - y1,\n page: this.page,\n },\n color: rgbaColor.toRgba(),\n author: this.options.viewer.general.user,\n border: {\n style: AnnotationBorderStyle.SOLID,\n width: this.options.annotation.inkWidth,\n },\n inkList,\n };\n this.lines = [];\n this.page = null;\n this.boundingBox = null;\n if (this.toolbar) {\n this.toolbar.setLineCount(0);\n }\n this.pdfApi\n .createItem(inkAnnotation)\n .then((item) => {\n this.onAnnotationCreated(item);\n resolve();\n })\n .catch((error) => {\n console.warn(error);\n });\n }\n else {\n resolve();\n }\n }\n else {\n reject();\n }\n });\n return promise;\n }\n getBoundingBox() {\n const pdfRect = {\n pdfX: 0,\n pdfY: 0,\n pdfW: 0,\n pdfH: 0,\n page: this.page ? this.page : 0,\n };\n if (this.lines && this.lines.length > 0) {\n let x1 = 1000000000;\n let x2 = 0;\n let y1 = 1000000000;\n let y2 = 0;\n this.lines.forEach((pointList) => {\n const line = [];\n for (let i = 0; i < pointList.length; i++) {\n const p = pointList[i];\n if (p.pdfX < x1) {\n x1 = p.pdfX;\n }\n if (p.pdfX > x2) {\n x2 = p.pdfX;\n }\n if (p.pdfY < y1) {\n y1 = p.pdfY;\n }\n if (p.pdfY > y2) {\n y2 = p.pdfY;\n }\n }\n });\n pdfRect.pdfX = x1;\n pdfRect.pdfY = y1;\n pdfRect.pdfW = x2 - x1;\n pdfRect.pdfH = y2 - y1;\n }\n return pdfRect;\n }\n}\n","import { app, h } from '../../lib/hyperapp';\nimport { translationManager } from '../../common/TranslationManager';\nimport { Toolbar } from '../../common/Toolbar';\nimport { ToolbarItemGroup } from '../../common/ToolbarItemGroup';\nimport { ToolbarButton } from '../../common/ToolbarButton';\nimport { icons } from '../../common/icons';\nimport { ToolbarSeparator } from '../../common/ToolbarSeparator';\nimport { StrokeWidthPicker } from '../../common/StrokeWidthPicker';\nimport { RangeSlider } from '../../common/RangeSlider';\nimport { ColorPicker } from '../../common/ColorPicker';\nexport const createAddInkAnnotationToolbar = (props, element) => {\n const state = {\n penColors: props.penColors,\n penWidths: props.penWidths,\n selectedPenColor: props.selectedPenColor,\n selectedPenSize: props.selectedPenSize,\n penOpacity: props.penOpacity,\n lineCount: 0,\n };\n const actions = {\n setPenColor: (color) => ($state) => {\n props.onPenColorChanged(color);\n return Object.assign(Object.assign({}, $state), { selectedPenColor: color });\n },\n setPenSize: (width) => ($state) => {\n props.onPenSizeChanged(width);\n return Object.assign(Object.assign({}, $state), { selectedPenSize: width });\n },\n setPenOpacity: (opacity) => ($state) => {\n props.onPenOpacityChanged(opacity);\n return Object.assign(Object.assign({}, $state), { penOpacity: opacity });\n },\n setLineCount: (lineCount) => ($state) => (Object.assign(Object.assign({}, $state), { lineCount })),\n };\n const App = () => h(AddInkAnnotationToolbar, null);\n const AddInkAnnotationToolbar = ({}) => ($state, $actions) => {\n const strokeWidths = $state.penWidths.filter((w) => w > 0);\n return (h(Toolbar, { allowWrap: true, alignCenter: true },\n h(ToolbarItemGroup, null,\n h(ColorPicker, { colors: $state.penColors, color: $state.selectedPenColor, icon: icons.fillColor, allowRgba: false, mode: \"buttons\", onChange: $actions.setPenColor })),\n h(ToolbarItemGroup, null,\n h(RangeSlider, { tooltip: translationManager.getText('annotFreeDrawing.opacity'), min: 10, max: 100, step: 1, value: $state.penOpacity, text: `${$state.penOpacity}%`, icon: icons.drop, onChange: $actions.setPenOpacity, className: \"pwv-opacityslider\" }),\n h(StrokeWidthPicker, { tooltip: translationManager.getText('annotFreeDrawing.strokeWidth'), noneStrokeText: '', strokeWidths: strokeWidths, value: $state.selectedPenSize, onChange: $actions.setPenSize })),\n h(ToolbarItemGroup, null,\n h(ToolbarSeparator, null),\n h(ToolbarButton, { tooltip: translationManager.getText('annotFreeDrawing.undo'), icon: icons.eraser, onClick: props.onUndo, disabled: $state.lineCount < 1 }),\n h(ToolbarButton, { tooltip: translationManager.getText('annotFreeDrawing.addNew'), icon: icons.addLayer, onClick: props.onAdd, disabled: $state.lineCount < 1 })),\n h(ToolbarItemGroup, { pushRight: true },\n h(ToolbarSeparator, null),\n $state.lineCount < 1 ? (h(ToolbarButton, { icon: icons.close, onClick: props.onCancel })) : (h(ToolbarButton, { icon: icons.ok, onClick: props.onSave })))));\n };\n return app(state, actions, App, element);\n};\n","import { CanvasLayer } from '../CanvasLayer';\nimport { AnnotationBorderStyle } from '../../pdf-viewer-api';\nimport { createEditInkAnnotationToolbar, } from './EditInkAnnotationToolbar';\nimport { Color } from '../../common/Color';\nconst moduleLayerName = 'EditInkAnnotation';\nexport class EditInkAnnotationLayer extends CanvasLayer {\n constructor() {\n super(...arguments);\n this.inkAnnotation = null;\n this.context = null;\n this.penColors = [];\n this.penWidths = [];\n this.toolbar = null;\n this.updatePending = false;\n this.unsavedChanges = false;\n }\n onCreate(annotationId) {\n var _a;\n this.inkAnnotation = this.pdfApi.getItem(annotationId);\n this.setPenColor = this.setPenColor.bind(this);\n this.setPenSize = this.setPenSize.bind(this);\n this.setPenOpacity = this.setPenOpacity.bind(this);\n this.close = this.close.bind(this);\n const annotationOptions = this.options.annotation;\n this.penColors = annotationOptions.colors.foregroundColors;\n this.penWidths = annotationOptions.strokeWidths;\n this.context = this.createCanvas();\n const color = new Color(this.inkAnnotation.color || annotationOptions.colors.inkColor);\n const penSize = ((_a = this.inkAnnotation) === null || _a === void 0 ? void 0 : _a.border.width) || annotationOptions.inkWidth;\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n this.toolbar = createEditInkAnnotationToolbar({\n penColors: this.penColors,\n penWidths: this.penWidths,\n selectedPenColor: color.toHexRgb(),\n selectedPenSize: penSize,\n penOpacity: color.a * 100,\n onPenColorChanged: this.setPenColor,\n onPenSizeChanged: this.setPenSize,\n onPenOpacityChanged: this.setPenOpacity,\n onCancel: this.remove,\n }, toolbarElement);\n this.store.viewer.beginModule(moduleLayerName);\n }\n onSave() {\n return new Promise((resolve) => resolve);\n }\n onRemove() {\n this.removeCanvasElements();\n this.context = null;\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n toolbarElement.innerHTML = '';\n this.store.viewer.endModule(moduleLayerName);\n }\n render(timestamp, state) {\n var _a;\n if (state.viewer.modeChanged && state.viewer.selectedModuleName !== moduleLayerName) {\n this.remove();\n return;\n }\n if (state.pointer.action === 'click' || state.pointer.action === 'dblclick') {\n const inkAnnotation = (_a = this.pdfApi\n .getAnnotationsOnPoint({\n x: state.pointer.x.devicePixels,\n y: state.pointer.y.devicePixels,\n })) === null || _a === void 0 ? void 0 : _a.find((a) => this.inkAnnotation && a.id === this.inkAnnotation.id);\n if (!inkAnnotation) {\n this.close();\n return;\n }\n }\n if (this.context && this.inkAnnotation) {\n const ctx = this.context;\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n const rect = this.pdfApi.transformPdfPageRectToScreenRect(this.inkAnnotation.pdfRect);\n const lineWidth = 2 * devicePixelRatio;\n ctx.save();\n ctx.strokeStyle = this.options.viewer.general.textSelectionColor;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash([lineWidth, lineWidth]);\n ctx.strokeRect(rect.x - lineWidth, rect.y - lineWidth, rect.w + 2 * lineWidth, rect.h + 2 * lineWidth);\n ctx.restore();\n }\n }\n close() {\n this.remove();\n }\n setPenColor(color) {\n if (this.inkAnnotation && this.inkAnnotation.color) {\n const newColor = new Color(color);\n const currentColor = new Color(this.inkAnnotation.color);\n newColor.setOpacity(currentColor.a);\n this.inkAnnotation.color = newColor.toHexRgba();\n this.updateInkAnnotation();\n }\n }\n setPenSize(size) {\n if (this.inkAnnotation) {\n this.inkAnnotation.border = {\n style: AnnotationBorderStyle.SOLID,\n width: size,\n };\n this.updateInkAnnotation();\n }\n }\n setPenOpacity(opacity) {\n if (this.inkAnnotation && this.inkAnnotation.color) {\n const rgbaColor = new Color(this.inkAnnotation.color);\n rgbaColor.setOpacity(opacity / 100);\n this.inkAnnotation.color = rgbaColor.toHexRgba();\n this.updateInkAnnotation();\n }\n }\n updateInkAnnotation() {\n if (this.pdfApi && this.inkAnnotation) {\n if (this.updatePending) {\n this.unsavedChanges = true;\n }\n else {\n this.updatePending = true;\n this.pdfApi\n .updateItem(this.inkAnnotation)\n .then((item) => {\n this.updatePending = false;\n if (this.unsavedChanges) {\n this.unsavedChanges = false;\n this.updateInkAnnotation();\n }\n })\n .catch((error) => {\n console.warn(error);\n });\n }\n }\n }\n}\n","import { app, h } from '../../lib/hyperapp';\nimport { translationManager } from '../../common/TranslationManager';\nimport { Toolbar } from '../../common/Toolbar';\nimport { ToolbarItemGroup } from '../../common/ToolbarItemGroup';\nimport { ToolbarButton } from '../../common/ToolbarButton';\nimport { icons } from '../../common/icons';\nimport { ToolbarSeparator } from '../../common/ToolbarSeparator';\nimport { StrokeWidthPicker } from '../../common/StrokeWidthPicker';\nimport { RangeSlider } from '../../common/RangeSlider';\nimport { ColorPicker } from '../../common/ColorPicker';\nexport const createEditInkAnnotationToolbar = (props, element) => {\n const state = {\n penColors: props.penColors,\n penWidths: props.penWidths,\n selectedPenColor: props.selectedPenColor,\n selectedPenSize: props.selectedPenSize,\n penOpacity: props.penOpacity,\n };\n const actions = {\n setPenColor: (color) => ($state) => {\n props.onPenColorChanged(color);\n return Object.assign(Object.assign({}, $state), { selectedPenColor: color });\n },\n setPenSize: (width) => ($state) => {\n props.onPenSizeChanged(width);\n return Object.assign(Object.assign({}, $state), { selectedPenSize: width });\n },\n setPenOpacity: (opacity) => ($state) => {\n props.onPenOpacityChanged(opacity);\n return Object.assign(Object.assign({}, $state), { penOpacity: opacity });\n },\n };\n const App = () => h(EditInkAnnotationToolbar, null);\n const EditInkAnnotationToolbar = ({}) => ($state, $actions) => {\n const strokeWidths = $state.penWidths.filter((w) => w > 0);\n return (h(Toolbar, { allowWrap: true, alignCenter: true },\n h(ToolbarItemGroup, null,\n h(ColorPicker, { colors: $state.penColors, color: $state.selectedPenColor, icon: icons.fillColor, allowRgba: false, mode: \"buttons\", onChange: $actions.setPenColor })),\n h(ToolbarItemGroup, null,\n h(RangeSlider, { tooltip: translationManager.getText('annotFreeDrawing.opacity'), min: 10, max: 100, step: 1, value: $state.penOpacity, text: `${Math.round($state.penOpacity)}%`, icon: icons.drop, onChange: $actions.setPenOpacity, className: \"pwv-opacityslider\" }),\n h(StrokeWidthPicker, { tooltip: translationManager.getText('annotFreeDrawing.strokeWidth'), noneStrokeText: '', strokeWidths: strokeWidths, value: $state.selectedPenSize, onChange: $actions.setPenSize })),\n h(ToolbarItemGroup, { pushRight: true },\n h(ToolbarSeparator, null),\n h(ToolbarButton, { icon: icons.close, onClick: props.onCancel }))));\n };\n return app(state, actions, App, element);\n};\n","import { CanvasModule, CanvasModuleType } from '../CanvasModule';\nimport { AddInkAnnotationLayer } from './AddInkAnnotationLayer';\nimport { EditInkAnnotationLayer } from './EditInkAnnotationLayer';\nimport { PdfItemType } from '../../pdf-viewer-api';\nimport { icons } from '../../common/Icon';\nimport { translationManager } from '../../common/TranslationManager';\nexport class InkAnnotationModule extends CanvasModule {\n constructor() {\n super();\n this.toolbarElement = null;\n this.name = InkAnnotationModule.moduleInfo.name;\n this.activate = this.activate.bind(this);\n this.onEdit = this.onEdit.bind(this);\n }\n onRegister() {\n this.toolbarElement = document.createElement('div');\n return {\n toolbar: this.toolbarElement,\n contextbar: {\n itemTypes: [PdfItemType.INK],\n icon: icons.edit,\n tooltip: translationManager.getText('annotInk.edit'),\n onCmd: (annotationId) => {\n this.onEdit(annotationId);\n },\n },\n };\n }\n activate() {\n if (!this.canvasLayers['add']) {\n this.createCanvasLayer('add', AddInkAnnotationLayer);\n }\n else {\n this.removeCanvasLayer('add');\n }\n }\n onEdit(annotationId) {\n this.createCanvasLayer('edit', EditInkAnnotationLayer, annotationId);\n }\n}\nInkAnnotationModule.moduleInfo = {\n name: 'InkAnnotationModule',\n moduleType: CanvasModuleType.Tool,\n requiredFeatures: {\n annotate: true,\n fillFormFields: false,\n },\n translationKey: 'annotFreeDrawing.add',\n icon: 'pencil',\n};\n","import { h, app } from '../../lib/hyperapp';\nimport { translationManager } from '../../common/TranslationManager';\nimport { Toolbar } from '../../common/Toolbar';\nimport { ToolbarItemGroup } from '../../common/ToolbarItemGroup';\nimport { ToolbarButton } from '../../common/ToolbarButton';\nimport { icons } from '../../common/Icon';\nimport { ColorPicker } from '../../common/ColorPicker';\nimport { classNames } from '../../common/classNames';\nimport { DragMoveHandler } from '../../common/DragMoveHandler';\nimport { PdfItemType } from '../../pdf-viewer-api';\nimport { Color } from '../../common/Color';\nexport const createPopupView = (props, element) => {\n const state = {\n selectedPopup: null,\n openPopups: [],\n maxPopupWidth: props.maxPopupWidth,\n maxPopupHeight: props.maxPopupHeight,\n minPopupWidth: 260,\n minPopupHeight: 200,\n currentUser: props.currentUser,\n hideSubject: props.hideSubject,\n activeContent: null,\n activeSubject: null,\n stateChanged: false,\n clearFocus: false,\n };\n const actions = {\n getState: () => ($state) => $state,\n updateOpenPopups: (openPopups) => ($state) => {\n openPopups.forEach((popup) => {\n const oldPopup = $state.openPopups.find((op) => op.id === popup.id);\n if (oldPopup) {\n popup.selected = oldPopup.selected;\n popup.positionCalculated = oldPopup.positionCalculated;\n }\n });\n return Object.assign(Object.assign({}, $state), { openPopups });\n },\n stateChanged: (hasChanged) => ($state) => {\n return Object.assign(Object.assign({}, $state), { stateChanged: hasChanged });\n },\n setPositionCalculated: (id) => ($state) => {\n const popup = $state.openPopups.find((p) => p.id === id);\n if (popup) {\n popup.positionCalculated = true;\n }\n return Object.assign({}, $state);\n },\n selectPopup: (id) => ($state) => {\n const openPopups = $state.openPopups.map((p) => (Object.assign(Object.assign({}, p), { selected: p.id === id })));\n return Object.assign(Object.assign({}, $state), { openPopups, activeContent: id === $state.selectedPopup ? $state.activeContent : null, activeSubject: id === $state.selectedPopup ? $state.activeSubject : null, selectedPopup: id });\n },\n updateSubjectAndContent: (id) => ($state) => {\n const subject = document.getElementById('pwv-popup-subject-' + id)\n .value;\n const content = document.getElementById('pwv-popup-content-' + id)\n .value;\n return Object.assign(Object.assign({}, $state), { activeContent: content, activeSubject: subject });\n },\n setFocus: (id) => ($state) => {\n const textArea = document.getElementById('pwv-popup-content-' + id);\n if (textArea) {\n textArea.focus();\n }\n return Object.assign(Object.assign({}, $state), { clearFocus: document.activeElement === textArea });\n },\n deselectPopup: () => ($state) => {\n return Object.assign(Object.assign({}, $state), { selectedPopup: null });\n },\n };\n const App = () => h(OpenPopups, null);\n const OpenPopups = ({}) => ($state, $actions) => {\n return (h(\"div\", null, $state.openPopups.map((popup) => (h(Popup, { popup: Object.assign(Object.assign({}, popup), { selected: popup.id === $state.selectedPopup }), colorPalette: popup.colorPalette, hideSubject: props.hideSubject, allowLockAnnotations: props.allowLockAnnotations, allowEditLockedAnnotations: props.allowEditLockedAnnotations, close: props.onClose, remove: props.onDelete, select: props.onSelect, toggleLock: props.onLock, updatePosition: (payload) => {\n props.onUpdatePosition(payload.id, payload.x, payload.y);\n }, updateSize: (payload) => {\n props.onUpdateSize(payload.id, payload.w, payload.h);\n }, updateColor: (payload) => {\n props.onUpdateColor(payload.id, payload.color);\n } })))));\n };\n return app(state, actions, App, element);\n};\n/* tslint:disable-next-line:max-line-length */\nconst Popup = ({ popup, colorPalette, hideSubject, allowLockAnnotations, allowEditLockedAnnotations, updateColor, close, select, remove, toggleLock, updatePosition, updateSize, }) => ($state, $actions) => {\n const styles = {\n backgroundColor: popup.color,\n width: popup.cssWidth < $state.minPopupWidth ? $state.minPopupWidth + 'px' : popup.cssWidth + 'px',\n height: popup.cssHeight < $state.minPopupHeight\n ? $state.minPopupHeight + 'px'\n : popup.cssHeight + 'px',\n };\n let colorString;\n if (popup.color != null) {\n const color = new Color(popup.color);\n styles.backgroundColor = color.toRgb();\n // color.a\n if (color.isDark()) {\n colorString = 'rgba(255, 255, 255, 0.9)';\n }\n else {\n colorString = 'rgba(0, 0, 0, 0.9)';\n }\n }\n const headerStyles = {\n color: colorString,\n };\n if (!popup.positionCalculated) {\n styles.display = 'none';\n }\n const isReadOnly = popup.isReadOnly();\n return (h(\"div\", { class: classNames('pwv-popup', {\n 'pwv-popup-view-only': isReadOnly,\n 'pwv-popup-selected': popup.selected,\n }), key: popup.id, style: styles, \"data-id\": popup.id },\n h(\"div\", { onclick: (e) => {\n if (!e.openDropdown) {\n window.dispatchEvent(new Event('click', e));\n }\n if (!popup.selected) {\n select(popup.id);\n }\n }, onchange: (e) => {\n $actions.stateChanged(true);\n } },\n h(\"div\", { class: \"pwv-popup-header\" },\n h(\"div\", { class: \"pwv-popup-header-info\", style: headerStyles },\n h(\"div\", { class: \"pwv-popup-header-author\" }, popup.author),\n h(\"div\", { class: \"pwv-popup-header-modified\" }, popup.modificationDate)),\n isReadOnly ? (h(Toolbar, null,\n h(ToolbarItemGroup, { pushRight: true },\n h(ToolbarButton, { onClick: (e) => {\n e.stopPropagation();\n if (!popup.selected) {\n select(popup.id);\n }\n close();\n }, icon: icons.close })))) : (h(Toolbar, null,\n h(ToolbarItemGroup, null,\n h(ToolbarButton, { tooltip: translationManager.getText('annotPopup.delete'), icon: icons.delete, onClick: () => {\n remove(popup.id);\n }, disabled: popup.isLocked && !allowEditLockedAnnotations }),\n allowLockAnnotations && (h(ToolbarButton, { tooltip: translationManager.getText(popup.isLocked ? 'annotPopup.unlock' : 'annotPopup.lock'), onClick: (e) => {\n e.stopPropagation();\n if (!popup.selected) {\n select(popup.id);\n }\n toggleLock(popup.id);\n }, icon: popup.isLocked ? icons.lock : icons.unlock })),\n popup.itemType !== PdfItemType.STAMP && (h(ColorPicker, { tooltip: translationManager.getText('annotPopup.color'), colors: colorPalette, icon: icons.fillColor, color: popup.color || 'transparent', onChange: (color) => {\n updateColor({\n id: popup.id,\n color,\n });\n }, disabled: popup.isLocked && !allowEditLockedAnnotations }))),\n h(ToolbarItemGroup, { pushRight: true },\n h(ToolbarButton, { onClick: (e) => {\n e.stopPropagation();\n if (!popup.selected) {\n select(popup.id);\n }\n if (!popup.isLocked || allowEditLockedAnnotations) {\n $actions.updateSubjectAndContent(popup.id);\n }\n close();\n }, icon: icons.close }))))),\n isReadOnly ? (h(\"div\", { class: \"pwv-popup-view-only-content\" },\n !hideSubject && popup.subject && h(\"h4\", null, popup.subject),\n h(\"div\", null, popup.content))) : (h(\"div\", null,\n hideSubject ? (h(\"input\", { id: 'pwv-popup-subject-' + popup.id, type: \"hidden\", value: $state.selectedPopup === popup.id\n ? $state.activeSubject\n ? $state.activeSubject\n : popup.subject\n : popup.subject })) : (h(\"div\", { class: \"pwv-popup-subject\" }, !popup.isLocked || allowEditLockedAnnotations ? (h(\"input\", { id: 'pwv-popup-subject-' + popup.id, placeholder: translationManager.getText('annotPopup.subjectPlaceholder'), onchange: () => {\n $actions.updateSubjectAndContent(popup.id);\n }, value: $state.selectedPopup === popup.id\n ? $state.activeSubject\n ? $state.activeSubject\n : popup.subject\n : popup.subject })) : (h(\"div\", { id: 'pwv-popup-subject-' + popup.id }, popup.subject)))),\n h(\"div\", { class: classNames('pwv-popup-content', {\n 'pwv-popup-content-no-subject': hideSubject,\n }) }, !popup.isLocked || allowEditLockedAnnotations ? (h(\"textarea\", { placeholder: translationManager.getText('annotPopup.contentPlaceholder'), id: 'pwv-popup-content-' + popup.id, onchange: () => {\n $actions.updateSubjectAndContent(popup.id);\n }, oninput: () => {\n $actions.updateSubjectAndContent(popup.id);\n } }, $state.selectedPopup === popup.id\n ? $state.activeContent\n ? $state.activeContent\n : popup.content\n : popup.content)) : (h(\"div\", { id: 'pwv-popup-content-' + popup.id }, popup.content)))))),\n h(\"div\", null,\n h(\"div\", { class: \"pwv-popup-draghandle\" }),\n h(\"div\", { class: \"pwv-popup-resizer\", \n /* tslint:disable-next-line:max-line-length */\n oncreate: (element) => {\n PopupComponent.create(popup.id, element, $state.minPopupWidth, $state.minPopupHeight, $state.maxPopupWidth, $state.maxPopupHeight, updatePosition, updateSize, select);\n }, onremove: (element, done) => {\n PopupComponent.remove(element);\n done();\n } }))));\n};\nclass PopupComponent {\n static create(id, resizeHandle, minPopupWidth, minPopupHeight, maxPopupWidth, maxPopupHeight, updatePosition, updateSize, select) {\n /* tslint:disable-next-line:max-line-length */\n ;\n resizeHandle.parentElement.popup = new PopupComponent(id, resizeHandle, minPopupWidth, minPopupHeight, maxPopupWidth, maxPopupHeight, updatePosition, updateSize, select);\n }\n static remove(resizeHandle) {\n ;\n resizeHandle.parentElement.popup.unmount()(resizeHandle.parentElement).popup =\n null;\n }\n constructor(id, resizeHandle, minPopupWidth, minPopupHeight, maxPopupWidth, maxPopupHeight, updatePosition, updateSize, select) {\n this.cancelContentEvents = true;\n this.dragOffsetX = 0;\n this.dragOffsetY = 0;\n this.containerOffsetX = 0;\n this.containerOffsetY = 0;\n this.id = id;\n this.resizeHandle = resizeHandle;\n const parent = resizeHandle.parentElement;\n this.dragHandle = parent.children.item(0);\n this.element = parent.parentElement;\n this.minPopupWidth = 260;\n this.minPopupHeight = 200;\n this.maxPopupWidth = maxPopupWidth > this.minPopupWidth ? maxPopupWidth : this.minPopupWidth;\n this.maxPopupHeight =\n maxPopupHeight > this.minPopupHeight ? maxPopupHeight : this.minPopupHeight;\n this.updatePosition = updatePosition;\n this.updateSize = updateSize;\n this.select = select;\n this.cancelEvent = this.cancelEvent.bind(this);\n this.startMove = this.startMove.bind(this);\n this.moving = this.moving.bind(this);\n this.endMove = this.endMove.bind(this);\n this.onSelect = this.onSelect.bind(this);\n this.startResize = this.startResize.bind(this);\n this.resizing = this.resizing.bind(this);\n this.endResize = this.endResize.bind(this);\n this.handleMouseWheel = this.handleMouseWheel.bind(this);\n new DragMoveHandler(this.dragHandle, this.startMove, this.moving, this.endMove, this.onSelect);\n new DragMoveHandler(this.resizeHandle, this.startResize, this.resizing, this.endResize);\n this.element.addEventListener('mousewheel', this.handleMouseWheel, { passive: true });\n const contentElement = this.element.firstChild;\n contentElement.addEventListener('onclick', this.cancelEvent, false);\n contentElement.addEventListener('keydown', this.cancelEvent, false);\n contentElement.addEventListener('mousedown', this.cancelEvent, false);\n contentElement.addEventListener('mousemove', this.cancelEvent, false);\n contentElement.addEventListener('mouseup', this.cancelEvent, false);\n contentElement.addEventListener('touchstart', this.cancelEvent, { passive: true });\n contentElement.addEventListener('touchmove', this.cancelEvent, { passive: true });\n contentElement.addEventListener('touchend', this.cancelEvent, { passive: true });\n }\n unmount() {\n this.element.removeEventListener('mousewheel', this.handleMouseWheel);\n }\n cancelEvent(e) {\n if (this.cancelContentEvents) {\n if (!(e.type === 'mousemove' && e.buttons === 0)) {\n e.cancelBubble = true;\n e.stopPropagation();\n }\n }\n }\n onSelect() {\n this.select(this.id);\n }\n startResize(e) {\n this.cancelContentEvents = false;\n this.element.classList.add('pwv-popup-resizing');\n this.onSelect();\n }\n resizing(e) {\n const rect = this.element.getBoundingClientRect();\n let width = e.clientX - rect.left;\n let height = e.clientY - rect.top;\n width =\n width < this.minPopupWidth\n ? this.minPopupWidth\n : width > this.maxPopupWidth\n ? this.maxPopupWidth\n : width;\n height =\n height < this.minPopupHeight\n ? this.minPopupHeight\n : height > this.maxPopupHeight\n ? this.maxPopupHeight\n : height;\n this.element.style.width = width + 'px';\n this.element.style.height = height + 'px';\n const popupRect = {\n x: parseInt(this.element.style.left, undefined),\n y: parseInt(this.element.style.top, undefined),\n w: width,\n h: height,\n };\n const evtDetail = {\n annotationId: this.id,\n popupRect,\n color: this.element.style.backgroundColor,\n };\n window.dispatchEvent(new CustomEvent('pdfwebviewer.PopupMoved', { detail: evtDetail }));\n }\n endResize(e) {\n if (e.moved) {\n this.updateSize({\n id: this.id,\n w: this.element.clientWidth,\n h: this.element.clientHeight,\n });\n }\n this.cancelContentEvents = true;\n this.element.classList.remove('pwv-popup-resizing');\n }\n startMove(e) {\n const elementRect = this.element.getBoundingClientRect();\n const offsetParent = this.element.offsetParent;\n const offsetParentRect = offsetParent.getBoundingClientRect();\n this.dragOffsetX = e.clientX - elementRect.left;\n this.dragOffsetY = e.clientY - elementRect.top;\n this.containerOffsetX = offsetParentRect.left;\n this.containerOffsetY = offsetParentRect.top;\n this.cancelContentEvents = false;\n this.element.classList.add('pwv-popup-moving');\n this.onSelect();\n }\n moving(e) {\n const popupRect = {\n x: e.clientX - this.containerOffsetX - this.dragOffsetX,\n y: e.clientY - this.containerOffsetY - this.dragOffsetY,\n w: parseInt(this.element.style.width, undefined),\n h: parseInt(this.element.style.height, undefined),\n };\n this.element.style.top = popupRect.y + 'px';\n this.element.style.left = popupRect.x + 'px';\n const evtDetail = {\n annotationId: this.id,\n popupRect,\n color: this.element.style.backgroundColor,\n };\n window.dispatchEvent(new CustomEvent('pdfwebviewer.PopupMoved', { detail: evtDetail }));\n }\n endMove(e) {\n if (e.moved) {\n this.updatePosition({\n id: this.id,\n x: this.element.offsetLeft,\n y: this.element.offsetTop,\n });\n }\n this.cancelContentEvents = true;\n this.element.classList.remove('pwv-popup-moving');\n }\n handleMouseWheel(e) {\n if (this.element.classList.contains('pwv-popup-selected')) {\n // e.preventDefault()\n e.stopPropagation();\n }\n }\n}\n","import { CanvasLayer } from '../CanvasLayer';\nimport { createPopupView } from './Popup';\nimport { getPopups, getOpenPopups } from '../../pdf-viewer-canvas/state/annotations';\nimport { PdfItemType, } from '../../pdf-viewer-api';\nimport { renderPopupMarker } from '../../pdf-viewer-canvas/view-layers/canvasShapes';\nimport { ViewerMode, CursorStyle } from '../../pdf-viewer-canvas/state/viewer';\nimport { Color } from '../../common/Color';\nimport { getColorPalette } from '../../common/Tools';\nimport { addHistoryEntry } from '../../custom/history';\nexport class PopupLayer extends CanvasLayer {\n constructor() {\n super(...arguments);\n this.popupView = null;\n this.context = null;\n this.maxPopupWidth = window.screen.availWidth < 570 ? 280 : 480;\n this.maxPopupHeight = 320;\n this.minPopupWidth = 260;\n this.minPopupHeight = 200;\n this.zoom = 0;\n this.screenToPdfScale = 0;\n }\n onCreate() {\n this.drawPopupRelation = this.drawPopupRelation.bind(this);\n this.popupMoved = this.popupMoved.bind(this);\n this.selectPopup = this.selectPopup.bind(this);\n this.deselectPopup = this.deselectPopup.bind(this);\n this.openPopup = this.openPopup.bind(this);\n this.closePopup = this.closePopup.bind(this);\n this.deletePopup = this.deletePopup.bind(this);\n this.toggleAnnotationLock = this.toggleAnnotationLock.bind(this);\n this.updateSelectedPopupContent = this.updateSelectedPopupContent.bind(this);\n this.updatePopupPosition = this.updatePopupPosition.bind(this);\n this.updatePopupSize = this.updatePopupSize.bind(this);\n this.updatePopupColor = this.updatePopupColor.bind(this);\n this.context = this.createCanvas();\n this.createPopupView();\n window.addEventListener('pdfwebviewer.PopupMoved', this.popupMoved, false);\n }\n onRemove() { }\n onSave() {\n const promise = new Promise((resolve, reject) => {\n if (this.popupView) {\n const state = this.popupView.getState();\n if (state.stateChanged) {\n this.updateSelectedPopupContent(true).then(() => {\n resolve();\n });\n }\n else {\n resolve();\n }\n }\n });\n return promise;\n }\n render(timestamp, state) {\n if (this.pdfApi && this.popupView && this.popupViewElement) {\n if (state.document.zoomChanged && state.document.zoom !== this.zoom) {\n this.zoom = state.document.zoom;\n this.screenToPdfScale = this.pdfApi.transformPdfLengthToScreenLength(100) / 100 / this.zoom;\n }\n /* tslint:disable-next-line:max-line-length */\n if (state.annotations.openPopupChanged ||\n state.document.firstVisiblePageChanged ||\n state.document.lastVisiblePageChanged ||\n state.viewer.modeChanged) {\n this.updateOpenPopupList(state);\n }\n if (state.viewer.popupFocus) {\n this.popupView.setFocus(state.viewer.popupFocus);\n }\n if (this.popupView.getState().clearFocus) {\n this.store.viewer.clearPopupFocus();\n }\n if (state.viewer.selectedPopupChanged) {\n const selectedPopup = this.popupView.getState().selectedPopup;\n if (state.viewer.selectedPopupId) {\n if (selectedPopup !== state.viewer.selectedPopupId) {\n this.popupView.selectPopup(state.viewer.selectedPopupId);\n }\n }\n }\n const viewerMode = state.viewer.mode;\n if (viewerMode === ViewerMode.POPUP_SELECTED) {\n this.store.viewer.setCursorStyle(CursorStyle.DEFAULT);\n }\n const { openPopups, selectedPopup } = this.popupView.getState();\n const popupsVisible = viewerMode === ViewerMode.DEFAULT || viewerMode === ViewerMode.POPUP_SELECTED;\n if (state.viewer.modeChanged) {\n if (popupsVisible) {\n this.popupViewElement.style.display = 'block';\n }\n else {\n this.popupViewElement.style.display = 'none';\n const ctx = this.context;\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n if (selectedPopup && state.pointer.action !== 'click') {\n this.updateSelectedPopupContent(true);\n }\n }\n }\n if (viewerMode === ViewerMode.POPUP_SELECTED && state.pointer.action === 'click') {\n this.deselectPopup();\n }\n const updatePopupPosition = state.canvas.canvasInvalidated || openPopups.find((p) => !p.positionCalculated);\n if (openPopups.length > 0 && updatePopupPosition) {\n const popupElements = this.popupViewElement.querySelectorAll('.pwv-popup');\n const canvasWidth = state.canvas.width.cssPixels;\n const canvasHeight = state.canvas.height.cssPixels;\n const zoom = state.document.zoom;\n for (let i = 0; i < popupElements.length; i++) {\n const popupElement = popupElements[i];\n if (!popupElement.classList.contains('pwv-popup-moving')) {\n const id = popupElement.dataset.id;\n const popup = openPopups.find((p) => p.id.toString() === id);\n if (popup) {\n const screenRect = this.pdfApi.transformPdfPageRectToScreenRect(popup.pdfRect);\n let x = screenRect.x / devicePixelRatio;\n let y = screenRect.y / devicePixelRatio;\n const w = parseInt(popupElement.style.width, undefined);\n const h = parseInt(popupElement.style.height, undefined);\n const padding = 8;\n if (x < padding) {\n x = padding;\n }\n else if (x + w + padding * 2 > canvasWidth) {\n x = canvasWidth - (w + padding * 2);\n }\n if (y < padding) {\n y = padding;\n }\n else if (y + h + padding * 2 > canvasHeight) {\n y = canvasHeight - (h + padding * 2);\n }\n popupElement.style.top = `${y}px`;\n popupElement.style.left = `${x}px`;\n if (!popup.positionCalculated) {\n this.popupView.setPositionCalculated(popup.id);\n }\n }\n }\n }\n }\n if ((state.viewer.mode === ViewerMode.POPUP_SELECTED ||\n state.viewer.mode === ViewerMode.DEFAULT) &&\n (state.viewer.selectedPopupChanged ||\n state.canvas.canvasInvalidated ||\n state.pointer.positionChanged ||\n state.annotations.openPopupChanged)) {\n const ctx = this.context;\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n const scale = state.canvas.pixelRatio * state.document.zoom;\n if (viewerMode !== ViewerMode.POPUP_SELECTED) {\n const popups = getPopups(state.annotations, state.document.firstVisiblePage, state.document.lastVisiblePage);\n if (popups === null) {\n return;\n }\n for (let i = 0; i < popups.length; i++) {\n const popup = popups[i];\n if (popup.itemType !== PdfItemType.TEXT) {\n let pos;\n pos = this.pdfApi.transformPdfPageRectToScreenRect(popup.pdfRect);\n ctx.lineWidth = 1;\n ctx.beginPath();\n const r = 12 * scale;\n const posX = pos.x + r / 2;\n const posY = pos.y - r;\n ctx.arc(posX, posY, r, 0, 2 * Math.PI);\n if (ctx.isPointInPath(state.pointer.x.devicePixels, state.pointer.y.devicePixels)) {\n this.store.viewer.setCursorStyle(CursorStyle.POINTER);\n ctx.globalAlpha = 0.15;\n ctx.fillStyle = this.options.viewer.general.textSelectionColor;\n ctx.fill();\n ctx.globalAlpha = 1;\n if (state.pointer.action === 'click') {\n this.openPopup(popup.id);\n }\n }\n renderPopupMarker(ctx, scale, popup.color || this.options.annotation.colors.defaultHighlightColor, { x: posX, y: posY });\n }\n }\n }\n if (openPopups.length > 0) {\n const popupElements = this.popupViewElement.querySelectorAll('.pwv-popup:hover, .pwv-popup.pwv-popup-selected');\n for (let i = 0; i < popupElements.length; i++) {\n const popupElement = popupElements[i];\n const id = popupElement.dataset.id ? parseInt(popupElement.dataset.id, undefined) : -1;\n this.drawPopupRelation(ctx, id, {\n x: popupElement.offsetLeft,\n y: popupElement.offsetTop,\n w: popupElement.offsetWidth,\n h: popupElement.offsetHeight,\n }, popupElement.style.backgroundColor, id === state.viewer.selectedPopupId);\n }\n }\n }\n }\n }\n updateOpenPopupList(state) {\n if (this.popupView) {\n const openPopups = getOpenPopups(state.annotations, state.document.firstVisiblePage, state.document.lastVisiblePage);\n const zoom = state.document.zoom;\n const popups = openPopups.map((an) => {\n const width = this.pdfApi.transformPdfLengthToScreenLength(an.popup.pdfRect.pdfW) / zoom;\n const height = this.pdfApi.transformPdfLengthToScreenLength(an.popup.pdfRect.pdfH) / zoom;\n // Take last modified date, author and color\n // from parent annotation\n return {\n id: an.id,\n colorPalette: getColorPalette(an.itemType, this.options),\n content: an.content,\n subject: an.subject ? an.subject : null,\n modificationDate: an.modificationDate,\n author: an.author,\n color: an.color,\n itemType: an.itemType,\n isLocked: an.isLocked(),\n selected: false,\n positionCalculated: false,\n pdfRect: an.popup.pdfRect,\n cssWidth: width < this.maxPopupWidth ? width : this.maxPopupWidth,\n cssHeight: height < this.maxPopupHeight ? height : this.maxPopupHeight,\n behaviors: an.behaviors,\n isReadOnly: an.isReadOnly,\n };\n });\n this.popupView.updateOpenPopups(popups);\n }\n }\n drawPopupRelation(ctx, annotationId, popupRect, color, selected) {\n const annotation = this.pdfApi.getItem(annotationId);\n if (annotation) {\n const annotationRect = this.pdfApi.transformPdfPageRectToScreenRect(annotation.pdfRect);\n const popupX1 = popupRect.x * devicePixelRatio;\n const popupX2 = popupX1 + popupRect.w * devicePixelRatio;\n const popupXc = popupX1 + (popupRect.w / 2) * devicePixelRatio;\n const popupY1 = popupRect.y * devicePixelRatio;\n const popupY2 = popupY1 + popupRect.h * devicePixelRatio;\n const popupYc = popupY1 + (popupRect.h / 2) * devicePixelRatio;\n const annotationX1 = annotationRect.x;\n const annotationX2 = annotationX1 + annotationRect.w;\n const annotationY1 = annotationRect.y;\n const annotationY2 = annotationY1 + annotationRect.h;\n let popupRelX = popupX1;\n let popupRelY = popupY1;\n let annotationRelX = annotationX1;\n let annotationRelY = annotationY1;\n if (popupX2 <= annotationX1) {\n popupRelX = popupX2;\n annotationRelX = annotationX1;\n }\n if (popupX1 >= annotationX2) {\n popupRelX = popupX1;\n annotationRelX = annotationX2;\n }\n if (popupY2 <= annotationY1) {\n popupRelY = popupY2;\n annotationRelY = annotationY1;\n }\n if (popupY1 >= annotationY2) {\n popupRelY = popupY1;\n annotationRelY = annotationY2;\n }\n if (popupX2 >= annotationX1 && popupX1 <= annotationX2) {\n const x = popupXc < annotationX1 ? annotationX1 : popupXc > annotationX2 ? annotationX2 : popupXc;\n popupRelX = x;\n annotationRelX = x;\n }\n if (popupY2 >= annotationY1 && popupY1 <= annotationY2) {\n const y = popupYc < annotationY1 ? annotationY1 : popupYc > annotationY2 ? annotationY2 : popupYc;\n popupRelY = y;\n annotationRelY = y;\n }\n ctx.save();\n if (!(popupRelX === 0 && popupRelY === 0)) {\n if (color) {\n const rgbColor = new Color(color);\n rgbColor.darken(20);\n if (!selected) {\n rgbColor.setOpacity(0.8);\n }\n ctx.strokeStyle = rgbColor.toRgba();\n ctx.fillStyle = rgbColor.toRgba();\n }\n ctx.lineWidth = 2 * window.devicePixelRatio;\n if (!selected) {\n ctx.setLineDash([ctx.lineWidth]);\n }\n ctx.beginPath();\n ctx.moveTo(annotationRelX, annotationRelY);\n ctx.lineTo(popupRelX, popupRelY);\n ctx.stroke();\n ctx.strokeRect(annotationX1, annotationY1, annotationRect.w, annotationRect.h);\n ctx.restore();\n }\n }\n ctx.restore();\n }\n popupMoved(event) {\n if (this.context !== null && event.detail) {\n this.context.clearRect(0, 0, this.context.canvas.width, this.context.canvas.height);\n this.drawPopupRelation(this.context, event.detail.annotationId, event.detail.popupRect, event.detail.color, true);\n }\n }\n createPopupView() {\n if (this.containerElement) {\n this.popupViewElement = this.createHtmlLayer();\n this.popupView = createPopupView({\n maxPopupWidth: this.maxPopupWidth,\n maxPopupHeight: this.maxPopupHeight,\n minPopupWidth: this.minPopupWidth,\n minPopupHeight: this.minPopupHeight,\n currentUser: this.options.viewer.general.user ? this.options.viewer.general.user : '',\n hideSubject: this.options.annotation.hideAnnotationSubject || false,\n allowLockAnnotations: this.options.viewer.permissions.allowLockAnnotations,\n allowEditLockedAnnotations: this.options.viewer.permissions.allowEditLockedAnnotations,\n onSelect: this.selectPopup,\n onClose: this.closePopup,\n onDelete: this.deletePopup,\n onUpdatePosition: this.updatePopupPosition,\n onUpdateSize: this.updatePopupSize,\n onUpdateColor: this.updatePopupColor,\n onLock: this.toggleAnnotationLock,\n }, this.popupViewElement);\n }\n }\n selectPopup(id) {\n if (this.popupView) {\n if (this.popupView.getState().selectedPopup !== null) {\n this.updateSelectedPopupContent(true);\n }\n this.popupView.selectPopup(id);\n this.store.viewer.selectPopup({ id, focus: false });\n }\n }\n deselectPopup() {\n if (this.popupView) {\n this.updateSelectedPopupContent(true);\n this.popupView.deselectPopup();\n this.store.viewer.selectPopup({ id: null, focus: false });\n }\n }\n openPopup(id) {\n if (this.pdfApi) {\n const annotation = this.pdfApi.getItem(id);\n if (annotation) {\n annotation.popup.isOpen = true;\n this.store.annotations.updateAnnotation(annotation);\n if (this.pdfViewerCanvas.licenseFeatures.annotate) {\n this.pdfApi.updateItem(annotation).then(() => {\n this.selectPopup(annotation.id);\n });\n }\n else {\n this.selectPopup(annotation.id);\n }\n }\n }\n }\n closePopup() {\n this.updateSelectedPopupContent(false).then((annot) => {\n this.store.viewer.deselectPopup();\n if (this.pdfApi) {\n if (annot) {\n annot.popup.isOpen = false;\n this.store.annotations.updateAnnotation(annot);\n if (this.pdfViewerCanvas.licenseFeatures.annotate) {\n this.pdfApi.updateItem(annot);\n }\n }\n }\n });\n }\n deletePopup(id) {\n if (this.pdfApi) {\n if (this.popupView) {\n this.popupView.deselectPopup();\n }\n this.store.viewer.selectPopup({ id: null, focus: false });\n const annotation = this.pdfApi.getItem(id);\n if (annotation) {\n annotation.content = '';\n annotation.subject = '';\n annotation.popup.isOpen = false;\n this.store.annotations.updateAnnotation(annotation);\n if (this.pdfViewerCanvas.licenseFeatures.annotate) {\n this.pdfApi.updateItem(annotation);\n }\n }\n }\n }\n toggleAnnotationLock(id) {\n if (this.pdfApi) {\n this.updateSelectedPopupContent(false).then((annotation) => {\n if (annotation) {\n if (this.options.annotation.trackHistory) {\n addHistoryEntry(annotation, 'lock', this.options.viewer.general.user);\n }\n annotation.setLock(!annotation.isLocked());\n this.store.annotations.updateAnnotation(annotation);\n if (this.pdfViewerCanvas.licenseFeatures.annotate) {\n this.pdfApi.updateItem(annotation);\n }\n }\n });\n }\n }\n updateSelectedPopupContent(syncronize, annotation) {\n const promise = new Promise((resolve, reject) => {\n var _a;\n if (this.pdfApi) {\n if (this.popupView) {\n const state = this.popupView.getState();\n const id = state.selectedPopup;\n if (id) {\n if (!annotation) {\n annotation = this.pdfApi.getItem(id);\n }\n const content = state.activeContent;\n const subject = state.activeSubject;\n if (this.options.annotation.trackHistory) {\n addHistoryEntry(annotation, 'edit', this.options.viewer.general.user, content, subject);\n }\n annotation.content = content !== null ? content : annotation.content;\n annotation.subject = subject !== null ? subject : annotation.subject;\n if (((_a = this.pdfViewerCanvas) === null || _a === void 0 ? void 0 : _a.licenseFeatures.annotate) && syncronize) {\n this.pdfApi\n .updateItem(annotation)\n .then(() => {\n if (this.popupView) {\n this.popupView.stateChanged(false);\n }\n resolve();\n })\n .catch(() => {\n reject();\n });\n }\n else {\n resolve(annotation);\n }\n }\n }\n }\n resolve(null);\n });\n return promise;\n }\n updatePopupPosition(id, x, y) {\n if (this.pdfApi) {\n const annotation = this.pdfApi.getItem(id);\n if (annotation) {\n const newPdfPos = this.pdfApi.transformScreenPointToPdfPoint({\n x: x * window.devicePixelRatio,\n y: y * window.devicePixelRatio,\n }, annotation.pdfRect.page).pdfPoint;\n if (annotation.popup.pdfRect.pdfX !== newPdfPos.pdfX ||\n annotation.popup.pdfRect.pdfY !== newPdfPos.pdfY) {\n annotation.popup.pdfRect.pdfX = newPdfPos.pdfX;\n annotation.popup.pdfRect.pdfY = newPdfPos.pdfY - annotation.popup.pdfRect.pdfH;\n this.store.annotations.updateAnnotation(annotation);\n this.updateSelectedPopupContent(true, annotation);\n }\n }\n }\n }\n updatePopupSize(id, w, h) {\n if (this.pdfApi) {\n const annotation = this.pdfApi.getItem(id);\n if (annotation) {\n const newWidth = w / this.screenToPdfScale;\n const newHeight = h / this.screenToPdfScale;\n if (annotation.popup.pdfRect.pdfW !== newWidth ||\n annotation.popup.pdfRect.pdfH !== newHeight) {\n annotation.popup.pdfRect.pdfW = newWidth;\n annotation.popup.pdfRect.pdfH = newHeight;\n this.store.annotations.updateAnnotation(annotation);\n this.updateSelectedPopupContent(true, annotation);\n }\n }\n }\n }\n updatePopupColor(id, color) {\n if (this.pdfApi) {\n const annotation = this.pdfApi.getItem(id);\n if (annotation) {\n if (annotation.itemType === PdfItemType.TEXT ||\n annotation.itemType === PdfItemType.HIGHLIGHT ||\n annotation.itemType === PdfItemType.SQUIGGLY ||\n annotation.itemType === PdfItemType.UNDERLINE ||\n annotation.itemType === PdfItemType.STRIKE_OUT) {\n ;\n annotation.color = color;\n }\n else if (annotation.itemType === PdfItemType.INK ||\n annotation.itemType === PdfItemType.SQUARE ||\n annotation.itemType === PdfItemType.CIRCLE) {\n const newColor = new Color(color);\n const currentColor = new Color(annotation.color);\n newColor.setOpacity(currentColor.a);\n annotation.color = newColor.toRgba();\n }\n annotation.popup.color = color;\n this.store.annotations.updateAnnotation(annotation);\n this.updateSelectedPopupContent(true, annotation);\n }\n }\n }\n}\n","import { CanvasModule, CanvasModuleType } from '../CanvasModule';\nimport { PopupLayer } from './PopupLayer';\nexport class PopupModule extends CanvasModule {\n constructor() {\n super();\n this.name = PopupModule.moduleInfo.name;\n }\n onRegister() {\n this.createCanvasLayer('popup', PopupLayer);\n return {};\n }\n activate() {\n return;\n }\n}\nPopupModule.moduleInfo = {\n name: 'PopupModule',\n moduleType: CanvasModuleType.Layer,\n requiredFeatures: {\n annotate: false,\n fillFormFields: false,\n },\n translationKey: 'a',\n icon: 'a',\n};\n","import { app, h } from '../../lib/hyperapp';\nimport { icons } from '../../common/icons';\nimport { Icon } from '../../common/Icon';\nimport { Loader } from '../../common/Loader';\nimport { translationManager } from '../../common/TranslationManager';\nexport var PaperFormat;\n(function (PaperFormat) {\n PaperFormat[PaperFormat[\"A4\"] = 0] = \"A4\";\n PaperFormat[PaperFormat[\"LETTER\"] = 1] = \"LETTER\";\n})(PaperFormat || (PaperFormat = {}));\nexport const createPrintServiceDialog = (props, element) => {\n const state = {\n pages: [],\n selectedFormat: PaperFormat.A4,\n radio_selection: 'all',\n printPending: false,\n };\n const actions = {\n setFormat: (format) => ($state) => {\n let selectedFormat = $state.selectedFormat;\n if (format === 0) {\n selectedFormat = PaperFormat.A4;\n }\n else if (format === 1) {\n selectedFormat = PaperFormat.LETTER;\n }\n return Object.assign(Object.assign({}, $state), { selectedFormat });\n },\n setRadioSelection: (sel) => ($state) => {\n return Object.assign(Object.assign({}, $state), { radio_selection: sel });\n },\n setPrintPending: (printPending) => ($state) => {\n return Object.assign(Object.assign({}, $state), { printPending });\n },\n };\n const App = () => (h(PrintServiceDialog, { print: props.print, cancel: props.cancel, pageCount: props.pageCount, currentPage: props.currentPage, parseRange: props.parseRange, validateRange: props.validateRange }));\n const PrintServiceDialog = ({ print, cancel, parseRange, validateRange }) => ($state, $actions) => (h(\"div\", { class: \"pwv-print-body\", id: \"pwv-print-body\" },\n h(\"div\", { class: \"pwv-print-title\" },\n h(Icon, { className: \"pwv-print-icon\", icon: icons.print, fill: '#008BD2' }),\n translationManager.getText('print.title')),\n $state.printPending ? (h(\"div\", null,\n h(Loader, null),\n h(\"div\", { class: \"pwv-print-bottom pwv-print-bottom-center\" },\n h(\"button\", { class: \"pwv-print-button-cancel\", onclick: () => {\n cancel();\n } }, translationManager.getText('print.cancel'))))) : (h(\"div\", null,\n h(\"div\", { class: \"pwv-print-pages\" },\n h(\"div\", { class: \"pwv-print-option\" },\n h(\"label\", null,\n h(\"input\", { type: \"radio\", id: \"all\", checked: $state.radio_selection === 'all' ? true : false, onclick: () => {\n $actions.setRadioSelection('all');\n } }),\n h(\"span\", { class: \"pwv-print-radio\" }),\n translationManager.getText('print.all'))),\n h(\"div\", { class: \"pwv-print-option\" },\n h(\"label\", null,\n h(\"input\", { type: \"radio\", id: \"current_page\", checked: $state.radio_selection === 'current_page' ? true : false, onclick: () => {\n $actions.setRadioSelection('current_page');\n } }),\n h(\"span\", { class: \"pwv-print-radio\" }),\n translationManager.getText('print.current'))),\n h(\"div\", { class: \"pwv-print-option\" },\n h(\"label\", null,\n h(\"input\", { type: \"radio\", id: \"range\", checked: $state.radio_selection === 'range' ? true : false, onclick: () => {\n $actions.setRadioSelection('range');\n } }),\n h(\"span\", { class: \"pwv-print-radio\" }),\n translationManager.getText('print.range')),\n h(\"input\", { class: \"pwv-print-page-range\", id: \"pwv-print-input-range\", type: \"text\", placeholder: \"e.g. 1,3-5\", onkeydown: (e) => {\n e.stopPropagation();\n }, onkeyup: (e) => {\n if (state.radio_selection !== 'range') {\n $actions.setRadioSelection('range');\n }\n const inputElement = document.getElementById('pwv-print-input-range');\n const errorMessage = document.getElementById('pwv-print-invalid-range-text');\n let bValidInput = false;\n if (validateRange(inputElement.value)) {\n const pages = parseRange(inputElement.value);\n bValidInput = !pages.some((page) => page > props.pageCount || page < 1);\n }\n if (bValidInput) {\n inputElement.classList.remove('pwv-print-invalid-input');\n errorMessage.style.display = 'none';\n }\n else {\n inputElement.classList.add('pwv-print-invalid-input');\n errorMessage.style.display = 'block';\n }\n } })),\n h(\"div\", { class: \"pwv-print-invalid-range-text\", id: \"pwv-print-invalid-range-text\" }, translationManager.getText('print.invalid'))),\n h(\"div\", { class: \"pwv-print-bottom\" },\n h(\"button\", { class: \"pwv-print-button-cancel\", onclick: () => {\n cancel();\n } }, translationManager.getText('print.cancel')),\n h(\"button\", { class: \"pwv-print-button-print\", onclick: () => {\n if ($state.radio_selection === 'all') {\n const pages = Array.from({ length: props.pageCount }, (x, i) => i + 1);\n print(pages, $state.selectedFormat);\n }\n if ($state.radio_selection === 'current_page') {\n print([props.currentPage], $state.selectedFormat);\n }\n if ($state.radio_selection === 'range') {\n const input = document.getElementById('pwv-print-input-range').value;\n const pages = parseRange(input);\n print(pages, $state.selectedFormat);\n }\n } }, translationManager.getText('print.print')))))));\n return app(state, actions, App, element);\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { CanvasLayer } from '../CanvasLayer';\nimport { createPrintServiceDialog } from './PrintServiceDialog';\nconst moduleLayerName = 'PrintServiceLayer';\nexport class PrintServiceLayer extends CanvasLayer {\n constructor() {\n super(...arguments);\n this.printDialog = null;\n this.printElement = null;\n this.printIFrame = null;\n this.pageStyle = null;\n this.printPending = false;\n }\n onCreate() {\n this.startPrint = this.startPrint.bind(this);\n this.cancelPrint = this.cancelPrint.bind(this);\n this.validateRange = this.validateRange.bind(this);\n this.parseRange = this.parseRange.bind(this);\n this.stopTouchEventPropagation = this.stopTouchEventPropagation.bind(this);\n this.printElement = this.createHtmlLayer();\n this.printElement.className = 'pwv-print-dialog';\n this.printDialog = createPrintServiceDialog({\n pageCount: this.pdfApi.getPageCount(),\n currentPage: this.store.getState().document.firstVisiblePage,\n print: this.startPrint,\n cancel: this.cancelPrint,\n validateRange: this.validateRange,\n parseRange: this.parseRange,\n }, this.printElement);\n this.store.viewer.beginModule(moduleLayerName);\n this.printElement.addEventListener('touchstart', this.stopTouchEventPropagation);\n this.printElement.addEventListener('touchend', this.stopTouchEventPropagation);\n }\n startPrint(pages, format) {\n this.printPending = true;\n if (this.printDialog) {\n this.printDialog.setPrintPending(true);\n }\n if (!this.printIFrame) {\n this.printIFrame = document.createElement('iframe');\n this.printIFrame.style.display = 'none';\n document.body.appendChild(this.printIFrame);\n const doc = this.printIFrame.contentDocument;\n doc.open();\n doc.close();\n if (doc.head) {\n const styleElm = doc.createElement('style');\n styleElm.textContent = `\n @media print {\n @page {size:A4;margin:0;padding:0}\n body {margin:0;padding:0;background-color:white;height:100%;}\n .page {margin:0;width:100% !important; height:100% !important;overflow:hidden}\n .page img {display:block;margin:0;padding:0;width:100%;height:auto;max-height:100%;}\n .page:last-child { page-break-after: avoid; }\n }\n `;\n doc.head.append(styleElm);\n }\n }\n const printDocument = this.printIFrame.contentDocument;\n printDocument.body.innerHTML = '';\n const pageList = printDocument.createElement('div');\n printDocument.body.append(pageList);\n const pdfApi = this.pdfApi;\n const dpi = 150;\n // paper sizes\n const paperSizes = {\n a4: {\n width: 595,\n height: 842,\n },\n };\n const printerPaperSize = paperSizes.a4;\n // papersize in pixels for a4\n const paperSize = {\n width: (printerPaperSize.width / 72) * dpi,\n height: (printerPaperSize.height / 72) * dpi,\n };\n // canvas for image creation\n const canvas = printDocument.createElement('canvas');\n canvas.width = paperSize.width;\n canvas.height = paperSize.height;\n const ctx = canvas.getContext('2d');\n const renderNextPage = () => __awaiter(this, void 0, void 0, function* () {\n if (!this.printPending) {\n return;\n }\n const page = pages.shift();\n if (page) {\n const pageSize = yield pdfApi.getPagePdfSize(page);\n let pageWidth = (pageSize.width / 72) * dpi;\n let pageHeight = (pageSize.height / 72) * dpi;\n const isLandscape = pageWidth > pageHeight;\n //shrink page if the page is larger then lager then paper size\n let scale = 1;\n if (isLandscape) {\n scale = Math.min(paperSize.height / pageWidth, paperSize.width / pageHeight);\n }\n else {\n scale = Math.min(paperSize.width / pageWidth, paperSize.height / pageHeight);\n }\n if (scale < 1) {\n pageWidth = pageWidth * scale;\n pageHeight = pageHeight * scale;\n }\n const img = yield pdfApi.renderPage(page, pageWidth, pageHeight);\n if (ctx) {\n ctx.clearRect(0, 0, paperSize.width, paperSize.height);\n ctx.save();\n if (isLandscape) {\n // putImageData is not affected by the transformation matrix\n // need to draw draw to a tmp camvas\n const tmpCanvas = printDocument.createElement('canvas');\n tmpCanvas.width = img.imageData.width;\n tmpCanvas.height = img.imageData.height;\n const tmpCtx = tmpCanvas.getContext('2d');\n if (tmpCtx) {\n tmpCtx.putImageData(img.imageData, 0, 0);\n }\n const imgPosX = (paperSize.height - img.imageData.width) / 2;\n const imgPosY = (paperSize.width - img.imageData.height) / 2;\n ctx.translate(canvas.width, 0);\n ctx.rotate((90 * Math.PI) / 180);\n ctx.drawImage(tmpCanvas, imgPosX, imgPosY);\n // draw page rectangle for debugging\n // ctx.strokeStyle = 'blue'\n // ctx.lineWidth = 4\n // ctx.strokeRect(\n // imgPosX + 2,\n // imgPosY + 2,\n // img.imageData.width - 4,\n // img.imageData.height - 4\n // )\n }\n else {\n const imgPosX = (paperSize.width - pageWidth) / 2;\n const imgPosY = (paperSize.height - pageHeight) / 2;\n ctx.putImageData(img.imageData, imgPosX, imgPosY);\n // draw page rectangle for debugging\n // ctx.strokeStyle = 'red'\n // ctx.lineWidth = 4\n // ctx.strokeRect(\n // imgPosX + 2,\n // imgPosY + 2,\n // pageWidth - 4,\n // pageHeight - 4\n // )\n }\n ctx.restore();\n // create and append html elements to page list\n const pageElm = printDocument.createElement('div');\n pageElm.classList.add('page');\n pageList.append(pageElm);\n const imgSrc = canvas.toDataURL('image/png');\n const imgElm = printDocument.createElement('img');\n imgElm.src = imgSrc;\n pageElm.append(imgElm);\n }\n renderNextPage();\n }\n else {\n window.setTimeout(() => {\n this.printPending = false;\n if (this.printDialog) {\n this.printDialog.setPrintPending(false);\n }\n if (this.printIFrame && this.printIFrame.contentWindow) {\n this.printIFrame.contentWindow.print();\n }\n }, 100);\n }\n });\n renderNextPage();\n }\n cancelPrint() {\n this.printPending = false;\n this.remove();\n }\n stopTouchEventPropagation(e) {\n e.stopImmediatePropagation();\n }\n // Validate the provided page range\n validateRange(range) {\n // Only numbers, commas and dashes are allowed\n let regex = range.match(/^[\\d\\,\\-]*$/g);\n if (!regex || (regex && regex.length === 0)) {\n return false;\n }\n // Only single dashes and commas are allowed\n regex = range.match(/-{2,}|,{2,}/g);\n if (regex && regex.length > 0) {\n return false;\n }\n return true;\n }\n // Transform a range string into a list of pages\n // The range string should be validated first\n parseRange(range) {\n let pages = [];\n if (!this.validateRange(range)) {\n return [];\n }\n const splitInput = range.split(',');\n splitInput.forEach((input) => {\n const nDashes = (input.match(/-/g) || []).length;\n if (nDashes === 0) {\n // No dash, parse string as int and push\n // number to the list\n pages.push(parseInt(input, 10));\n }\n if (nDashes === 1) {\n const numbers = input.split('-');\n let firstPage = parseInt(numbers[0], 10);\n let lastPage = parseInt(numbers[1], 10);\n // this.printDialog.\n if (lastPage < firstPage) {\n const temp = firstPage;\n firstPage = lastPage;\n lastPage = temp;\n }\n const pageRange = Array.from({ length: lastPage - firstPage + 1 }, (v, k) => k + firstPage);\n pages = pages.concat(pageRange);\n }\n });\n return pages;\n }\n close() {\n this.remove();\n }\n onRemove() {\n var _a, _b;\n (_a = this.printElement) === null || _a === void 0 ? void 0 : _a.removeEventListener('touchstart', this.stopTouchEventPropagation);\n (_b = this.printElement) === null || _b === void 0 ? void 0 : _b.removeEventListener('touchend', this.stopTouchEventPropagation);\n this.removeHtmlElements();\n this.printPending = false;\n this.printElement = null;\n if (this.pageStyle) {\n this.pageStyle.remove();\n }\n if (this.printIFrame) {\n document.body.removeChild(this.printIFrame);\n }\n this.store.viewer.endModule(moduleLayerName);\n }\n render(timestamp, state) {\n if (state.viewer.modeChanged && state.viewer.selectedModuleName !== moduleLayerName) {\n this.remove();\n return;\n }\n if (this.printElement && state.pointer.action === 'click') {\n const insideHorizontal = state.pointer.x.cssPixels > this.printElement.offsetLeft &&\n state.pointer.x.cssPixels < this.printElement.offsetLeft + this.printElement.offsetWidth;\n const insideVertical = state.pointer.y.cssPixels > this.printElement.offsetTop &&\n state.pointer.y.cssPixels < this.printElement.offsetTop + this.printElement.offsetHeight;\n if (!insideHorizontal || !insideVertical) {\n this.remove();\n return;\n }\n }\n }\n onSave() {\n return new Promise((resolve, rejct) => {\n return;\n });\n }\n}\n","import { CanvasModule, CanvasModuleType } from '../CanvasModule';\nimport { PrintServiceLayer } from './PrintServiceLayer';\nexport class PrintServiceModule extends CanvasModule {\n constructor() {\n super();\n this.annotationbarElement = null;\n this.toolbarElement = null;\n this.name = PrintServiceModule.moduleInfo.name;\n this.activate = this.activate.bind(this);\n }\n onRegister() {\n return {};\n }\n activate() {\n /* tslint:disable-next-line:no-string-literal */\n if (!this.canvasLayers['add']) {\n this.createCanvasLayer('add', PrintServiceLayer);\n }\n }\n}\nPrintServiceModule.moduleInfo = {\n name: 'PrintServiceModule',\n moduleType: CanvasModuleType.Layer,\n requiredFeatures: {\n annotate: false,\n fillFormFields: false,\n },\n translationKey: 'a',\n icon: 'a',\n};\n","import { CanvasLayer } from '../CanvasLayer';\nimport { PdfItemType, AnnotationBorderStyle, } from '../../pdf-viewer-api';\nimport { CursorStyle } from '../../pdf-viewer-canvas/state/viewer';\nimport { getRectFromSelection } from '../../pdf-viewer-canvas/state/document';\nimport { createAddShapeAnnotationToolbar, } from './AddShapeAnnotationToolbar';\nimport { Color } from '../../common/Color';\nconst moduleLayerName = 'AddShapeAnnotation';\nexport class AddShapeAnnotationLayer extends CanvasLayer {\n constructor() {\n super(...arguments);\n this.context = null;\n this.toolbar = null;\n this.page = 0;\n this.pointerDown = false;\n this.startPoint = null;\n this.itemType = null;\n this.strokeColors = [];\n this.fillColors = [];\n }\n onCreate(itemType) {\n this.setStrokeColor = this.setStrokeColor.bind(this);\n this.setStrokeWidth = this.setStrokeWidth.bind(this);\n this.setStrokeStyle = this.setStrokeStyle.bind(this);\n this.setFillColor = this.setFillColor.bind(this);\n this.setShape = this.setShape.bind(this);\n this.cancel = this.cancel.bind(this);\n this.context = this.createCanvas();\n this.itemType = itemType;\n const annotationOptions = this.options.annotation;\n this.strokeColors = annotationOptions.colors.foregroundColors;\n this.fillColors = annotationOptions.colors.backgroundColors;\n this.store.viewer.beginModule(moduleLayerName);\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n this.toolbar = createAddShapeAnnotationToolbar({\n strokeColors: this.strokeColors,\n strokeWidths: annotationOptions.strokeWidths,\n fillColors: this.fillColors,\n selectedStrokeColor: annotationOptions.colors.shapeColor,\n selectedStrokeWidth: annotationOptions.shapeStrokeWidth,\n selectedStrokeStyle: annotationOptions.shapeStrokeStyle,\n selectedFillColor: annotationOptions.colors.shapeFillColor,\n selectedShape: this.itemType,\n onStrokeColorChanged: this.setStrokeColor,\n onStrokeWidthChanged: this.setStrokeWidth,\n onStrokeStyleChanged: this.setStrokeStyle,\n onFillColorChanged: this.setFillColor,\n onShapeChanged: this.setShape,\n onCancel: this.cancel,\n }, toolbarElement);\n }\n cancel() {\n this.remove();\n }\n onSave() {\n const promise = new Promise((resolve, reject) => {\n resolve();\n });\n return promise;\n }\n onRemove() {\n this.removeCanvasElements();\n this.context = null;\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n toolbarElement.innerHTML = '';\n this.store.viewer.setCursorStyle(CursorStyle.DEFAULT);\n this.store.viewer.endModule(moduleLayerName);\n }\n render(timestamp, state) {\n if (state.viewer.modeChanged && state.viewer.selectedModuleName !== moduleLayerName) {\n this.remove();\n return;\n }\n if (this.context) {\n const update = state.viewer.modeChanged ||\n state.pointer.positionChanged ||\n state.pointer.action ||\n state.document.zoomChanged;\n if (update) {\n const ctx = this.context;\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n const pointerPos = {\n x: state.pointer.x.devicePixels,\n y: state.pointer.y.devicePixels,\n };\n const pointerPdfPos = this.pdfApi.transformScreenPointToPdfPoint(pointerPos);\n if (pointerPdfPos.isOnPage) {\n this.store.viewer.setCursorStyle(CursorStyle.CROSSHAIR);\n }\n else {\n this.store.viewer.setCursorStyle(CursorStyle.NOT_ALLOWED);\n }\n if (state.pointer.isDown) {\n if (!this.pointerDown) {\n this.startPoint = pointerPos;\n this.pointerDown = true;\n if (this.page === 0 && pointerPdfPos.isOnPage) {\n this.page = pointerPdfPos.pdfPoint.page;\n }\n }\n if (this.startPoint) {\n const rect = getRectFromSelection(state.document, {\n x: this.startPoint.x,\n y: this.startPoint.y,\n }, {\n x: pointerPos.x,\n y: pointerPos.y,\n }, this.page);\n const annotationOptions = this.options.annotation;\n if (rect) {\n ctx.save();\n const strokeColor = new Color(annotationOptions.colors.shapeColor);\n ctx.strokeStyle = strokeColor.toRgb();\n const fillColor = new Color(annotationOptions.colors.shapeFillColor);\n ctx.fillStyle = fillColor.toRgb();\n const lineWidth = annotationOptions.shapeStrokeWidth * devicePixelRatio * state.document.zoom;\n ctx.lineWidth = lineWidth;\n if (lineWidth) {\n ctx.globalAlpha = strokeColor.a;\n }\n else {\n ctx.globalAlpha = fillColor.a;\n }\n if (this.options.annotation.shapeStrokeStyle === AnnotationBorderStyle.DASHED) {\n ctx.setLineDash([ctx.lineWidth]);\n }\n if (this.itemType === PdfItemType.CIRCLE) {\n const cX = rect.x + rect.w / 2;\n const cY = rect.y + rect.h / 2;\n ctx.beginPath();\n ctx.ellipse(cX, cY, Math.max(rect.w / 2 - ctx.lineWidth / 2, 0), Math.max(rect.h / 2 - ctx.lineWidth / 2, 0), 0, 0, Math.PI * 2);\n if (fillColor.a) {\n ctx.fill();\n }\n if (annotationOptions.shapeStrokeWidth) {\n ctx.stroke();\n }\n }\n else {\n if (fillColor.a) {\n ctx.fillRect(rect.x, rect.y, rect.w, rect.h);\n }\n if (annotationOptions.shapeStrokeWidth) {\n ctx.strokeRect(rect.x + ctx.lineWidth / 2, rect.y + ctx.lineWidth / 2, rect.w - ctx.lineWidth, rect.h - ctx.lineWidth);\n }\n }\n ctx.restore();\n }\n }\n }\n else if (this.pointerDown && this.startPoint) {\n const rect = getRectFromSelection(state.document, {\n x: this.startPoint.x,\n y: this.startPoint.y,\n }, {\n x: pointerPos.x,\n y: pointerPos.y,\n }, this.page);\n if (rect) {\n this.pointerDown = false;\n this.startPoint = null;\n this.createRectangleAnnotation(rect);\n }\n }\n }\n }\n }\n setStrokeColor(color) {\n this.options.annotation.colors.shapeColor = color;\n }\n setShape(shape) {\n this.itemType = shape;\n }\n setStrokeWidth(width) {\n this.options.annotation.shapeStrokeWidth = width;\n }\n setStrokeStyle(style) {\n this.options.annotation.shapeStrokeStyle = style;\n }\n setFillColor(color) {\n this.options.annotation.colors.shapeFillColor = color;\n }\n createRectangleAnnotation(rect) {\n const pdfRect = this.pdfApi.transformScreenRectToPdfRect(rect, this.page);\n const annotationOptions = this.options.annotation;\n const annotation = {\n itemType: this.itemType,\n color: annotationOptions.colors.shapeColor,\n pdfRect,\n page: this.page,\n author: this.options.viewer.general.user,\n fillColor: annotationOptions.colors.shapeFillColor === 'transparent'\n ? null\n : annotationOptions.colors.shapeFillColor,\n border: {\n width: annotationOptions.shapeStrokeWidth,\n style: this.options.annotation.shapeStrokeStyle,\n },\n };\n this.pdfApi\n .createItem(annotation)\n .then(() => {\n this.remove();\n })\n .catch((err) => {\n console.error(err);\n });\n }\n}\n","import { app, h } from '../../lib/hyperapp';\nimport { PdfItemType } from '../../pdf-viewer-api';\nimport { translationManager } from '../../common/TranslationManager';\nimport { Toolbar } from '../../common/Toolbar';\nimport { ToolbarItemGroup } from '../../common/ToolbarItemGroup';\nimport { ToolbarButton } from '../../common/ToolbarButton';\nimport { icons } from '../../common/icons';\nimport { ToolbarSeparator } from '../../common/ToolbarSeparator';\nimport { StrokeWidthPicker } from '../../common/StrokeWidthPicker';\nimport { StrokeStylePicker } from '../../common/StrokeStylePicker';\nimport { ColorPicker } from '../../common/ColorPicker';\nexport const createAddShapeAnnotationToolbar = (props, element) => {\n const state = {\n strokeColors: props.strokeColors,\n strokeWidths: props.strokeWidths,\n fillColors: props.fillColors,\n selectedShape: props.selectedShape,\n selectedStrokeColor: props.selectedStrokeColor,\n selectedStrokeWidth: props.selectedStrokeWidth,\n selectedStrokeStyle: props.selectedStrokeStyle,\n selectedFillColor: props.selectedFillColor,\n };\n const actions = {\n setShape: (shape) => ($state) => {\n props.onShapeChanged(shape);\n return Object.assign(Object.assign({}, $state), { selectedShape: shape });\n },\n setStrokeColor: (color) => ($state) => {\n props.onStrokeColorChanged(color);\n return Object.assign(Object.assign({}, $state), { selectedStrokeColor: color });\n },\n setStrokeWidth: (width) => ($state) => {\n props.onStrokeWidthChanged(width);\n return Object.assign(Object.assign({}, $state), { selectedStrokeWidth: width });\n },\n setStrokeStyle: (style) => ($state) => {\n props.onStrokeStyleChanged(style);\n return Object.assign(Object.assign({}, $state), { selectedStrokeStyle: style });\n },\n setFillColor: (color) => ($state) => {\n props.onFillColorChanged(color);\n return Object.assign(Object.assign({}, $state), { selectedFillColor: color });\n },\n setCancel: () => ($state) => {\n return Object.assign({}, $state);\n },\n };\n const App = () => h(AddShapeAnnotationToolbar, null);\n const AddShapeAnnotationToolbar = ({}) => ($state, $actions) => (h(Toolbar, { allowWrap: true, alignCenter: true },\n h(ToolbarItemGroup, null,\n h(ToolbarButton, { tooltip: translationManager.getText('annotShape.addRectangle'), icon: icons.rectangle, active: $state.selectedShape === PdfItemType.SQUARE, onClick: () => {\n $actions.setShape(PdfItemType.SQUARE);\n } }),\n h(ToolbarButton, { tooltip: translationManager.getText('annotShape.addEllipse'), icon: icons.circle, active: $state.selectedShape === PdfItemType.CIRCLE, onClick: () => {\n $actions.setShape(PdfItemType.CIRCLE);\n } }),\n h(ToolbarSeparator, null)),\n h(ToolbarItemGroup, null,\n h(StrokeWidthPicker, { tooltip: translationManager.getText('annotShape.strokeWidth'), noneStrokeText: translationManager.getText('border.none'), strokeWidths: $state.strokeWidths, value: $state.selectedStrokeWidth, onChange: $actions.setStrokeWidth }),\n h(StrokeStylePicker, { tooltip: translationManager.getText('annotShape.strokeStyle'), value: $state.selectedStrokeStyle, disabled: $state.selectedStrokeWidth === 0, onChange: $actions.setStrokeStyle, shapeType: $state.selectedShape === PdfItemType.CIRCLE ? 'circle' : 'rectangle' }),\n h(ColorPicker, { tooltip: translationManager.getText('annotShape.strokeColor'), colors: $state.strokeColors, color: $state.selectedStrokeColor, disabled: $state.selectedStrokeWidth === 0, icon: icons.pencil, onChange: $actions.setStrokeColor })),\n h(ToolbarItemGroup, null,\n h(ToolbarSeparator, null),\n h(ColorPicker, { tooltip: translationManager.getText('annotShape.bgColor'), colors: $state.fillColors, color: $state.selectedFillColor, icon: icons.fillColor, onChange: $actions.setFillColor })),\n h(ToolbarItemGroup, { pushRight: true },\n h(ToolbarSeparator, null),\n h(ToolbarButton, { icon: icons.close, onClick: props.onCancel }))));\n return app(state, actions, App, element);\n};\n","import { CanvasLayer } from '../CanvasLayer';\nimport { CursorStyle } from '../../pdf-viewer-canvas/state/viewer';\nimport { createEditShapeAnnotationToolbar, } from './EditShapeAnnotationToolbar';\nimport { Color } from '../../common/Color';\nconst moduleLayerName = 'EditShapeAnnotation';\nexport class EditShapeAnnotationLayer extends CanvasLayer {\n constructor() {\n super(...arguments);\n this.shapeAnnotation = null;\n this.context = null;\n this.toolbar = null;\n this.strokeColors = [];\n this.fillColors = [];\n }\n onCreate(annotationId) {\n this.shapeAnnotation = this.pdfApi.getItem(annotationId);\n this.setStrokeColor = this.setStrokeColor.bind(this);\n this.setStrokeWidth = this.setStrokeWidth.bind(this);\n this.setStrokeStyle = this.setStrokeStyle.bind(this);\n this.setFillColor = this.setFillColor.bind(this);\n this.close = this.close.bind(this);\n const annotOptions = this.options.annotation;\n this.strokeColors = annotOptions.colors.foregroundColors;\n this.fillColors = annotOptions.colors.backgroundColors;\n this.context = this.createCanvas();\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n this.toolbar = createEditShapeAnnotationToolbar({\n strokeColors: this.strokeColors,\n strokeWidths: annotOptions.strokeWidths,\n fillColors: this.fillColors,\n selectedStrokeColor: this.shapeAnnotation.color\n ? this.shapeAnnotation.color\n : annotOptions.colors.shapeColor,\n selectedStrokeWidth: this.shapeAnnotation.border.width,\n selectedStrokeStyle: this.shapeAnnotation.border.style,\n selectedFillColor: this.shapeAnnotation.fillColor\n ? this.shapeAnnotation.fillColor\n : annotOptions.colors.shapeFillColor,\n itemType: this.shapeAnnotation.itemType,\n onStrokeColorChanged: this.setStrokeColor,\n onStrokeWidthChanged: this.setStrokeWidth,\n onStrokeStyleChanged: this.setStrokeStyle,\n onFillColorChanged: this.setFillColor,\n onCancel: this.close,\n }, toolbarElement);\n this.store.viewer.beginModule(moduleLayerName);\n }\n close() {\n this.remove();\n }\n onSave() {\n return new Promise((resolve, reject) => {\n resolve();\n });\n }\n onRemove() {\n this.removeCanvasElements();\n this.context = null;\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n toolbarElement.innerHTML = '';\n this.store.viewer.setCursorStyle(CursorStyle.DEFAULT);\n this.store.viewer.endModule(moduleLayerName);\n }\n render(timestamp, state) {\n var _a;\n if (state.viewer.modeChanged && state.viewer.selectedModuleName !== moduleLayerName) {\n this.remove();\n return;\n }\n if (state.pointer.action === 'click' || state.pointer.action === 'dblclick') {\n const shapeAnnotation = (_a = this.pdfApi\n .getAnnotationsOnPoint({\n x: state.pointer.x.devicePixels,\n y: state.pointer.y.devicePixels,\n })) === null || _a === void 0 ? void 0 : _a.find((a) => this.shapeAnnotation && a.id === this.shapeAnnotation.id);\n if (!shapeAnnotation) {\n this.close();\n return;\n }\n }\n if (this.context && this.shapeAnnotation) {\n const ctx = this.context;\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n const rect = this.pdfApi.transformPdfPageRectToScreenRect(this.shapeAnnotation.pdfRect);\n const lineWidth = 2 * devicePixelRatio;\n ctx.save();\n ctx.strokeStyle = this.options.viewer.general.textSelectionColor;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash([lineWidth, lineWidth]);\n ctx.strokeRect(rect.x - lineWidth, rect.y - lineWidth, rect.w + 2 * lineWidth, rect.h + 2 * lineWidth);\n ctx.restore();\n }\n }\n setStrokeColor(color) {\n if (this.shapeAnnotation && this.shapeAnnotation.color) {\n const newColor = new Color(color);\n const currentColor = new Color(this.shapeAnnotation.color);\n newColor.setOpacity(currentColor.a);\n this.shapeAnnotation.color = newColor.toRgba();\n this.updateShapeAnnotation();\n }\n }\n setStrokeWidth(width) {\n if (this.shapeAnnotation) {\n this.shapeAnnotation.border = {\n style: this.shapeAnnotation.border.style,\n width: width,\n };\n this.updateShapeAnnotation();\n }\n }\n setStrokeStyle(style) {\n if (this.shapeAnnotation) {\n this.shapeAnnotation.border = {\n style: style,\n width: this.shapeAnnotation.border.width,\n };\n this.updateShapeAnnotation();\n }\n }\n setFillColor(color) {\n if (this.shapeAnnotation) {\n const newColor = new Color(color);\n this.shapeAnnotation.fillColor = newColor.toRgba();\n this.updateShapeAnnotation();\n }\n }\n updateShapeAnnotation() {\n const promise = new Promise((resolve, reject) => {\n if (this.pdfApi && this.shapeAnnotation) {\n this.pdfApi\n .updateItem(this.shapeAnnotation)\n .then((item) => {\n resolve();\n })\n .catch((error) => {\n console.warn(error);\n });\n }\n else {\n reject();\n }\n });\n return promise;\n }\n}\n","import { app, h } from '../../lib/hyperapp';\nimport { PdfItemType } from '../../pdf-viewer-api';\nimport { translationManager } from '../../common/TranslationManager';\nimport { Toolbar } from '../../common/Toolbar';\nimport { ToolbarItemGroup } from '../../common/ToolbarItemGroup';\nimport { ToolbarButton } from '../../common/ToolbarButton';\nimport { icons } from '../../common/icons';\nimport { ToolbarSeparator } from '../../common/ToolbarSeparator';\nimport { StrokeWidthPicker } from '../../common/StrokeWidthPicker';\nimport { StrokeStylePicker } from '../../common/StrokeStylePicker';\nimport { ColorPicker } from '../../common/ColorPicker';\nexport const createEditShapeAnnotationToolbar = (props, element) => {\n const state = {\n strokeColors: props.strokeColors,\n strokeWidths: props.strokeWidths,\n fillColors: props.fillColors,\n selectedStrokeColor: props.selectedStrokeColor,\n selectedStrokeWidth: props.selectedStrokeWidth,\n selectedStrokeStyle: props.selectedStrokeStyle,\n selectedFillColor: props.selectedFillColor,\n itemType: props.itemType,\n };\n const actions = {\n setStrokeColor: (color) => ($state) => {\n props.onStrokeColorChanged(color);\n return Object.assign(Object.assign({}, $state), { selectedStrokeColor: color });\n },\n setStrokeWidth: (width) => ($state) => {\n props.onStrokeWidthChanged(width);\n return Object.assign(Object.assign({}, $state), { selectedStrokeWidth: width });\n },\n setStrokeStyle: (style) => ($state) => {\n props.onStrokeStyleChanged(style);\n return Object.assign(Object.assign({}, $state), { selectedStrokeStyle: style });\n },\n setFillColor: (color) => ($state) => {\n props.onFillColorChanged(color);\n return Object.assign(Object.assign({}, $state), { selectedFillColor: color });\n },\n setCancel: () => ($state) => {\n return Object.assign({}, $state);\n },\n };\n const App = () => h(EditShapeAnnotationToolbar, null);\n const EditShapeAnnotationToolbar = ({}) => ($state, $actions) => (h(Toolbar, { allowWrap: true, alignCenter: true },\n h(ToolbarItemGroup, null,\n h(StrokeWidthPicker, { tooltip: translationManager.getText('annotShape.strokeWidth'), noneStrokeText: translationManager.getText('border.none'), strokeWidths: $state.strokeWidths, value: $state.selectedStrokeWidth, onChange: $actions.setStrokeWidth }),\n h(StrokeStylePicker, { tooltip: translationManager.getText('annotShape.strokeStyle'), value: $state.selectedStrokeStyle, disabled: $state.selectedStrokeWidth === 0, onChange: $actions.setStrokeStyle, shapeType: $state.itemType === PdfItemType.CIRCLE ? 'circle' : 'rectangle' }),\n h(ColorPicker, { tooltip: translationManager.getText('annotShape.strokeColor'), colors: $state.strokeColors, color: $state.selectedStrokeColor, disabled: $state.selectedStrokeWidth === 0, icon: icons.pencil, onChange: $actions.setStrokeColor })),\n h(ToolbarItemGroup, null,\n h(ToolbarSeparator, null),\n h(ColorPicker, { tooltip: translationManager.getText('annotShape.bgColor'), colors: $state.fillColors, color: $state.selectedFillColor, icon: icons.fillColor, onChange: $actions.setFillColor })),\n h(ToolbarItemGroup, { pushRight: true },\n h(ToolbarSeparator, null),\n h(ToolbarButton, { icon: icons.close, onClick: props.onCancel }))));\n return app(state, actions, App, element);\n};\n","import { CanvasModule, CanvasModuleType } from '../CanvasModule';\nimport { AddShapeAnnotationLayer } from './AddShapeAnnotationLayer';\nimport { EditShapeAnnotationLayer } from './EditShapeAnnotationLayer';\nimport { PdfItemType } from '../../pdf-viewer-api';\nimport { icons } from '../../common/Icon';\nimport { translationManager } from '../../common/TranslationManager';\nexport class ShapeAnnotationModule extends CanvasModule {\n constructor() {\n super();\n this.annotationbarElement = null;\n this.toolbarElement = null;\n this.name = ShapeAnnotationModule.moduleInfo.name;\n this.onEdit = this.onEdit.bind(this);\n }\n onRegister() {\n this.toolbarElement = document.createElement('div');\n return {\n toolbar: this.toolbarElement,\n contextbar: {\n itemTypes: [PdfItemType.SQUARE, PdfItemType.CIRCLE],\n icon: icons.edit,\n tooltip: translationManager.getText('annotShape.edit'),\n onCmd: (annotationId) => {\n this.onEdit(annotationId);\n },\n },\n };\n }\n activate() {\n if (!this.canvasLayers['add']) {\n this.createCanvasLayer('add', AddShapeAnnotationLayer, PdfItemType.SQUARE);\n }\n else {\n this.removeCanvasLayer('add');\n }\n }\n onEdit(annotationId) {\n this.createCanvasLayer('edit', EditShapeAnnotationLayer, annotationId);\n }\n}\nShapeAnnotationModule.moduleInfo = {\n name: 'ShapeAnnotationModule',\n moduleType: CanvasModuleType.Tool,\n requiredFeatures: {\n annotate: true,\n fillFormFields: false,\n },\n translationKey: 'annotShape.add',\n icon: 'shapes',\n};\n","import { CanvasLayer } from '../CanvasLayer';\nimport { PdfItemType, StampAnnotationColor, } from '../../pdf-viewer-api';\nimport { CursorStyle } from '../../pdf-viewer-canvas/state/viewer';\nimport { getRectFromSelection } from '../../pdf-viewer-canvas/state/document';\nimport { createAddStampAnnotationToolbar } from './AddStampAnnotationToolbar';\nimport { translationManager } from '../../common/TranslationManager';\nimport { imageDataUrlToUint8Array } from '../../common/Tools';\nconst moduleLayerName = 'AddStampAnnotation';\nexport class AddStampAnnotationLayer extends CanvasLayer {\n constructor() {\n super(...arguments);\n this.context = null;\n this.pointerDown = false;\n this.startPoint = null;\n this.stampRect = null;\n this.page = 0;\n this.screenPageRect = null;\n this.aspectRatio = null;\n this.stamps = [];\n }\n onCreate() {\n this.setStamp = this.setStamp.bind(this);\n this.close = this.close.bind(this);\n this.context = this.createCanvas();\n this.stamps = this.options.annotation.stamps;\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n this.setStamp(this.options.annotation.selectedStamp);\n createAddStampAnnotationToolbar({\n selectedStamp: this.options.annotation.selectedStamp,\n stamps: this.stamps,\n onStampChanged: this.setStamp,\n onClose: this.close,\n }, toolbarElement);\n this.store.viewer.beginModule(moduleLayerName);\n }\n onSave() {\n const promise = new Promise((resolve, reject) => {\n resolve();\n });\n return promise;\n }\n onRemove() {\n this.removeCanvasElements();\n this.context = null;\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n toolbarElement.innerHTML = '';\n this.store.viewer.setCursorStyle(CursorStyle.DEFAULT);\n this.store.viewer.endModule(moduleLayerName);\n }\n render(timestamp, state) {\n if (state.viewer.modeChanged && state.viewer.selectedModuleName !== moduleLayerName) {\n this.remove();\n return;\n }\n if (!this.aspectRatio) {\n return;\n }\n if (this.context) {\n const update = state.viewer.modeChanged ||\n state.pointer.positionChanged ||\n state.pointer.action ||\n state.document.zoomChanged;\n if (update) {\n const ctx = this.context;\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n const pointerPos = { x: state.pointer.x.devicePixels, y: state.pointer.y.devicePixels };\n const pointerPdfPos = this.pdfApi.transformScreenPointToPdfPoint(pointerPos);\n if (pointerPdfPos.isOnPage) {\n this.store.viewer.setCursorStyle(CursorStyle.CROSSHAIR);\n }\n else {\n this.store.viewer.setCursorStyle(CursorStyle.NOT_ALLOWED);\n }\n if (state.pointer.isDown) {\n if (!this.pointerDown) {\n if (!pointerPdfPos.isOnPage) {\n return;\n }\n this.startPoint = pointerPos;\n this.page = pointerPdfPos.pdfPoint.page;\n this.pointerDown = true;\n this.screenPageRect = this.pdfApi.getPageScreenRect(this.page);\n }\n if (this.startPoint && this.screenPageRect) {\n this.stampRect = getRectFromSelection(state.document, {\n x: this.startPoint.x,\n y: this.startPoint.y,\n }, {\n x: pointerPos.x,\n y: pointerPos.y,\n });\n if (this.stampRect) {\n this.stampRect.h = this.stampRect.w / this.aspectRatio;\n const lineWidth = 2 * devicePixelRatio;\n ctx.save();\n ctx.strokeStyle = this.options.viewer.general.textSelectionColor;\n ctx.fillStyle = this.options.viewer.general.textSelectionColor;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash([lineWidth, lineWidth]);\n if (this.startPoint.y > pointerPos.y) {\n this.stampRect.y = this.startPoint.y - this.stampRect.h;\n if (this.stampRect.y < this.screenPageRect.y) {\n this.stampRect.y = this.screenPageRect.y;\n this.stampRect.w = this.stampRect.h * this.aspectRatio;\n }\n }\n else {\n if (this.startPoint.y + this.stampRect.h >\n this.screenPageRect.y + this.screenPageRect.h) {\n this.stampRect.h =\n this.screenPageRect.y + this.screenPageRect.h - this.startPoint.y;\n this.stampRect.w = this.stampRect.h * this.aspectRatio;\n }\n }\n ctx.strokeRect(this.stampRect.x, this.stampRect.y, this.stampRect.w, this.stampRect.h);\n ctx.globalAlpha = 0.33;\n ctx.fillRect(this.stampRect.x, this.stampRect.y, this.stampRect.w, this.stampRect.h);\n ctx.restore();\n }\n }\n }\n else if (this.pointerDown && this.startPoint) {\n if (this.stampRect) {\n this.createStampAnnotation(this.stampRect);\n this.pointerDown = false;\n this.startPoint = null;\n this.stampRect = null;\n this.page = 0;\n this.aspectRatio = null;\n this.screenPageRect = null;\n this.remove();\n return;\n }\n }\n }\n }\n }\n close() {\n this.remove();\n }\n setStamp(stampIndex) {\n if (this.stamps.length == 0) {\n return;\n }\n if (stampIndex >= this.stamps.length) {\n stampIndex = 0;\n }\n this.options.annotation.selectedStamp = stampIndex;\n const stamp = this.stamps[stampIndex];\n // todo: handle pdf stamps\n if (stamp.aspectRatio) {\n this.aspectRatio = stamp.aspectRatio;\n return;\n }\n if (stamp.image) {\n const img = new Image();\n img.onload = () => {\n this.aspectRatio = img.width / img.height;\n };\n img.src = stamp.image;\n return;\n }\n this.pdfApi\n .getTextStampAspectRatio(stamp.text ? stamp.text : translationManager.getText(stamp.translation_key))\n .then((aspectRatio) => {\n this.aspectRatio = aspectRatio;\n });\n }\n createStampAnnotation(rect) {\n const pdfRect = this.pdfApi.transformScreenRectToPdfRect(rect, this.page);\n if (this.aspectRatio && (pdfRect.pdfW < 2 || pdfRect.pdfH < 2)) {\n switch (this.pdfApi.getRotation()) {\n case 0:\n pdfRect.pdfW = this.options.annotation.defaultStampWidth;\n pdfRect.pdfH = pdfRect.pdfW / this.aspectRatio;\n pdfRect.pdfY -= pdfRect.pdfH;\n break;\n case 90:\n pdfRect.pdfH = this.options.annotation.defaultStampWidth;\n pdfRect.pdfW = pdfRect.pdfH / this.aspectRatio;\n break;\n case 180:\n pdfRect.pdfW = this.options.annotation.defaultStampWidth;\n pdfRect.pdfH = pdfRect.pdfW / this.aspectRatio;\n pdfRect.pdfX -= pdfRect.pdfW;\n break;\n case 270:\n pdfRect.pdfH = this.options.annotation.defaultStampWidth;\n pdfRect.pdfW = pdfRect.pdfH / this.aspectRatio;\n pdfRect.pdfX -= pdfRect.pdfW;\n pdfRect.pdfY -= pdfRect.pdfH;\n break;\n default:\n break;\n }\n }\n const stampSetting = this.stamps[this.options.annotation.selectedStamp];\n if (stampSetting.pdfStampFileName) {\n this.pdfApi\n .registerPdfPage(stampSetting.pdfStampFileName, stampSetting.pageNumber)\n .then((imageId) => {\n const annotation = {\n itemType: PdfItemType.STAMP,\n imageId,\n page: pdfRect.page,\n color: this.options.annotation.colors.defaultHighlightColor,\n pdfRect,\n author: this.options.viewer.general.user,\n };\n this.pdfApi.createItem(annotation).then((annot) => {\n this.onAnnotationCreated(annot);\n });\n });\n }\n else if (stampSetting.image) {\n const imgData = imageDataUrlToUint8Array(stampSetting.image);\n this.pdfApi.registerStampImage(imgData).then((imageId) => {\n const annotation = {\n itemType: PdfItemType.STAMP,\n imageId,\n page: pdfRect.page,\n color: this.options.annotation.colors.defaultHighlightColor,\n pdfRect,\n author: this.options.viewer.general.user,\n };\n this.pdfApi.createItem(annotation).then((annot) => {\n this.onAnnotationCreated(annot);\n });\n });\n }\n else {\n let stampColor = null;\n let stampName = null;\n if (stampSetting) {\n stampColor = stampSetting.color;\n stampName = stampSetting.pdfStampName !== undefined ? stampSetting.pdfStampName : null;\n }\n const annotation = {\n itemType: PdfItemType.STAMP,\n color: this.options.annotation.colors.defaultHighlightColor,\n author: this.options.viewer.general.user,\n page: pdfRect.page,\n pdfRect,\n stampName,\n stampText: stampSetting.text\n ? stampSetting.text\n : translationManager.getText(stampSetting.translation_key),\n stampColor: stampColor != null ? stampColor : StampAnnotationColor.GREEN,\n };\n this.pdfApi.createItem(annotation).then((annot) => {\n this.onAnnotationCreated(annot);\n });\n }\n }\n}\n","import { app, h } from '../../lib/hyperapp';\nimport { translationManager } from '../../common/TranslationManager';\nimport { Toolbar } from '../../common/Toolbar';\nimport { ToolbarItemGroup } from '../../common/ToolbarItemGroup';\nimport { ToolbarButton } from '../../common/ToolbarButton';\nimport { icons } from '../../common/icons';\nimport { ToolbarSeparator } from '../../common/ToolbarSeparator';\nimport { Dropdown } from '../../common/Dropdown';\nexport const createAddStampAnnotationToolbar = (props, element) => {\n const state = {\n stamps: props.stamps,\n stampDropdownItems: [],\n selectedStamp: props.selectedStamp,\n };\n const actions = {\n setStamp: (stamp) => ($state) => {\n props.onStampChanged(stamp);\n return Object.assign(Object.assign({}, $state), { selectedStamp: stamp });\n },\n };\n const DropdownStampItem = (item) => {\n const stamp = state.stamps[item.value];\n if (stamp.thumbnail) {\n return (h(\"div\", null,\n h(\"img\", { src: stamp.thumbnail })));\n }\n // todo: handle pdf stamps\n if (stamp.name) {\n return h(\"div\", null, stamp.name);\n }\n return (h(\"div\", null, stamp.image\n ? stamp.name\n : stamp.text\n ? stamp.text\n : translationManager.getText(stamp.translation_key)));\n };\n const DropdownButton = (value) => {\n if (value === -1) {\n return (h(\"div\", { class: \"pwv-Dropdown-text\" }, translationManager.getText('annotStamp.chooseStamp')));\n }\n const stamp = state.stamps[value];\n if (stamp.thumbnail) {\n return (h(\"div\", { class: \"pwv-Dropdown-text\" },\n h(\"img\", { src: stamp.thumbnail })));\n }\n // todo: handle pdf stamps\n if (stamp.pdfStampFileName) {\n return h(\"div\", { class: \"pwv-Dropdown-text\" }, stamp.name);\n }\n return (h(\"div\", { class: \"pwv-Dropdown-text\" }, stamp.image\n ? stamp.name\n : stamp.text\n ? stamp.text\n : translationManager.getText(stamp.translation_key)));\n };\n const App = () => h(AddStampAnnotationToolbar, null);\n /* tslint:disable-next-line:max-line-length */\n const AddStampAnnotationToolbar = ({}) => ($state, $actions) => (h(Toolbar, { allowWrap: true, alignCenter: true },\n h(ToolbarItemGroup, null,\n h(Dropdown, { className: \"pwv-stampannotation-dropdown\", value: $state.selectedStamp, items: $state.stamps.map((stamp, index) => ({\n value: index,\n renderItem: DropdownStampItem,\n })), onChange: $actions.setStamp, renderButton: DropdownButton })),\n h(ToolbarItemGroup, { pushRight: true },\n h(ToolbarSeparator, null),\n h(ToolbarButton, { icon: icons.close, onClick: props.onClose }))));\n return app(state, actions, App, element);\n};\n","import { CanvasModule, CanvasModuleType } from '../CanvasModule';\nimport { AddStampAnnotationLayer } from './AddStampAnnotationLayer';\nexport class StampAnnotationModule extends CanvasModule {\n constructor() {\n super();\n this.annotationbarElement = null;\n this.toolbarElement = null;\n this.name = StampAnnotationModule.moduleInfo.name;\n this.activate = this.activate.bind(this);\n }\n onRegister() {\n this.toolbarElement = document.createElement('div');\n return {\n toolbar: this.toolbarElement,\n };\n }\n activate() {\n if (!this.canvasLayers['add']) {\n this.createCanvasLayer('add', AddStampAnnotationLayer);\n }\n else {\n this.removeCanvasLayer('add');\n }\n }\n}\nStampAnnotationModule.moduleInfo = {\n name: 'StampAnnotationModule',\n moduleType: CanvasModuleType.Tool,\n requiredFeatures: {\n annotate: true,\n fillFormFields: false,\n },\n translationKey: 'annotStamp.add',\n icon: 'stamp',\n};\n","import { CanvasLayer } from '../CanvasLayer';\nimport { PdfItemType, } from '../../pdf-viewer-api';\nimport { CursorStyle } from '../../pdf-viewer-canvas/state/viewer';\nimport { renderStickyNote } from '../../pdf-viewer-canvas/view-layers/canvasShapes';\nimport { createAddTextAnnotationToolbar } from './AddTextAnnotationToolbar';\nconst moduleLayerName = 'AddTextAnnotation';\nexport class AddTextAnnotationLayer extends CanvasLayer {\n constructor() {\n super(...arguments);\n this.colors = [];\n this.selectedColor = '';\n }\n onCreate() {\n this.setColor = this.setColor.bind(this);\n this.close = this.close.bind(this);\n this.context = this.createCanvas();\n this.colors = this.options.annotation.colors.highlightColors;\n this.selectedColor = this.options.annotation.colors.stickyNoteColor;\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n createAddTextAnnotationToolbar({\n colors: this.colors,\n selectedColor: this.selectedColor,\n onColorChanged: this.setColor,\n onClose: this.close,\n }, toolbarElement);\n this.store.viewer.beginModule(moduleLayerName);\n }\n onSave() {\n const promise = new Promise((resolve, reject) => {\n resolve();\n });\n return promise;\n }\n onRemove() {\n this.removeCanvasElements();\n this.context = null;\n /* tslint:disable-next-line:align */\n const toolbarElement = this.module.toolbarElement;\n toolbarElement.innerHTML = '';\n this.store.viewer.endModule(moduleLayerName);\n }\n render(timestamp, state) {\n if (state.viewer.modeChanged && state.viewer.selectedModuleName !== moduleLayerName) {\n this.remove();\n return;\n }\n if (this.context &&\n (state.viewer.modeChanged ||\n state.pointer.positionChanged ||\n state.pointer.action ||\n state.canvas.canvasInvalidated)) {\n const ctx = this.context;\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n const scale = state.canvas.pixelRatio * state.document.zoom;\n const s = 6 * scale;\n const h = 22 * scale;\n const rect = {\n w: 26 * scale,\n h,\n x: state.pointer.x.devicePixels - s,\n y: state.pointer.y.devicePixels - h,\n };\n let rectOnPage = false;\n for (const k in state.document.pageRects) {\n if (state.document.pageRects[k]) {\n const p = state.document.pageRects[k];\n const px2 = p.x + p.w;\n const rx2 = rect.x + rect.w;\n const py2 = p.y + p.h;\n const ry2 = rect.y + rect.h;\n if (rect.x >= p.x && rx2 <= px2 && rect.y >= p.y && ry2 <= py2) {\n rectOnPage = true;\n break;\n }\n }\n }\n if (rectOnPage) {\n if (state.pointer.type === 'mouse') {\n renderStickyNote(ctx, scale, rect, this.selectedColor, '#000000');\n this.store.viewer.setCursorStyle(CursorStyle.DEFAULT);\n }\n if (state.pointer.action === 'click') {\n rect.y = rect.y;\n this.createTextAnnotation(rect, this.selectedColor);\n this.remove();\n return;\n }\n }\n else {\n this.store.viewer.setCursorStyle(CursorStyle.NOT_ALLOWED);\n }\n }\n }\n setColor(color) {\n this.selectedColor = color;\n this.options.annotation.colors.stickyNoteColor = color;\n }\n close() {\n this.remove();\n }\n createTextAnnotation(point, color) {\n const pdfPoint = this.pdfApi.transformScreenPointToPdfPoint({\n x: point.x,\n y: point.y,\n }).pdfPoint;\n const annotation = {\n itemType: PdfItemType.TEXT,\n color,\n author: this.options.viewer.general.user,\n page: pdfPoint.page,\n isOpen: true,\n pdfRect: {\n pdfX: pdfPoint.pdfX,\n pdfY: pdfPoint.pdfY,\n pdfW: 0,\n pdfH: 0,\n page: pdfPoint.page,\n },\n };\n this.pdfApi.createItem(annotation).then((item) => {\n const annot = item;\n const annotation = this.pdfApi.getItem(annot.id);\n if (annotation) {\n annotation.popup.isOpen = true;\n this.store.annotations.updateAnnotation(annotation);\n this.store.viewer.selectPopup({ id: annot.id, focus: true });\n }\n this.onAnnotationCreated(annot);\n });\n }\n}\n","import { app, h } from '../../lib/hyperapp';\nimport { Toolbar } from '../../common/Toolbar';\nimport { ToolbarItemGroup } from '../../common/ToolbarItemGroup';\nimport { ToolbarButton } from '../../common/ToolbarButton';\nimport { icons } from '../../common/icons';\nimport { ToolbarSeparator } from '../../common/ToolbarSeparator';\nimport { ColorPicker } from '../../common/ColorPicker';\nexport const createAddTextAnnotationToolbar = (props, element) => {\n const state = {\n colors: props.colors,\n selectedColor: props.selectedColor,\n };\n const actions = {\n setColor: (color) => ($state) => {\n props.onColorChanged(color);\n return Object.assign(Object.assign({}, $state), { selectedColor: color });\n },\n };\n const App = () => h(AddTextAnnotationToolbar, null);\n const AddTextAnnotationToolbar = ({}) => ($state, $actions) => (h(Toolbar, { allowWrap: true, alignCenter: true },\n h(ToolbarItemGroup, null,\n h(ColorPicker, { colors: $state.colors, color: $state.selectedColor, icon: icons.fillColor, mode: \"buttons\", onChange: $actions.setColor })),\n h(ToolbarItemGroup, { pushRight: true },\n h(ToolbarSeparator, null),\n h(ToolbarButton, { icon: icons.close, onClick: props.onClose }))));\n return app(state, actions, App, element);\n};\n","import { CanvasModule, CanvasModuleType } from '../CanvasModule';\nimport { AddTextAnnotationLayer } from './AddTextAnnotationLayer';\nexport class TextAnnotationModule extends CanvasModule {\n constructor() {\n super();\n this.toolbarElement = null;\n this.name = TextAnnotationModule.moduleInfo.name;\n this.activate = this.activate.bind(this);\n }\n onRegister() {\n this.toolbarElement = document.createElement('div');\n return {\n toolbar: this.toolbarElement,\n };\n }\n activate() {\n if (!this.canvasLayers['add']) {\n this.createCanvasLayer('add', AddTextAnnotationLayer);\n }\n else {\n this.removeCanvasLayer('add');\n }\n }\n}\nTextAnnotationModule.moduleInfo = {\n name: 'TextAnnotationModule',\n moduleType: CanvasModuleType.Tool,\n requiredFeatures: {\n annotate: true,\n fillFormFields: false,\n },\n translationKey: 'annotText.add',\n icon: 'stickyNote',\n};\n","const isFirefox = /Firefox/i.test(navigator.userAgent);\nexport class ImageContainer {\n constructor(image) {\n this._imageBitmap = null;\n this._imageData = null;\n this._htmlCanvas = null;\n if (image.bufferView) {\n if (image.hasImageData) {\n this._imageData = new ImageData(new Uint8ClampedArray(image.bufferView), image.width, image.height);\n }\n else {\n throw new Error('Cannot create an image container of image without imageData');\n }\n image.removeImageData();\n if (!isFirefox && typeof window.createImageBitmap === 'function') {\n createImageBitmap(this._imageData).then((imageBitmap) => {\n this._imageBitmap = imageBitmap;\n });\n }\n else {\n this._htmlCanvas = document.createElement('canvas');\n this._htmlCanvas.width = image.width;\n this._htmlCanvas.height = image.height;\n const ctx = this._htmlCanvas.getContext('2d');\n ctx && ctx.putImageData(this._imageData, 0, 0);\n }\n }\n }\n get scaledImage() {\n if (this._imageBitmap) {\n return this._imageBitmap;\n }\n return this._htmlCanvas;\n }\n get imageData() {\n return this._imageData;\n }\n destroy() {\n this._imageBitmap = null;\n this._imageData = null;\n this._htmlCanvas = null;\n }\n}\n","import { PdfViewing } from '../pdf-viewing/PdfViewing';\nimport { PdfItemCategory } from './enums';\nimport { PdfViewingWrapper } from './PdfViewingWrapper';\nconst checkType = (object, typeName, methodName, optional = false) => {\n if (!optional && (object === null || typeof object !== typeName)) {\n throw new TypeError(`Method ${methodName} requires argument of type '${typeName}' but is '${typeof object}'`);\n }\n};\nconst checkLicense = (instance) => {\n if (!instance)\n throw new Error('License is not set.');\n};\nexport class PdfViewerApi {\n constructor(pdfViewerApiOptions) {\n this.eventListeners = new Map();\n this.open = this.open.bind(this);\n this.save = this.save.bind(this);\n this.pdfViewerApiOptions = pdfViewerApiOptions;\n /* iOS warns whenever an app uses resources too aggressively.\n * For Cordova this plugin redirects this warning as an event to the document.\n * When triggered flush the render cache.\n * https://www.npmjs.com/package/cordova-plugin-memory-warning\n */\n // document.addEventListener('memorywarning', this.instance.forceFlushCache, {passive: false})\n }\n /**\n *\n * Open a PDF and optionally one or more associated FDF's.\n * @param pdfFile The PDF File that should be opened.\n * @param fdfFiles A list of FDF or XFDF files associated with this PDF that should be opened.\n * @param password The password used for opening this file.\n * @param viewOptions ViewOptions.\n */\n open(pdfFile, fdfFiles, password, viewOptions, renderOptions, viewportSize) {\n checkLicense(this.instance);\n return this.instance.open(pdfFile, fdfFiles, password, viewOptions, renderOptions, viewportSize);\n }\n /**\n * Save the currently opened PDF file.\n * @param fileType Whether the file should be saved as\n * a PDF containing the document and annotations,\n * or an FDF containing ONLY the annotations.\n *\n * @returns A promise returning a memory buffer containing the saved file if resolved or an error message if rejected.\n */\n save(saveOptions) {\n checkLicense(this.instance);\n return this.instance.save(saveOptions);\n }\n /**\n * Close the currently opened PDF file.\n * @returns A promise returning nothing if resolved and an error message if rejected.\n */\n close() {\n checkLicense(this.instance);\n return this.instance.close();\n }\n /**\n * dispose the api.\n */\n destroy() {\n checkLicense(this.instance);\n this.instance.destroy();\n }\n /**\n * Registers pdf documents to use as stamp\n *\n */\n registerPdfStampFile(pdfStampFileName, data, onStampCreated) {\n checkLicense(this.instance);\n this.instance.registerPdfStampFile(pdfStampFileName, data, onStampCreated);\n }\n /**\n * Clear the rendered pages cache to free memory.\n */\n forceFlushCache() {\n checkLicense(this.instance);\n this.instance.forceFlushCache();\n }\n /**\n * Get the current maximum size of the rendered pages cache.\n * @returns The current maximum cache size in MB.\n */\n getMaxCacheSize() {\n checkLicense(this.instance);\n return this.instance.getMaxCacheSize();\n }\n /**\n * Set the maximum size of the rendered pages cache.\n * @param cacheSize The maximum cache size in MB. Default is 120 MB.\n */\n setMaxCacheSize(cacheSize) {\n checkLicense(this.instance);\n this.instance.setMaxCacheSize(cacheSize);\n }\n /**\n * Get the total page count of the opened document.\n * @returns The total number of pages of the currently opened file.\n * 0 if no document is open.\n */\n getPageCount() {\n checkLicense(this.instance);\n return this.instance.getPageCount();\n }\n /**\n * Get the page number of the first visible page.\n * @returns The number of the topmost page shown in the viewport at this moment.\n */\n getPageNumber() {\n checkLicense(this.instance);\n return this.instance.getPageNumber();\n }\n getLastVisiblePage() {\n checkLicense(this.instance);\n return this.instance.getLastVisiblePage();\n }\n getFirstVisiblePage() {\n checkLicense(this.instance);\n return this.instance.getFirstVisiblePage();\n }\n /**\n * Go to a given page.\n * @param pageNumber The number of the page to be shown in the viewport.\n */\n setPageNumber(pageNumber) {\n checkType(pageNumber, 'number', 'setPageNumber');\n checkLicense(this.instance);\n this.instance.setPageNumber(pageNumber);\n }\n /**\n * Get the viewer rotation.\n * @returns The currently used viewer rotation on all pages.\n */\n getRotation() {\n checkLicense(this.instance);\n return this.instance.getRotation();\n }\n /**\n * Set the viewer rotation.\n * NOTE: This only changes the view of the document and is not an operation on the document.\n * @param rotation The rotation to be applied on all pages (cumulative with the embedded rotation per page).\n */\n setRotation(rotation) {\n checkType(rotation, 'number', 'setRotation');\n checkLicense(this.instance);\n this.instance.setRotation(rotation);\n }\n /**\n * Get the viewer zoom.\n * @returns The currently used zoom factor.\n */\n getZoom() {\n checkLicense(this.instance);\n return this.instance.getZoom();\n }\n /**\n * Set the viewer zoom.\n * @param zoom The zoom factor as a percentage of the original size.\n */\n setZoom(zoom, location) {\n checkType(zoom, 'number', 'setZoom');\n checkLicense(this.instance);\n this.instance.setZoom(zoom, location);\n }\n /**\n * Get the maximum scroll position.\n * @returns The maximum scroll position in device pixels.\n */\n getScrollMaxPosition() {\n checkLicense(this.instance);\n return this.instance.getScrollMaxPosition();\n }\n /**\n * Get the current scroll position.\n * @returns The current scroll position in device pixels.\n */\n getScrollPosition() {\n checkLicense(this.instance);\n return this.instance.getScrollPosition();\n }\n /**\n * Set the scroll position.\n * @param pos The scroll position to be shown in the viewer.\n */\n setScrollPosition(pos) {\n checkLicense(this.instance);\n this.instance.setScrollPosition(pos);\n }\n /**\n * Jump to a given destination in the document.\n * @param destination The target destination in PDF coordinates (page origin bottom left)\n */\n goTo(destination) {\n checkLicense(this.instance);\n this.instance.goTo(destination);\n }\n /**\n * Jump ot a given viewer destination in the document\n * @param destination The target destination in viewer coordinates (page origin top left)\n */\n goToViewerDestination(destination) {\n checkLicense(this.instance);\n this.instance.goTo(destination);\n }\n /**\n * Navigate the viewport to show the given Rectangle by scrolling and zooming as little as possible.\n * @param pdfRect The target destination in PDF coordinates (page origin bottom left)\n */\n goToRectangle(rectangle) {\n checkLicense(this.instance);\n this.instance.goToRectangle(rectangle);\n }\n /**\n * Check if a document is opened\n * @returns Whether a file is opened by the viewer.\n * A file counts as open if opening it has completed successfully\n * and closing it has not started yet.\n */\n isOpen() {\n checkLicense(this.instance);\n return this.instance.getIsOpen();\n }\n /**\n * Set the page layout mode.\n * @param mode The mode to be used for arranging pages on the canvas.\n */\n setPageLayoutMode(mode) {\n checkLicense(this.instance);\n this.instance.setPageLayoutMode(mode);\n }\n /**\n * Get the current page layout mode.\n * @returns The mode that is currently used for arranging pages on the canvas.\n */\n getPageLayoutMode() {\n checkLicense(this.instance);\n return this.instance.getPageLayoutMode();\n }\n /**\n * Set the fit mode.\n * @param fitMode The mode to be used for fitting the viewport to the visible pages.\n */\n setFitMode(fitMode) {\n checkLicense(this.instance);\n this.instance.setFitMode(fitMode);\n }\n /**\n * Get the current fit mode.\n * @returns The mode that is currently used for fitting the viewport to the visible pages.\n */\n getFitMode() {\n checkLicense(this.instance);\n return this.instance.getFitMode();\n }\n /**\n * Get the size of the border shown in between pages.\n * @returns The border size in pixels at 100% zoom.\n */\n getBorderSize() {\n checkLicense(this.instance);\n return this.instance.getBorderSize();\n }\n /**\n * Set the size of the border shown in between pages.\n * @param borderSize The border size in pixels at 100% zoom.\n */\n setBorderSize(borderSize) {\n checkLicense(this.instance);\n const ret = this.instance.setBorderSize(borderSize);\n if (!ret.ok) {\n throw new Error(ret.message);\n }\n }\n /**\n * Get the sliding window size.\n * @returns The number of pages the viewer renders before and after the visible pages.\n */\n getSlidingWindowSize() {\n checkLicense(this.instance);\n return this.instance.getSlidingWindowSize();\n }\n /**\n * Set the sliding window size.\n * NOTE: Changing this value will impact caching behavior, because the sliding\n * window has priority over cache size. This means that the cache can grow beyond\n * the set cache limit if the sliding window is very large.\n * @param slidingWindowSize The number of pages the viewer renders before and after the visible pages.\n */\n setSlidingWindowSize(slidingWindowSize) {\n checkType(slidingWindowSize, 'number', 'setSlidingWindowSize');\n checkLicense(this.instance);\n const ret = this.instance.setSlidingWindowSize(slidingWindowSize);\n if (!ret.ok) {\n throw new Error(ret.message);\n }\n }\n /**\n * Suspend drawing for all actions until {@link PdfWebViewer#resumeDrawing|resumeDrawing} is called.\n */\n suspendDrawing() {\n checkLicense(this.instance);\n this.instance.suspendDrawing();\n }\n /**\n * Resume drawing if currently suspended by {@link PdfWebViewer#suspendDrawing|suspendDrawing}.\n * NOTE: previously given commands that have not yet been executed will not trigger separate render updates.\n * However, a single render update will be made once all commands before the resumeDrawing call have been executed.\n */\n resumeDrawing() {\n checkLicense(this.instance);\n this.instance.resumeDrawing();\n }\n /**\n * Draw into the canvas to update the viewport.\n * This method has to be called whenever the canvas has been invalidated or after zoom/scroll.\n * @param context The canvas context in which the viewer will render.\n */\n renderCanvas(context, options) {\n checkLicense(this.instance);\n this.instance.renderCanvas(context, options);\n }\n /**\n * Explicitly render a page with the given dimensions.\n * The width and height will be adjusted to the aspect ratio of the page, clamping it to the smaller of the two values.\n * @param pageNumber The number of the page to be rendered.\n * @param width The width of the output file.\n * @param height The height of the output file.\n * @returns A promise returning PageImage if resolved or returning an error message if rejected.\n */\n renderPage(pageNumber, width, height) {\n checkLicense(this.instance);\n return this.instance.renderPage(pageNumber, width, height);\n }\n rotatePage(pageNumber, direction) {\n checkLicense(this.instance);\n return this.instance.rotatePage(pageNumber, direction);\n }\n /**\n * Returns the size of a PDF page\n * @param pageNumber The number of the page.\n */\n getPagePdfSize(pageNumber) {\n checkLicense(this.instance);\n return this.instance.getPagePdfSize(pageNumber);\n }\n /**\n * Set whether embedded preferences for the startup viewport should be ignored\n * when opening a PDF file (first shown page, fitmode etc.).\n * @param ignore Whether the embedded preferences should be ignored.\n */\n setIgnoringPreferences(ignore) {\n checkLicense(this.instance);\n this.instance.setIgnoringPreferences(ignore);\n }\n /**\n * Get whether embedded preferences are ignored when opening a PDF file.\n * @returns Whether embedded preferences are ignored.\n */\n getIgnoringPreferences() {\n checkLicense(this.instance);\n return this.instance.getIgnoringPreferences();\n }\n /**\n * Get the product version of the viewer.\n * @returns The product version of the PDF Web Viewer.\n */\n getProductVersion() {\n return PdfViewing.Sdk.version;\n }\n /**\n * Load outlines for a given parent.\n * Can be used to call recursively on children which have descendants.\n * @param parent The parent outline item. If null then the root outline will be loaded.\n * @returns A promise with the children of the parent outline.\n */\n getOutlines(parent) {\n checkLicense(this.instance);\n return this.instance.getOutlines(parent);\n }\n /**\n * Get the text fragment located at a given position.\n * @param point The point in PDF coordinates.\n * @returns The text fragment or null if no text fragment can be found at the given point.\n */\n getTextFragmentOnPoint(point) {\n checkType(point, 'object', 'getTextFragmentOnPoint');\n checkLicense(this.instance);\n return this.instance.getTextFragmentOnPoint(point);\n }\n /**\n * Get the text selection for a word located at a given position.\n * @param point The point in PDF coordinates.\n * @returns The text selection or null if no word can be found at the given point.\n */\n getWordOnPoint(point) {\n checkType(point, 'object', 'getWordOnPoint');\n checkLicense(this.instance);\n return this.instance.getWordOnPoint(point);\n }\n /**\n * Get the text selection rectangles between the two points.\n * @param startPoint The starting point of the selection in PDF coordinates.\n * @param endPoint The end point of the selection in PDF coordinates.\n * @returns The rectangles of the text fragments contained between the two points.\n */\n getTextSelection(startPoint, endPoint) {\n checkLicense(this.instance);\n return this.instance.getTextSelection(startPoint, endPoint);\n }\n /**\n * Returns a text selection of all text within a rectangle.\n * @param startPoint The starting point of the selection in PDF coordinates.\n * @param endPoint The end point of the selection in PDF coordinates.\n * @returns The rectangles of the text fragments contained between the two points.\n */\n getRectangularTextSelection(startPoint, endPoint) {\n checkLicense(this.instance);\n return this.instance.getRectangularTextSelection(startPoint, endPoint);\n }\n /**\n * Get the text between the two points.\n * @param startPoint The starting point of the selection in PDF coordinates.\n * @param endPoint The end point of the selection in PDF coordinates.\n * @returns The string of the selected text.\n */\n getText(startPoint, endPoint) {\n checkLicense(this.instance);\n return this.instance.getText(startPoint, endPoint);\n }\n /**\n * Get the text within a rectangle.\n * @param startPoint The starting point of the selection in PDF coordinates.\n * @param endPoint The end point of the selection in PDF coordinates.\n * @returns The string of the selected text.\n */\n getTextForRectangularSelection(startPoint, endPoint) {\n checkLicense(this.instance);\n return this.instance.getTextForRectangularSelection(startPoint, endPoint);\n }\n /**\n * Get the text contained in given rectangles.\n * @param selection The rectangles in PDF coordinates.\n * @returns The string of the selected text.\n */\n // public getTextFromSelection(selection: PdfRect[]): string {\n // checkLicense(this.instance)\n // return this.instance.getTextFromSelection(selection)\n // }\n /**\n * Get the annotation located at a given point.\n * @param point The point in PDF coordinates.\n * @returns The annotation or null.\n */\n getAnnotationsOnPoint(point, onlySelectable = false) {\n checkLicense(this.instance);\n return this.instance.getAnnotationsOnPoint(point, onlySelectable);\n }\n /**\n * Get all open popups from