{"version":3,"file":"js/application.js","mappings":";;;;;;;;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;;;;;;;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACjEA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACRA;AACA;AACA;;;;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;;;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;;;;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/gCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;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;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAaA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;;AAEA;AACA;AACA;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAMA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7KA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;;ACrLA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;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;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AAGA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AAGA;AAEA;;;;;;;;;;;;;;;;;;AC9MA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACtBA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAKA;AACA;AACA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AAAA;AAAA;AAAA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAGA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;AC1GA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;ACrFA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;ACtCA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAGA;AACA;AAAA;AACA;AACA;AAIA;AAEA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;;;;;;;;;;;;;;;;;;;ACtHA;AACA;AAEA;AACA;AAEA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChGA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;ACpJA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;ACxBA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjFA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AAEA;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;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAKA;AAIA;;;;;;;;;;;;;;;;;;;;;;;;;AClDA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAGA;AAKA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;ACvIA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAGA;AAKA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAGA;AAKA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AASA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5GA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;AC7HA;AACA;AACA;AACA;AAEA;AAMA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAMA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;;;;;;;;;;;;;;;;ACxHA;AACA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;ACDA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAGA;AAKA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;ACzHA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAGA;AAKA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAGA;AAKA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;AC7FA;AACA;AAEA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAQA;AAPA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAEA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAMA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3HA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;ACnIA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9BA;AACA;AAUA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAOA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAKA;AACA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAKA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAOA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;ACzPA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;ACjIA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAIA;AAAA;AAAA;AAGA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7EA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAGA;AACA;AAEA;AACA;;AAGA;AACA;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AAAA;AAEA;AAAA;AAGA;AACA;AACA;AAAA;AAEA;AACA;AAMA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAIA;AAAA;AAAA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAEA;AACA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;AChRA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;ACPA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;ACNA;AAAA;AAeA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;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;AAnDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAOA;AAAA;AAEA;AAAA;AAAA;AAAA;AAkBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;AC7CA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAeA;AAdA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;;;;;;;;;;;;;;;;;ACjBA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACbA;AACA;AACA;AACA;AAoBA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAOA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAIA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAOA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AAAA;AAMA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAIA;AACA;AAAA;AAIA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAIA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAOA;AACA;AACA;AAAA;AAAA;AAAA;AAMA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AAEA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAKA;AAGA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAGA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAGA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAGA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAGA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAGA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAOA;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;;;;;;;;;;;;;;;;;;;;;;;;;AChwBA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;ACnEA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAKA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;AChFA;AACA;AAEA;AAWA;AAEA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAGA;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;ACpIA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvDA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;ACnGA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AC5GA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7CA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACrGA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAQA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;AC9CA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAKA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7IA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;AC5GA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAMA;AAEA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;ACnCA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAIA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;AC/HA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC1BA;AACA;AAEA;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;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC3DA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;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;AAAA;AAAA;AAAA;AAMA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC3CA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;ACdA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AC9EA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5CA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AASA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAGA;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAGA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAIA;AACA;AAAA;AAIA;AACA;AAAA;AAIA;AACA;AAAA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAIA;AACA;AAAA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;ACnMA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AACA;AAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;ACxDA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAEA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;AC3GA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AC9MA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAKA;AACA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAIA;AAMA;AAAA;AAIA;AAAA;AAMA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjGA;AACA;AACA;AAgBA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AASA;AAEA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAEA;AAEA;AAAA;AAGA;AAGA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;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;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAIA;AAAA;AAAA;AAMA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAMA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAKA;AAAA;AACA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAKA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAMA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9SA;AACA;AAcA;AAEA;AAEA;AACA;AACA;AAaA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;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;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAGA;AAEA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;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;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AACA;AAAA;AAAA;AAAA;AAMA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAKA;AACA;AAEA;AAAA;AAKA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAMA;AAKA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAQA;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChWA;AAEA;AAgBA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;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;AAAA;AAAA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAGA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAKA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAMA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;AChWA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;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;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AAGA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;ACrHA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;;;;;;;;;;;;;;;;;;;;AC/BA;AACA;AAEA;AAEA;AAEA;AAgBA;AAfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAEA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;AClDA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAQA;AAEA;;;;;;;;;;;;;;;;AC5DA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;AC7CA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;;AC9CA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpBA;AACA;AAkBA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AAEA;AACA;AACA;AACA;AAIA;AACA;AAEA;AAAA;AAEA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AAEA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAOA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAIA;AAAA;AAAA;AAMA;AAAA;AAAA;AACA;AACA;AAIA;AAKA;AAAA;AAAA;AACA;AACA;AAEA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAQA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACldA;AACA;AACA;AACA;AAaA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAUA;AATA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AAEA;;AAEA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAKA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAOA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAMA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;AC/PA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzFA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;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;AAGA;AAKA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACpJA;AACA;AAaA;AACA;AAEA;AAEA;AAEA;AAEA;AAWA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAGA;AAGA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AASA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAOA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAEA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;ACjNA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3BA;AAEA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9BA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrGA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AASA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClHA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAOA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;AClQA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClDA;AACA;AAEA;AACA;AAAA;AAAA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrBA;AAEA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AAEA;AAGA;AACA;AAAA;AAwFA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAKA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAGA;AACA;AAtMA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AACA;AAAA;AAAA;AAIA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AAAA;AAAA;AAGA;AAmHA;AAAA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;ACxOA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAuCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AA9CA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAYA;AAEA;;;;;;;;;;;;;;AC7DA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;;AAEA;AACA;AAOA;AACA;AAIA;AAAA;AAAA;AAAA;AACA;AAMA;AACA;AAGA;AACA;AAEA;AACA;AAEA;AACA;;AAEA;AACA;AAKA;AACA;AAUA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;ACvEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAIA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAGA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAEA;AACA;AAEA;AAAA;AAGA;AAMA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;ACtFA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AASA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;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;AAEA;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;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;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;ACxLA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;ACtCA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;;;;;;;;;;;;;ACVA;AAEA;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;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;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;AACA;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;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;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAAA;AACA;;AAGA;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;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;AC5XA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;AAEA;AACA;AAOA;AACA;AAGA;;AAEA;AACA;AAGA;AACA;AAKA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAWA;AACA;AAYA;AACA;AACA;AACA;AACA;AAEA;AAWA;AAGA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAMA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AC1JA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAIA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;ACvIA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAMA;;;;;;;;;;;;;;;;;;;;ACvFA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAMA;AAAA;AAAA;AAGA;AAAA;AACA;AAAA;AAAA;AAAA;AAMA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;;;;;;;;;;;;;;;;;AC3DA;AACA;AAEA;AAEA;AAAA;AAIA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AAEA;AACA;AAEA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AAKA;AACA;AACA;AAAA;AAMA;AACA;AACA;AACA;AACA;AACA;AAAA;AAMA;AACA;AACA;AAAA;AAMA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAIA;;;;;;;;;;;;;;;;;;;ACzFA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;;;;;;ACzDA;AAAA;AAEA;AAAA;AACA;AAIA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAGA;AAAA;AAEA;AAAA;AAAA;AAIA;AAAA;AAEA;AAAA;AAEA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqDA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiHA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AA2CA;AACA;AACA;AACA;AAAA;AAjNA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AA6KA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AA1PA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoDA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;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;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjQA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AAAA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAIA;AAEA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AAEA;AAEA;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;AAEA;AACA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACjHA;AACA;AAEA;;AAEA;AACA;;;;;;;;;;;;;;;ACNA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACj6BA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AACA;AACA;AAsHA;AA9HA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;;;;;;ACpIA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;ACrCA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;;;;;;;;;;;;;;;;ACLA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACjBA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAIA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAEA;;;;;;;;;;;;;;;;;;;;;;AChFA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;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;AAEA;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;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAIA;AAIA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AC7IA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAKA;AACA;AAAA;AAOA;AAEA;;;;;;;;;;;;;;;;;;;;;;ACpFA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAKA;AAGA;AAEA;;;;;;;;;;;;;;;ACjDA;AACA;;;;;;;;;;;;;;;;;;;;;ACDA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;AC1GA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACvBA;;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACZA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAEA;AAAA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAIA;AAGA;AAEA;;;;;;;;;;;;;;;;;;AC7BA;AACA;AAEA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAOA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtCA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AACA;AAAA;AACA;AAAA;AAOA;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;AC/EA;AACA;AACA;AACA;AAEA;AAiBA;AACA;AACA;AACA;AAEA;AASA;AAEA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;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;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAOA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAIA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAQA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AACA;AACA;AACA;AAAA;AAMA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;ACvPA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;AC3EA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAIA;AAAA;AAGA;AAGA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;;;;;;;;;;;;;;;;;;;;AClFA;AAEA;;AAEA;AACA;AAGA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9BA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAGA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAMA;AACA;AAAA;AAAA;AAGA;AAGA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAEA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;AC9EA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAMA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAMA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAMA;AAAA;AAAA;AAAA;AAGA;AACA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA;;;;;;;;;;;;;;;;;ACzIA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC5BA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACvEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACtBA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AAGA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AClDA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAGA;AAAA;AAAA;AAIA;AAAA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAQA;AACA;AAAA;AAAA;AAAA;AAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;;;;;;;;;;;;;;;;AChHA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;ACzDA;AAEA;AAEA;AAEA;AACA;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;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;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;AC3GA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;;AAEA;AACA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/EA;AACA;AACA;AAYA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAKA;AACA;AACA;AAEA;AACA;AAEA;AAOA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;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;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAIA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAOA;AAEA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;AC5UA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;ACjNA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;ACfA;AAEA;AAEA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAIA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAGA;AAAA;AAAA;AAKA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAMA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;;;AC/GA;AAEA;AAEA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAEA;AAAA;AAGA;AAAA;AAGA;AAIA;AAEA;;;;;;;;;;;;;;;;;;;;;ACrCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;;;;;;;;;;;;;;;;ACtBA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAGA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAIA;;;;;;;;;;;;;;;;AC1BA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAQA;;;;;;;;;;;;;;;AChBA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAGA;AAIA;;;;;;;;;;;;;;;;;;;;AClBA;AACA;;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAWA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AACA;AAvBA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAmBA;;;;;;;;;;;;;;;;;;;;;;ACnCA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAEA;AAEA;AACA;AAGA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAKA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AAAA;AAEA;AAAA;AAOA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;ACxFA;AACA;AAEA;AACA;AAAA;AAIA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAGA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;ACnBA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAQA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAOA;AACA;AAjEA;AACA;AAkEA;;;;;;;;;;;;;;;;;;;;;;;;;;;AChFA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAUA;AAEA;AAEA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAIA;AAAA;AACA;AAAA;AAKA;AAAA;AACA;AAAA;AAEA;AAAA;AAQA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAIA;AAKA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnFA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9HA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAIA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAGA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAIA;AACA;AAIA;AAAA;AAAA;AACA;AACA;AAGA;AAEA;AAEA;AACA;AACA;AACA;AAIA;AAEA;AAGA;AACA;AACA;AAAA;AAEA;AAGA;AAAA;AAEA;AAGA;AAAA;AAEA;AAIA;AAEA;AAGA;AACA;AACA;AACA;AAAA;AAEA;AAIA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAKA;AAEA;;;;;;;;;;;;;AC3MA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;;;;;;;;;;;;;;;;ACzBA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;ACxBA;AACA;AAEA;AACA;AACA;AAEA;AASA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;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;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;ACtKA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAKA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;AC7EA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;ACpFA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAKA;AAEA;;;;;;;;;;;;;;;;;;;ACpFA;AAEA;AACA;AAEA;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;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;;;;;;;;;;;;AC5CA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;ACLA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AAGA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AClDA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpBA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAEA;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;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;AC1KA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;ACtCA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAEA;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;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxCA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;AChFA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AAEA;AAEA;AAEA;AAAA;AAAA;AACA;AAOA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;AC1HA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AAAA;AACA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;;;;;;;;;AC9GA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;;;;;;;;ACtEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;;;;;;;;ACpDA;AAEA;;AAEA;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;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACnDA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAKA;AAEA;AAEA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAMA;AAEA;;;;;;;;;;;;;;;;;;;;;ACnFA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA;;;;;;;;;;;;;;;;;;;;AClDA;AAEA;AACA;AAEA;AAEA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;;AAEA;AACA;AAAA;AAAA;AACA;;AAEA;AACA;AAAA;AAAA;AACA;;AAEA;AACA;AAAA;AAAA;AACA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;ACtFA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAGA;AAAA;AAAA;AAcA;AACA;AAAA;AAGA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AA5CA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAIA;AAmCA;AAEA;;;;;;;;;;;;;;AC9DA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AACA;AAAA;AAIA;;;;;;;;;;;;;;;ACfA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAIA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAIA;AAAA;AAAA;AA4BA;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;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAxEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AAIA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AAGA;AAiDA;;;;;;;;;;;;;;;;;;;;ACvFA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAgCA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AA1CA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAIA;AAAA;AAEA;AAAA;AAAA;AAAA;AAMA;AAeA;AAEA;;;;;;;;;;;;;;;ACtDA;;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;ACvCA;AAEA;AAEA;AAEA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AAGA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;;AAEA;AACA;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAlLA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwJA;AAEA;;;;;;;;;;;;;;;AChMA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAKA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AC9FA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACnCA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AAGA;AAAA;AAQA;AAAA;AAGA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAKA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;;;;;;;;;;;;;;;;;;ACpEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAWA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAOA;AAEA;;;;;;;;;;;;;;;;;;AC/EA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAIA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAEA;AAAA;AAAA;AAMA;AACA;AAAA;AAAA;AAMA;AAEA;;;;;;;;;;;;;;AC5FA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAMA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAOA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AAIA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AACA;;AAEA;AACA;AACA;AAGA;AACA;AAAA;AAAA;;AAEA;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;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAGA;AAAA;AAAA;AAKA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAGA;AAAA;AAAA;AAMA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAIA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;ACvQA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAEA;AACA;AAAA;AAEA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAEA;AACA;AAAA;AAEA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAEA;AACA;AAAA;AAEA;AACA;AAAA;AAIA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;ACjGA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;AC1CA;AACA;AAEA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AAEA;;;;;;;;;;;;;;;;;;AC3GA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;ACxCA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACXA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;;;;;;;;;;;;;;;;;;AC1BA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AASA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAGA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;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;AAEA;AACA;AAEA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAMA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAKA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAKA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAEA;AAEA;AACA;AAEA;AAAA;AAAA;AAOA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAIA;AAAA;AAGA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;ACzMA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5CA;AACA;;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAAA;;;;;;;;;;;;;;AC1EA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAGA;AAAA;AAEA;AAAA;AAIA;AAAA;AACA;AAAA;AACA;AAAA;AAGA;AAAA;AAKA;AAEA;;;;;;;;;;;;;;;;;;;ACpCA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAgCA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AApCA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAGA;AASA;AAEA;;;;;;;;;;;;;;;;;;ACrDA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAEA;;;;;;;;;;;;;;;;;ACxBA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;;;;;;;;;;;;;;;;;;;ACvEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAIA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAKA;AAEA;;;;;;;;;;;;;;;ACjDA;AAEA;AAAA;AAAA;;;;;;;;;;;;;;;;;ACFA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAMA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;AC5CA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzCA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AAAA;AAMA;AACA;AAAA;AAkRA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAKA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAGA;AAAA;AAGA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAcA;AAAA;AAGA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AAGA;AAAA;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAzyBA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;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;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAKA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAEA;AAIA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAIA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAKA;AA0YA;AAEA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAuIA;AAEA;;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;ACr3BA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AC3CA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AC5FA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AACA;AACA;AAAA;AAEA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;ACjEA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;ACxBA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;;;;;;;;;;;;;;;;;;ACbA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAIA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;AChEA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;;;;;;;;;;;;;;;ACrHA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;AC1DA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;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;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;ACxDA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA;;;;;;;;;;;;;;;;;AC5BA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACdA;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;AAEA;AACA;AACA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AAAA;AAIA;AACA;AAEA;AACA;AAGA;AACA;AAAA;AAIA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACtFA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;ACvEA;AACA;AACA;AAEA;;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAKA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AACA;AAAA;AAAA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAGA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAGA;AAAA;AAOA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAGA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAUA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;AC1RA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxCA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;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;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAGA;;AAEA;AACA;AACA;AAEA;AAGA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AAKA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAGA;AAAA;AAAA;AAKA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AAEA;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;AACA;AACA;AACA;;AAEA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpYA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AAGA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtOA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAMA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAOA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;ACvHA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;AChEA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7GA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;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;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7GA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAGA;AAAA;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAAA;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;;AAEA;AACA;AAKA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;;AAEA;AACA;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AACA;;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAIA;AAAA;AAEA;;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAUA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtUA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACtFA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAUA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAGA;AAIA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;AChEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AASA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;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;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;;AAEA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;ACjNA;AACA;AACA;AACA;AAaA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AACA;;;;;;;;;;;;;;;;;;;;AC/JA;AACA;AACA;AACA;AAYA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;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;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AAAA;AAKA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAQA;AAAA;AAAA;AAAA;AAIA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrIA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAOA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;AC3LA;AAEA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAKA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AACA;AAAA;AAAA;AAEA;AAEA;;;;;;;;;;;;;;;;;;AC5BA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AAOA;AAAA;AANA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAOA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAKA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAMA;AAAA;AACA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AAMA;AACA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;;;;;;;;;;;;;;;ACzIA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAIA;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;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;ACrEA;AACA;AAEA;AASA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AAAA;AAGA;AAAA;AACA;AAAA;AAGA;AAAA;AASA;AAAA;AAAA;AAAA;AAIA;AAAA;AACA;AAAA;AACA;AAAA;AAIA;AAAA;AAMA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AAEA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAGA;AAAA;AAAA;AAIA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AAKA;AAGA;AACA;AAIA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAGA;AAAA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AAEA;AAEA;;;;;;;;;;;;;;;;ACxLA;AACA;AAEA;AAQA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AASA;AAAA;AACA;AAAA;AAKA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/CA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAAA;AAGA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACjCA;AACA;AAEA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAIA;AAAA;AACA;AAAA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;AC1CA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAGA;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAMA;AAEA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;ACrGA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAEA;AAKA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAIA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;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;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAKA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAQA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;AChUA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AACA;AAAA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AAAA;AAKA;AAAA;AAIA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAKA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAEA;AAEA;;;;;;;;;;;;;;;AC/TA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA;AAaA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;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;AAAA;AAAA;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;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACpHA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;AC9EA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AACA;AAAA;AAEA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;AAEA;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;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AAEA;AACA;AACA;AAIA;AACA;AACA;AAIA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AAIA;AACA;AACA;AAIA;AACA;AACA;AAEA;AAAA;AAEA;AAEA;AACA;AACA;AAEA;AAAA;AAEA;AAGA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;;;;;;;;;;;;;;;AC3SA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AAAA;AAKA;AAEA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AAAA;AAKA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAIA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAKA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;AC5JA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AAEA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;AC3BA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AAGA;AAAA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1CA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAKA;AAEA;AAAA;AAGA;AAEA;AAAA;AAEA;AAEA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAEA;AAEA;AAAA;AACA;AAEA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AAGA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AAAA;AAGA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAMA;AAIA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAOA;;;;;;;;;;;;;;;;;;;;;;;;;;AChRA;AACA;AACA;AACA;AAEA;AACA;AASA;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAIA;AACA;AAAA;AAAA;AAEA;AAAA;AAGA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;AC/EA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AAGA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAGA;AAEA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAKA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AACA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5JA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAGA;;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAUA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAIA;AACA;AACA;AACA;AAAA;AAKA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AAIA;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;AC/QA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAMA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;ACxCA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;AC3IA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACpFA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAEA;AAeA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;;;;;;;;;;;;;;;;;AC3KA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAKA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAOA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;AC7BA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;ACtEA;AAEA;AAEA;AACA;AAEA;AAEA;AAUA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAGA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9IA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAMA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAOA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;;;;;;;;;;;;;;;;;;ACpFA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;;;;;;ACxDA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA;;;;;;;;;;;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAEA;AAAA;AAEA;AAAA;AAGA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;AC5DA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpCA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAIA;AAAA;AAAA;AACA;AAAA;AA4GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAiBA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AA9LA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;;AAEA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;AAAA;AAIA;AACA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AAKA;AAAA;AAKA;AAkEA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAUA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrOA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAMA;AAAA;AALA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AADA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAKA;AACA;AAEA;;;;;;;;;;;;;;;;;AC/CA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAKA;;;;;;;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;;;;;;;;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACdA;AACA;AACA;AAWA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAGA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AAEA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AAIA;AACA;;;;;;;;;;;;;;;;;;;;ACrIA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAKA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;;;;;;;;;;;;;;;;;;AClGA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAIA;AACA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AAIA;AAIA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;AC1DA;AACA;AACA;AACA;AAEA;AAAA;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;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;AC7CA;AAEA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;;;;;;;;;;;;;;ACXA;AAEA;AAEA;AACA;AACA;AAEA;AAaA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;;;;;;;;;;;;;;ACxDA;AAEA;AAEA;AACA;AACA;AAEA;AAaA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACrCA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AChCA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACbA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAIA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;ACnDA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAKA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AACA;AAAA;AAAA;AAAA;AASA;AAAA;AAKA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;AC7HA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AAGA;AACA;AAAA;AA+CA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAzFA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAgDA;AAAA;AAEA;;;;;;;;;;;;;;;;AC5GA;AACA;AACA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAEA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AAAA;AAEA;AAAA;AAMA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;;;;;;;;;;;;;;;;;ACnEA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;;;;AC9BA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAKA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;ACnCA;AACA;AAEA;AAEA;AAAA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAWA;AACA;AAAA;AA8DA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;AAGA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAiBA;AAAA;AAAA;AACA;AAlJA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAyEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAKA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrLA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AA0WA;AACA;AA1WA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAOA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AAIA;AAIA;AAIA;AAIA;;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAOA;AAKA;AAKA;AAKA;AAKA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;;AAEA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;;AAEA;AACA;AAGA;AACA;AACA;;AAGA;AACA;AAKA;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;;AAEA;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;AACA;AACA;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAKA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AC3qBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AAAA;AAAA;AAGA;AAAA;AACA;AAAA;AAIA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAIA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;;;;;;;;;;;;;;;ACvHA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;;;;;;;;;;;;;;;;;ACbA;AACA;AACA;AACA;;AAEA;AACA;AAEA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;;AAEA;AACA;;AAeA;AACA;AAIA;AACA;AAEA;AAcA;AACA;AAEA;AACA;;AAEA;AACA;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACzFA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAQA;AACA;AAEA;AACA;AACA;AAEA;AAIA;AACA;AAEA;AACA;AACA;;;;;;;;;;;;AC9BA;;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AAMA;AAOA;AAEA;AACA;;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;ACxCA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AASA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AAEA;;AAEA;AACA;AAKA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAKA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;;;;;;;;;;;;;;ACrEA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAKA;AAQA;AAQA;AACA;AAEA;AAUA;AACA;AAIA;;;;;;;;;;;;;;ACjGA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AAOA;AACA;AACA;AACA;AAEA;AAQA;AAEA;AAMA;AACA;AAQA;AACA;;;;;;;;;;;;;;AC5CA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;;AAEA;AACA;AAQA;AACA;AAGA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;;AAEA;AACA;;AAEA;AACA;AAKA;AACA;AAKA;AACA;AACA;AACA;AACA;;AAEA;AACA;AAKA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACpEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AAGA;AACA;AACA;AACA;AAEA;AAIA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAGA;;AAEA;AACA;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC3JA;AACA;AAEA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAKA;AACA;;AAEA;AACA;AAKA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAIA;AACA;AACA;;AAEA;AACA;AAIA;AACA;AAKA;AAIA;AAGA;;AAEA;AACA;AAKA;AACA;AACA;AAEA;AAEA;AASA;AACA;;AAEA;AACA;AAEA;AAYA;;AAQA;AACA;AAOA;AACA;AACA;;;;;;;;;;;;;;;;;;ACvHA;AAEA;AACA;AAEA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAKA;AACA;AAEA;AAIA;AACA;AACA;;AAEA;AACA;AAOA;AACA;AAEA;;AAEA;AACA;AASA;AAGA;AAGA;;AAEA;AACA;AAEA;AAWA;;AASA;AACA;AAEA;AAQA;AASA;AAAA;AAAA;AAAA;AAAA;;AAEA;AACA;AAIA;AACA;AACA;AAEA;AAUA;AASA;AACA;AAEA;AAKA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACrJA;AAEA;AAAA;AAAA;AACA;AAQA;AAQA;AAEA;AAEA;AAIA;;;;;;;;;;;;;;;;;AC3BA;AACA;AAEA;AAEA;AAEA;AAEA;AAAA;AAAA;AACA;AAKA;AACA;;AAEA;AACA;AAKA;AACA;AACA;AAEA;AAEA;AAQA;AAIA;AACA;AACA;;AAEA;AACA;;AAWA;AACA;AAEA;AAOA;AACA;AAGA;;AAEA;AACA;AAOA;AACA;AACA;;;;;;;;;;;;;;ACpFA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAKA;AACA;;AAEA;AACA;AAQA;AAKA;AACA;AAKA;AAIA;AACA;;AAEA;AACA;AAEA;AAQA;AACA;AACA;AACA;AASA;AAKA;AACA;AAKA;AAIA;AAGA;AACA;AACA;;AAEA;AACA;AAKA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACzGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAGA;;;;;;;;;;;;;;;;AChCA;;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;;;;;;;;;;;;;;;;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AAIA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAlIA;AACA;AACA;AACA;AACA;AAoEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAuDA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAQA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;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;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA1UA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAoBA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAYA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAwCA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAqCA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAkFA;;;;;;;;;;;;;;ACnVA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3CA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAEA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsHA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuHA;AACA;AAEA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AA7OA;AAEA;AACA;AAEA;AAEA;AACA;AAwJA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAoEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA/SA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAgBA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AA6CA;;;;;;;;;;;;;;;;;;;;;ACpUA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AACA;AACA;AAGA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AA5GA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgGA;;;;;;;;;;;;;;;;;;;;;;;;AClHA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACrCA;AAEA;AAEA;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;AAEA;AACA;AACA;AAEA;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;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC7FA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAWA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAKA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAKA;AAAA;AAGA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;ACzGA;AACA;AAEA;AAAA;AAAA;AAAA;AAaA;AAAA;AAAA;AACA;AACA;AAAA;AAdA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAKA;AAMA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAGA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAMA;AAEA;;;;;;;;;;;;;;;;;AClEA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;;AC3DA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;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;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxDA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAIA;AAAA;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAGA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAKA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AACA;AAAA;AAMA;AAAA;AAAA;AAOA;AACA;AAAA;AAAA;AAAA;AAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;;;;;;;;;;;;;;;;;ACnIA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAUA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;AC3DA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;ACpCA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAGA;;;;;;;;;;;;;;;;;;;;ACtLA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnEA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;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;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/GA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AAAA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAGA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAMA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;AC7KA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;ACpBA;AACA;AAEA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;;;;;;;;;;;;;;;;AC9BA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;;;;;;;;;;;;;;;ACXA;AACA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAEA;AAAA;AAAA;AAMA;AAEA;;;;;;;;;;;;;;;;ACxBA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;;;;;;;;;;;;;;;;;;;ACXA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACtBA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;AC9CA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AAEA;AAMA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;ACxDA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAMA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AAAA;AAGA;AAAA;AAQA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;ACnGA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AC9BA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAEA;AAEA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;ACvIA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;AC7CA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAOA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;;;;;;;;;;;;;;;;;;;ACvHA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACtBA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;AC3BA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AACA;AACA;AAAA;AAKA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAIA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAKA;AAAA;AAAA;AAMA;AAAA;AAAA;AAQA;AAEA;;;;;;;;;;;;;;;;;AC1JA;AAEA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAGA;AACA;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACjCA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;;;;;;;;;;;;;;ACvBA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACzBA;AAEA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAKA;AACA;AACA;AAEA;AACA;AAKA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACrCA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;AC9DA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;ACvBA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;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;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAKA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AAMA;AAAA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AAKA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AAAA;AAGA;AAAA;AAAA;AAMA;AAAA;AACA;AAAA;AASA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AAEA;AAAA;AACA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAMA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA;AAEA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;ACtNA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;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;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;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;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;ACvRA;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;;;;;;;;;;;;;;;;;;ACvCA;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;;;;;;;;;;;;;;;;;;;;;;AC9BA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;ACjCA;AAEA;AAAA;AAAA;AAAA;AAEA;;;;;;;;;;;;;;;;;;;ACJA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAMA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvHA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;;AAIA;AACA;AAGA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAKA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAOA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;AChMA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;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;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAIA;AAKA;AAEA;AACA;AACA;AACA;;AAIA;AACA;AAGA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAKA;AAIA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AAGA;AACA;AACA;AACA;AAAA;AAMA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAOA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACjOA;AAEA;AAEA;AACA;AACA;AAUA;AAMA;AALA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AADA;AAEA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAKA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAOA;AAEA;;;;;;;;;;;;;;;;;ACrEA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAOA;;;;;;;;;;;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAMA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;ACtEA;AACA;AACA;AAEA;AAQA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3CA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAIA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAQA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;AC3KA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AAEA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;ACXA;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;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;AC5EA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAMA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;AC5CA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAKA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAKA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAQA;AAEA;;;;;;;;;;;;;;;;ACvIA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA;;;;;;;;;;;;;;;;ACxBA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAKA;AAEA;;;;;;;;;;;;;;;;ACpBA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBA;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;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;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;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;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAEA;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;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;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;AAAA;;;;;;;;;;;;;;;;;ACvRA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAKA;AAEA;;;;;;;;;;;;;;;ACrDA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AC5DA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAKA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;;;;AC5LA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAIA;AAAA;AACA;AAAA;AAGA;AACA;AAGA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;AC3IA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAGA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;;;;;AC1DA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;;;;;;;;;;;;;;;;;AC9FA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/GA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAAA;AAIA;AACA;AAAA;AAyDA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAEA;AAAA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAzEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAKA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAGA;AAAA;AAGA;AAAA;AAAA;AAAA;AASA;AAsBA;;;;;;;;;;;;;;;;AC5FA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;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;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;AC/DA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpBA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;AAEA;AACA;AACA;AAEA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;AClMA;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACLA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;AC3CA;AACA;AAYA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;;;;;;AChQA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAGA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;;ACnFA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAIA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;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;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;AC1DA;AACA;;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAMA;;;;;;;;;;;;;;;;;ACnBA;AACA;AACA;AAEA;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAIA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AAKA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxDA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAKA;AAAA;AAIA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;;;;;;;;;;;;;;;AC5NA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;ACxBA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;AC3EA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;AC5BA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;;;;;;;;;;;;;;;;ACZA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;;;AC7BA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACZA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAGA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;ACnCA;AACA;AAYA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAEA;;AAEA;AACA;AACA;AACA;AAGA;AACA;AAEA;AACA;AACA;AAAA;AACA;AAEA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAEA;AACA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACpIA;AAEA;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;;;;;;;;;;;;;;;;;;;;;;AC/BA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;AClCA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAuBA;AAAA;AAAA;AACA;AACA;AACA;AACA;AA1BA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAQA;AAEA;;;;;;;;;;;;;;;;;;;;;;;ACzCA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;AC1EA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;AC3CA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;AClCA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;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;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;;ACrHA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAMA;AAEA;;;;;;;;;;;;;;;;;AC3CA;AAEA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;;;;;ACnBA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAEA;AAAA;AAMA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAOA;AAEA;;;;;;;;;;;;;;;;ACzDA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AAIA;AAGA;AAEA;;;;;;;;;;;;;;;ACxCA;AACA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;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;AAAA;;AAEA;AACA;AACA;AAAA;AAAA;AACA;;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnLA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AAYA;AAAA;AAXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;;AAEA;AACA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AACA;AAAA;;AAGA;AACA;AACA;AAGA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;;AAEA;AACA;AACA;AAGA;AAEA;AACA;AAEA;AACA;;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AAGA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;ACnMA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAOA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAIA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;;;;;;;;;;;;;AC/GA;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAQA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AAEA;AAEA;AAeA;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;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;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;ACtIA;AACA;AAEA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;;;;;;;;;;;;;;;;ACnDA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;ACXA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;AChCA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAIA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AAEA;AACA;AACA;AAEA;AAEA;;;;;;;;;;;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAKA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAQA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;ACjEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAOA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAQA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAGA;AACA;AACA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACrMA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;ACvBA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AAAA;AACA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACpCA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;AChEA;AACA;AAEA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAIA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAEA;AAAA;AAEA;AAEA;AACA;AAEA;AAAA;AAEA;AAEA;AACA;AAEA;AAAA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAGA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAKA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AAAA;AAGA;AACA;AACA;AACA;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;ACzJA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;ACxDA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;ACHA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAMA;AAEA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;ACxFA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAGA;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;AAEA;AAAA;AAAA;AAEA;AAIA;AAKA;AAIA;AACA;AACA;AACA;AACA;AAGA;AAIA;AACA;AAGA;AAMA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAeA;AAEA;AACA;AAIA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AAIA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAKA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AAEA;AAIA;AACA;AAAA;AAIA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAIA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;ACxWA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;ACPA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7BA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAGA;AACA;AAAA;AAOA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACjGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;;AAEA;AACA;AACA;AAEA;AACA;AAMA;AAIA;AACA;AAGA;AACA;AAEA;AACA;AAMA;AAOA;AACA;AAKA;;AAEA;AACA;AACA;AAEA;AACA;AAKA;AAGA;AACA;AAGA;AAQA;AAEA;AACA;AAKA;AAMA;AAEA;AACA;AAKA;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;AChIA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;AC3DA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AAAA;AAQA;AAEA;;;;;;;;;;;;;;;;;;;;;AC1DA;AACA;AAEA;AAUA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;AC/CA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAIA;AAGA;AACA;AACA;AACA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;AC7CA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;ACxEA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAMA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;ACtIA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACTA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;;;;;;;;;;;;;;;;;;ACXA;AAEA;;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACrBA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;;;;;;;;;;;;;;;;AC3BA;AAEA;AAEA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAUA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AC9DA;AACA;AACA;AAEA;AASA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAKA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AACA;AAEA;AACA;AAIA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;;;;;;;;;;;;;;;;;;ACxFA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAMA;;;;;;;;;;;;;;ACrBA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAKA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AAGA;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;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAKA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;AC3QA;AACA;AACA;AAEA;AAEA;AASA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AC/DA;AACA;AACA;AAEA;AASA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;;;;;;;;;;;;;;;;ACzDA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAMA;AAEA;;;;;;;;;;;;;;;;;;;;AC/CA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAMA;AAEA;;;;;;;;;;;;;;;;;ACvDA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAOA;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AAEA;AAUA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;AC1EA;;AAEA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACpDA;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;AArBA;AA0CA;AACA;AAAA;AAmCA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AA3CA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAKA;AAcA;AAhEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAmDA;;;;;;;;;;;;;;;;;;;;AClGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoBA;AAnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;AAAA;AAGA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;;;;;;;;;;;;;;;AC5BA;AACA;AAEA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;ACrHA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AAPA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAOA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;AC1CA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;;;;;;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAOA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;AC3DA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;ACnDA;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;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AAPA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAGA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;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;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;AC5JA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AAPA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAQA;AAGA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;ACtCA;AACA;AAEA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAOA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;ACzDA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;ACnBA;;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACZA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAGA;AAAA;AAEA;AACA;AAAA;AAAA;AAKA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAMA;AAEA;;;;;;;;;;;;;;;;;;;;ACrDA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAMA;AAEA;;;;;;;;;;;;;;;AC3CA;AACA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;ACDA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;ACjCA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAIA;AACA;AACA;AACA;AAEA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;AC7CA;AACA;AACA;;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAMA;AACA;;;;;;;;;;;;;;ACpCA;AACA;;AAEA;;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;AChBA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;ACbA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAIA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAIA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;AC9MA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AAEA;AASA;AACA;AACA;AACA;AACA;AAEA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAUA;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;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;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;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;AC/MA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;AC3CA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;;;;;;;;;;;;;;;ACvBA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;;;;;;AC3CA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAWA;AAAA;AAVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjHA;AACA;AACA;AACA;AACA;AAWA;;AAEA;AACA;AACA;AACA;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWA;AAVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA;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;AAEA;;;;;;;;;;;;;;;;;;;ACnKA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AAEA;AAAA;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;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;ACxDA;AACA;;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AAEA;AAEA;;AAEA;AACA;AACA;AACA;AAgBA;AACA;AAAA;AAmFA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AA1IA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AAEA;AACA;AAAA;AACA;AAIA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAOA;AA4DA;AAAA;AA3JA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC3BA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAsGA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AA9JA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AAOA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAIA;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AA8DA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACzMA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;;;;;;;;;;;;;;;;;ACjEA;AACA;AAEA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;AClCA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;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;AAAA;AAEA;AAAA;;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;AClDA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;AChBA;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;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;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AAYA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;;;;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;AC1CA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AAEA;AAEA;;;;;;;;;;;;;;;;ACRA;AAEA;;;;;;;;;;;;;;;ACFA;;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAEA;AAAA;AAGA;AAEA;AAAA;AAGA;AACA;AAQA;AACA;AACA;AACA;AACA;AAEA;AACA;;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAEA;;;;;;;;;;;;AC7DA;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;;;;;;;;;;;;;;;AC1KA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;;;;;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;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;AAEA;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;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;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;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;;;;;;;;;;;;;;;;AC7LA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;ACrBA;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;;;;;;;;;;;;;;;;;;AC7BA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtDA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;AACA;AAAA;AAGA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AACA;AAtCA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkCA;;;;;;;;;;;;;;;;;;;;;;ACpDA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AAEA;;;;;;;;;;;;ACpDA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;ACXA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;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;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;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;AAAA;AAAA;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;AAAA;AAAA;AAAA;AACA;AACA;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;AACA;AAAA;AAAA;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;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;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;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;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;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;;;;;;;;;;;;;AC/OA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAIA;;;;;;;;;;;;;ACtBA;AAEA;;;;;;;;;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;;;;;;AChFA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAGA;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;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;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;;;;;;;;;;;;AC1KA;AACA;AACA;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;AACA;AAEA;;;;;;;;;;;;;;;;;;AC7BA;AAmEA;AA2BA;AACA;AA6CA;AAsBA;AACA;AACA;AACA;AAEA;AACA;AACA;AASA;AACA;AACA;AAQA;AACA;AACA;AA+BA;AAeA;AACA;AACA;AAyCA;AAeA;AACA;AACA;AA0DA;AAqBA;AACA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;ACzXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;ACpBA;AAEA;AAaA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;;;;;;;;;;;;;;;AC1EA;AACA;AACA;;;;;;;;;;;;;;;;ACFA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;ACbA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;AChDA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AClBA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;ACDA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDA","sources":["webpack://@fortressiq/trinity/./client/app/admin/tenants/__tests__/__snapshots__/CreateTenantButton.test.jsx.snap","webpack://@fortressiq/trinity/./client/app/admin/tenants/__tests__/__snapshots__/ManageAccount.test.jsx.snap","webpack://@fortressiq/trinity/./client/app/admin/tenants/__tests__/__snapshots__/TenantCreator.test.jsx.snap","webpack://@fortressiq/trinity/./client/app/applications/__tests__/__snapshots__/ApplicationIconCell.test.jsx.snap","webpack://@fortressiq/trinity/./client/app/client_dashboard/__tests__/__snapshots__/Details.test.jsx.snap","webpack://@fortressiq/trinity/./client/app/events/__tests__/__snapshots__/EventFilter.test.jsx.snap","webpack://@fortressiq/trinity/./client/app/instances_viewer/controls/__tests__/__snapshots__/index.jsx.snap","webpack://@fortressiq/trinity/./client/app/pdds/__tests__/__snapshots__/PddGenToast.test.jsx.snap","webpack://@fortressiq/trinity/./client/app/process_explorer/controls/__tests__/__snapshots__/ControlsBar.jsx.snap","webpack://@fortressiq/trinity/./client/app/process_explorer/controls/__tests__/__snapshots__/FlowControl.jsx.snap","webpack://@fortressiq/trinity/./client/app/process_explorer/controls/__tests__/__snapshots__/GroupsControl.jsx.snap","webpack://@fortressiq/trinity/./client/app/review/__tests__/__snapshots__/ObserverSelect.test.jsx.snap","webpack://@fortressiq/trinity/./client/app/review/__tests__/__snapshots__/Sidebar.test.jsx.snap","webpack://@fortressiq/trinity/./client/app/review/event/__tests__/__snapshots__/BoundingBox.test.jsx.snap","webpack://@fortressiq/trinity/./client/app/review/event/__tests__/__snapshots__/BoundingBoxTag.test.jsx.snap","webpack://@fortressiq/trinity/./client/app/web-applications/components/tableButtons/__tests__/__snapshots__/RulesExploreButton.text.jsx.snap","webpack://@fortressiq/trinity/./client/app/ sync ^\\.\\/.*$","webpack://@fortressiq/trinity/./client/app/App.jsx","webpack://@fortressiq/trinity/./client/app/AppRoutes.jsx","webpack://@fortressiq/trinity/./client/app/AppSidebar.jsx","webpack://@fortressiq/trinity/./client/app/AppStyles.js","webpack://@fortressiq/trinity/./client/app/CAA.jsx","webpack://@fortressiq/trinity/./client/app/ProcessBoundary/FormOverlay.jsx","webpack://@fortressiq/trinity/./client/app/ProcessBoundary/Gallery.jsx","webpack://@fortressiq/trinity/./client/app/ProcessBoundary/Sidebar.js","webpack://@fortressiq/trinity/./client/app/ProcessBoundary/Toolbar.jsx","webpack://@fortressiq/trinity/./client/app/ProcessBoundary/index.jsx","webpack://@fortressiq/trinity/./client/app/ProcessBoundary/processBoundaryToast.jsx","webpack://@fortressiq/trinity/./client/app/ProcessBoundary/styles/index.js","webpack://@fortressiq/trinity/./client/app/admin/Admin.jsx","webpack://@fortressiq/trinity/./client/app/admin/applicationList/index.jsx","webpack://@fortressiq/trinity/./client/app/admin/applicationList/subComponents/ActionsMenu.jsx","webpack://@fortressiq/trinity/./client/app/admin/applicationList/subComponents/ApplicationListForm.jsx","webpack://@fortressiq/trinity/./client/app/admin/applicationList/subComponents/ControlledApplicationInput.jsx","webpack://@fortressiq/trinity/./client/app/admin/common/constants.js","webpack://@fortressiq/trinity/./client/app/admin/domainList/index.jsx","webpack://@fortressiq/trinity/./client/app/admin/domainList/subComponents/ActionsMenu.jsx","webpack://@fortressiq/trinity/./client/app/admin/domainList/subComponents/ControlledDomainInput.jsx","webpack://@fortressiq/trinity/./client/app/admin/domainList/subComponents/DomainListForm.jsx","webpack://@fortressiq/trinity/./client/app/admin/domainList/subComponents/styles.js","webpack://@fortressiq/trinity/./client/app/admin/event_log_exports/EventLogExportList.jsx","webpack://@fortressiq/trinity/./client/app/admin/integrations/Integrations.jsx","webpack://@fortressiq/trinity/./client/app/admin/integrations/SubComponents/ActionsMenu.jsx","webpack://@fortressiq/trinity/./client/app/admin/integrations/SubComponents/IntegrationFormModal.jsx","webpack://@fortressiq/trinity/./client/app/admin/integrations/SubComponents/wrapperCSS.js","webpack://@fortressiq/trinity/./client/app/admin/integrations/helpers/handleIntegration.js","webpack://@fortressiq/trinity/./client/app/admin/tank/BatchStore.js","webpack://@fortressiq/trinity/./client/app/admin/tank/TankMonitor.jsx","webpack://@fortressiq/trinity/./client/app/admin/tank/TankStore.js","webpack://@fortressiq/trinity/./client/app/admin/tenants/CreateTenantButton.jsx","webpack://@fortressiq/trinity/./client/app/admin/tenants/ManageAccount.jsx","webpack://@fortressiq/trinity/./client/app/admin/tenants/ManageCredits/CreditsChart.jsx","webpack://@fortressiq/trinity/./client/app/admin/tenants/ManageCredits/CreditsCounts.jsx","webpack://@fortressiq/trinity/./client/app/admin/tenants/ManageCredits/CreditsFilter.jsx","webpack://@fortressiq/trinity/./client/app/admin/tenants/ManageCredits/DownloadCreditsButton.jsx","webpack://@fortressiq/trinity/./client/app/admin/tenants/ManageCredits/ManageCredits.jsx","webpack://@fortressiq/trinity/./client/app/admin/tenants/ManageCredits/UserBreakdownTable.jsx","webpack://@fortressiq/trinity/./client/app/admin/tenants/ManageCredits/constants.js","webpack://@fortressiq/trinity/./client/app/admin/tenants/ManageCredits/styles/index.js","webpack://@fortressiq/trinity/./client/app/admin/tenants/SwitchSection.jsx","webpack://@fortressiq/trinity/./client/app/admin/tenants/TenantCreator.jsx","webpack://@fortressiq/trinity/./client/app/admin/tenants/TenantEditor.jsx","webpack://@fortressiq/trinity/./client/app/admin/tenants/TenantEditorNavigation.jsx","webpack://@fortressiq/trinity/./client/app/admin/tenants/TenantList.jsx","webpack://@fortressiq/trinity/./client/app/admin/tenants/__tests__/CreateTenantButton.test.jsx","webpack://@fortressiq/trinity/./client/app/admin/tenants/__tests__/ManageAccount.test.jsx","webpack://@fortressiq/trinity/./client/app/admin/tenants/__tests__/TenantCreator.test.jsx","webpack://@fortressiq/trinity/./client/app/admin/tenants/constants.js","webpack://@fortressiq/trinity/./client/app/admin/tenants/styles/index.js","webpack://@fortressiq/trinity/./client/app/admin/users/constants.jsx","webpack://@fortressiq/trinity/./client/app/admin/users/index.jsx","webpack://@fortressiq/trinity/./client/app/admin/users/subComponents/Actions.jsx","webpack://@fortressiq/trinity/./client/app/admin/users/subComponents/KibanaPassword.jsx","webpack://@fortressiq/trinity/./client/app/admin/users/subComponents/UserEditor.jsx","webpack://@fortressiq/trinity/./client/app/applications/ActionsMenu.jsx","webpack://@fortressiq/trinity/./client/app/applications/Application/index.jsx","webpack://@fortressiq/trinity/./client/app/applications/Application/provisional/Chain.jsx","webpack://@fortressiq/trinity/./client/app/applications/Application/provisional/Form.jsx","webpack://@fortressiq/trinity/./client/app/applications/Application/provisional/Single.jsx","webpack://@fortressiq/trinity/./client/app/applications/Application/provisional/fields/Checkbox.jsx","webpack://@fortressiq/trinity/./client/app/applications/Application/provisional/fields/Number.jsx","webpack://@fortressiq/trinity/./client/app/applications/Application/provisional/fields/RadioGroup.jsx","webpack://@fortressiq/trinity/./client/app/applications/Application/provisional/fields/TextArea.jsx","webpack://@fortressiq/trinity/./client/app/applications/Application/provisional/fields/TextInput.jsx","webpack://@fortressiq/trinity/./client/app/applications/Application/provisional/fields/hooks.js","webpack://@fortressiq/trinity/./client/app/applications/Application/provisional/index.jsx","webpack://@fortressiq/trinity/./client/app/applications/Application/provisional/nGram/Overlay.jsx","webpack://@fortressiq/trinity/./client/app/applications/Application/provisional/nGram/index.jsx","webpack://@fortressiq/trinity/./client/app/applications/Application/provisional/styles/index.js","webpack://@fortressiq/trinity/./client/app/applications/Application/strategy/History.jsx","webpack://@fortressiq/trinity/./client/app/applications/Application/strategy/Promoted.jsx","webpack://@fortressiq/trinity/./client/app/applications/Application/strategy/styles/index.js","webpack://@fortressiq/trinity/./client/app/applications/Application/styles/index.js","webpack://@fortressiq/trinity/./client/app/applications/Application/utilities.js","webpack://@fortressiq/trinity/./client/app/applications/ApplicationIconCell.jsx","webpack://@fortressiq/trinity/./client/app/applications/ApplicationRegistry.jsx","webpack://@fortressiq/trinity/./client/app/applications/__tests__/ApplicationIconCell.test.jsx","webpack://@fortressiq/trinity/./client/app/butterfly/AppCircleRenderer.js","webpack://@fortressiq/trinity/./client/app/butterfly/Butterfly.jsx","webpack://@fortressiq/trinity/./client/app/butterfly/ButterflyChart.jsx","webpack://@fortressiq/trinity/./client/app/butterfly/ButterflyLinkRenderer.js","webpack://@fortressiq/trinity/./client/app/butterfly/ButterflyMainContent.jsx","webpack://@fortressiq/trinity/./client/app/butterfly/ButterflyRenderer.js","webpack://@fortressiq/trinity/./client/app/butterfly/ButterflySelect.jsx","webpack://@fortressiq/trinity/./client/app/butterfly/ButterflyTooltip.jsx","webpack://@fortressiq/trinity/./client/app/butterfly/D3Sankey.js","webpack://@fortressiq/trinity/./client/app/butterfly/NodeRenderer.js","webpack://@fortressiq/trinity/./client/app/butterfly/SidePanel.jsx","webpack://@fortressiq/trinity/./client/app/butterfly/createProcessDialogue/CreateProcessDialogue.jsx","webpack://@fortressiq/trinity/./client/app/butterfly/createProcessDialogue/CreateProcessSection.jsx","webpack://@fortressiq/trinity/./client/app/butterfly/createProcessDialogue/DraggingNode.jsx","webpack://@fortressiq/trinity/./client/app/butterfly/createProcessDialogue/sections/PathDetails.jsx","webpack://@fortressiq/trinity/./client/app/butterfly/details/StepStatistics.jsx","webpack://@fortressiq/trinity/./client/app/butterfly/stores/ButterflyProcessStore.js","webpack://@fortressiq/trinity/./client/app/butterfly/styles/index.js","webpack://@fortressiq/trinity/./client/app/butterfly/util.js","webpack://@fortressiq/trinity/./client/app/caaMarkdown.js","webpack://@fortressiq/trinity/./client/app/client_dashboard/ClientDashboardStore.js","webpack://@fortressiq/trinity/./client/app/client_dashboard/DetailCard.jsx","webpack://@fortressiq/trinity/./client/app/client_dashboard/Details.jsx","webpack://@fortressiq/trinity/./client/app/client_dashboard/__tests__/Details.test.jsx","webpack://@fortressiq/trinity/./client/app/client_dashboard/processListDashboard/AddProcessModal.jsx","webpack://@fortressiq/trinity/./client/app/client_dashboard/processListDashboard/AdminMenu.jsx","webpack://@fortressiq/trinity/./client/app/client_dashboard/processListDashboard/Dashboard.jsx","webpack://@fortressiq/trinity/./client/app/client_dashboard/processListDashboard/TagsFilter.jsx","webpack://@fortressiq/trinity/./client/app/client_dashboard/processListDashboard/constants.js","webpack://@fortressiq/trinity/./client/app/client_dashboard/processListDashboard/dashboardCard/DashboardCard.jsx","webpack://@fortressiq/trinity/./client/app/client_dashboard/processListDashboard/dashboardCard/styles.js","webpack://@fortressiq/trinity/./client/app/client_dashboard/processListDashboard/styles/index.js","webpack://@fortressiq/trinity/./client/app/client_dashboard/processViewDashboard/AppsCard/AppsCard.jsx","webpack://@fortressiq/trinity/./client/app/client_dashboard/processViewDashboard/CardListing.jsx","webpack://@fortressiq/trinity/./client/app/client_dashboard/processViewDashboard/Dashboard.jsx","webpack://@fortressiq/trinity/./client/app/client_dashboard/processViewDashboard/DashboardHeader.jsx","webpack://@fortressiq/trinity/./client/app/client_dashboard/processViewDashboard/Menus/CardMenu.jsx","webpack://@fortressiq/trinity/./client/app/client_dashboard/processViewDashboard/Menus/styles/index.js","webpack://@fortressiq/trinity/./client/app/client_dashboard/processViewDashboard/UploadsCard/UploadsCard.jsx","webpack://@fortressiq/trinity/./client/app/client_dashboard/processViewDashboard/UploadsModal/UploadsModal.jsx","webpack://@fortressiq/trinity/./client/app/client_dashboard/processViewDashboard/VisualizationCard/VisualizationCard.jsx","webpack://@fortressiq/trinity/./client/app/client_dashboard/processViewDashboard/VisualizationModal/VisualizationModal.jsx","webpack://@fortressiq/trinity/./client/app/client_dashboard/processViewDashboard/styles/cardListing.js","webpack://@fortressiq/trinity/./client/app/client_dashboard/processViewDashboard/styles/dashboard.js","webpack://@fortressiq/trinity/./client/app/client_dashboard/processViewDashboard/styles/index.js","webpack://@fortressiq/trinity/./client/app/client_dashboard/processViewDashboard/utilities/Utilities.js","webpack://@fortressiq/trinity/./client/app/cycles/ActionsMenu.jsx","webpack://@fortressiq/trinity/./client/app/cycles/FormModal.jsx","webpack://@fortressiq/trinity/./client/app/cycles/form/SignatureBuilder.jsx","webpack://@fortressiq/trinity/./client/app/cycles/form/SignatureSelect.jsx","webpack://@fortressiq/trinity/./client/app/cycles/form/index.jsx","webpack://@fortressiq/trinity/./client/app/cycles/index.jsx","webpack://@fortressiq/trinity/./client/app/cycles/styles/index.js","webpack://@fortressiq/trinity/./client/app/dashboard/Dashboard.jsx","webpack://@fortressiq/trinity/./client/app/dashboard/cards/CalendarCard.jsx","webpack://@fortressiq/trinity/./client/app/dashboard/cards/DashCard.jsx","webpack://@fortressiq/trinity/./client/app/dashboard/cards/EventStatsCard.jsx","webpack://@fortressiq/trinity/./client/app/dashboard/cards/MetricContainer.jsx","webpack://@fortressiq/trinity/./client/app/dashboard/cards/TopListingsCard.jsx","webpack://@fortressiq/trinity/./client/app/dashboard/dashboardStore.js","webpack://@fortressiq/trinity/./client/app/dashboard/sections/AddVisCard.jsx","webpack://@fortressiq/trinity/./client/app/dashboard/sections/CalendarStats.jsx","webpack://@fortressiq/trinity/./client/app/dashboard/sections/DashRow.jsx","webpack://@fortressiq/trinity/./client/app/dashboard/sections/EventStats.jsx","webpack://@fortressiq/trinity/./client/app/dfGraph/DfGraph.jsx","webpack://@fortressiq/trinity/./client/app/dfGraph/Graph.jsx","webpack://@fortressiq/trinity/./client/app/dfGraph/Marker.jsx","webpack://@fortressiq/trinity/./client/app/dfGraph/ProcessSelect.jsx","webpack://@fortressiq/trinity/./client/app/dfGraph/Sidebar/PathStatistics.jsx","webpack://@fortressiq/trinity/./client/app/dfGraph/Sidebar/PathsOverview.jsx","webpack://@fortressiq/trinity/./client/app/dfGraph/Sidebar/Sidebar.jsx","webpack://@fortressiq/trinity/./client/app/dfGraph/Sidebar/StepDetails.jsx","webpack://@fortressiq/trinity/./client/app/dfGraph/api.js","webpack://@fortressiq/trinity/./client/app/dfGraph/cacheSettings.js","webpack://@fortressiq/trinity/./client/app/dfGraph/commonPropTypes.js","webpack://@fortressiq/trinity/./client/app/dfGraph/controls/ExportProcess.jsx","webpack://@fortressiq/trinity/./client/app/dfGraph/dfgColors.js","webpack://@fortressiq/trinity/./client/app/dfGraph/edgeTypes/ElkEdge.jsx","webpack://@fortressiq/trinity/./client/app/dfGraph/nodeTypes/EndNode.jsx","webpack://@fortressiq/trinity/./client/app/dfGraph/nodeTypes/StartNode.jsx","webpack://@fortressiq/trinity/./client/app/dfGraph/nodeTypes/StepNode.jsx","webpack://@fortressiq/trinity/./client/app/dfGraph/styles/index.js","webpack://@fortressiq/trinity/./client/app/diagram_composer/DiagramComposer.jsx","webpack://@fortressiq/trinity/./client/app/diagram_composer/DiagramComposerEvents.js","webpack://@fortressiq/trinity/./client/app/diagram_composer/config/config_halo.js","webpack://@fortressiq/trinity/./client/app/diagram_composer/config/config_selection.js","webpack://@fortressiq/trinity/./client/app/diagram_composer/config/config_shapes.js","webpack://@fortressiq/trinity/./client/app/diagram_composer/controlsBar/ControlsBar.jsx","webpack://@fortressiq/trinity/./client/app/diagram_composer/controlsBar/SaveModal.jsx","webpack://@fortressiq/trinity/./client/app/diagram_composer/controlsBar/generatePdd.js","webpack://@fortressiq/trinity/./client/app/diagram_composer/diagramInspector/DiagramInspector.jsx","webpack://@fortressiq/trinity/./client/app/diagram_composer/leftPanel/DecisionMenuItem.jsx","webpack://@fortressiq/trinity/./client/app/diagram_composer/leftPanel/GroupMenuItem.jsx","webpack://@fortressiq/trinity/./client/app/diagram_composer/leftPanel/LeftPanel.jsx","webpack://@fortressiq/trinity/./client/app/diagram_composer/leftPanel/ProcessMenuItem.jsx","webpack://@fortressiq/trinity/./client/app/diagram_composer/shape_defs/Rectangle.js","webpack://@fortressiq/trinity/./client/app/diagram_composer/store/DiagramComposerStore.js","webpack://@fortressiq/trinity/./client/app/diagram_composer/utils.js","webpack://@fortressiq/trinity/./client/app/events/EventColumns.js","webpack://@fortressiq/trinity/./client/app/events/EventContext.jsx","webpack://@fortressiq/trinity/./client/app/events/EventDeleteConfirm.jsx","webpack://@fortressiq/trinity/./client/app/events/EventDetails.jsx","webpack://@fortressiq/trinity/./client/app/events/EventExportConfirm.jsx","webpack://@fortressiq/trinity/./client/app/events/EventFilter.jsx","webpack://@fortressiq/trinity/./client/app/events/EventList.jsx","webpack://@fortressiq/trinity/./client/app/events/Events.jsx","webpack://@fortressiq/trinity/./client/app/events/Export/index.jsx","webpack://@fortressiq/trinity/./client/app/events/FilteredEvents.jsx","webpack://@fortressiq/trinity/./client/app/events/ObserversOverlay/index.jsx","webpack://@fortressiq/trinity/./client/app/events/UploadsModal/UploadsModal.jsx","webpack://@fortressiq/trinity/./client/app/events/__tests__/EventFilter.test.jsx","webpack://@fortressiq/trinity/./client/app/events/fetchEventCount.js","webpack://@fortressiq/trinity/./client/app/events/styles/index.js","webpack://@fortressiq/trinity/./client/app/header/Header.jsx","webpack://@fortressiq/trinity/./client/app/header/HeaderContext.jsx","webpack://@fortressiq/trinity/./client/app/header/styles/index.js","webpack://@fortressiq/trinity/./client/app/inspectors/DecisionNoEdit.jsx","webpack://@fortressiq/trinity/./client/app/inspectors/EditDecisionInPlace.jsx","webpack://@fortressiq/trinity/./client/app/inspectors/EditDiagramNode.jsx","webpack://@fortressiq/trinity/./client/app/instances_viewer/AnnotationControls.jsx","webpack://@fortressiq/trinity/./client/app/instances_viewer/AnnotationTopBar.jsx","webpack://@fortressiq/trinity/./client/app/instances_viewer/Constants.js","webpack://@fortressiq/trinity/./client/app/instances_viewer/EventDetailBar.jsx","webpack://@fortressiq/trinity/./client/app/instances_viewer/ExportDropdown.jsx","webpack://@fortressiq/trinity/./client/app/instances_viewer/InstancesViewer.jsx","webpack://@fortressiq/trinity/./client/app/instances_viewer/ProcessControls.jsx","webpack://@fortressiq/trinity/./client/app/instances_viewer/ProcessModal.jsx","webpack://@fortressiq/trinity/./client/app/instances_viewer/Signature.jsx","webpack://@fortressiq/trinity/./client/app/instances_viewer/SignatureDetailsBar.jsx","webpack://@fortressiq/trinity/./client/app/instances_viewer/controls/AnnotateButton.jsx","webpack://@fortressiq/trinity/./client/app/instances_viewer/controls/EventFilter.jsx","webpack://@fortressiq/trinity/./client/app/instances_viewer/controls/InstancesFilter.jsx","webpack://@fortressiq/trinity/./client/app/instances_viewer/controls/MachineFilter.jsx","webpack://@fortressiq/trinity/./client/app/instances_viewer/controls/PathFilter.jsx","webpack://@fortressiq/trinity/./client/app/instances_viewer/controls/PlaybackControls.jsx","webpack://@fortressiq/trinity/./client/app/instances_viewer/controls/__tests__/index.jsx","webpack://@fortressiq/trinity/./client/app/instances_viewer/dataUtils.js","webpack://@fortressiq/trinity/./client/app/instances_viewer/styles/index.js","webpack://@fortressiq/trinity/./client/app/instances_viewer/validationHooks.jsx","webpack://@fortressiq/trinity/./client/app/mining/ImportSuccess.jsx","webpack://@fortressiq/trinity/./client/app/mining/MiningRunList.jsx","webpack://@fortressiq/trinity/./client/app/mining/ProcessesTable.jsx","webpack://@fortressiq/trinity/./client/app/mining/form/AdvancedForm.jsx","webpack://@fortressiq/trinity/./client/app/mining/form/BasicForm.jsx","webpack://@fortressiq/trinity/./client/app/mining/form/MiningRunForms.jsx","webpack://@fortressiq/trinity/./client/app/mining/form/MiningRunModal.jsx","webpack://@fortressiq/trinity/./client/app/mining/form/RecipesForm.jsx","webpack://@fortressiq/trinity/./client/app/mining/form/ReportForm.jsx","webpack://@fortressiq/trinity/./client/app/mining/form/helpers.js","webpack://@fortressiq/trinity/./client/app/mining/form/styles/index.js","webpack://@fortressiq/trinity/./client/app/mining/form/subComponents/AdvancedMiningParamFields.jsx","webpack://@fortressiq/trinity/./client/app/mining/form/subComponents/FormFooter.jsx","webpack://@fortressiq/trinity/./client/app/mining/form/subComponents/MustIncludesGroupsModal.jsx","webpack://@fortressiq/trinity/./client/app/mining/form/subComponents/NestedSignaturesBuilder/NestedSignaturesBuilder.jsx","webpack://@fortressiq/trinity/./client/app/mining/form/subComponents/NestedSignaturesBuilder/RecursiveSignaturesGroup.jsx","webpack://@fortressiq/trinity/./client/app/mining/form/subComponents/NestedSignaturesBuilder/SignatureForm.jsx","webpack://@fortressiq/trinity/./client/app/mining/form/subComponents/SignatureBuilder.jsx","webpack://@fortressiq/trinity/./client/app/mining/miningRunImportSuccess.jsx","webpack://@fortressiq/trinity/./client/app/mining/styles/index.js","webpack://@fortressiq/trinity/./client/app/mining/tableComponents/ActionsMenu.jsx","webpack://@fortressiq/trinity/./client/app/mining/tableComponents/MiningFilter.jsx","webpack://@fortressiq/trinity/./client/app/mining/tableComponents/MiningRunDetails.jsx","webpack://@fortressiq/trinity/./client/app/mining/tableComponents/NestedSignatureDetails.jsx","webpack://@fortressiq/trinity/./client/app/mining/tableComponents/miningRunDetailsStyles.js","webpack://@fortressiq/trinity/./client/app/noAccess/NoAccess.jsx","webpack://@fortressiq/trinity/./client/app/observers/ConfigureModal/AppList.jsx","webpack://@fortressiq/trinity/./client/app/observers/ConfigureModal/AppListInput.jsx","webpack://@fortressiq/trinity/./client/app/observers/ConfigureModal/Constants.js","webpack://@fortressiq/trinity/./client/app/observers/ConfigureModal/index.jsx","webpack://@fortressiq/trinity/./client/app/observers/ConfigureModal/styles/index.js","webpack://@fortressiq/trinity/./client/app/observers/Observers.jsx","webpack://@fortressiq/trinity/./client/app/observers/common/Metric.jsx","webpack://@fortressiq/trinity/./client/app/observers/common/Util.js","webpack://@fortressiq/trinity/./client/app/observers/common/downloadCSV.js","webpack://@fortressiq/trinity/./client/app/observers/styles/index.js","webpack://@fortressiq/trinity/./client/app/observers/subComponents/ActionsMenu.jsx","webpack://@fortressiq/trinity/./client/app/observers/subComponents/CaptureButtons.jsx","webpack://@fortressiq/trinity/./client/app/observers/subComponents/DataMetricsCards.jsx","webpack://@fortressiq/trinity/./client/app/observers/subComponents/FirstDetected.jsx","webpack://@fortressiq/trinity/./client/app/observers/subComponents/LastDetected.jsx","webpack://@fortressiq/trinity/./client/app/observers/subComponents/MiniSparkByte.jsx","webpack://@fortressiq/trinity/./client/app/observers/subComponents/MiniSparkEvent.jsx","webpack://@fortressiq/trinity/./client/app/observers/viewer/ObserverViewer.jsx","webpack://@fortressiq/trinity/./client/app/observers/viewer/sections/EventsChart.jsx","webpack://@fortressiq/trinity/./client/app/observers/viewer/sections/MetadataTable.jsx","webpack://@fortressiq/trinity/./client/app/pdds/ActionsContainer.jsx","webpack://@fortressiq/trinity/./client/app/pdds/CoeForm/CoeForm.jsx","webpack://@fortressiq/trinity/./client/app/pdds/CoeForm/FormFooter.jsx","webpack://@fortressiq/trinity/./client/app/pdds/CoeForm/FormPage.jsx","webpack://@fortressiq/trinity/./client/app/pdds/CoeForm/coeApis.js","webpack://@fortressiq/trinity/./client/app/pdds/CoeForm/formPages.js","webpack://@fortressiq/trinity/./client/app/pdds/OpportunitySubmittedDialogue.jsx","webpack://@fortressiq/trinity/./client/app/pdds/PddGenToast.jsx","webpack://@fortressiq/trinity/./client/app/pdds/PddList.jsx","webpack://@fortressiq/trinity/./client/app/pdds/PddListCells.jsx","webpack://@fortressiq/trinity/./client/app/pdds/__tests__/PddGenToast.test.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/GroupsModal/EditGroupForm.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/GroupsModal/GroupsModal.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/GroupsModal/NewGroupForm.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/GroupsModal/common/GroupForm.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/ProcessExplorer.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/ProcessExplorerContainer.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/ProcessExplorerHeader.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/ProcessSelect.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/common/util.js","webpack://@fortressiq/trinity/./client/app/process_explorer/controls/ControlsBar.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/controls/FlowControl.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/controls/GroupsControl.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/controls/NewProcessForm.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/controls/SubprocessControl.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/controls/__tests__/ControlsBar.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/controls/__tests__/FlowControl.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/controls/__tests__/GroupsControl.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/controls/styles/controlsBar.js","webpack://@fortressiq/trinity/./client/app/process_explorer/controls/styles/flowControl.js","webpack://@fortressiq/trinity/./client/app/process_explorer/controls/styles/groupsControl.js","webpack://@fortressiq/trinity/./client/app/process_explorer/details/stepDetails/ActivityControlPanel.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/details/stepDetails/EditDecision.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/details/stepDetails/EditDecisionForm.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/details/stepDetails/NodeControls.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/details/stepDetails/NodeInspector.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/DraggingNode.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/ProcessExplorationDiagram.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/ProcessExplorerTree.js","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/SidePanel.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/common/constants.js","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/renderers/BaseNodeRenderer.js","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/renderers/BuildGroupRenderer.js","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/renderers/DropShadowRenderer.js","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/renderers/FlowRenderer.js","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/renderers/GroupRenderer.js","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/renderers/LabelRenderer.js","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/renderers/LinkRenderer.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/renderers/NodeRenderer.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/renderers/nodes/ActivityNode.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/renderers/nodes/CollapsedNode.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/renderers/nodes/DecisionNode.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/renderers/nodes/EndNode.js","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/renderers/nodes/sections/ActionListRenderer.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/styles/index.js","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/utils.js","webpack://@fortressiq/trinity/./client/app/process_explorer/stores/GroupsStore.js","webpack://@fortressiq/trinity/./client/app/process_explorer/stores/__tests__/GroupStore.test.js","webpack://@fortressiq/trinity/./client/app/process_explorer/stores/processExplorerStore.js","webpack://@fortressiq/trinity/./client/app/process_explorer/stores/subprocessStore.js","webpack://@fortressiq/trinity/./client/app/process_explorer/styles/index.js","webpack://@fortressiq/trinity/./client/app/process_explorer/styles/subprocessModal.js","webpack://@fortressiq/trinity/./client/app/process_explorer/subprocessModal/CreateSubprocessDialogue.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/subprocessModal/SavedSubprocessDialogue.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/subprocessModal/SubprocessModal.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/zoomControls/ZoomControls.jsx","webpack://@fortressiq/trinity/./client/app/process_explorer/zoomControls/styles/index.js","webpack://@fortressiq/trinity/./client/app/processes/ActionsMenu.jsx","webpack://@fortressiq/trinity/./client/app/processes/Processes.jsx","webpack://@fortressiq/trinity/./client/app/processes/RatingTag.jsx","webpack://@fortressiq/trinity/./client/app/processes/StateManager.jsx","webpack://@fortressiq/trinity/./client/app/processes/getProcessesColumns.jsx","webpack://@fortressiq/trinity/./client/app/processes/utils.js","webpack://@fortressiq/trinity/./client/app/processes/viewer/FlowGraph.jsx","webpack://@fortressiq/trinity/./client/app/processes/viewer/GraphProcess.jsx","webpack://@fortressiq/trinity/./client/app/processes/viewer/ProcessViewerContainer.jsx","webpack://@fortressiq/trinity/./client/app/processes/viewer/components/ObserverDetail.jsx","webpack://@fortressiq/trinity/./client/app/processes/viewer/components/ProcessDashCard.jsx","webpack://@fortressiq/trinity/./client/app/processes/viewer/components/RunDetail.jsx","webpack://@fortressiq/trinity/./client/app/processes/viewer/components/TooltipButton.jsx","webpack://@fortressiq/trinity/./client/app/processes/viewer/components/styles/index.js","webpack://@fortressiq/trinity/./client/app/processes/viewer/sections/Overview.jsx","webpack://@fortressiq/trinity/./client/app/processes/viewer/sections/ProcessHeader.jsx","webpack://@fortressiq/trinity/./client/app/processes/viewer/sections/RunDetails.jsx","webpack://@fortressiq/trinity/./client/app/processes/viewer/sections/RunDetailsWrapper.jsx","webpack://@fortressiq/trinity/./client/app/processes/viewer/sections/ToolbarActions.jsx","webpack://@fortressiq/trinity/./client/app/processes/viewer/sections/TopSignaturesTable.jsx","webpack://@fortressiq/trinity/./client/app/processes/viewer/sections/UserMetadata.jsx","webpack://@fortressiq/trinity/./client/app/processes/viewer/styles/index.js","webpack://@fortressiq/trinity/./client/app/review/ObserverSelect.jsx","webpack://@fortressiq/trinity/./client/app/review/Review.jsx","webpack://@fortressiq/trinity/./client/app/review/ReviewHeader.jsx","webpack://@fortressiq/trinity/./client/app/review/Sidebar.jsx","webpack://@fortressiq/trinity/./client/app/review/__tests__/ObserverSelect.test.jsx","webpack://@fortressiq/trinity/./client/app/review/__tests__/Sidebar.test.jsx","webpack://@fortressiq/trinity/./client/app/review/event/BoundingBox.jsx","webpack://@fortressiq/trinity/./client/app/review/event/BoundingBoxTag.jsx","webpack://@fortressiq/trinity/./client/app/review/event/Event.jsx","webpack://@fortressiq/trinity/./client/app/review/event/EventContext.jsx","webpack://@fortressiq/trinity/./client/app/review/event/__tests__/BoundingBox.test.jsx","webpack://@fortressiq/trinity/./client/app/review/event/__tests__/BoundingBoxTag.test.jsx","webpack://@fortressiq/trinity/./client/app/roles/Roles.jsx","webpack://@fortressiq/trinity/./client/app/sandbox/Sandbox.jsx","webpack://@fortressiq/trinity/./client/app/screens/list/ScreenList.jsx","webpack://@fortressiq/trinity/./client/app/screens/viewer/EventGroup.jsx","webpack://@fortressiq/trinity/./client/app/screens/viewer/EventGroupRow.jsx","webpack://@fortressiq/trinity/./client/app/screens/viewer/EventGroups.jsx","webpack://@fortressiq/trinity/./client/app/screens/viewer/EventSlide.jsx","webpack://@fortressiq/trinity/./client/app/screens/viewer/InactiveEventGroup.jsx","webpack://@fortressiq/trinity/./client/app/screens/viewer/ScreenViewer.jsx","webpack://@fortressiq/trinity/./client/app/screens/viewer/ScreenViewerDrawer.jsx","webpack://@fortressiq/trinity/./client/app/screens/viewer/ScreenViewerHeader.jsx","webpack://@fortressiq/trinity/./client/app/screens/viewer/common.js","webpack://@fortressiq/trinity/./client/app/screens/viewer/controls/ControlHelpers.jsx","webpack://@fortressiq/trinity/./client/app/screens/viewer/controls/Controls.jsx","webpack://@fortressiq/trinity/./client/app/screens/viewer/controls/EventGroupNav.jsx","webpack://@fortressiq/trinity/./client/app/screens/viewer/controls/EventMoveSelector.jsx","webpack://@fortressiq/trinity/./client/app/screens/viewer/controls/EventSelection.jsx","webpack://@fortressiq/trinity/./client/app/screens/viewer/controls/Minimap.jsx","webpack://@fortressiq/trinity/./client/app/screens/viewer/controls/ScreenViewerSettings.jsx","webpack://@fortressiq/trinity/./client/app/screens/viewer/styles/index.js","webpack://@fortressiq/trinity/./client/app/screenshot/ScreenshotViewer.jsx","webpack://@fortressiq/trinity/./client/app/signature_service_jobs/ParamsColumn.jsx","webpack://@fortressiq/trinity/./client/app/signature_service_jobs/SignatureServiceJobList.jsx","webpack://@fortressiq/trinity/./client/app/status/Status.jsx","webpack://@fortressiq/trinity/./client/app/support/Support.jsx","webpack://@fortressiq/trinity/./client/app/templates/TemplateCreator.jsx","webpack://@fortressiq/trinity/./client/app/templates/TemplateList.jsx","webpack://@fortressiq/trinity/./client/app/topNavHelp/TopNavHelp.jsx","webpack://@fortressiq/trinity/./client/app/topNavHelp/helpTips.js","webpack://@fortressiq/trinity/./client/app/user_notifications/UserNotifications.jsx","webpack://@fortressiq/trinity/./client/app/web-applications/ApplicationList.jsx","webpack://@fortressiq/trinity/./client/app/web-applications/Constants.js","webpack://@fortressiq/trinity/./client/app/web-applications/CreateWebApplicationModal.jsx","webpack://@fortressiq/trinity/./client/app/web-applications/TitleGroupList.jsx","webpack://@fortressiq/trinity/./client/app/web-applications/WebApplications.jsx","webpack://@fortressiq/trinity/./client/app/web-applications/__tests__/ApplicationList.test.jsx","webpack://@fortressiq/trinity/./client/app/web-applications/components/ApplicationsTableActions.jsx","webpack://@fortressiq/trinity/./client/app/web-applications/components/ErrorMsg.jsx","webpack://@fortressiq/trinity/./client/app/web-applications/components/PanelTitle.jsx","webpack://@fortressiq/trinity/./client/app/web-applications/components/WebApplicationForm.jsx","webpack://@fortressiq/trinity/./client/app/web-applications/components/tableButtons/RulesDeleteButton.jsx","webpack://@fortressiq/trinity/./client/app/web-applications/components/tableButtons/RulesEditButton.jsx","webpack://@fortressiq/trinity/./client/app/web-applications/components/tableButtons/RulesExploreButton.jsx","webpack://@fortressiq/trinity/./client/app/web-applications/components/tableButtons/RulesRefreshButton.jsx","webpack://@fortressiq/trinity/./client/app/web-applications/components/tableButtons/UnclaimedExploreLink.jsx","webpack://@fortressiq/trinity/./client/app/web-applications/components/tableButtons/__tests__/RulesExploreButton.text.jsx","webpack://@fortressiq/trinity/./client/app/web-applications/reducers/Actions.js","webpack://@fortressiq/trinity/./client/app/web-applications/reducers/UnclaimedEventsReducer.js","webpack://@fortressiq/trinity/./client/app/web-applications/reducers/WebApplicationsReducer.js","webpack://@fortressiq/trinity/./client/app/web-applications/styles/index.js","webpack://@fortressiq/trinity/./client/components/404/NotFound.jsx","webpack://@fortressiq/trinity/./client/components/ClickOutside.jsx","webpack://@fortressiq/trinity/./client/components/Comment/Comment.jsx","webpack://@fortressiq/trinity/./client/components/DisabledScreenshot/DisabledScreenshot.jsx","webpack://@fortressiq/trinity/./client/components/DisabledScreenshot/styles/index.js","webpack://@fortressiq/trinity/./client/components/EventTimeline/Context.jsx","webpack://@fortressiq/trinity/./client/components/EventTimeline/EventTimeline.jsx","webpack://@fortressiq/trinity/./client/components/EventTimeline/Slide.jsx","webpack://@fortressiq/trinity/./client/components/EventTimeline/SlideDetails.jsx","webpack://@fortressiq/trinity/./client/components/EventTimeline/Slider.jsx","webpack://@fortressiq/trinity/./client/components/EventTimeline/styles/index.js","webpack://@fortressiq/trinity/./client/components/ExportButton/ExportButton.jsx","webpack://@fortressiq/trinity/./client/components/ExportButton/ExportMenuItem.jsx","webpack://@fortressiq/trinity/./client/components/ExportButton/Modal.jsx","webpack://@fortressiq/trinity/./client/components/ExportButton/exportTypes.js","webpack://@fortressiq/trinity/./client/components/FavoriteToggle/FavoriteToggle.jsx","webpack://@fortressiq/trinity/./client/components/FileDrop/FileDrop.jsx","webpack://@fortressiq/trinity/./client/components/IntegrationsDropdown/index.jsx","webpack://@fortressiq/trinity/./client/components/LoadingContainer.jsx","webpack://@fortressiq/trinity/./client/components/MaintenanceBanner/index.jsx","webpack://@fortressiq/trinity/./client/components/PanelMetrics/PanelMetrics.jsx","webpack://@fortressiq/trinity/./client/components/SidebarMenu/MenuItem.jsx","webpack://@fortressiq/trinity/./client/components/SidebarMenu/Sidebar.jsx","webpack://@fortressiq/trinity/./client/components/SidebarMenu/SubMenu.jsx","webpack://@fortressiq/trinity/./client/components/SidebarMenu/SubMenuItem.jsx","webpack://@fortressiq/trinity/./client/components/SidebarMenu/index.jsx","webpack://@fortressiq/trinity/./client/components/SidebarMenu/styles/index.js","webpack://@fortressiq/trinity/./client/components/StatusBadge/StatusBadge.jsx","webpack://@fortressiq/trinity/./client/components/TrackedRoute/TrackedRoute.jsx","webpack://@fortressiq/trinity/./client/components/TrinityTable/ActionMenu/ActionMenu.jsx","webpack://@fortressiq/trinity/./client/components/TrinityTable/EditableCell.jsx","webpack://@fortressiq/trinity/./client/components/TrinityTable/FiltersControls/Autocomplete.jsx","webpack://@fortressiq/trinity/./client/components/TrinityTable/FiltersControls/Filter.jsx","webpack://@fortressiq/trinity/./client/components/TrinityTable/FiltersControls/FiltersControls.jsx","webpack://@fortressiq/trinity/./client/components/TrinityTable/FiltersControls/constants.js","webpack://@fortressiq/trinity/./client/components/TrinityTable/HideColumnControls/HideColumnControls.jsx","webpack://@fortressiq/trinity/./client/components/TrinityTable/HideColumnControls/styles/index.js","webpack://@fortressiq/trinity/./client/components/TrinityTable/index.jsx","webpack://@fortressiq/trinity/./client/components/TrinityTable/styles/index.js","webpack://@fortressiq/trinity/./client/components/WindowFocusHandler/WindowFocusHandler.jsx","webpack://@fortressiq/trinity/./client/components/actioncable-provider/index.jsx","webpack://@fortressiq/trinity/./client/components/applicationIcon/ApplicationIconD3.js","webpack://@fortressiq/trinity/./client/components/can/Can.jsx","webpack://@fortressiq/trinity/./client/components/cards/public/MetricCardBigText.jsx","webpack://@fortressiq/trinity/./client/components/cards/public/PieMetricCard.jsx","webpack://@fortressiq/trinity/./client/components/cards/public/SparkChart.jsx","webpack://@fortressiq/trinity/./client/components/configureObserver/AllowBlockListSection.jsx","webpack://@fortressiq/trinity/./client/components/configureObserver/ConfigureObserver.jsx","webpack://@fortressiq/trinity/./client/components/configureObserver/Constants.js","webpack://@fortressiq/trinity/./client/components/configureObserver/styles/index.js","webpack://@fortressiq/trinity/./client/components/configureObserver/utils.js","webpack://@fortressiq/trinity/./client/components/containers/FlexContainer.jsx","webpack://@fortressiq/trinity/./client/components/detailsSidePanel/SidePanel.jsx","webpack://@fortressiq/trinity/./client/components/detailsSidePanel/applications/viz/ProcessTime.jsx","webpack://@fortressiq/trinity/./client/components/detailsSidePanel/miningRun/MiningRun.jsx","webpack://@fortressiq/trinity/./client/components/detailsSidePanel/pathStatistics/Bar.jsx","webpack://@fortressiq/trinity/./client/components/detailsSidePanel/pathStatistics/PathStatistics.jsx","webpack://@fortressiq/trinity/./client/components/detailsSidePanel/pathStatistics/viz/PathsByDuration.jsx","webpack://@fortressiq/trinity/./client/components/detailsSidePanel/pathStatistics/viz/PathsByInstances.jsx","webpack://@fortressiq/trinity/./client/components/detailsSidePanel/processOverview/ApplicationSegment.jsx","webpack://@fortressiq/trinity/./client/components/detailsSidePanel/processOverview/Stats.jsx","webpack://@fortressiq/trinity/./client/components/detailsSidePanel/processOverview/StepsByApplication.jsx","webpack://@fortressiq/trinity/./client/components/detailsSidePanel/processOverview/viz/StepsByApplication.jsx","webpack://@fortressiq/trinity/./client/components/detailsSidePanel/styles/index.js","webpack://@fortressiq/trinity/./client/components/dragAndDrop/SVGDropZone.jsx","webpack://@fortressiq/trinity/./client/components/dragAndDrop/SVGDropZoneStore.js","webpack://@fortressiq/trinity/./client/components/dragAndDrop/sourceTypes.js","webpack://@fortressiq/trinity/./client/components/filterBreadcrumbs/FilterBreadcrumbs.jsx","webpack://@fortressiq/trinity/./client/components/flash/flashHOC.jsx","webpack://@fortressiq/trinity/./client/components/form/AsyncSelect.jsx","webpack://@fortressiq/trinity/./client/components/form/ControlledCheckbox.jsx","webpack://@fortressiq/trinity/./client/components/form/ControlledQueryBuilder.jsx","webpack://@fortressiq/trinity/./client/components/form/ControlledRadioGroup.jsx","webpack://@fortressiq/trinity/./client/components/form/ControlledRangePicker.jsx","webpack://@fortressiq/trinity/./client/components/form/ControlledSelect.jsx","webpack://@fortressiq/trinity/./client/components/form/ControlledSwitch.jsx","webpack://@fortressiq/trinity/./client/components/form/FieldWrapper.jsx","webpack://@fortressiq/trinity/./client/components/form/helpers/constructApplicationOptions.js","webpack://@fortressiq/trinity/./client/components/form/helpers/uniqueOptionsByDate.js","webpack://@fortressiq/trinity/./client/components/form/styles/index.js","webpack://@fortressiq/trinity/./client/components/headers/FixedHeader.jsx","webpack://@fortressiq/trinity/./client/components/headers/styles/index.js","webpack://@fortressiq/trinity/./client/components/image/UnredactedImageViewerWithOption.jsx","webpack://@fortressiq/trinity/./client/components/image/UnredactedImageWithOption.jsx","webpack://@fortressiq/trinity/./client/components/image/styles/index.js","webpack://@fortressiq/trinity/./client/components/infoTooltip/InfoTooltip.jsx","webpack://@fortressiq/trinity/./client/components/inputs/TextToInput.jsx","webpack://@fortressiq/trinity/./client/components/inspector/Inspector.jsx","webpack://@fortressiq/trinity/./client/components/loaders/Spinner.jsx","webpack://@fortressiq/trinity/./client/components/main/Main.jsx","webpack://@fortressiq/trinity/./client/components/mini_map/MiniMap.jsx","webpack://@fortressiq/trinity/./client/components/mini_map/styles/index.js","webpack://@fortressiq/trinity/./client/components/query_builder/QueryBuilder.jsx","webpack://@fortressiq/trinity/./client/components/query_builder/components/QueryBuilderAutocomplete.jsx","webpack://@fortressiq/trinity/./client/components/query_builder/components/QueryBuilderDatetime.jsx","webpack://@fortressiq/trinity/./client/components/query_builder/components/QueryBuilderInput.jsx","webpack://@fortressiq/trinity/./client/components/query_builder/components/QueryBuilderRemove.jsx","webpack://@fortressiq/trinity/./client/components/query_builder/components/QueryBuilderSelect.jsx","webpack://@fortressiq/trinity/./client/components/query_builder/queryBuilderDropdown/QueryBuilderDropdown.jsx","webpack://@fortressiq/trinity/./client/components/query_builder/queryBuilderDropdown/styles/index.js","webpack://@fortressiq/trinity/./client/components/query_builder/styles/index.js","webpack://@fortressiq/trinity/./client/components/query_builder/utils.js","webpack://@fortressiq/trinity/./client/components/rangeInputSlider/RangeInputSlider.jsx","webpack://@fortressiq/trinity/./client/components/rangeInputSlider/styles/index.js","webpack://@fortressiq/trinity/./client/components/table/VirtualizedTable.jsx","webpack://@fortressiq/trinity/./client/components/tags/Tags.jsx","webpack://@fortressiq/trinity/./client/components/toggles/BigGrayCheckbox.jsx","webpack://@fortressiq/trinity/./client/components/user/util.js","webpack://@fortressiq/trinity/./client/components/viz/index.jsx","webpack://@fortressiq/trinity/./client/constants/app-constants.js","webpack://@fortressiq/trinity/./client/constants/event-constants.js","webpack://@fortressiq/trinity/./client/constants/roles.js","webpack://@fortressiq/trinity/./client/context/UserContext.jsx","webpack://@fortressiq/trinity/./client/helpers/index.js","webpack://@fortressiq/trinity/./client/lib/ArrayHelpers.js","webpack://@fortressiq/trinity/./client/lib/Dom.js","webpack://@fortressiq/trinity/./client/lib/Localizer.js","webpack://@fortressiq/trinity/./client/lib/NeoUtils.js","webpack://@fortressiq/trinity/./client/lib/SignatureStrategies.js","webpack://@fortressiq/trinity/./client/lib/Sort.js","webpack://@fortressiq/trinity/./client/lib/Storage.js","webpack://@fortressiq/trinity/./client/lib/String.js","webpack://@fortressiq/trinity/./client/lib/Time.js","webpack://@fortressiq/trinity/./client/lib/UiStore.js","webpack://@fortressiq/trinity/./client/lib/checkAllowedRoutes.js","webpack://@fortressiq/trinity/./client/lib/controlTypeOptions.js","webpack://@fortressiq/trinity/./client/lib/getFilterOptions.jsx","webpack://@fortressiq/trinity/./client/lib/getMiningParamsButterfly.js","webpack://@fortressiq/trinity/./client/lib/getMiningParamsFlowGraph.js","webpack://@fortressiq/trinity/./client/lib/getMiningParamsPath.js","webpack://@fortressiq/trinity/./client/lib/getMiningParamsReport.js","webpack://@fortressiq/trinity/./client/lib/graphTypeDisplayNameMap.js","webpack://@fortressiq/trinity/./client/lib/hooks.js","webpack://@fortressiq/trinity/./client/lib/parseApplicationData.js","webpack://@fortressiq/trinity/./client/lib/rbac-rules.js","webpack://@fortressiq/trinity/./client/lib/statusMap.js","webpack://@fortressiq/trinity/./client/lib/test_helpers/mockGraphColors.js","webpack://@fortressiq/trinity/./client/lib/validationRegex.js","webpack://@fortressiq/trinity/./client/packs/application.js","webpack://@fortressiq/trinity/./client/stores/callback.jsx","webpack://@fortressiq/trinity/./client/styles/utils.js","webpack://@fortressiq/trinity/./client/vendor/rappid.css?b947","webpack://@fortressiq/trinity/./node_modules/react-virtualized/styles.css?c7f4","webpack://@fortressiq/trinity/./node_modules/reactflow/dist/style.css?a777","webpack://@fortressiq/trinity/./client/app/butterfly/butterflyMainContentStyle.scss","webpack://@fortressiq/trinity/./client/app/butterfly/createProcessDialogue/createProcessDialogueStyle.scss","webpack://@fortressiq/trinity/./client/app/butterfly/createProcessDialogue/createProcessSectionStyle.scss","webpack://@fortressiq/trinity/./client/app/butterfly/createProcessDialogue/draggingNodeStyle.scss","webpack://@fortressiq/trinity/./client/app/butterfly/createProcessDialogue/sections/pathDetailsStyle.scss","webpack://@fortressiq/trinity/./client/app/butterfly/utils.scss","webpack://@fortressiq/trinity/./client/app/client_dashboard/detailCardStyle.scss","webpack://@fortressiq/trinity/./client/app/client_dashboard/detailsStyle.scss","webpack://@fortressiq/trinity/./client/app/client_dashboard/processListDashboard/addProcessesModal.scss","webpack://@fortressiq/trinity/./client/app/client_dashboard/processListDashboard/dashboardHeader.scss","webpack://@fortressiq/trinity/./client/app/dashboard/cards/calendarCardStyle.scss","webpack://@fortressiq/trinity/./client/app/dashboard/cards/dashCardStyle.scss","webpack://@fortressiq/trinity/./client/app/dashboard/cards/eventStatsCardStyle.scss","webpack://@fortressiq/trinity/./client/app/dashboard/cards/metricContainerStyle.scss","webpack://@fortressiq/trinity/./client/app/dashboard/cards/pictogramDashCardStyle.scss","webpack://@fortressiq/trinity/./client/app/dashboard/cards/topListingsCardStyle.scss","webpack://@fortressiq/trinity/./client/app/dashboard/styles.scss","webpack://@fortressiq/trinity/./client/app/diagram_composer/diagram.scss","webpack://@fortressiq/trinity/./client/app/diagram_composer/diagramComposerStyle.scss","webpack://@fortressiq/trinity/./client/app/diagram_composer/diagramInspector/diagramInspectorStyle.scss","webpack://@fortressiq/trinity/./client/app/diagram_composer/leftPanel/leftPanelStyle.scss","webpack://@fortressiq/trinity/./client/app/diagram_composer/leftPanel/menuItem.scss","webpack://@fortressiq/trinity/./client/app/events/eventDetailsStyle.scss","webpack://@fortressiq/trinity/./client/app/inspectors/decisionNoEditStyle.scss","webpack://@fortressiq/trinity/./client/app/instances_viewer/eventDetailBarStyle.scss","webpack://@fortressiq/trinity/./client/app/instances_viewer/instancesViewerStyle.scss","webpack://@fortressiq/trinity/./client/app/instances_viewer/signatureDetailsBarStyle.scss","webpack://@fortressiq/trinity/./client/app/observers/viewer/observerViewerStyle.scss","webpack://@fortressiq/trinity/./client/app/observers/viewer/sections/metadataTableStyle.scss","webpack://@fortressiq/trinity/./client/app/pdds/pddGenToastStyle.scss","webpack://@fortressiq/trinity/./client/app/process_explorer/GroupsModal/groupsModalStyle.scss","webpack://@fortressiq/trinity/./client/app/process_explorer/details/stepDetails/activityControlPanelStyle.scss","webpack://@fortressiq/trinity/./client/app/process_explorer/details/stepDetails/editDecisionFormStyle.scss","webpack://@fortressiq/trinity/./client/app/process_explorer/details/stepDetails/nodeInspectorStyle.scss","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/activityControlPanel.scss","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/draggingNodeStyle.scss","webpack://@fortressiq/trinity/./client/app/process_explorer/diagram/processExploration.scss","webpack://@fortressiq/trinity/./client/app/process_explorer/subprocessModal/subprocessModalStyle.scss","webpack://@fortressiq/trinity/./client/app/processes/viewer/components/tooltipButtonStyle.scss","webpack://@fortressiq/trinity/./client/app/review/event/boundingBoxStyle.scss","webpack://@fortressiq/trinity/./client/app/review/event/eventStyle.scss","webpack://@fortressiq/trinity/./client/app/screens/viewer/controls/controlsStyle.scss","webpack://@fortressiq/trinity/./client/app/topNavHelp/topNavHelpStyle.scss","webpack://@fortressiq/trinity/./client/components/404/notFound.scss","webpack://@fortressiq/trinity/./client/components/Comment/comment.scss","webpack://@fortressiq/trinity/./client/components/EventTimeline/eventTimeline.scss","webpack://@fortressiq/trinity/./client/components/FavoriteToggle/favoriteToggle.scss","webpack://@fortressiq/trinity/./client/components/PanelMetrics/panelMetrics.scss","webpack://@fortressiq/trinity/./client/components/detailsSidePanel/miningRun/miningRun.scss","webpack://@fortressiq/trinity/./client/components/detailsSidePanel/pathStatistics/bar.scss","webpack://@fortressiq/trinity/./client/components/detailsSidePanel/processOverview/stepsByApplication.scss","webpack://@fortressiq/trinity/./client/components/dragAndDrop/svgDropZone.scss","webpack://@fortressiq/trinity/./client/components/filterBreadcrumbs/filterBreadcrumbs.scss","webpack://@fortressiq/trinity/./client/components/loaders/spinner.scss","webpack://@fortressiq/trinity/./client/components/table/virtualizedTable.scss","webpack://@fortressiq/trinity/./client/components/toggles/bigGrayCheckbox.scss","webpack://@fortressiq/trinity/./client/styles/app.scss","webpack://@fortressiq/trinity/./client/styles/fonts.scss","webpack://@fortressiq/trinity/ignored|/usr/src/app/node_modules/object-inspect|./util.inspect"],"sourcesContent":["// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`CreateTenantButton component should NOT render 1`] = `\n\n \n \n \n\n`;\n\nexports[`CreateTenantButton component should render without throwing an error 1`] = `\n\n \n \n \n \n \n \n \n \n Create Tenant\n \n \n \n \n \n \n \n \n\n`;\n","// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`ManageAccount component should render without throwing an error 1`] = `\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n`;\n","// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`TenantCreator component should render without throwing an error 1`] = `\n\n \n \n \n \n \n\n`;\n","// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`ApplicationIconCell component should render without throwing an error 1`] = `\n\n \n \n \n \n \n\n`;\n","// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Details component should render without throwing an error 1`] = `\n\n First Detail | Second Detail\n\n`;\n","// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`EventFilter component should render without throwing an error 1`] = ``;\n","// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`PlaybackControls Component should render without throwing an error 1`] = `\n\n \n \n Playback\n \n \n\n`;\n","// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`PddProgressMessage should render without throwing an error 1`] = `\n\n \n Generating PDD\n \n \n \n Step One\n \n\n`;\n","// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`ControlsBar component should render without throwing an error 1`] = `\n\n }\n toolbarActions={\n \n }\n/>\n`;\n","// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`ControlsBar FlowsControl component should render without throwing an error 1`] = `\n\n \n \n Display Paths by:\n \n \n \n \n \n \n\n`;\n","// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`ControlsBar GroupsControl component should render without throwing an error 1`] = `\n\n \n Highlight All\n \n \n }\n trigger={\n {\n \"type\": \"click\",\n }\n }\n>\n \n Display Group(s): \n None\n \n\n`;\n","// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`ObserverSelect component should render without throwing an error 1`] = `\n}\n onChange={[Function]}\n options={\n [\n {\n \"label\": \"name1\",\n \"type\": \"observer\",\n \"value\": 1,\n },\n {\n \"label\": \"name2\",\n \"type\": \"observer\",\n \"value\": 2,\n },\n ]\n }\n placeholder=\"Select an Observer\"\n style={\n {\n \"maxWidth\": \"100%\",\n \"width\": \"250px\",\n }\n }\n value={\n {\n \"label\": \"name1\",\n \"type\": \"observer\",\n \"value\": 1,\n }\n }\n/>\n`;\n","// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Sidebar component should render without throwing an error 1`] = `\n\n

\n Test\n

\n\n`;\n","// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`BoundingBox component should render without throwing an error 1`] = `\n\n \n \n \n \n \n \n \n \n\n`;\n","// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`BoundingBoxTag component should render without throwing an error 1`] = `\n\n \n 1\n \n\n`;\n","// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`ExploreButton (Web Applications) component should render without throwing an error 1`] = `\n\n \n\n`;\n","var map = {\n\t\"./App\": \"./client/app/App.jsx\",\n\t\"./App.jsx\": \"./client/app/App.jsx\",\n\t\"./AppRoutes\": \"./client/app/AppRoutes.jsx\",\n\t\"./AppRoutes.jsx\": \"./client/app/AppRoutes.jsx\",\n\t\"./AppSidebar\": \"./client/app/AppSidebar.jsx\",\n\t\"./AppSidebar.jsx\": \"./client/app/AppSidebar.jsx\",\n\t\"./AppStyles\": \"./client/app/AppStyles.js\",\n\t\"./AppStyles.js\": \"./client/app/AppStyles.js\",\n\t\"./CAA\": \"./client/app/CAA.jsx\",\n\t\"./CAA.jsx\": \"./client/app/CAA.jsx\",\n\t\"./ProcessBoundary\": \"./client/app/ProcessBoundary/index.jsx\",\n\t\"./ProcessBoundary/\": \"./client/app/ProcessBoundary/index.jsx\",\n\t\"./ProcessBoundary/FormOverlay\": \"./client/app/ProcessBoundary/FormOverlay.jsx\",\n\t\"./ProcessBoundary/FormOverlay.jsx\": \"./client/app/ProcessBoundary/FormOverlay.jsx\",\n\t\"./ProcessBoundary/Gallery\": \"./client/app/ProcessBoundary/Gallery.jsx\",\n\t\"./ProcessBoundary/Gallery.jsx\": \"./client/app/ProcessBoundary/Gallery.jsx\",\n\t\"./ProcessBoundary/Sidebar\": \"./client/app/ProcessBoundary/Sidebar.js\",\n\t\"./ProcessBoundary/Sidebar.js\": \"./client/app/ProcessBoundary/Sidebar.js\",\n\t\"./ProcessBoundary/Toolbar\": \"./client/app/ProcessBoundary/Toolbar.jsx\",\n\t\"./ProcessBoundary/Toolbar.jsx\": \"./client/app/ProcessBoundary/Toolbar.jsx\",\n\t\"./ProcessBoundary/index\": \"./client/app/ProcessBoundary/index.jsx\",\n\t\"./ProcessBoundary/index.jsx\": \"./client/app/ProcessBoundary/index.jsx\",\n\t\"./ProcessBoundary/processBoundaryToast\": \"./client/app/ProcessBoundary/processBoundaryToast.jsx\",\n\t\"./ProcessBoundary/processBoundaryToast.jsx\": \"./client/app/ProcessBoundary/processBoundaryToast.jsx\",\n\t\"./ProcessBoundary/styles\": \"./client/app/ProcessBoundary/styles/index.js\",\n\t\"./ProcessBoundary/styles/\": \"./client/app/ProcessBoundary/styles/index.js\",\n\t\"./ProcessBoundary/styles/index\": \"./client/app/ProcessBoundary/styles/index.js\",\n\t\"./ProcessBoundary/styles/index.js\": \"./client/app/ProcessBoundary/styles/index.js\",\n\t\"./admin/Admin\": \"./client/app/admin/Admin.jsx\",\n\t\"./admin/Admin.jsx\": \"./client/app/admin/Admin.jsx\",\n\t\"./admin/applicationList\": \"./client/app/admin/applicationList/index.jsx\",\n\t\"./admin/applicationList/\": \"./client/app/admin/applicationList/index.jsx\",\n\t\"./admin/applicationList/index\": \"./client/app/admin/applicationList/index.jsx\",\n\t\"./admin/applicationList/index.jsx\": \"./client/app/admin/applicationList/index.jsx\",\n\t\"./admin/applicationList/subComponents/ActionsMenu\": \"./client/app/admin/applicationList/subComponents/ActionsMenu.jsx\",\n\t\"./admin/applicationList/subComponents/ActionsMenu.jsx\": \"./client/app/admin/applicationList/subComponents/ActionsMenu.jsx\",\n\t\"./admin/applicationList/subComponents/ApplicationListForm\": \"./client/app/admin/applicationList/subComponents/ApplicationListForm.jsx\",\n\t\"./admin/applicationList/subComponents/ApplicationListForm.jsx\": \"./client/app/admin/applicationList/subComponents/ApplicationListForm.jsx\",\n\t\"./admin/applicationList/subComponents/ControlledApplicationInput\": \"./client/app/admin/applicationList/subComponents/ControlledApplicationInput.jsx\",\n\t\"./admin/applicationList/subComponents/ControlledApplicationInput.jsx\": \"./client/app/admin/applicationList/subComponents/ControlledApplicationInput.jsx\",\n\t\"./admin/common/constants\": \"./client/app/admin/common/constants.js\",\n\t\"./admin/common/constants.js\": \"./client/app/admin/common/constants.js\",\n\t\"./admin/domainList\": \"./client/app/admin/domainList/index.jsx\",\n\t\"./admin/domainList/\": \"./client/app/admin/domainList/index.jsx\",\n\t\"./admin/domainList/index\": \"./client/app/admin/domainList/index.jsx\",\n\t\"./admin/domainList/index.jsx\": \"./client/app/admin/domainList/index.jsx\",\n\t\"./admin/domainList/subComponents/ActionsMenu\": \"./client/app/admin/domainList/subComponents/ActionsMenu.jsx\",\n\t\"./admin/domainList/subComponents/ActionsMenu.jsx\": \"./client/app/admin/domainList/subComponents/ActionsMenu.jsx\",\n\t\"./admin/domainList/subComponents/ControlledDomainInput\": \"./client/app/admin/domainList/subComponents/ControlledDomainInput.jsx\",\n\t\"./admin/domainList/subComponents/ControlledDomainInput.jsx\": \"./client/app/admin/domainList/subComponents/ControlledDomainInput.jsx\",\n\t\"./admin/domainList/subComponents/DomainListForm\": \"./client/app/admin/domainList/subComponents/DomainListForm.jsx\",\n\t\"./admin/domainList/subComponents/DomainListForm.jsx\": \"./client/app/admin/domainList/subComponents/DomainListForm.jsx\",\n\t\"./admin/domainList/subComponents/styles\": \"./client/app/admin/domainList/subComponents/styles.js\",\n\t\"./admin/domainList/subComponents/styles.js\": \"./client/app/admin/domainList/subComponents/styles.js\",\n\t\"./admin/event_log_exports/EventLogExportList\": \"./client/app/admin/event_log_exports/EventLogExportList.jsx\",\n\t\"./admin/event_log_exports/EventLogExportList.jsx\": \"./client/app/admin/event_log_exports/EventLogExportList.jsx\",\n\t\"./admin/integrations/Integrations\": \"./client/app/admin/integrations/Integrations.jsx\",\n\t\"./admin/integrations/Integrations.jsx\": \"./client/app/admin/integrations/Integrations.jsx\",\n\t\"./admin/integrations/SubComponents/ActionsMenu\": \"./client/app/admin/integrations/SubComponents/ActionsMenu.jsx\",\n\t\"./admin/integrations/SubComponents/ActionsMenu.jsx\": \"./client/app/admin/integrations/SubComponents/ActionsMenu.jsx\",\n\t\"./admin/integrations/SubComponents/IntegrationFormModal\": \"./client/app/admin/integrations/SubComponents/IntegrationFormModal.jsx\",\n\t\"./admin/integrations/SubComponents/IntegrationFormModal.jsx\": \"./client/app/admin/integrations/SubComponents/IntegrationFormModal.jsx\",\n\t\"./admin/integrations/SubComponents/wrapperCSS\": \"./client/app/admin/integrations/SubComponents/wrapperCSS.js\",\n\t\"./admin/integrations/SubComponents/wrapperCSS.js\": \"./client/app/admin/integrations/SubComponents/wrapperCSS.js\",\n\t\"./admin/integrations/helpers/handleIntegration\": \"./client/app/admin/integrations/helpers/handleIntegration.js\",\n\t\"./admin/integrations/helpers/handleIntegration.js\": \"./client/app/admin/integrations/helpers/handleIntegration.js\",\n\t\"./admin/tank/BatchStore\": \"./client/app/admin/tank/BatchStore.js\",\n\t\"./admin/tank/BatchStore.js\": \"./client/app/admin/tank/BatchStore.js\",\n\t\"./admin/tank/TankMonitor\": \"./client/app/admin/tank/TankMonitor.jsx\",\n\t\"./admin/tank/TankMonitor.jsx\": \"./client/app/admin/tank/TankMonitor.jsx\",\n\t\"./admin/tank/TankStore\": \"./client/app/admin/tank/TankStore.js\",\n\t\"./admin/tank/TankStore.js\": \"./client/app/admin/tank/TankStore.js\",\n\t\"./admin/tenants/CreateTenantButton\": \"./client/app/admin/tenants/CreateTenantButton.jsx\",\n\t\"./admin/tenants/CreateTenantButton.jsx\": \"./client/app/admin/tenants/CreateTenantButton.jsx\",\n\t\"./admin/tenants/ManageAccount\": \"./client/app/admin/tenants/ManageAccount.jsx\",\n\t\"./admin/tenants/ManageAccount.jsx\": \"./client/app/admin/tenants/ManageAccount.jsx\",\n\t\"./admin/tenants/ManageCredits/CreditsChart\": \"./client/app/admin/tenants/ManageCredits/CreditsChart.jsx\",\n\t\"./admin/tenants/ManageCredits/CreditsChart.jsx\": \"./client/app/admin/tenants/ManageCredits/CreditsChart.jsx\",\n\t\"./admin/tenants/ManageCredits/CreditsCounts\": \"./client/app/admin/tenants/ManageCredits/CreditsCounts.jsx\",\n\t\"./admin/tenants/ManageCredits/CreditsCounts.jsx\": \"./client/app/admin/tenants/ManageCredits/CreditsCounts.jsx\",\n\t\"./admin/tenants/ManageCredits/CreditsFilter\": \"./client/app/admin/tenants/ManageCredits/CreditsFilter.jsx\",\n\t\"./admin/tenants/ManageCredits/CreditsFilter.jsx\": \"./client/app/admin/tenants/ManageCredits/CreditsFilter.jsx\",\n\t\"./admin/tenants/ManageCredits/DownloadCreditsButton\": \"./client/app/admin/tenants/ManageCredits/DownloadCreditsButton.jsx\",\n\t\"./admin/tenants/ManageCredits/DownloadCreditsButton.jsx\": \"./client/app/admin/tenants/ManageCredits/DownloadCreditsButton.jsx\",\n\t\"./admin/tenants/ManageCredits/ManageCredits\": \"./client/app/admin/tenants/ManageCredits/ManageCredits.jsx\",\n\t\"./admin/tenants/ManageCredits/ManageCredits.jsx\": \"./client/app/admin/tenants/ManageCredits/ManageCredits.jsx\",\n\t\"./admin/tenants/ManageCredits/UserBreakdownTable\": \"./client/app/admin/tenants/ManageCredits/UserBreakdownTable.jsx\",\n\t\"./admin/tenants/ManageCredits/UserBreakdownTable.jsx\": \"./client/app/admin/tenants/ManageCredits/UserBreakdownTable.jsx\",\n\t\"./admin/tenants/ManageCredits/constants\": \"./client/app/admin/tenants/ManageCredits/constants.js\",\n\t\"./admin/tenants/ManageCredits/constants.js\": \"./client/app/admin/tenants/ManageCredits/constants.js\",\n\t\"./admin/tenants/ManageCredits/styles\": \"./client/app/admin/tenants/ManageCredits/styles/index.js\",\n\t\"./admin/tenants/ManageCredits/styles/\": \"./client/app/admin/tenants/ManageCredits/styles/index.js\",\n\t\"./admin/tenants/ManageCredits/styles/index\": \"./client/app/admin/tenants/ManageCredits/styles/index.js\",\n\t\"./admin/tenants/ManageCredits/styles/index.js\": \"./client/app/admin/tenants/ManageCredits/styles/index.js\",\n\t\"./admin/tenants/SwitchSection\": \"./client/app/admin/tenants/SwitchSection.jsx\",\n\t\"./admin/tenants/SwitchSection.jsx\": \"./client/app/admin/tenants/SwitchSection.jsx\",\n\t\"./admin/tenants/TenantCreator\": \"./client/app/admin/tenants/TenantCreator.jsx\",\n\t\"./admin/tenants/TenantCreator.jsx\": \"./client/app/admin/tenants/TenantCreator.jsx\",\n\t\"./admin/tenants/TenantEditor\": \"./client/app/admin/tenants/TenantEditor.jsx\",\n\t\"./admin/tenants/TenantEditor.jsx\": \"./client/app/admin/tenants/TenantEditor.jsx\",\n\t\"./admin/tenants/TenantEditorNavigation\": \"./client/app/admin/tenants/TenantEditorNavigation.jsx\",\n\t\"./admin/tenants/TenantEditorNavigation.jsx\": \"./client/app/admin/tenants/TenantEditorNavigation.jsx\",\n\t\"./admin/tenants/TenantList\": \"./client/app/admin/tenants/TenantList.jsx\",\n\t\"./admin/tenants/TenantList.jsx\": \"./client/app/admin/tenants/TenantList.jsx\",\n\t\"./admin/tenants/__tests__/CreateTenantButton.test\": \"./client/app/admin/tenants/__tests__/CreateTenantButton.test.jsx\",\n\t\"./admin/tenants/__tests__/CreateTenantButton.test.jsx\": \"./client/app/admin/tenants/__tests__/CreateTenantButton.test.jsx\",\n\t\"./admin/tenants/__tests__/ManageAccount.test\": \"./client/app/admin/tenants/__tests__/ManageAccount.test.jsx\",\n\t\"./admin/tenants/__tests__/ManageAccount.test.jsx\": \"./client/app/admin/tenants/__tests__/ManageAccount.test.jsx\",\n\t\"./admin/tenants/__tests__/TenantCreator.test\": \"./client/app/admin/tenants/__tests__/TenantCreator.test.jsx\",\n\t\"./admin/tenants/__tests__/TenantCreator.test.jsx\": \"./client/app/admin/tenants/__tests__/TenantCreator.test.jsx\",\n\t\"./admin/tenants/__tests__/__snapshots__/CreateTenantButton.test.jsx.snap\": \"./client/app/admin/tenants/__tests__/__snapshots__/CreateTenantButton.test.jsx.snap\",\n\t\"./admin/tenants/__tests__/__snapshots__/ManageAccount.test.jsx.snap\": \"./client/app/admin/tenants/__tests__/__snapshots__/ManageAccount.test.jsx.snap\",\n\t\"./admin/tenants/__tests__/__snapshots__/TenantCreator.test.jsx.snap\": \"./client/app/admin/tenants/__tests__/__snapshots__/TenantCreator.test.jsx.snap\",\n\t\"./admin/tenants/constants\": \"./client/app/admin/tenants/constants.js\",\n\t\"./admin/tenants/constants.js\": \"./client/app/admin/tenants/constants.js\",\n\t\"./admin/tenants/styles\": \"./client/app/admin/tenants/styles/index.js\",\n\t\"./admin/tenants/styles/\": \"./client/app/admin/tenants/styles/index.js\",\n\t\"./admin/tenants/styles/index\": \"./client/app/admin/tenants/styles/index.js\",\n\t\"./admin/tenants/styles/index.js\": \"./client/app/admin/tenants/styles/index.js\",\n\t\"./admin/users\": \"./client/app/admin/users/index.jsx\",\n\t\"./admin/users/\": \"./client/app/admin/users/index.jsx\",\n\t\"./admin/users/constants\": \"./client/app/admin/users/constants.jsx\",\n\t\"./admin/users/constants.jsx\": \"./client/app/admin/users/constants.jsx\",\n\t\"./admin/users/index\": \"./client/app/admin/users/index.jsx\",\n\t\"./admin/users/index.jsx\": \"./client/app/admin/users/index.jsx\",\n\t\"./admin/users/subComponents/Actions\": \"./client/app/admin/users/subComponents/Actions.jsx\",\n\t\"./admin/users/subComponents/Actions.jsx\": \"./client/app/admin/users/subComponents/Actions.jsx\",\n\t\"./admin/users/subComponents/KibanaPassword\": \"./client/app/admin/users/subComponents/KibanaPassword.jsx\",\n\t\"./admin/users/subComponents/KibanaPassword.jsx\": \"./client/app/admin/users/subComponents/KibanaPassword.jsx\",\n\t\"./admin/users/subComponents/UserEditor\": \"./client/app/admin/users/subComponents/UserEditor.jsx\",\n\t\"./admin/users/subComponents/UserEditor.jsx\": \"./client/app/admin/users/subComponents/UserEditor.jsx\",\n\t\"./applications/ActionsMenu\": \"./client/app/applications/ActionsMenu.jsx\",\n\t\"./applications/ActionsMenu.jsx\": \"./client/app/applications/ActionsMenu.jsx\",\n\t\"./applications/Application\": \"./client/app/applications/Application/index.jsx\",\n\t\"./applications/Application/\": \"./client/app/applications/Application/index.jsx\",\n\t\"./applications/Application/index\": \"./client/app/applications/Application/index.jsx\",\n\t\"./applications/Application/index.jsx\": \"./client/app/applications/Application/index.jsx\",\n\t\"./applications/Application/provisional\": \"./client/app/applications/Application/provisional/index.jsx\",\n\t\"./applications/Application/provisional/\": \"./client/app/applications/Application/provisional/index.jsx\",\n\t\"./applications/Application/provisional/Chain\": \"./client/app/applications/Application/provisional/Chain.jsx\",\n\t\"./applications/Application/provisional/Chain.jsx\": \"./client/app/applications/Application/provisional/Chain.jsx\",\n\t\"./applications/Application/provisional/Form\": \"./client/app/applications/Application/provisional/Form.jsx\",\n\t\"./applications/Application/provisional/Form.jsx\": \"./client/app/applications/Application/provisional/Form.jsx\",\n\t\"./applications/Application/provisional/Single\": \"./client/app/applications/Application/provisional/Single.jsx\",\n\t\"./applications/Application/provisional/Single.jsx\": \"./client/app/applications/Application/provisional/Single.jsx\",\n\t\"./applications/Application/provisional/fields/Checkbox\": \"./client/app/applications/Application/provisional/fields/Checkbox.jsx\",\n\t\"./applications/Application/provisional/fields/Checkbox.jsx\": \"./client/app/applications/Application/provisional/fields/Checkbox.jsx\",\n\t\"./applications/Application/provisional/fields/Number\": \"./client/app/applications/Application/provisional/fields/Number.jsx\",\n\t\"./applications/Application/provisional/fields/Number.jsx\": \"./client/app/applications/Application/provisional/fields/Number.jsx\",\n\t\"./applications/Application/provisional/fields/RadioGroup\": \"./client/app/applications/Application/provisional/fields/RadioGroup.jsx\",\n\t\"./applications/Application/provisional/fields/RadioGroup.jsx\": \"./client/app/applications/Application/provisional/fields/RadioGroup.jsx\",\n\t\"./applications/Application/provisional/fields/TextArea\": \"./client/app/applications/Application/provisional/fields/TextArea.jsx\",\n\t\"./applications/Application/provisional/fields/TextArea.jsx\": \"./client/app/applications/Application/provisional/fields/TextArea.jsx\",\n\t\"./applications/Application/provisional/fields/TextInput\": \"./client/app/applications/Application/provisional/fields/TextInput.jsx\",\n\t\"./applications/Application/provisional/fields/TextInput.jsx\": \"./client/app/applications/Application/provisional/fields/TextInput.jsx\",\n\t\"./applications/Application/provisional/fields/hooks\": \"./client/app/applications/Application/provisional/fields/hooks.js\",\n\t\"./applications/Application/provisional/fields/hooks.js\": \"./client/app/applications/Application/provisional/fields/hooks.js\",\n\t\"./applications/Application/provisional/index\": \"./client/app/applications/Application/provisional/index.jsx\",\n\t\"./applications/Application/provisional/index.jsx\": \"./client/app/applications/Application/provisional/index.jsx\",\n\t\"./applications/Application/provisional/nGram\": \"./client/app/applications/Application/provisional/nGram/index.jsx\",\n\t\"./applications/Application/provisional/nGram/\": \"./client/app/applications/Application/provisional/nGram/index.jsx\",\n\t\"./applications/Application/provisional/nGram/Overlay\": \"./client/app/applications/Application/provisional/nGram/Overlay.jsx\",\n\t\"./applications/Application/provisional/nGram/Overlay.jsx\": \"./client/app/applications/Application/provisional/nGram/Overlay.jsx\",\n\t\"./applications/Application/provisional/nGram/index\": \"./client/app/applications/Application/provisional/nGram/index.jsx\",\n\t\"./applications/Application/provisional/nGram/index.jsx\": \"./client/app/applications/Application/provisional/nGram/index.jsx\",\n\t\"./applications/Application/provisional/styles\": \"./client/app/applications/Application/provisional/styles/index.js\",\n\t\"./applications/Application/provisional/styles/\": \"./client/app/applications/Application/provisional/styles/index.js\",\n\t\"./applications/Application/provisional/styles/index\": \"./client/app/applications/Application/provisional/styles/index.js\",\n\t\"./applications/Application/provisional/styles/index.js\": \"./client/app/applications/Application/provisional/styles/index.js\",\n\t\"./applications/Application/strategy/History\": \"./client/app/applications/Application/strategy/History.jsx\",\n\t\"./applications/Application/strategy/History.jsx\": \"./client/app/applications/Application/strategy/History.jsx\",\n\t\"./applications/Application/strategy/Promoted\": \"./client/app/applications/Application/strategy/Promoted.jsx\",\n\t\"./applications/Application/strategy/Promoted.jsx\": \"./client/app/applications/Application/strategy/Promoted.jsx\",\n\t\"./applications/Application/strategy/styles\": \"./client/app/applications/Application/strategy/styles/index.js\",\n\t\"./applications/Application/strategy/styles/\": \"./client/app/applications/Application/strategy/styles/index.js\",\n\t\"./applications/Application/strategy/styles/index\": \"./client/app/applications/Application/strategy/styles/index.js\",\n\t\"./applications/Application/strategy/styles/index.js\": \"./client/app/applications/Application/strategy/styles/index.js\",\n\t\"./applications/Application/styles\": \"./client/app/applications/Application/styles/index.js\",\n\t\"./applications/Application/styles/\": \"./client/app/applications/Application/styles/index.js\",\n\t\"./applications/Application/styles/index\": \"./client/app/applications/Application/styles/index.js\",\n\t\"./applications/Application/styles/index.js\": \"./client/app/applications/Application/styles/index.js\",\n\t\"./applications/Application/utilities\": \"./client/app/applications/Application/utilities.js\",\n\t\"./applications/Application/utilities.js\": \"./client/app/applications/Application/utilities.js\",\n\t\"./applications/ApplicationIconCell\": \"./client/app/applications/ApplicationIconCell.jsx\",\n\t\"./applications/ApplicationIconCell.jsx\": \"./client/app/applications/ApplicationIconCell.jsx\",\n\t\"./applications/ApplicationRegistry\": \"./client/app/applications/ApplicationRegistry.jsx\",\n\t\"./applications/ApplicationRegistry.jsx\": \"./client/app/applications/ApplicationRegistry.jsx\",\n\t\"./applications/__tests__/ApplicationIconCell.test\": \"./client/app/applications/__tests__/ApplicationIconCell.test.jsx\",\n\t\"./applications/__tests__/ApplicationIconCell.test.jsx\": \"./client/app/applications/__tests__/ApplicationIconCell.test.jsx\",\n\t\"./applications/__tests__/__snapshots__/ApplicationIconCell.test.jsx.snap\": \"./client/app/applications/__tests__/__snapshots__/ApplicationIconCell.test.jsx.snap\",\n\t\"./butterfly/AppCircleRenderer\": \"./client/app/butterfly/AppCircleRenderer.js\",\n\t\"./butterfly/AppCircleRenderer.js\": \"./client/app/butterfly/AppCircleRenderer.js\",\n\t\"./butterfly/Butterfly\": \"./client/app/butterfly/Butterfly.jsx\",\n\t\"./butterfly/Butterfly.jsx\": \"./client/app/butterfly/Butterfly.jsx\",\n\t\"./butterfly/ButterflyChart\": \"./client/app/butterfly/ButterflyChart.jsx\",\n\t\"./butterfly/ButterflyChart.jsx\": \"./client/app/butterfly/ButterflyChart.jsx\",\n\t\"./butterfly/ButterflyLinkRenderer\": \"./client/app/butterfly/ButterflyLinkRenderer.js\",\n\t\"./butterfly/ButterflyLinkRenderer.js\": \"./client/app/butterfly/ButterflyLinkRenderer.js\",\n\t\"./butterfly/ButterflyMainContent\": \"./client/app/butterfly/ButterflyMainContent.jsx\",\n\t\"./butterfly/ButterflyMainContent.jsx\": \"./client/app/butterfly/ButterflyMainContent.jsx\",\n\t\"./butterfly/ButterflyRenderer\": \"./client/app/butterfly/ButterflyRenderer.js\",\n\t\"./butterfly/ButterflyRenderer.js\": \"./client/app/butterfly/ButterflyRenderer.js\",\n\t\"./butterfly/ButterflySelect\": \"./client/app/butterfly/ButterflySelect.jsx\",\n\t\"./butterfly/ButterflySelect.jsx\": \"./client/app/butterfly/ButterflySelect.jsx\",\n\t\"./butterfly/ButterflyTooltip\": \"./client/app/butterfly/ButterflyTooltip.jsx\",\n\t\"./butterfly/ButterflyTooltip.jsx\": \"./client/app/butterfly/ButterflyTooltip.jsx\",\n\t\"./butterfly/D3Sankey\": \"./client/app/butterfly/D3Sankey.js\",\n\t\"./butterfly/D3Sankey.js\": \"./client/app/butterfly/D3Sankey.js\",\n\t\"./butterfly/NodeRenderer\": \"./client/app/butterfly/NodeRenderer.js\",\n\t\"./butterfly/NodeRenderer.js\": \"./client/app/butterfly/NodeRenderer.js\",\n\t\"./butterfly/SidePanel\": \"./client/app/butterfly/SidePanel.jsx\",\n\t\"./butterfly/SidePanel.jsx\": \"./client/app/butterfly/SidePanel.jsx\",\n\t\"./butterfly/butterflyMainContentStyle\": \"./client/app/butterfly/butterflyMainContentStyle.scss\",\n\t\"./butterfly/butterflyMainContentStyle.scss\": \"./client/app/butterfly/butterflyMainContentStyle.scss\",\n\t\"./butterfly/createProcessDialogue/CreateProcessDialogue\": \"./client/app/butterfly/createProcessDialogue/CreateProcessDialogue.jsx\",\n\t\"./butterfly/createProcessDialogue/CreateProcessDialogue.jsx\": \"./client/app/butterfly/createProcessDialogue/CreateProcessDialogue.jsx\",\n\t\"./butterfly/createProcessDialogue/CreateProcessSection\": \"./client/app/butterfly/createProcessDialogue/CreateProcessSection.jsx\",\n\t\"./butterfly/createProcessDialogue/CreateProcessSection.jsx\": \"./client/app/butterfly/createProcessDialogue/CreateProcessSection.jsx\",\n\t\"./butterfly/createProcessDialogue/DraggingNode\": \"./client/app/butterfly/createProcessDialogue/DraggingNode.jsx\",\n\t\"./butterfly/createProcessDialogue/DraggingNode.jsx\": \"./client/app/butterfly/createProcessDialogue/DraggingNode.jsx\",\n\t\"./butterfly/createProcessDialogue/createProcessDialogueStyle\": \"./client/app/butterfly/createProcessDialogue/createProcessDialogueStyle.scss\",\n\t\"./butterfly/createProcessDialogue/createProcessDialogueStyle.scss\": \"./client/app/butterfly/createProcessDialogue/createProcessDialogueStyle.scss\",\n\t\"./butterfly/createProcessDialogue/createProcessSectionStyle\": \"./client/app/butterfly/createProcessDialogue/createProcessSectionStyle.scss\",\n\t\"./butterfly/createProcessDialogue/createProcessSectionStyle.scss\": \"./client/app/butterfly/createProcessDialogue/createProcessSectionStyle.scss\",\n\t\"./butterfly/createProcessDialogue/draggingNodeStyle\": \"./client/app/butterfly/createProcessDialogue/draggingNodeStyle.scss\",\n\t\"./butterfly/createProcessDialogue/draggingNodeStyle.scss\": \"./client/app/butterfly/createProcessDialogue/draggingNodeStyle.scss\",\n\t\"./butterfly/createProcessDialogue/images/toggleClose\": \"./client/app/butterfly/createProcessDialogue/images/toggleClose.svg\",\n\t\"./butterfly/createProcessDialogue/images/toggleClose.svg\": \"./client/app/butterfly/createProcessDialogue/images/toggleClose.svg\",\n\t\"./butterfly/createProcessDialogue/images/toggleOpen\": \"./client/app/butterfly/createProcessDialogue/images/toggleOpen.svg\",\n\t\"./butterfly/createProcessDialogue/images/toggleOpen.svg\": \"./client/app/butterfly/createProcessDialogue/images/toggleOpen.svg\",\n\t\"./butterfly/createProcessDialogue/sections/PathDetails\": \"./client/app/butterfly/createProcessDialogue/sections/PathDetails.jsx\",\n\t\"./butterfly/createProcessDialogue/sections/PathDetails.jsx\": \"./client/app/butterfly/createProcessDialogue/sections/PathDetails.jsx\",\n\t\"./butterfly/createProcessDialogue/sections/pathDetailsStyle\": \"./client/app/butterfly/createProcessDialogue/sections/pathDetailsStyle.scss\",\n\t\"./butterfly/createProcessDialogue/sections/pathDetailsStyle.scss\": \"./client/app/butterfly/createProcessDialogue/sections/pathDetailsStyle.scss\",\n\t\"./butterfly/details/StepStatistics\": \"./client/app/butterfly/details/StepStatistics.jsx\",\n\t\"./butterfly/details/StepStatistics.jsx\": \"./client/app/butterfly/details/StepStatistics.jsx\",\n\t\"./butterfly/stores/ButterflyProcessStore\": \"./client/app/butterfly/stores/ButterflyProcessStore.js\",\n\t\"./butterfly/stores/ButterflyProcessStore.js\": \"./client/app/butterfly/stores/ButterflyProcessStore.js\",\n\t\"./butterfly/styles\": \"./client/app/butterfly/styles/index.js\",\n\t\"./butterfly/styles/\": \"./client/app/butterfly/styles/index.js\",\n\t\"./butterfly/styles/index\": \"./client/app/butterfly/styles/index.js\",\n\t\"./butterfly/styles/index.js\": \"./client/app/butterfly/styles/index.js\",\n\t\"./butterfly/util\": \"./client/app/butterfly/util.js\",\n\t\"./butterfly/util.js\": \"./client/app/butterfly/util.js\",\n\t\"./butterfly/utils\": \"./client/app/butterfly/utils.scss\",\n\t\"./butterfly/utils.scss\": \"./client/app/butterfly/utils.scss\",\n\t\"./caaMarkdown\": \"./client/app/caaMarkdown.js\",\n\t\"./caaMarkdown.js\": \"./client/app/caaMarkdown.js\",\n\t\"./client_dashboard/ClientDashboardStore\": \"./client/app/client_dashboard/ClientDashboardStore.js\",\n\t\"./client_dashboard/ClientDashboardStore.js\": \"./client/app/client_dashboard/ClientDashboardStore.js\",\n\t\"./client_dashboard/DetailCard\": \"./client/app/client_dashboard/DetailCard.jsx\",\n\t\"./client_dashboard/DetailCard.jsx\": \"./client/app/client_dashboard/DetailCard.jsx\",\n\t\"./client_dashboard/Details\": \"./client/app/client_dashboard/Details.jsx\",\n\t\"./client_dashboard/Details.jsx\": \"./client/app/client_dashboard/Details.jsx\",\n\t\"./client_dashboard/__tests__/Details.test\": \"./client/app/client_dashboard/__tests__/Details.test.jsx\",\n\t\"./client_dashboard/__tests__/Details.test.jsx\": \"./client/app/client_dashboard/__tests__/Details.test.jsx\",\n\t\"./client_dashboard/__tests__/__snapshots__/Details.test.jsx.snap\": \"./client/app/client_dashboard/__tests__/__snapshots__/Details.test.jsx.snap\",\n\t\"./client_dashboard/detailCardStyle\": \"./client/app/client_dashboard/detailCardStyle.scss\",\n\t\"./client_dashboard/detailCardStyle.scss\": \"./client/app/client_dashboard/detailCardStyle.scss\",\n\t\"./client_dashboard/detailsStyle\": \"./client/app/client_dashboard/detailsStyle.scss\",\n\t\"./client_dashboard/detailsStyle.scss\": \"./client/app/client_dashboard/detailsStyle.scss\",\n\t\"./client_dashboard/processListDashboard/AddProcessModal\": \"./client/app/client_dashboard/processListDashboard/AddProcessModal.jsx\",\n\t\"./client_dashboard/processListDashboard/AddProcessModal.jsx\": \"./client/app/client_dashboard/processListDashboard/AddProcessModal.jsx\",\n\t\"./client_dashboard/processListDashboard/AdminMenu\": \"./client/app/client_dashboard/processListDashboard/AdminMenu.jsx\",\n\t\"./client_dashboard/processListDashboard/AdminMenu.jsx\": \"./client/app/client_dashboard/processListDashboard/AdminMenu.jsx\",\n\t\"./client_dashboard/processListDashboard/Dashboard\": \"./client/app/client_dashboard/processListDashboard/Dashboard.jsx\",\n\t\"./client_dashboard/processListDashboard/Dashboard.jsx\": \"./client/app/client_dashboard/processListDashboard/Dashboard.jsx\",\n\t\"./client_dashboard/processListDashboard/TagsFilter\": \"./client/app/client_dashboard/processListDashboard/TagsFilter.jsx\",\n\t\"./client_dashboard/processListDashboard/TagsFilter.jsx\": \"./client/app/client_dashboard/processListDashboard/TagsFilter.jsx\",\n\t\"./client_dashboard/processListDashboard/addProcessesModal\": \"./client/app/client_dashboard/processListDashboard/addProcessesModal.scss\",\n\t\"./client_dashboard/processListDashboard/addProcessesModal.scss\": \"./client/app/client_dashboard/processListDashboard/addProcessesModal.scss\",\n\t\"./client_dashboard/processListDashboard/constants\": \"./client/app/client_dashboard/processListDashboard/constants.js\",\n\t\"./client_dashboard/processListDashboard/constants.js\": \"./client/app/client_dashboard/processListDashboard/constants.js\",\n\t\"./client_dashboard/processListDashboard/dashboardCard/DashboardCard\": \"./client/app/client_dashboard/processListDashboard/dashboardCard/DashboardCard.jsx\",\n\t\"./client_dashboard/processListDashboard/dashboardCard/DashboardCard.jsx\": \"./client/app/client_dashboard/processListDashboard/dashboardCard/DashboardCard.jsx\",\n\t\"./client_dashboard/processListDashboard/dashboardCard/styles\": \"./client/app/client_dashboard/processListDashboard/dashboardCard/styles.js\",\n\t\"./client_dashboard/processListDashboard/dashboardCard/styles.js\": \"./client/app/client_dashboard/processListDashboard/dashboardCard/styles.js\",\n\t\"./client_dashboard/processListDashboard/dashboardHeader\": \"./client/app/client_dashboard/processListDashboard/dashboardHeader.scss\",\n\t\"./client_dashboard/processListDashboard/dashboardHeader.scss\": \"./client/app/client_dashboard/processListDashboard/dashboardHeader.scss\",\n\t\"./client_dashboard/processListDashboard/styles\": \"./client/app/client_dashboard/processListDashboard/styles/index.js\",\n\t\"./client_dashboard/processListDashboard/styles/\": \"./client/app/client_dashboard/processListDashboard/styles/index.js\",\n\t\"./client_dashboard/processListDashboard/styles/index\": \"./client/app/client_dashboard/processListDashboard/styles/index.js\",\n\t\"./client_dashboard/processListDashboard/styles/index.js\": \"./client/app/client_dashboard/processListDashboard/styles/index.js\",\n\t\"./client_dashboard/processViewDashboard/AppsCard/AppsCard\": \"./client/app/client_dashboard/processViewDashboard/AppsCard/AppsCard.jsx\",\n\t\"./client_dashboard/processViewDashboard/AppsCard/AppsCard.jsx\": \"./client/app/client_dashboard/processViewDashboard/AppsCard/AppsCard.jsx\",\n\t\"./client_dashboard/processViewDashboard/CardListing\": \"./client/app/client_dashboard/processViewDashboard/CardListing.jsx\",\n\t\"./client_dashboard/processViewDashboard/CardListing.jsx\": \"./client/app/client_dashboard/processViewDashboard/CardListing.jsx\",\n\t\"./client_dashboard/processViewDashboard/Dashboard\": \"./client/app/client_dashboard/processViewDashboard/Dashboard.jsx\",\n\t\"./client_dashboard/processViewDashboard/Dashboard.jsx\": \"./client/app/client_dashboard/processViewDashboard/Dashboard.jsx\",\n\t\"./client_dashboard/processViewDashboard/DashboardHeader\": \"./client/app/client_dashboard/processViewDashboard/DashboardHeader.jsx\",\n\t\"./client_dashboard/processViewDashboard/DashboardHeader.jsx\": \"./client/app/client_dashboard/processViewDashboard/DashboardHeader.jsx\",\n\t\"./client_dashboard/processViewDashboard/Menus/CardMenu\": \"./client/app/client_dashboard/processViewDashboard/Menus/CardMenu.jsx\",\n\t\"./client_dashboard/processViewDashboard/Menus/CardMenu.jsx\": \"./client/app/client_dashboard/processViewDashboard/Menus/CardMenu.jsx\",\n\t\"./client_dashboard/processViewDashboard/Menus/styles\": \"./client/app/client_dashboard/processViewDashboard/Menus/styles/index.js\",\n\t\"./client_dashboard/processViewDashboard/Menus/styles/\": \"./client/app/client_dashboard/processViewDashboard/Menus/styles/index.js\",\n\t\"./client_dashboard/processViewDashboard/Menus/styles/index\": \"./client/app/client_dashboard/processViewDashboard/Menus/styles/index.js\",\n\t\"./client_dashboard/processViewDashboard/Menus/styles/index.js\": \"./client/app/client_dashboard/processViewDashboard/Menus/styles/index.js\",\n\t\"./client_dashboard/processViewDashboard/UploadsCard/UploadsCard\": \"./client/app/client_dashboard/processViewDashboard/UploadsCard/UploadsCard.jsx\",\n\t\"./client_dashboard/processViewDashboard/UploadsCard/UploadsCard.jsx\": \"./client/app/client_dashboard/processViewDashboard/UploadsCard/UploadsCard.jsx\",\n\t\"./client_dashboard/processViewDashboard/UploadsModal/UploadsModal\": \"./client/app/client_dashboard/processViewDashboard/UploadsModal/UploadsModal.jsx\",\n\t\"./client_dashboard/processViewDashboard/UploadsModal/UploadsModal.jsx\": \"./client/app/client_dashboard/processViewDashboard/UploadsModal/UploadsModal.jsx\",\n\t\"./client_dashboard/processViewDashboard/VisualizationCard/VisualizationCard\": \"./client/app/client_dashboard/processViewDashboard/VisualizationCard/VisualizationCard.jsx\",\n\t\"./client_dashboard/processViewDashboard/VisualizationCard/VisualizationCard.jsx\": \"./client/app/client_dashboard/processViewDashboard/VisualizationCard/VisualizationCard.jsx\",\n\t\"./client_dashboard/processViewDashboard/VisualizationModal/VisualizationModal\": \"./client/app/client_dashboard/processViewDashboard/VisualizationModal/VisualizationModal.jsx\",\n\t\"./client_dashboard/processViewDashboard/VisualizationModal/VisualizationModal.jsx\": \"./client/app/client_dashboard/processViewDashboard/VisualizationModal/VisualizationModal.jsx\",\n\t\"./client_dashboard/processViewDashboard/styles\": \"./client/app/client_dashboard/processViewDashboard/styles/index.js\",\n\t\"./client_dashboard/processViewDashboard/styles/\": \"./client/app/client_dashboard/processViewDashboard/styles/index.js\",\n\t\"./client_dashboard/processViewDashboard/styles/cardListing\": \"./client/app/client_dashboard/processViewDashboard/styles/cardListing.js\",\n\t\"./client_dashboard/processViewDashboard/styles/cardListing.js\": \"./client/app/client_dashboard/processViewDashboard/styles/cardListing.js\",\n\t\"./client_dashboard/processViewDashboard/styles/dashboard\": \"./client/app/client_dashboard/processViewDashboard/styles/dashboard.js\",\n\t\"./client_dashboard/processViewDashboard/styles/dashboard.js\": \"./client/app/client_dashboard/processViewDashboard/styles/dashboard.js\",\n\t\"./client_dashboard/processViewDashboard/styles/index\": \"./client/app/client_dashboard/processViewDashboard/styles/index.js\",\n\t\"./client_dashboard/processViewDashboard/styles/index.js\": \"./client/app/client_dashboard/processViewDashboard/styles/index.js\",\n\t\"./client_dashboard/processViewDashboard/utilities/Utilities\": \"./client/app/client_dashboard/processViewDashboard/utilities/Utilities.js\",\n\t\"./client_dashboard/processViewDashboard/utilities/Utilities.js\": \"./client/app/client_dashboard/processViewDashboard/utilities/Utilities.js\",\n\t\"./cycles\": \"./client/app/cycles/index.jsx\",\n\t\"./cycles/\": \"./client/app/cycles/index.jsx\",\n\t\"./cycles/ActionsMenu\": \"./client/app/cycles/ActionsMenu.jsx\",\n\t\"./cycles/ActionsMenu.jsx\": \"./client/app/cycles/ActionsMenu.jsx\",\n\t\"./cycles/FormModal\": \"./client/app/cycles/FormModal.jsx\",\n\t\"./cycles/FormModal.jsx\": \"./client/app/cycles/FormModal.jsx\",\n\t\"./cycles/form\": \"./client/app/cycles/form/index.jsx\",\n\t\"./cycles/form/\": \"./client/app/cycles/form/index.jsx\",\n\t\"./cycles/form/SignatureBuilder\": \"./client/app/cycles/form/SignatureBuilder.jsx\",\n\t\"./cycles/form/SignatureBuilder.jsx\": \"./client/app/cycles/form/SignatureBuilder.jsx\",\n\t\"./cycles/form/SignatureSelect\": \"./client/app/cycles/form/SignatureSelect.jsx\",\n\t\"./cycles/form/SignatureSelect.jsx\": \"./client/app/cycles/form/SignatureSelect.jsx\",\n\t\"./cycles/form/index\": \"./client/app/cycles/form/index.jsx\",\n\t\"./cycles/form/index.jsx\": \"./client/app/cycles/form/index.jsx\",\n\t\"./cycles/index\": \"./client/app/cycles/index.jsx\",\n\t\"./cycles/index.jsx\": \"./client/app/cycles/index.jsx\",\n\t\"./cycles/styles\": \"./client/app/cycles/styles/index.js\",\n\t\"./cycles/styles/\": \"./client/app/cycles/styles/index.js\",\n\t\"./cycles/styles/index\": \"./client/app/cycles/styles/index.js\",\n\t\"./cycles/styles/index.js\": \"./client/app/cycles/styles/index.js\",\n\t\"./dashboard/Dashboard\": \"./client/app/dashboard/Dashboard.jsx\",\n\t\"./dashboard/Dashboard.jsx\": \"./client/app/dashboard/Dashboard.jsx\",\n\t\"./dashboard/cards/CalendarCard\": \"./client/app/dashboard/cards/CalendarCard.jsx\",\n\t\"./dashboard/cards/CalendarCard.jsx\": \"./client/app/dashboard/cards/CalendarCard.jsx\",\n\t\"./dashboard/cards/DashCard\": \"./client/app/dashboard/cards/DashCard.jsx\",\n\t\"./dashboard/cards/DashCard.jsx\": \"./client/app/dashboard/cards/DashCard.jsx\",\n\t\"./dashboard/cards/EventStatsCard\": \"./client/app/dashboard/cards/EventStatsCard.jsx\",\n\t\"./dashboard/cards/EventStatsCard.jsx\": \"./client/app/dashboard/cards/EventStatsCard.jsx\",\n\t\"./dashboard/cards/MetricContainer\": \"./client/app/dashboard/cards/MetricContainer.jsx\",\n\t\"./dashboard/cards/MetricContainer.jsx\": \"./client/app/dashboard/cards/MetricContainer.jsx\",\n\t\"./dashboard/cards/TopListingsCard\": \"./client/app/dashboard/cards/TopListingsCard.jsx\",\n\t\"./dashboard/cards/TopListingsCard.jsx\": \"./client/app/dashboard/cards/TopListingsCard.jsx\",\n\t\"./dashboard/cards/calendarCardStyle\": \"./client/app/dashboard/cards/calendarCardStyle.scss\",\n\t\"./dashboard/cards/calendarCardStyle.scss\": \"./client/app/dashboard/cards/calendarCardStyle.scss\",\n\t\"./dashboard/cards/dashCardStyle\": \"./client/app/dashboard/cards/dashCardStyle.scss\",\n\t\"./dashboard/cards/dashCardStyle.scss\": \"./client/app/dashboard/cards/dashCardStyle.scss\",\n\t\"./dashboard/cards/eventStatsCardStyle\": \"./client/app/dashboard/cards/eventStatsCardStyle.scss\",\n\t\"./dashboard/cards/eventStatsCardStyle.scss\": \"./client/app/dashboard/cards/eventStatsCardStyle.scss\",\n\t\"./dashboard/cards/metricContainerStyle\": \"./client/app/dashboard/cards/metricContainerStyle.scss\",\n\t\"./dashboard/cards/metricContainerStyle.scss\": \"./client/app/dashboard/cards/metricContainerStyle.scss\",\n\t\"./dashboard/cards/pictogramDashCardStyle\": \"./client/app/dashboard/cards/pictogramDashCardStyle.scss\",\n\t\"./dashboard/cards/pictogramDashCardStyle.scss\": \"./client/app/dashboard/cards/pictogramDashCardStyle.scss\",\n\t\"./dashboard/cards/topListingsCardStyle\": \"./client/app/dashboard/cards/topListingsCardStyle.scss\",\n\t\"./dashboard/cards/topListingsCardStyle.scss\": \"./client/app/dashboard/cards/topListingsCardStyle.scss\",\n\t\"./dashboard/dashboardStore\": \"./client/app/dashboard/dashboardStore.js\",\n\t\"./dashboard/dashboardStore.js\": \"./client/app/dashboard/dashboardStore.js\",\n\t\"./dashboard/sections/AddVisCard\": \"./client/app/dashboard/sections/AddVisCard.jsx\",\n\t\"./dashboard/sections/AddVisCard.jsx\": \"./client/app/dashboard/sections/AddVisCard.jsx\",\n\t\"./dashboard/sections/CalendarStats\": \"./client/app/dashboard/sections/CalendarStats.jsx\",\n\t\"./dashboard/sections/CalendarStats.jsx\": \"./client/app/dashboard/sections/CalendarStats.jsx\",\n\t\"./dashboard/sections/DashRow\": \"./client/app/dashboard/sections/DashRow.jsx\",\n\t\"./dashboard/sections/DashRow.jsx\": \"./client/app/dashboard/sections/DashRow.jsx\",\n\t\"./dashboard/sections/EventStats\": \"./client/app/dashboard/sections/EventStats.jsx\",\n\t\"./dashboard/sections/EventStats.jsx\": \"./client/app/dashboard/sections/EventStats.jsx\",\n\t\"./dashboard/styles\": \"./client/app/dashboard/styles.scss\",\n\t\"./dashboard/styles.scss\": \"./client/app/dashboard/styles.scss\",\n\t\"./dfGraph/DfGraph\": \"./client/app/dfGraph/DfGraph.jsx\",\n\t\"./dfGraph/DfGraph.jsx\": \"./client/app/dfGraph/DfGraph.jsx\",\n\t\"./dfGraph/Graph\": \"./client/app/dfGraph/Graph.jsx\",\n\t\"./dfGraph/Graph.jsx\": \"./client/app/dfGraph/Graph.jsx\",\n\t\"./dfGraph/Marker\": \"./client/app/dfGraph/Marker.jsx\",\n\t\"./dfGraph/Marker.jsx\": \"./client/app/dfGraph/Marker.jsx\",\n\t\"./dfGraph/ProcessSelect\": \"./client/app/dfGraph/ProcessSelect.jsx\",\n\t\"./dfGraph/ProcessSelect.jsx\": \"./client/app/dfGraph/ProcessSelect.jsx\",\n\t\"./dfGraph/Sidebar/PathStatistics\": \"./client/app/dfGraph/Sidebar/PathStatistics.jsx\",\n\t\"./dfGraph/Sidebar/PathStatistics.jsx\": \"./client/app/dfGraph/Sidebar/PathStatistics.jsx\",\n\t\"./dfGraph/Sidebar/PathsOverview\": \"./client/app/dfGraph/Sidebar/PathsOverview.jsx\",\n\t\"./dfGraph/Sidebar/PathsOverview.jsx\": \"./client/app/dfGraph/Sidebar/PathsOverview.jsx\",\n\t\"./dfGraph/Sidebar/Sidebar\": \"./client/app/dfGraph/Sidebar/Sidebar.jsx\",\n\t\"./dfGraph/Sidebar/Sidebar.jsx\": \"./client/app/dfGraph/Sidebar/Sidebar.jsx\",\n\t\"./dfGraph/Sidebar/StepDetails\": \"./client/app/dfGraph/Sidebar/StepDetails.jsx\",\n\t\"./dfGraph/Sidebar/StepDetails.jsx\": \"./client/app/dfGraph/Sidebar/StepDetails.jsx\",\n\t\"./dfGraph/api\": \"./client/app/dfGraph/api.js\",\n\t\"./dfGraph/api.js\": \"./client/app/dfGraph/api.js\",\n\t\"./dfGraph/cacheSettings\": \"./client/app/dfGraph/cacheSettings.js\",\n\t\"./dfGraph/cacheSettings.js\": \"./client/app/dfGraph/cacheSettings.js\",\n\t\"./dfGraph/commonPropTypes\": \"./client/app/dfGraph/commonPropTypes.js\",\n\t\"./dfGraph/commonPropTypes.js\": \"./client/app/dfGraph/commonPropTypes.js\",\n\t\"./dfGraph/controls/ExportProcess\": \"./client/app/dfGraph/controls/ExportProcess.jsx\",\n\t\"./dfGraph/controls/ExportProcess.jsx\": \"./client/app/dfGraph/controls/ExportProcess.jsx\",\n\t\"./dfGraph/dfgColors\": \"./client/app/dfGraph/dfgColors.js\",\n\t\"./dfGraph/dfgColors.js\": \"./client/app/dfGraph/dfgColors.js\",\n\t\"./dfGraph/edgeTypes/ElkEdge\": \"./client/app/dfGraph/edgeTypes/ElkEdge.jsx\",\n\t\"./dfGraph/edgeTypes/ElkEdge.jsx\": \"./client/app/dfGraph/edgeTypes/ElkEdge.jsx\",\n\t\"./dfGraph/nodeTypes/EndNode\": \"./client/app/dfGraph/nodeTypes/EndNode.jsx\",\n\t\"./dfGraph/nodeTypes/EndNode.jsx\": \"./client/app/dfGraph/nodeTypes/EndNode.jsx\",\n\t\"./dfGraph/nodeTypes/StartNode\": \"./client/app/dfGraph/nodeTypes/StartNode.jsx\",\n\t\"./dfGraph/nodeTypes/StartNode.jsx\": \"./client/app/dfGraph/nodeTypes/StartNode.jsx\",\n\t\"./dfGraph/nodeTypes/StepNode\": \"./client/app/dfGraph/nodeTypes/StepNode.jsx\",\n\t\"./dfGraph/nodeTypes/StepNode.jsx\": \"./client/app/dfGraph/nodeTypes/StepNode.jsx\",\n\t\"./dfGraph/styles\": \"./client/app/dfGraph/styles/index.js\",\n\t\"./dfGraph/styles/\": \"./client/app/dfGraph/styles/index.js\",\n\t\"./dfGraph/styles/index\": \"./client/app/dfGraph/styles/index.js\",\n\t\"./dfGraph/styles/index.js\": \"./client/app/dfGraph/styles/index.js\",\n\t\"./diagram_composer/DiagramComposer\": \"./client/app/diagram_composer/DiagramComposer.jsx\",\n\t\"./diagram_composer/DiagramComposer.jsx\": \"./client/app/diagram_composer/DiagramComposer.jsx\",\n\t\"./diagram_composer/DiagramComposerEvents\": \"./client/app/diagram_composer/DiagramComposerEvents.js\",\n\t\"./diagram_composer/DiagramComposerEvents.js\": \"./client/app/diagram_composer/DiagramComposerEvents.js\",\n\t\"./diagram_composer/config/config_halo\": \"./client/app/diagram_composer/config/config_halo.js\",\n\t\"./diagram_composer/config/config_halo.js\": \"./client/app/diagram_composer/config/config_halo.js\",\n\t\"./diagram_composer/config/config_selection\": \"./client/app/diagram_composer/config/config_selection.js\",\n\t\"./diagram_composer/config/config_selection.js\": \"./client/app/diagram_composer/config/config_selection.js\",\n\t\"./diagram_composer/config/config_shapes\": \"./client/app/diagram_composer/config/config_shapes.js\",\n\t\"./diagram_composer/config/config_shapes.js\": \"./client/app/diagram_composer/config/config_shapes.js\",\n\t\"./diagram_composer/controlsBar/ControlsBar\": \"./client/app/diagram_composer/controlsBar/ControlsBar.jsx\",\n\t\"./diagram_composer/controlsBar/ControlsBar.jsx\": \"./client/app/diagram_composer/controlsBar/ControlsBar.jsx\",\n\t\"./diagram_composer/controlsBar/SaveModal\": \"./client/app/diagram_composer/controlsBar/SaveModal.jsx\",\n\t\"./diagram_composer/controlsBar/SaveModal.jsx\": \"./client/app/diagram_composer/controlsBar/SaveModal.jsx\",\n\t\"./diagram_composer/controlsBar/generatePdd\": \"./client/app/diagram_composer/controlsBar/generatePdd.js\",\n\t\"./diagram_composer/controlsBar/generatePdd.js\": \"./client/app/diagram_composer/controlsBar/generatePdd.js\",\n\t\"./diagram_composer/diagram\": \"./client/app/diagram_composer/diagram.scss\",\n\t\"./diagram_composer/diagram.scss\": \"./client/app/diagram_composer/diagram.scss\",\n\t\"./diagram_composer/diagramComposerStyle\": \"./client/app/diagram_composer/diagramComposerStyle.scss\",\n\t\"./diagram_composer/diagramComposerStyle.scss\": \"./client/app/diagram_composer/diagramComposerStyle.scss\",\n\t\"./diagram_composer/diagramInspector/DiagramInspector\": \"./client/app/diagram_composer/diagramInspector/DiagramInspector.jsx\",\n\t\"./diagram_composer/diagramInspector/DiagramInspector.jsx\": \"./client/app/diagram_composer/diagramInspector/DiagramInspector.jsx\",\n\t\"./diagram_composer/diagramInspector/diagramInspectorStyle\": \"./client/app/diagram_composer/diagramInspector/diagramInspectorStyle.scss\",\n\t\"./diagram_composer/diagramInspector/diagramInspectorStyle.scss\": \"./client/app/diagram_composer/diagramInspector/diagramInspectorStyle.scss\",\n\t\"./diagram_composer/leftPanel/DecisionMenuItem\": \"./client/app/diagram_composer/leftPanel/DecisionMenuItem.jsx\",\n\t\"./diagram_composer/leftPanel/DecisionMenuItem.jsx\": \"./client/app/diagram_composer/leftPanel/DecisionMenuItem.jsx\",\n\t\"./diagram_composer/leftPanel/GroupMenuItem\": \"./client/app/diagram_composer/leftPanel/GroupMenuItem.jsx\",\n\t\"./diagram_composer/leftPanel/GroupMenuItem.jsx\": \"./client/app/diagram_composer/leftPanel/GroupMenuItem.jsx\",\n\t\"./diagram_composer/leftPanel/LeftPanel\": \"./client/app/diagram_composer/leftPanel/LeftPanel.jsx\",\n\t\"./diagram_composer/leftPanel/LeftPanel.jsx\": \"./client/app/diagram_composer/leftPanel/LeftPanel.jsx\",\n\t\"./diagram_composer/leftPanel/ProcessMenuItem\": \"./client/app/diagram_composer/leftPanel/ProcessMenuItem.jsx\",\n\t\"./diagram_composer/leftPanel/ProcessMenuItem.jsx\": \"./client/app/diagram_composer/leftPanel/ProcessMenuItem.jsx\",\n\t\"./diagram_composer/leftPanel/leftPanelStyle\": \"./client/app/diagram_composer/leftPanel/leftPanelStyle.scss\",\n\t\"./diagram_composer/leftPanel/leftPanelStyle.scss\": \"./client/app/diagram_composer/leftPanel/leftPanelStyle.scss\",\n\t\"./diagram_composer/leftPanel/menuItem\": \"./client/app/diagram_composer/leftPanel/menuItem.scss\",\n\t\"./diagram_composer/leftPanel/menuItem.scss\": \"./client/app/diagram_composer/leftPanel/menuItem.scss\",\n\t\"./diagram_composer/shape_defs/Rectangle\": \"./client/app/diagram_composer/shape_defs/Rectangle.js\",\n\t\"./diagram_composer/shape_defs/Rectangle.js\": \"./client/app/diagram_composer/shape_defs/Rectangle.js\",\n\t\"./diagram_composer/store/DiagramComposerStore\": \"./client/app/diagram_composer/store/DiagramComposerStore.js\",\n\t\"./diagram_composer/store/DiagramComposerStore.js\": \"./client/app/diagram_composer/store/DiagramComposerStore.js\",\n\t\"./diagram_composer/utils\": \"./client/app/diagram_composer/utils.js\",\n\t\"./diagram_composer/utils.js\": \"./client/app/diagram_composer/utils.js\",\n\t\"./events/EventColumns\": \"./client/app/events/EventColumns.js\",\n\t\"./events/EventColumns.js\": \"./client/app/events/EventColumns.js\",\n\t\"./events/EventContext\": \"./client/app/events/EventContext.jsx\",\n\t\"./events/EventContext.jsx\": \"./client/app/events/EventContext.jsx\",\n\t\"./events/EventDeleteConfirm\": \"./client/app/events/EventDeleteConfirm.jsx\",\n\t\"./events/EventDeleteConfirm.jsx\": \"./client/app/events/EventDeleteConfirm.jsx\",\n\t\"./events/EventDetails\": \"./client/app/events/EventDetails.jsx\",\n\t\"./events/EventDetails.jsx\": \"./client/app/events/EventDetails.jsx\",\n\t\"./events/EventExportConfirm\": \"./client/app/events/EventExportConfirm.jsx\",\n\t\"./events/EventExportConfirm.jsx\": \"./client/app/events/EventExportConfirm.jsx\",\n\t\"./events/EventFilter\": \"./client/app/events/EventFilter.jsx\",\n\t\"./events/EventFilter.jsx\": \"./client/app/events/EventFilter.jsx\",\n\t\"./events/EventList\": \"./client/app/events/EventList.jsx\",\n\t\"./events/EventList.jsx\": \"./client/app/events/EventList.jsx\",\n\t\"./events/Events\": \"./client/app/events/Events.jsx\",\n\t\"./events/Events.jsx\": \"./client/app/events/Events.jsx\",\n\t\"./events/Export\": \"./client/app/events/Export/index.jsx\",\n\t\"./events/Export/\": \"./client/app/events/Export/index.jsx\",\n\t\"./events/Export/index\": \"./client/app/events/Export/index.jsx\",\n\t\"./events/Export/index.jsx\": \"./client/app/events/Export/index.jsx\",\n\t\"./events/FilteredEvents\": \"./client/app/events/FilteredEvents.jsx\",\n\t\"./events/FilteredEvents.jsx\": \"./client/app/events/FilteredEvents.jsx\",\n\t\"./events/ObserversOverlay\": \"./client/app/events/ObserversOverlay/index.jsx\",\n\t\"./events/ObserversOverlay/\": \"./client/app/events/ObserversOverlay/index.jsx\",\n\t\"./events/ObserversOverlay/index\": \"./client/app/events/ObserversOverlay/index.jsx\",\n\t\"./events/ObserversOverlay/index.jsx\": \"./client/app/events/ObserversOverlay/index.jsx\",\n\t\"./events/UploadsModal/UploadsModal\": \"./client/app/events/UploadsModal/UploadsModal.jsx\",\n\t\"./events/UploadsModal/UploadsModal.jsx\": \"./client/app/events/UploadsModal/UploadsModal.jsx\",\n\t\"./events/__tests__/EventFilter.test\": \"./client/app/events/__tests__/EventFilter.test.jsx\",\n\t\"./events/__tests__/EventFilter.test.jsx\": \"./client/app/events/__tests__/EventFilter.test.jsx\",\n\t\"./events/__tests__/__snapshots__/EventFilter.test.jsx.snap\": \"./client/app/events/__tests__/__snapshots__/EventFilter.test.jsx.snap\",\n\t\"./events/eventDetailsStyle\": \"./client/app/events/eventDetailsStyle.scss\",\n\t\"./events/eventDetailsStyle.scss\": \"./client/app/events/eventDetailsStyle.scss\",\n\t\"./events/fetchEventCount\": \"./client/app/events/fetchEventCount.js\",\n\t\"./events/fetchEventCount.js\": \"./client/app/events/fetchEventCount.js\",\n\t\"./events/styles\": \"./client/app/events/styles/index.js\",\n\t\"./events/styles/\": \"./client/app/events/styles/index.js\",\n\t\"./events/styles/index\": \"./client/app/events/styles/index.js\",\n\t\"./events/styles/index.js\": \"./client/app/events/styles/index.js\",\n\t\"./header/Header\": \"./client/app/header/Header.jsx\",\n\t\"./header/Header.jsx\": \"./client/app/header/Header.jsx\",\n\t\"./header/HeaderContext\": \"./client/app/header/HeaderContext.jsx\",\n\t\"./header/HeaderContext.jsx\": \"./client/app/header/HeaderContext.jsx\",\n\t\"./header/styles\": \"./client/app/header/styles/index.js\",\n\t\"./header/styles/\": \"./client/app/header/styles/index.js\",\n\t\"./header/styles/index\": \"./client/app/header/styles/index.js\",\n\t\"./header/styles/index.js\": \"./client/app/header/styles/index.js\",\n\t\"./inspectors/DecisionNoEdit\": \"./client/app/inspectors/DecisionNoEdit.jsx\",\n\t\"./inspectors/DecisionNoEdit.jsx\": \"./client/app/inspectors/DecisionNoEdit.jsx\",\n\t\"./inspectors/EditDecisionInPlace\": \"./client/app/inspectors/EditDecisionInPlace.jsx\",\n\t\"./inspectors/EditDecisionInPlace.jsx\": \"./client/app/inspectors/EditDecisionInPlace.jsx\",\n\t\"./inspectors/EditDiagramNode\": \"./client/app/inspectors/EditDiagramNode.jsx\",\n\t\"./inspectors/EditDiagramNode.jsx\": \"./client/app/inspectors/EditDiagramNode.jsx\",\n\t\"./inspectors/decisionNoEditStyle\": \"./client/app/inspectors/decisionNoEditStyle.scss\",\n\t\"./inspectors/decisionNoEditStyle.scss\": \"./client/app/inspectors/decisionNoEditStyle.scss\",\n\t\"./instances_viewer/AnnotationControls\": \"./client/app/instances_viewer/AnnotationControls.jsx\",\n\t\"./instances_viewer/AnnotationControls.jsx\": \"./client/app/instances_viewer/AnnotationControls.jsx\",\n\t\"./instances_viewer/AnnotationTopBar\": \"./client/app/instances_viewer/AnnotationTopBar.jsx\",\n\t\"./instances_viewer/AnnotationTopBar.jsx\": \"./client/app/instances_viewer/AnnotationTopBar.jsx\",\n\t\"./instances_viewer/Constants\": \"./client/app/instances_viewer/Constants.js\",\n\t\"./instances_viewer/Constants.js\": \"./client/app/instances_viewer/Constants.js\",\n\t\"./instances_viewer/EventDetailBar\": \"./client/app/instances_viewer/EventDetailBar.jsx\",\n\t\"./instances_viewer/EventDetailBar.jsx\": \"./client/app/instances_viewer/EventDetailBar.jsx\",\n\t\"./instances_viewer/ExportDropdown\": \"./client/app/instances_viewer/ExportDropdown.jsx\",\n\t\"./instances_viewer/ExportDropdown.jsx\": \"./client/app/instances_viewer/ExportDropdown.jsx\",\n\t\"./instances_viewer/InstancesViewer\": \"./client/app/instances_viewer/InstancesViewer.jsx\",\n\t\"./instances_viewer/InstancesViewer.jsx\": \"./client/app/instances_viewer/InstancesViewer.jsx\",\n\t\"./instances_viewer/ProcessControls\": \"./client/app/instances_viewer/ProcessControls.jsx\",\n\t\"./instances_viewer/ProcessControls.jsx\": \"./client/app/instances_viewer/ProcessControls.jsx\",\n\t\"./instances_viewer/ProcessModal\": \"./client/app/instances_viewer/ProcessModal.jsx\",\n\t\"./instances_viewer/ProcessModal.jsx\": \"./client/app/instances_viewer/ProcessModal.jsx\",\n\t\"./instances_viewer/Signature\": \"./client/app/instances_viewer/Signature.jsx\",\n\t\"./instances_viewer/Signature.jsx\": \"./client/app/instances_viewer/Signature.jsx\",\n\t\"./instances_viewer/SignatureDetailsBar\": \"./client/app/instances_viewer/SignatureDetailsBar.jsx\",\n\t\"./instances_viewer/SignatureDetailsBar.jsx\": \"./client/app/instances_viewer/SignatureDetailsBar.jsx\",\n\t\"./instances_viewer/controls/AnnotateButton\": \"./client/app/instances_viewer/controls/AnnotateButton.jsx\",\n\t\"./instances_viewer/controls/AnnotateButton.jsx\": \"./client/app/instances_viewer/controls/AnnotateButton.jsx\",\n\t\"./instances_viewer/controls/EventFilter\": \"./client/app/instances_viewer/controls/EventFilter.jsx\",\n\t\"./instances_viewer/controls/EventFilter.jsx\": \"./client/app/instances_viewer/controls/EventFilter.jsx\",\n\t\"./instances_viewer/controls/InstancesFilter\": \"./client/app/instances_viewer/controls/InstancesFilter.jsx\",\n\t\"./instances_viewer/controls/InstancesFilter.jsx\": \"./client/app/instances_viewer/controls/InstancesFilter.jsx\",\n\t\"./instances_viewer/controls/MachineFilter\": \"./client/app/instances_viewer/controls/MachineFilter.jsx\",\n\t\"./instances_viewer/controls/MachineFilter.jsx\": \"./client/app/instances_viewer/controls/MachineFilter.jsx\",\n\t\"./instances_viewer/controls/PathFilter\": \"./client/app/instances_viewer/controls/PathFilter.jsx\",\n\t\"./instances_viewer/controls/PathFilter.jsx\": \"./client/app/instances_viewer/controls/PathFilter.jsx\",\n\t\"./instances_viewer/controls/PlaybackControls\": \"./client/app/instances_viewer/controls/PlaybackControls.jsx\",\n\t\"./instances_viewer/controls/PlaybackControls.jsx\": \"./client/app/instances_viewer/controls/PlaybackControls.jsx\",\n\t\"./instances_viewer/controls/__tests__\": \"./client/app/instances_viewer/controls/__tests__/index.jsx\",\n\t\"./instances_viewer/controls/__tests__/\": \"./client/app/instances_viewer/controls/__tests__/index.jsx\",\n\t\"./instances_viewer/controls/__tests__/__snapshots__/index.jsx.snap\": \"./client/app/instances_viewer/controls/__tests__/__snapshots__/index.jsx.snap\",\n\t\"./instances_viewer/controls/__tests__/index\": \"./client/app/instances_viewer/controls/__tests__/index.jsx\",\n\t\"./instances_viewer/controls/__tests__/index.jsx\": \"./client/app/instances_viewer/controls/__tests__/index.jsx\",\n\t\"./instances_viewer/dataUtils\": \"./client/app/instances_viewer/dataUtils.js\",\n\t\"./instances_viewer/dataUtils.js\": \"./client/app/instances_viewer/dataUtils.js\",\n\t\"./instances_viewer/eventDetailBarStyle\": \"./client/app/instances_viewer/eventDetailBarStyle.scss\",\n\t\"./instances_viewer/eventDetailBarStyle.scss\": \"./client/app/instances_viewer/eventDetailBarStyle.scss\",\n\t\"./instances_viewer/instancesViewerStyle\": \"./client/app/instances_viewer/instancesViewerStyle.scss\",\n\t\"./instances_viewer/instancesViewerStyle.scss\": \"./client/app/instances_viewer/instancesViewerStyle.scss\",\n\t\"./instances_viewer/signatureDetailsBarStyle\": \"./client/app/instances_viewer/signatureDetailsBarStyle.scss\",\n\t\"./instances_viewer/signatureDetailsBarStyle.scss\": \"./client/app/instances_viewer/signatureDetailsBarStyle.scss\",\n\t\"./instances_viewer/styles\": \"./client/app/instances_viewer/styles/index.js\",\n\t\"./instances_viewer/styles/\": \"./client/app/instances_viewer/styles/index.js\",\n\t\"./instances_viewer/styles/index\": \"./client/app/instances_viewer/styles/index.js\",\n\t\"./instances_viewer/styles/index.js\": \"./client/app/instances_viewer/styles/index.js\",\n\t\"./instances_viewer/validationHooks\": \"./client/app/instances_viewer/validationHooks.jsx\",\n\t\"./instances_viewer/validationHooks.jsx\": \"./client/app/instances_viewer/validationHooks.jsx\",\n\t\"./mining/ImportSuccess\": \"./client/app/mining/ImportSuccess.jsx\",\n\t\"./mining/ImportSuccess.jsx\": \"./client/app/mining/ImportSuccess.jsx\",\n\t\"./mining/MiningRunList\": \"./client/app/mining/MiningRunList.jsx\",\n\t\"./mining/MiningRunList.jsx\": \"./client/app/mining/MiningRunList.jsx\",\n\t\"./mining/ProcessesTable\": \"./client/app/mining/ProcessesTable.jsx\",\n\t\"./mining/ProcessesTable.jsx\": \"./client/app/mining/ProcessesTable.jsx\",\n\t\"./mining/form/AdvancedForm\": \"./client/app/mining/form/AdvancedForm.jsx\",\n\t\"./mining/form/AdvancedForm.jsx\": \"./client/app/mining/form/AdvancedForm.jsx\",\n\t\"./mining/form/BasicForm\": \"./client/app/mining/form/BasicForm.jsx\",\n\t\"./mining/form/BasicForm.jsx\": \"./client/app/mining/form/BasicForm.jsx\",\n\t\"./mining/form/MiningRunForms\": \"./client/app/mining/form/MiningRunForms.jsx\",\n\t\"./mining/form/MiningRunForms.jsx\": \"./client/app/mining/form/MiningRunForms.jsx\",\n\t\"./mining/form/MiningRunModal\": \"./client/app/mining/form/MiningRunModal.jsx\",\n\t\"./mining/form/MiningRunModal.jsx\": \"./client/app/mining/form/MiningRunModal.jsx\",\n\t\"./mining/form/RecipesForm\": \"./client/app/mining/form/RecipesForm.jsx\",\n\t\"./mining/form/RecipesForm.jsx\": \"./client/app/mining/form/RecipesForm.jsx\",\n\t\"./mining/form/ReportForm\": \"./client/app/mining/form/ReportForm.jsx\",\n\t\"./mining/form/ReportForm.jsx\": \"./client/app/mining/form/ReportForm.jsx\",\n\t\"./mining/form/helpers\": \"./client/app/mining/form/helpers.js\",\n\t\"./mining/form/helpers.js\": \"./client/app/mining/form/helpers.js\",\n\t\"./mining/form/styles\": \"./client/app/mining/form/styles/index.js\",\n\t\"./mining/form/styles/\": \"./client/app/mining/form/styles/index.js\",\n\t\"./mining/form/styles/index\": \"./client/app/mining/form/styles/index.js\",\n\t\"./mining/form/styles/index.js\": \"./client/app/mining/form/styles/index.js\",\n\t\"./mining/form/subComponents/AdvancedMiningParamFields\": \"./client/app/mining/form/subComponents/AdvancedMiningParamFields.jsx\",\n\t\"./mining/form/subComponents/AdvancedMiningParamFields.jsx\": \"./client/app/mining/form/subComponents/AdvancedMiningParamFields.jsx\",\n\t\"./mining/form/subComponents/FormFooter\": \"./client/app/mining/form/subComponents/FormFooter.jsx\",\n\t\"./mining/form/subComponents/FormFooter.jsx\": \"./client/app/mining/form/subComponents/FormFooter.jsx\",\n\t\"./mining/form/subComponents/MustIncludesGroupsModal\": \"./client/app/mining/form/subComponents/MustIncludesGroupsModal.jsx\",\n\t\"./mining/form/subComponents/MustIncludesGroupsModal.jsx\": \"./client/app/mining/form/subComponents/MustIncludesGroupsModal.jsx\",\n\t\"./mining/form/subComponents/NestedSignaturesBuilder/NestedSignaturesBuilder\": \"./client/app/mining/form/subComponents/NestedSignaturesBuilder/NestedSignaturesBuilder.jsx\",\n\t\"./mining/form/subComponents/NestedSignaturesBuilder/NestedSignaturesBuilder.jsx\": \"./client/app/mining/form/subComponents/NestedSignaturesBuilder/NestedSignaturesBuilder.jsx\",\n\t\"./mining/form/subComponents/NestedSignaturesBuilder/RecursiveSignaturesGroup\": \"./client/app/mining/form/subComponents/NestedSignaturesBuilder/RecursiveSignaturesGroup.jsx\",\n\t\"./mining/form/subComponents/NestedSignaturesBuilder/RecursiveSignaturesGroup.jsx\": \"./client/app/mining/form/subComponents/NestedSignaturesBuilder/RecursiveSignaturesGroup.jsx\",\n\t\"./mining/form/subComponents/NestedSignaturesBuilder/SignatureForm\": \"./client/app/mining/form/subComponents/NestedSignaturesBuilder/SignatureForm.jsx\",\n\t\"./mining/form/subComponents/NestedSignaturesBuilder/SignatureForm.jsx\": \"./client/app/mining/form/subComponents/NestedSignaturesBuilder/SignatureForm.jsx\",\n\t\"./mining/form/subComponents/SignatureBuilder\": \"./client/app/mining/form/subComponents/SignatureBuilder.jsx\",\n\t\"./mining/form/subComponents/SignatureBuilder.jsx\": \"./client/app/mining/form/subComponents/SignatureBuilder.jsx\",\n\t\"./mining/miningRunImportSuccess\": \"./client/app/mining/miningRunImportSuccess.jsx\",\n\t\"./mining/miningRunImportSuccess.jsx\": \"./client/app/mining/miningRunImportSuccess.jsx\",\n\t\"./mining/styles\": \"./client/app/mining/styles/index.js\",\n\t\"./mining/styles/\": \"./client/app/mining/styles/index.js\",\n\t\"./mining/styles/index\": \"./client/app/mining/styles/index.js\",\n\t\"./mining/styles/index.js\": \"./client/app/mining/styles/index.js\",\n\t\"./mining/tableComponents/ActionsMenu\": \"./client/app/mining/tableComponents/ActionsMenu.jsx\",\n\t\"./mining/tableComponents/ActionsMenu.jsx\": \"./client/app/mining/tableComponents/ActionsMenu.jsx\",\n\t\"./mining/tableComponents/MiningFilter\": \"./client/app/mining/tableComponents/MiningFilter.jsx\",\n\t\"./mining/tableComponents/MiningFilter.jsx\": \"./client/app/mining/tableComponents/MiningFilter.jsx\",\n\t\"./mining/tableComponents/MiningRunDetails\": \"./client/app/mining/tableComponents/MiningRunDetails.jsx\",\n\t\"./mining/tableComponents/MiningRunDetails.jsx\": \"./client/app/mining/tableComponents/MiningRunDetails.jsx\",\n\t\"./mining/tableComponents/NestedSignatureDetails\": \"./client/app/mining/tableComponents/NestedSignatureDetails.jsx\",\n\t\"./mining/tableComponents/NestedSignatureDetails.jsx\": \"./client/app/mining/tableComponents/NestedSignatureDetails.jsx\",\n\t\"./mining/tableComponents/miningRunDetailsStyles\": \"./client/app/mining/tableComponents/miningRunDetailsStyles.js\",\n\t\"./mining/tableComponents/miningRunDetailsStyles.js\": \"./client/app/mining/tableComponents/miningRunDetailsStyles.js\",\n\t\"./noAccess/NoAccess\": \"./client/app/noAccess/NoAccess.jsx\",\n\t\"./noAccess/NoAccess.jsx\": \"./client/app/noAccess/NoAccess.jsx\",\n\t\"./observers/ConfigureModal\": \"./client/app/observers/ConfigureModal/index.jsx\",\n\t\"./observers/ConfigureModal/\": \"./client/app/observers/ConfigureModal/index.jsx\",\n\t\"./observers/ConfigureModal/AppList\": \"./client/app/observers/ConfigureModal/AppList.jsx\",\n\t\"./observers/ConfigureModal/AppList.jsx\": \"./client/app/observers/ConfigureModal/AppList.jsx\",\n\t\"./observers/ConfigureModal/AppListInput\": \"./client/app/observers/ConfigureModal/AppListInput.jsx\",\n\t\"./observers/ConfigureModal/AppListInput.jsx\": \"./client/app/observers/ConfigureModal/AppListInput.jsx\",\n\t\"./observers/ConfigureModal/Constants\": \"./client/app/observers/ConfigureModal/Constants.js\",\n\t\"./observers/ConfigureModal/Constants.js\": \"./client/app/observers/ConfigureModal/Constants.js\",\n\t\"./observers/ConfigureModal/index\": \"./client/app/observers/ConfigureModal/index.jsx\",\n\t\"./observers/ConfigureModal/index.jsx\": \"./client/app/observers/ConfigureModal/index.jsx\",\n\t\"./observers/ConfigureModal/styles\": \"./client/app/observers/ConfigureModal/styles/index.js\",\n\t\"./observers/ConfigureModal/styles/\": \"./client/app/observers/ConfigureModal/styles/index.js\",\n\t\"./observers/ConfigureModal/styles/index\": \"./client/app/observers/ConfigureModal/styles/index.js\",\n\t\"./observers/ConfigureModal/styles/index.js\": \"./client/app/observers/ConfigureModal/styles/index.js\",\n\t\"./observers/Observers\": \"./client/app/observers/Observers.jsx\",\n\t\"./observers/Observers.jsx\": \"./client/app/observers/Observers.jsx\",\n\t\"./observers/common/Metric\": \"./client/app/observers/common/Metric.jsx\",\n\t\"./observers/common/Metric.jsx\": \"./client/app/observers/common/Metric.jsx\",\n\t\"./observers/common/Util\": \"./client/app/observers/common/Util.js\",\n\t\"./observers/common/Util.js\": \"./client/app/observers/common/Util.js\",\n\t\"./observers/common/downloadCSV\": \"./client/app/observers/common/downloadCSV.js\",\n\t\"./observers/common/downloadCSV.js\": \"./client/app/observers/common/downloadCSV.js\",\n\t\"./observers/styles\": \"./client/app/observers/styles/index.js\",\n\t\"./observers/styles/\": \"./client/app/observers/styles/index.js\",\n\t\"./observers/styles/index\": \"./client/app/observers/styles/index.js\",\n\t\"./observers/styles/index.js\": \"./client/app/observers/styles/index.js\",\n\t\"./observers/subComponents/ActionsMenu\": \"./client/app/observers/subComponents/ActionsMenu.jsx\",\n\t\"./observers/subComponents/ActionsMenu.jsx\": \"./client/app/observers/subComponents/ActionsMenu.jsx\",\n\t\"./observers/subComponents/CaptureButtons\": \"./client/app/observers/subComponents/CaptureButtons.jsx\",\n\t\"./observers/subComponents/CaptureButtons.jsx\": \"./client/app/observers/subComponents/CaptureButtons.jsx\",\n\t\"./observers/subComponents/DataMetricsCards\": \"./client/app/observers/subComponents/DataMetricsCards.jsx\",\n\t\"./observers/subComponents/DataMetricsCards.jsx\": \"./client/app/observers/subComponents/DataMetricsCards.jsx\",\n\t\"./observers/subComponents/FirstDetected\": \"./client/app/observers/subComponents/FirstDetected.jsx\",\n\t\"./observers/subComponents/FirstDetected.jsx\": \"./client/app/observers/subComponents/FirstDetected.jsx\",\n\t\"./observers/subComponents/LastDetected\": \"./client/app/observers/subComponents/LastDetected.jsx\",\n\t\"./observers/subComponents/LastDetected.jsx\": \"./client/app/observers/subComponents/LastDetected.jsx\",\n\t\"./observers/subComponents/MiniSparkByte\": \"./client/app/observers/subComponents/MiniSparkByte.jsx\",\n\t\"./observers/subComponents/MiniSparkByte.jsx\": \"./client/app/observers/subComponents/MiniSparkByte.jsx\",\n\t\"./observers/subComponents/MiniSparkEvent\": \"./client/app/observers/subComponents/MiniSparkEvent.jsx\",\n\t\"./observers/subComponents/MiniSparkEvent.jsx\": \"./client/app/observers/subComponents/MiniSparkEvent.jsx\",\n\t\"./observers/viewer/ObserverViewer\": \"./client/app/observers/viewer/ObserverViewer.jsx\",\n\t\"./observers/viewer/ObserverViewer.jsx\": \"./client/app/observers/viewer/ObserverViewer.jsx\",\n\t\"./observers/viewer/observerViewerStyle\": \"./client/app/observers/viewer/observerViewerStyle.scss\",\n\t\"./observers/viewer/observerViewerStyle.scss\": \"./client/app/observers/viewer/observerViewerStyle.scss\",\n\t\"./observers/viewer/sections/EventsChart\": \"./client/app/observers/viewer/sections/EventsChart.jsx\",\n\t\"./observers/viewer/sections/EventsChart.jsx\": \"./client/app/observers/viewer/sections/EventsChart.jsx\",\n\t\"./observers/viewer/sections/MetadataTable\": \"./client/app/observers/viewer/sections/MetadataTable.jsx\",\n\t\"./observers/viewer/sections/MetadataTable.jsx\": \"./client/app/observers/viewer/sections/MetadataTable.jsx\",\n\t\"./observers/viewer/sections/metadataTableStyle\": \"./client/app/observers/viewer/sections/metadataTableStyle.scss\",\n\t\"./observers/viewer/sections/metadataTableStyle.scss\": \"./client/app/observers/viewer/sections/metadataTableStyle.scss\",\n\t\"./pdds/ActionsContainer\": \"./client/app/pdds/ActionsContainer.jsx\",\n\t\"./pdds/ActionsContainer.jsx\": \"./client/app/pdds/ActionsContainer.jsx\",\n\t\"./pdds/CoeForm/CoeForm\": \"./client/app/pdds/CoeForm/CoeForm.jsx\",\n\t\"./pdds/CoeForm/CoeForm.jsx\": \"./client/app/pdds/CoeForm/CoeForm.jsx\",\n\t\"./pdds/CoeForm/FormFooter\": \"./client/app/pdds/CoeForm/FormFooter.jsx\",\n\t\"./pdds/CoeForm/FormFooter.jsx\": \"./client/app/pdds/CoeForm/FormFooter.jsx\",\n\t\"./pdds/CoeForm/FormPage\": \"./client/app/pdds/CoeForm/FormPage.jsx\",\n\t\"./pdds/CoeForm/FormPage.jsx\": \"./client/app/pdds/CoeForm/FormPage.jsx\",\n\t\"./pdds/CoeForm/coeApis\": \"./client/app/pdds/CoeForm/coeApis.js\",\n\t\"./pdds/CoeForm/coeApis.js\": \"./client/app/pdds/CoeForm/coeApis.js\",\n\t\"./pdds/CoeForm/formPages\": \"./client/app/pdds/CoeForm/formPages.js\",\n\t\"./pdds/CoeForm/formPages.js\": \"./client/app/pdds/CoeForm/formPages.js\",\n\t\"./pdds/OpportunitySubmittedDialogue\": \"./client/app/pdds/OpportunitySubmittedDialogue.jsx\",\n\t\"./pdds/OpportunitySubmittedDialogue.jsx\": \"./client/app/pdds/OpportunitySubmittedDialogue.jsx\",\n\t\"./pdds/PddGenToast\": \"./client/app/pdds/PddGenToast.jsx\",\n\t\"./pdds/PddGenToast.jsx\": \"./client/app/pdds/PddGenToast.jsx\",\n\t\"./pdds/PddList\": \"./client/app/pdds/PddList.jsx\",\n\t\"./pdds/PddList.jsx\": \"./client/app/pdds/PddList.jsx\",\n\t\"./pdds/PddListCells\": \"./client/app/pdds/PddListCells.jsx\",\n\t\"./pdds/PddListCells.jsx\": \"./client/app/pdds/PddListCells.jsx\",\n\t\"./pdds/__tests__/PddGenToast.test\": \"./client/app/pdds/__tests__/PddGenToast.test.jsx\",\n\t\"./pdds/__tests__/PddGenToast.test.jsx\": \"./client/app/pdds/__tests__/PddGenToast.test.jsx\",\n\t\"./pdds/__tests__/__snapshots__/PddGenToast.test.jsx.snap\": \"./client/app/pdds/__tests__/__snapshots__/PddGenToast.test.jsx.snap\",\n\t\"./pdds/pddGenToastStyle\": \"./client/app/pdds/pddGenToastStyle.scss\",\n\t\"./pdds/pddGenToastStyle.scss\": \"./client/app/pdds/pddGenToastStyle.scss\",\n\t\"./process_explorer/GroupsModal/EditGroupForm\": \"./client/app/process_explorer/GroupsModal/EditGroupForm.jsx\",\n\t\"./process_explorer/GroupsModal/EditGroupForm.jsx\": \"./client/app/process_explorer/GroupsModal/EditGroupForm.jsx\",\n\t\"./process_explorer/GroupsModal/GroupsModal\": \"./client/app/process_explorer/GroupsModal/GroupsModal.jsx\",\n\t\"./process_explorer/GroupsModal/GroupsModal.jsx\": \"./client/app/process_explorer/GroupsModal/GroupsModal.jsx\",\n\t\"./process_explorer/GroupsModal/NewGroupForm\": \"./client/app/process_explorer/GroupsModal/NewGroupForm.jsx\",\n\t\"./process_explorer/GroupsModal/NewGroupForm.jsx\": \"./client/app/process_explorer/GroupsModal/NewGroupForm.jsx\",\n\t\"./process_explorer/GroupsModal/common/GroupForm\": \"./client/app/process_explorer/GroupsModal/common/GroupForm.jsx\",\n\t\"./process_explorer/GroupsModal/common/GroupForm.jsx\": \"./client/app/process_explorer/GroupsModal/common/GroupForm.jsx\",\n\t\"./process_explorer/GroupsModal/groupsModalStyle\": \"./client/app/process_explorer/GroupsModal/groupsModalStyle.scss\",\n\t\"./process_explorer/GroupsModal/groupsModalStyle.scss\": \"./client/app/process_explorer/GroupsModal/groupsModalStyle.scss\",\n\t\"./process_explorer/ProcessExplorer\": \"./client/app/process_explorer/ProcessExplorer.jsx\",\n\t\"./process_explorer/ProcessExplorer.jsx\": \"./client/app/process_explorer/ProcessExplorer.jsx\",\n\t\"./process_explorer/ProcessExplorerContainer\": \"./client/app/process_explorer/ProcessExplorerContainer.jsx\",\n\t\"./process_explorer/ProcessExplorerContainer.jsx\": \"./client/app/process_explorer/ProcessExplorerContainer.jsx\",\n\t\"./process_explorer/ProcessExplorerHeader\": \"./client/app/process_explorer/ProcessExplorerHeader.jsx\",\n\t\"./process_explorer/ProcessExplorerHeader.jsx\": \"./client/app/process_explorer/ProcessExplorerHeader.jsx\",\n\t\"./process_explorer/ProcessSelect\": \"./client/app/process_explorer/ProcessSelect.jsx\",\n\t\"./process_explorer/ProcessSelect.jsx\": \"./client/app/process_explorer/ProcessSelect.jsx\",\n\t\"./process_explorer/common/util\": \"./client/app/process_explorer/common/util.js\",\n\t\"./process_explorer/common/util.js\": \"./client/app/process_explorer/common/util.js\",\n\t\"./process_explorer/controls/ControlsBar\": \"./client/app/process_explorer/controls/ControlsBar.jsx\",\n\t\"./process_explorer/controls/ControlsBar.jsx\": \"./client/app/process_explorer/controls/ControlsBar.jsx\",\n\t\"./process_explorer/controls/FlowControl\": \"./client/app/process_explorer/controls/FlowControl.jsx\",\n\t\"./process_explorer/controls/FlowControl.jsx\": \"./client/app/process_explorer/controls/FlowControl.jsx\",\n\t\"./process_explorer/controls/GroupsControl\": \"./client/app/process_explorer/controls/GroupsControl.jsx\",\n\t\"./process_explorer/controls/GroupsControl.jsx\": \"./client/app/process_explorer/controls/GroupsControl.jsx\",\n\t\"./process_explorer/controls/NewProcessForm\": \"./client/app/process_explorer/controls/NewProcessForm.jsx\",\n\t\"./process_explorer/controls/NewProcessForm.jsx\": \"./client/app/process_explorer/controls/NewProcessForm.jsx\",\n\t\"./process_explorer/controls/SubprocessControl\": \"./client/app/process_explorer/controls/SubprocessControl.jsx\",\n\t\"./process_explorer/controls/SubprocessControl.jsx\": \"./client/app/process_explorer/controls/SubprocessControl.jsx\",\n\t\"./process_explorer/controls/__tests__/ControlsBar\": \"./client/app/process_explorer/controls/__tests__/ControlsBar.jsx\",\n\t\"./process_explorer/controls/__tests__/ControlsBar.jsx\": \"./client/app/process_explorer/controls/__tests__/ControlsBar.jsx\",\n\t\"./process_explorer/controls/__tests__/FlowControl\": \"./client/app/process_explorer/controls/__tests__/FlowControl.jsx\",\n\t\"./process_explorer/controls/__tests__/FlowControl.jsx\": \"./client/app/process_explorer/controls/__tests__/FlowControl.jsx\",\n\t\"./process_explorer/controls/__tests__/GroupsControl\": \"./client/app/process_explorer/controls/__tests__/GroupsControl.jsx\",\n\t\"./process_explorer/controls/__tests__/GroupsControl.jsx\": \"./client/app/process_explorer/controls/__tests__/GroupsControl.jsx\",\n\t\"./process_explorer/controls/__tests__/__snapshots__/ControlsBar.jsx.snap\": \"./client/app/process_explorer/controls/__tests__/__snapshots__/ControlsBar.jsx.snap\",\n\t\"./process_explorer/controls/__tests__/__snapshots__/FlowControl.jsx.snap\": \"./client/app/process_explorer/controls/__tests__/__snapshots__/FlowControl.jsx.snap\",\n\t\"./process_explorer/controls/__tests__/__snapshots__/GroupsControl.jsx.snap\": \"./client/app/process_explorer/controls/__tests__/__snapshots__/GroupsControl.jsx.snap\",\n\t\"./process_explorer/controls/styles/controlsBar\": \"./client/app/process_explorer/controls/styles/controlsBar.js\",\n\t\"./process_explorer/controls/styles/controlsBar.js\": \"./client/app/process_explorer/controls/styles/controlsBar.js\",\n\t\"./process_explorer/controls/styles/flowControl\": \"./client/app/process_explorer/controls/styles/flowControl.js\",\n\t\"./process_explorer/controls/styles/flowControl.js\": \"./client/app/process_explorer/controls/styles/flowControl.js\",\n\t\"./process_explorer/controls/styles/groupsControl\": \"./client/app/process_explorer/controls/styles/groupsControl.js\",\n\t\"./process_explorer/controls/styles/groupsControl.js\": \"./client/app/process_explorer/controls/styles/groupsControl.js\",\n\t\"./process_explorer/details/stepDetails/ActivityControlPanel\": \"./client/app/process_explorer/details/stepDetails/ActivityControlPanel.jsx\",\n\t\"./process_explorer/details/stepDetails/ActivityControlPanel.jsx\": \"./client/app/process_explorer/details/stepDetails/ActivityControlPanel.jsx\",\n\t\"./process_explorer/details/stepDetails/EditDecision\": \"./client/app/process_explorer/details/stepDetails/EditDecision.jsx\",\n\t\"./process_explorer/details/stepDetails/EditDecision.jsx\": \"./client/app/process_explorer/details/stepDetails/EditDecision.jsx\",\n\t\"./process_explorer/details/stepDetails/EditDecisionForm\": \"./client/app/process_explorer/details/stepDetails/EditDecisionForm.jsx\",\n\t\"./process_explorer/details/stepDetails/EditDecisionForm.jsx\": \"./client/app/process_explorer/details/stepDetails/EditDecisionForm.jsx\",\n\t\"./process_explorer/details/stepDetails/NodeControls\": \"./client/app/process_explorer/details/stepDetails/NodeControls.jsx\",\n\t\"./process_explorer/details/stepDetails/NodeControls.jsx\": \"./client/app/process_explorer/details/stepDetails/NodeControls.jsx\",\n\t\"./process_explorer/details/stepDetails/NodeInspector\": \"./client/app/process_explorer/details/stepDetails/NodeInspector.jsx\",\n\t\"./process_explorer/details/stepDetails/NodeInspector.jsx\": \"./client/app/process_explorer/details/stepDetails/NodeInspector.jsx\",\n\t\"./process_explorer/details/stepDetails/activityControlPanelStyle\": \"./client/app/process_explorer/details/stepDetails/activityControlPanelStyle.scss\",\n\t\"./process_explorer/details/stepDetails/activityControlPanelStyle.scss\": \"./client/app/process_explorer/details/stepDetails/activityControlPanelStyle.scss\",\n\t\"./process_explorer/details/stepDetails/editDecisionFormStyle\": \"./client/app/process_explorer/details/stepDetails/editDecisionFormStyle.scss\",\n\t\"./process_explorer/details/stepDetails/editDecisionFormStyle.scss\": \"./client/app/process_explorer/details/stepDetails/editDecisionFormStyle.scss\",\n\t\"./process_explorer/details/stepDetails/nodeInspectorStyle\": \"./client/app/process_explorer/details/stepDetails/nodeInspectorStyle.scss\",\n\t\"./process_explorer/details/stepDetails/nodeInspectorStyle.scss\": \"./client/app/process_explorer/details/stepDetails/nodeInspectorStyle.scss\",\n\t\"./process_explorer/diagram/DraggingNode\": \"./client/app/process_explorer/diagram/DraggingNode.jsx\",\n\t\"./process_explorer/diagram/DraggingNode.jsx\": \"./client/app/process_explorer/diagram/DraggingNode.jsx\",\n\t\"./process_explorer/diagram/ProcessExplorationDiagram\": \"./client/app/process_explorer/diagram/ProcessExplorationDiagram.jsx\",\n\t\"./process_explorer/diagram/ProcessExplorationDiagram.jsx\": \"./client/app/process_explorer/diagram/ProcessExplorationDiagram.jsx\",\n\t\"./process_explorer/diagram/ProcessExplorerTree\": \"./client/app/process_explorer/diagram/ProcessExplorerTree.js\",\n\t\"./process_explorer/diagram/ProcessExplorerTree.js\": \"./client/app/process_explorer/diagram/ProcessExplorerTree.js\",\n\t\"./process_explorer/diagram/SidePanel\": \"./client/app/process_explorer/diagram/SidePanel.jsx\",\n\t\"./process_explorer/diagram/SidePanel.jsx\": \"./client/app/process_explorer/diagram/SidePanel.jsx\",\n\t\"./process_explorer/diagram/activityControlPanel\": \"./client/app/process_explorer/diagram/activityControlPanel.scss\",\n\t\"./process_explorer/diagram/activityControlPanel.scss\": \"./client/app/process_explorer/diagram/activityControlPanel.scss\",\n\t\"./process_explorer/diagram/common/constants\": \"./client/app/process_explorer/diagram/common/constants.js\",\n\t\"./process_explorer/diagram/common/constants.js\": \"./client/app/process_explorer/diagram/common/constants.js\",\n\t\"./process_explorer/diagram/draggingNodeStyle\": \"./client/app/process_explorer/diagram/draggingNodeStyle.scss\",\n\t\"./process_explorer/diagram/draggingNodeStyle.scss\": \"./client/app/process_explorer/diagram/draggingNodeStyle.scss\",\n\t\"./process_explorer/diagram/processExploration\": \"./client/app/process_explorer/diagram/processExploration.scss\",\n\t\"./process_explorer/diagram/processExploration.scss\": \"./client/app/process_explorer/diagram/processExploration.scss\",\n\t\"./process_explorer/diagram/renderers/BaseNodeRenderer\": \"./client/app/process_explorer/diagram/renderers/BaseNodeRenderer.js\",\n\t\"./process_explorer/diagram/renderers/BaseNodeRenderer.js\": \"./client/app/process_explorer/diagram/renderers/BaseNodeRenderer.js\",\n\t\"./process_explorer/diagram/renderers/BuildGroupRenderer\": \"./client/app/process_explorer/diagram/renderers/BuildGroupRenderer.js\",\n\t\"./process_explorer/diagram/renderers/BuildGroupRenderer.js\": \"./client/app/process_explorer/diagram/renderers/BuildGroupRenderer.js\",\n\t\"./process_explorer/diagram/renderers/DropShadowRenderer\": \"./client/app/process_explorer/diagram/renderers/DropShadowRenderer.js\",\n\t\"./process_explorer/diagram/renderers/DropShadowRenderer.js\": \"./client/app/process_explorer/diagram/renderers/DropShadowRenderer.js\",\n\t\"./process_explorer/diagram/renderers/FlowRenderer\": \"./client/app/process_explorer/diagram/renderers/FlowRenderer.js\",\n\t\"./process_explorer/diagram/renderers/FlowRenderer.js\": \"./client/app/process_explorer/diagram/renderers/FlowRenderer.js\",\n\t\"./process_explorer/diagram/renderers/GroupRenderer\": \"./client/app/process_explorer/diagram/renderers/GroupRenderer.js\",\n\t\"./process_explorer/diagram/renderers/GroupRenderer.js\": \"./client/app/process_explorer/diagram/renderers/GroupRenderer.js\",\n\t\"./process_explorer/diagram/renderers/LabelRenderer\": \"./client/app/process_explorer/diagram/renderers/LabelRenderer.js\",\n\t\"./process_explorer/diagram/renderers/LabelRenderer.js\": \"./client/app/process_explorer/diagram/renderers/LabelRenderer.js\",\n\t\"./process_explorer/diagram/renderers/LinkRenderer\": \"./client/app/process_explorer/diagram/renderers/LinkRenderer.jsx\",\n\t\"./process_explorer/diagram/renderers/LinkRenderer.jsx\": \"./client/app/process_explorer/diagram/renderers/LinkRenderer.jsx\",\n\t\"./process_explorer/diagram/renderers/NodeRenderer\": \"./client/app/process_explorer/diagram/renderers/NodeRenderer.jsx\",\n\t\"./process_explorer/diagram/renderers/NodeRenderer.jsx\": \"./client/app/process_explorer/diagram/renderers/NodeRenderer.jsx\",\n\t\"./process_explorer/diagram/renderers/nodes/ActivityNode\": \"./client/app/process_explorer/diagram/renderers/nodes/ActivityNode.jsx\",\n\t\"./process_explorer/diagram/renderers/nodes/ActivityNode.jsx\": \"./client/app/process_explorer/diagram/renderers/nodes/ActivityNode.jsx\",\n\t\"./process_explorer/diagram/renderers/nodes/CollapsedNode\": \"./client/app/process_explorer/diagram/renderers/nodes/CollapsedNode.jsx\",\n\t\"./process_explorer/diagram/renderers/nodes/CollapsedNode.jsx\": \"./client/app/process_explorer/diagram/renderers/nodes/CollapsedNode.jsx\",\n\t\"./process_explorer/diagram/renderers/nodes/DecisionNode\": \"./client/app/process_explorer/diagram/renderers/nodes/DecisionNode.jsx\",\n\t\"./process_explorer/diagram/renderers/nodes/DecisionNode.jsx\": \"./client/app/process_explorer/diagram/renderers/nodes/DecisionNode.jsx\",\n\t\"./process_explorer/diagram/renderers/nodes/EndNode\": \"./client/app/process_explorer/diagram/renderers/nodes/EndNode.js\",\n\t\"./process_explorer/diagram/renderers/nodes/EndNode.js\": \"./client/app/process_explorer/diagram/renderers/nodes/EndNode.js\",\n\t\"./process_explorer/diagram/renderers/nodes/images/delete-2\": \"./client/app/process_explorer/diagram/renderers/nodes/images/delete-2.svg\",\n\t\"./process_explorer/diagram/renderers/nodes/images/delete-2.svg\": \"./client/app/process_explorer/diagram/renderers/nodes/images/delete-2.svg\",\n\t\"./process_explorer/diagram/renderers/nodes/sections/ActionListRenderer\": \"./client/app/process_explorer/diagram/renderers/nodes/sections/ActionListRenderer.jsx\",\n\t\"./process_explorer/diagram/renderers/nodes/sections/ActionListRenderer.jsx\": \"./client/app/process_explorer/diagram/renderers/nodes/sections/ActionListRenderer.jsx\",\n\t\"./process_explorer/diagram/styles\": \"./client/app/process_explorer/diagram/styles/index.js\",\n\t\"./process_explorer/diagram/styles/\": \"./client/app/process_explorer/diagram/styles/index.js\",\n\t\"./process_explorer/diagram/styles/index\": \"./client/app/process_explorer/diagram/styles/index.js\",\n\t\"./process_explorer/diagram/styles/index.js\": \"./client/app/process_explorer/diagram/styles/index.js\",\n\t\"./process_explorer/diagram/utils\": \"./client/app/process_explorer/diagram/utils.js\",\n\t\"./process_explorer/diagram/utils.js\": \"./client/app/process_explorer/diagram/utils.js\",\n\t\"./process_explorer/stores/GroupsStore\": \"./client/app/process_explorer/stores/GroupsStore.js\",\n\t\"./process_explorer/stores/GroupsStore.js\": \"./client/app/process_explorer/stores/GroupsStore.js\",\n\t\"./process_explorer/stores/__tests__/GroupStore.test\": \"./client/app/process_explorer/stores/__tests__/GroupStore.test.js\",\n\t\"./process_explorer/stores/__tests__/GroupStore.test.js\": \"./client/app/process_explorer/stores/__tests__/GroupStore.test.js\",\n\t\"./process_explorer/stores/processExplorerStore\": \"./client/app/process_explorer/stores/processExplorerStore.js\",\n\t\"./process_explorer/stores/processExplorerStore.js\": \"./client/app/process_explorer/stores/processExplorerStore.js\",\n\t\"./process_explorer/stores/subprocessStore\": \"./client/app/process_explorer/stores/subprocessStore.js\",\n\t\"./process_explorer/stores/subprocessStore.js\": \"./client/app/process_explorer/stores/subprocessStore.js\",\n\t\"./process_explorer/styles\": \"./client/app/process_explorer/styles/index.js\",\n\t\"./process_explorer/styles/\": \"./client/app/process_explorer/styles/index.js\",\n\t\"./process_explorer/styles/index\": \"./client/app/process_explorer/styles/index.js\",\n\t\"./process_explorer/styles/index.js\": \"./client/app/process_explorer/styles/index.js\",\n\t\"./process_explorer/styles/subprocessModal\": \"./client/app/process_explorer/styles/subprocessModal.js\",\n\t\"./process_explorer/styles/subprocessModal.js\": \"./client/app/process_explorer/styles/subprocessModal.js\",\n\t\"./process_explorer/subprocessModal/CreateSubprocessDialogue\": \"./client/app/process_explorer/subprocessModal/CreateSubprocessDialogue.jsx\",\n\t\"./process_explorer/subprocessModal/CreateSubprocessDialogue.jsx\": \"./client/app/process_explorer/subprocessModal/CreateSubprocessDialogue.jsx\",\n\t\"./process_explorer/subprocessModal/SavedSubprocessDialogue\": \"./client/app/process_explorer/subprocessModal/SavedSubprocessDialogue.jsx\",\n\t\"./process_explorer/subprocessModal/SavedSubprocessDialogue.jsx\": \"./client/app/process_explorer/subprocessModal/SavedSubprocessDialogue.jsx\",\n\t\"./process_explorer/subprocessModal/SubprocessModal\": \"./client/app/process_explorer/subprocessModal/SubprocessModal.jsx\",\n\t\"./process_explorer/subprocessModal/SubprocessModal.jsx\": \"./client/app/process_explorer/subprocessModal/SubprocessModal.jsx\",\n\t\"./process_explorer/subprocessModal/subprocessModalStyle\": \"./client/app/process_explorer/subprocessModal/subprocessModalStyle.scss\",\n\t\"./process_explorer/subprocessModal/subprocessModalStyle.scss\": \"./client/app/process_explorer/subprocessModal/subprocessModalStyle.scss\",\n\t\"./process_explorer/zoomControls/ZoomControls\": \"./client/app/process_explorer/zoomControls/ZoomControls.jsx\",\n\t\"./process_explorer/zoomControls/ZoomControls.jsx\": \"./client/app/process_explorer/zoomControls/ZoomControls.jsx\",\n\t\"./process_explorer/zoomControls/styles\": \"./client/app/process_explorer/zoomControls/styles/index.js\",\n\t\"./process_explorer/zoomControls/styles/\": \"./client/app/process_explorer/zoomControls/styles/index.js\",\n\t\"./process_explorer/zoomControls/styles/index\": \"./client/app/process_explorer/zoomControls/styles/index.js\",\n\t\"./process_explorer/zoomControls/styles/index.js\": \"./client/app/process_explorer/zoomControls/styles/index.js\",\n\t\"./processes/ActionsMenu\": \"./client/app/processes/ActionsMenu.jsx\",\n\t\"./processes/ActionsMenu.jsx\": \"./client/app/processes/ActionsMenu.jsx\",\n\t\"./processes/Processes\": \"./client/app/processes/Processes.jsx\",\n\t\"./processes/Processes.jsx\": \"./client/app/processes/Processes.jsx\",\n\t\"./processes/RatingTag\": \"./client/app/processes/RatingTag.jsx\",\n\t\"./processes/RatingTag.jsx\": \"./client/app/processes/RatingTag.jsx\",\n\t\"./processes/StateManager\": \"./client/app/processes/StateManager.jsx\",\n\t\"./processes/StateManager.jsx\": \"./client/app/processes/StateManager.jsx\",\n\t\"./processes/getProcessesColumns\": \"./client/app/processes/getProcessesColumns.jsx\",\n\t\"./processes/getProcessesColumns.jsx\": \"./client/app/processes/getProcessesColumns.jsx\",\n\t\"./processes/utils\": \"./client/app/processes/utils.js\",\n\t\"./processes/utils.js\": \"./client/app/processes/utils.js\",\n\t\"./processes/viewer/FlowGraph\": \"./client/app/processes/viewer/FlowGraph.jsx\",\n\t\"./processes/viewer/FlowGraph.jsx\": \"./client/app/processes/viewer/FlowGraph.jsx\",\n\t\"./processes/viewer/GraphProcess\": \"./client/app/processes/viewer/GraphProcess.jsx\",\n\t\"./processes/viewer/GraphProcess.jsx\": \"./client/app/processes/viewer/GraphProcess.jsx\",\n\t\"./processes/viewer/ProcessViewerContainer\": \"./client/app/processes/viewer/ProcessViewerContainer.jsx\",\n\t\"./processes/viewer/ProcessViewerContainer.jsx\": \"./client/app/processes/viewer/ProcessViewerContainer.jsx\",\n\t\"./processes/viewer/components/ObserverDetail\": \"./client/app/processes/viewer/components/ObserverDetail.jsx\",\n\t\"./processes/viewer/components/ObserverDetail.jsx\": \"./client/app/processes/viewer/components/ObserverDetail.jsx\",\n\t\"./processes/viewer/components/ProcessDashCard\": \"./client/app/processes/viewer/components/ProcessDashCard.jsx\",\n\t\"./processes/viewer/components/ProcessDashCard.jsx\": \"./client/app/processes/viewer/components/ProcessDashCard.jsx\",\n\t\"./processes/viewer/components/RunDetail\": \"./client/app/processes/viewer/components/RunDetail.jsx\",\n\t\"./processes/viewer/components/RunDetail.jsx\": \"./client/app/processes/viewer/components/RunDetail.jsx\",\n\t\"./processes/viewer/components/TooltipButton\": \"./client/app/processes/viewer/components/TooltipButton.jsx\",\n\t\"./processes/viewer/components/TooltipButton.jsx\": \"./client/app/processes/viewer/components/TooltipButton.jsx\",\n\t\"./processes/viewer/components/styles\": \"./client/app/processes/viewer/components/styles/index.js\",\n\t\"./processes/viewer/components/styles/\": \"./client/app/processes/viewer/components/styles/index.js\",\n\t\"./processes/viewer/components/styles/index\": \"./client/app/processes/viewer/components/styles/index.js\",\n\t\"./processes/viewer/components/styles/index.js\": \"./client/app/processes/viewer/components/styles/index.js\",\n\t\"./processes/viewer/components/tooltipButtonStyle\": \"./client/app/processes/viewer/components/tooltipButtonStyle.scss\",\n\t\"./processes/viewer/components/tooltipButtonStyle.scss\": \"./client/app/processes/viewer/components/tooltipButtonStyle.scss\",\n\t\"./processes/viewer/sections/Overview\": \"./client/app/processes/viewer/sections/Overview.jsx\",\n\t\"./processes/viewer/sections/Overview.jsx\": \"./client/app/processes/viewer/sections/Overview.jsx\",\n\t\"./processes/viewer/sections/ProcessHeader\": \"./client/app/processes/viewer/sections/ProcessHeader.jsx\",\n\t\"./processes/viewer/sections/ProcessHeader.jsx\": \"./client/app/processes/viewer/sections/ProcessHeader.jsx\",\n\t\"./processes/viewer/sections/RunDetails\": \"./client/app/processes/viewer/sections/RunDetails.jsx\",\n\t\"./processes/viewer/sections/RunDetails.jsx\": \"./client/app/processes/viewer/sections/RunDetails.jsx\",\n\t\"./processes/viewer/sections/RunDetailsWrapper\": \"./client/app/processes/viewer/sections/RunDetailsWrapper.jsx\",\n\t\"./processes/viewer/sections/RunDetailsWrapper.jsx\": \"./client/app/processes/viewer/sections/RunDetailsWrapper.jsx\",\n\t\"./processes/viewer/sections/ToolbarActions\": \"./client/app/processes/viewer/sections/ToolbarActions.jsx\",\n\t\"./processes/viewer/sections/ToolbarActions.jsx\": \"./client/app/processes/viewer/sections/ToolbarActions.jsx\",\n\t\"./processes/viewer/sections/TopSignaturesTable\": \"./client/app/processes/viewer/sections/TopSignaturesTable.jsx\",\n\t\"./processes/viewer/sections/TopSignaturesTable.jsx\": \"./client/app/processes/viewer/sections/TopSignaturesTable.jsx\",\n\t\"./processes/viewer/sections/UserMetadata\": \"./client/app/processes/viewer/sections/UserMetadata.jsx\",\n\t\"./processes/viewer/sections/UserMetadata.jsx\": \"./client/app/processes/viewer/sections/UserMetadata.jsx\",\n\t\"./processes/viewer/styles\": \"./client/app/processes/viewer/styles/index.js\",\n\t\"./processes/viewer/styles/\": \"./client/app/processes/viewer/styles/index.js\",\n\t\"./processes/viewer/styles/index\": \"./client/app/processes/viewer/styles/index.js\",\n\t\"./processes/viewer/styles/index.js\": \"./client/app/processes/viewer/styles/index.js\",\n\t\"./review/ObserverSelect\": \"./client/app/review/ObserverSelect.jsx\",\n\t\"./review/ObserverSelect.jsx\": \"./client/app/review/ObserverSelect.jsx\",\n\t\"./review/Review\": \"./client/app/review/Review.jsx\",\n\t\"./review/Review.jsx\": \"./client/app/review/Review.jsx\",\n\t\"./review/ReviewHeader\": \"./client/app/review/ReviewHeader.jsx\",\n\t\"./review/ReviewHeader.jsx\": \"./client/app/review/ReviewHeader.jsx\",\n\t\"./review/Sidebar\": \"./client/app/review/Sidebar.jsx\",\n\t\"./review/Sidebar.jsx\": \"./client/app/review/Sidebar.jsx\",\n\t\"./review/__tests__/ObserverSelect.test\": \"./client/app/review/__tests__/ObserverSelect.test.jsx\",\n\t\"./review/__tests__/ObserverSelect.test.jsx\": \"./client/app/review/__tests__/ObserverSelect.test.jsx\",\n\t\"./review/__tests__/Sidebar.test\": \"./client/app/review/__tests__/Sidebar.test.jsx\",\n\t\"./review/__tests__/Sidebar.test.jsx\": \"./client/app/review/__tests__/Sidebar.test.jsx\",\n\t\"./review/__tests__/__snapshots__/ObserverSelect.test.jsx.snap\": \"./client/app/review/__tests__/__snapshots__/ObserverSelect.test.jsx.snap\",\n\t\"./review/__tests__/__snapshots__/Sidebar.test.jsx.snap\": \"./client/app/review/__tests__/__snapshots__/Sidebar.test.jsx.snap\",\n\t\"./review/event/BoundingBox\": \"./client/app/review/event/BoundingBox.jsx\",\n\t\"./review/event/BoundingBox.jsx\": \"./client/app/review/event/BoundingBox.jsx\",\n\t\"./review/event/BoundingBoxTag\": \"./client/app/review/event/BoundingBoxTag.jsx\",\n\t\"./review/event/BoundingBoxTag.jsx\": \"./client/app/review/event/BoundingBoxTag.jsx\",\n\t\"./review/event/Event\": \"./client/app/review/event/Event.jsx\",\n\t\"./review/event/Event.jsx\": \"./client/app/review/event/Event.jsx\",\n\t\"./review/event/EventContext\": \"./client/app/review/event/EventContext.jsx\",\n\t\"./review/event/EventContext.jsx\": \"./client/app/review/event/EventContext.jsx\",\n\t\"./review/event/__tests__/BoundingBox.test\": \"./client/app/review/event/__tests__/BoundingBox.test.jsx\",\n\t\"./review/event/__tests__/BoundingBox.test.jsx\": \"./client/app/review/event/__tests__/BoundingBox.test.jsx\",\n\t\"./review/event/__tests__/BoundingBoxTag.test\": \"./client/app/review/event/__tests__/BoundingBoxTag.test.jsx\",\n\t\"./review/event/__tests__/BoundingBoxTag.test.jsx\": \"./client/app/review/event/__tests__/BoundingBoxTag.test.jsx\",\n\t\"./review/event/__tests__/__snapshots__/BoundingBox.test.jsx.snap\": \"./client/app/review/event/__tests__/__snapshots__/BoundingBox.test.jsx.snap\",\n\t\"./review/event/__tests__/__snapshots__/BoundingBoxTag.test.jsx.snap\": \"./client/app/review/event/__tests__/__snapshots__/BoundingBoxTag.test.jsx.snap\",\n\t\"./review/event/boundingBoxStyle\": \"./client/app/review/event/boundingBoxStyle.scss\",\n\t\"./review/event/boundingBoxStyle.scss\": \"./client/app/review/event/boundingBoxStyle.scss\",\n\t\"./review/event/eventStyle\": \"./client/app/review/event/eventStyle.scss\",\n\t\"./review/event/eventStyle.scss\": \"./client/app/review/event/eventStyle.scss\",\n\t\"./roles/Roles\": \"./client/app/roles/Roles.jsx\",\n\t\"./roles/Roles.jsx\": \"./client/app/roles/Roles.jsx\",\n\t\"./sandbox/Sandbox\": \"./client/app/sandbox/Sandbox.jsx\",\n\t\"./sandbox/Sandbox.jsx\": \"./client/app/sandbox/Sandbox.jsx\",\n\t\"./screens/list/ScreenList\": \"./client/app/screens/list/ScreenList.jsx\",\n\t\"./screens/list/ScreenList.jsx\": \"./client/app/screens/list/ScreenList.jsx\",\n\t\"./screens/viewer/EventGroup\": \"./client/app/screens/viewer/EventGroup.jsx\",\n\t\"./screens/viewer/EventGroup.jsx\": \"./client/app/screens/viewer/EventGroup.jsx\",\n\t\"./screens/viewer/EventGroupRow\": \"./client/app/screens/viewer/EventGroupRow.jsx\",\n\t\"./screens/viewer/EventGroupRow.jsx\": \"./client/app/screens/viewer/EventGroupRow.jsx\",\n\t\"./screens/viewer/EventGroups\": \"./client/app/screens/viewer/EventGroups.jsx\",\n\t\"./screens/viewer/EventGroups.jsx\": \"./client/app/screens/viewer/EventGroups.jsx\",\n\t\"./screens/viewer/EventSlide\": \"./client/app/screens/viewer/EventSlide.jsx\",\n\t\"./screens/viewer/EventSlide.jsx\": \"./client/app/screens/viewer/EventSlide.jsx\",\n\t\"./screens/viewer/InactiveEventGroup\": \"./client/app/screens/viewer/InactiveEventGroup.jsx\",\n\t\"./screens/viewer/InactiveEventGroup.jsx\": \"./client/app/screens/viewer/InactiveEventGroup.jsx\",\n\t\"./screens/viewer/ScreenViewer\": \"./client/app/screens/viewer/ScreenViewer.jsx\",\n\t\"./screens/viewer/ScreenViewer.jsx\": \"./client/app/screens/viewer/ScreenViewer.jsx\",\n\t\"./screens/viewer/ScreenViewerDrawer\": \"./client/app/screens/viewer/ScreenViewerDrawer.jsx\",\n\t\"./screens/viewer/ScreenViewerDrawer.jsx\": \"./client/app/screens/viewer/ScreenViewerDrawer.jsx\",\n\t\"./screens/viewer/ScreenViewerHeader\": \"./client/app/screens/viewer/ScreenViewerHeader.jsx\",\n\t\"./screens/viewer/ScreenViewerHeader.jsx\": \"./client/app/screens/viewer/ScreenViewerHeader.jsx\",\n\t\"./screens/viewer/common\": \"./client/app/screens/viewer/common.js\",\n\t\"./screens/viewer/common.js\": \"./client/app/screens/viewer/common.js\",\n\t\"./screens/viewer/controls/ControlHelpers\": \"./client/app/screens/viewer/controls/ControlHelpers.jsx\",\n\t\"./screens/viewer/controls/ControlHelpers.jsx\": \"./client/app/screens/viewer/controls/ControlHelpers.jsx\",\n\t\"./screens/viewer/controls/Controls\": \"./client/app/screens/viewer/controls/Controls.jsx\",\n\t\"./screens/viewer/controls/Controls.jsx\": \"./client/app/screens/viewer/controls/Controls.jsx\",\n\t\"./screens/viewer/controls/EventGroupNav\": \"./client/app/screens/viewer/controls/EventGroupNav.jsx\",\n\t\"./screens/viewer/controls/EventGroupNav.jsx\": \"./client/app/screens/viewer/controls/EventGroupNav.jsx\",\n\t\"./screens/viewer/controls/EventMoveSelector\": \"./client/app/screens/viewer/controls/EventMoveSelector.jsx\",\n\t\"./screens/viewer/controls/EventMoveSelector.jsx\": \"./client/app/screens/viewer/controls/EventMoveSelector.jsx\",\n\t\"./screens/viewer/controls/EventSelection\": \"./client/app/screens/viewer/controls/EventSelection.jsx\",\n\t\"./screens/viewer/controls/EventSelection.jsx\": \"./client/app/screens/viewer/controls/EventSelection.jsx\",\n\t\"./screens/viewer/controls/Minimap\": \"./client/app/screens/viewer/controls/Minimap.jsx\",\n\t\"./screens/viewer/controls/Minimap.jsx\": \"./client/app/screens/viewer/controls/Minimap.jsx\",\n\t\"./screens/viewer/controls/ScreenViewerSettings\": \"./client/app/screens/viewer/controls/ScreenViewerSettings.jsx\",\n\t\"./screens/viewer/controls/ScreenViewerSettings.jsx\": \"./client/app/screens/viewer/controls/ScreenViewerSettings.jsx\",\n\t\"./screens/viewer/controls/controlsStyle\": \"./client/app/screens/viewer/controls/controlsStyle.scss\",\n\t\"./screens/viewer/controls/controlsStyle.scss\": \"./client/app/screens/viewer/controls/controlsStyle.scss\",\n\t\"./screens/viewer/styles\": \"./client/app/screens/viewer/styles/index.js\",\n\t\"./screens/viewer/styles/\": \"./client/app/screens/viewer/styles/index.js\",\n\t\"./screens/viewer/styles/index\": \"./client/app/screens/viewer/styles/index.js\",\n\t\"./screens/viewer/styles/index.js\": \"./client/app/screens/viewer/styles/index.js\",\n\t\"./screenshot/ScreenshotViewer\": \"./client/app/screenshot/ScreenshotViewer.jsx\",\n\t\"./screenshot/ScreenshotViewer.jsx\": \"./client/app/screenshot/ScreenshotViewer.jsx\",\n\t\"./signature_service_jobs/ParamsColumn\": \"./client/app/signature_service_jobs/ParamsColumn.jsx\",\n\t\"./signature_service_jobs/ParamsColumn.jsx\": \"./client/app/signature_service_jobs/ParamsColumn.jsx\",\n\t\"./signature_service_jobs/SignatureServiceJobList\": \"./client/app/signature_service_jobs/SignatureServiceJobList.jsx\",\n\t\"./signature_service_jobs/SignatureServiceJobList.jsx\": \"./client/app/signature_service_jobs/SignatureServiceJobList.jsx\",\n\t\"./status/Status\": \"./client/app/status/Status.jsx\",\n\t\"./status/Status.jsx\": \"./client/app/status/Status.jsx\",\n\t\"./support/Support\": \"./client/app/support/Support.jsx\",\n\t\"./support/Support.jsx\": \"./client/app/support/Support.jsx\",\n\t\"./templates/TemplateCreator\": \"./client/app/templates/TemplateCreator.jsx\",\n\t\"./templates/TemplateCreator.jsx\": \"./client/app/templates/TemplateCreator.jsx\",\n\t\"./templates/TemplateList\": \"./client/app/templates/TemplateList.jsx\",\n\t\"./templates/TemplateList.jsx\": \"./client/app/templates/TemplateList.jsx\",\n\t\"./topNavHelp/TopNavHelp\": \"./client/app/topNavHelp/TopNavHelp.jsx\",\n\t\"./topNavHelp/TopNavHelp.jsx\": \"./client/app/topNavHelp/TopNavHelp.jsx\",\n\t\"./topNavHelp/helpTips\": \"./client/app/topNavHelp/helpTips.js\",\n\t\"./topNavHelp/helpTips.js\": \"./client/app/topNavHelp/helpTips.js\",\n\t\"./topNavHelp/topNavHelpStyle\": \"./client/app/topNavHelp/topNavHelpStyle.scss\",\n\t\"./topNavHelp/topNavHelpStyle.scss\": \"./client/app/topNavHelp/topNavHelpStyle.scss\",\n\t\"./user_notifications/UserNotifications\": \"./client/app/user_notifications/UserNotifications.jsx\",\n\t\"./user_notifications/UserNotifications.jsx\": \"./client/app/user_notifications/UserNotifications.jsx\",\n\t\"./web-applications/ApplicationList\": \"./client/app/web-applications/ApplicationList.jsx\",\n\t\"./web-applications/ApplicationList.jsx\": \"./client/app/web-applications/ApplicationList.jsx\",\n\t\"./web-applications/Constants\": \"./client/app/web-applications/Constants.js\",\n\t\"./web-applications/Constants.js\": \"./client/app/web-applications/Constants.js\",\n\t\"./web-applications/CreateWebApplicationModal\": \"./client/app/web-applications/CreateWebApplicationModal.jsx\",\n\t\"./web-applications/CreateWebApplicationModal.jsx\": \"./client/app/web-applications/CreateWebApplicationModal.jsx\",\n\t\"./web-applications/TitleGroupList\": \"./client/app/web-applications/TitleGroupList.jsx\",\n\t\"./web-applications/TitleGroupList.jsx\": \"./client/app/web-applications/TitleGroupList.jsx\",\n\t\"./web-applications/WebApplications\": \"./client/app/web-applications/WebApplications.jsx\",\n\t\"./web-applications/WebApplications.jsx\": \"./client/app/web-applications/WebApplications.jsx\",\n\t\"./web-applications/__tests__/ApplicationList.test\": \"./client/app/web-applications/__tests__/ApplicationList.test.jsx\",\n\t\"./web-applications/__tests__/ApplicationList.test.jsx\": \"./client/app/web-applications/__tests__/ApplicationList.test.jsx\",\n\t\"./web-applications/components/ApplicationsTableActions\": \"./client/app/web-applications/components/ApplicationsTableActions.jsx\",\n\t\"./web-applications/components/ApplicationsTableActions.jsx\": \"./client/app/web-applications/components/ApplicationsTableActions.jsx\",\n\t\"./web-applications/components/ErrorMsg\": \"./client/app/web-applications/components/ErrorMsg.jsx\",\n\t\"./web-applications/components/ErrorMsg.jsx\": \"./client/app/web-applications/components/ErrorMsg.jsx\",\n\t\"./web-applications/components/PanelTitle\": \"./client/app/web-applications/components/PanelTitle.jsx\",\n\t\"./web-applications/components/PanelTitle.jsx\": \"./client/app/web-applications/components/PanelTitle.jsx\",\n\t\"./web-applications/components/WebApplicationForm\": \"./client/app/web-applications/components/WebApplicationForm.jsx\",\n\t\"./web-applications/components/WebApplicationForm.jsx\": \"./client/app/web-applications/components/WebApplicationForm.jsx\",\n\t\"./web-applications/components/tableButtons/RulesDeleteButton\": \"./client/app/web-applications/components/tableButtons/RulesDeleteButton.jsx\",\n\t\"./web-applications/components/tableButtons/RulesDeleteButton.jsx\": \"./client/app/web-applications/components/tableButtons/RulesDeleteButton.jsx\",\n\t\"./web-applications/components/tableButtons/RulesEditButton\": \"./client/app/web-applications/components/tableButtons/RulesEditButton.jsx\",\n\t\"./web-applications/components/tableButtons/RulesEditButton.jsx\": \"./client/app/web-applications/components/tableButtons/RulesEditButton.jsx\",\n\t\"./web-applications/components/tableButtons/RulesExploreButton\": \"./client/app/web-applications/components/tableButtons/RulesExploreButton.jsx\",\n\t\"./web-applications/components/tableButtons/RulesExploreButton.jsx\": \"./client/app/web-applications/components/tableButtons/RulesExploreButton.jsx\",\n\t\"./web-applications/components/tableButtons/RulesRefreshButton\": \"./client/app/web-applications/components/tableButtons/RulesRefreshButton.jsx\",\n\t\"./web-applications/components/tableButtons/RulesRefreshButton.jsx\": \"./client/app/web-applications/components/tableButtons/RulesRefreshButton.jsx\",\n\t\"./web-applications/components/tableButtons/UnclaimedExploreLink\": \"./client/app/web-applications/components/tableButtons/UnclaimedExploreLink.jsx\",\n\t\"./web-applications/components/tableButtons/UnclaimedExploreLink.jsx\": \"./client/app/web-applications/components/tableButtons/UnclaimedExploreLink.jsx\",\n\t\"./web-applications/components/tableButtons/__tests__/RulesExploreButton.text\": \"./client/app/web-applications/components/tableButtons/__tests__/RulesExploreButton.text.jsx\",\n\t\"./web-applications/components/tableButtons/__tests__/RulesExploreButton.text.jsx\": \"./client/app/web-applications/components/tableButtons/__tests__/RulesExploreButton.text.jsx\",\n\t\"./web-applications/components/tableButtons/__tests__/__snapshots__/RulesExploreButton.text.jsx.snap\": \"./client/app/web-applications/components/tableButtons/__tests__/__snapshots__/RulesExploreButton.text.jsx.snap\",\n\t\"./web-applications/reducers/Actions\": \"./client/app/web-applications/reducers/Actions.js\",\n\t\"./web-applications/reducers/Actions.js\": \"./client/app/web-applications/reducers/Actions.js\",\n\t\"./web-applications/reducers/UnclaimedEventsReducer\": \"./client/app/web-applications/reducers/UnclaimedEventsReducer.js\",\n\t\"./web-applications/reducers/UnclaimedEventsReducer.js\": \"./client/app/web-applications/reducers/UnclaimedEventsReducer.js\",\n\t\"./web-applications/reducers/WebApplicationsReducer\": \"./client/app/web-applications/reducers/WebApplicationsReducer.js\",\n\t\"./web-applications/reducers/WebApplicationsReducer.js\": \"./client/app/web-applications/reducers/WebApplicationsReducer.js\",\n\t\"./web-applications/styles\": \"./client/app/web-applications/styles/index.js\",\n\t\"./web-applications/styles/\": \"./client/app/web-applications/styles/index.js\",\n\t\"./web-applications/styles/index\": \"./client/app/web-applications/styles/index.js\",\n\t\"./web-applications/styles/index.js\": \"./client/app/web-applications/styles/index.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./client/app sync recursive ^\\\\.\\\\/.*$\";","import React from 'react'\nimport ReactGA from 'react-ga'\nimport { BrowserRouter as Router, Route } from 'react-router-dom'\nimport { ActionCableProvider } from 'components/actioncable-provider'\nimport { Provider } from 'mobx-react'\nimport ttiPolyfill from 'tti-polyfill'\nimport { QueryParamProvider, transformSearchStringJsonSafe } from 'use-query-params'\nimport { useFela, ThemeProvider, NotificationProvider, ModalProvider, theme } from '@fortressiq/fiq-ds'\nimport { HelmetProvider } from 'react-helmet-async'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\n\nimport uiStore from 'lib/UiStore'\n\nimport Flash from 'components/flash/Flash'\nimport MaintenanceBanner from 'components/MaintenanceBanner'\n\nimport UserNotifications from 'app/user_notifications/UserNotifications'\n\nimport AppRoutes from './AppRoutes'\nimport AppSidebar from './AppSidebar'\nimport { EventsProvider } from './events/EventContext'\nimport { HeaderProvider } from './header/HeaderContext'\nimport { UserProvider } from '../context/UserContext'\nimport Header from './header/Header'\n\nimport { appContentCSS, appGridCSS, rightColCSS } from './AppStyles'\n\nReactGA.initialize(document.getElementById('google:analytics_key').content, {\n gaOptions: {\n siteSpeedSampleRate: 100,\n },\n})\n\nttiPolyfill.getFirstConsistentlyInteractive().then(tti => {\n ReactGA.timing({\n category: 'Load Performace',\n variable: 'Time to Interactive',\n label: window.location.pathname,\n value: Math.round(tti),\n })\n})\n\nconst callback = list => {\n list.getEntries().forEach(entry => {\n if (entry.entryType === 'navigation') {\n ReactGA.timing({\n category: 'Load Performace',\n variable: 'Server Latency',\n label: window.location.pathname,\n value: Math.round(entry.responseStart - entry.requestStart),\n })\n } else if (entry.entryType === 'paint') {\n ReactGA.timing({\n category: 'Paint',\n variable: entry.name,\n label: window.location.pathname,\n value: Math.round(entry.startTime),\n })\n } else if (entry.name.includes('App') && entry.duration > 0) {\n ReactGA.timing({\n category: 'App Render Performace',\n variable: entry.name,\n label: window.location.pathname,\n value: Math.round(entry.duration),\n })\n }\n })\n}\n\nconst queryClient = new QueryClient()\n\nconst observer = new PerformanceObserver(callback)\nobserver.observe({\n entryTypes: ['navigation', 'paint', 'mark', 'measure', 'longtask'],\n})\n\nconst queryStringifyOptions = {\n transformSearchString: transformSearchStringJsonSafe,\n}\n\nconst alignNotificationsBesideSidebar = { left: '54px' }\n\nconst App = ({ config, user, tenant, system: { maintenance } }) => {\n uiStore.config = config\n uiStore.setTenantData(tenant)\n ReactGA.set({ dimension1: tenant.id, dimension2: tenant.name, dimension3: user.id })\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nconst AppContents = ({ maintenance, tenantId, userId, userRoleName }) => {\n const { css, renderer } = useFela()\n\n // Ensure the div#layers has a z-index above most UI so notifications/tooltips/etc position above content\n // with few edge cases needing z-index tweaks.\n renderer.renderStatic({ zIndex: theme['z-modal-above'] }, '#layers')\n\n // Setup pendo analytics:\n const dev = GIT_BRANCH.substring(0, GIT_BRANCH.length - 1) || 'development'\n const buildNumber = GIT_SHA || dev\n const versionNumber = document.getElementById('fiq:app_version').getAttribute('content') || dev\n const { locale: language } = new Intl.DateTimeFormat().resolvedOptions()\n\n // Setup pendo object and shared props for account/visitor:\n const sharedProps = {\n buildNumber,\n edition: 'process-discovery-platform',\n features: [],\n selfHelp: undefined,\n versionNumber,\n }\n // Send data to pendo:\n pendo.initialize({\n account: {\n id: tenantId,\n ...sharedProps,\n },\n visitor: {\n id: `${userId}:${tenantId}`,\n language,\n licenses: 'PROCESSDISCOVERYANALYZER',\n permissions: `processdiscovery:${userRoleName}`,\n ...sharedProps,\n },\n })\n\n return (\n
\n \n
\n \n \n {maintenance && }\n
\n
\n \n \n
\n \n \n \n
\n
\n )\n}\n\nexport default App\n","import React, { memo, Suspense, lazy } from 'react'\nimport { Switch, Redirect } from 'react-router-dom'\nimport { useUserState } from 'context/UserContext'\nimport NoAccess from 'app/noAccess/NoAccess'\n\nimport NotFound from 'components/404/NotFound'\nimport TrackedRoute from 'components/TrackedRoute/TrackedRoute'\nimport LoadingFallback from 'components/loaders/MainLoader'\n\nimport checkAllowedRoutes from 'lib/checkAllowedRoutes'\n\nimport uiStore from 'lib/UiStore'\n\nexport const routes = [\n {\n path: '/',\n redirect: '/dashboard',\n component: () => import('app/dashboard/Dashboard'),\n exact: true,\n },\n {\n path: '/dashboard',\n component: () => import('app/dashboard/Dashboard'),\n exact: true,\n },\n\n { path: '/admin', component: () => import('app/admin/Admin') },\n { path: '/support', component: () => import('app/support/Support') },\n { path: '/mining', component: () => import('app/mining/MiningRunList'), exact: true },\n {\n path: '/applications',\n component: () => import(/* webpackChunkName: \"applications\" */ 'app/applications/ApplicationRegistry'),\n exact: true,\n },\n {\n path: '/applications/:appId/:cycleId?',\n component: () => import(/* webpackChunkName: \"applications\" */ 'app/applications/Application/'),\n exact: true,\n },\n {\n path: '/applications/:applicationId/screens/:screenSignature/:cycleId?',\n component: () => import(/* webpackChunkName: \"applications\" */ 'app/screens/viewer/ScreenViewer'),\n },\n {\n path: '/web-applications',\n component: () => import('app/web-applications/WebApplications'),\n },\n { path: '/events/:observerIds?', component: () => import('app/events/Events') },\n {\n path: '/event-log-exports',\n component: () => import('app/admin/event_log_exports/EventLogExportList'),\n },\n { path: '/templates', component: () => import('app/templates/TemplateList'), exact: true },\n { path: '/templates/new', component: () => import('app/templates/TemplateCreator') },\n { path: '/visualizations/butterfly/:id?', component: () => import('app/butterfly/Butterfly') },\n {\n path: '/client-dashboard',\n component: () => import('app/client_dashboard/processListDashboard/Dashboard'),\n exact: true,\n },\n {\n path: '/client-dashboard/:id',\n component: () => import('app/client_dashboard/processViewDashboard/Dashboard'),\n },\n {\n path: '/diagrams/:id',\n component: () => import('app/diagram_composer/DiagramComposer'),\n },\n {\n path: '/observers',\n component: () => import('app/observers/Observers'),\n exact: true,\n },\n { path: '/observers/:id', component: () => import('app/observers/viewer/ObserverViewer') },\n { path: '/pdds', component: () => import('app/pdds/PddList') },\n {\n path: '/processes',\n component: () => import('app/processes/Processes'),\n exact: true,\n },\n {\n path: '/processes/:id',\n component: () => import('app/processes/viewer/ProcessViewerContainer'),\n exact: true,\n },\n {\n path: '/process-boundary/:reportId',\n component: () => import(/* webpackChunkName: \"applications\" */ 'app/ProcessBoundary'),\n exact: true,\n },\n {\n path: '/processes/:processId/state_actions/:state',\n component: () => import('app/processes/StateManager'),\n },\n { path: '/process-explorer/:id?', component: () => import('app/process_explorer/ProcessExplorerContainer') },\n { path: '/sandbox', component: () => import('app/sandbox/Sandbox') },\n { path: '/screenshot/:eventLogId', component: () => import('app/screenshot/ScreenshotViewer') },\n {\n path: '/screenshot-annotator',\n component: () => ,\n },\n {\n path: '/instances-viewer/:id?',\n component: () => import('app/instances_viewer/InstancesViewer'),\n exact: true,\n },\n {\n path: '/signature-service-jobs',\n component: () => import('app/signature_service_jobs/SignatureServiceJobList'),\n },\n {\n path: '/review/:observerID?',\n component: () => import('app/review/Review'),\n exact: true,\n },\n {\n path: '/review/:observerID/new',\n component: () => import('app/review/event/Event'),\n exact: true,\n },\n {\n path: '/review/:observerID/:reviewID/new',\n component: () => import('app/review/event/Event'),\n exact: true,\n },\n {\n path: '/review/:observerID/:reviewID/:eventAnnotationID',\n component: () => import('app/review/event/Event'),\n exact: true,\n },\n {\n path: '/status',\n component: () => import('app/status/Status'),\n exact: true,\n },\n {\n path: '/roles',\n component: () => import('app/roles/Roles'),\n exact: true,\n },\n {\n path: '/cycles',\n component: () => import('app/cycles/'),\n exact: true,\n },\n {\n path: '/flow-graph',\n component: () => import('app/dfGraph/DfGraph'),\n exact: true,\n },\n {\n path: '/flow-graph/:processId',\n component: () => import('app/dfGraph/DfGraph'),\n exact: true,\n },\n]\n\nconst AppRoutes = memo(() => {\n const { roles: userRoles } = useUserState()\n const [allowedRoutes, deniedRoutes] = checkAllowedRoutes(routes, userRoles, uiStore.tenant)\n\n return (\n }>\n \n {allowedRoutes.map(({ component, routes: nestedRoutes, switchRoutes, exact, roles, ...rest }, index) => {\n const Component = lazy(component)\n const key = `${rest.path.replace('/', '-')}-${index}`\n\n return } {...rest} />\n })}\n {deniedRoutes.map(({ component, routes: nestedRoutes, switchRoutes, exact, roles, ...rest }, index) => {\n const key = `${rest.path.replace('/', '-')}-${index}`\n\n return } {...rest} />\n })}\n \n \n \n )\n})\n\nexport default AppRoutes\n","import React, { useState, useEffect } from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { getUserMenu } from 'lib/checkAllowedRoutes'\nimport uiStore from 'lib/UiStore'\n\nimport { useUserState } from 'context/UserContext'\nimport { Sidebar, MenuItem, SubMenu, SubMenuItem } from '../components/SidebarMenu'\n\nconst dashboardIcon = { icon: 'dashboardhomeicon', size: 24, style: { marginTop: 2 } }\nconst limitedUserRoutes = [{ label: 'Dashboard', icon: dashboardIcon, to: '/client-dashboard' }]\n\nconst allRoutes = [\n {\n label: 'Dashboard',\n icon: dashboardIcon,\n to: '/',\n },\n {\n label: 'Data',\n icon: { fill: 'transparent', icon: 'databaseicon', size: 24 },\n subItems: [\n {\n label: 'Observers',\n to: '/observers',\n },\n {\n label: 'Cycles',\n to: '/cycles',\n },\n {\n label: 'Mining Runs',\n to: '/mining',\n },\n {\n label: 'Applications',\n to: '/applications',\n },\n {\n label: 'Web Applications',\n to: '/web-applications',\n },\n {\n label: 'Review',\n to: '/review',\n },\n {\n label: 'Signature Jobs',\n to: '/signature-service-jobs',\n },\n {\n label: 'Status',\n to: '/status',\n },\n {\n label: 'Events',\n to: '/events',\n },\n {\n label: 'Event Log Exports',\n to: '/event-log-exports',\n },\n {\n label: 'Instances Viewer',\n to: '/instances-viewer',\n },\n {\n label: 'Templates',\n to: '/templates',\n },\n ],\n },\n {\n label: 'Visualizations',\n icon: { fill: 'transparent', icon: 'visualizationthick', size: 24 },\n subItems: [\n {\n label: 'Flow',\n to: '/flow-graph',\n },\n {\n label: 'Path',\n to: '/process-explorer',\n },\n {\n label: 'Butterfly',\n to: '/visualizations/butterfly',\n },\n ],\n },\n {\n label: 'Models',\n icon: { fill: 'transparent', icon: 'modelsthick', size: 24 },\n subItems: [\n {\n label: 'PDDs',\n to: '/pdds',\n },\n {\n label: 'Diagram Composer',\n to: '/diagrams/new',\n },\n {\n label: 'Client Dashboard',\n to: '/client-dashboard',\n },\n ],\n },\n {\n label: 'Processes',\n icon: { fill: 'transparent', icon: 'processesthick', size: 24 },\n to: '/processes',\n },\n]\n\nconst AppSidebar = ({ location: { pathname } }) => {\n const { roles } = useUserState()\n const limitedUser = roles.includes('limited')\n const [collapsedSidebar, setCollapsedSidebar] = useState(true)\n const [activeSubMenu, setActiveSubMenu] = useState()\n const [activeMenuItem, setActiveMenuItem] = useState()\n const [routes, setRoutes] = useState()\n\n useEffect(() => {\n setRoutes(limitedUser ? limitedUserRoutes : getUserMenu(allRoutes, roles, uiStore.tenant))\n }, [limitedUser, roles])\n\n useEffect(() => {\n if (routes) {\n const handleIsItemActive = itemPath => {\n if (itemPath === '/') {\n if (pathname === '/') {\n return true\n }\n return false\n } else {\n const regex = new RegExp(`^${itemPath}`, 'i')\n const isActive = regex.test(pathname)\n return isActive\n }\n }\n let isAnyActive = false\n for (let i = 0; i < routes.length; i += 1) {\n const item = routes[i]\n if (item.subItems) {\n for (let j = 0; j < item.subItems.length; j += 1) {\n const subItem = item.subItems[j]\n if (subItem && handleIsItemActive(subItem.to, item.label)) {\n setActiveSubMenu(item.label)\n setActiveMenuItem(subItem.to)\n isAnyActive = true\n break\n }\n }\n } else if (handleIsItemActive(item.to)) {\n setActiveSubMenu()\n setActiveMenuItem(item.to)\n isAnyActive = true\n break\n }\n }\n if (!isAnyActive) {\n setActiveSubMenu()\n setActiveMenuItem()\n }\n }\n }, [pathname, routes])\n\n return (\n \n {routes &&\n routes.length !== 0 &&\n routes.map(item => {\n if (item.subItems) {\n return (\n \n {item.subItems.map(subItem => {\n return (\n \n )\n })}\n \n )\n }\n return (\n \n )\n })}\n \n )\n}\n\nexport default withRouter(AppSidebar)\n","export const sideBarWidth = '48px'\n\nexport const appGridCSS = ({ theme }) => ({\n background: theme.white,\n display: 'flex',\n height: '100vh',\n marginLeft: sideBarWidth,\n width: `calc(100vw - ${sideBarWidth})`,\n})\n\nexport const rightColCSS = {\n display: 'flex',\n flex: '1',\n flexDirection: 'column',\n height: '100%',\n overflow: 'hidden',\n position: 'relative',\n}\n\nexport const appContentCSS = {\n flex: 1,\n overflow: 'auto',\n}\n","import React, { useState, useEffect } from 'react'\nimport { Button, Checkbox, FullscreenPage, HiddenInput, ThemeProvider, theme } from '@fortressiq/fiq-ds'\n\nimport Markdown from 'react-markdown'\nimport { caaMarkdown } from './caaMarkdown'\n\nconst CaaAgreement = props => {\n const [tokens, setTokens] = useState({})\n const [{ scrollTop, offsetHeight, scrollHeight }, setScrollData] = useState({\n scrollTop: 0,\n offsetHeight: 0,\n scrollHeight: 1,\n })\n const [checked, setChecked] = useState(false)\n\n useEffect(() => {\n const authTokenElement = document.getElementById('fiq:authenticity_token')\n const authInfo = JSON.parse(authTokenElement.content)\n\n setTokens(authInfo)\n }, [])\n\n const getScrollPosition = e => {\n setScrollData({\n scrollTop: e.target.scrollTop,\n offsetHeight: e.target.offsetHeight,\n scrollHeight: e.target.scrollHeight,\n })\n }\n\n const handleHaveRead = e => {\n setChecked(e)\n }\n\n const isScrolledBottom = scrollTop + offsetHeight >= scrollHeight\n const acceptIsEnabled = isScrolledBottom && checked\n\n const pageContent = [\n
\n

\n To continue your first time login, scroll through the agreement completely to enable the checkbox and agree to\n our terms and conditions. You can bookmark the{' '}\n \n Cloud Automation Agreement\n {' '}\n for your records.\n

\n \n {caaMarkdown}\n
\n ,\n \n I have read the Terms and Conditions of the Cloud Automation Agreement and I accept them.\n ,\n \n \n ,\n ]\n\n const formSettings = {\n acceptCharset: 'UTF-8',\n action: '/tenant_caa_agreements',\n hiddenFields: (\n \n ),\n method: 'post',\n }\n\n return (\n \n )\n}\n\nconst CAA = props => {\n return (\n \n \n \n )\n}\n\nexport default CAA\n","import React, { useState, Fragment } from 'react'\nimport { Overlay, Typography, theme } from '@fortressiq/fiq-ds'\n\nimport { useHistory } from 'react-router-dom'\nimport AdvancedForm from '../mining/form/AdvancedForm'\n\nconst { Title } = Typography\n\nconst FormOverlay = ({ startStopRankings, miningParams, filterRules }) => {\n const [showing, setShowing] = useState(false)\n const history = useHistory()\n\n const startSignatures = startStopRankings\n .filter(item => item.user_selected && item.type === 'start')\n .map(item => ({ primary: item.screen_signature, secondary_signature_level: 'none' }))\n const endSignatures = startStopRankings\n .filter(item => item.user_selected && item.type === 'end')\n .map(item => ({ primary: item.screen_signature, secondary_signature_level: 'none' }))\n const clonedMiningRun = {\n miningType: 'default',\n fromReport: true,\n miningParams: {\n ...miningParams,\n signature_level: 'screen_signature',\n end_signatures: { signatures: endSignatures },\n start_signatures: { signatures: startSignatures },\n },\n filterRules,\n }\n\n const placement = {\n overflow: { adjustX: true, adjustY: true },\n points: ['br', 'tr'],\n targetOffset: [0, 4],\n useCssTransform: false,\n }\n\n const trigger = {\n showing,\n setShowing,\n text: 'Populate Mining Run',\n type: 'secondary',\n }\n\n const heights = {\n min: 'auto',\n }\n\n return (\n \n \n Create a Mining Run\n \n history.push('/mining')}\n setShowing={setShowing}\n defaultValues={clonedMiningRun}\n fromReport={true}\n />\n \n }\n draggable={true}\n heights={heights}\n id='mining-modal'\n placement={placement}\n trigger={trigger}\n noPadding={true}\n zIndex={1040}\n />\n )\n}\n\nexport default FormOverlay\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { LazyImage, Empty, Icon, Spin, theme, useFela } from '@fortressiq/fiq-ds'\nimport { emptyWrapperCSS, loadingWrapperCSS, galleryWrapperCSS, galleryImageCSS } from './styles/index.js'\n\nconst Gallery = ({ currentImages, isLoadingImages }) => {\n const { css } = useFela()\n if (isLoadingImages) {\n return Loading images...\n }\n\n if (currentImages?.length > 0) {\n return (\n
\n {currentImages.map((screenshot, i) => (\n
\n \n
\n ))}\n
\n )\n }\n\n return (\n }\n description='No screenshots found'\n />\n )\n}\n\nGallery.propTypes = {\n currentImages: PropTypes.arrayOf(PropTypes.string).isRequired,\n isLoadingImages: PropTypes.bool.isRequired,\n}\n\nexport default Gallery\n","import React, { useMemo, useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Checkbox, Table, useFela, theme, Icon, AdvancedCell } from '@fortressiq/fiq-ds'\n\nimport { sidebarCSS, sidebarToggleCSS } from './styles'\n\nconst Sidebar = ({ changeStep, step, toggleSignature, startStopRankings }) => {\n const [isSidebarOpen, setIsSidebarOpen] = useState(false)\n\n const { css } = useFela({ isSidebarOpen })\n\n const data = startStopRankings.map((ranking, i) => ({ index: i, ...ranking }))\n\n const columns = [\n {\n accessor: 'rank',\n align: 'center',\n Header: 'Rank',\n width: 20,\n },\n {\n accessor: 'screen_signature',\n Header: 'Signature',\n Cell: ({ value }) => {value},\n },\n {\n accessor: 'type',\n align: 'center',\n Header: 'Type',\n width: 20,\n },\n {\n accessor: 'user_selected',\n align: 'center',\n Cell: ({\n value,\n row: {\n original: { index },\n },\n }) => (\n toggleSignature(index + 1)} size='small' />\n ),\n Header: 'Selected',\n width: 50,\n },\n ]\n\n const onRowClickHandler = useCallback(\n ({ index }) => {\n changeStep(index + 1)\n },\n [changeStep]\n )\n\n const rowSelection = useMemo(\n () => ({\n selectedRows: [step - 1],\n selectedRowKey: 'index',\n }),\n [step]\n )\n\n const containerConfig = {\n as: 'div',\n style: {\n borderRight: `1px solid ${theme['antd-card-border']}`,\n height: '100%',\n minWidth: '520px',\n overflow: 'auto',\n '> div .fiqds-table-thead': {\n background: theme.white,\n position: 'sticky',\n top: 0,\n zIndex: theme['z-base-above'],\n },\n },\n }\n\n const tableStyles = {\n table: { tr: { cursor: 'pointer', userSelect: 'none' } },\n }\n\n return (\n
\n {isSidebarOpen && (\n \n )}\n
setIsSidebarOpen(!isSidebarOpen)}>\n \n
\n
\n )\n}\n\nSidebar.propTypes = {\n changeStep: PropTypes.func.isRequired,\n step: PropTypes.number.isRequired,\n toggleSignature: PropTypes.func.isRequired,\n startStopRankings: PropTypes.arrayOf(\n PropTypes.shape({\n rank: PropTypes.number,\n screen_signature: PropTypes.string,\n type: PropTypes.oneOf(['start', 'end']),\n user_selected: PropTypes.bool,\n })\n ).isRequired,\n}\n\nexport default Sidebar\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { Button, Group, useFela, Select, Typography, Checkbox, theme } from '@fortressiq/fiq-ds'\nimport { toolbarCSS, detailsListCSS } from './styles/index.js'\n\nimport FormOverlay from './FormOverlay'\n\nconst { Text } = Typography\n\nconst Toolbar = ({\n canNextPage,\n canPreviousPage,\n changeStep,\n currentSignature: { rank, screen_signature: screenSignature, user_selected: userSelected, type },\n step,\n stepLength,\n toggleSignature,\n startStopRankings,\n miningParams,\n filterRules,\n}) => {\n const { css } = useFela()\n\n const selectOptions = Array.from({ length: stepLength }, (v, i) => i + 1).map(num => ({ label: num, value: num }))\n\n return (\n
\n
    \n \n Signature: {screenSignature}\n \n
  • Type: {type}
  • \n
  • Rank: {rank}
  • \n
\n \n \n Signature\n changeStep(Number(value))}\n size='small'\n value={selectOptions.find(option => option.value === step)}\n />\n of {stepLength}\n \n \n \n toggleSignature(step)}\n >\n Use {type} signature\n \n \n \n
\n )\n}\n\nToolbar.propTypes = {\n canNextPage: PropTypes.bool.isRequired,\n canPreviousPage: PropTypes.bool.isRequired,\n changeStep: PropTypes.func.isRequired,\n currentSignature: PropTypes.shape({\n screen_signature: PropTypes.string,\n type: PropTypes.oneOf(['start', 'end']),\n rank: PropTypes.number,\n user_selected: PropTypes.bool,\n }).isRequired,\n filterRules: PropTypes.shape().isRequired,\n miningParams: PropTypes.shape().isRequired,\n startStopRankings: PropTypes.arrayOf(\n PropTypes.shape({\n rank: PropTypes.number,\n screen_signature: PropTypes.string,\n type: PropTypes.oneOf(['start', 'end']),\n user_selected: PropTypes.bool,\n })\n ).isRequired,\n step: PropTypes.number.isRequired,\n stepLength: PropTypes.number.isRequired,\n toggleSignature: PropTypes.func.isRequired,\n}\n\nexport default Toolbar\n","import React, { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { useFela } from '@fortressiq/fiq-ds'\n\nimport api from 'lib/Api'\n\nimport { useHeaderDispatch } from 'app/header/HeaderContext'\nimport Loader from 'components/loaders/MainLoader'\n\nimport Gallery from './Gallery'\nimport Sidebar from './Sidebar'\nimport Toolbar from './Toolbar'\n\nimport { wrapperCSS, innerWrapperCSS } from './styles'\n\nconst pageTitle = 'Process Boundary Detection'\n\nconst ProcessBoundary = ({\n match: {\n params: { reportId },\n },\n}) => {\n const headerDispatch = useHeaderDispatch()\n const [data, setData] = useState([])\n const [imagesHash, setImagesHash] = useState({})\n const [stepLength, setStepLength] = useState(0)\n const [isLoadingSignatures, setIsLoadingSignatures] = useState(true)\n const [isLoadingImages, setIsLoadingImages] = useState(true)\n const [currentSignature, setCurrentSignature] = useState()\n const [step, setStep] = useState(1)\n const { css } = useFela()\n\n const toggleSignature = async selectedStep => {\n // make a copy of the signatures\n const items = [...data.start_stop_rankings]\n // get current signature from the array based on current step\n const item = items[selectedStep - 1]\n // toggle current signature selected state\n item.user_selected = !item.user_selected\n // Replace current signature with the updated signature\n items[selectedStep - 1] = item\n // Update local state\n setData(prevState => ({ ...prevState, start_stop_rankings: items }))\n // make an array of user selected signatures\n const newScreenSignatures = items\n .filter(sig => !!sig.user_selected)\n .map(sig => ({ screen_signature: sig.screen_signature, type: sig.type }))\n await api.put(`/process-boundary/select-signatures/${reportId}`, {\n screen_signatures: newScreenSignatures,\n })\n }\n\n useEffect(() => {\n const fetchImages = async () => {\n setIsLoadingImages(true)\n const { data: newImages } = await api.get('/process-boundary/screenshots', {\n type: currentSignature.type,\n report_mining_run_id: reportId,\n screen_signature: currentSignature.screen_signature,\n })\n setImagesHash(prevState => ({ ...prevState, [currentSignature.screen_signature]: newImages }))\n setIsLoadingImages(false)\n }\n // fetch new images based on current signature\n // don't refetch if images is already in imagesHash state\n if (currentSignature && !(currentSignature.screen_signature in imagesHash)) {\n fetchImages()\n }\n }, [currentSignature, imagesHash, reportId])\n\n useEffect(() => {\n const fetchProcessBoundary = async () => {\n const { data: newData } = await api.get(`/process-boundary/show/${reportId}`)\n setCurrentSignature(newData?.start_stop_rankings?.[0])\n setData(newData)\n setStepLength(newData.start_stop_rankings.length)\n setIsLoadingSignatures(false)\n }\n fetchProcessBoundary()\n headerDispatch({\n type: 'set',\n heading: pageTitle,\n title: pageTitle,\n })\n\n return () => {\n headerDispatch({\n type: 'clear',\n })\n }\n }, [headerDispatch, reportId])\n\n const changeStep = nextStep => {\n setStep(nextStep)\n setCurrentSignature(data?.start_stop_rankings?.[nextStep - 1])\n }\n\n const canPreviousPage = step <= 1\n const canNextPage = step >= stepLength\n const currentImages = imagesHash[currentSignature?.screen_signature] || []\n\n if (isLoadingSignatures) {\n return \n }\n\n return (\n
\n \n
\n \n \n
\n
\n )\n}\n\nProcessBoundary.propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n reportId: PropTypes.string.isRequired,\n }).isRequired,\n }).isRequired,\n}\n\nexport default ProcessBoundary\n","import React from 'react'\nimport shortid from 'shortid'\nimport { Button } from '@fortressiq/fiq-ds'\n\nimport Flash from 'components/flash/Flash'\n\nconst processBoundaryToast = ({ runId }) => {\n const id = shortid.generate()\n\n if (status === 'done') {\n Flash.success(\n {\n message: 'Start/Stop suggestions generated',\n cta: (\n \n ),\n },\n { duration: 0, key: id }\n )\n }\n}\n\nexport default processBoundaryToast\n","export const toolbarCSS = ({ theme }) => ({\n alignItems: 'center',\n background: theme.white,\n borderBottom: `1px solid ${theme['table-border-color']}`,\n display: 'flex',\n justifyContent: 'space-between',\n padding: `${theme['default-spacer-sm']} ${theme['default-spacer-md']}`,\n position: 'sticky',\n top: 0,\n width: '100%',\n zIndex: theme['z-base-above'],\n})\n\nexport const detailsListCSS = () => ({\n listStyle: 'none',\n margin: 0,\n padding: 0,\n overflow: 'hidden',\n})\n\nexport const emptyWrapperCSS = ({ theme }) => ({\n paddingTop: theme['default-spacer-md'],\n width: '100%',\n})\n\nexport const loadingWrapperCSS = ({ theme }) => ({\n paddingTop: theme['default-spacer-lg'],\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n})\n\nexport const wrapperCSS = () => ({\n display: 'flex',\n flexFlow: 'column',\n height: '100%',\n})\n\nexport const innerWrapperCSS = () => ({\n flex: 1,\n display: 'flex',\n overflow: 'hidden',\n})\n\nexport const sidebarCSS = ({ theme, isSidebarOpen }) => ({\n background: theme.white,\n borderRight: isSidebarOpen ? `1px solid ${theme['table-border-color']}` : 'none',\n height: '100%',\n position: 'relative',\n width: isSidebarOpen ? '520px' : '0px',\n})\n\nexport const galleryWrapperCSS = ({ theme }) => ({\n display: 'flex',\n flexWrap: 'wrap',\n height: '100%',\n overflow: 'auto',\n padding: theme['default-spacer-sm'],\n width: '100%',\n})\n\nexport const galleryImageCSS = ({ theme }) => ({\n justifyContent: 'center',\n margin: theme['default-spacer-sm'],\n width: `calc(50% - ${theme['default-spacer-md']})`,\n})\n\nexport const sidebarToggleCSS = ({ theme }) => ({\n alignItems: 'center',\n background: theme.white,\n borderBottom: `1px solid ${theme['table-border-color']}`,\n borderBottomRightRadius: theme['border-radius-base'],\n borderRight: `1px solid ${theme['table-border-color']}`,\n cursor: 'pointer',\n display: 'flex',\n justifycontent: 'center',\n padding: theme['default-spacer-sm'],\n position: 'absolute',\n right: '-38px',\n top: 0,\n zIndex: theme['z-base-above'],\n})\n","import React from 'react'\nimport { Route, Switch } from 'react-router-dom'\n\nimport Can from 'components/can/Can'\n\nimport TankMonitor from './tank/TankMonitor'\nimport TenantCreator from './tenants/TenantCreator'\nimport TenantEditor from './tenants/TenantEditor'\nimport TenantList from './tenants/TenantList'\nimport UserList from './users'\nimport DomainList from './domainList'\nimport ApplicationList from './applicationList'\nimport Integrations from './integrations/Integrations'\n\n// @todo: move routes to a single config\nexport const adminRoutes = [\n {\n path: '/admin/sidekiq',\n component: () => {\n window.location.assign('/admin/sidekiq')\n return null\n },\n },\n { path: '/admin/tank', component: TankMonitor },\n { path: '/admin/tenants', component: TenantList },\n { path: '/admin/tenants/new', component: TenantCreator },\n { path: '/admin/users', component: UserList },\n { path: '/admin/application-list', component: ApplicationList },\n { path: '/admin/domain-list', component: DomainList },\n { path: '/admin/integrations', component: Integrations },\n { path: '/admin/tenants/:id/:page?', component: TenantEditor },\n { path: '/admin/:page?', component: TenantEditor },\n]\n\nconst Admin = () => (\n \n {adminRoutes.map(({ component, roles, ...routeProps }) => {\n const Component = component\n\n return (\n \n \n \n \n \n )\n })}\n \n)\n\nexport default Admin\n","import React, { useEffect, useState } from 'react'\nimport { DateCell, Button, useModal, theme } from '@fortressiq/fiq-ds'\n\nimport TrinityTable, { columnWidths } from 'components/TrinityTable'\n\nimport { useHeaderDispatch } from 'app/header/HeaderContext'\n\nimport { useFetch } from 'lib/hooks'\n\nimport ActionsMenu from './subComponents/ActionsMenu'\nimport ApplicationListForm from './subComponents/ApplicationListForm'\n\nconst sortKeyMap = {\n accessType: 'access_type',\n createdAt: 'created_at',\n}\n\nconst createModalId = 'create-application-list-form'\n\nconst modalConfig = {\n footer: false,\n style: { height: 'auto', width: '500px' },\n config: { interactWithKeyboard: false, destroyOnClose: true },\n headerStyle: { background: theme.white },\n}\n\nconst ApplicationList = () => {\n const [reFetch, setReFetch] = useState(0)\n const { addModal, removeModal } = useModal()\n\n const { data: applicationsOptions } = useFetch('/applications/filters', {\n field: 'win_process_name',\n app_type: 'windows',\n })\n\n const handleReFetch = () => {\n setReFetch(reFetch + 1)\n }\n const headerDispatch = useHeaderDispatch()\n\n const columns = [\n {\n Header: 'Name',\n accessor: 'name',\n },\n {\n align: 'center',\n Header: 'Type',\n accessor: 'accessType',\n width: 50,\n },\n {\n align: 'right',\n Header: 'Created By',\n accessor: 'createdBy',\n disableSortBy: true,\n width: 150,\n Cell: ({ value: { firstName, lastName } }) => `${firstName} ${lastName}`,\n },\n {\n align: 'right',\n Header: 'Created At',\n accessor: 'createdAt',\n width: columnWidths.date,\n maxWidth: columnWidths.date,\n Cell: ({ value }) => ,\n },\n {\n Header: 'Actions',\n accessor: 'actions',\n align: 'center',\n disableSortBy: true,\n width: 30,\n maxWidth: columnWidths.actionMenu,\n Cell: ({ row: { original } }) => (\n \n ),\n },\n ]\n\n useEffect(() => {\n headerDispatch({\n type: 'set',\n title: 'Manage Application List',\n heading: 'Manage Application List',\n })\n\n return () => {\n headerDispatch({\n type: 'clear',\n })\n }\n }, [headerDispatch])\n\n return (\n \n addModal({\n children: (\n removeModal(createModalId)}\n applicationsOptions={applicationsOptions}\n />\n ),\n header: 'Create List',\n id: createModalId,\n ...modalConfig,\n })\n }\n >\n Create List\n ,\n ]}\n reFetch={reFetch}\n sortKeyMap={sortKeyMap}\n params={{ category_type: 'application' }}\n tableId='application-table'\n columns={columns}\n url='/allow_block_lists'\n dataKey='allowBlockList'\n />\n )\n}\n\nexport default ApplicationList\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { Menu, MenuItem, Popconfirm, useModal } from '@fortressiq/fiq-ds'\n\nimport api from 'lib/Api'\n\nimport ActionMenu from 'components/TrinityTable/ActionMenu/ActionMenu'\n\nimport ApplicationListForm from './ApplicationListForm'\n\nconst ActionsMenu = ({ applicationList, handleReFetch, modalConfig, isInUse, applicationsOptions }) => {\n const { addModal, removeModal } = useModal()\n\n const handleDelete = async () => {\n await api.delete(`/allow_block_lists/${applicationList.id}`)\n handleReFetch()\n }\n\n const cloneModalId = 'clone-application-list-form'\n const editModalId = 'edit-application-list-form'\n\n const menu = (\n \n \n addModal({\n children: (\n removeModal(editModalId)}\n editValues={applicationList}\n editId={applicationList.id}\n isInUse={isInUse}\n applicationsOptions={applicationsOptions}\n />\n ),\n header: 'Edit list',\n id: editModalId,\n ...modalConfig,\n })\n }\n >\n Edit\n \n \n addModal({\n children: (\n removeModal(cloneModalId)}\n editValues={applicationList}\n applicationsOptions={applicationsOptions}\n />\n ),\n header: 'Create list',\n id: cloneModalId,\n ...modalConfig,\n })\n }\n >\n Clone\n \n {!isInUse && (\n \n
e.stopPropagation()}>\n {\n handleDelete()\n }}\n placement='left-center'\n title='Are you sure you want to delete this list?'\n >\n Delete\n \n
\n
\n )}\n
\n )\n return \n}\n\nActionsMenu.defaultProps = {\n applicationsOptions: undefined,\n}\n\nActionsMenu.propTypes = {\n applicationsOptions: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.number,\n })\n ),\n applicationList: PropTypes.shape({\n list: PropTypes.arrayOf(PropTypes.string),\n name: PropTypes.string,\n accessType: PropTypes.string,\n }).isRequired,\n handleReFetch: PropTypes.func.isRequired,\n isInUse: PropTypes.bool.isRequired,\n}\n\nexport default ActionsMenu\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { Button, Input, Group, useForm, useFela } from '@fortressiq/fiq-ds'\n\nimport api from 'lib/Api'\n\nimport ControlledSelect from 'components/form/ControlledSelect'\nimport FieldWrapper from 'components/form/FieldWrapper'\n\nimport ControlledApplicationInput from './ControlledApplicationInput'\n\nimport { modalWrapperCSS, scrollWrapperCSS, formFooterCSS } from '../../domainList/subComponents/styles'\n\nconst accessTypeOptions = [\n { label: 'Allow', value: 'allow' },\n { label: 'Block', value: 'block' },\n]\n\nconst generateDefaultValues = editValues => {\n const { accessType, list, name } = editValues\n return {\n accessType: accessTypeOptions.filter(option => option.value === accessType)[0],\n applications: list,\n name: name,\n }\n}\n\nconst ApplicationListForm = ({ editId, editValues, handleReFetch, removeModal, isInUse, applicationsOptions }) => {\n const isEditing = !!editId\n\n const { css } = useFela()\n\n const { register, clearErrors, setError, handleSubmit, control, formState } = useForm({\n mode: 'all',\n reValidateMode: 'onChange',\n defaultValues: editValues ? { ...generateDefaultValues(editValues) } : { applications: [] },\n })\n\n const onSubmitHandler = async formValues => {\n const params = {\n list: formValues.applications,\n name: formValues.name,\n accessType: formValues.accessType.value,\n categoryType: 'application',\n }\n\n // If editId exist, we are in edit mode and use api.put instead of post\n try {\n const data = isEditing ? api.put(`/allow_block_lists/${editId}`, params) : api.post('/allow_block_lists', params)\n await data\n handleReFetch()\n removeModal()\n } catch (err) {\n if (err.response.data.errors.includes('Name already exists for this tenant')) {\n setError('name', {\n type: 'manual',\n message: `Name \"${formValues.name}\" already exist`,\n })\n }\n }\n }\n\n return (\n
\n
\n
\n \n \n \n \n \n \n\n \n
\n \n {\n e.preventDefault()\n removeModal()\n }}\n >\n Cancel\n \n \n \n
\n
\n )\n}\n\nApplicationListForm.defaultProps = {\n editValues: undefined,\n editId: undefined,\n isInUse: false,\n}\n\nApplicationListForm.propTypes = {\n editId: PropTypes.number,\n editValues: PropTypes.shape({\n list: PropTypes.arrayOf(PropTypes.string),\n name: PropTypes.string,\n accessType: PropTypes.string,\n }),\n handleReFetch: PropTypes.func.isRequired,\n removeModal: PropTypes.func.isRequired,\n isInUse: PropTypes.bool,\n}\n\nexport default ApplicationListForm\n","import React, { useState, Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport { Select, useController, Button, Table, useFela, theme } from '@fortressiq/fiq-ds'\nimport FieldWrapper from 'components/form/FieldWrapper'\n\nimport {\n applicationSelectWrapperCSS,\n applicationSelectCSS,\n tableWrapperCSS,\n} from '../../domainList/subComponents/styles'\n\nconst tableContainerCSS = { maxHeight: '40vh', display: 'flex' }\nconst tableWrapperInnerCSS = { flex: 1, overflow: 'auto' }\n\nconst ControlledApplicationInput = ({ control, name, error, clearErrors, applicationsOptions }) => {\n const [localValue, setLocalValue] = useState()\n\n const {\n field: { value, onChange, ref },\n } = useController({\n name,\n control,\n rules: { validate: v => v?.length || 'Add at least one application' },\n })\n\n const { css } = useFela()\n\n const onRemoveApplication = application => {\n const updatedApplication = value.filter(oldApplication => oldApplication !== application)\n onChange(updatedApplication)\n }\n\n const onSubmit = e => {\n e.preventDefault()\n e.stopPropagation()\n onChange([...value, ...localValue.map(({ label }) => label)])\n // clear values after submit\n setLocalValue(null)\n }\n\n const onSelectChange = e => {\n setLocalValue(e)\n if (error) {\n clearErrors('applications')\n }\n }\n\n return (\n \n \n
\n \n \n
\n
\n
\n
\n ({ application })) : []}\n disablePagination={true}\n disableResizing={true}\n verticalBorders={false}\n columns={[\n {\n Header: 'Application',\n accessor: 'application',\n width: 380,\n },\n {\n Header: '',\n accessor: 'action',\n disableSortBy: true,\n minWidth: 60,\n width: 60,\n align: 'right',\n Cell: ({\n row: {\n original: { application },\n },\n }) =>
\n
\n
\n )\n}\n\nControlledApplicationInput.defaultProps = {\n applicationsOptions: undefined,\n}\n\nControlledApplicationInput.propTypes = {\n control: PropTypes.shape({}).isRequired,\n name: PropTypes.string.isRequired,\n rules: PropTypes.shape({}).isRequired,\n clearErrors: PropTypes.func.isRequired,\n applicationsOptions: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n })\n ),\n}\n\nexport default ControlledApplicationInput\n","export const gutter = 16\nexport const topMarginStyle = ({ theme }) => ({ marginTop: theme['default-spacer-md'] })\n","import React, { useEffect, useState } from 'react'\nimport { DateCell, Button, useModal, theme } from '@fortressiq/fiq-ds'\n\nimport TrinityTable, { columnWidths } from 'components/TrinityTable'\n\nimport { useHeaderDispatch } from 'app/header/HeaderContext'\n\nimport ActionsMenu from './subComponents/ActionsMenu'\nimport DomainListForm from './subComponents/DomainListForm'\n\nconst sortKeyMap = {\n accessType: 'access_type',\n createdAt: 'created_at',\n}\n\nconst createModalId = 'create-domain-list-form'\n\nconst modalConfig = {\n footer: false,\n style: { height: 'auto', width: '500px' },\n config: { interactWithKeyboard: false, destroyOnClose: true },\n headerStyle: { background: theme.white },\n}\n\nconst DomainList = () => {\n const [reFetch, setReFetch] = useState(0)\n const { addModal, removeModal } = useModal()\n\n const handleReFetch = () => {\n setReFetch(reFetch + 1)\n }\n const headerDispatch = useHeaderDispatch()\n\n const columns = [\n {\n Header: 'Name',\n accessor: 'name',\n },\n {\n align: 'center',\n Header: 'Type',\n accessor: 'accessType',\n width: 50,\n },\n {\n align: 'right',\n Header: 'Created By',\n accessor: 'createdBy',\n disableSortBy: true,\n width: 150,\n Cell: ({ value: { firstName, lastName } }) => `${firstName} ${lastName}`,\n },\n {\n align: 'right',\n Header: 'Created At',\n accessor: 'createdAt',\n width: columnWidths.date,\n maxWidth: columnWidths.date,\n Cell: ({ value }) => ,\n },\n {\n Header: 'Actions',\n accessor: 'actions',\n align: 'center',\n disableSortBy: true,\n width: 30,\n maxWidth: columnWidths.actionMenu,\n Cell: ({ row: { original } }) => (\n \n ),\n },\n ]\n\n useEffect(() => {\n headerDispatch({\n type: 'set',\n title: 'Manage Domain List',\n heading: 'Manage Domain List',\n })\n\n return () => {\n headerDispatch({\n type: 'clear',\n })\n }\n }, [headerDispatch])\n\n return (\n \n addModal({\n children: removeModal(createModalId)} />,\n header: 'Create List',\n id: createModalId,\n ...modalConfig,\n })\n }\n >\n Create List\n ,\n ]}\n reFetch={reFetch}\n sortKeyMap={sortKeyMap}\n params={{ category_type: 'url' }}\n tableId='domain-table'\n columns={columns}\n url='/allow_block_lists'\n dataKey='allowBlockList'\n />\n )\n}\n\nexport default DomainList\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { Menu, MenuItem, Popconfirm, useModal } from '@fortressiq/fiq-ds'\n\nimport api from 'lib/Api'\n\nimport ActionMenu from 'components/TrinityTable/ActionMenu/ActionMenu'\n\nimport DomainListForm from './DomainListForm'\n\nconst ActionsMenu = ({ domainList, handleReFetch, modalConfig, isInUse }) => {\n const { addModal, removeModal } = useModal()\n\n const handleDelete = async () => {\n await api.delete(`/allow_block_lists/${domainList.id}`)\n handleReFetch()\n }\n\n const cloneModalId = 'clone-domain-list-form'\n const editModalId = 'edit-domain-list-form'\n\n const menu = (\n \n \n addModal({\n children: (\n removeModal(editModalId)}\n editValues={domainList}\n editId={domainList.id}\n isInUse={isInUse}\n />\n ),\n header: 'Edit list',\n id: editModalId,\n ...modalConfig,\n })\n }\n >\n Edit\n \n \n addModal({\n children: (\n removeModal(cloneModalId)}\n editValues={domainList}\n />\n ),\n header: 'Create list',\n id: cloneModalId,\n ...modalConfig,\n })\n }\n >\n Clone\n \n {!isInUse && (\n \n {\n handleDelete()\n }}\n placement='left-center'\n title='Are you sure you want to delete this list?'\n >\n Delete\n \n \n )}\n \n )\n return \n}\n\nActionsMenu.propTypes = {\n domainList: PropTypes.shape({\n list: PropTypes.arrayOf(PropTypes.string),\n name: PropTypes.string,\n accessType: PropTypes.string,\n }).isRequired,\n handleReFetch: PropTypes.func.isRequired,\n}\n\nexport default ActionsMenu\n","import React, { useState, Fragment } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { useController, Input, Table, useFela, Button } from '@fortressiq/fiq-ds'\n\nimport FieldWrapper from 'components/form/FieldWrapper'\nimport { tableWrapperCSS } from './styles'\n\nconst tableContainerCSS = { maxHeight: '40vh', display: 'flex' }\nconst tableWrapperInnerCSS = { flex: 1, overflow: 'auto' }\n\nconst ControlledDomainInput = ({\n control,\n name,\n error,\n clearErrors,\n isRequired,\n setError,\n ...controlledDomainInput\n}) => {\n const { css } = useFela()\n const [localValue, setLocalValue] = useState('')\n\n const {\n field: { value, onChange, ref },\n } = useController({\n name,\n control,\n rules: { validate: v => v?.length || 'Add at least one domain' },\n })\n\n const onRemoveDomain = domain => {\n const updatedDomains = value.filter(oldDomains => oldDomains !== domain)\n onChange(updatedDomains)\n }\n\n const onSubmit = () => {\n if (localValue === '') {\n setError('domains', {\n type: 'manual',\n message: \"Domain can't be blank\",\n })\n } else {\n const newDomains = localValue\n .split(',')\n .map(string => string.trim())\n .filter(item => item !== '')\n onChange([...new Set([...value, ...newDomains])])\n setLocalValue('')\n clearErrors('domains')\n }\n }\n\n return (\n \n \n {\n e.preventDefault()\n onSubmit()\n },\n type: 'secondary',\n }}\n name='domain'\n onChange={e => {\n setLocalValue(e.target.value)\n if (error) {\n clearErrors('domains')\n }\n }}\n onEnter={onSubmit}\n onEnterDependencies={[localValue, JSON.stringify(value)]}\n ref={ref}\n value={localValue}\n {...controlledDomainInput}\n />\n \n\n
\n
\n ({ domain: domain })) : []}\n disablePagination={true}\n disableResizing={true}\n verticalBorders={false}\n columns={[\n {\n Header: 'Domain',\n accessor: 'domain',\n width: 380,\n },\n {\n Header: '',\n accessor: 'action',\n disableSortBy: true,\n minWidth: 60,\n width: 60,\n align: 'right',\n Cell: ({\n row: {\n original: { domain },\n },\n }) =>
\n
\n
\n )\n}\n\nControlledDomainInput.propTypes = {\n control: PropTypes.shape({}).isRequired,\n name: PropTypes.string.isRequired,\n rules: PropTypes.shape({}).isRequired,\n clearErrors: PropTypes.func.isRequired,\n setError: PropTypes.func.isRequired,\n}\n\nexport default ControlledDomainInput\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { Button, Input, Group, useForm, useFela, theme } from '@fortressiq/fiq-ds'\n\nimport api from 'lib/Api'\n\nimport ControlledSelect from 'components/form/ControlledSelect'\nimport FieldWrapper from 'components/form/FieldWrapper'\n\nimport ControlledDomainInput from './ControlledDomainInput'\n\nimport { modalWrapperCSS } from './styles'\n\nconst accessTypeOptions = [\n { label: 'Allow', value: 'allow' },\n { label: 'Block', value: 'block' },\n]\n\nconst generateDefaultValues = editValues => {\n // Remove none form fields: categoryType, createdAt, createdBy, id, updatedAt, observers,\n const { categoryType, createdAt, createdBy, id, updatedAt, observers, accessType, list, ...formFields } = editValues\n return {\n ...formFields,\n // get value label obj for select inputs, based on value from options array\n domains: list,\n accessType: accessTypeOptions.filter(option => option.value === accessType)[0],\n }\n}\n\nconst DomainListForm = ({ editId, editValues, handleReFetch, removeModal, isInUse }) => {\n const isEditing = !!editId\n\n const { css } = useFela()\n\n const { register, clearErrors, setError, handleSubmit, control, formState } = useForm({\n mode: 'all',\n reValidateMode: 'onChange',\n defaultValues: editValues ? { ...generateDefaultValues(editValues) } : { domains: [] },\n })\n\n const onSubmitHandler = async formValues => {\n const params = {\n list: formValues.domains,\n name: formValues.name,\n accessType: formValues.accessType.value,\n categoryType: 'url',\n }\n\n // If editId exist, we are in edit mode and use api.put instead of post\n try {\n const data = isEditing ? api.put(`/allow_block_lists/${editId}`, params) : api.post('/allow_block_lists', params)\n await data\n handleReFetch()\n removeModal()\n } catch (err) {\n if (err.response.data.errors.includes('Name already exists for this tenant')) {\n setError('name', {\n type: 'manual',\n message: `Name \"${formValues.name}\" already exist`,\n })\n }\n }\n }\n\n return (\n
\n
\n \n \n \n \n \n \n \n \n {\n e.preventDefault()\n removeModal()\n }}\n >\n Cancel\n \n \n \n \n
\n )\n}\n\nDomainListForm.defaultProps = {\n editValues: undefined,\n editId: undefined,\n isInUse: false,\n}\n\nDomainListForm.propTypes = {\n editId: PropTypes.number,\n editValues: PropTypes.shape({\n list: PropTypes.arrayOf(PropTypes.string),\n name: PropTypes.string,\n accessType: PropTypes.string,\n }),\n handleReFetch: PropTypes.func.isRequired,\n removeModal: PropTypes.func.isRequired,\n isInUse: PropTypes.bool,\n}\n\nexport default DomainListForm\n","export const modalWrapperCSS = ({ theme }) => ({\n margin: `-${theme['default-spacer-sm']}`,\n padding: theme['default-spacer-sm'],\n})\nexport const scrollWrapperCSS = ({ theme }) => ({\n flex: 1,\n margin: `-${theme['default-spacer-sm']} -${theme['default-spacer-sm']} -1px`,\n maxHeight: '50vh',\n overflow: 'auto',\n padding: `${theme['default-spacer-sm']} ${theme['default-spacer-sm']} 0`,\n})\n\nexport const formFooterCSS = ({ theme }) => ({\n background: theme.white,\n borderTop: `1px solid ${theme['dividing-line']}`,\n margin: `0 -${theme['default-spacer-sm']} -${theme['default-spacer-sm']}`,\n padding: theme['default-spacer-sm'],\n})\n\nexport const tableWrapperCSS = ({ theme }) => ({\n margin: `${theme['default-spacer-sm']} -${theme['default-spacer-sm']} 0`,\n})\n\nexport const applicationSelectWrapperCSS = () => ({\n display: 'flex',\n})\n\nexport const applicationSelectCSS = ({ theme }) => ({\n marginRight: theme['default-spacer-sm'],\n width: '415px',\n})\n","import React, { useEffect, useState, useCallback, memo } from 'react'\nimport {\n useNotification,\n AdvancedCell,\n Button,\n DateCell,\n Menu,\n MenuItem,\n EditableLabel,\n Popconfirm,\n} from '@fortressiq/fiq-ds'\nimport camelCase from 'lodash/camelCase'\nimport { Link } from 'react-router-dom'\nimport qs from 'qs'\nimport shortid from 'shortid'\n\nimport api from 'lib/Api'\nimport StatusBadge from 'components/StatusBadge/StatusBadge'\nimport Flash, { FLASH_LEVELS } from 'components/flash/Flash'\n\nimport ExportMenuItem from 'components/ExportButton/ExportMenuItem'\n\nimport TrinityTable, { columnWidths } from 'components/TrinityTable'\nimport ActionMenu from 'components/TrinityTable/ActionMenu/ActionMenu'\n\nimport callbackStore from 'stores/callback'\n\nimport { useHeaderDispatch } from '../../header/HeaderContext'\n\nconst pageTitle = 'Event Log Exports'\n\nexport const downloadEventLogExport = async eventLogExportId => {\n const { data } = await api.get(`/event_log_exports/${eventLogExportId}/zip_url`)\n window.open(data, '_blank')\n}\n\nlet eventLogExportListCallback\nexport const eventLogExportSuccess = ({ eventLogExport, graphProcessName }) => {\n if (eventLogExportListCallback) {\n eventLogExportListCallback()\n }\n\n const messageText = [\n `Event log ${eventLogExport.exportType} export`,\n graphProcessName && `for ${eventLogExport.name || graphProcessName}`,\n 'is ready.',\n ]\n .filter(Boolean)\n .join(' ')\n const id = shortid.generate()\n Flash.success(\n {\n description: messageText,\n message: 'Event log export',\n cta: (\n {\n downloadEventLogExport(eventLogExport.id)\n Flash.remove(id)\n }}\n size='small'\n >\n Download Now\n \n ),\n },\n { duration: 0, key: id }\n )\n}\n\nconst sortKeyMap = {\n exportType: 'export_type',\n createdAt: 'created_at',\n}\n\nconst exportsMap = {\n cycle_events: { displayName: 'Cycle', originUrl: '/cycles', idParam: 'cycleIds' },\n flowgraph_process: { displayName: 'Flow Process', originUrl: '/processes', idParam: 'graphProcessIds' },\n graph_process: { displayName: 'Path Process', originUrl: '/processes', idParam: 'graphProcessIds' },\n mining_run: { displayName: 'Mining', originUrl: '/mining', idParam: 'miningRunIds' },\n}\n\nconst geOriginUrl = (recordTypeKey, exportRecords) => {\n const IDs = [exportRecords.map(({ record_id: rId }) => rId)]\n return `${exportsMap[recordTypeKey].originUrl}?globalFilter={\"${exportsMap[recordTypeKey].idParam}\":[${IDs}]}`\n}\n\nconst EventLogExportList = () => {\n const [reFetch, setRefetch] = useState(0)\n const [deletingEventLogExport, setDeletingEventLogExport] = useState(null)\n const headerDispatch = useHeaderDispatch()\n const { addNotification } = useNotification()\n\n eventLogExportListCallback = () => {\n setRefetch(reFetch + 1)\n }\n\n const deleteEventLogExport = useCallback(\n async eventLogExportId => {\n if (deletingEventLogExport) {\n return null\n }\n setDeletingEventLogExport(eventLogExportId)\n const { data } = await api.delete(`/event_log_exports/${eventLogExportId}`)\n\n addNotification({\n message: 'Delete Successful',\n description: `Deleted \"${data.name}\"`,\n type: FLASH_LEVELS.SUCCESS,\n })\n setDeletingEventLogExport(null)\n setRefetch(reFetch + 1)\n },\n [deletingEventLogExport, setDeletingEventLogExport, addNotification, reFetch]\n )\n\n const handleUpdateExportName = ({ id, value: exportName }) => api.put(`/event_log_exports/${id}`, { exportName })\n\n const columns = [\n {\n Header: 'ID',\n accessor: 'id',\n align: 'left',\n width: columnWidths.id,\n minWidth: columnWidths.id,\n },\n {\n Header: 'Name',\n accessor: 'name',\n width: 300,\n Cell: ({\n value: name,\n row: {\n original: { id },\n },\n }) => (\n handleUpdateExportName({ value, id })}\n />\n ),\n },\n {\n Header: 'Type',\n accessor: 'exportType',\n },\n {\n Header: 'Created',\n accessor: 'createdAt',\n Cell: ({ value: timestamp }) => ,\n },\n {\n accessor: 'filesize',\n disableSortBy: true,\n Header: 'Size',\n width: 90,\n },\n {\n accessor: 'status',\n Header: 'Status',\n width: 80,\n Cell: ({ value: status }) => ,\n },\n {\n align: 'center',\n accessor: 'action',\n disableSortBy: true,\n Header: 'File',\n width: 60,\n Cell: ({\n row: {\n original: { name, status, exportType, filterRules: filter = {}, id, recordsByType },\n },\n }) => {\n const isDeleting = deletingEventLogExport === id\n const menu = (\n \n {status === 'complete' && (\n downloadEventLogExport(id)}\n exportName={name}\n callbackStore={callbackStore}\n />\n )}\n {!!Object.keys(filter).length && (\n \n View Search\n \n )}\n {['cycle_events', 'graph_process', 'flowgraph_process', 'mining_run'].includes(exportType)\n ? Object.entries(recordsByType).map(([recordTitle, exportRecords]) => {\n const recordTypeKey = camelCase(recordTitle)\n return (\n \n \n View {exportsMap[exportType].displayName || exportType}\n \n \n )\n })\n : null}\n event.stopPropagation()}>\n !isDeleting && deleteEventLogExport(id)}\n placement='left-center'\n >\n {isDeleting ? 'Deleting' : 'Delete'}\n \n \n \n )\n return \n },\n },\n ]\n\n useEffect(() => {\n headerDispatch({\n type: 'set',\n heading: pageTitle,\n title: pageTitle,\n })\n\n return () => {\n eventLogExportListCallback = null\n headerDispatch({\n type: 'clear',\n })\n }\n }, [headerDispatch])\n\n return (\n \n )\n}\n\nexport default memo(EventLogExportList)\n","import React, { useEffect, useState } from 'react'\nimport { Button, useModal } from '@fortressiq/fiq-ds'\n\nimport { useHeaderDispatch } from 'app/header/HeaderContext'\n\nimport TrinityTable, { columnWidths } from 'components/TrinityTable'\n\nimport IntegrationFormModal from './SubComponents/IntegrationFormModal'\nimport ActionsMenu from './SubComponents/ActionsMenu'\n\nconst sortKeyMap = {\n exportType: 'export_type',\n createdAt: 'created_at',\n updatedAt: 'updated_at',\n}\n\nconst Integrations = () => {\n const [reFetch, setReFetch] = useState(1)\n const headerDispatch = useHeaderDispatch()\n const { addModal, removeModal } = useModal()\n\n const handleReFetch = () => {\n setReFetch(reFetch + 1)\n }\n\n useEffect(() => {\n headerDispatch({\n type: 'set',\n title: 'Integrations',\n heading: 'Integrations',\n })\n\n return () => {\n headerDispatch({\n type: 'clear',\n })\n }\n }, [headerDispatch])\n\n const columns = [\n {\n accessor: 'id',\n align: 'center',\n Header: 'ID',\n maxWidth: columnWidths.id,\n },\n {\n Header: 'Button Label',\n accessor: 'title',\n disableSortBy: true,\n },\n {\n Header: 'Endpoint',\n accessor: 'endpoint',\n disableSortBy: true,\n },\n {\n Header: 'Transport',\n accessor: 'transport',\n disableSortBy: true,\n maxWidth: 80,\n },\n {\n Header: 'Integration Type',\n accessor: 'integrationType',\n disableSortBy: true,\n maxWidth: 100,\n },\n {\n Header: 'Authorization Type',\n accessor: 'authorizationType',\n disableSortBy: true,\n maxWidth: 100,\n },\n {\n accessor: 'method',\n align: 'center',\n Header: 'Method',\n maxWidth: 50,\n disableSortBy: true,\n },\n {\n accessor: 'isActive',\n align: 'center',\n Header: 'Active',\n disableSortBy: true,\n maxWidth: 50,\n Cell: ({ value }) => (value ? 'True' : 'False'),\n },\n {\n Header: 'Actions',\n accessor: 'actions',\n align: 'center',\n disableSortBy: true,\n width: 60,\n Cell: ({ row: { original } }) => ,\n },\n ]\n const modalID = 'integrations-form-modal'\n\n return (\n \n addModal({\n children: removeModal(modalID)} />,\n header: 'Create a new integration',\n footer: false,\n id: modalID,\n style: { width: '400px' },\n })\n }\n type='secondary'\n >\n Create Integration\n ,\n ]}\n reFetch={reFetch}\n tableId='integrations-table'\n sortKeyMap={sortKeyMap}\n columns={columns}\n url='/dynamic_integrations'\n dataKey='integrations'\n />\n )\n}\n\nexport default Integrations\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { Menu, MenuItem, Popconfirm, useModal } from '@fortressiq/fiq-ds'\n\nimport api from 'lib/Api'\n\nimport ActionMenu from 'components/TrinityTable/ActionMenu/ActionMenu'\nimport IntegrationFormModal from './IntegrationFormModal'\n\nconst ActionsMenu = ({ integration, handleReFetch }) => {\n const { addModal, removeModal } = useModal()\n\n const handleDelete = async () => {\n await api.delete(`/dynamic_integrations/${integration.id}`)\n handleReFetch()\n }\n\n const handleActivateToggle = async () => {\n const params = {\n is_active: !integration.isActive,\n }\n await api.put(`/dynamic_integrations/${integration.id}`, params)\n handleReFetch()\n }\n const modalID = 'edit-menu-item'\n\n const menu = (\n \n \n addModal({\n children: (\n removeModal(modalID)}\n editValues={integration}\n editId={integration.id}\n />\n ),\n header: 'Edit integration',\n footer: false,\n id: modalID,\n style: { width: '400px' },\n })\n }\n >\n Edit\n \n handleActivateToggle()}>\n {integration.isActive ? 'Deactivate' : 'Activate'}\n \n event.stopPropagation()}>\n \n Delete\n \n \n \n )\n return \n}\n\nActionsMenu.propTypes = {\n handleReFetch: PropTypes.func.isRequired,\n integration: PropTypes.shape({\n id: PropTypes.number,\n isActive: PropTypes.bool,\n }).isRequired,\n}\n\nexport default ActionsMenu\n","import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport debounce from 'lodash/debounce'\nimport { Button, Input, useForm, useFela } from '@fortressiq/fiq-ds'\n\nimport ControlledSelect from 'components/form/ControlledSelect'\nimport FieldWrapper from 'components/form/FieldWrapper'\nimport ControlledSwitch from 'components/form/ControlledSwitch'\n\nimport api from 'lib/Api'\n\nimport wrapperCSS from './wrapperCSS'\n\nconst typeOptions = [\n { value: 'Tenant', label: 'Tenant' },\n { value: 'Observer', label: 'Observer' },\n { value: 'Application', label: 'Application' },\n { value: 'Cycle', label: 'Cycle' },\n { value: 'Process', label: 'Process' },\n { value: 'Mining Run', label: 'Mining Run' },\n { value: 'Event', label: 'Event' },\n]\n\nconst transportOptions = [\n { value: 'HTTP', label: 'HTTP' },\n { value: 'HTTPS', label: 'HTTPS' },\n]\n\nconst methodOptions = [\n { value: 'GET', label: 'GET' },\n { value: 'POST', label: 'POST' },\n { value: 'PUT', label: 'PUT' },\n { value: 'DELETE', label: 'DELETE' },\n]\n\nconst authorizationTypeOptions = [\n { value: 'None', label: 'None' },\n { value: 'Basic', label: 'Basic' },\n { value: 'Bearer', label: 'Bearer' },\n]\n\nconst generateDefaultValues = editValues => {\n // Remove none form fields: createdAt, id, tenantId, updatedAt,\n const { createdAt, id, tenantId, updatedAt, integrationType, transport, method, authorizationType, ...formFields } =\n editValues\n return {\n ...formFields,\n // get value label obj for select inputs, based on value from options array\n integrationType: typeOptions.filter(option => option.value === integrationType)[0],\n transport: transportOptions.filter(option => option.value === transport)[0],\n method: methodOptions.filter(option => option.value === method)[0],\n authorizationType: authorizationTypeOptions.filter(option => option.value === authorizationType)[0],\n }\n}\n\nconst IntegrationFormModal = ({ removeModal, handleReFetch, editId, editValues }) => {\n const { css } = useFela()\n const isEditing = !!editId\n\n const { register, watch, setValue, handleSubmit, control, formState } = useForm({\n mode: 'all',\n reValidateMode: 'onChange',\n shouldUnregister: true, // Will unregister conditional fields\n defaultValues: editValues ? { ...generateDefaultValues(editValues) } : undefined,\n })\n\n const onSubmitHandler = async formValues => {\n let { endpoint } = formValues\n if (endpoint.toLowerCase().startsWith('https://')) {\n endpoint = endpoint.substring(8)\n } else if (endpoint.toLowerCase().startsWith('http://')) {\n endpoint = endpoint.substring(7)\n }\n const params = {\n integration_type: formValues.integrationType.value,\n authorization_type: formValues.authorizationType.value,\n endpoint: endpoint,\n method: formValues.method.value,\n transport: formValues.transport.value,\n title: formValues.title,\n is_active: formValues.isActive,\n ...(formValues.authorizationType.value === 'Bearer' &&\n formValues.bearerToken && { api_token: formValues.bearerToken }),\n ...(formValues.authorizationType.value === 'Basic' &&\n formValues.password && {\n password: formValues.password,\n }),\n ...(formValues.authorizationType.value === 'Basic' && {\n user_name: formValues.userName,\n }),\n }\n\n // If editId exist, we are in edit mode and use api.put instead of post\n const data = isEditing\n ? api.put(`/dynamic_integrations/${editId}`, params)\n : api.post('/dynamic_integrations', params)\n await data\n handleReFetch()\n removeModal()\n }\n\n const validatePassword = value => {\n // If editing allow empty password\n if ((isEditing && editValues.authorizationType === 'Basic') || value !== '') {\n return true\n }\n return false\n }\n\n // authorizationType bearer and basic has some additional fields\n // Need to watch authorizationType to determine what fields to display\n const watchAuthorizationField = watch('authorizationType')\n\n const help = debounce(val => {\n const url = val.toLowerCase()\n if (url.startsWith('https:')) {\n setValue('transport', { value: 'HTTPS', label: 'HTTPS' }, { shouldDirty: true })\n } else if (url.startsWith('http:')) {\n setValue('transport', { value: 'HTTP', label: 'HTTP' }, { shouldDirty: true })\n }\n }, 300)\n\n const endPointHelper = evt => {\n help(evt.target.value)\n }\n\n return (\n
\n
\n \n \n \n \n \n \n \n value.includes('%id%'),\n })}\n onChange={endPointHelper}\n />\n \n \n \n \n \n \n \n \n \n \n {watchAuthorizationField && watchAuthorizationField.value === 'Bearer' && (\n \n validatePassword(value),\n })}\n />\n \n )}\n {watchAuthorizationField && watchAuthorizationField.value === 'Basic' && (\n \n \n \n \n \n validatePassword(value),\n })}\n />\n \n \n )}\n \n \n \n \n \n
\n )\n}\n\nIntegrationFormModal.defaultProps = {\n editId: undefined,\n editValues: undefined,\n}\n\nIntegrationFormModal.propTypes = {\n removeModal: PropTypes.func.isRequired,\n handleReFetch: PropTypes.func.isRequired,\n editId: PropTypes.number,\n editValues: PropTypes.shape({\n authorizationType: PropTypes.string,\n endpoint: PropTypes.string,\n integrationType: PropTypes.string,\n isActive: PropTypes.bool,\n method: PropTypes.string,\n title: PropTypes.string,\n transport: PropTypes.string,\n }),\n}\n\nexport default IntegrationFormModal\n","const wrapperCSS = ({ theme }) => ({\n maxHeight: '80vh',\n overflow: 'auto',\n margin: `-${theme['default-spacer-sm']}`,\n padding: theme['default-spacer-sm'],\n})\n\nexport default wrapperCSS\n","import api from 'lib/Api'\n\nconst handleIntegration = ({ integrationId, objectId }) => {\n api.get(`/dynamic_integrations/${integrationId}/execute`, { object_id: objectId })\n}\n\nexport default handleIntegration\n","import { observable, action, computed } from 'mobx'\n\nexport default class BatchStore {\n @observable startedAt = null\n\n @observable endedAt = null\n\n @observable failed = 0\n\n @observable succeeded = 0\n\n @observable total = 0\n\n @observable observers = 0\n\n constructor(id) {\n this.id = id\n }\n\n @action\n update(event, data) {\n switch (event) {\n case 'aggregator-started':\n this.startedAt = data.timestamp\n break\n case 'aggregator-processing':\n this.total = data.total\n break\n case 'aggregator-finished':\n this.endedAt = data.timestamp\n break\n case 'logs-processed':\n this.failed += data.failed\n this.succeeded += data.processed\n break\n case 'observer-updated':\n this.observers += 1\n break\n default:\n window.console.warn(`TankMonitor: Unknown event type: ${event}`)\n }\n }\n\n @computed get completed() {\n return this.endedAt !== null\n }\n\n @computed get progress() {\n if (this.total === 0) {\n return 100\n } else {\n return Math.floor(((this.failed + this.succeeded) / this.total) * 100)\n }\n }\n}\n","import React from 'react'\nimport { ActionCableConsumer } from 'components/actioncable-provider'\nimport { observer } from 'mobx-react'\nimport localizer from 'lib/Localizer'\nimport Main from 'components/main/Main'\n\nimport TankStore from './TankStore'\n\nconst TankMonitor = () => {\n const { batches, update } = new TankStore()\n\n return (\n
\n

Tank: Aggregation Monitor

\n {batches.length === 0 && (\n
\n Waiting for an aggregation run to start...\n
\n )}\n {batches.reverse().map(batch => (\n
\n BatchID: {batch.id}\n
\n            STATUS {batch.completed ? 'Done' : 'Processing...'}\n            
\n ROWS TOTAL {localizer.asInteger(batch.total)}\n
\n ROWS PROCESSED {localizer.asInteger(batch.succeeded)}\n
\n ROWS FAILED {localizer.asInteger(batch.failed)}\n
\n OBSERVERS SEEN {batch.observers}\n
\n STARTED AT {localizer.asDateTime(batch.startedAt)}\n
\n ENDED AT {localizer.asDateTime(batch.endedAt)}\n
\n
\n
\n ))}\n \n
\n )\n}\n\nexport default observer(TankMonitor)\n","import { observable, action } from 'mobx'\nimport BatchStore from './BatchStore'\n\nexport default class TankStore {\n @observable batches = []\n\n @action\n update = message => {\n const [batchId, event, data] = message\n\n let batch = this.batches.find(b => b.id === batchId)\n if (!batch) {\n batch = new BatchStore(batchId)\n this.batches = [...this.batches, batch]\n }\n\n batch.update(event, data)\n }\n}\n","import React from 'react'\nimport { Button } from '@fortressiq/fiq-ds'\n\nimport Can from 'components/can/Can'\n\nconst CreateTenantButton = () => (\n \n \n \n)\n\nexport default CreateTenantButton\n","import React, { Fragment, useEffect, useState } from 'react'\nimport { shape, string, number, bool, func, oneOfType } from 'prop-types'\nimport set from 'lodash/set'\nimport {\n Button,\n Col,\n Element,\n get,\n Group,\n Heading,\n Input,\n Label,\n Radio,\n RadioGroup,\n Row,\n Select,\n theme,\n Typography,\n useModal,\n useNotification,\n FormControl,\n} from '@fortressiq/fiq-ds'\n\nimport Can, { roleActionCheck } from 'components/can/Can'\nimport { useUserState } from 'context/UserContext'\n\nimport api from 'lib/Api'\nimport uiStore from 'lib/UiStore'\n\nimport MainLoader from 'components/loaders/MainLoader'\nimport ConfigureObserver from 'components/configureObserver/ConfigureObserver'\nimport { LIST_CATEGORIES, LIST_TYPES } from 'components/configureObserver/Constants'\nimport { fetchUrlAllowAndBlockLists, getConfiguredAllowBlockLists } from 'components/configureObserver/utils'\n\nimport InfoTooltip from 'components/infoTooltip/InfoTooltip'\nimport SwitchSection from './SwitchSection'\nimport { columnCSS, containerCss, contentCss, footerCss, observerConfigContainer, coeErrorCss } from './styles/index'\n\nimport { AGGREGATION_STRATEGIES, validCoeUrl, TENANT_TYPES } from './constants'\n\nconst { Paragraph } = Typography\n\nconst fullRowInputContainerProps = { style: { margin: `0 ${theme['default-spacer-md']} 0 0` } }\nconst selectLabelStyles = {\n style: {\n marginTop: theme['default-spacer-md'],\n },\n}\n\nconst sharedInputProps = {\n containerProps: {\n style: { width: '100%' },\n },\n}\n\nconst defaultObserverSettings = {\n screenshotAllowed: true,\n titleAllowed: true,\n keystrokeAllowed: true,\n clipboardAllowed: true,\n urlLists: [],\n urlListValue: undefined,\n urlListAccessType: LIST_TYPES.NONE.val,\n applicationLists: [],\n applicationListValue: undefined,\n applicationListAccessType: LIST_TYPES.NONE.val,\n active: false,\n}\n\nconst getIndex = selectedValue => AGGREGATION_STRATEGIES.findIndex(o => o.value === selectedValue)\n\nconst ObserverPrivacyTooltip = () => (\n \n \n Enabling observer privacy changes the displayed observer-name from a combination of username-machine to a\n randomly-selected word, only for non-admin (Limited, Discovery, Power) role Process Discovery users.\n \n \n This optional setting is intended to help protect the privacy of your observed users as other people access their\n data in Process Discovery.\n \n \n Enabling observer privacy also disables the ability to export data for non-admin users throughout the app.\n Exporting events to .csv will continue to display the username and machine-name for admin users.\n \n \n)\n\nconst CoEManagerRoleError = () => (\n
\n

\n The configured CoE Manager user does not have sufficient permissions.
\n The user must belong to at least a Collaborator role in CoE Manager.\n

\n

Are you sure you want to save your changes?

\n
\n)\n\nconst CoEManagerAuthError = () => (\n
\n

The configured CoE Manager user or password is not valid.

\n

Are you sure you want to save your changes?

\n
\n)\n\nconst DemiGroup = ({ children, className }) => (\n \n {children}\n \n)\n\nconst ManageAccount = ({ defaultTenant, tenantId, isLoading, setIsLoading, setDefaultTenant, allowAllSettings }) => {\n const [isTestable, setIsTestable] = useState()\n const [tenant, setTenant] = useState(defaultTenant)\n const [observerConfigLoading, setObserverConfigLoading] = useState(true)\n const { addNotification } = useNotification()\n const { roles } = useUserState()\n const { addModal, removeModal } = useModal()\n\n const [observerConfiguration, setObserverConfiguration] = useState(defaultObserverSettings)\n const {\n active,\n screenshotAllowed,\n titleAllowed,\n keystrokeAllowed,\n clipboardAllowed,\n urlLists,\n urlListValue,\n urlListAccessType,\n applicationLists,\n applicationListValue,\n applicationListAccessType,\n } = observerConfiguration\n\n // validate if COE field is empty or matches regex\n const isCoeUrlValid = !tenant.coeIntakeUrl || validCoeUrl.test(tenant.coeIntakeUrl)\n\n useEffect(() => {\n setTenant({ ...defaultTenant })\n }, [defaultTenant])\n useEffect(() => {\n const fetchConfigData = async () => {\n const {\n data: {\n data: { attributes: data },\n },\n } = await api.get('/tenants/neo_config_policies', { id: tenantId })\n\n const { urlLists: newUrlLists, applicationLists: newApplicationLists } = await fetchUrlAllowAndBlockLists()\n\n const { url: urlListValueObj, application: applicationListValueObj } = getConfiguredAllowBlockLists(\n data.allowBlockLists\n )\n\n const newUrlListAccessType = urlListValueObj?.accessType || LIST_TYPES.NONE.val\n\n const newAppListAccessType = applicationListValueObj?.accessType || LIST_TYPES.NONE.val\n\n const newValues = {\n ...data,\n urlLists: newUrlLists,\n urlListAccessType: newUrlListAccessType,\n urlListValue: urlListValueObj?.id,\n applicationLists: newApplicationLists,\n applicationListAccessType: newAppListAccessType,\n applicationListValue: applicationListValueObj?.id,\n }\n setObserverConfiguration(newValues)\n setObserverConfigLoading(false)\n }\n if (allowAllSettings) {\n fetchConfigData()\n } else {\n setObserverConfigLoading(false)\n }\n }, [allowAllSettings, tenantId])\n\n const onChange = ({ target: { name, value } }) => {\n // need to clone because set isn't making a new object\n setTenant({ ...set(tenant, name, value) })\n const emailFields = ['smtpHost', 'smtpPort', 'smtpUsername', 'smtpPassword', 'emailFromAddress']\n if (emailFields.includes(name)) {\n setIsTestable(false)\n }\n }\n\n const onChangePEG = ({ target: { name, value } }) => {\n const vals = { ...tenant }\n const nameArr = name.split('.')\n let i = 0\n let obj = vals\n while (i < nameArr.length - 1) {\n obj = obj[nameArr[i]]\n i += 1\n }\n obj[nameArr[i]] = value\n setTenant(vals)\n }\n\n const onObserverPrivacyChange = ({ selectedValue }) => {\n const settings = { ...tenant.privacySettings.settings }\n settings.observers.mode = selectedValue\n setTenant({ ...tenant, privacySettings: { settings } })\n }\n\n const onObserverActiveChange = ({ selectedValue }) =>\n setObserverConfiguration({ ...observerConfiguration, active: selectedValue })\n\n const isSubmitDisabled = () => {\n const urlListNotFilled = urlListAccessType !== LIST_TYPES.NONE.val && !urlListValue\n const applicationListNotFilled = applicationListAccessType !== LIST_TYPES.NONE.val && !applicationListValue\n const invalidEmptyPassword = tenant.coeUserName !== defaultTenant.coeUserName && !tenant.coeUserPassword\n return (\n urlListNotFilled ||\n applicationListNotFilled ||\n !isCoeUrlValid ||\n (!tenant.coeIntakeUrl && tenant.coeUserName) ||\n invalidEmptyPassword\n )\n }\n\n const save = async (forceCoeSave = false) => {\n // When a CoE user changes their username, the password must also change\n if (tenant.coeUserName && tenant.coeUserName !== defaultTenant.coeUserName && !tenant.coeUserPassword) return\n\n setIsLoading(true)\n const {\n aggregationFrequency,\n isActive,\n name,\n tenantType,\n smtpHost,\n smtpPort,\n smtpUsername,\n smtpPassword,\n emailFromAddress,\n appUrl,\n privacySettings,\n coeIntakeUrl,\n coeUserName,\n coeUserPassword,\n } = tenant\n\n if (appUrl && appUrl.endsWith('/')) {\n setTenant({ ...tenant, appUrl: appUrl.slice(0, -1) })\n }\n\n const params = {\n name: name,\n tenant_type: tenantType,\n app_url: appUrl,\n smtp_host: smtpHost,\n smtp_port: smtpPort,\n smtp_username: smtpUsername,\n smtp_password: smtpPassword,\n email_from_address: emailFromAddress,\n privacy_settings: privacySettings.settings,\n aggregation_frequency: aggregationFrequency,\n is_active: isActive || false,\n is_lite_customer: tenant.isLite || false,\n coe_intake_url: coeIntakeUrl || null,\n coe_user_name: coeUserName,\n coe_user_password: coeUserPassword,\n force_save: forceCoeSave || false,\n }\n\n // don't send secret_access_key if it's empty\n if (!params.privacy_settings.minio.secret_access_key) {\n delete params.privacy_settings.minio.secret_access_key\n }\n\n if (!params.smtp_password) {\n delete params.smtp_password\n }\n\n try {\n await api.put(`/tenants/${tenantId}`, params)\n } catch (error) {\n if (error?.response?.data?.error_type !== 'shibumi') return\n addModal({\n children:\n error?.response?.data?.error === 'Failed Permissions' ? : ,\n footer: (\n \n {\n removeModal('coeManagerCrednetialsModal')\n setIsLoading(false)\n }}\n >\n Cancel\n \n {\n save(true)\n setIsLoading(false)\n removeModal('coeManagerCrednetialsModal')\n }}\n type='primary'\n >\n Save\n \n \n ),\n header: 'CoE Manager Credentials',\n id: 'coeManagerCrednetialsModal',\n style: { width: '500px', maxWidth: '90vw' },\n })\n return\n }\n\n if (allowAllSettings) {\n const defaultObserverConfig = {\n clipboardAllowed: clipboardAllowed || false,\n keystrokeAllowed: keystrokeAllowed || false,\n screenshotAllowed: screenshotAllowed || false,\n titleAllowed: titleAllowed || false,\n }\n\n const allowBlockLists = []\n if (urlListValue) allowBlockLists.push({ id: urlListValue, type: LIST_CATEGORIES.URL })\n if (applicationListValue) allowBlockLists.push({ id: applicationListValue, type: LIST_CATEGORIES.APPLICATION })\n\n await api.put(\n `/tenants/neo_config_policies?id=${tenantId}`,\n {\n ...defaultObserverConfig,\n allowBlockLists: allowBlockLists,\n active: active || false,\n },\n false\n )\n }\n\n setIsLoading(false)\n\n if (uiStore.tenant.id === tenant.id && tenant.isLite !== defaultTenant.isLite) {\n uiStore.setTenantData({ ...uiStore.tenant, isLite: tenant.isLite })\n }\n uiStore.setTenantData({ ...uiStore.tenant, coeIntakeUrl: coeIntakeUrl || null })\n\n addNotification({\n autoClose: 3000,\n description: 'Your tenant settings have been saved.',\n message: 'Updated Tenant',\n type: 'success',\n })\n\n setIsTestable(true)\n setDefaultTenant({ ...tenant })\n }\n\n const onSave = () => {\n if (tenant.isLite !== defaultTenant.isLite) {\n addModal({\n children: 'Turning the \"FIQ Lite\" option off will enable machine learning services for this tenant.',\n header: 'Confirm save',\n id: 'fiq-lite-confirm',\n style: { width: '400px' },\n onCancel: () => {\n // intentionally left blank\n },\n onOk: save,\n })\n } else {\n save()\n }\n }\n\n const onTest = async e => {\n e.preventDefault()\n const { data } = await api.put('/tenants/test')\n\n addNotification({\n autoClose: 3000,\n description: `A test email has been sent to ${data.email}.`,\n message: 'Email sent.',\n type: 'success',\n })\n }\n\n const selectOnChangeHandler = ({ name, value }) => {\n setTenant({ ...tenant, [name]: value })\n }\n\n const onSwitchFiqLite = ({ SWITCH_STATE }) => setTenant({ ...tenant, isLite: SWITCH_STATE })\n\n const onSwitch = ({ SWITCH_STATE }) =>\n onChangePEG({ target: { name: 'privacySettings.settings.minio.active', value: SWITCH_STATE } })\n\n if (isLoading || observerConfigLoading) {\n return \n }\n\n const getTenantType = () => {\n const tenantTypeOption = TENANT_TYPES.find(type => type.value === tenant.tenantType)\n if (roles.includes('superuser') && !tenantTypeOption) return { label: '', value: null }\n if (!tenantTypeOption) return TENANT_TYPES[0]\n return tenantTypeOption\n }\n\n return (\n \n \n \n General Settings\n \n \n \n \n {roles.includes('superuser') ? (\n \n \n selectOnChangeHandler({ name: 'tenantType', value: value })}\n value={getTenantType()}\n style={{ marginBottom: theme['default-spacer-md'] }}\n />\n \n ) : (\n \n \n \n \n )}\n\n {defaultTenant.isLite && (\n \n \n \n )}\n \n \n selectOnChangeHandler({ name: 'aggregationFrequency', value: value })}\n options={AGGREGATION_STRATEGIES}\n placeholder='Select an Aggregation Strategy...'\n />\n\n onChange({ target: { name: 'isActive', value: SWITCH_STATE } })}\n style={{ marginBottom: theme['default-spacer-lg'] }}\n />\n\n COE Manager Integration\n \n \n \n \n \n \n \n \n {/* password will not be sent, but if a user has a coe user name, they have a passwword */}\n \n \n \n \n\n \n Mail Settings\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {allowAllSettings && (\n \n Observer Settings\n \n Default Observer Settings\n \n \n \n \n setObserverConfiguration({ ...observerConfiguration, [`${type}ListValue`]: null, [key]: value })\n }\n applicationLists={applicationLists}\n applicationListValue={applicationListValue}\n applicationListAccessType={applicationListAccessType}\n onChange={(key, value) => setObserverConfiguration({ ...observerConfiguration, [key]: value })}\n isLoading={observerConfigLoading}\n styled={false}\n />\n \n \n \n \n New Observer Recording\n \n \n \n Enable\n Disable\n \n \n \n \n Observer Privacy\n } />\n \n \n Standard Observer Names (Default)\n Privacy Mode\n \n \n \n \n )}\n \n PEG Settings\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Save\n \n \n \n )\n}\n\nManageAccount.propTypes = {\n defaultTenant: shape({\n aggregationFrequency: string,\n appUrl: string,\n coeIntakeUrl: string,\n coeUserName: oneOfType([string, null]),\n createdAt: string,\n emailFromAddress: string,\n id: number,\n isActive: bool,\n isLite: bool,\n name: string,\n smtpHost: string,\n smtpPassword: string,\n smtpPort: string,\n smtpUsername: string,\n updatedAt: string,\n uuid: string,\n }),\n tenantId: oneOfType(string, number),\n isLoading: bool,\n setIsLoading: func,\n setDefaultTenant: func,\n allowAllSettings: bool,\n}\n\nexport default ManageAccount\n","import React, { memo, useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { Card, useFela, theme, chroma } from '@fortressiq/fiq-ds'\nimport { Charts, defaultChartConfigProps, FusionCharts, FusionTheme, PowerCharts, ReactFC } from 'components/viz/index'\n\nimport { chartWrapperCSS } from './styles'\n\nimport { cardTitleStyle } from './constants'\n\nReactFC.fcRoot(FusionCharts, PowerCharts, Charts, FusionTheme)\n\nconst CreditsChart = ({ chartData, loading }) => {\n const { css } = useFela()\n const [creditChartData, setCreditChartData] = useState([])\n const [creditChartLabels, setCreditChartLabels] = useState([])\n\n useEffect(() => {\n const data = []\n const labels = []\n const barColor = chroma(theme['wine-tints-0']).hex()\n Object.keys(chartData).forEach(key => {\n labels.push({ label: key })\n data.push({\n value: chartData[key],\n color: barColor,\n })\n })\n setCreditChartLabels(labels)\n setCreditChartData(data)\n }, [chartData])\n\n const dataSource = {\n chart: {\n showHoverEffect: '1',\n theme: 'fusion',\n },\n categories: [{ category: creditChartLabels }],\n dataset: [{ data: creditChartData }],\n }\n\n const chartConfig = {\n ...defaultChartConfigProps,\n dataFormat: 'json',\n dataSource: dataSource,\n height: '84%',\n id: 'viz-credit-counts',\n type: 'scrollcolumn2d',\n }\n\n return (\n \n \n \n )\n}\n\nCreditsChart.propTypes = {\n chartData: PropTypes.arrayOf(PropTypes.number).isRequired,\n loading: PropTypes.bool.isRequired,\n}\n\nexport default memo(CreditsChart)\n","import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport { Element, Icon, Typography, Spin, Statistic, useFela, theme } from '@fortressiq/fiq-ds'\nimport { countsBox, countBox, countBoxLoadContainer, statTitleCSS, statValueCSS, statBackIconCSS } from './styles'\n\nimport { cardTitleStyle, colorThemes, creditsDataProp } from './constants'\n\nconst { Text } = Typography\n\nconst StatCard = ({ icon, iconBack, color, title, value, loading }) => {\n const { css } = useFela({ cardColor: colorThemes[color].card })\n\n return (\n
\n \n {loading && }\n {!loading && (\n \n \n }\n />\n \n {title}\n \n )}\n
\n )\n}\n\nconst CreditsCounts = ({ creditsData, loading }) => {\n const { css } = useFela()\n\n const aggregateCounts = () => {\n let credits = 0\n let users = 0\n const usersHash = {}\n creditsData.forEach(datem => {\n credits += datem.credit\n usersHash[datem.windows_username] = true\n })\n users = Object.keys(usersHash).length\n return [credits, users]\n }\n\n return (\n
\n \n \n
\n )\n}\n\nCreditsCounts.propTypes = {\n creditsData: creditsDataProp.isRequired,\n loading: PropTypes.bool.isRequired,\n}\n\nexport default CreditsCounts\n","import React, { useState, useEffect } from 'react'\nimport { func } from 'prop-types'\n\nimport {\n Button,\n DateTimePickerRange,\n dropShadowCSS,\n get,\n Group,\n helpers,\n Overlay,\n Select,\n theme,\n} from '@fortressiq/fiq-ds'\nimport { format, parseISO } from 'date-fns'\n\nimport api from 'lib/Api'\n\nimport { filtersProp } from './constants'\n\nconst dateFormat = 'yyyy-MM-dd'\n\nconst Filters = ({ filters, setFilters, setShowing }) => {\n const [dates, setDates] = useState([new Date(parseISO(filters.start_day)), new Date(parseISO(filters.end_day))])\n const [tempFilters, setTempFilters] = useState({ ...filters })\n const [userOptions, setUserOptions] = useState([])\n\n useEffect(() => {\n const fetchUserOptions = async () => {\n const { data } = await api.get('/observers/windows_usernames/filters')\n setUserOptions(data)\n }\n fetchUserOptions()\n }, [])\n\n const changeDateRange = ds => {\n setDates(ds)\n setTempFilters({\n ...tempFilters,\n start_day: format(ds[0], dateFormat),\n end_day: format(ds[1], dateFormat),\n })\n }\n\n const changeUsers = usersList => {\n setTempFilters({ ...tempFilters, windows_username: usersList })\n }\n\n const applyFilters = () => {\n setFilters(tempFilters)\n setShowing(false)\n }\n\n return (\n \n \n \n \n \n )\n}\n\nconst CreditsFilter = ({ filters, setFilters }) => {\n const [showing, setShowing] = useState(false)\n\n const placement = {\n overflow: { adjustX: true, adjustY: true },\n points: ['tl', 'bl'],\n targetOffset: [0, `-${get.numericValues('spacer').sm}`],\n }\n\n const trigger = {\n showing,\n setShowing,\n node: ,\n }\n\n const config = {\n content: {\n style: {\n padding: `0 ${theme['default-spacer-sm']} ${theme['default-spacer-sm']}`,\n ...dropShadowCSS,\n },\n },\n disableOutsideClick: true,\n }\n\n return (\n }\n draggable={true}\n id='filter-credits-results'\n placement={placement}\n portal={true}\n trigger={trigger}\n zIndex={500} //below left nav bar\n />\n )\n}\n\nCreditsFilter.propTypes = {\n filters: filtersProp.isRequired,\n setFilters: func.isRequired,\n}\n\nFilters.propTypes = {\n setShowing: func,\n}\n\nFilters.defaultProps = {\n setShowing: helpers.noop,\n}\n\nexport default CreditsFilter\n","import React from 'react'\nimport { Button } from '@fortressiq/fiq-ds'\n\nimport uiStore from 'lib/UiStore'\n\nimport { creditsDataProp } from './constants'\n\nconst DownloadCreditsButton = ({ creditsData }) => {\n function saveFile(data, filename) {\n if (!data) return\n const blob = data.constructor !== Blob ? new Blob([data], { type: 'application/octet-stream' }) : data\n if (navigator.msSaveBlob) {\n navigator.msSaveBlob(blob, filename)\n return\n }\n const lnk = document.createElement('a')\n const url = window.URL\n lnk.download = filename || 'untitled'\n lnk.href = url.createObjectURL(blob)\n lnk.dispatchEvent(new MouseEvent('click'))\n setTimeout(url.revokeObjectURL.bind(url, lnk.href))\n }\n\n const downloadCSV = async () => {\n const keys = ['observed_at_day', 'windows_username', 'credit', 'event_log_count']\n const columnHeaders = ['Date', 'Windows Username', 'Credits', 'Events']\n\n const replacer = (key, value) => (value === null ? '' : value)\n let csv = [...creditsData].map(row => {\n return keys\n .map(fieldName => {\n return JSON.stringify(row[fieldName], replacer)\n })\n .join(',')\n })\n csv.unshift(columnHeaders.join(','))\n csv = csv.join('\\r\\n')\n const blobData = new Blob([csv])\n const today = new Date()\n const dateTime = today.toISOString()\n\n saveFile(blobData, `${dateTime}_${uiStore.tenant.name}_credits-usage.csv`)\n }\n\n return (\n \n )\n}\n\nDownloadCreditsButton.propTypes = {\n creditsData: creditsDataProp.isRequired,\n}\n\nexport default DownloadCreditsButton\n","import React, { useState, useEffect } from 'react'\nimport { Group, Tag, useFela } from '@fortressiq/fiq-ds'\n\nimport api from 'lib/Api'\nimport CreditsCounts from './CreditsCounts'\nimport CreditsChart from './CreditsChart'\nimport CreditsFilter from './CreditsFilter'\nimport DownloadCreditsButton from './DownloadCreditsButton'\nimport UserBreakdownTable from './UserBreakdownTable'\n\nimport { controlsWrapper, dashWrapperCSS } from './styles'\n\nimport { filtersInit } from './constants'\n\nconst ManageCredits = () => {\n const [loading, setLoading] = useState(true)\n const [filters, setFilters] = useState(filtersInit())\n const [creditsData, setCreditsData] = useState([])\n const [userBreakdownData, setUserBreakdownData] = useState([])\n const [userBreakdownExpandHash, setUserBreakdownExpandHash] = useState({})\n const [chartData, setChartData] = useState([])\n const { css } = useFela()\n\n useEffect(() => {\n const fetchData = async () => {\n const windowsUsernames = filters.windows_username.map(user => user.label).join(',')\n const params = { ...filters, windows_username: windowsUsernames }\n const { data } = await api.get('/v1/credit_usages', params)\n setCreditsData(data || [])\n getUserBreakdownAndCounts(data)\n setLoading(false)\n }\n fetchData()\n }, [filters])\n\n const getUserBreakdownAndCounts = data => {\n const userTableData = []\n const userHash = {}\n const expandData = {}\n const myChartData = []\n\n let index = 0\n data.forEach(datem => {\n // get user aggregate (user table data)\n if (userTableData[userHash[datem.windows_username]]) {\n userTableData[userHash[datem.windows_username]].creditCount += datem.credit\n userTableData[userHash[datem.windows_username]].eventCount += datem.event_log_count\n } else {\n userTableData.push({\n user: datem.windows_username,\n creditCount: datem.credit,\n eventCount: datem.event_log_count,\n userExpand: [],\n })\n userHash[datem.windows_username] = index\n index += 1\n }\n\n // get user dates breakout data (sub tables)\n if (!expandData[datem.windows_username]) {\n expandData[datem.windows_username] = []\n }\n expandData[datem.windows_username].push(datem)\n\n //get date aggregate (bar chart data)\n const currentCount = myChartData[datem.observed_at_day] || 0\n myChartData[datem.observed_at_day] = currentCount + datem.credit\n })\n\n setUserBreakdownData(userTableData)\n setUserBreakdownExpandHash(expandData)\n setChartData(myChartData)\n }\n\n return (\n
\n \n \n \n \n \n \n {`${filters.start_day} - ${filters.end_day}`}\n {filters.windows_username.map(username => (\n {username.label}\n ))}\n \n \n \n \n \n
\n )\n}\n\nexport default ManageCredits\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, Card, Element, Table, useFela, theme } from '@fortressiq/fiq-ds'\n\nimport { tableCard, tableWrapperCSS } from './styles'\nimport { cardTitleStyle } from './constants'\n\nconst UserBreakdownTable = ({ loading, userBreakdownData, userBreakdownExpandHash }) => {\n const { css } = useFela()\n\n const renderDataBreakout = props => {\n return (\n \n \n \n \n \n )\n }\n\n return (\n
\n \n (\n \n {isExpanded ? '-' : '+'}\n \n ),\n },\n {\n Header: 'User',\n accessor: 'user',\n },\n {\n Header: 'Credits',\n accessor: 'creditCount',\n width: 90,\n },\n {\n Header: 'Event Count',\n accessor: 'eventCount',\n width: 90,\n },\n ]}\n data={userBreakdownData}\n disablePagination={true}\n disableResizing={true}\n renderRowSubComponent={renderDataBreakout}\n />\n \n
\n )\n}\n\nUserBreakdownTable.propTypes = {\n loading: PropTypes.bool.isRequired,\n userBreakdownData: PropTypes.arrayOf(\n PropTypes.shape({\n user: PropTypes.string,\n creditCount: PropTypes.number,\n eventCount: PropTypes.number,\n })\n ).isRequired,\n userBreakdownExpandHash: PropTypes.objectOf(\n PropTypes.arrayOf(\n PropTypes.shape({\n observed_at_day: PropTypes.string,\n credits: PropTypes.number,\n event_log_count: PropTypes.number,\n })\n )\n ).isRequired,\n}\n\nexport default UserBreakdownTable\n","import PropTypes from 'prop-types'\nimport { theme } from '@fortressiq/fiq-ds'\n\nexport const cardTitleStyle = {\n height: '36px',\n}\n\nexport const filtersInit = () => {\n const today = new Date()\n const defaultStartDate = new Date()\n defaultStartDate.setDate(today.getDate() - 14)\n\n return {\n start_day: defaultStartDate.toLocaleDateString('en-CA'),\n end_day: today.toLocaleDateString('en-CA'),\n windows_username: [],\n }\n}\n\nexport const creditsDataProp = PropTypes.arrayOf(\n PropTypes.shape({\n credit: PropTypes.number,\n event_log_count: PropTypes.number,\n observed_at_day: PropTypes.string,\n tenant_id: PropTypes.number,\n windows_username: PropTypes.string,\n })\n)\n\nexport const filtersProp = PropTypes.shape({\n start_day: PropTypes.string,\n end_day: PropTypes.string,\n /* eslint-disable-next-line react/forbid-prop-types */\n windows_username: PropTypes.arrayOf(PropTypes.object),\n})\n\nexport const colorThemes = {\n blue: {\n card: theme['blue-tints-13'],\n icon: theme['blue-tints-10'],\n },\n green: {\n card: theme['green-tints-13'],\n icon: theme['green-tints-10'],\n },\n}\n","import { theme } from '@fortressiq/fiq-ds'\n\nconst cardsCSS = {\n boxShadow: '1px 1px 3px rgba(0, 0, 0, 0.1)',\n}\n\nexport const dashWrapperCSS = () => ({\n background: theme['typography-code-color'],\n boxShadow: `0 0 0 ${theme['default-spacer-sm']} ${theme['typography-code-color']}`,\n display: 'grid',\n gridGap: theme['default-spacer-md'],\n gridTemplateColumns: '30% 1fr',\n gridTemplateRows: 'minmax(32px, auto) 110px 1fr',\n height: '100%',\n minHeight: '300px',\n overflow: 'auto',\n padding: theme['default-spacer-md'],\n width: '100%',\n})\n\nexport const controlsWrapper = () => ({\n alignItems: 'end',\n gridColumn: '1 / span 2',\n gridRow: '1 / 1',\n})\n\nexport const countsBox = () => ({\n gridColumn: '1 / 1',\n gridRow: '2 / 2',\n display: 'flex',\n justifyContent: 'space-between',\n})\n\nexport const countBox = ({ cardColor }) => ({\n backgroundColor: cardColor,\n borderRadius: theme['default-spacer-xs'],\n color: theme.white,\n overflow: 'hidden',\n padding: theme['default-spacer-md'],\n position: 'relative',\n width: '49%',\n ...cardsCSS,\n})\n\nexport const countBoxLoadContainer = () => ({\n alignItems: 'center',\n display: 'flex',\n height: '100%',\n justifyContent: 'center',\n width: '100%',\n})\n\nexport const chartWrapperCSS = () => ({\n gridColumn: '2 / 2',\n gridRow: '2 / span 2',\n overflow: 'hidden',\n ...cardsCSS,\n})\n\nexport const tableWrapperCSS = () => ({\n gridColumn: '1 / 1',\n gridRow: '3 / 3',\n minHeight: '0',\n})\n\nexport const tableCard = () => ({\n overflow: 'auto',\n maxHeight: '100%',\n width: '100%',\n\n ...cardsCSS,\n\n '& > div:first-child': {\n minHeight: 'initial !important',\n },\n})\n\nexport const statTitleCSS = () => ({\n fontWeight: '600',\n display: 'block',\n position: 'absolute',\n bottom: theme['default-spacer-sm'],\n left: theme['default-spacer-md'],\n zIndex: 1,\n})\n\nexport const statValueCSS = () => ({\n color: theme['gray-tint-0'],\n display: 'inline-block',\n fontSize: '40px',\n fontWeight: '100',\n paddingBottom: theme['default-spacer-md'],\n width: '85%',\n})\n\nexport const statBackIconCSS = () => ({\n position: 'absolute',\n right: '-28px',\n bottom: '-18px',\n margin: `0 ${theme['default-spacer-xs']}`,\n zIndex: '0',\n})\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Element, Label, Switch, Tooltip, theme } from '@fortressiq/fiq-ds'\n\nconst SwitchSection = ({ checked, disabled, tooltip, id, label, onSwitch, style }) => {\n const sharedSwitchProps = {\n checked,\n disabled,\n id,\n inline: true,\n onSwitch,\n }\n\n return (\n \n \n {tooltip ? (\n \n \n \n ) : (\n \n )}\n \n )\n}\n\nSwitchSection.propTypes = {\n checked: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]).isRequired,\n disabled: PropTypes.bool,\n tooltip: PropTypes.string,\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n label: PropTypes.string.isRequired,\n onSwitch: PropTypes.func.isRequired,\n style: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n}\n\nSwitchSection.defaultProps = {\n disabled: false,\n tooltip: undefined,\n id: '',\n style: undefined,\n}\n\nexport default SwitchSection\n","import React, { useEffect, useState } from 'react'\nimport { useHistory } from 'react-router-dom'\nimport { useNotification, useForm, Button, Col, Input, Row } from '@fortressiq/fiq-ds'\n\nimport api from 'lib/Api'\nimport FieldWrapper from 'components/form/FieldWrapper'\nimport ControlledSelect from 'components/form/ControlledSelect'\n\nimport { useUserState } from 'context/UserContext'\nimport { useHeaderDispatch } from '../../header/HeaderContext'\nimport { gutter, topMarginStyle } from '../common/constants'\nimport SwitchSection from './SwitchSection'\n\nimport { TENANT_TYPES } from './constants'\n\nconst FormRowDouble = ({ left, right }) => (\n \n {left}\n {right}\n \n)\n\nconst FormRowSingle = ({ children }) => (\n \n {children}\n \n)\n\nconst FormHeader = ({ register, formState }) => {\n return (\n \n \n \n )\n}\n\nconst pageTitle = 'Create a Tenant'\nconst defaultFormState = {\n tenant_name: '',\n tenant_type: TENANT_TYPES[0]['value'],\n username: '',\n email: '',\n password: '',\n first_name: '',\n last_name: '',\n is_lite_customer: false,\n}\n\nconst TenantCreator = () => {\n const { addNotification } = useNotification()\n const history = useHistory()\n const { roles } = useUserState()\n const { register, handleSubmit, control, formState, setValue } = useForm({\n mode: 'all',\n reValidateMode: 'onChange',\n defaultValues: defaultFormState,\n })\n\n const onSwitchFiqLite = ({ SWITCH_STATE }) => setValue('is_lite_customer', SWITCH_STATE)\n const headerDispatch = useHeaderDispatch()\n\n useEffect(() => {\n headerDispatch({\n type: 'set',\n heading: pageTitle,\n title: pageTitle,\n })\n\n return () => {\n headerDispatch({\n type: 'clear',\n })\n }\n }, [headerDispatch])\n\n const onSave = async values => {\n const { data } = await api.post('/tenants', values)\n if (data.ok) {\n addNotification({\n description: `${values.tenant_name} successfully created.`,\n message: 'Success',\n type: 'success',\n })\n }\n history.push('/admin/tenants')\n }\n\n return (\n
\n \n\n \n \n \n\n \n \n \n \n \n \n }\n right={\n \n \n \n }\n />\n \n \n \n }\n right={\n \n \n \n }\n />\n \n \n \n \n \n \n \n )\n}\n\nexport default TenantCreator\n","/* eslint-disable import/no-cycle */\nimport React, { Fragment, useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { useParams } from 'react-router-dom'\nimport { useGetSetState } from 'react-use'\n\nimport api from 'lib/Api'\nimport uiStore from 'lib/UiStore'\n\nimport LoadingContainer from 'components/LoadingContainer'\nimport IntegrationsDropdown from 'components/IntegrationsDropdown'\nimport NotFound from 'components/404/NotFound'\n\nimport { useHeaderDispatch } from '../../header/HeaderContext'\nimport CreateTenantButton from './CreateTenantButton'\nimport ManageAccount from './ManageAccount'\nimport ManageCredits from './ManageCredits/ManageCredits'\nimport TenantEditorNavigation from './TenantEditorNavigation'\nimport { AGGREGATION_STRATEGIES } from './constants'\n\nconst TenantEditor = ({ id = uiStore.tenant.id }) => {\n const [isLoading, setIsLoading] = useState(true)\n const headerDispatch = useHeaderDispatch()\n const [get, setState] = useGetSetState({\n aggregationFrequency: AGGREGATION_STRATEGIES[0].value,\n isActive: false,\n name: '',\n uuid: '',\n appUrl: '',\n smtpHost: '',\n smtpPort: '',\n smtpUsername: '',\n smtpPassword: '',\n emailFromAddress: '',\n privacySettings: uiStore.tenant.privacySettings,\n coeIntakeUrl: '',\n })\n const { id: tenantId = id, page } = useParams()\n\n useEffect(() => {\n async function fetchTenant() {\n const { data } = await api.get(`/tenants/${tenantId}`)\n const { name } = data\n\n setState(data)\n headerDispatch({\n type: 'set',\n heading: `${name} Settings`,\n title: `Tenants: ${name}`,\n toolbarActions: [\n ,\n ,\n ],\n })\n setIsLoading(false)\n }\n\n if (page === 'credits' || page === 'account' || page === 'edit' || page === undefined) {\n fetchTenant()\n return () => {\n headerDispatch({\n type: 'clear',\n })\n }\n }\n }, [tenantId, headerDispatch, page, setState])\n\n let content = null\n switch (page) {\n case 'credits':\n content = (\n \n \n \n )\n break\n case 'account':\n case 'edit':\n case undefined:\n content = (\n \n \n \n )\n break\n default:\n return \n }\n\n return (\n \n \n {content}\n \n )\n}\n\nTenantEditor.propTypes = {\n id: PropTypes.number,\n}\n\nexport default TenantEditor\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Link, useLocation } from 'react-router-dom'\nimport { useFela } from '@fortressiq/fiq-ds'\n\nimport { navigationContainer, activeStyles } from './styles'\n\nconst TenantEditorNavigation = ({ id, page }) => {\n const { css } = useFela()\n const { pathname } = useLocation()\n let baseUrl = '/admin/'\n if (pathname.startsWith('/admin/tenants')) {\n baseUrl = `/admin/tenants/${id}/`\n }\n\n const LINKS = {\n account: { to: `${baseUrl}account`, text: 'Manage Account' },\n }\n\n return (\n
\n {Object.entries(LINKS).map(([key, { to, text }]) => (\n \n {text}\n \n ))}\n
\n )\n}\n\nTenantEditorNavigation.propTypes = {\n id: PropTypes.number.isRequired,\n page: PropTypes.string.isRequired,\n}\n\nexport default TenantEditorNavigation\n","import React, { useEffect, useState } from 'react'\nimport { AdvancedCell, Button, Switch, DateCell } from '@fortressiq/fiq-ds'\n\nimport TrinityTable, { columnWidths } from 'components/TrinityTable'\n\nimport api from 'lib/Api'\n\nimport { useHeaderDispatch } from '../../header/HeaderContext'\nimport CreateTenantButton from './CreateTenantButton'\n\nconst pageTitle = 'All Tenants'\n\nconst sortKeyMap = {\n createdAt: 'created_at',\n appUrl: 'app_url',\n isActive: 'is_active',\n tenantType: 'tenant_type',\n}\n\nconst TenantIsActive = ({ isActive: isActiveDefault, tenantId, updateCellData }) => {\n const [isActive, setIsActive] = useState(isActiveDefault)\n const handleChange = ({ SWITCH_STATE: val }) => {\n api.put(`/tenants/${tenantId}`, { is_active: val })\n updateCellData(val)\n setIsActive(val)\n }\n\n useEffect(() => {\n setIsActive(isActiveDefault)\n }, [isActiveDefault])\n\n // TODO: Will need updating with fiq-ds@4.x.x\n return \n}\n\nconst TenantList = () => {\n const headerDispatch = useHeaderDispatch()\n\n useEffect(() => {\n headerDispatch({\n type: 'set',\n heading: pageTitle,\n title: pageTitle,\n })\n return () => {\n headerDispatch({\n type: 'clear',\n })\n }\n }, [headerDispatch])\n\n const columns = [\n {\n Header: 'ID',\n accessor: 'id',\n width: columnWidths.id,\n },\n {\n Header: 'Name',\n accessor: 'name',\n Cell: ({ value }) => {value},\n },\n {\n Header: 'Application URL',\n accessor: 'appUrl',\n Cell: ({ value }) => {value},\n },\n {\n Header: 'UUID',\n accessor: 'uuid',\n Cell: ({ value }) => {value},\n },\n {\n Header: 'Tenant Type',\n accessor: 'tenantType',\n Cell: ({ value }) => {value},\n },\n {\n Header: 'Created At',\n accessor: 'createdAt',\n width: columnWidths.date,\n Cell: ({ value }) => ,\n },\n {\n Header: 'Is Active',\n accessor: 'isActive',\n align: 'center',\n width: 40,\n minWidth: 40,\n Cell: ({\n value: isActive,\n row: {\n original: { id },\n },\n updateCellData,\n }) => ,\n },\n {\n Header: 'Actions',\n accessor: 'actions',\n width: 80,\n disableSortBy: true,\n disableResizing: true,\n align: 'center',\n Cell: ({\n row: {\n original: { id },\n },\n }) => (\n \n ),\n },\n ]\n return (\n ]}\n url='/tenants'\n dataKey='tenants'\n tableId='tenants-id'\n columns={columns}\n />\n )\n}\n\nexport default TenantList\n","import React from 'react'\nimport { UserProvider } from 'context/UserContext'\n\nimport CreateTenantButton from '../CreateTenantButton'\n\ndescribe('CreateTenantButton component', () => {\n beforeEach(() => {})\n it('should render without throwing an error', () => {\n const component = global.mountWithTheme(\n \n \n \n )\n expect(component).toMatchSnapshot()\n expect(() => component).not.toThrow()\n })\n\n it('should NOT render', () => {\n const component = global.mountWithTheme(\n \n \n \n )\n expect(component).toMatchSnapshot()\n expect(() => component).not.toThrow()\n })\n})\n","import React from 'react'\nimport { UserProvider } from 'context/UserContext'\n\nimport ManageAccount from '../ManageAccount'\n\nconst defaultTenant = {\n aggregationFrequency: '',\n appUrl: '',\n coeIntakeUrl: '',\n coeUserName: '',\n createdAt: '',\n emailFromAddress: '',\n id: 123,\n isActive: true,\n isLite: false,\n name: '',\n smtpHost: '',\n smtpPassword: '',\n smtpPort: '',\n smtpUsername: '',\n updatedAt: '',\n uuid: '',\n}\n\nconst manageAccountProps = {\n defaultTenant: defaultTenant,\n tenantId: '1',\n isLoading: false,\n setIsLoading: () => {},\n setDefaultTenant: () => {},\n allowAllSettings: true,\n}\n\njest.mock('@fortressiq/fiq-ds', () => {\n return {\n useNotification: () => ({\n addNotification: () => {},\n }),\n Typography: { Paragraph: ({ props }) =>
},\n theme: { 'default-spacer-md': '16px' },\n useModal: () => ({\n addModal: () => undefined,\n removeModal: () => undefined,\n }),\n Element: props =>
,\n }\n})\n\ndescribe('ManageAccount component', () => {\n beforeEach(() => {})\n it('should render without throwing an error', () => {\n const component = global.mountWithTheme(\n \n \n \n )\n expect(component).toMatchSnapshot()\n expect(() => component).not.toThrow()\n })\n})\n","import React from 'react'\nimport { shallow } from 'enzyme'\nimport { UserProvider } from 'context/UserContext'\nimport { HeaderProvider } from '../../../header/HeaderContext'\n\nimport TenantCreator from '../TenantCreator'\n\njest.mock('@fortressiq/fiq-ds', () => {\n const mockComponent = props =>
\n\n return {\n useNotification: () => ({\n addNotification: () => {},\n }),\n Typography: { Text: () => {} },\n useForm: () => ({\n register: () => {},\n handleSubmit: () => {},\n control: {},\n formState: {},\n setValue: () => {},\n }),\n Button: mockComponent,\n Col: mockComponent,\n Element: mockComponent,\n Input: mockComponent,\n Row: mockComponent,\n }\n})\n\ndescribe('TenantCreator component', () => {\n beforeEach(() => {})\n it('should render without throwing an error', () => {\n const component = shallow(\n \n \n \n \n \n )\n expect(component).toMatchSnapshot()\n expect(() => component).not.toThrow()\n })\n})\n","/* eslint-disable max-len */\nexport const AGGREGATION_STRATEGIES = [\n { value: '00:00:00', label: 'Continuous' },\n { value: '08:00:00', label: 'Every 8 Hours' },\n { value: '24:00:00', label: 'Daily' },\n]\n\nexport const TENANT_TYPES = [\n { label: 'Customer', value: 'Customer' }, //default value\n { label: 'Partner', value: 'Partner' },\n { label: 'POC', value: 'POC' },\n { label: 'Internal', value: 'Internal' },\n]\n\nexport const validCoeUrl =\n /^https:\\/\\/util(.eu.|.ap.|.)(shibumi).(com)\\/customers\\/aa\\/coe-manager-intake\\/index(-v\\d+(.\\d+)*|)\\.php\\?k=[A-Za-z]+&ent_id=[^_\\W]{8}-[^_\\W]{4}-[^_\\W]{4}-[^_\\W]{4}-[^_\\W]{12}&program_id=\\d+&uguid=[^_\\W]{8}-[^_\\W]{4}-[^_\\W]{4}-[^_\\W]{4}-[^_\\W]{12}&appName=App+_\\d+__app(&language=([a-zA-Z]){0,2})?$/ //NOSONAR\n","import { theme } from '@fortressiq/fiq-ds'\n\nconst sm = theme['default-spacer-sm']\n\nexport const gridCSS = () => ({\n height: '100%',\n overflow: 'auto',\n padding: sm,\n\n '@media all and (min-width: 1200px)': {\n display: 'flex',\n },\n})\n\nconst md = theme['default-spacer-md']\nexport const navigationContainer = () => ({\n marginLeft: md,\n position: 'absolute',\n top: '82px',\n\n '& > a': {\n textDecoration: 'none',\n color: theme['gray-tints-12'],\n fontWeight: 600,\n marginRight: md,\n paddingBottom: sm,\n },\n})\n\nexport const activeStyles = () => ({\n color: theme['blue-tints-10'],\n borderBottom: `2px solid ${theme['blue-tints-10']}`,\n})\n\nexport const columnCSS = () => ({\n padding: md,\n\n '@media all and (min-width: 1200px)': {\n width: '50%',\n },\n})\n\nexport const containerCss = { display: 'flex', flexDirection: 'column', overflow: 'hidden', height: '100%' }\n\nexport const contentCss = {\n flex: 1,\n overflow: 'auto',\n '@media all and (min-width: 1200px)': {\n display: 'flex',\n padding: `${md} 0`,\n },\n}\n\nexport const coeErrorCss = {\n marginLeft: 0,\n position: 'aboslute',\n paddingRight: '60px',\n}\n\nexport const footerCss = {\n alignSelf: 'flex-end',\n display: 'flex',\n marginRight: md,\n marginBottom: md,\n}\n\nexport const observerConfigContainer = () => ({\n padding: `${sm} ${md} ${md}`,\n marginBottom: theme['default-spacer-lg'],\n})\n\n// To be used when we add color delineation into manage account, presently unused:\nexport const sectionContainer = () => ({\n background: theme['field-bg-light'],\n border: `1px solid ${theme['field-bg-dark']}`,\n borderRadius: theme['border-radius-base'],\n padding: md,\n marginBottom: theme['default-spacer-lg'],\n})\n","import React from 'react'\nimport { AdvancedCell, DateCell } from '@fortressiq/fiq-ds'\n\nimport Actions from './subComponents/Actions'\n\nexport const sortKeyMap = {\n id: 'members.id',\n username: 'username',\n firstName: 'members.first_name',\n lastName: 'members.last_name',\n email: 'email',\n roleNames: 'roles.name',\n lastSignInAt: 'last_sign_in_at',\n signInCount: 'sign_in_count',\n confirmedAt: 'confirmed_at',\n createdAt: 'created_at',\n active: 'active',\n}\n\nexport const modalConfig = {\n footer: false,\n style: { height: 'auto', maxHeight: '650px', width: '600px' },\n config: { interactWithKeyboard: false, destroyOnClose: true },\n maskClosable: false,\n}\n\nexport const userModalId = 'user-form-modal'\nexport const kibanaLoginModalId = 'kibana-password-form-modal'\n\nexport const sharedColProps = {\n date: { Cell: ({ value }) => },\n text: { Cell: ({ value }) => {value} },\n}\n\nexport const actionsCellContent =\n (handleDeleteUser, addUserModal, addKibanaPasswordModal, resetPassword, toggleActiveUser) =>\n ({ row: { original } }) => (\n \n )\n","/* eslint-disable react/no-unstable-nested-components */\nimport React, { Fragment, useEffect, useState } from 'react'\nimport { Button, Heading, useModal, useNotification } from '@fortressiq/fiq-ds'\nimport { useMount } from 'react-use'\n\nimport api from 'lib/Api'\nimport uiStore from 'lib/UiStore'\nimport ROLES from 'constants/roles'\n\nimport TrinityTable from 'components/TrinityTable'\nimport { useHeaderDispatch } from '../../header/HeaderContext'\nimport UserEditor from './subComponents/UserEditor'\n\nimport KibanaPassword from './subComponents/KibanaPassword'\n\nimport {\n actionsCellContent,\n kibanaLoginModalId,\n modalConfig,\n sharedColProps,\n sortKeyMap,\n userModalId,\n} from './constants'\n\nconst Users = () => {\n const tenantId = uiStore.tenant.id\n const headerDispatch = useHeaderDispatch()\n const { addNotification } = useNotification()\n const [reFetch, setRefetch] = useState(0)\n const [isPegEnabled, setIsPegEnabled] = useState(false)\n const { addModal, removeModal } = useModal()\n\n useMount(() => {\n async function fetchTenant() {\n const { data } = await api.get(`/tenants/${tenantId}`)\n\n setIsPegEnabled(!!data.privacySettings.settings.minio.active)\n }\n fetchTenant()\n })\n\n const handleReFetch = () => setRefetch(reFetch + 1)\n\n const handleDeleteUser = async userId => {\n await api.delete(`/users/${userId}`)\n handleReFetch()\n }\n\n const resetPassword = async userId => {\n await api.put(`/users/${userId}/reset_password`)\n\n addNotification({\n description: 'User will have to change their password on next login.',\n message: 'Note',\n type: 'info',\n })\n }\n\n const toggleActiveUser = async ({ userId, active }) => {\n await api.put(`/users/${userId}`, { active })\n handleReFetch()\n }\n\n const addUserModal = ({ currentUser }) => {\n const displayName = currentUser\n ? `${currentUser.firstName} ${currentUser.lastName}`.trim() || currentUser.email\n : undefined\n addModal({\n children: (\n removeModal(userModalId)}\n currentUser={currentUser}\n isPegEnabled={isPegEnabled}\n />\n ),\n header: currentUser ? `Editing ${displayName}` : 'Create New User',\n id: userModalId,\n ...modalConfig,\n })\n }\n\n const addKibanaPasswordModal = ({ currentUserId }) => {\n addModal({\n children: removeModal(kibanaLoginModalId)} />,\n header: 'Set Event Reporting Password',\n id: kibanaLoginModalId,\n ...modalConfig,\n })\n }\n\n useEffect(() => {\n headerDispatch({\n type: 'set',\n title: 'Users',\n heading: (\n \n \n Manage Users\n \n \n Invite teammates and manage permissions\n \n \n ),\n })\n return () => {\n headerDispatch({\n type: 'clear',\n })\n }\n }, [headerDispatch])\n\n const columns = [\n {\n Header: 'Username',\n accessor: 'username',\n ...sharedColProps.text,\n },\n {\n Header: 'First Name',\n accessor: 'firstName',\n ...sharedColProps.text,\n },\n {\n Header: 'Last Name',\n accessor: 'lastName',\n ...sharedColProps.text,\n },\n {\n Header: 'Email',\n accessor: 'email',\n ...sharedColProps.text,\n },\n {\n Header: 'Roles',\n accessor: 'roleNames',\n Cell: ({ value }) => (ROLES[value]?.name ? ROLES[value].name : value),\n },\n {\n Header: 'Last Sign-In',\n accessor: 'lastSignInAt',\n ...sharedColProps.date,\n },\n {\n Header: 'Sign-Ins',\n accessor: 'signInCount',\n align: 'right',\n width: 90,\n },\n {\n Header: 'Confirmed At',\n accessor: 'confirmedAt',\n ...sharedColProps.date,\n },\n {\n Header: 'Created At',\n accessor: 'createdAt',\n ...sharedColProps.date,\n },\n {\n Header: 'Active',\n accessor: 'active',\n width: 80,\n Cell: ({ value }) => value.toString(),\n },\n {\n Header: 'Actions',\n accessor: 'actions',\n align: 'center',\n disableSortBy: true,\n width: 64,\n Cell: actionsCellContent(handleDeleteUser, addUserModal, addKibanaPasswordModal, resetPassword, toggleActiveUser),\n },\n ]\n\n return (\n \n Create User\n ,\n ]}\n url='/users'\n />\n )\n}\n\nexport default Users\n","import React from 'react'\nimport { Menu, MenuItem, Popconfirm } from '@fortressiq/fiq-ds'\nimport { func, shape } from 'prop-types'\n\nimport { useUserState } from 'context/UserContext'\n\nimport ActionMenu from 'components/TrinityTable/ActionMenu/ActionMenu'\n\nconst sharedPopconfirmProps = {\n closeOnOutsideClick: true,\n dark: true,\n okText: 'Yes',\n placement: 'left-center',\n}\n\nconst Actions = ({ user, addUserModal, addKibanaPasswordModal, resetPassword, toggleActiveUser }) => {\n const currentUser = useUserState()\n const { id, active, provider } = user\n\n const menu = (\n \n addUserModal({ currentUser: user })}>\n Edit\n \n {currentUser.id !== +id && (\n event.stopPropagation()}>\n toggleActiveUser({ userId: id, active: !active })}>\n {active ? 'Deactivate' : 'Activate'} User\n \n \n )}\n {currentUser.id === +id && (\n addKibanaPasswordModal({ currentUserId: user.id })}>\n Set Event Reporting Password\n \n )}\n {provider !== 'saml' && (\n event.stopPropagation()}>\n resetPassword(id)}>\n Force Password Reset\n \n \n )}\n \n )\n\n return \n}\n\nActions.propTypes = {\n addUserModal: func.isRequired,\n resetPassword: func.isRequired,\n toggleActiveUser: func.isRequired,\n user: shape({}).isRequired,\n}\n\nexport default Actions\n","import React, { useState } from 'react'\nimport { Button, Input, Group, useForm, theme, Typography, Element } from '@fortressiq/fiq-ds'\nimport { func, string, number, oneOfType } from 'prop-types'\n\nimport api from 'lib/Api'\n\nimport FieldWrapper from 'components/form/FieldWrapper'\n\nconst { Paragraph } = Typography\n\nconst footerStyling = {\n margin: `0 -${theme['default-spacer-sm']}`,\n borderTop: `1px solid ${theme['dividing-line']}`,\n padding: `${theme['default-spacer-sm']} ${theme['default-spacer-sm']} 0`,\n}\n\nconst KibanaPassword = ({ userId, removeModal }) => {\n const [isSaving, setIsSaving] = useState(false)\n const { register, watch, handleSubmit, formState } = useForm()\n\n const watchPassword = watch('password')\n\n const validatePassword = passwordString => {\n if (passwordString.length < 9) {\n return 'Password needs to be at least 10 characters'\n }\n if (!/(?=.*[a-z])/.test(passwordString)) {\n return 'Password needs to contain at least one lower case letter'\n }\n if (!/(?=.*[A-Z])/.test(passwordString)) {\n return 'Password needs to contain at least one upper case letter'\n }\n if (!/\\d/.test(passwordString)) {\n return 'Password needs to contain at least one number'\n }\n if (!/(?=.*[!@#$%^&*()_+|~\\-=`{}[\\]:\";'<>?,.])/.test(passwordString)) {\n return 'Password needs to contain at least one special character'\n }\n return true\n }\n\n const validateConfirmPassword = passwordString => (passwordString !== watchPassword ? 'Passwords do not match' : true)\n\n const onSubmitHandler = async formValues => {\n setIsSaving(true)\n await api.post('/users/reset_kibana_user_password', { password: formValues.password, user_id: `${userId}` })\n setIsSaving(false)\n removeModal()\n }\n\n return (\n
\n Make sure your password:\n
    \n
  • Is at least 10 characters
  • \n
  • Contains a combination of upper and lower case characters
  • \n
  • Contains digits and special characters
  • \n
\n \n \n \n \n \n \n \n \n {\n e.preventDefault()\n removeModal()\n }}\n >\n Cancel\n \n \n \n \n
\n )\n}\n\nKibanaPassword.propTypes = {\n removeModal: func.isRequired,\n userId: oneOfType([string, number]).isRequired,\n}\n\nexport default KibanaPassword\n","import React, { useState } from 'react'\nimport { Button, Input, get, Group, useForm, Upload, theme, Popover, Element, Icon, Row } from '@fortressiq/fiq-ds'\nimport { bool, func, shape } from 'prop-types'\n\nimport api from 'lib/Api'\nimport { liteTenantActions } from 'components/can/Can'\n\nimport ControlledSelect from 'components/form/ControlledSelect'\nimport ControlledCheckbox from 'components/form/ControlledCheckbox'\n\nimport FieldWrapper from 'components/form/FieldWrapper'\n\nimport uiStore from 'lib/UiStore'\nimport { emailRegex } from 'lib/validationRegex'\n\nimport ROLES from 'constants/roles'\n\nconst rolesOptions = Object.keys(ROLES).map(roleObj => ({ label: ROLES[roleObj].name, value: roleObj }))\n\nconst filteredRolesOptions = rolesOptions.filter(roleObj => {\n if (uiStore.tenant.isLite) return liteTenantActions('createTenants').find(el => el === roleObj.value)\n return roleObj.value !== 'superuser'\n})\n\nconst getRoleObject = role => rolesOptions.find(option => option.value === role)\n\nconst rowProps = {\n gutter: get.numericValues('spacer', 'md'),\n noOfCols: 2,\n type: 'grid',\n align: 'flex-start',\n}\n\nconst footerStyling = {\n margin: `0 -${theme['default-spacer-sm']}`,\n borderTop: `1px solid ${theme['dividing-line']}`,\n padding: `${theme['default-spacer-sm']} ${theme['default-spacer-sm']} 0`,\n}\n\nconst UserEditor = ({ currentUser, handleReFetch, isPegEnabled, removeModal }) => {\n const [isSaving, setIsSaving] = useState(false)\n const isEditing = !!currentUser\n\n const { register, watch, setError, setValue, handleSubmit, control, formState } = useForm({\n defaultValues: {\n username: currentUser?.username || '',\n firstName: currentUser?.firstName || '',\n lastName: currentUser?.lastName || '',\n email: currentUser?.email || '',\n role: getRoleObject(currentUser?.role || 'user'),\n unredacted: currentUser?.unredacted || false,\n },\n })\n\n const { name: avatarName } = register('avatar')\n\n const role = watch('role')\n\n const onChangeAvatar = files => {\n setValue('avatar', files[0])\n }\n\n const onSubmitHandler = async formValues => {\n setIsSaving(true)\n const params = {\n 'user[username]': formValues.username || currentUser.username,\n 'user[member][first_name]': formValues.firstName,\n 'user[email]': formValues.email,\n 'user[member][id]': currentUser?.memberId || '',\n 'user[member][last_name]': formValues.lastName,\n unredacted: formValues.unredacted,\n role: role.value,\n }\n\n if (formValues.avatar) {\n params['user[member][avatar]'] = formValues.avatar\n }\n\n const url = currentUser ? `/users/${currentUser.id}` : '/users'\n const method = currentUser ? 'PUT' : 'POST'\n\n try {\n await api.upload(url, params, method)\n setIsSaving(false)\n removeModal()\n handleReFetch()\n } catch (err) {\n setIsSaving(false)\n if (err?.response?.data?.errors?.includes('Username has already been taken')) {\n setError('username', {\n type: 'manual',\n message: 'Username has already been taken.',\n })\n }\n }\n }\n\n return (\n
\n \n \n {\n setValue('username', value)\n }}\n onChange={({ target: { value } }) => {\n if (value.match(emailRegex)) {\n setValue('email', value)\n } else {\n setValue('email', '')\n }\n }}\n disabled={isEditing}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n {ROLES[role.value]?.description}}\n placement='top-center'\n title={ROLES[role.value].name}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n {isPegEnabled && (\n \n \n Show unredacted screenshot option\n \n \n )}\n \n \n \n {\n e.preventDefault()\n removeModal()\n }}\n >\n Cancel\n \n \n \n \n
\n )\n}\n\nUserEditor.propTypes = {\n currentUser: shape({}),\n handleReFetch: func.isRequired,\n isPegEnabled: bool.isRequired,\n removeModal: func.isRequired,\n}\n\nexport default UserEditor\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Menu, MenuItem, Popconfirm } from '@fortressiq/fiq-ds'\nimport { Link } from 'react-router-dom'\n\nimport api from 'lib/Api'\nimport uiStore from 'lib/UiStore'\n\nimport handleIntegration from 'app/admin/integrations/helpers/handleIntegration'\nimport ActionMenu from 'components/TrinityTable/ActionMenu/ActionMenu'\n\nconst isLite = uiStore?.tenant?.isLite\n\nconst ActionsMenu = ({\n isLoadingIntegrations,\n integrations,\n applicationId,\n reportId,\n processBoundaryStatus,\n handleReFetch,\n}) => {\n const processBoundaryStart = async () => {\n await api.post('/process-boundary/start', { application_id: applicationId })\n handleReFetch()\n }\n\n const menu = (\n \n {!isLoadingIntegrations &&\n integrations.length !== 0 &&\n integrations.map(integration => (\n handleIntegration({ integrationId: integration.id, objectId: applicationId })}\n >\n {integration.title}\n \n ))}\n {!isLite &&\n (reportId ? (\n e.stopPropagation()}>\n \n Re-Generate start/end suggestions\n \n \n ) : (\n processBoundaryStart()}>Generate start/end suggestions\n ))}\n {!isLite && reportId && processBoundaryStatus === 'done' && (\n \n View Process Boundary Detection\n \n )}\n \n )\n\n let menuEmpty = false\n if (menu.props.children.filter(child => child).length === 0) menuEmpty = true\n\n const disabled = integrations.length === 0 || menuEmpty\n\n return \n}\n\nActionsMenu.defaultProps = {\n isLoadingIntegrations: undefined,\n integrations: undefined,\n applicationId: undefined,\n reportId: undefined,\n processBoundaryStatus: undefined,\n}\n\nActionsMenu.propTypes = {\n isLoadingIntegrations: PropTypes.bool,\n integrations: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number,\n title: PropTypes.string,\n })\n ),\n applicationId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n reportId: PropTypes.number,\n processBoundaryStatus: PropTypes.string,\n handleReFetch: PropTypes.func.isRequired,\n}\n\nexport default ActionsMenu\n","import React, { Fragment, useEffect, useRef, useState } from 'react'\nimport { useHistory } from 'react-router-dom'\nimport {\n ApplicationIcon,\n Button,\n Checkbox,\n Element,\n Empty,\n Group,\n Heading,\n Icon,\n Tooltip,\n Typography,\n useFela,\n useModal,\n useNotification,\n} from '@fortressiq/fiq-ds'\n\nimport ScreenList from 'app/screens/list/ScreenList'\nimport { ellipsisCSS } from 'styles/utils'\n\nimport api from 'lib/Api'\nimport { useLocalStorage } from 'lib/hooks'\n\nimport AsyncSelect from 'components/form/AsyncSelect'\nimport Provisional from './provisional'\nimport History from './strategy/History'\nimport Promoted from './strategy/Promoted'\n\nimport { useHeaderDispatch } from '../../header/HeaderContext'\n\nimport {\n applicationTitleBoxCSS,\n applicationTitleDescriptionCSS,\n applicationNameTitleCSS,\n screenListContainerCSS,\n sidebarItemCSS,\n appHeadingCSS,\n} from './styles'\n\nimport { CHAIN_STRATEGY } from './utilities'\n\nconst { Paragraph, Title } = Typography\n\nconst title = 'Application Strategy'\n\nexport default ({\n match: {\n params: { appId, cycleId },\n },\n}) => {\n const { css, theme } = useFela()\n\n const headerDispatch = useHeaderDispatch()\n const history = useHistory()\n\n const [isLoading, setIsLoading] = useState(true)\n const [application, setApplication] = useState(null)\n const [jobId, setJobId] = useState(null)\n const [lastPromoted, setLastPromoted] = useState(null)\n const [signatureServiceJobsList, setSignatureServiceJobsList] = useState(null)\n const [modalIsOpen, setModalOpen] = useState(false)\n const [provisionalStrategyParams, setProvisionalStrategyParams] = useState()\n const { addNotification } = useNotification()\n const { addModal, removeModal } = useModal()\n const [applicationId, setApplicationId] = useState(appId)\n\n const [persistedCycleId, setPersistedCycleId] = useLocalStorage(`persisted-cycle-${appId}`, cycleId, true)\n\n let { current: mergeSignatures } = useRef()\n\n useEffect(() => {\n const fetchData = async () => {\n setIsLoading(true)\n const { data: applicationData } = await api.get(`/applications/${appId}`, { applicationUuid: appId })\n const id = applicationData?.application?.applicationId || appId\n setApplicationId(applicationData.application.id)\n if (cycleId) {\n setPersistedCycleId(cycleId)\n const { data } = await api.get('/signature_service_jobs', {\n applicationId: id,\n cycle_id: cycleId,\n per_page: 100,\n })\n\n const current = data?.signatureServiceJobs.find(\n job => job?.application?.id?.toString() === appId && job?.cycleId?.toString() === cycleId\n )\n setLastPromoted(\n data?.signatureServiceJobs.find(\n job =>\n job.jobType === 'promotion' &&\n job?.application?.id?.toString() === appId &&\n job?.cycleId?.toString() === cycleId\n )\n )\n setSignatureServiceJobsList(data?.signatureServiceJobs)\n\n setJobId(current?.id)\n\n mergeSignatures = current?.params?.merge_signatures\n\n const { strategySlug = undefined, params = {} } = current || {}\n formatAndSetParams(strategySlug, typeof params === 'string' ? JSON.parse(params) : params)\n }\n setApplication(applicationData?.application)\n setIsLoading(false)\n }\n\n if (!cycleId && persistedCycleId) {\n history.replace(`/applications/${applicationId}/${persistedCycleId}`)\n } else {\n fetchData()\n }\n\n headerDispatch({\n type: 'set',\n title: title,\n heading: title,\n })\n\n return () => {\n headerDispatch({\n type: 'clear',\n })\n }\n }, [appId, headerDispatch, cycleId])\n\n const formatAndSetParams = (strategy, params) => {\n let customParams = { params: { 0: {} } }\n if (strategy !== CHAIN_STRATEGY) {\n const { start_date: startDate, end_date: endDate, limit, ...rest } = params\n customParams = {\n start_date: startDate,\n end_date: endDate,\n limit: limit,\n params: {\n 0: {\n apply_to: 'all',\n strategy: {\n name: strategy,\n params: { ...rest },\n },\n },\n },\n }\n } else if (params && Object.keys(params)?.length > 0) {\n customParams = params\n }\n setProvisionalStrategyParams(customParams)\n }\n\n const onMergeSignatureChange = e => {\n mergeSignatures = e\n }\n\n const modalID = 'promote-signatures-modal'\n const promoteSignatures = async () => {\n setModalOpen(false)\n removeModal(modalID)\n addNotification({\n description: 'Signature promotion is currently processing.',\n message: 'In Progress',\n type: 'info',\n })\n await api.post(`/signature_service_jobs/${jobId}/application/${applicationId}/cycle/${cycleId}/promotion`, {\n merge_signatures: mergeSignatures,\n })\n\n history.push('/signature-service-jobs')\n }\n const handlePromoteClick = () => {\n setModalOpen(true)\n\n return addModal({\n afterClose: () => setModalOpen(false),\n bodyStyle: { padding: '0' },\n children: (\n \n \n Are you sure you want to update screen signatures for all events from \n {application?.displayName}?\n \n \n \n Merge Signatures\n \n \n \n \n ),\n footer: false,\n header: `Promote ${application?.displayName}?`,\n id: modalID,\n style: { height: 'auto', width: '400px' },\n })\n }\n\n return (\n application && (\n \n \n
\n \n
\n \n \n {application?.displayName}\n \n \n {!!application?.winProcessName && (\n \n Windows Process Name: {application?.winProcessName}\n \n )}\n
\n
\n \n \n Cycle\n \n history.push(`/applications/${appId}/${value}`)}\n name='cycle'\n style={{ width: '200px' }}\n isMulti={false}\n value={cycleId}\n />\n \n {!cycleId && (\n }\n description='No cycle selected.'\n />\n )}\n {cycleId && !isLoading && (\n \n \n \n \n \n \n \n )}\n
\n\n \n \n \n
\n )\n )\n}\n","import React, { forwardRef, Fragment, useEffect, useState } from 'react'\nimport {\n Button,\n ButtonGroup,\n Dropdown,\n Element,\n get,\n Group,\n mergeRefs,\n Popconfirm,\n Tag,\n theme,\n Tooltip,\n Typography,\n} from '@fortressiq/fiq-ds'\nimport { useMeasure, useMount } from 'react-use'\n\nimport { strategyOptions, paramsDetailsMap } from 'lib/SignatureStrategies'\n\nimport TextInput from './fields/TextInput'\nimport Form from './Form'\nimport {\n buttonGroup,\n overlayTriggerNodeContainer,\n paramsColStyles,\n paramsContainer,\n paramsGroupStyle,\n pCSS,\n strategyContainerCSS,\n strategyFormContainer,\n strategyTitle,\n stratVisibleBox,\n tagCSS,\n} from './styles'\nimport { strategyParamsMap, isJsonValue } from '../utilities'\n\nconst { Paragraph, Title } = Typography\nconst { md, xs } = get.numericValues('spacer')\n\nconst Chain = forwardRef(\n (\n {\n applicationId,\n defaultApplyTo,\n defaultValues,\n errors,\n getValues,\n id,\n indexBeingEdited,\n register,\n removeAt,\n setIsEditingChain,\n setValue,\n trigger,\n unregister,\n watch,\n },\n ref\n ) => {\n const { params: defaultProvisionalStrategyParams, name: defaultProvisionalStrategy } = defaultValues\n\n const [provisionalStrategyParams, setProvisionalStrategyParams] = useState(false)\n const [provisionalStrategy, setProvisionalStrategy] = useState(defaultProvisionalStrategy)\n const [select, setSelect] = useState()\n const [highlight, setHighlight] = useState(false)\n const [findingWords, setFindingWords] = useState(false)\n\n const [options, setOptions] = useState([])\n\n const [measureRef, { width }] = useMeasure()\n const chainRef = mergeRefs(ref, measureRef)\n\n const watchSelectedStrategy = watch(`provisionalStrategy.${id}.params.name`, provisionalStrategy)\n const watchProvisionalStrategyFormParams = watch(`provisionalStrategy.${id}.params`)\n\n const applyToName = `provisionalStrategy.${id}.applyTo`\n\n const currentApplyTo = getValues(applyToName)\n\n useMount(() => {\n if (indexBeingEdited === id) {\n setIsEditingChain({ editing: id })\n }\n })\n\n useEffect(() => {\n setSelect(register(`provisionalStrategy.${id}.params.name`, { required: 'Provisional Strategy is required' }))\n return () => {\n unregister(`provisionalStrategy.${id}.params.name`)\n }\n }, [])\n\n useEffect(() => {\n if (provisionalStrategy) {\n setValue(`provisionalStrategy.${id}.params.name`, provisionalStrategy)\n trigger()\n }\n }, [provisionalStrategy])\n\n useEffect(() => {\n if (defaultProvisionalStrategyParams) {\n setProvisionalStrategyParams(defaultProvisionalStrategyParams)\n }\n }, [defaultProvisionalStrategyParams])\n\n useEffect(() => {\n const fieldKeys = options && options.length ? options.map(option => option.value) : []\n if (typeof provisionalStrategyParams !== 'string') {\n const customParams = Object.entries(provisionalStrategyParams).reduce((acc, [key, val]) => {\n if (!fieldKeys.includes(key)) {\n acc[key] = val\n } else {\n setValue(`provisionalStrategy.${id}.params.${key}`, isJsonValue(key) ? JSON.stringify(val) : val)\n }\n return acc\n }, {})\n setValue(`provisionalStrategy.${id}.params.customParams`, customParams)\n setValue(applyToName, defaultApplyTo)\n }\n }, [provisionalStrategyParams, options, defaultApplyTo, applyToName])\n\n useEffect(() => {\n setOptions(strategyParamsMap[watchSelectedStrategy])\n }, [watchSelectedStrategy])\n\n const handleChange = (name, value) => {\n setValue(name, value)\n trigger(name)\n }\n\n const selectChange = val => {\n setValue(`provisionalStrategy.${id}.params.name`, val)\n setProvisionalStrategy(val)\n\n if (val === defaultProvisionalStrategy && defaultProvisionalStrategyParams) {\n setProvisionalStrategyParams(defaultProvisionalStrategyParams)\n } else {\n setProvisionalStrategyParams({})\n }\n\n trigger()\n }\n\n const isBeingEdited =\n findingWords === true ? findingWords : indexBeingEdited.current !== null && indexBeingEdited?.current === id\n\n if (!select) return null\n\n const selectOptions = strategyOptions.filter(strat => strat.selectable === undefined || strat.selectable >= 0)\n\n const params = {\n ...watchProvisionalStrategyFormParams,\n }\n let thisParams = {}\n if (options) {\n options.forEach(option => {\n if (params[option.value]) {\n thisParams[option.value] = params[option.value]\n }\n })\n\n if (watchProvisionalStrategyFormParams?.customParams) {\n thisParams = { ...thisParams, ...watchProvisionalStrategyFormParams.customParams }\n }\n }\n const opts = thisParams ? Object.keys(thisParams) : []\n const maxTooltipLength = 300\n const tooltipProps = {\n config: {\n triggerOffset: md,\n },\n placement: 'top-start',\n style: { boxSizing: 'content-box', maxWidth: '240px' },\n }\n const sharedGroupProps = {\n colWidth: 'auto',\n gutter: xs,\n noEndGutter: true,\n type: 'grid',\n }\n const sharedTooltipProps = {\n mouseEnterDelay: 1000,\n mouseLeaveDelay: 200,\n }\n const dropdownContent = props => (\n \n \n }\n applicationId={applicationId}\n currentProvisionalStrategyName={watchSelectedStrategy}\n errors={errors}\n findingWords={findingWords}\n id={id}\n ngramProps={props}\n provisionalStrategy={provisionalStrategy}\n provisionalStrategyParams={provisionalStrategyParams}\n register={register}\n select={select}\n selectChange={selectChange}\n selectOptions={selectOptions}\n setFindingWords={setFindingWords}\n setValue={setValue}\n trigger={trigger}\n unregister={unregister}\n getValues={getValues}\n />\n \n )\n const dropdownTriggerProps = { type: 'click' }\n\n const strategy = strategyOptions.find(option => option.value === watchSelectedStrategy)\n\n const dropdownLayerProps = {\n auto: false,\n closeOnOverlayClick: false,\n containerOffset: -100,\n placement: 'left-start',\n snap: false,\n triggerOffset: -60,\n }\n return (\n \n \n \n \n {strategy?.label}\n {!!currentApplyTo && (\n <Tooltip title='Provisional Signatures to Apply Strategy To.'>\n <Tag color={theme.white} size='small' style={tagCSS}>\n {currentApplyTo}\n </Tag>\n </Tooltip>\n )}\n \n {!!strategy?.description && {strategy.description}}\n \n {!!thisParams && opts.length > 0 && (\n \n {opts?.map((o, i) => {\n const tooltipText = String(thisParams[o])\n const noTooltipNeeded = tooltipText === '1' || tooltipText === '\"1\"' || tooltipText === 'true'\n const title =\n tooltipText.length > maxTooltipLength\n ? `${tooltipText.substring(0, maxTooltipLength)}...`\n : tooltipText\n\n const Container = noTooltipNeeded ? Element : Tooltip\n const optionContainerProps = {\n ...(!noTooltipNeeded && {\n title: title,\n ...tooltipProps,\n }),\n }\n\n const tagColor = theme[noTooltipNeeded ? 'field-bg-dark' : 'nav-btn-selected-bg']\n const tagStyle = { cursor: noTooltipNeeded ? 'default' : 'context-menu', whiteSpace: 'nowrap' }\n const tagText = paramsDetailsMap[o]?.label || o\n\n return (\n \n \n \n {tagText}\n \n \n \n )\n })}\n \n )}\n \n\n \n removeAt(id)}\n title='Delete Strategy?'\n >\n \n \n setHighlight(false)}\n onMount={() => setHighlight(isBeingEdited)}\n onOpen={() => {\n setHighlight(true)\n }}\n onOutsideClick={() => {\n if (!findingWords) {\n setIsEditingChain({ editing: false })\n setHighlight(false)\n }\n }}\n trigger={dropdownTriggerProps}\n visible={isBeingEdited}\n >\n {\n setIsEditingChain({ editing: id })\n setHighlight(true)\n }}\n size='small'\n tooltipProps={indexBeingEdited?.current !== id && { ...sharedTooltipProps, title: 'Edit Strategy.' }}\n />\n \n \n \n \n \n )\n }\n)\n\nexport default Chain\n","import React, { Fragment, useEffect, useState } from 'react'\n\nimport {\n defaultSelectComponents,\n Element,\n Fieldset,\n FormControl,\n Heading,\n helpers,\n JSONEditor,\n Label,\n reactSelectComponents,\n Select,\n Typography,\n theme,\n useFela,\n} from '@fortressiq/fiq-ds'\n\nimport { useUpdateEffect } from 'react-use'\n\nimport { strategyOptions, paramsDetailsMap } from 'lib/SignatureStrategies'\n\nimport CheckboxStrategy from './fields/Checkbox'\nimport Number from './fields/Number'\nimport RadioGroup from './fields/RadioGroup'\nimport TextInput from './fields/TextInput'\nimport TextArea from './fields/TextArea'\nimport NGram from './nGram'\n\nimport { appHeadingCSS, highlightableCSS } from '../styles'\nimport { strategyParamsMap } from '../utilities'\n\nconst { addImportant, customScrollbarCSS } = helpers\nconst { Text } = Typography\n\nconst validateJson = value => {\n if (value) {\n try {\n JSON.parse(value)\n return true\n } catch (e) {\n return false\n }\n }\n return true\n}\nconst sm = theme['default-spacer-sm']\n\nconst Form = ({\n additionalFields,\n applicationId,\n currentProvisionalStrategyName,\n errors,\n findingWords,\n id,\n ngramProps,\n provisionalStrategy,\n provisionalStrategyParams,\n register,\n select,\n selectChange,\n selectOptions,\n setFindingWords,\n setValue,\n single,\n trigger,\n unregister,\n getValues,\n}) => {\n const { css } = useFela()\n\n const [options, setOptions] = useState([])\n\n const hasOptions = options && !!options.length\n\n useUpdateEffect(() => {\n // unregister fields when options changes\n if (options) {\n const existingParams = Object.keys(getValues(`provisionalStrategy[${id}].params`))\n const newParams = [...options.map(value => value.value), 'name', 'customParams']\n const paramsToRemove = existingParams?.filter(value => !newParams.includes(value))\n paramsToRemove.forEach(param => unregister(`provisionalStrategy[${id}].params.${param}`))\n }\n }, [options])\n\n const defaultValues = getValues(`provisionalStrategy[${id}].params`)\n\n useEffect(() => {\n setOptions(strategyParamsMap[currentProvisionalStrategyName])\n }, [currentProvisionalStrategyName])\n\n const handleChange = (name, value) => {\n setValue(name, value)\n trigger(name)\n }\n\n const selectProps = {\n className: css(highlightableCSS),\n components: {\n ...defaultSelectComponents,\n Option: props => {\n const {\n data: { description, label },\n } = props\n\n return (\n \n {label}\n {description}\n \n )\n },\n },\n defaultValue: () => {\n let defaultValue\n strategyOptions.map(o => {\n if (o.value === provisionalStrategy) {\n defaultValue = { label: o.label, value: o.value }\n }\n return null\n })\n\n return defaultValue\n },\n options: selectOptions,\n placeholder: 'Select a Provisional Strategy',\n ...select,\n menuPlacement: 'bottom',\n onChange: ({ value }) => selectChange(value),\n }\n\n const jsonEditorChangeHandler = ({ updated_src: updatedSrc }) =>\n setValue(`provisionalStrategy.${id}.params.customParams`, updatedSrc)\n const jsonEditorConfig = {\n import: {\n overlayProps: {\n placement: {\n offset: [8, -16],\n points: ['br', 'tl'],\n },\n portalContainer: 'chainUIPortalContainer',\n zIndex: theme['z-overdrive'],\n },\n },\n }\n const jsonEditorStyle = {\n maxHeight: '120px',\n '& > .react-json-view': {\n backgroundColor: theme.white,\n marginBottom: theme['default-spacer-sm'],\n overflow: 'auto',\n ...customScrollbarCSS({ width: theme['default-spacer-xs'] }),\n },\n }\n\n const portalContainerCSS = {\n position: 'fixed',\n zIndex: theme['z-modal-above'],\n '&> #provisionalStrategy-jsonEditor-import-overlay': { minWidth: '300px' },\n }\n\n return (\n \n e.preventDefault()}\n style={portalContainerCSS}\n {...ngramProps}\n />\n \n \n Strategy\n \n \n \n \n \n \n \n )\n\n const doShowNoteForm = () => {\n setShowInputNotes(true)\n // Wait for the switch animation to finish\n setTimeout(() => {\n // Focus input\n inputNotesRef.current.focus()\n }, 500)\n }\n\n const DashboardHeaderName = (\n \n {name}\n \n \n setShowInput(true)}\n size={iconSize}\n />\n \n \n \n )\n\n const Notes = (\n \n \n \n \n {note}\n \n )\n\n const editNote = (\n
\n \n \n \n \n \n \n \n \n \n \n
\n )\n\n return (\n \n \n \n {name} - {dashboardTitle} - Process Discovery\n \n \n \n \n \n {dashboardTitle}\n \n \n \n \n \n \n \n {tags && (\n \n \n \n Tags:\n \n \n store.fetchCards()}\n />\n \n \n \n )}\n \n \n \n Notes:\n \n \n \n \n \n \n \n )\n}\n\nconst RemoveCardButton = ({ onClick }) => (\n \n)\n\nDashboardHeader.propTypes = {\n note: PropTypes.string.isRequired,\n update: PropTypes.func.isRequired,\n}\n\nexport default withRouter(DashboardHeader)\n","import React from 'react'\nimport { Element, Icon, Menu, MenuItem, Popconfirm, theme, Typography, useFela } from '@fortressiq/fiq-ds'\nimport { array, func, string } from 'prop-types'\n\nimport store from '../../ClientDashboardStore'\n\nimport { menuCss } from './styles'\n\nconst { Text } = Typography\n\nconst AddObjectButton = ({ action, dark, type }) => (\n \n {type}\n \n)\n\nconst MenuRow = ({ dark, item: { id, displayName, name, type }, onClick }) => {\n const displayText = `${displayName || name} | ${type}`\n const title = `Remove ${displayText} from this Dashboard?`\n\n return (\n {\n // needed to have child button event fire\n e.stopPropagation()\n }}\n tooltip={{\n mouseEnterDelay: 3000,\n placement: 'top-start',\n title: title,\n }}\n >\n \n \n {displayText}\n \n \n \n \n )\n}\n\nconst CardMenu = ({ dark = true, type, list, action, del }) => {\n const { css } = useFela()\n\n return (\n \n \n {list.map(item => {\n const onClick = type === 'Asset' ? () => store.removeUpload(item.id) : () => del(item.id)\n\n return \n })}\n \n )\n}\n\nCardMenu.propTypes = {\n action: func.isRequired,\n // eslint-disable-next-line react/forbid-prop-types\n list: array.isRequired,\n type: string.isRequired,\n}\n\nexport default CardMenu\n","/* eslint-disable import/prefer-default-export */\nexport const menuCss = ({ theme }) => ({\n color: theme.white,\n maxWidth: '500px',\n minWidth: '300px',\n zIndex: theme['z-below-modal'],\n '> ul > li > .fiqds-menu-item-content': {\n color: theme.white,\n },\n})\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { Button, theme, Typography, useModal } from '@fortressiq/fiq-ds'\nimport localizer from 'lib/Localizer'\n\nimport { addPXSuffix } from 'helpers'\nimport CardListing from '../CardListing'\nimport DetailCard from '../../DetailCard'\nimport CardMenu from '../Menus/CardMenu'\nimport UploadsModal from '../UploadsModal/UploadsModal'\n\nimport store from '../../ClientDashboardStore'\n\nconst titleMap = {\n 'application/zip': 'Zip Archive',\n}\n\nconst UploadsCard = observer(() => {\n const visibleUploads = store.uploadsList\n const { addModal, removeModal } = useModal()\n const modalID = 'client-dashboard-add-upload-modal'\n\n return (\n \n addModal({\n bodyStyle: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n },\n children: (\n removeModal(modalID)}\n onDropAccepted={store.attachUpload}\n onRemove={store.removeUpload}\n />\n ),\n footer: false,\n header: 'Add Uploads to Process',\n id: modalID,\n maskStyle: {\n zIndex: theme['z-modal-above'],\n },\n style: { width: addPXSuffix(300), zIndex: theme['z-overdrive'] },\n }),\n list: visibleUploads,\n type: 'Asset',\n })}\n >\n {!visibleUploads.length && No Assets Added}\n\n {visibleUploads &&\n visibleUploads.map(({ createdBy, ...upload }, index) => {\n const [uploadType] = upload.contentType.split('/')\n\n return (\n DownloadButton(upload)}\n details={[\n upload.filesize,\n `Created ${localizer.asShortestDateTime(upload.createdAt)}`,\n createdBy && `by ${createdBy}`,\n ]}\n />\n )\n })}\n \n )\n})\n\nconst DownloadButton = ({ fileName, fileSrc }) => (\n \n)\n\nexport default UploadsCard\n","import React from 'react'\n\nimport FileDrop from 'components/FileDrop/FileDrop'\n\n// @todo pull from tenant configuration\nexport const accept = [\n 'application/pdf',\n 'application/msword',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', // .docx\n 'application/vnd.ms-excel', // .xls, .xlt, .xla\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', // .xlsx\n 'application/vnd.ms-powerpoint', // .ppt, .pot, .pps, .ppa\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation', // .pptx\n 'application/zip',\n 'image/svg+xml',\n 'image/png',\n 'text/csv',\n 'text/plain',\n]\n\nconst UploadsModal = ({ closeModal, onCompleteAll, ...props }) => (\n \n)\n\nexport default UploadsModal\n","import React, { Fragment } from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { observer } from 'mobx-react'\n\nimport { Typography, useModal } from '@fortressiq/fiq-ds'\n\nimport startCase from 'lodash/startCase'\nimport localizer from 'lib/Localizer'\nimport { useUserState } from 'context/UserContext'\n\nimport CardListing from '../CardListing'\nimport DetailCard from '../../DetailCard'\nimport CardMenu from '../Menus/CardMenu'\n\nimport store from '../../ClientDashboardStore'\nimport VisualizationModal from '../VisualizationModal/VisualizationModal'\nimport { urlCheck } from '../utilities/Utilities'\n\nconst VisualizationList = ({ visList }) => {\n const { roles } = useUserState()\n return (\n \n {visList\n .filter(({ viewUrl }) => {\n return urlCheck(viewUrl, roles)\n })\n .map(({ createdBy, ...vis }, index) => {\n return (\n \n )\n })}\n \n )\n}\n\nconst VisualizationCard = ({ onOk }) => {\n const { addModal, removeModal } = useModal()\n const modalID = 'client-dashboard-add-viz-modal'\n\n return (\n \n addModal({\n children: ,\n config: { interactWithKeyboard: false },\n footer: false,\n header: 'Add New Visualization',\n id: modalID,\n style: { maxWidth: '600px' },\n bodyStyle: { overflow: 'visible' },\n }),\n del: store.removeVis,\n list: store.visList,\n type: 'Visualization',\n })}\n >\n {store.visList.length ? (\n \n ) : (\n No Visualizations Added\n )}\n \n )\n}\n\nexport default withRouter(observer(VisualizationCard))\n","import React, { useCallback } from 'react'\nimport { Button, ButtonGroup, Input, theme, useFela, useForm } from '@fortressiq/fiq-ds'\nimport ControlledSelect from 'components/form/ControlledSelect'\nimport FieldWrapper from 'components/form/FieldWrapper'\n\nconst visualizationTypes = [\n {\n value: 'path',\n label: 'Path',\n },\n {\n value: 'butterfly',\n label: 'Butterfly',\n },\n {\n value: 'fromUrl',\n label: 'From URL',\n },\n]\n\nconst VisualizationModal = ({ modalID, onOk, removeModal }) => {\n const { register, control, handleSubmit, formState, watch } = useForm({\n mode: 'all',\n reValidateMode: 'onChange',\n shouldUnregister: true, // Will unregister conditional fields\n })\n\n const { css } = useFela()\n\n const watchFields = watch()\n\n // Show display name last when all other fields are filled\n const showDisplayName = !!watchFields?.graphIdPath || !!watchFields?.graphIdButterfly || !!watchFields?.url\n const showGraphIdButterfly = watchFields?.type?.value === 'butterfly'\n const showGraphIdPath = watchFields?.type?.value === 'path'\n const showFromUrl = watchFields?.type?.value === 'fromUrl'\n\n const onSubmit = async formValues => {\n const graphId = formValues?.graphIdButterfly?.value || formValues?.graphIdPath?.value\n const visData = {\n graphId: graphId,\n displayName: formValues?.displayName,\n url: formValues?.url,\n }\n onOk(visData)\n removeModal(modalID)\n }\n\n const constructGraphSelectOptions = useCallback(data => {\n return data?.graphProcesses.map(item => ({ label: item.text, value: item.value }))\n }, [])\n\n return (\n
\n \n \n \n\n {showGraphIdButterfly && (\n \n \n \n )}\n\n {showGraphIdPath && (\n \n \n \n )}\n\n {showFromUrl && (\n \n \n \n )}\n\n {showDisplayName && (\n \n \n \n )}\n \n {\n removeModal(modalID)\n }}\n >\n Cancel\n \n \n \n
\n )\n}\n\nexport default VisualizationModal\n","export const detailsColCss = ({ theme }) => ({\n maxWidth: '250px',\n paddingRight: theme['default-spacer-md'],\n})\n\nexport const nameCss = ({ theme }) => ({\n fontSize: theme['font-size-base'],\n lineHeight: '14px',\n marginBottom: theme['default-spacer-xs'],\n marginRight: theme['default-spacer-md'],\n maxWidth: '173px',\n wordBreak: 'break-all',\n})\n\nexport const flexRowCss = ({ theme }) => ({\n borderBottom: `1px solid ${theme['legacy-color-gray2']}`,\n display: 'flex',\n justifyContent: 'space-between',\n marginBottom: theme['default-spacer-md'],\n padding: `${theme['default-spacer-xs']} 0 ${theme['default-spacer-sm']} 0`,\n\n '&:first-child': {\n paddingTop: '0',\n },\n\n '&:last-child': {\n borderBottom: '0',\n },\n})\n","import { addImportant } from 'helpers'\n\nexport const containerCss = ({ theme }) => ({\n background: theme['legacy-color-gray'],\n minHeight: '100vh',\n padding: theme['default-spacer-md'],\n width: '100%',\n})\n\nexport const cardContainerCss = ({ theme }) => ({\n display: 'flex',\n flexWrap: 'wrap',\n marginLeft: `-${theme['default-spacer-sm']}`,\n\n '& > div': {\n margin: theme['default-spacer-sm'],\n },\n})\n\nexport const tagsWrapperCSS = ({ theme }) => ({\n background: theme.white,\n padding: `${theme['default-spacer-sm']} ${theme['default-spacer-md']} ${theme['default-spacer-xs']}`,\n borderTop: `1px solid ${theme['antd-card-border']}`,\n borderBottom: `1px solid ${theme['antd-card-border']}`,\n})\n\nexport const notesWrapperCSS = ({ theme }) => ({\n background: theme.white,\n padding: `${theme['default-spacer-sm']} ${theme['default-spacer-md']} ${theme['default-spacer-xs']}`,\n borderTop: 0,\n borderBottom: `1px solid ${theme['antd-card-border']}`,\n})\n\nexport const headerContainerCSS = ({ theme }) => ({\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n padding: `${theme['default-spacer-sm']} ${theme['default-spacer-sm']} 0`,\n})\n\nexport const headerH1CSS = ({ theme }) => ({\n fontSize: addImportant('23px'),\n lineHeight: '22px',\n marginTop: theme['default-spacer-sm'],\n})\n\nexport const headerLinkCSS = ({ theme }) => {\n const stateCSS = {\n color: theme.black,\n textDecoration: 'underline',\n }\n\n return {\n alignSelf: 'flex-start',\n '> a.backToIndex': {\n color: theme['text-color'],\n cursor: 'pointer',\n fontSize: '12px',\n fontWeight: '500',\n textDecoration: 'underline',\n '&:active': stateCSS,\n '&:focus': stateCSS,\n '&:hover': stateCSS,\n },\n }\n}\n\nexport const removeButtonCSS = () => ({\n position: 'relative',\n top: '-7px',\n})\n","/* eslint-disable import/prefer-default-export */\nimport { addPXSuffix } from 'helpers'\n\nexport const cardCSS = () => ({\n width: addPXSuffix(320),\n minHeight: addPXSuffix(200),\n})\n\nexport const titleRowCSS = ({ theme }) => ({\n alignContent: 'center',\n borderBottom: `1px solid ${theme['legacy-color-gray2']}`,\n display: 'flex',\n height: addPXSuffix(42),\n justifyContent: 'space-between',\n padding: `${theme['default-spacer-md']} ${theme['default-spacer-md']} ${theme['default-spacer-sm']}`,\n})\n\nexport const titleCSS = ({ theme }) => ({\n color: theme['text-dark'],\n fontSize: theme['font-size-base'],\n fontWeight: '600',\n textTransform: 'uppercase',\n})\n","/* eslint-disable import/prefer-default-export */\nimport { roleRouteCheck } from 'components/can/Can'\n\n/* Checks if a user has access to view a url */\nexport const urlCheck = (viewUrl, roles) => {\n if (viewUrl.startsWith('/')) viewUrl = viewUrl.substring(1)\n if (viewUrl.endsWith('/')) viewUrl = viewUrl.substring(0, viewUrl.length - 2)\n\n //remove query string\n const q = viewUrl.indexOf('?')\n if (q >= 0) {\n viewUrl = viewUrl.substring(0, q)\n }\n\n const url = viewUrl.split('/')\n // replace any integers with :id or whatever it may be\n // refer to lib/rbac-rules file for common url paths\n const constructedUrl = `/${url\n .map((val, index) => {\n const i = parseInt(val, 10)\n if (isNaN(i)) return val\n if (url[0] === 'applications' && url.length > index + 1 && url[2] === 'screens' && index === 1)\n return ':applicationId'\n if (url[0] === 'applications' && url.length > index + 1 && url[2] === 'screens' && index === 3)\n return ':screenSignature'\n if (url[0] === 'events') return ':observerNames?'\n if (url[0] === 'process-boundary') return ':reportId'\n if (url[0] === 'processes' && url.length > index + 1 && url[index + 1] === 'state_actions' && index === 1)\n return ':processId'\n if (url[0] === 'processes' && url.length > index + 1 && url[index + 1] === 'state_actions' && index === 3)\n return ':state'\n if (url[0] === 'review') {\n if (index === 1 && url.length > 2) return ':observerID'\n if (index === 1 && url.length === 2) return ':observerID?'\n if (index === 2) return ':reviewID'\n if (index === 3) return ':eventAnnotationID'\n }\n if (url[0] === 'screenshot') return ':eventLogId'\n if (\n (url[0] === 'visualizations' && url[1] === 'butterfly') ||\n url[0] === 'process-explorer' ||\n url[0] === 'instances-viewer'\n )\n return ':id?'\n\n return ':id'\n })\n .join('/')}`\n\n return roleRouteCheck(constructedUrl, roles)\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport qs from 'qs'\nimport { Menu, MenuItem, Popconfirm } from '@fortressiq/fiq-ds'\nimport { Link } from 'react-router-dom'\nimport ExportMenuItem from 'components/ExportButton/ExportMenuItem'\nimport ActionMenu from 'components/TrinityTable/ActionMenu/ActionMenu'\nimport handleIntegration from 'app/admin/integrations/helpers/handleIntegration'\nimport callbackStore from 'stores/callback'\n\nimport api from 'lib/Api'\n\nconst ActionsMenu = ({ cycle, handleEdit, handleClone, reFetch, integrations, isLoadingIntegrations }) => {\n const getArgs = () => {\n const dateRange = cycle.filterRules.rules\n .reduce((acc, { field, value }) => {\n if (field === 'observed_at') {\n acc.push(value.replace(/\\..+/, ''))\n }\n return acc\n }, [])\n .join('-')\n\n return {\n filter: cycle.filterRules,\n exportType: 'cycle_events',\n exportName: `Cycle: ${cycle.name} - ${dateRange}`,\n record: { id: cycle.id, type: 'cycle' },\n }\n }\n\n const handleDelete = async id => {\n await api.delete(`/cycles/${id}`)\n reFetch()\n }\n\n const exportCount = cycle.exportIds.length\n const exportsUrl =\n !!exportCount && `/event-log-exports?${cycle.exportIds.map(exportId => `ids=${exportId}`).join('&')}`\n\n const menu = (\n \n \n Browse Events\n \n handleClone(cycle)}>\n Clone\n \n handleEdit(cycle)}>\n Edit\n \n {exportsUrl && (\n \n View Exports ({exportCount})\n \n )}\n \n event.stopPropagation()}>\n {\n handleDelete(cycle.id)\n }}\n placement='left-center'\n title='Are you sure you want to delete this cycle?'\n >\n Delete\n \n \n {!isLoadingIntegrations &&\n integrations.map(integration => (\n handleIntegration({ integrationId: integration.id, objectId: cycle.id })}\n >\n {integration.title}\n \n ))}\n \n )\n\n return \n}\n\nActionsMenu.defaultProps = {\n isLoadingIntegrations: undefined,\n integrations: undefined,\n}\n\nActionsMenu.propTypes = {\n cycle: PropTypes.shape().isRequired,\n handleEdit: PropTypes.func.isRequired,\n handleClone: PropTypes.func.isRequired,\n reFetch: PropTypes.func.isRequired,\n isLoadingIntegrations: PropTypes.bool,\n integrations: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number,\n title: PropTypes.string,\n })\n ),\n}\n\nexport default ActionsMenu\n","import React, { useEffect } from 'react'\nimport { Overlay } from '@fortressiq/fiq-ds'\n\nimport CycleForm from './form'\n\nconst CycleFormModal = ({\n reloadCycles,\n showCycleFormModal: showing,\n setShowCycleFormModal: setShowing,\n clonedCycle,\n setClonedCycle,\n editId,\n setEditId,\n}) => {\n const placement = {\n overflow: { adjustX: true, adjustY: true },\n points: ['br', 'tr'],\n targetOffset: [0, 4],\n useCssTransform: false,\n }\n\n const trigger = {\n showing,\n setShowing,\n text: 'New Cycle',\n type: 'secondary',\n }\n\n const heights = {\n height: 659,\n }\n\n useEffect(() => {\n if (!showing) {\n setEditId()\n setClonedCycle()\n }\n }, [showing, setClonedCycle, setEditId])\n\n return (\n \n }\n heights={heights}\n id='create-web-application-modal'\n placement={placement}\n trigger={trigger}\n noPadding={true}\n />\n )\n}\n\nexport default CycleFormModal\n","import React, { Fragment, useEffect, useState } from 'react'\n\nimport { func, string, shape, arrayOf } from 'prop-types'\n\nimport api from 'lib/Api'\n\nimport constructApplicationOptions from 'components/form/helpers/constructApplicationOptions'\nimport SignatureSelect from './SignatureSelect'\n\nconst signatureCache = {}\n\n// NOTE: This component should be refactored with the help of backend\n// Main issue we store app names instead of app IDs\n// To get the signatures we first need to get the app IDs\n// To get signatures for multiple app, its one api call for each app\n\nconst SignatureBuilder = ({\n formState: { applications: selectedApplicationNames, startSignature, endSignature },\n onSelectChange,\n}) => {\n const [applicationsCache, setApplicationsCache] = useState()\n const [selectedApplicationIds, setSelectedApplicationIds] = useState()\n const [options, setOptions] = useState()\n const [isLoading, setIsLoading] = useState(!!selectedApplicationNames)\n\n // Get application ids from application names\n // Rerun if application names changes\n useEffect(() => {\n const createApplicationHash = async () => {\n const { data: allApplications } = await api.get('/applications/filters', { service: true })\n const applicationsHash = constructApplicationOptions(allApplications).reduce((hash, elem) => {\n hash[elem.value] = elem.id\n return hash\n }, {})\n\n setApplicationsCache(applicationsHash)\n }\n\n // if applicationsCache is not defined and selectedApplicationNames is not empty\n // make a cached object where app name is key and app id is value\n if (!applicationsCache && selectedApplicationNames) {\n createApplicationHash()\n }\n\n // if applicationsCache is created and selectedApplicationNames is not empty\n // get the applications ids based on the selected application names\n if (applicationsCache && selectedApplicationNames) {\n setSelectedApplicationIds(selectedApplicationNames.map(appKey => applicationsCache[appKey]))\n }\n }, [selectedApplicationNames, applicationsCache])\n\n // Get signatures based on application Ids\n // Rerun if application ids changes\n useEffect(() => {\n const getSignatures = async application => {\n setIsLoading(true)\n if (signatureCache[application]) {\n return signatureCache[application]\n } else {\n const { data: sigs } = await api.get(`/applications/${application}/signatures`, {\n applicationUuid: application,\n })\n signatureCache[application] = sigs\n return sigs\n }\n }\n\n if (selectedApplicationIds) {\n Promise.all(selectedApplicationIds.map(application => getSignatures(application))).then(values => {\n const array = values.reduce((acc, sigs) => acc.concat(sigs), [])\n setOptions(array.map(item => ({ label: item, value: item })))\n setIsLoading(false)\n })\n }\n }, [selectedApplicationIds])\n\n return (\n \n \n \n \n )\n}\n\nSignatureBuilder.propTypes = {\n formState: shape({\n startSignature: arrayOf(string),\n endSignature: arrayOf(string),\n applications: arrayOf(string),\n }).isRequired,\n onSelectChange: func.isRequired,\n}\n\nexport default SignatureBuilder\n","import React, { Fragment, useState, useEffect, useCallback } from 'react'\nimport { func, string, shape, bool, oneOfType, number, arrayOf } from 'prop-types'\n\nimport { Select, theme, Label } from '@fortressiq/fiq-ds'\n\nconst SignatureSelect = ({ isLoading, label, name, onChange, options, value }) => {\n const [localValue, setLocalValue] = useState()\n\n const onChangeHandler = useCallback(\n e => {\n const obj = {\n target: {\n name,\n value: e,\n },\n }\n onChange(obj)\n if (!e.length) {\n // of value is empty set empty local value directly\n setLocalValue([])\n }\n },\n [name, onChange]\n )\n\n useEffect(() => {\n if (!isLoading) {\n if (options?.length && value?.length) {\n // Sets local value when editing, cloning or options are removed by changing applications\n\n // Remove values not in options, return object(value, label)\n const transformedFormState = options.filter(option => value.includes(option.value))\n\n setLocalValue(transformedFormState)\n\n // check if a selected value is removed from options\n if (transformedFormState.length !== value.length) {\n onChangeHandler(transformedFormState)\n }\n } else if (!options?.length && value?.length) {\n // if options are empty but form state has values, clear the form state and localValue\n setLocalValue([])\n onChangeHandler([])\n }\n }\n }, [options, value, onChangeHandler, isLoading])\n\n if (!options?.length) return null\n return (\n \n \n \n \n )\n}\n\nSignatureSelect.defaultProps = {\n options: undefined,\n value: undefined,\n}\n\nSignatureSelect.propTypes = {\n isLoading: bool.isRequired,\n label: string.isRequired,\n name: string.isRequired,\n onChange: func.isRequired,\n options: arrayOf(shape({ label: string, value: oneOfType([string, number]) })),\n value: oneOfType(string),\n}\n\nexport default SignatureSelect\n","import React, { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n Col,\n Element,\n Button,\n DateTimePickerRange,\n Label,\n Input,\n Row,\n TextArea,\n theme,\n Typography,\n} from '@fortressiq/fiq-ds'\nimport shortid from 'shortid'\nimport api from 'lib/Api'\n\nimport { formBackgroundCSS, formContainerCSS, observerGroupCSS, titleSectionCSS } from 'app/mining/form/styles'\n\nimport { DATE_TIME_FORMAT_TWENTYFOUR_HOUR } from 'constants/app-constants'\n\nimport AsyncSelect from 'components/form/AsyncSelect'\nimport constructApplicationOptions from 'components/form/helpers/constructApplicationOptions'\nimport SignatureBuilder from './SignatureBuilder'\n\nimport { addImportant, noop } from '../../../helpers/index'\nimport { cycleButtonSectionCSS, scrollSectionCSS } from '../styles'\n\nconst { Title } = Typography\n\nconst filterRulesMap = filterRules => {\n const initialValue = {}\n if (!filterRules.rules) {\n return null\n }\n return filterRules.rules.reduce((obj, item) => {\n if (item.field === 'observed_at' && item.operator === '>=') {\n return {\n ...obj,\n observedAtFrom: item.value,\n }\n }\n if (item.field === 'observed_at' && item.operator === '<=') {\n return {\n ...obj,\n observedAtTo: item.value,\n }\n }\n if (item.field === 'observer_name') {\n return {\n ...obj,\n observers: item.value.split(','),\n observerRule: item.operator,\n }\n }\n if (item.field === 'application_name') {\n return {\n ...obj,\n applications: item.value.split(','),\n applicationRule: item.operator,\n }\n }\n if (item.field === 'user') {\n return {\n ...obj,\n users: item.value.split(','),\n usersRule: item.operator,\n }\n }\n return obj\n }, initialValue)\n}\n\nconst defaultFormState = {\n name: '',\n observedAtFrom: null,\n observedAtTo: null,\n observers: undefined,\n observerRule: 'in',\n applications: undefined,\n applicationRule: 'in',\n users: undefined,\n usersRule: 'in',\n notes: '',\n startSignature: undefined,\n endSignature: undefined,\n signatureApplicationIds: undefined,\n user_ids: null,\n}\n\nconst spacer = theme['default-spacer-sm']\nexport const labelProps = {\n style: { marginTop: spacer },\n}\n\nconst CycleForm = ({ clonedCycle, editId, reloadCycles, setShowing }) => {\n const [formState, setFormState] = useState(\n clonedCycle\n ? {\n ...defaultFormState,\n name: clonedCycle.name,\n notes: clonedCycle.notes,\n startSignature: clonedCycle.startSignatures,\n endSignature: clonedCycle.endSignatures,\n user_ids: clonedCycle.cycleUsers.map(user => user.id),\n ...filterRulesMap(clonedCycle.filterRules),\n }\n : { ...defaultFormState }\n )\n const [dates, setDates] = useState(() => {\n const from = formState?.observedAtFrom ? new Date(formState.observedAtFrom) : null\n const to = formState?.observedAtTo ? new Date(formState.observedAtTo) : null\n\n return [from, to]\n })\n\n const canSubmit = [\n formState.observedAtFrom,\n formState.observedAtTo,\n formState.observers?.length > 0 || formState.users?.length > 0,\n formState.name.trim(),\n ].every(Boolean)\n\n const onDateChange = ds => {\n setDates(ds)\n setFormState({\n ...formState,\n observedAtFrom: ds[0] || null,\n observedAtTo: ds[1] || null,\n })\n }\n\n const handleObserverTagChange = async ({ target: { value } }) => {\n const values = value.map(items => items.value)\n const {\n data: { observers },\n } = await api.get('/observers', { filters: { tags: values } })\n const observersSelectArray = observers.map(observer => observer.name)\n setFormState({ ...formState, observers: observersSelectArray })\n }\n\n const onSelectChange = ({ target: { name, value, optionsValueKey = 'value' } }) => {\n const values = value.map(items => items[optionsValueKey])\n onInputChange({ target: { name, value: values } })\n }\n\n const onInputChange = ({ target: { name, value } }) => setFormState({ ...formState, [name]: value })\n\n const onSubmit = async e => {\n e.preventDefault()\n const params = {\n name: formState.name.trim(),\n notes: formState.notes,\n start_signatures: formState.startSignature,\n stop_signatures: formState.endSignature,\n user_ids: formState.user_ids,\n filter: {\n combinator: 'and',\n not: false,\n id: shortid.generate(),\n rules: [\n formState.observers?.length > 0 && {\n field: 'observer_name',\n id: shortid.generate(),\n value: formState.observers.join(),\n operator: formState.observerRule,\n },\n formState.applications?.length > 0 && {\n field: 'application_name',\n value: formState.applications.join(),\n id: shortid.generate(),\n operator: formState.applicationRule,\n },\n formState.observedAtFrom && {\n field: 'observed_at',\n id: shortid.generate(),\n value: formState.observedAtFrom,\n operator: '>=',\n },\n formState.observedAtTo && {\n field: 'observed_at',\n id: shortid.generate(),\n value: formState.observedAtTo,\n operator: '<=',\n },\n formState.users?.length > 0 && {\n field: 'user',\n id: shortid.generate(),\n value: formState.users.join(),\n operator: formState.usersRule,\n },\n ].filter(Boolean),\n },\n }\n const apiUrl = editId ? api.put(`/cycles/${editId}`, params) : api.post('/cycles', params)\n await apiUrl\n await reloadCycles()\n setShowing(false)\n }\n const width = '610px'\n\n return (\n \n \n \n {editId ? `Edit Cycle ${editId}` : 'Create a Cycle'}\n \n \n \n \n \n \n \n \n onDateChange(ds)}\n styles={{ popperStyle: { zIndex: theme['z-overdrive'] } }}\n value={dates}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n e.preventDefault()\n setShowing(false)\n }}\n >\n Cancel\n \n \n \n \n \n )\n}\n\nCycleForm.propTypes = {\n reloadCycles: PropTypes.func.isRequired,\n setShowing: PropTypes.func.isRequired,\n}\n\nexport default CycleForm\n","import React, { useEffect, useState } from 'react'\nimport { AdvancedCell, DateCell, Element } from '@fortressiq/fiq-ds'\n\nimport TrinityTable, { columnWidths } from 'components/TrinityTable'\nimport { useQueryParams, JsonParam } from 'use-query-params'\n\nimport { useHeaderDispatch } from 'app/header/HeaderContext'\nimport { Filter } from 'app/mining/tableComponents/MiningRunDetails'\nimport EditableCell from 'components/TrinityTable/EditableCell'\nimport api from 'lib/Api'\nimport { useFetch } from 'lib/hooks'\nimport ActionsMenu from './ActionsMenu'\nimport CycleFormModal from './FormModal'\nimport { filterWrapCSS } from './styles'\n\nconst sortKeyMap = {\n exportType: 'export_type',\n createdAt: 'created_at',\n updatedAt: 'updated_at',\n}\n\nconst Cycles = () => {\n const [showCycleFormModal, setShowCycleFormModal] = useState(false)\n const [clonedCycle, setClonedCycle] = useState()\n const [reFetch, setReFetch] = useState(0)\n\n const [editId, setEditId] = useState()\n\n const [filterParams] = useQueryParams({\n globalFilter: JsonParam,\n })\n\n const { data: { integrations = [] } = {}, isLoadingIntegrations } = useFetch('/dynamic_integrations/cycle/list')\n\n const headerDispatch = useHeaderDispatch()\n\n const handleClone = cycle => {\n setClonedCycle(cycle)\n setShowCycleFormModal(true)\n }\n\n const handleEdit = cycle => {\n setClonedCycle(cycle)\n setEditId(cycle.id)\n setShowCycleFormModal(true)\n }\n\n const columns = [\n {\n Header: 'ID',\n accessor: 'id',\n align: 'left',\n width: columnWidths.id,\n },\n {\n Header: 'Name',\n accessor: 'name',\n align: 'left',\n width: 150,\n Cell: ({ value }) => {value || '-'},\n },\n {\n Header: 'Last Modified',\n accessor: 'updatedAt',\n align: 'left',\n width: columnWidths.date,\n\n Cell: ({ value }) => ,\n },\n {\n Header: 'Created At',\n accessor: 'createdAt',\n align: 'left',\n width: columnWidths.date,\n Cell: ({ value }) => ,\n },\n {\n Header: 'Permitted Users',\n accessor: 'cycleUsers',\n align: 'left',\n disableSortBy: true,\n Cell: ({ value }) => value.reduce((a, b) => `${a}${['', ', '][+!!a.length]}${b.name}`, ''),\n },\n {\n Header: 'Created By',\n accessor: 'createdByFirstName',\n align: 'left',\n disableSortBy: true,\n Cell: ({\n value,\n row: {\n original: { createdByLastName },\n },\n }) => `${value} ${createdByLastName}`,\n },\n {\n Header: 'Notes',\n accessor: 'notes',\n align: 'left',\n disableSortBy: true,\n Cell: ({\n value,\n row: {\n index,\n original: { id },\n },\n column: { id: columnId },\n updateCellData,\n }) => (\n \n api.post(`/cycles/${id}/notes`, {\n notes: newValue,\n })\n }\n />\n ),\n },\n {\n Header: 'Details',\n accessor: 'filterRules',\n disableSortBy: true,\n minWidth: 300,\n Cell: ({\n value,\n row: {\n original: { startSignatures, endSignatures },\n },\n }) => {\n if (!value) return null\n const extraLines = [\n ...(startSignatures.length !== 0\n ? [{ title: 'Start Screen_signature', value: startSignatures.join(', ') }]\n : []),\n ...(endSignatures.length !== 0 ? [{ title: 'End Screen_signature', value: endSignatures.join(', ') }] : []),\n ].filter(Boolean)\n return (\n \n \n \n )\n },\n },\n {\n Header: 'Actions',\n accessor: 'actions',\n align: 'center',\n disableSortBy: true,\n width: columnWidths.actionMenu,\n Cell: ({ row: { original } }) => (\n setReFetch(reFetch + 1)}\n cycle={original}\n handleEdit={handleEdit}\n handleClone={handleClone}\n integrations={integrations}\n isLoadingIntegrations={isLoadingIntegrations}\n />\n ),\n },\n ]\n\n useEffect(() => {\n headerDispatch({\n type: 'set',\n title: 'Cycles',\n heading: 'Cycles',\n })\n\n return () => {\n headerDispatch({\n type: 'clear',\n })\n }\n }, [headerDispatch])\n\n return (\n setReFetch(reFetch + 1)}\n showCycleFormModal={showCycleFormModal}\n setShowCycleFormModal={setShowCycleFormModal}\n clonedCycle={clonedCycle}\n setClonedCycle={setClonedCycle}\n editId={editId}\n setEditId={setEditId}\n />,\n ]}\n tableId='cycles-table'\n sortKeyMap={sortKeyMap}\n columns={columns}\n reFetch={reFetch}\n url='/cycles'\n dataKey='cycles'\n params={\n filterParams?.globalFilter?.cycleIds ? { filters: { cycleIds: filterParams.globalFilter.cycleIds } } : undefined\n }\n />\n )\n}\n\nexport default Cycles\n","/* eslint-disable import/prefer-default-export */\nimport { buttonSectionCSS } from 'app/mining/form/styles'\n\nexport const cycleButtonSectionCSS = ({ theme }) => ({\n background: theme.white,\n ...buttonSectionCSS({ theme }),\n})\n\nexport const scrollSectionCSS = () => ({\n flex: '1',\n maxHeight: '482px',\n overflow: 'auto',\n width: '610px',\n})\n\nexport const filterWrapCSS = ({ theme }) => ({ marginLeft: `-${theme['default-spacer-md']}` })\n","import React, { Fragment, memo } from 'react'\n\nimport { Heading } from '@fortressiq/fiq-ds'\n\nimport api from 'lib/Api'\nimport MainLoader from 'components/loaders/MainLoader'\n\nimport css from './styles.scss'\n\nimport EventStats from './sections/EventStats'\nimport CalendarStats from './sections/CalendarStats'\n\nimport { HeaderDispatchContext } from '../header/HeaderContext'\n\nclass Dashboard extends React.Component {\n static contextType = HeaderDispatchContext\n\n constructor(props) {\n super(props)\n\n this.state = {\n fetching: true,\n legend: {},\n eventStats: {},\n }\n }\n\n async componentDidMount() {\n const { data } = await api.get('/dashboard')\n\n const { calendar: pCalendar, observers, processes } = data\n\n const legend = processes.by_states\n .map(item => item.state_name)\n .filter(item => item !== 'Installation' && item !== 'Approval')\n\n const eventStats = {\n 'Active in Last 3 Days': observers.recent.toLocaleString(),\n 'Events in Last 7 Days': observers.recent_logs.toLocaleString(),\n 'Total Observers': observers.total.toLocaleString(),\n 'Total Logs': observers.total_logs.toLocaleString(),\n }\n\n const calendar = pCalendar.sort((a, b) => {\n const startA = new Date(a.start_at)\n const startB = new Date(b.start_at)\n return startA - startB\n })\n\n const events = observers.event_counts.map(event => {\n return { ...event, day: event.day }\n })\n\n this.setState({\n fetching: false,\n eventStats: eventStats,\n legend: legend,\n events: events,\n calendar: calendar,\n latestRuns: observers.last_runs,\n })\n\n this.context({\n type: 'set',\n heading: (\n \n \n Dashboard\n \n \n What's new in your account.\n \n \n ),\n title: 'Dashboard',\n })\n }\n\n componentWillUnmount() {\n this.context({\n type: 'clear',\n })\n }\n\n render() {\n const { fetching, legend, calendar, eventStats, events, latestRuns } = this.state\n\n return (\n
\n
\n {fetching ? (\n \n ) : (\n
\n \n\n \n
\n )}\n
\n
\n )\n }\n}\n\nexport default memo(Dashboard)\n","import React from 'react'\n\nimport localizer from 'lib/Localizer'\n\nimport DashCard from './DashCard'\n\nimport css from './calendarCardStyle.scss'\nimport main from '../styles.scss'\n\nconst CalendarCard = ({ title, onClose, data }) => {\n const today = new Date()\n return (\n \n

Current and Upcoming Events

\n
\n {!data || (data.length === 0 &&
Currently no data
)}\n {data.map((item, i) => {\n const start = new Date(item.start_at)\n const end = new Date(item.end_at)\n return (\n
\n
\n {item.title}\n - {item.type}\n
\n
\n {localizer.asShortDateTime(item.start_at)} - {localizer.asShortDateTime(item.end_at)}\n
\n {today >= start && today <= end &&
occuring now
}\n
\n )\n })}\n
\n
\n )\n}\n\nexport default CalendarCard\n","import React from 'react'\nimport { Card } from '@fortressiq/fiq-ds'\nimport css from './dashCardStyle.scss'\n\n/*************************************************\n * a Card component for Dashboard\n * meant to be a card styled specifically for the dashboard\n * (without semantic UI's styling)\n **************************************************/\nconst DashCard = ({ title, children, style, onClose }) => (\n \n {onClose && (\n
\n {/* TO DO -- use a design System when there is one available that looks correct */}\n ×\n
\n )}\n
{title}
\n
{children}
\n
\n)\n\nexport default DashCard\n","import React from 'react'\nimport DashCard from './DashCard'\n\nimport main from '../styles.scss'\n\nimport css from './eventStatsCardStyle.scss'\n\nconst EventStatsCard = ({ onClose, eventStats }) => (\n \n {Object.keys(eventStats).map((item, i) => {\n return (\n \n
{item.toUpperCase()}
\n
{eventStats[item] || 0}
\n
\n )\n })}\n {!eventStats &&
No Event Details
}\n\n \n
\n \n)\n\nexport default EventStatsCard\n","import React from 'react'\n\nimport { Card } from '@fortressiq/fiq-ds'\nimport css from './metricContainerStyle.scss'\n\nconst MetricContainer = ({ onClose, children }) => (\n \n {onClose && (\n
\n ×\n
\n )}\n {children}\n
\n)\n\nexport default MetricContainer\n","import React from 'react'\nimport DashCard from './DashCard'\n\nimport css from './topListingsCardStyle.scss'\n\nconst TopTagsCard = ({ title, onClose, list }) => (\n \n {list.map((item, i) => {\n return (\n
\n
{item.count}
\n
{item.name}
\n
\n )\n })}\n
\n)\n\nexport default TopTagsCard\n","//dashboardStore.js\nimport { observable, action } from 'mobx'\n\n//for now we will have a list of available visualization here\n//hard coded\nconst SPENDING_ALL = { fte: true, dollars: true, processFTE: true, processDollars: true, topApps: true }\nconst EVENTS_ALL = { upcoming: true, observed: true, latestRuns: true }\nconst CALENDAR_ALL = { calendar: true }\n\nclass DashboardStore {\n @observable engageVis\n\n @observable spendingVis\n\n @observable eventsVis\n\n @observable calendarVis\n\n constructor() {\n this.spendingVis = SPENDING_ALL\n this.eventsVis = EVENTS_ALL\n this.calendarVis = CALENDAR_ALL\n }\n\n @action\n addVis(name, type) {\n this[`${type.toLowerCase()}Vis`][name] = true\n }\n\n @action\n removeVis(name, type) {\n this[`${type.toLowerCase()}Vis`][name] = false\n }\n}\n\nexport default new DashboardStore()\n","import React from 'react'\nimport { combineRules, Alert, Icon, theme, Tooltip, useFela, useModal } from '@fortressiq/fiq-ds'\n\nimport DashboardStore from '../dashboardStore'\n\nconst AddVisCard = ({ type }) => {\n const { addModal, removeModal } = useModal()\n const modalID = 'dashboard-add-vis-modal'\n const { css } = useFela()\n\n const list = Object.keys(DashboardStore[`${type.toLowerCase()}Vis`])\n .map(item => {\n return DashboardStore[`${type.toLowerCase()}Vis`][item] === true ? null : item\n })\n .filter(item => item !== null)\n\n const rowCSS = ({ ...extraCSS }) =>\n css(\n combineRules(\n { ...extraCSS },\n {\n alignItems: 'center',\n display: 'flex',\n flex: '1',\n justifyContent: 'space-between',\n transition: 'background-color 0.3s ease-in-out',\n willChange: 'background-color',\n }\n )\n )\n\n const addModalHandler = () =>\n addModal({\n children: (\n
\n {!list || list.length === 0 ? (\n \n ) : (\n list.map((item, index) => (\n \n {\n DashboardStore.addVis(item, type)\n\n removeModal(modalID)\n }}\n >\n \n {item}\n \n
\n \n ))\n )}\n
\n ),\n header: 'Add Visualization',\n id: modalID,\n style: { width: '400px' },\n })\n\n return (\n \n )\n}\n\nexport default AddVisCard\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\nimport DashRow from './DashRow'\nimport CalendarCard from '../cards/CalendarCard'\n\n@observer\nclass CalendarStats extends React.Component {\n render() {\n const { openModal, calendar } = this.props\n\n return (\n \n \n \n )\n }\n}\n\nexport default CalendarStats\n","import React, { Fragment } from 'react'\nimport { observer } from 'mobx-react'\nimport PropTypes from 'prop-types'\n\nimport { Element, IconToggleArrow, theme, Typography } from '@fortressiq/fiq-ds'\n\nimport AddVisCard from './AddVisCard'\n\nconst { Title } = Typography\n\n@observer\nclass DashRow extends React.Component {\n static propTypes = {\n title: PropTypes.string.isRequired,\n }\n\n constructor(props) {\n super(props)\n this.state = {\n opened: true,\n }\n }\n\n render() {\n const { opened } = this.state\n const { children, title, type } = this.props\n return (\n \n \n \n {title}\n \n \n this.setState({ opened: !opened })}\n style={{ position: 'relative', top: theme['default-spacer-xs'] }}\n />\n \n {opened && (\n \n {children}\n \n )}\n \n )\n }\n}\n\nexport default DashRow\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\nimport localizer from 'lib/Localizer'\n\nimport DashRow from './DashRow'\nimport EventStatsCard from '../cards/EventStatsCard'\nimport MetricContainer from '../cards/MetricContainer'\nimport {\n Charts,\n defaultChartConfigProps,\n defaultDataSourceChartProps,\n FusionCharts,\n FusionTheme,\n PowerCharts,\n ReactFC,\n} from '../../../components/viz/index'\n\nimport css from '../styles.scss'\n\nimport DashboardStore from '../dashboardStore'\n\nReactFC.fcRoot(FusionCharts, PowerCharts, Charts, FusionTheme)\n@observer\nclass EventStats extends React.Component {\n render() {\n const { openModal, eventStats, events, latestRuns } = this.props\n\n const recentEventsData = events.map(({ day, total }) => ({ label: day, value: total }))\n const recentEventsDataSource = {\n chart: {\n ...defaultDataSourceChartProps,\n caption: 'Event Activity',\n subCaption: 'Last 7 days',\n },\n data: recentEventsData,\n }\n const chartConfigProps = {\n ...defaultChartConfigProps,\n id: 'dashboard-observers-event-activity',\n type: 'area2d',\n }\n\n return (\n \n {DashboardStore.eventsVis.upcoming && (\n DashboardStore.removeVis('upcoming', 'events')} />\n )}\n\n {DashboardStore.eventsVis.observed && (\n DashboardStore.removeVis('observed', 'events')}>\n \n \n )}\n\n {DashboardStore.eventsVis.latestRuns && (\n DashboardStore.removeVis('latestRuns', 'events')}>\n

Latest Runs

\n\n
\n
ID
\n
DATE
\n
STATUS
\n
# OF PROCESSES
\n
\n\n {latestRuns.map((item, i) => {\n return (\n
\n
{item[0]}
\n
{localizer.asDateTime(item[1])}
\n
{item[2]}
\n
{item[3]}
\n
\n )\n })}\n
\n )}\n
\n )\n }\n}\n\nexport default EventStats\n","import React, { useEffect, Fragment, useState } from 'react'\nimport { ReactFlowProvider } from 'reactflow'\nimport { useHeaderDispatch } from 'app/header/HeaderContext'\nimport { Element, Empty, Typography, Heading } from '@fortressiq/fiq-ds'\nimport { useQuery } from '@tanstack/react-query'\n\nimport Graph from './Graph'\nimport ProcessSelect from './ProcessSelect'\nimport cacheSettings from './cacheSettings'\n\nimport { getAllProcesses, getPaths } from './api'\n\nimport ExportProcess from './controls/ExportProcess'\n\nimport dfgColors from './dfgColors'\n\nconst DfGraph = ({ processId }) => {\n const headerDispatch = useHeaderDispatch()\n const [activePaths, setActivePaths] = useState([])\n const [highlightedPaths, setHighlightedPaths] = useState([])\n const [selectedStep, setSelectedStep] = useState(null)\n const [pathName, setPathName] = useState('')\n\n const { data: allProcesses, isLoading: isLoadingAllProcesses } = useQuery({\n queryKey: ['flowgraph-processes'],\n queryFn: getAllProcesses,\n keepPreviousData: true,\n })\n\n const {\n isLoading: isLoadingPaths,\n data: pathsData,\n isError,\n } = useQuery({\n queryKey: ['flow-graph', { processId }],\n enabled: !!processId,\n queryFn: getPaths,\n ...cacheSettings,\n })\n\n useEffect(() => {\n // will be triggered when loading new graph and if user deselect all active paths\n if (!isLoadingPaths && !isError && pathsData?.length !== 0 && activePaths.length === 0) {\n setActivePaths([{ pathId: pathsData[0].path_id, pathUuid: pathsData[0].path_uuid }])\n }\n }, [pathsData, isLoadingPaths, isError, activePaths.length])\n\n useEffect(() => {\n if (!isLoadingAllProcesses && allProcesses?.length !== 0) {\n setPathName(allProcesses.find(process => process.value.toString() === processId)?.label)\n }\n }, [allProcesses, processId, isLoadingAllProcesses])\n\n useEffect(() => {\n headerDispatch({\n type: 'set',\n title: 'Flow Graph',\n heading: (\n \n ({ marginRight: `${theme['default-spacer-sm']} !important` })}\n >\n Explore a Process\n \n \n \n ),\n toolbarActions:\n processId && !isError ? : null,\n })\n\n return () => {\n headerDispatch({\n type: 'clear',\n })\n }\n }, [headerDispatch, allProcesses, isLoadingAllProcesses, processId, pathName, isError])\n\n const containerStyles = {\n background: dfgColors.backgroundGray,\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }\n\n if (!processId)\n return (\n \n No Process selected} showImage={true} />\n \n )\n\n if (isError) {\n return (\n \n Flow Graph with ID {processId} not found} />\n \n )\n }\n return (\n \n \n \n )\n}\n\n// Reset state when processId is changed by updating key\nconst DfGraphWrapper = ({\n match: {\n params: { processId },\n },\n}) => \n\nexport default DfGraphWrapper\n","import React, { Fragment, useEffect, useMemo, useCallback } from 'react'\nimport intersection from 'lodash/intersection'\n\nimport ReactFlow, { MiniMap, Controls, useReactFlow } from 'reactflow'\n\nimport { useQuery } from '@tanstack/react-query'\nimport { Element } from '@fortressiq/fiq-ds'\n\nimport Marker from './Marker'\n\nimport StartNode from './nodeTypes/StartNode'\nimport EndNode from './nodeTypes/EndNode'\nimport StepNode from './nodeTypes/StepNode'\nimport ElkEdge from './edgeTypes/ElkEdge'\nimport Sidebar from './Sidebar/Sidebar'\nimport cacheSettings from './cacheSettings'\nimport dfgColors from './dfgColors'\nimport { getGraph, getPaths } from './api'\nimport 'reactflow/dist/style.css'\n\nimport { arrowStyles, canvasControls, containerStyles, miniMap, reactFlowStyles } from './styles'\n\nconst transformGraphData = data => {\n const nodes = data.graph.children.map(node => ({\n ...node,\n ariaLabel: `Node ${node.label}`,\n data: { id: node.id, ...node.data },\n type: node.data.type,\n position: { x: node.x, y: node.y },\n }))\n const edges = data.graph.edges.map(edge => ({\n id: edge.id,\n source: edge.sources[0],\n target: edge.targets[0],\n label: `${edge.data.frequency}`,\n type: 'elkEdge',\n data: {\n ...edge.data,\n sections: edge.sections,\n label: edge.edgeLabel,\n },\n }))\n\n return {\n nodes,\n edges,\n stats: data.path_stats,\n }\n}\n\nconst Graph = ({\n processId,\n activePaths,\n setActivePaths,\n highlightedPaths,\n setHighlightedPaths,\n selectedStep,\n setSelectedStep,\n}) => {\n const reactFlowInstance = useReactFlow()\n\n const { isLoading: isLoadingPaths, data: pathsData } = useQuery({\n queryKey: ['flow-graph', { processId }],\n queryFn: getPaths,\n ...cacheSettings,\n })\n\n const { data: graphData } = useQuery({\n queryKey: ['graph', { processId, activePaths: activePaths?.map(path => path.pathId) }],\n queryFn: getGraph,\n // disabled as long as activePaths is empty\n enabled: activePaths.length !== 0,\n keepPreviousData: true,\n ...cacheSettings,\n select: transformGraphData,\n })\n\n useEffect(() => {\n reactFlowInstance.fitView()\n }, [graphData, reactFlowInstance])\n\n const handlePathSelect = (selectValue, pathId, pathUuid) => {\n if (selectValue) {\n setActivePaths(prevProps => [...prevProps, { pathId, pathUuid }])\n } else {\n setActivePaths(prevProps => prevProps.filter(path => path.pathUuid !== pathUuid))\n // if path is highlighted removed remove highlight\n if (highlightedPaths.includes(pathUuid)) {\n setHighlightedPaths(highlightedPaths.filter(path => path !== pathUuid))\n }\n }\n }\n\n const handleSelectStep = useCallback(\n (event, data) => {\n if (selectedStep?.id !== data.id) {\n setSelectedStep(data)\n }\n const newHighlightedPaths = intersection(\n data.pathList,\n activePaths.map(path => path.pathUuid)\n )\n setHighlightedPaths(newHighlightedPaths)\n },\n [activePaths, selectedStep]\n )\n\n const handleHighlightPath = ({ uuid }) => {\n if (!activePaths?.some(path => path.pathUuid === uuid)) return null\n setHighlightedPaths(\n highlightedPaths.includes(uuid) ? highlightedPaths.filter(i => i !== uuid) : [...highlightedPaths, uuid]\n )\n }\n\n const handleHighlightEdge = useCallback(\n (e, data) => {\n const activePathsUuids = activePaths.map(path => path.pathUuid)\n const pathsToHighlight = intersection(activePathsUuids, data.pathList)\n setHighlightedPaths(pathsToHighlight)\n },\n [activePaths]\n )\n\n const nodeTypes = useMemo(\n () => ({\n stepNode: nodeProps =>\n StepNode({\n ...nodeProps,\n selectedStep,\n handleSelectStep,\n highlightedPaths,\n }),\n startNode: nodeProps =>\n StartNode({\n ...nodeProps,\n frequency: graphData?.stats.frequency,\n }),\n endNode: nodeProps =>\n EndNode({\n ...nodeProps,\n frequency: graphData?.stats.frequency,\n }),\n }),\n [selectedStep, highlightedPaths, handleSelectStep, graphData]\n )\n\n const edgeTypes = useMemo(\n () => ({\n elkEdge: edgeProps =>\n ElkEdge({\n ...edgeProps,\n highlightedPaths,\n handleHighlightEdge,\n activePaths,\n edges: graphData?.edges,\n }),\n }),\n [highlightedPaths, handleHighlightEdge, activePaths, graphData]\n )\n\n return (\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n )\n}\n\nexport default Graph\n","import React from 'react'\n\nconst Marker = ({ id, color }) => (\n \n \n \n)\n\nexport default Marker\n","import React from 'react'\nimport { Select, theme } from '@fortressiq/fiq-ds'\nimport { useHistory } from 'react-router-dom'\n\nconst ProcessSelect = ({ allProcesses, isLoadingAllProcesses, processId }) => {\n const history = useHistory()\n const defaultValue = allProcesses?.find(process => process.value.toString() === processId)\n\n const onChange = ({ value }) => {\n history.push(`/flow-graph/${value}`)\n }\n\n const selectProps = {\n onChange: onChange,\n placeholder: 'Select a Process',\n style: {\n width: '60%',\n },\n styles: { menu: { zIndex: theme['z-modal-below'] } },\n }\n\n return \n\n \n
\n )\n}\n\nexport default AnnotationControls\n","import React from 'react'\nimport classNames from 'classnames'\nimport { combineRules, Icon, theme, useFela } from '@fortressiq/fiq-ds'\n\nimport { containerCSS, cellCSS, controlCSS, controlLabelCSS, showCSS } from './styles/index'\nimport AnnotationControls from './AnnotationControls'\n\nconst AnnotationTopBar = ({\n selectedEvent,\n selectNextScreenshot,\n selectPriorScreenshot,\n showAnnotationTools,\n updateSelectedEvent,\n}) => {\n const { css } = useFela({ showAnnotationTools })\n\n const iconClassName = css({\n alignSelf: 'flex-end',\n })\n return (\n
\n
\n \n Prev\n
\n\n {showAnnotationTools && (\n \n )}\n
\n Next\n \n
\n
\n )\n}\n\nexport default AnnotationTopBar\n","export const MAX_NUMBER_CASES = 5000\n\nexport default { MAX_NUMBER_CASES }\n","import React from 'react'\nimport { Typography, Tooltip, theme } from '@fortressiq/fiq-ds'\n\nimport controlTypeOptions from 'lib/controlTypeOptions'\nimport css from './eventDetailBarStyle.scss'\n\nconst { Paragraph } = Typography\n\nconst DetailTooltipTitle = ({ value }) => (\n \n {value}\n \n)\n\nconst Cell = ({ label, value }) => (\n
\n
{label}
\n {value && (\n }>\n
{value}
\n
\n )}\n
\n)\n\nconst EventDetailBar = ({ event, parentWidth }) => {\n const e = event || {}\n const controlType = controlTypeOptions.find(option => option.value === e.controlType)\n const controlTypeLabel = controlType ? controlType.label : ''\n\n return (\n
\n \n \n \n \n \n \n \n \n
\n )\n}\n\nexport default EventDetailBar\n","import React from 'react'\nimport { useHistory } from 'react-router-dom'\n\nimport ExportButton from 'components/ExportButton/ExportButton'\nimport callbackStore from 'stores/callback'\n\nconst ExportDropdown = ({ graphId, name, instanceIndexes, pathId }) => {\n const history = useHistory()\n\n const exportCallback = () => {\n history.push('/event-log-exports')\n }\n\n const options = [\n {\n text: 'Export Table (.csv)',\n exportType: 'graph',\n exportCallback: exportCallback,\n exportArgs: { graphId, instanceIndexes, exportType: 'events', pathId },\n disabled: false,\n },\n {\n text: 'Export Screenshots (.jpeg)',\n exportType: 'graph',\n exportArgs: { graphId, instanceIndexes, exportType: 'images', pathId },\n exportCallback: exportCallback,\n disabled: false,\n },\n ]\n\n return (\n \n )\n}\n\nexport default ExportDropdown\n","import React, { Fragment } from 'react'\nimport keydown from 'react-keydown'\n\nimport debounce from 'lodash/debounce'\n\nimport { observer } from 'mobx-react'\nimport ReactGA from 'react-ga'\n\nimport qs from 'qs'\n\nimport { Button, Element, Heading, Toolbar, SplitPane } from '@fortressiq/fiq-ds'\n\nimport BigGrayCheckbox from 'components/toggles/BigGrayCheckbox'\nimport { FLASH_LEVELS } from 'components/flash/Flash'\nimport VirtualizedTable from 'components/table/VirtualizedTable'\nimport Spinner from 'components/loaders/Spinner'\nimport { isOneOf } from 'components/user/util'\n\nimport api from 'lib/Api'\n\nimport { useUserState } from 'context/UserContext'\n\nimport Can, { roleActionCheck } from 'components/can/Can'\nimport DisabledScreenshot, { isDisabledScreenshot } from 'components/DisabledScreenshot/DisabledScreenshot'\nimport flashHOC from 'components/flash/flashHOC'\nimport UnredactedImageViewerWithOption from 'components/image/UnredactedImageViewerWithOption'\n\nimport AnnotationTopBar from './AnnotationTopBar'\nimport ExportDropdown from './ExportDropdown'\nimport EventFilter from './controls/EventFilter'\nimport PlaybackControls from './controls/PlaybackControls'\nimport EventDetailBar from './EventDetailBar'\nimport ProcessControls from './ProcessControls'\nimport ProcessModal from './ProcessModal'\nimport SignatureDetailsBar from './SignatureDetailsBar'\n\nimport { HeaderDispatchContext } from '../header/HeaderContext'\n\nimport css from './instancesViewerStyle.scss'\nimport InstancesFilter from './controls/InstancesFilter'\nimport MachineFilter from './controls/MachineFilter'\nimport PathFilter from './controls/PathFilter'\nimport AnnotateButton from './controls/AnnotateButton'\n\nimport { observedAtRenderer } from '../events/EventColumns'\n\nimport { APIS, getFlowInstances, getGraphInstances, getFlowPaths, getGraphPaths } from './dataUtils'\n\nconst signatureRenderer = data => {\n const { cellData } = data\n return (\n \n {cellData}\n \n )\n}\n\nconst headerVars = ['graphProcessId', 'fetchingProcesses', 'graphOptions']\nconst toolbarVars = ['graphOptions', 'machines', 'paths', 'instances', 'instanceIndex', 'playing', 'events']\n\n@observer\nclass InstancesViewer extends React.Component {\n static contextType = HeaderDispatchContext\n\n constructor(props) {\n super(props)\n this.debouncedGetEvents = null\n this.leftColRef = React.createRef()\n this.screenRef = React.createRef()\n\n const {\n location: { search },\n roles,\n } = this.props\n\n const params = qs.parse(search, { ignoreQueryPrefix: true })\n const { graphType } = params\n\n this.state = {\n events: [],\n selectedEventIndex: 0,\n showProcessModal: false,\n processInstances: [],\n selectedInstanceOption: null,\n eventsInProcess: {},\n fetchingTable: false,\n eventsSelectedCount: 0,\n showAnnotationTools: false,\n rightColSize: '100%',\n screenHeight: '100%',\n playing: false,\n instances: [],\n instanceIndex: null,\n fetchingProcesses: false,\n machines: [],\n graphOptions: [],\n paths: [],\n allInstances: [],\n graphType: graphType || 'path',\n }\n\n this.columns = [\n { width: 40, visible: true, dataKey: 'sequence', header: 'Order' },\n { width: 80, visible: true, dataKey: 'title', header: 'Title' },\n { width: 100, visible: true, dataKey: 'application', header: 'App' },\n { width: 80, visible: true, dataKey: 'action', header: 'Action' },\n isOneOf(roles, ['admin', 'superuser']) && {\n width: 100,\n visible: true,\n dataKey: 'value',\n header: 'Value',\n },\n { width: 80, visible: false, dataKey: 'machine', header: 'Machine' },\n { width: 100, visible: false, dataKey: 'observedAt', header: 'Observed At', cellRenderer: observedAtRenderer },\n {\n width: 320,\n visible: true,\n dataKey: 'observer',\n header: 'Observer Name',\n },\n { width: 40, visible: true, dataKey: 'annotationType', header: 'Ann' },\n { width: 100, visible: false, dataKey: 'screen', header: 'Screen' },\n { width: 130, visible: true, dataKey: 'field', header: 'Field' },\n {\n width: 320,\n visible: false,\n dataKey: 'signature',\n header: 'Signature',\n cellRenderer: signatureRenderer,\n },\n {\n width: 320,\n visible: false,\n dataKey: 'screenSignature',\n header: 'Screen Signature',\n cellRenderer: signatureRenderer,\n },\n {\n width: 50,\n dataKey: 'eventsInProcess',\n visible: false,\n cellRenderer: this.cellRenderer,\n menuName: 'Include in Process',\n columnType: VirtualizedTable.columnType.action,\n headerRenderer: header => this.eventsInProcessHeader(header),\n },\n ].filter(Boolean)\n }\n\n componentDidMount() {\n const {\n match: {\n params: { id: graphProcessId },\n },\n location: { search },\n roles,\n } = this.props\n\n const params = qs.parse(search, { ignoreQueryPrefix: true })\n const { instanceId, graphType } = params\n\n this.setState({ graphType: graphType })\n this.setHeaderContext()\n this.setToolbarContext()\n\n // don't fetch if user doesn't have permission\n if (roleActionCheck('/instances-viewer:navigate-all-instances', roles)) this.fetchProcesses()\n\n if (graphProcessId) {\n this.fetchInstances(instanceId, true)\n this.fetchPaths()\n }\n window.addEventListener('resize', this.setScreenshotDimensions)\n this.setScreenshotDimensions()\n }\n\n componentDidUpdate(prevProps, prevState) {\n const {\n match: {\n params: { id: graphProcessId },\n },\n location: { search },\n } = this.props\n\n const params = qs.parse(search, { ignoreQueryPrefix: true })\n const oldParams = qs.parse(prevProps.location.search, {\n ignoreQueryPrefix: true,\n })\n const { pathId, instanceId, graphType } = params\n\n if (prevState.graphType !== graphType && graphType) {\n this.setState({\n graphType: graphType,\n })\n }\n\n if (graphProcessId !== prevProps.match.params.id) {\n this.fetchInstances(instanceId, true)\n this.fetchPaths()\n } else if (pathId !== oldParams.pathId) {\n this.fetchInstances(instanceId, false)\n }\n\n const shouldUpdateHeader = headerVars.some(key => {\n const { [key]: val } = this.state\n return val !== prevState[key]\n })\n if (shouldUpdateHeader) {\n this.setHeaderContext()\n }\n\n const shouldUpdateToolbar = toolbarVars.some(key => {\n const { [key]: val } = this.state\n return val !== prevState[key]\n })\n if (shouldUpdateToolbar) {\n this.setToolbarContext()\n }\n }\n\n componentWillUnmount() {\n this.context({\n type: 'clear',\n })\n window.removeEventListener('resize', this.setScreenshotDimensions)\n }\n\n render() {\n const {\n events,\n selectedEventIndex,\n selectedEvent,\n showProcessModal,\n processInstances,\n fetchingTable,\n showAnnotationTools,\n rightColSize,\n screenHeight,\n } = this.state\n const splitPaneStyle = { position: 'static' }\n const images = selectedEvent\n ? [\n {\n centered: true,\n float: 'none',\n fluid: true,\n height: screenHeight,\n src: selectedEvent.screenshotUrl,\n svgInfo: {\n box: selectedEvent.bounding_box || selectedEvent.boundingBox,\n x: selectedEvent.coordX || selectedEvent.coord_x,\n y: selectedEvent.coordY || selectedEvent.coord_y,\n },\n },\n ]\n : null\n\n const screenshot = isDisabledScreenshot(selectedEvent) ? (\n \n ) : (\n \n )\n\n return (\n
\n \n
\n {fetchingTable && (\n
\n \n
\n )}\n this.updateSelectedEventIndex(e.index)}\n selectedEventIndex={selectedEventIndex}\n columns={this.columns}\n tableContainerClassName={css.eventTable}\n />\n {\n ReactGA.event({\n category: 'Instances Viewer',\n action: 'View Process Details',\n })\n this.setState({ showProcessModal: !showProcessModal })\n }}\n modalContent={\n \n }\n />\n
\n\n
\n
\n \n
\n
\n {events.length === 0 ? (\n No events found, select a Process…\n ) : (\n
{selectedEvent && screenshot}
\n )}\n
\n \n \n
\n
\n
\n )\n }\n\n onInstanceChange = async (newInstance, newInstances) => {\n let { instances } = this.state\n const { graphType } = this.state\n if (newInstances) {\n instances = newInstances\n }\n const instance = instances.find(i => i.index === newInstance)\n if (!instance) return\n\n const { data } = await api.post('/events/details', {\n event_ids: instance.eventIds,\n })\n\n const {\n match: {\n params: { id: graphProcessId },\n },\n history,\n } = this.props\n\n const { pathId } = this.state\n let search = '?'\n if (pathId) {\n search = `${search}pathId=${pathId}&`\n }\n search = `${search}instanceId=${instance.hash}&graphType=${graphType}`\n history.push({\n pathname: `/instances-viewer/${graphProcessId}`,\n search,\n })\n this.setState({ instanceIndex: newInstance })\n this.eventListChange(data.events, { value: newInstance.sequence })\n }\n\n toggleMachine = machine => {\n const { machines, allInstances } = this.state\n const newMachines = machines.map(m => {\n if (machine.name === m.name) {\n return {\n ...m,\n selected: !m.selected,\n }\n }\n return m\n })\n\n this.setState({ machines: newMachines })\n this.setDisplayInstances(allInstances, newMachines)\n }\n\n togglePath = pathInfo => {\n const {\n match: {\n params: { id: graphProcessId },\n },\n history,\n } = this.props\n\n const { pathId, graphType } = this.state\n\n let search = `?pathId=${pathInfo.id}&graphType=${graphType}`\n if (pathInfo.id === +pathId) {\n search = `?graphType=${graphType}`\n }\n\n history.push({\n pathname: `/instances-viewer/${graphProcessId}`,\n search,\n })\n }\n\n fetchProcesses = async () => {\n this.setState({ fetchingProcesses: true })\n const { data } = await api.get('/graph_processes/filters')\n this.setState({ fetchingProcesses: false, graphOptions: data, graphType: data.type })\n }\n\n fetchInstances = async (instanceId, updateMachines = true) => {\n const { machines, graphType } = this.state\n const {\n match: {\n params: { id: graphProcessId },\n },\n location: { search },\n } = this.props\n\n const params = qs.parse(search, { ignoreQueryPrefix: true })\n const { pathId } = params\n\n if (!graphProcessId) return\n this.setState({ fetchingTable: true, pathId })\n\n const args = {\n graphProcessId,\n pathId,\n limit: 3000,\n }\n\n const { data } = await api.get(APIS[graphType].instances(graphProcessId), args)\n\n const { machineNames, newInstances } = graphType === 'flowgraph' ? getFlowInstances(data) : getGraphInstances(data)\n\n const machinesArray = Array.from(machineNames).map(machineName => ({\n name: machineName,\n selected: updateMachines ? true : machines.find(machine => machine.name === machineName)?.selected,\n }))\n\n this.setState({\n allInstances: newInstances,\n instances: newInstances,\n fetchingTable: false,\n machines: machinesArray,\n })\n if (updateMachines) {\n this.setInstance(newInstances, instanceId)\n } else {\n this.setDisplayInstances(newInstances, machinesArray, instanceId)\n }\n }\n\n setInstance = (instances, sInstance) => {\n if (sInstance) {\n const id = parseInt(sInstance, 10)\n const index = instances.findIndex(instance => instance.hash === id && !instance.disabled)\n if (index !== -1) {\n this.onInstanceChange(index, instances)\n return\n }\n }\n const firstInstanceIndex = instances.findIndex(instance => !instance.disabled)\n if (firstInstanceIndex !== -1) {\n this.onInstanceChange(firstInstanceIndex, instances)\n } else {\n // no enabled instances, so reset state to blanks\n this.setState({\n events: [],\n eventsSelectedCount: 0,\n selectedEventIndex: 0,\n selectedInstanceOption: null,\n eventsInProcess: {},\n })\n }\n }\n\n setDisplayInstances = (allInstances, newMachines, instanceId) => {\n let { machines } = this.state\n if (newMachines) {\n machines = newMachines\n }\n // cross reference with machines\n const selectedMachines = machines.reduce((acc, machine) => {\n if (machine.selected) {\n acc.push(machine.name)\n }\n return acc\n }, [])\n const instances = allInstances.filter(instance => selectedMachines.includes(instance.observer))\n this.setState({ instances })\n\n this.setInstance(instances, instanceId)\n }\n\n fetchPaths = async () => {\n const { graphType } = this.state\n const {\n match: {\n params: { id: graphProcessId },\n },\n } = this.props\n\n const { data } = await api.get(APIS[graphType].paths(graphProcessId))\n const pathsData = graphType === 'flowgraph' ? getFlowPaths(data) : getGraphPaths(data)\n this.setState({\n paths: pathsData,\n })\n }\n\n setHeaderContext = () => {\n const { fetchingProcesses, graphOptions } = this.state\n const {\n match: {\n params: { id: graphProcessId },\n },\n } = this.props\n\n this.context({\n type: 'set',\n title: 'View Instances',\n heading: (\n \n \n View Instances\n \n \n this.setState({ graphType: currentGraphType })}\n />\n \n \n ),\n })\n }\n\n setToolbarContext = () => {\n const { paths, machines, playing, events, instances, instanceIndex, graphOptions, pathId, graphType } = this.state\n const {\n match: {\n params: { id: graphProcessId },\n },\n } = this.props\n\n const graphProcess = graphOptions.find(({ value }) => value === +graphProcessId)\n const hasInstances = !!instances.length\n\n this.context({\n type: 'set',\n toolbar: (\n .fiqds-row': { flexFlow: 'nowrap' } }}>\n \n \n \n \n \n \n this.setState({ playing: isPlaying }, this.playNext)}\n playing={playing}\n eventCount={events.length}\n />\n \n ),\n toolbarActions: !!(graphProcess && hasInstances && graphType !== 'flowgraph') && (\n \n ),\n title: 'View Instances',\n })\n }\n\n setGraphProcessId = graphProcessId => {\n const { history } = this.props\n history.push({\n pathname: `/instances-viewer/${graphProcessId}`,\n })\n }\n\n setScreenshotDimensions = debounce(() => {\n this.setRightPanelSize()\n this.setScreenHeight()\n }, 50)\n\n setRightPanelSize = () => {\n // uses the left column because react-split-pane resizes the left column\n // and lets the browser render the right\n const leftWidth = this.leftColRef.current.getBoundingClientRect().width\n const marginAndSlidingVBar = 64 + 8\n const rightWidth = `100vw - ${marginAndSlidingVBar}px - ${leftWidth}px`\n this.setState({ rightColSize: rightWidth })\n }\n\n setScreenHeight = () => {\n const { height } = this.screenRef.current.getBoundingClientRect()\n this.setState({ screenHeight: `${height}px` })\n }\n\n toggleAnnotationTools = (evt, toggled) => {\n this.setState({ showAnnotationTools: toggled })\n }\n\n toggleIncludeInProcess = (e, selected, rowData) => {\n const { eventsInProcess } = this.state\n eventsInProcess[rowData.rowData.id] = !selected\n\n const newCount = Object.values(eventsInProcess).reduce((acc, cur) => acc + Number(cur), 0)\n\n this.setState({\n eventsSelectedCount: newCount,\n })\n }\n\n toggleIncludeAllEvents = () => {\n const { eventsSelectedCount, eventsInProcess, events } = this.state\n const tempEventsInProcess = { ...eventsInProcess }\n let newCount = events.length\n\n if (eventsSelectedCount === events.length) {\n Object.keys(eventsInProcess).forEach(event => {\n tempEventsInProcess[event] = false\n })\n newCount = 0\n } else {\n events.forEach(event => {\n tempEventsInProcess[event.id] = true\n })\n }\n\n this.setState({\n eventsSelectedCount: newCount,\n eventsInProcess: tempEventsInProcess,\n })\n }\n\n cellRenderer = rowData => {\n const { eventsInProcess } = this.state\n return (\n \n )\n }\n\n eventsInProcessHeader = () => {\n const { eventsSelectedCount, events } = this.state\n\n return (\n
\n \n
\n )\n }\n\n removeInstance = instance => {\n const { processInstances } = this.state\n this.setState({\n processInstances: processInstances.filter(i => i.sequence !== instance.sequence),\n })\n }\n\n eventListChange = (events, selectedInstanceOption) => {\n const eventsInProcess = {}\n events.forEach(event => {\n eventsInProcess[event.id] = true\n })\n\n this.setState({\n events: events,\n eventsSelectedCount: events.length,\n selectedEventIndex: 0,\n selectedInstanceOption: selectedInstanceOption,\n eventsInProcess: eventsInProcess,\n })\n\n //setState is an async action and\n //will not nessearily update prior to the async getSelectedEventDetails\n const currentSelectedEvent = events[0]\n this.getSelectedEventDetails(currentSelectedEvent)\n }\n\n playNext = () => {\n const { playing, selectedEventIndex, events } = this.state\n const eventCount = events.length\n\n if (playing) {\n if (selectedEventIndex === eventCount - 1) {\n this.setState({ playing: false })\n } else {\n setTimeout(() => this.selectNextScreenshot(), 800)\n }\n }\n }\n\n selectNextScreenshot = () => {\n const { selectedEventIndex, events } = this.state\n this.updateSelectedEventIndex((selectedEventIndex + 1) % events.length, true)\n }\n\n selectPriorScreenshot = () => {\n const { selectedEventIndex, events } = this.state\n if (selectedEventIndex === 0) {\n this.updateSelectedEventIndex(events.length - 1, true)\n } else {\n this.updateSelectedEventIndex(selectedEventIndex - 1, true)\n }\n }\n\n /* eslint-disable react/no-unused-class-component-methods */\n @keydown('RIGHT')\n // eslint-disable-next-line react/no-unused-class-component-methods\n initR() {\n this.selectNextScreenshot()\n }\n\n @keydown('LEFT')\n // eslint-disable-next-line react/no-unused-class-component-methods\n initL() {\n this.selectPriorScreenshot()\n }\n /* eslint-enable react/no-unused-class-component-methods */\n\n updateSelectedEventIndex = (index, delay = false) => {\n const { events } = this.state\n\n const newSelectedEventIndex = Math.max(Math.min(index, events.length), 0)\n this.setState(\n {\n selectedEventIndex: newSelectedEventIndex,\n },\n () => this.getSelectedEventDetails(events[newSelectedEventIndex], delay)\n )\n }\n\n getSelectedEventDetails = (currentSelectedEvent, delay = false) => {\n if (!currentSelectedEvent) return\n if (this.debouncedGetEvents) this.debouncedGetEvents.cancel()\n\n //clear event information to provide feedback for users that something is changing\n this.setState({\n selectedEvent: null,\n })\n const getEvents = async () => {\n const { data } = await api.get(`/event_logs/${currentSelectedEvent.id}`)\n this.setState({\n selectedEvent: { ...currentSelectedEvent, ...data.event },\n })\n }\n if (delay) {\n this.debouncedGetEvents = debounce(getEvents, 200)\n this.debouncedGetEvents()\n } else {\n getEvents()\n }\n }\n\n getEventsInInstanceData = () => {\n const { events, eventsInProcess } = this.state\n\n const eventsInInstance = []\n events.forEach(event => {\n if (eventsInProcess[event.id]) eventsInInstance.push(event)\n })\n\n return eventsInInstance\n }\n\n addInstance = () => {\n const { events, selectedInstanceOption, processInstances } = this.state\n if (events.length === 0) return\n\n const eventsInInstance = this.getEventsInInstanceData()\n\n const filteredProcessInstances = processInstances.filter(obj => {\n return obj.sequence !== selectedInstanceOption.value\n })\n\n const newInstance = {\n events: eventsInInstance,\n sequence: selectedInstanceOption.value,\n label: selectedInstanceOption.label,\n }\n const newProcessInstances = [...filteredProcessInstances, newInstance].sort((a, b) =>\n a.sequence > b.sequence ? 1 : -1\n )\n\n this.setState({\n processInstances: newProcessInstances,\n })\n\n ReactGA.event({\n category: 'Instancs Viewer',\n action: 'Save Instance to Process',\n value: selectedInstanceOption.label,\n })\n }\n\n instanceIsAnnotated = () => {\n const { events, eventsInProcess } = this.state\n if (events.length === 0) return false\n const selectedEvents = events.filter(event => eventsInProcess[event.id])\n return !!selectedEvents.length && selectedEvents.every(event => event.field)\n }\n\n saveProcess = async name => {\n const { addNotification } = this.props\n const { processInstances } = this.state\n const params = {\n name: name,\n pathEvents: processInstances.map(i =>\n i.events.map(({ id, controlType, field }) => ({\n id,\n control_type: controlType,\n field,\n }))\n ),\n }\n const { data } = await api.post('/graph_processes', params)\n this.setState({ showProcessModal: false })\n\n ReactGA.event({\n category: 'Instances Viewer',\n action: 'Save Process',\n value: name,\n })\n\n addNotification({\n cta: (\n \n ),\n description: 'Process saved successfully.',\n type: FLASH_LEVELS.INFO,\n })\n }\n\n clearInstances = () => {\n this.setState({ processInstances: [] })\n }\n\n updateSelectedEvent = event => {\n const { events } = this.state\n\n //this state of selectedEvent can change in the middle of processes the change, we need to explicitly\n //change the state for the event sent\n const eventToChangeIndex = events.findIndex(ev => ev.id === event.id)\n if (eventToChangeIndex === -1) return\n const newEventData = { ...events[eventToChangeIndex], ...event }\n events[eventToChangeIndex] = newEventData\n this.setState({\n selectedEvent: newEventData,\n })\n }\n}\n\nexport { InstancesViewer }\n\n// temporary container to get roles from user context, since these class components can't get more than one context\n// at the moment\nexport default flashHOC(props => {\n const { roles } = useUserState()\n return \n})\n","import React from 'react'\nimport { Button, Element, theme, useModal } from '@fortressiq/fiq-ds'\n\nconst SaveBtn = ({ addInstanceEnabled, addInstanceClick }) => (\n \n)\n\nconst ProcessControls = ({ modalContent, addInstanceEnabled, addInstanceClick, instances }) => {\n const { addModal } = useModal()\n\n return (\n \n {instances.length > 0 && (\n \n addModal({\n children: modalContent,\n footer: false,\n header: 'Save Instance to Process',\n id: 'instances-viewer-process-details-modal',\n style: { minWidth: '400px', width: '55%' },\n })\n }\n style={{ marginRight: theme['default-spacer-sm'] }}\n >\n View Process Details\n \n )}\n \n \n )\n}\n\nexport default ProcessControls\n","import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, Element, Icon, Input, Label, theme } from '@fortressiq/fiq-ds'\n\nimport useInputValidation from './validationHooks'\n\nconst ProcessModal = ({ instances, saveProcess, removeInstance }) => {\n /* Validator configuration */\n const validateInputName = useInputValidation(true)\n /* Currently: errorMsg for on real time validation (flag false), errorMessageSubmit when submitting */\n const { inputValue, onChangeInputValue, inputIsValid, errorMessageSubmit } = validateInputName\n const validationError = errorMessageSubmit\n\n let instancesList = null\n let disableSaveButton = true\n const instanceDefErr = 'Please, add an Instance to process!'\n\n const onSubmitHandler = e => {\n e.preventDefault()\n\n validateInputName.onSubmitForm()\n\n if (inputIsValid && instances.length) saveProcess(inputValue)\n }\n\n const validationErrorCSS = {\n color: theme['error-color'],\n fontWeight: 'bold',\n }\n\n if (instances.length) {\n instancesList = instances.map((instance, i) => {\n const { events, label } = instance\n\n return (\n \n {!!label && {label}}\n \n {events.length} Events  \n removeInstance(instance)} size='nested' />\n \n \n )\n })\n\n // To replace when we have a global validation\n // We set the bool for enabling/disabling save btn\n if (inputIsValid) disableSaveButton = false\n } else {\n instancesList = {instanceDefErr}\n }\n\n return (\n \n

\n \n

\n {validationError}\n \n \n {instancesList}\n \n \n \n \n
\n )\n}\n\nProcessModal.propTypes = {\n // eslint-disable-next-line react/forbid-prop-types\n instances: PropTypes.arrayOf(PropTypes.object).isRequired,\n removeInstance: PropTypes.func.isRequired,\n saveProcess: PropTypes.func.isRequired,\n}\n\nexport default ProcessModal\n","import React, { Fragment } from 'react'\nimport { chroma, CopyToClipboardButton, Element, theme, Typography } from '@fortressiq/fiq-ds'\nimport { shape, string } from 'prop-types'\n\nimport { ellipsisCSS } from 'styles/utils'\n\nconst { Text } = Typography\n\nconst SignatureToClipboard = ({ icon, title, signature = 'alongishstringtogohere' }) => {\n const background = theme['darker-bg']\n\n return (\n \n {icon}\n \n {title}\n \n {!!signature && (\n \n \n {signature}\n \n \n \n )}\n \n )\n}\n\nSignatureToClipboard.defaultProps = {\n icon: '',\n title: '',\n signature: '',\n}\n\nSignatureToClipboard.propTypes = {\n icon: shape({}),\n title: string,\n signature: string,\n}\n\nexport default SignatureToClipboard\n","import React from 'react'\nimport { Icon } from '@fortressiq/fiq-ds'\n\nimport Signature from './Signature'\nimport css from './signatureDetailsBarStyle.scss'\n\nconst SignatureDetailsBar = ({ event, parentWidth }) => {\n const { signature, screenSignature } = event || {}\n return (\n
\n }\n signature={signature}\n />\n }\n signature={screenSignature}\n />\n
\n )\n}\n\nexport default SignatureDetailsBar\n","import React from 'react'\nimport { Button } from '@fortressiq/fiq-ds'\n\nconst AnnotateButton = ({ onToggleAnnotationTools: toggleAnnotationTools }) => (\n
\n
\n \n
\n
\n)\n\nexport default AnnotateButton\n","import React, { memo, useCallback, useState } from 'react'\nimport { Select } from '@fortressiq/fiq-ds'\nimport { useUpdateEffect } from 'react-use'\nimport PropTypes from 'prop-types'\n\nconst EventFilter = memo(\n ({\n clearInstances,\n eventListChange,\n fetchingProcesses,\n graphOptions,\n graphProcessId,\n setGraphProcessId,\n setGraphType,\n }) => {\n const [defaultValue, setDefaultValue] = useState()\n const handleProcessGraphChange = useCallback(\n data => {\n setDefaultValue(data)\n clearInstances()\n eventListChange([], { value: 0 })\n setGraphProcessId(data.value)\n setGraphType(data.type)\n },\n [clearInstances, eventListChange, setGraphProcessId]\n )\n\n useUpdateEffect(() => {\n const selected = graphOptions.find(({ value }) => value === +graphProcessId)\n if (selected) {\n setDefaultValue(selected)\n }\n }, [graphOptions.length])\n\n const selectStyle = {\n width: '250px',\n }\n\n return (\n \n )\n }\n)\n\nEventFilter.propTypes = {\n clearInstances: PropTypes.func.isRequired,\n eventListChange: PropTypes.func.isRequired,\n fetchingProcesses: PropTypes.bool.isRequired,\n graphOptions: PropTypes.arrayOf(PropTypes.shape({ label: PropTypes.string, value: PropTypes.number })).isRequired,\n graphProcessId: PropTypes.string,\n setGraphProcessId: PropTypes.func.isRequired,\n}\n\nEventFilter.defaultProps = {\n graphProcessId: undefined,\n}\n\nexport default EventFilter\n","import React, { memo, useEffect, useState } from 'react'\nimport { Overlay } from '@fortressiq/fiq-ds'\n\nimport { MAX_NUMBER_CASES } from '../Constants'\n\nexport default memo(({ instances, instanceIndex, onInstanceChange, disabled }) => {\n const [showing, setShowing] = useState(false)\n const [sort, setSort] = useState('EVENTS_DESC')\n const [menu, setMenu] = useState([])\n\n useEffect(() => {\n setMenu(\n instances\n .sort((a, b) => {\n if (sort === 'EVENTS_DESC') {\n return b.eventIds.length - a.eventIds.length\n } else if (sort === 'EVENTS_ASC') {\n return a.eventIds.length - b.eventIds.length\n } else if (sort === 'INSTANCE_DESC') {\n return b.index - a.index\n } else {\n return a.index - b.index\n }\n })\n .map(instance => ({\n text: `Instance ${instance.index + 1} of ${instances.length}`,\n events: instance.eventIds.length,\n disabled: instance.disabled,\n onClick: () => {\n onInstanceChange(instance.index)\n setShowing(false)\n },\n ...(instance.disabled ? { tooltip: { title: `Exceeds limit of ${MAX_NUMBER_CASES}` } } : {}),\n }))\n )\n }, [instances, sort, onInstanceChange])\n\n const sortOrder = column => {\n if (column === 'instance' && (sort === 'INSTANCE_ASC' || sort === 'INSTANCE_DESC')) {\n return sort === 'INSTANCE_ASC' ? 'asc' : 'desc'\n }\n if (column === 'events' && (sort === 'EVENTS_ASC' || sort === 'EVENTS_DESC')) {\n return sort === 'EVENTS_ASC' ? 'asc' : 'desc'\n }\n return false\n }\n\n const columns = [\n {\n icon: 'sort',\n iconProps: {\n status: sortOrder('instance'),\n },\n onClick: () => setSort(sort === 'INSTANCE_ASC' ? 'INSTANCE_DESC' : 'INSTANCE_ASC'),\n title: 'Instance',\n },\n {\n icon: 'sort',\n iconProps: {\n status: sortOrder('events'),\n },\n onClick: () => setSort(sort === 'EVENTS_ASC' ? 'EVENTS_DESC' : 'EVENTS_ASC'),\n title: 'Events',\n width: '50px',\n },\n ]\n\n const trigger = {\n setShowing: setShowing,\n showing: showing,\n text: `Instance ${!disabled ? `${instanceIndex + 1} of ${instances.length}` : ''}`,\n }\n\n const config = {\n content: { style: { marginTop: '14px' } },\n disableOutsideClick: false,\n dropdown: {\n closeOnRowClick: true,\n showArrow: false,\n },\n trigger: {\n icons: {\n prefix: {\n icon: 'programmingkeyboard',\n size: 18,\n },\n },\n },\n }\n const widths = { max: 262, min: 262, width: 262 }\n\n const heights = {\n height: 35,\n max: 35 * 5,\n }\n\n const virtual = {\n columns: columns,\n data: menu,\n height: menu.length < 5 ? heights.height * menu.length : heights.height * 5,\n itemCount: menu.length,\n itemSize: heights.height,\n width: '100%',\n }\n\n return (\n \n )\n})\n","import React, { memo, useState } from 'react'\nimport { Overlay } from '@fortressiq/fiq-ds'\n\nexport default memo(({ machines, toggleMachine }) => {\n const [showing, setShowing] = useState(false)\n\n const menu = machines.map(machine => ({\n onClick: () => {\n toggleMachine(machine)\n },\n style: { position: 'relative' },\n text: machine.name,\n icon: machine.selected ? 'check' : null,\n }))\n\n const { visibleMachines, selectedMachinesCount } = machines.reduce(\n (acc, machine) => {\n if (machine.selected) {\n return {\n visibleMachines: `${acc.visibleMachines === '' ? '' : `${acc.visibleMachines},`} ${machine.name}`,\n selectedMachinesCount: acc.selectedMachinesCount + 1,\n }\n }\n return acc\n },\n { visibleMachines: '', selectedMachinesCount: 0 }\n )\n\n const trigger = {\n showing: showing,\n setShowing: setShowing,\n text: `Observers${machines.length > 0 ? `: ${selectedMachinesCount} ${visibleMachines}` : ''}`,\n }\n\n const config = {\n content: { style: { marginTop: '14px' } },\n disableOutsideClick: true,\n dropdown: {\n closeOnRowClick: true,\n showArrow: false,\n },\n trigger: {\n icons: {\n prefix: {\n icon: 'desktopcomputer',\n size: 18,\n },\n },\n },\n }\n const widths = { max: 262, min: 262, width: 262 }\n\n const heights = {\n height: 35,\n max: 35 * 5,\n }\n\n return \n})\n","import React, { memo, useState } from 'react'\nimport { Overlay } from '@fortressiq/fiq-ds'\n\nexport default memo(({ selectedPathId, paths, togglePath }) => {\n const [showing, setShowing] = useState(false)\n const menu = paths.map(path => ({\n icon: path.id === selectedPathId ? 'check' : null,\n onClick: () => {\n togglePath(path)\n setShowing(false)\n },\n style: { position: 'relative' },\n text: path.name || `Path ${path.key}`,\n }))\n\n const selectedPathCount = paths.reduce((acc, path) => {\n if (path.selected) {\n acc += 1\n }\n return acc\n }, 0)\n\n const trigger = {\n showing: showing,\n setShowing: setShowing,\n text: `Paths${paths.length > 0 ? `: ${selectedPathCount}` : ''}`,\n }\n\n const config = {\n content: {\n style: {\n marginTop: '14px',\n },\n },\n disableOutsideClick: false,\n dropdown: {\n closeOnRowClick: true,\n showArrow: false,\n },\n trigger: {\n icons: {\n prefix: {\n icon: 'paths',\n size: 18,\n },\n },\n },\n }\n const widths = { max: 200, min: 200, width: 200 }\n\n const heights = {\n height: 35,\n max: 35 * 5,\n }\n\n return \n})\n","import React from 'react'\nimport { Button } from '@fortressiq/fiq-ds'\n\nconst PlaybackControls = ({ eventCount, playing, setPlaying }) => {\n const player = () => {\n if (eventCount === 0) {\n return\n }\n\n if (playing) {\n setPlaying(false)\n } else {\n setPlaying(true)\n }\n }\n const icon = playing ? 'pausecircle' : 'playcircle'\n\n return (\n
\n
\n \n
\n
\n )\n}\n\nexport default PlaybackControls\n","import { shallow } from 'enzyme'\nimport React from 'react'\n\nimport { mockGraphColors } from '../../../../lib/test_helpers/mockGraphColors.js'\nimport PlaybackControls from '../PlaybackControls'\n\njest.mock('@fortressiq/fiq-ds-themes/dist/js/graphColors.js', () => mockGraphColors)\n\ndescribe('PlaybackControls Component', () => {\n it('should render without throwing an error', () => {\n const component = shallow()\n expect(component).toMatchSnapshot()\n expect(() => component).not.toThrow()\n })\n})\n","//APIs\n// for now, to keep apis clean (not depenedent on front end it serves), we'll have two versions\n// the old apis for graph process that dont have json keys that mirror columns and the new (flow graph) which do\nimport { toAlpha, toHash } from 'lib/String'\nimport { MAX_NUMBER_CASES } from './Constants'\n\nexport const APIS = {\n flowgraph: {\n instances: processId => `/df_graph/instances/${processId}`,\n paths: processId => `/df_graph/path_list/${processId}`,\n },\n butterfly: {\n instances: () => '/screenshot_annotation_events',\n paths: graphProcessId => `/process_explorer/${graphProcessId}`,\n },\n path: {\n instances: () => '/screenshot_annotation_events',\n paths: graphProcessId => `/process_explorer/${graphProcessId}`,\n },\n // we lack consisyency at the moment, path can sometimes be 'graoh_process'\n graph_process: {\n instances: () => '/screenshot_annotation_events',\n paths: graphProcessId => `/process_explorer/${graphProcessId}`,\n },\n}\n\nexport const getFlowInstances = data => {\n const machineNames = new Set()\n const newInstances = data.map((instance, index) => {\n machineNames.add(instance.observer)\n return {\n ...instance,\n index: index,\n disabled: instance.eventIds.length > MAX_NUMBER_CASES,\n hash: toHash(instance.eventIds.join(',')),\n }\n })\n\n return {\n machineNames,\n newInstances,\n }\n}\n\nexport const getGraphInstances = data => {\n const machineNames = new Set()\n const newInstances = data.instances.map((instance, index) => {\n machineNames.add(instance.observer)\n return {\n ...instance,\n index: index,\n disabled: instance.eventIds.length > MAX_NUMBER_CASES,\n hash: toHash(instance.eventIds.join(',')),\n }\n })\n\n return {\n machineNames,\n newInstances,\n }\n}\n\nexport const getFlowPaths = data => {\n const paths = data.paths\n .map((path, index) => ({\n ...path,\n id: path.path_id,\n key: toAlpha(index, false),\n name: path.path_label,\n selected: true,\n }))\n .sort((a, b) => b.stats.frequency - a.stats.frequency)\n\n return paths\n}\n\nexport const getGraphPaths = data => {\n const paths = data.flow_data\n .map((path, index) => ({\n ...path,\n key: toAlpha(index, false),\n selected: true,\n }))\n .sort((a, b) => b.frequency - a.frequency)\n\n return paths\n}\n","/* eslint-disable import/prefer-default-export */\nimport { theme } from '@fortressiq/fiq-ds'\n\nexport const containerCSS = () => ({\n alignItems: 'center',\n display: 'flex',\n height: '100%',\n justifyContent: 'space-between',\n width: '100%',\n})\n\nexport const cellCSS = () => ({\n color: 'hsl(217.5, 3.6%, 56.9%)',\n margin: theme['default-spacer-xs'],\n})\n\nexport const showCSS = ({ showAnnotationTools }) => ({\n ...(showAnnotationTools\n ? {\n display: 'grid',\n gap: `0 ${theme['default-spacer-xs']}`,\n gridTemplateColumns: '2fr 1fr 4fr 1fr 2fr',\n }\n : { display: 'flex' }),\n})\n\nexport const controlCSS = next => ({\n alignItems: 'center',\n color: theme.white,\n cursor: 'pointer',\n display: 'flex',\n justifyContent: `flex-${next ? 'end' : 'start'}`,\n})\n\nexport const controlLabelCSS = next => ({\n alignSelf: 'flex-end',\n display: 'inline-flex',\n [`padding${next ? 'Right' : 'Left'}`]: theme['default-spacer-sm'],\n})\n","/**\n * Custom Hook\n * Validate value (text) of the input\n * @param {String} disableOnTyping if true switch showing messages to form level/context\n * * In this case use errorMessageSubmit namespace from the return\n * @return {Object}\n */\nimport { useState } from 'react'\n\nconst useInputValidation = disableOnTyping => {\n const configuration = {\n validate: {\n rules: {\n emptyState: ['', 'Please, set a Name for the process!'],\n minLength: [2, 'Name should be at least 3 characters!'],\n },\n },\n }\n\n const [nameState, setNameState] = useState('')\n const [nameErrorState, setNameErrorState] = useState('')\n const [nameErrorSubmitState, setNameErrorSubmitState] = useState('')\n\n const isValid = true\n const { emptyState, minLength } = configuration.validate.rules\n const [emptyStateValue, emptyStateError] = emptyState\n const [minLengthVal, minLengthError] = minLength\n\n const onChangeName = e => {\n setNameState(e.target.value)\n validationLogic(e.target.value)\n }\n\n const onSubmitForm = () => {\n if (nameState === emptyStateValue) {\n setNameErrorSubmitState(emptyStateError)\n } else {\n setNameErrorSubmitState(nameErrorState)\n }\n }\n\n // Show/hide and styling purposes\n let inputIsValid\n if (nameErrorState === '' && nameState) inputIsValid = true\n\n const validationLogic = name => {\n if (name.trim() === '' && isValid) {\n setNameErrorState(emptyStateError)\n return !isValid\n }\n\n if (name.length <= minLengthVal && isValid) {\n setNameErrorState(minLengthError)\n return !isValid\n }\n\n setNameErrorState('')\n return true\n }\n\n return {\n inputValue: nameState,\n onChangeInputValue: onChangeName,\n onSubmitForm,\n errorMsg: disableOnTyping ? null : nameErrorState,\n errorMessageSubmit: nameErrorSubmitState,\n inputIsValid,\n isValid: validationLogic,\n }\n}\n\nexport default useInputValidation\n","import React from 'react'\nimport shortid from 'shortid'\nimport { Button } from '@fortressiq/fiq-ds'\n\nimport Flash from 'components/flash/Flash'\n\n// eslint-disable-next-line\nexport const miningRunImportSuccess = ({ miningRunId, processCount, processTypeName }) => {\n const messageText = [\n `Completed importing ${processCount}`,\n `${processTypeName} Process${processCount > 1 ? 'es' : ''}`,\n `for Mining Run ${miningRunId}`,\n ].join(' ')\n const id = shortid.generate()\n Flash.success(\n {\n description: messageText,\n message: 'Mining Run Finished',\n cta: (\n \n ),\n },\n { duration: 0, key: id }\n )\n}\n","import React, { useEffect, useState, useRef } from 'react'\n\nimport { DateCell, Button, Typography, Group } from '@fortressiq/fiq-ds'\n\nimport api from 'lib/Api'\n\nimport getMiningParamsReport from 'lib/getMiningParamsReport'\nimport getMiningParamsPath from 'lib/getMiningParamsPath'\nimport getMiningParamsButterfly from 'lib/getMiningParamsButterfly'\nimport getMiningParamsFlowGraph from 'lib/getMiningParamsFlowGraph'\nimport graphTypeDisplayNameMap from 'lib/graphTypeDisplayNameMap'\n\nimport TrinityTable, { columnWidths } from 'components/TrinityTable'\nimport FavoriteToggle from 'components/FavoriteToggle/FavoriteToggle'\nimport StatusBadge from 'components/StatusBadge/StatusBadge'\nimport Tags from 'components/tags/Tags'\n\nimport EditableCell from 'components/TrinityTable/EditableCell'\nimport callbackStore from 'stores/callback'\n\nimport { useFetch, useApplicationsMap } from 'lib/hooks'\n\nimport { useHeaderDispatch } from '../header/HeaderContext'\n\nimport MiningRunModal from './form/MiningRunModal'\n\nimport ProcessesTable from './ProcessesTable'\nimport ActionsMenu from './tableComponents/ActionsMenu'\nimport MiningRunDetails from './tableComponents/MiningRunDetails'\n\nconst { Paragraph } = Typography\n\nconst sortKeyMap = {\n id: 'mining.mined_runs.id',\n createdAt: 'mining.mined_runs.created_at',\n status: 'mining.mined_runs.status',\n}\n\n// make an object with key and default value from report and advanced miningParams arrays\n// used in details column to display mining params that are not equal to default value\n\nconst getMiningDefaultMap = params => {\n return params.reduce((obj, item) => {\n return {\n ...obj,\n [item.key]: { value: item.default, label: item.label },\n }\n }, {})\n}\n\nexport const miningParamsDefaults = {\n default: getMiningDefaultMap(getMiningParamsPath()),\n report: getMiningDefaultMap(getMiningParamsReport()),\n butterfly: getMiningDefaultMap(getMiningParamsButterfly()),\n flowgraph: getMiningDefaultMap(getMiningParamsFlowGraph()),\n}\n\nconst callbackId = 'graphProcessImportSuccess'\n\nconst MiningRunList = () => {\n const [reFetch, setReFetch] = useState(0)\n const [showFormModal, setShowFormModal] = useState(false)\n const [clonedMiningRun, setClonedMiningRun] = useState()\n\n const { data: { integrations = [] } = {}, isLoadingIntegrations } = useFetch('/dynamic_integrations/mining_run/list')\n const { applicationsMap, isLoading: isLoadingApplicationsMap } = useApplicationsMap()\n\n const renderRowSubComponent = ({ row }) => (\n \n )\n\n const handleRefetch = () => {\n setReFetch(reFetch + 1)\n }\n\n const headerDispatch = useHeaderDispatch()\n\n const tableRef = useRef(null)\n\n useEffect(() => {\n const onImportProgress = ({ miningRunId: runId, processCount, status }) => {\n tableRef.current.updateRowData('id', runId, { status: status, graphProcessCount: processCount })\n }\n callbackStore.add(onImportProgress, callbackId, true)\n return () => {\n callbackStore.remove(callbackId)\n }\n }, [])\n\n useEffect(() => {\n headerDispatch({\n type: 'set',\n title: 'Mining Runs',\n heading: 'Mining Runs',\n })\n return () => {\n headerDispatch({\n type: 'clear',\n })\n }\n }, [headerDispatch])\n\n const columns = [\n {\n Header: 'ID',\n accessor: 'id',\n width: 170,\n minWidth: 130,\n Cell: ({\n value: id,\n row: {\n original: { favorited, signatureLevel, miningType },\n },\n }) => (\n \n \n {id}\n \n {signatureLevel}\n \n \n {graphTypeDisplayNameMap[miningType]}\n \n \n ),\n },\n {\n Header: 'Tags',\n accessor: 'tags',\n disableSortBy: true,\n Cell: ({\n value: tags,\n row: {\n original: { id },\n },\n }) => ,\n },\n {\n Header: 'Created At',\n accessor: 'createdAt',\n width: columnWidths.date,\n Cell: ({ value: createdAt }) => ,\n },\n {\n Header: 'Created By',\n accessor: 'createdByFirstName',\n disableSortBy: true,\n width: 140,\n Cell: ({\n value,\n row: {\n original: { createdByLastName },\n },\n }) => `${value} ${createdByLastName}`,\n },\n {\n Header: 'Comment',\n accessor: 'comments',\n disableSortBy: true,\n Cell: ({\n value,\n row: {\n index,\n original: { id },\n },\n column: { id: columnId },\n updateCellData,\n }) => (\n \n api.post(`/mining_runs/${id}/comments`, {\n comment: newValue,\n })\n }\n />\n ),\n },\n {\n Header: 'Details',\n accessor: 'details',\n disableSortBy: true,\n width: 300,\n Cell: ({ row: { original } }) => (\n \n ),\n },\n {\n Header: 'Processes',\n accessor: 'graphProcessCount',\n disableSortBy: true,\n width: 100,\n Cell: ({\n value,\n row: {\n isExpanded,\n getToggleRowExpandedProps,\n original: { miningType },\n },\n }) => (\n \n {value !== 0 && (\n \n )}\n {miningType === 'report' ? '-' : value}\n \n ),\n },\n {\n Header: 'Status',\n accessor: 'status',\n Cell: ({ value: status }) => ,\n },\n {\n align: 'center',\n Header: 'Actions',\n accessor: 'actions',\n disableSortBy: true,\n width: 64,\n Cell: ({ row: { original } }) => (\n \n ),\n },\n ]\n\n return (\n ,\n ]}\n ref={tableRef}\n key='mining-table'\n columns={columns}\n reFetch={reFetch}\n updateData=''\n url='/mining_runs'\n dataKey='miningRuns'\n sortKeyMap={sortKeyMap}\n renderRowSubComponent={renderRowSubComponent}\n tableId='mining-run-table'\n isDependencyLoading={isLoadingApplicationsMap || isLoadingIntegrations}\n globalFilterOptions={[\n 'favorited',\n 'miningRunCreatedDates',\n 'miningType',\n 'miningRunTags',\n 'miningRunIds',\n 'graphProcessIds',\n 'graphProcessNames',\n 'applications',\n 'createdBy',\n ]}\n />\n )\n}\n\nexport default MiningRunList\n","import React from 'react'\nimport { useFela } from '@fortressiq/fiq-ds'\nimport { useFetch } from 'lib/hooks'\n\nimport TrinityTable from 'components/TrinityTable'\nimport { tableWrap, processesTable } from './styles/index.js'\n\nimport getProcessesColumns from '../processes/getProcessesColumns'\n\nconst Processes = ({ miningRunId, reFetchMiningRuns, setReFetchMiningRuns }) => {\n const { css } = useFela()\n const { data: { integrations = [] } = {}, isLoadingIntegrations } = useFetch('/dynamic_integrations/process/list')\n\n const columns = getProcessesColumns({\n reFetch: reFetchMiningRuns,\n setReFetch: setReFetchMiningRuns,\n integrations,\n isLoadingIntegrations,\n }).filter(column => !['createdAt', 'miningRunId'].includes(column.accessor))\n\n return (\n
\n
\n \n
\n
\n )\n}\n\nexport default Processes\n","import React, { Fragment, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport cloneDeep from 'lodash/cloneDeep'\n\nimport ReactGA from 'react-ga'\n\nimport { useForm, useModal, Button, Group, theme, Element, Col, Row } from '@fortressiq/fiq-ds'\nimport { useUpdateEffect } from 'react-use'\n\nimport api from 'lib/Api'\n\nimport getMiningParamsPath from 'lib/getMiningParamsPath'\nimport getMiningParamsButterfly from 'lib/getMiningParamsButterfly'\nimport getMiningParamsFlowGraph from 'lib/getMiningParamsFlowGraph'\nimport graphTypeDisplayNameMap from 'lib/graphTypeDisplayNameMap'\n\nimport FieldWrapper from 'components/form/FieldWrapper'\nimport ControlledRadioGroup from 'components/form/ControlledRadioGroup'\nimport ControlledQueryBuilder from 'components/form/ControlledQueryBuilder'\nimport MustIncludesGroupsModal from './subComponents/MustIncludesGroupsModal'\nimport NestedSignaturesBuilder, {\n signaturesMustHaveDefault,\n} from './subComponents/NestedSignaturesBuilder/NestedSignaturesBuilder'\nimport AdvancedMiningParamFields from './subComponents/AdvancedMiningParamFields'\n\nimport FormFooter from './subComponents/FormFooter'\nimport SignatureBuilder from './subComponents/SignatureBuilder'\n\nimport { generateAdvancedParams, generateAdvancedDefaultValues, signatureLevelLabelMap } from './helpers'\n\nimport { formWrapperCSS } from './styles'\n\nexport const queryFields = [\n { label: 'Application', name: 'application_name' },\n { label: 'Application ID', name: 'application_id' },\n { label: 'ID', name: 'id' },\n { label: 'Observed At', name: 'observed_at', defaultValue: new Date().toISOString() },\n { label: 'Observer ID', name: 'observer_id' },\n { label: 'Observer Name', name: 'observer_name' },\n { label: 'Machine', name: 'machine' },\n { label: 'Detail Signature', name: 'signature' },\n { label: 'Screen Signature', name: 'screen_signature' },\n { label: 'Screen Name', name: 'name' },\n { label: 'Action', name: 'action' },\n { label: 'Field', name: 'field' },\n { label: 'Control Type', name: 'control_type' },\n { label: 'Annotation Type', name: 'annotation_type' },\n { label: 'User', name: 'user' },\n]\n\nexport const rowProps = {\n noOfCols: 2,\n noEndGutter: true,\n style: { marginBottom: theme['default-spacer-sm'], alignItems: 'flex-start' },\n type: 'grid',\n}\n\nconst initialValues = {\n miningType: 'flowgraph',\n miningParams: {\n signature_level: 'screen_signature',\n },\n}\n\nconst signatureLevelOptions = [\n { label: signatureLevelLabelMap.application, value: 'application' },\n { label: signatureLevelLabelMap.screen_signature, value: 'screen_signature' },\n]\n\nconst miningTypeOptions = [\n { label: graphTypeDisplayNameMap.flowgraph, value: 'flowgraph' },\n { label: graphTypeDisplayNameMap.default, value: 'default' },\n { label: graphTypeDisplayNameMap.butterfly, value: 'butterfly' },\n]\n\nconst modalId = 'mustIncludesGroupsModal'\nconst modalConfig = {\n style: { height: 'auto', width: '500px', background: theme.white },\n config: { interactWithKeyboard: true, destroyOnClose: true },\n headerStyle: { background: theme.white },\n}\n\nconst AdvancedForm = ({ defaultValues, fetchData, setShowing, fromReport }) => {\n const [isValidQuery, setIsValidQuery] = useState(true)\n const getDefaultValues = generateAdvancedDefaultValues({ initialValues, defaultValues })\n const { addModal, removeModal } = useModal()\n const { control, register, reset, watch, handleSubmit, formState, setValue } = useForm({\n defaultValues: getDefaultValues,\n shouldUnregister: true,\n })\n\n // keep nested must includes outside of react-hook-form which doesnt support nested structures well\n // must maintain state ourselves\n // remounting sometimes disappears the nested structure (ex \"clone\" mining run feature)\n const [mustIncludesSignature, setMustIncludesSignature] = useState(\n getDefaultValues.miningParams.must_include_signature\n )\n const formValues = watch()\n\n // Reset defaultValues when cycle is selected\n useUpdateEffect(() => {\n reset({\n ...getDefaultValues,\n miningParams: {\n ...formValues.miningParams,\n ...getDefaultValues.miningParams,\n },\n })\n }, [defaultValues])\n\n const {\n miningParams: { must_include_signature: mustIncludesSignatureWatched, signature_level: signatureLevel },\n miningType,\n } = formValues\n\n const screenOrEventText = signatureLevel === 'screen' ? 'screens' : 'events'\n\n const miningTypeLabel = signatureLevelLabelMap[signatureLevel]\n\n const miningTypeLabelLowerCase = miningTypeLabel.toLowerCase()\n\n const advancedMiningParams = {\n default: getMiningParamsPath(miningTypeLabelLowerCase),\n path: getMiningParamsPath(miningTypeLabelLowerCase),\n butterfly: getMiningParamsButterfly(screenOrEventText, miningTypeLabelLowerCase),\n flowgraph: getMiningParamsFlowGraph(miningTypeLabelLowerCase),\n }\n\n useUpdateEffect(() => {\n setMustIncludesSignature(undefined)\n }, [signatureLevel])\n\n // can track old value this way versus useEffect\n // miningType and signatureLevel onChange call this\n const checkCompatibleMustIncludes = (newValue, oldValue) => {\n const groupsEnabled = newValue === 'flowgraph' && signatureLevel === 'screen_signature'\n\n // if switching to flow (groups are being enabled), we don't need to do anything\n if (groupsEnabled) {\n return\n }\n\n const isCompatible = isSignatureCompatible()\n if (mustIncludesSignature && isCompatible) {\n const newMustIncludes = cloneDeep(signaturesMustHaveDefault)\n newMustIncludes.signatures = transformMustIncludes()\n setMustIncludesSignature(newMustIncludes)\n }\n\n //only display if chaning miningType and miningType is 'path' or 'butterfly'\n if (\n mustIncludesSignature &&\n !isCompatible &&\n (newValue === 'path' || newValue === 'default' || newValue === 'butterfly')\n ) {\n renderMustIncludesGroupModal(newValue, oldValue)\n }\n }\n\n const renderMustIncludesGroupModal = (graphType, oldGraphType) => {\n addModal({\n children: ,\n footerStyle: { justifyContent: 'flex-end' },\n footer: (\n \n \n \n \n ),\n header: 'Compatible Must Include Configurations',\n id: modalId,\n ...modalConfig,\n })\n }\n\n const onCancelChangeGraphType = oldGraphType => {\n setValue('miningType', oldGraphType)\n removeModal(modalId)\n }\n\n const deleteMustIncludes = () => {\n setMustIncludesSignature(undefined)\n removeModal(modalId)\n }\n\n const transformMustIncludes = () => {\n const newSignatures = []\n function flattenSignatures(sigList) {\n newSignatures.push(...sigList.signatures)\n if (sigList.nested_signatures) {\n sigList.nested_signatures.forEach(list => {\n flattenSignatures(list)\n })\n }\n }\n flattenSignatures(mustIncludesSignature)\n return newSignatures\n }\n\n const isSignatureCompatible = () => {\n if (!mustIncludesSignature) return true\n\n let compatible = true\n function noOrs(nest) {\n if (nest.condition === 'or') {\n compatible = false\n return\n }\n if (nest.nested_signatures === undefined || nest.nested_signatures.length === 0) return\n nest.nested_signatures.forEach(nested => {\n noOrs(nested)\n })\n }\n noOrs(mustIncludesSignature)\n return compatible\n }\n\n // check if must have signatures is valid, if not we can't submit the form\n const isMustIncludesValid = () => {\n let isValid = true\n\n if (signatureLevel === 'application' && mustIncludesSignature) {\n console.log(mustIncludesSignature)\n mustIncludesSignature.signatures?.forEach(app => {\n if (!app) isValid = false\n })\n return isValid\n }\n\n function getIsValid(group) {\n group?.signatures?.forEach(sig => {\n if (!sig.primary) {\n isValid = false\n }\n if (sig.secondary_signature_level && sig.secondary_signature_level !== 'none' && !sig.secondary) {\n isValid = false\n }\n })\n group?.nested_signatures?.forEach(nGroup => getIsValid(nGroup))\n }\n\n getIsValid(mustIncludesSignature)\n setIsValidQuery(isValid)\n return isValid\n }\n\n const onSubmitHandler = async e => {\n if (!isMustIncludesValid()) return\n\n ReactGA.event({\n category: 'Mining Run',\n action: 'Created New Mining Run',\n value: e.miningType,\n })\n\n await api.post('/mining_runs', generateAdvancedParams(e, mustIncludesSignature))\n fetchData()\n setShowing(false)\n }\n\n return (\n \n
\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n {miningType === 'butterfly' ? (\n \n ) : (\n \n \n \n \n )}\n \n \n \n setShowing(false)}\n isValid={isValidQuery}\n />\n \n
\n )\n}\n\nAdvancedForm.defaultProps = {\n defaultValues: undefined,\n}\n\nAdvancedForm.propTypes = {\n defaultValues: PropTypes.shape({}),\n fetchData: PropTypes.func.isRequired,\n setShowing: PropTypes.func.isRequired,\n}\n\nexport default AdvancedForm\n","import React, { useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport ReactGA from 'react-ga'\n\nimport { get, useForm, theme, Element, Row, Label } from '@fortressiq/fiq-ds'\nimport { useUpdateEffect } from 'react-use'\n\nimport api from 'lib/Api'\n\nimport constructApplicationOptions from 'components/form/helpers/constructApplicationOptions'\n\nimport FieldWrapper from 'components/form/FieldWrapper'\nimport ControlledRangePicker from 'components/form/ControlledRangePicker'\nimport AsyncSelect from 'components/form/AsyncSelect'\nimport ControlledRadioGroup from 'components/form/ControlledRadioGroup'\nimport ControlledSelect from 'components/form/ControlledSelect'\nimport { DATE_TIME_FORMAT_TWENTYFOUR_HOUR } from 'constants/app-constants'\nimport FormFooter from './subComponents/FormFooter'\nimport SignatureBuilder from './subComponents/SignatureBuilder'\n\nimport { generateBasicParams, generateBasicDefaultValues, signatureLevelLabelMap } from './helpers'\n\nimport { formWrapperCSS } from './styles'\n\nconst rowProps = {\n gutter: get.numericValues('spacer', 'md'),\n noOfCols: 2,\n type: 'grid',\n align: 'center',\n}\n\nconst radioRules = [\n { value: 'all', label: 'All' },\n { value: 'in', label: 'Include' },\n { value: 'not in', label: 'Exclude' },\n]\n\nconst initialValues = {\n observerRule: 'all',\n applicationRule: 'all',\n signatureLevel: 'screen_signature',\n}\n\nconst BasicForm = ({ defaultValues, fetchData, setShowing }) => {\n const getDefaultValues = generateBasicDefaultValues({ initialValues, defaultValues })\n\n const { register, reset, watch, setValue, handleSubmit, control, formState } = useForm({\n defaultValues: getDefaultValues,\n })\n\n // Reset defaultValues when cycle is selected\n useUpdateEffect(() => {\n reset(getDefaultValues)\n }, [defaultValues])\n\n const formValues = watch()\n\n useEffect(() => {\n // if observer rule is all, clear observers\n if (formValues.observerRule === 'all') {\n setValue('observers', [])\n }\n if (formValues.applicationRule === 'all') {\n setValue('applications', [])\n }\n }, [formValues.observerRule, formValues.applicationRule, setValue])\n\n const handleObserverTagChange = async ({ target: { value } }) => {\n const tags = value.map(items => items.value)\n if (tags.length) {\n const {\n data: { observers },\n } = await api.get('/observers', { filters: { tags } })\n setValue(\n 'observers',\n observers.map(observer => ({ label: observer.name, value: observer.name })),\n { shouldDirty: true }\n )\n } else {\n setValue('observers', [], { shouldDirty: true })\n }\n }\n\n const handleApplicationsTagChange = async ({ target: { value } }) => {\n const tags = value.map(items => items.value)\n if (tags.length) {\n const {\n data: { applications },\n } = await api.get('/applications', { filters: { tags }, per_page: 1000 })\n setValue(\n 'applications',\n applications.map(application => {\n const label = application.screenStrategy\n ? `${application.displayName} (unstructured)`\n : application.displayName\n return { label: label, value: application.displayName }\n }),\n { shouldDirty: true }\n )\n } else {\n setValue('applications', [], { shouldDirty: true })\n }\n }\n\n const onSubmitHandler = async e => {\n ReactGA.event({\n category: 'Mining Run',\n action: 'Created New Basic Mining Run',\n value: e.miningType,\n })\n await api.post('/mining_runs', generateBasicParams(e))\n fetchData()\n setShowing(false)\n }\n\n const miningTypeLabel = signatureLevelLabelMap[formValues.signatureLevel]\n\n return (\n \n
\n \n \n \n \n
\n \n \n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n \n \n
\n \n \n
\n setShowing(false)} />\n \n
\n )\n}\n\nBasicForm.defaultProps = {\n defaultValues: undefined,\n}\n\nBasicForm.propTypes = {\n defaultValues: PropTypes.shape({}),\n fetchData: PropTypes.func.isRequired,\n setShowing: PropTypes.func.isRequired,\n}\n\nexport default BasicForm\n","import React, { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Element, Tab, Tabs, Typography } from '@fortressiq/fiq-ds'\nimport { useUnmount } from 'react-use'\n\nimport api from 'lib/Api'\n\nimport uiStore from 'lib/UiStore'\nimport AsyncSelect from 'components/form/AsyncSelect'\n\nimport BasicForm from './BasicForm'\nimport AdvancedForm from './AdvancedForm'\nimport ReportForm from './ReportForm'\n\nimport { checkIsAdvanced } from './helpers'\n\nimport { titleSectionCSS } from './styles'\n\nconst { Title } = Typography\n\nconst tabStyle = { minHeight: '150px' }\n\nconst TABS = { BASIC: 1, ADVANCED: 2, REPORT: 3, RECIPES: 4 }\n\nconst isLite = uiStore?.tenant?.isLite\n\nconst MiningRunForms = ({ setShowing, fetchData, clonedMiningRun, setClonedMiningRun }) => {\n const fromReport = clonedMiningRun?.fromReport\n const isAdvanced = clonedMiningRun && (checkIsAdvanced(clonedMiningRun) || fromReport)\n const isReport = clonedMiningRun && clonedMiningRun.miningType === 'report'\n\n const defaultActiveTab = () => {\n if (clonedMiningRun) {\n if (isLite) return TABS.BASIC\n if (!isReport && isAdvanced) {\n return TABS.ADVANCED\n }\n if (isReport) {\n return TABS.REPORT\n }\n }\n return TABS.BASIC\n }\n\n const [activeTab, setActiveTab] = useState(defaultActiveTab)\n const [defaultValues, setDefaultValues] = useState(clonedMiningRun)\n\n const onCycleChange = async e => {\n const { data } = await api.get(`/cycles/${e.target.value.value}`)\n setDefaultValues(data.cycle)\n }\n\n // clear default values when closing modal\n useUnmount(() => {\n if (clonedMiningRun) {\n setClonedMiningRun(undefined)\n }\n })\n\n return (\n \n \n \n Create a Mining Run\n \n \n \n setActiveTab(e)}\n >\n \n {activeTab === TABS.BASIC && (\n \n )}\n \n {!isLite && (\n \n {activeTab === TABS.ADVANCED && (\n \n )}\n \n )}\n {!isLite && (\n \n {activeTab === TABS.REPORT && (\n \n )}\n \n )}\n \n \n )\n}\n\nMiningRunForms.defaultProps = {\n clonedMiningRun: undefined,\n}\nMiningRunForms.propTypes = {\n clonedMiningRun: PropTypes.shape({}),\n fetchData: PropTypes.func.isRequired,\n setShowing: PropTypes.func.isRequired,\n}\n\nexport default MiningRunForms\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Overlay } from '@fortressiq/fiq-ds'\n\nimport MiningRunForms from './MiningRunForms'\n\nconst MiningRunModal = ({\n showFormModal: showing,\n setShowFormModal: setShowing,\n fetchData,\n clonedMiningRun,\n setClonedMiningRun,\n}) => {\n const placement = {\n overflow: { adjustX: true, adjustY: true },\n points: ['bl', 'tr'],\n targetOffset: [0, 4],\n }\n\n const trigger = {\n showing,\n setShowing,\n text: 'New',\n type: 'secondary',\n }\n\n const heights = {\n min: 'auto',\n }\n\n return (\n \n }\n draggable={true}\n heights={heights}\n id='mining-form-modal'\n noPadding={true}\n placement={placement}\n trigger={trigger}\n />\n )\n}\n\nMiningRunModal.defaultProps = {\n clonedMiningRun: undefined,\n}\n\nMiningRunModal.propTypes = {\n clonedMiningRun: PropTypes.shape({}),\n fetchData: PropTypes.func.isRequired,\n setClonedMiningRun: PropTypes.func.isRequired,\n setShowFormModal: PropTypes.func.isRequired,\n showFormModal: PropTypes.bool.isRequired,\n}\n\nexport default MiningRunModal\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { format, useForm, theme, Radio, useNotification, Element, Typography } from '@fortressiq/fiq-ds'\n\nimport api from 'lib/Api'\n\nimport { BASE_DATE_FORMAT } from 'constants/app-constants'\n\nimport FieldWrapper from 'components/form/FieldWrapper'\nimport ControlledRangePicker from 'components/form/ControlledRangePicker'\nimport ControlledRadioGroup from 'components/form/ControlledRadioGroup'\n\nimport FormFooter from './subComponents/FormFooter'\n\nimport { formWrapperCSS } from './styles'\n\nconst { Paragraph } = Typography\n\nconst radioTitleStyle = {\n fontWeight: 500,\n display: 'inline',\n}\n\nexport const recipeMap = {\n automatically_grouped: 'Automatically Grouped',\n unique_observer: 'Unique Observer',\n}\n\nconst initialValues = {\n recipeType: 'automatically_grouped',\n}\n\nconst RecipesForm = ({ setShowing }) => {\n const { addNotification } = useNotification()\n\n const { watch, handleSubmit, control, formState } = useForm({\n defaultValues: initialValues,\n })\n\n const formValues = watch()\n\n const onSubmitHandler = async e => {\n const { recipeType, observedAtRange } = e\n const fromDate = observedAtRange?.[0]\n const toDate = observedAtRange?.[1]\n\n const params = {\n recipe_type: recipeType,\n args: {\n observed_start: fromDate ? format(fromDate, BASE_DATE_FORMAT) : '',\n observed_end: toDate ? format(toDate, BASE_DATE_FORMAT) : '',\n },\n }\n\n await api.post('/mining_runs/create_from_recipe', params)\n addNotification({\n description: `Recipe ${recipeMap[recipeType]} started, gathering mining run parameters.`,\n message: 'Started',\n type: 'info',\n })\n\n setShowing(false)\n }\n\n return (\n \n
\n \n \n \n \n Automatically Grouped\n \n
\n \n Uses AI to analyze the work of all observers and groups them into machine-driven cohorts of similar\n workflows, and then creates individual mining runs for each of these groups.\n \n
\n\n \n \n Unique Observer\n \n \n Treats each observer as an entirely unique datasource, creating an individual mining run for every\n observer that finds processes that exist in that single observer's data.\n \n \n \n \n \n \n
\n setShowing(false)} />\n \n
\n )\n}\n\nRecipesForm.propTypes = {\n setShowing: PropTypes.func.isRequired,\n}\n\nexport default RecipesForm\n","import React, { useState } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { useForm, theme, Element } from '@fortressiq/fiq-ds'\nimport { useUpdateEffect } from 'react-use'\n\nimport api from 'lib/Api'\n\nimport getMiningParamsReport from 'lib/getMiningParamsReport'\n\nimport ControlledQueryBuilder from 'components/form/ControlledQueryBuilder'\nimport AdvancedMiningParamFields from './subComponents/AdvancedMiningParamFields'\n\nimport FormFooter from './subComponents/FormFooter'\n\nimport { generateReportParams } from './helpers'\n\nexport const queryFields = [\n { label: 'Application', name: 'application_name' },\n { label: 'Application ID', name: 'application_id' },\n { label: 'ID', name: 'id' },\n { label: 'Observed At', name: 'observed_at', defaultValue: new Date().toISOString() },\n { label: 'Observer ID', name: 'observer_id' },\n { label: 'Observer Name', name: 'observer_name' },\n { label: 'Machine', name: 'machine' },\n { label: 'Detail Signature', name: 'signature' },\n { label: 'Screen Signature', name: 'screen_signature' },\n { label: 'Screen Name', name: 'name' },\n { label: 'Action', name: 'action' },\n { label: 'Field', name: 'field' },\n { label: 'Control Type', name: 'control_type' },\n { label: 'Annotation Type', name: 'annotation_type' },\n { label: 'User', name: 'user' },\n]\n\nexport const rowProps = {\n noOfCols: 2,\n noEndGutter: true,\n style: { marginBottom: theme['default-spacer-sm'] },\n type: 'grid',\n}\n\nconst ReportForm = ({ defaultValues, fetchData, setShowing }) => {\n const [isValidQuery, setIsValidQuery] = useState(true)\n const getDefaultValues = defaultValues\n ? { filterRules: defaultValues?.filterRules, miningParams: defaultValues?.miningParams }\n : undefined\n\n const { reset, watch, handleSubmit, control } = useForm({\n defaultValues: getDefaultValues,\n })\n\n useUpdateEffect(() => {\n reset({\n filterRules: defaultValues?.filterRules,\n miningParams: { ...formValues.miningParams, ...defaultValues?.miningParams },\n })\n }, [defaultValues])\n\n const formValues = watch()\n\n const onSubmitHandler = async e => {\n await api.post('/process-boundary/start', generateReportParams(e))\n fetchData()\n setShowing(false)\n }\n\n return (\n \n
\n \n \n \n \n \n \n setShowing(false)} isValid={isValidQuery} />\n \n
\n )\n}\n\nReportForm.defaultProps = {\n defaultValues: undefined,\n}\n\nReportForm.propTypes = {\n defaultValues: PropTypes.shape({}),\n fetchData: PropTypes.func.isRequired,\n setShowing: PropTypes.func.isRequired,\n}\n\nexport default ReportForm\n","import getMiningParamsPath from 'lib/getMiningParamsPath'\nimport getMiningParamsButterfly from 'lib/getMiningParamsButterfly'\nimport getMiningParamsReport from 'lib/getMiningParamsReport'\nimport cloneDeep from 'lodash/cloneDeep'\n\nconst getValues = values => values.map(({ value }) => value).join(',')\nconst getLabels = labels => labels.map(({ label }) => label).join(',')\n\n// Generate query filter from basic mining run\nexport const generateFilter = ({\n applications,\n applicationRule = 'all',\n observers,\n observerRule = 'all',\n observedAtRange,\n} = {}) => {\n return {\n combinator: 'and',\n not: false,\n rules: [\n applications?.length > 0 && {\n field: 'application_name',\n label: applications.constructor === Array ? getLabels(applications) : applications,\n value: applications.constructor === Array ? getValues(applications) : applications,\n operator: applicationRule,\n },\n observers?.length > 0 && {\n field: 'observer_name',\n label: observers.constructor === Array ? getLabels(observers) : observers,\n value: observers.constructor === Array ? getValues(observers) : observers,\n operator: observerRule,\n },\n observedAtRange &&\n observedAtRange[0] && {\n id: 'observered_at_from',\n field: 'observed_at',\n value: observedAtRange[0],\n operator: '>=',\n },\n observedAtRange &&\n observedAtRange[1] && {\n id: 'observered_at_to',\n field: 'observed_at',\n value: observedAtRange[1],\n operator: '<=',\n },\n ].filter(Boolean),\n }\n}\n\nconst constructSignaturesParams = ({ signatures }) => {\n return signatures.map(signature => ({\n ...signature,\n secondary_signature_level:\n signature.secondary_signature_level === 'none' ? undefined : signature.secondary_signature_level,\n }))\n}\nconst constructSignaturesDefaultValues = ({ signatures }) => {\n return signatures\n ? signatures.map(signature => ({\n ...signature,\n secondary_signature_level: signature.secondary_signature_level || 'none',\n }))\n : []\n}\n\n// Generate api params for basic form\nexport const generateBasicParams = formState => ({\n miningParams: {\n // if no signatures, empty structure required by backend schema\n start_signatures: formState.startSignatures\n ? { signatures: constructSignaturesParams(formState.startSignatures) }\n : {\n signatures: [],\n },\n end_signatures: formState.endSignatures\n ? { signatures: constructSignaturesParams(formState.endSignatures) }\n : {\n signatures: [],\n },\n must_include_signature: {\n condition: 'and',\n signatures: [],\n },\n butterfly_signatures: {\n signatures: [],\n },\n signature_level: formState.signatureLevel,\n },\n filter: generateFilter(formState),\n})\n\n// Helper function for converting string to array\nconst stringParamToArray = paramValue => {\n if (Array.isArray(paramValue)) {\n return paramValue\n }\n if (paramValue === '') {\n return []\n }\n return paramValue.split(',').map(value => value.trim())\n}\n// Helper function for converting string to number\nconst stringParamToNumber = paramValue => +paramValue\n\n// Get format for all miningParams\nconst advancedMiningParamsFormat = [\n ...getMiningParamsPath(),\n ...getMiningParamsButterfly(),\n ...getMiningParamsReport(),\n].reduce((o, cur) => {\n if (cur.type === 'number') return { ...o, [cur.key]: stringParamToNumber }\n if (cur.type === 'array') return { ...o, [cur.key]: stringParamToArray }\n return { ...o }\n}, {})\n\n// Call formatter for all mining params\nconst formatMiningParams = miningParams =>\n Object.entries(miningParams).reduce((acc, [key, val]) => {\n const formatter = advancedMiningParamsFormat[key]\n acc[key] = formatter ? formatter(val) : val\n return acc\n }, {})\n\n//Ensures that the observed_at fields contain the correct ids\n// bug where older filters rules did not contain this information\nconst transformFilter = rules => {\n if (!rules) return\n const newRules = cloneDeep(rules)\n newRules?.rules?.forEach(rule => {\n if (rule.field === 'observed_at' && rule.operator === '>=') {\n rule.id = 'observered_at_to'\n }\n if (rule.field === 'observed_at' && rule.operator === '<=') {\n rule.id = 'observered_at_from'\n }\n })\n return newRules\n}\n\n// Generate api params for advanced mining form\nexport const generateAdvancedParams = (formState, mustIncludesSignature) => {\n const { miningParams, filterRules, miningType } = formState\n console.log(mustIncludesSignature)\n return {\n miningParams: {\n ...formatMiningParams(miningParams),\n // if no signatures, empty structure required by backend schema\n start_signatures: miningParams.start_signatures\n ? { signatures: constructSignaturesParams(miningParams.start_signatures) }\n : {\n signatures: [],\n },\n end_signatures: miningParams.end_signatures\n ? { signatures: constructSignaturesParams(miningParams.end_signatures) }\n : {\n signatures: [],\n },\n must_include_signature: mustIncludesSignature,\n butterfly_signatures: miningParams.butterfly_signatures\n ? { signatures: constructSignaturesParams(miningParams.butterfly_signatures) }\n : {\n signatures: [],\n },\n },\n filter: filterRules,\n miningType,\n }\n}\n\n// Generate api params for report mining form\nexport const generateReportParams = formState => {\n const { miningParams, filterRules } = formState\n return {\n miningParams: {\n ...formatMiningParams(miningParams),\n },\n filter: filterRules,\n }\n}\n\n// Generate form values from clone or cycle for basic form\nexport const generateBasicDefaultValues = ({ initialValues, defaultValues }) => {\n if (!defaultValues) {\n return initialValues\n }\n const { filterRules, startSignatures, endSignatures, miningParams } = defaultValues\n\n const observedAtRangeArray = []\n const transformedFilterRules = filterRules?.rules.reduce((obj, item) => {\n if (item.field === 'observed_at' && item.operator === '>=') {\n observedAtRangeArray[0] = new Date(item.value)\n return {\n ...obj,\n observedAtRange: observedAtRangeArray,\n }\n }\n if (item.field === 'observed_at' && item.operator === '<=') {\n observedAtRangeArray[1] = new Date(item.value)\n return {\n ...obj,\n observedAtRange: observedAtRangeArray,\n }\n }\n if (item.field === 'observer_name') {\n return {\n ...obj,\n observers: item.value.split(',').map(observer => ({ label: observer, value: observer })),\n observerRule: item.operator,\n }\n }\n if (item.field === 'application_name') {\n return {\n ...obj,\n applications: item.value.split(',').map(application => ({ label: application, value: application })),\n applicationRule: item.operator,\n }\n }\n return obj\n }, {})\n return {\n ...initialValues,\n ...transformedFilterRules,\n startSignatures: startSignatures\n ? // from cycle\n { signatures: startSignatures?.map(sig => ({ primary: sig })) }\n : // from cloned mining run\n {\n signatures:\n miningParams.signature_level === 'screen_signature'\n ? constructSignaturesDefaultValues(miningParams.start_signatures)\n : [],\n },\n endSignatures: endSignatures\n ? // from cycle\n { signatures: endSignatures?.map(sig => ({ primary: sig })) }\n : // from cloned mining run\n {\n signatures:\n miningParams.signature_level === 'screen_signature'\n ? constructSignaturesDefaultValues(miningParams.end_signatures)\n : [],\n },\n }\n}\n\n// Genereate form values from clone or cycle for advanced form\nexport const generateAdvancedDefaultValues = ({ initialValues, defaultValues }) => {\n if (!defaultValues) {\n return initialValues\n }\n const { filterRules, startSignatures, endSignatures, miningParams, miningType } = defaultValues\n return {\n filterRules: transformFilter(filterRules),\n miningType: miningType || initialValues.miningType,\n miningParams: {\n ...(miningParams\n ? // from cloned mining run\n {\n ...miningParams,\n signature_level: miningParams.signature_level || initialValues.miningParams.signature_level,\n start_signatures: { signatures: constructSignaturesDefaultValues(miningParams.start_signatures) },\n end_signatures: { signatures: constructSignaturesDefaultValues(miningParams.end_signatures) },\n butterfly_signatures: { signatures: constructSignaturesDefaultValues(miningParams.butterfly_signatures) },\n }\n : // from cycle and initial values\n {\n signature_level: initialValues.miningParams.signature_level,\n start_signatures: { signatures: startSignatures ? startSignatures.map(sig => ({ primary: sig })) : [] },\n end_signatures: { signatures: endSignatures ? endSignatures.map(sig => ({ primary: sig })) : [] },\n }),\n },\n }\n}\n\n// Helper function for checking if cloned mining is advanced\nconst hasNestedRules = obj => {\n // Basic form does not have nested rules\n let res = JSON.stringify(obj).replace(/[^{|^}]/g, '')\n while (/}{/g.test(res)) {\n res = res.replace(/}{/g, '')\n }\n return res.replace(/}/g, '').length > 3\n}\n\nconst basicFields = ['observed_at', 'observer_name', 'application_name']\n\nconst hasAdvancedFields = filterRules => {\n const fields = filterRules?.rules.map(rule => rule.field)\n // Basic form has max 4 rules\n if (fields && fields.length > 4) {\n return true\n }\n // Basic form only contains the basicFields\n if (fields && !fields.every(v => basicFields.includes(v))) {\n return true\n }\n return false\n}\n\nexport const checkIsAdvanced = clonedMiningRun => {\n if (\n clonedMiningRun.miningType !== 'flowgraph' ||\n clonedMiningRun.miningParams?.signature_level !== 'screen_signature' ||\n clonedMiningRun.miningParams?.merge_starts === 1 ||\n clonedMiningRun.miningParams?.shortest_path === 1 ||\n clonedMiningRun.miningParams?.must_include_signature?.signatures?.length !== 0 ||\n clonedMiningRun.miningParams?.must_include_signature?.nested_signatures?.length !== 0 ||\n hasNestedRules(clonedMiningRun.filterRules) ||\n hasAdvancedFields(clonedMiningRun.filterRules)\n ) {\n return true\n }\n return false\n}\n\nexport const signatureLevelLabelMap = {\n application: 'Application',\n screen_signature: 'Screen Signature',\n screen: 'Screen Signature', // added to catch old mining runs if migration is not run\n signature: 'Signature',\n}\nexport const secondarySignatureLevelLabelMap = {\n none: 'None',\n field: 'Field',\n value: 'Control Key',\n}\n","import { helpers, theme } from '@fortressiq/fiq-ds'\n\nconst { addImportant } = helpers\n\nexport const formWrapperCSS = () => ({\n marginTop: `-${theme['default-spacer-sm']}`,\n padding: theme['default-spacer-md'],\n maxHeight: '60vh',\n overflow: 'scroll',\n position: 'relative',\n})\n\nexport const titleSectionCSS = () => ({\n alignItems: 'center',\n borderBottom: `1px solid ${theme['table-border-color']}`,\n display: 'flex',\n justifyContent: 'space-between',\n marginBottom: 0,\n padding: theme['default-spacer-md'],\n})\n\nexport const buttonSectionCSS = () => ({\n borderTop: `1px solid ${theme['table-border-color']}`,\n display: 'flex',\n justifyContent: 'space-between',\n padding: theme['default-spacer-md'],\n width: '100%',\n})\n\nexport const formBackgroundCSS = () => ({\n background: theme['field-bg-light'],\n borderRadius: '2px',\n padding: theme['default-spacer-md'],\n})\n\nexport const formContainerCSS = () => ({\n display: 'flex',\n flexDirection: 'column',\n width: '640px',\n})\n\nexport const verticalRadioGroupCSS = () => ({ display: addImportant('block') })\nexport const verticalRadioItemCSS = () => ({ display: addImportant('block'), whiteSpace: addImportant('normal') })\n\nexport const scrollSectionCSS = () => ({\n flex: '1',\n marginBottom: `-${theme['default-spacer-md']}`,\n marginTop: `-${theme['default-spacer-sm']}`,\n maxHeight: '50vh',\n overflow: 'auto',\n width: '100%',\n})\n\nexport const formBGCSS = () => ({\n background: theme['field-bg-light'],\n borderRadius: theme['default-spacer-sm'],\n padding: theme['default-spacer-md'],\n})\n\nexport const signatureGroupCSS = () => ({\n background: 'hsla(0, 0%, 94%, 0.5)',\n border: `1px solid ${theme['legacy-color-gray1']}`,\n padding: theme['default-spacer-md'],\n})\n\nexport const signatureItemCSS = () => ({ display: 'flex', marginTop: theme['default-spacer-xs'] })\n\nexport const signatureItemMarginCSS = () => ({ marginBottom: theme['default-spacer-md'] })\n\nexport const signatureInputsCSS = () => ({\n flex: '1',\n})\n\nexport const removeButtonCSS = () => ({ marginLeft: theme['default-spacer-sm'], marginTop: '19px' })\n\nexport const menuItemCSS = () => ({\n background: theme['field-bg-light'],\n padding: theme['default-spacer-xs'],\n})\n\nexport const observerGroupCSS = () => ({\n background: 'hsla(0, 0%, 94%, 0.5)',\n border: `1px solid ${theme['legacy-color-gray1']}`,\n padding: theme['default-spacer-md'],\n marginTop: theme['default-spacer-md'],\n marginBottom: theme['default-spacer-md'],\n})\n","import React from 'react'\nimport { Input, InputNumber, Select, theme, Element, Checkbox, useController } from '@fortressiq/fiq-ds'\n\nimport PropTypes from 'prop-types'\n\nimport FieldWrapper from 'components/form/FieldWrapper'\n\nconst FIELD_TYPES = {\n NUMBER: 'number',\n SELECT: 'select',\n ARRAY: 'array',\n CHECKBOX: 'checkbox',\n}\n\nconst Field = ({ item, control }) => {\n const {\n field: { onChange, ref, value, ...inputProps },\n } = useController({\n name: `miningParams.${item.key}`,\n control,\n defaultValue: item?.default,\n rules: item.validators,\n // this will unregister conditional fields\n shouldUnregister: true,\n })\n\n switch (item.type) {\n case FIELD_TYPES.NUMBER:\n return (\n \n )\n case FIELD_TYPES.SELECT:\n return (\n onChange(e.value)}\n options={item.options}\n styles={{ menuPortal: { zIndex: theme['z-modal-above'] } }}\n value={item.options.filter(option => option.value === value)}\n menuPortalTarget={document.body}\n menuShouldBlockScroll={true}\n />\n )\n case FIELD_TYPES.ARRAY:\n return \n case FIELD_TYPES.CHECKBOX:\n return (\n {\n onChange(checked ? 1 : 0)\n }}\n checked={value}\n >\n {item.label}\n \n )\n default:\n return `${item.type} not found`\n }\n}\n\nconst AdvancedMiningParamFields = ({\n advancedMiningParams,\n formValues,\n control,\n errors,\n checkCompatibleMustIncludes,\n}) => (\n \n {advancedMiningParams.map(item => {\n if (item.dependency && formValues.miningParams[item.dependency.key] !== item.dependency.value) {\n return null\n }\n const itemLabel = item.validators ? `*${item.label}` : item.label\n return (\n \n \n \n )\n })}\n \n)\n\nAdvancedMiningParamFields.defaultProps = {\n errors: undefined,\n}\n\nAdvancedMiningParamFields.propTypes = {\n advancedMiningParams: PropTypes.arrayOf(\n PropTypes.shape({\n key: PropTypes.string,\n label: PropTypes.string,\n type: PropTypes.string,\n })\n ).isRequired,\n formValues: PropTypes.shape({}).isRequired,\n control: PropTypes.shape({}).isRequired,\n errors: PropTypes.shape({}),\n checkCompatibleMustIncludes: PropTypes.func,\n}\n\nexport default AdvancedMiningParamFields\n","import React, { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, Element, theme } from '@fortressiq/fiq-ds'\nimport localizer from 'lib/Localizer'\nimport PanelMetrics from 'components/PanelMetrics/PanelMetrics'\nimport { useDebounce } from 'lib/hooks'\nimport { fetchEventCount } from 'app/events/fetchEventCount'\nimport { generateFilter } from '../helpers'\n\nconst FormFooter = ({ onCancel, formValues, isValid }) => {\n const [isFetchingEvents, setIsFetchingEvents] = useState(false)\n const [eventCount, setEventCount] = useState(0)\n const debouncedFormState = useDebounce(formValues, 500)\n\n const updateEventCount = async filter => {\n setIsFetchingEvents(true)\n setEventCount(await fetchEventCount(filter))\n setIsFetchingEvents(false)\n }\n\n useEffect(() => {\n const filter = debouncedFormState?.rules ? debouncedFormState : generateFilter(debouncedFormState)\n updateEventCount(filter)\n }, [debouncedFormState])\n\n const handleCancel = e => {\n e.preventDefault()\n onCancel()\n }\n\n return (\n \n \n \n \n \n )\n}\n\nFormFooter.defaultProps = {\n formValues: undefined,\n isValid: true,\n}\nFormFooter.propTypes = {\n onCancel: PropTypes.func.isRequired,\n formValues: PropTypes.shape({}),\n isValid: PropTypes.bool,\n}\n\nexport default FormFooter\n","import React from 'react'\nimport { Element, theme } from '@fortressiq/fiq-ds'\n\nconst GRAPH_TYPE_LABELS = {\n flowgraph: 'Flow',\n path: 'Path',\n default: 'Path',\n butterfly: 'Butterfly',\n}\n\nconst MustIncludesGroupsModal = ({ graphType, newGraphType }) => {\n return (\n \n
\n This "Must Include" configuration is not compatible with the "\n {GRAPH_TYPE_LABELS[newGraphType]}" Mining Type because it includes an "OR" condition.\n
\n

If you proceed, the existing "Must Include" configuration will be deleted.

\n

Do you want to proceed with using a "{GRAPH_TYPE_LABELS[newGraphType]}" Mining Type?


\n
\n )\n}\n\nexport default MustIncludesGroupsModal\n","import React, { useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport cloneDeep from 'lodash/cloneDeep'\nimport uiStore from 'lib/UiStore'\nimport { Alert, useController, Button, Group, theme, Element, Typography, Label } from '@fortressiq/fiq-ds'\n\nimport RecursiveSignaturesGroup from './RecursiveSignaturesGroup'\n\nimport { secondarySignatureLevelLabelMap } from '../../helpers'\n\nconst { Text } = Typography\n\nexport const signaturesMustHaveDefault = {\n condition: 'and',\n signatures: [\n {\n primary: '',\n },\n ],\n}\n\nexport const signaturesMustHaveEmptyDefaultGroup = {\n condition: 'and',\n signatures: [],\n nested_signatures: [\n {\n condition: 'and',\n signatures: [{ primary: '' }],\n },\n ],\n}\n\nconst signatureGroupCSS = () => ({\n background: 'hsla(0, 0%, 94%, 0.5)',\n border: `1px solid ${theme['legacy-color-gray1']}`,\n padding: theme['default-spacer-md'],\n marginBottom: theme['default-spacer-md'],\n})\n\nconst NestedSignatureBuilder = ({\n control,\n description,\n groupsEnabled,\n min,\n name,\n primarySignatureLabel,\n register,\n setMustIncludesSignature,\n signatureLevel,\n title,\n watch,\n isValidQuery,\n setIsValidQuery,\n mustIncludesSignature,\n}) => {\n const showSecondary = signatureLevel === 'screen_signature' && !uiStore?.tenant?.isLite\n\n // clear any error messages and enable submitting of form\n useEffect(() => {\n let isValid = true\n function getIsValid(group) {\n group?.signatures?.forEach(sig => {\n if (!sig.primary) {\n isValid = false\n }\n if (sig.secondary_signature_level && sig.secondary_signature_level !== 'none' && !sig.secondary) {\n isValid = false\n }\n })\n group?.nested_signatures?.forEach(nGroup => getIsValid(nGroup))\n }\n\n getIsValid(mustIncludesSignature)\n if (isValid) setIsValidQuery(true)\n }, [mustIncludesSignature])\n\n const getList = nestedPath => {\n if (!mustIncludesSignature) {\n return undefined\n }\n let list = mustIncludesSignature\n const nestedPathIndexs = [...`${nestedPath}`]\n nestedPathIndexs.forEach(nestedIndex => {\n if (list.nested_signatures === undefined) return\n list = list?.nested_signatures[nestedIndex]\n })\n return list\n }\n const addGroup = (e, nestedPath) => {\n e.preventDefault()\n const list = getList(nestedPath)\n if (!list) {\n const defaultClone = cloneDeep(signaturesMustHaveEmptyDefaultGroup)\n setMustIncludesSignature(defaultClone)\n return\n }\n if (list.nested_signatures === undefined) list.nested_signatures = []\n const defaultClone = cloneDeep(signaturesMustHaveDefault)\n list.nested_signatures.push(defaultClone)\n setMustIncludesSignature({ ...mustIncludesSignature })\n }\n\n const removeGroup = (e, nestedPath, index) => {\n e.preventDefault()\n if (nestedPath.length === 0) {\n setMustIncludesSignature(undefined)\n return\n }\n\n const parentPath = nestedPath.slice(0, -1)\n const parentList = getList(parentPath)\n parentList.nested_signatures.splice(index, 1)\n setMustIncludesSignature({ ...mustIncludesSignature })\n }\n\n const addSignature = (e, nestedPath) => {\n e.preventDefault()\n const list = getList(nestedPath)\n if (!list) {\n const defaultClone = cloneDeep(signaturesMustHaveDefault)\n setMustIncludesSignature(defaultClone)\n return\n }\n list.signatures.push({\n primary: '',\n })\n setMustIncludesSignature({ ...mustIncludesSignature })\n }\n\n const onChangeSignature = (value, nestedPath, key, index) => {\n const list = getList(nestedPath)\n list.signatures[index][key] = value\n setMustIncludesSignature({ ...mustIncludesSignature })\n }\n\n const removeSignature = (e, nestedPath, signaturesIndex) => {\n e.preventDefault()\n const list = getList(nestedPath)\n\n //remove group if last signature\n if (\n (list.signatures.length === 1 && list?.nested_signatures?.length === 0) ||\n (list.signatures.length === 1 && list.nested_signatures === undefined)\n ) {\n removeGroup(e, nestedPath)\n return\n }\n list.signatures.splice(signaturesIndex, 1)\n const deepCloneSigs = cloneDeep(mustIncludesSignature)\n setMustIncludesSignature(deepCloneSigs)\n }\n\n const onSelectAndOr = (value, nestedPath, key, index) => {\n const list = getList(nestedPath)\n if (!list) return\n list.condition = value\n setMustIncludesSignature({ ...mustIncludesSignature })\n }\n\n return (\n \n \n {description && (\n \n {description}\n \n )}\n {!isValidQuery && }\n \n \n )\n}\n\nNestedSignatureBuilder.defaultProps = {\n description: undefined,\n min: undefined,\n signatureLevel: undefined,\n}\n\nNestedSignatureBuilder.propTypes = {\n control: PropTypes.shape({}).isRequired,\n description: PropTypes.string,\n min: PropTypes.number,\n name: PropTypes.string.isRequired,\n primarySignatureLabel: PropTypes.string.isRequired,\n register: PropTypes.func.isRequired,\n signatureLevel: PropTypes.string,\n title: PropTypes.string.isRequired,\n watch: PropTypes.func.isRequired,\n}\n\nexport default NestedSignatureBuilder\n","import React, { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport uiStore from 'lib/UiStore'\nimport {\n useFieldArray,\n useController,\n theme,\n Element,\n Typography,\n Label,\n Button,\n Icon,\n Input,\n Select,\n} from '@fortressiq/fiq-ds'\n\nimport ControlledSelect from 'components/form/ControlledSelect'\nimport constructApplicationOptions from 'components/form/helpers/constructApplicationOptions'\nimport FieldWrapper from 'components/form/FieldWrapper'\n\nimport { useUpdateEffect } from 'react-use'\nimport SignatureForm from './SignatureForm'\n\nimport { secondarySignatureLevelLabelMap } from '../../helpers'\n\nconst signatureGroupCSS = () => ({\n background: 'hsla(0, 0%, 94%, 0.5)',\n border: `1px solid ${theme['ui-line-default']}`,\n padding: theme['default-spacer-md'],\n margin: `${theme['default-spacer-md']} 0`,\n})\n\nconst { Text } = Typography\n\nconst andOrOptions = [\n { label: 'AND', value: 'and' },\n { label: 'OR', value: 'or' },\n]\n\nconst getAndOrValue = val => {\n return andOrOptions.find(option => option.value === val)\n}\n\nconst RecursiveSignaturesGroup = ({\n groupsEnabled,\n // setValue,\n setMustIncludesSignature,\n min,\n name,\n showSecondary,\n signatureLevel,\n title,\n primarySignatureLabel,\n group,\n signatureGroups,\n control,\n addGroup,\n addSignature,\n onChangeSignature,\n removeGroup,\n removeSignature,\n onSelectAndOr,\n nestedPath,\n}) => {\n return (\n \n \n onSelectAndOr(e.value, nestedPath)}\n value={group ? getAndOrValue(group.condition) : undefined}\n isDisabled={!groupsEnabled}\n />\n \n {(group?.signatures?.length > 0 || group?.nested_signatures?.length > 0) && (\n removeGroup(e, nestedPath)}\n noBorder={true}\n flat={true}\n shape='circle'\n style={{ background: 'none', top: '3px', left: '3px', position: 'relative' }}\n >\n \n \n )}\n \n\n {group?.signatures?.map((item, index) => (\n \n ))}\n addSignature(e, nestedPath)}\n style={{ paddingLeft: 0, marginBottom: theme['default-spacer-md'] }}\n >\n Add {title}\n \n {group?.nested_signatures?.map((sigGroup, index) => (\n \n ))}\n \n )\n}\nexport default RecursiveSignaturesGroup\n","import React, { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport uiStore from 'lib/UiStore'\nimport {\n useFieldArray,\n useController,\n theme,\n Element,\n Typography,\n Label,\n Button,\n Input,\n Select,\n} from '@fortressiq/fiq-ds'\n\nimport ControlledSelect from 'components/form/ControlledSelect'\nimport constructApplicationOptions from 'components/form/helpers/constructApplicationOptions'\nimport FieldWrapper from 'components/form/FieldWrapper'\n\nimport { secondarySignatureLevelLabelMap } from '../../helpers'\n\nconst { Text } = Typography\n\nconst secondarySignatureLevelOptions = {\n screen_signature: [\n { label: secondarySignatureLevelLabelMap.none, value: 'none' },\n { label: secondarySignatureLevelLabelMap.field, value: 'field' },\n { label: secondarySignatureLevelLabelMap.value, value: 'value' },\n ],\n}\n\nconst SignaturesForm = ({\n groupsEnabled,\n setMustIncludesSignature,\n min,\n name,\n showSecondary,\n signatureLevel,\n title,\n primarySignatureLabel,\n group,\n signatureGroups,\n index,\n item,\n addGroup,\n addSignature,\n onChangeSignature,\n removeGroup,\n removeSignature,\n nestedPath,\n control,\n}) => {\n const hideRemoveButton = min && min === index + 1\n const secondarySignatureLevel = item?.secondary_signature_level || 'none'\n const arrayName = `${name}.signatures[${index}]`\n\n const constructedValue = () => {\n const value = item.secondary_signature_level || 'none'\n return secondarySignatureLevelOptions.screen_signature.find(val => {\n return val.value === value\n })\n }\n\n return (\n \n \n \n \n {signatureLevel === 'application' ? (\n onChangeSignature(value, nestedPath, 'primary', index)}\n />\n ) : (\n onChangeSignature(e.target.value, nestedPath, 'primary', index)}\n value={item.primary}\n placeholder={`${primarySignatureLabel}`}\n />\n )}\n \n {showSecondary && (\n \n \n \n onChangeSignature(e.value, nestedPath, 'secondary_signature_level', index)}\n />\n {secondarySignatureLevel !== 'none' && (\n onChangeSignature(e.target.value, nestedPath, 'secondary', index)}\n />\n )}\n \n \n )}\n \n {!hideRemoveButton && (\n \n \n )\n}\n\nSignatureBuilder.defaultProps = {\n description: undefined,\n errors: undefined,\n min: undefined,\n signatureLevel: undefined,\n}\n\nSignatureBuilder.propTypes = {\n control: PropTypes.shape({}).isRequired,\n description: PropTypes.string,\n errors: PropTypes.arrayOf(PropTypes.shape()),\n min: PropTypes.number,\n name: PropTypes.string.isRequired,\n primarySignatureLabel: PropTypes.string.isRequired,\n register: PropTypes.func.isRequired,\n signatureLevel: PropTypes.string,\n title: PropTypes.string.isRequired,\n watch: PropTypes.func.isRequired,\n}\n\nexport default SignatureBuilder\n","import React from 'react'\n\nimport { Button } from '@fortressiq/fiq-ds'\n\nimport shortid from 'shortid'\nimport Flash from 'components/flash/Flash'\n\nconst miningRunImportSuccess = ({ miningRunId, processCount, processTypeName }) => {\n const messageText = [\n `Completed importing ${processCount}`,\n `${processTypeName} Process${processCount > 1 ? 'es' : ''}`,\n `for Mining Run ${miningRunId}`,\n ].join(' ')\n const id = shortid.generate()\n Flash.success(\n {\n description: messageText,\n message: 'Mining Run Finished',\n cta: (\n \n ),\n },\n { duration: 0, key: id }\n )\n}\n\nexport default miningRunImportSuccess\n","export const tableWrap = ({ theme }) => ({\n background: theme['legacy-color-gray'],\n borderBottom: `1px solid ${theme['table-border-color']}`,\n padding: theme['default-spacer-md'],\n})\n\nexport const tableRow = theme => ({\n background: `${theme.white} !important`,\n})\n\nexport const notExpandable = () => ({\n '> td > div[role=\"button\"]': {\n display: 'none',\n },\n})\n\nexport const processesTable = ({ theme }) => ({\n background: theme.white,\n border: `1px solid ${theme['table-border-color']}`,\n})\n","import React, { useState, Fragment } from 'react'\nimport { Link } from 'react-router-dom'\nimport { Menu, MenuItem, Popconfirm } from '@fortressiq/fiq-ds'\nimport qs from 'qs'\n\nimport ExportMenuItem from 'components/ExportButton/ExportMenuItem'\nimport ActionMenu from 'components/TrinityTable/ActionMenu/ActionMenu'\n\nimport callbackStore from 'stores/callback'\nimport handleIntegration from 'app/admin/integrations/helpers/handleIntegration'\n\nimport api from 'lib/Api'\n\nconst ActionsMenu = ({\n miningRun: { filterRules = {}, miningType, status, deleteState: [isDeleting] = [], ...miningRunDefault },\n reFetch,\n setShowFormModal,\n setClonedMiningRun,\n integrations,\n isLoadingIntegrations,\n}) => {\n const [miningRun, setMiningRun] = useState(miningRunDefault)\n\n const params = {}\n if (filterRules?.rules && filterRules.rules.length) {\n params.filter = filterRules\n }\n\n const deleteRunHandler = async runId => {\n await api.delete(`/mining_runs/${runId}`)\n reFetch()\n }\n\n const onReady = args => {\n setMiningRun({\n ...miningRun,\n eventLogExportIds: [...miningRun.eventLogExportIds, args.eventLogExport.id],\n })\n callbackStore.call('eventLogExportSuccess', args)\n }\n\n const useReport = async () => {\n const { data: newData } = await api.get(`/process-boundary/show/${miningRun.id}`)\n const startSignatures = newData.start_stop_rankings\n .filter(item => item.user_selected && item.type === 'start')\n .map(item => ({ primary: item.screen_signature, secondary_signature_level: 'none' }))\n const endSignatures = newData.start_stop_rankings\n .filter(item => item.user_selected && item.type === 'end')\n .map(item => ({ primary: item.screen_signature, secondary_signature_level: 'none' }))\n const clonedMiningRun = {\n signatureLevel: 'none',\n miningType: 'default',\n fromReport: true,\n miningParams: {\n ...miningRun.miningParams,\n signature_level: 'screen_signature',\n end_signatures: { signatures: endSignatures },\n start_signatures: { signatures: startSignatures },\n },\n filterRules,\n }\n setClonedMiningRun(clonedMiningRun)\n setShowFormModal(true)\n }\n\n const menu = (\n \n {miningRun?.miningParams?.signature_level !== 'signature' && (\n {\n setClonedMiningRun({ ...miningRun, filterRules, miningType })\n setShowFormModal(true)\n }}\n >\n Clone\n \n )}\n event.stopPropagation()}>\n {\n deleteRunHandler(miningRun.id)\n }}\n placement='left-center'\n title='Are you sure you want to delete this mining run and all of its associated objects?'\n >\n {isDeleting ? 'Deleting' : 'Delete'}\n \n \n {miningType !== 'report' && !!miningRun.eventLogExportIds.length && (\n \n `ids=${eleId}`).join('&')}`}>\n View Exports ({miningRun.eventLogExportIds.length})\n \n \n )}\n {miningType !== 'report' && (\n \n )}\n {miningType !== 'report' && !!Object.keys(params).length && (\n \n Explore Events\n \n )}\n {!isLoadingIntegrations &&\n integrations.map(integration => (\n handleIntegration({ integrationId: integration.id, objectId: miningRun.id })}\n >\n
{integration.title}
\n \n ))}\n {miningType === 'report' && status === 'done' && (\n \n \n View Process Boundary Detection\n \n \n Create Mining Run from Report\n \n \n )}\n
\n )\n return \n}\n\nexport default ActionsMenu\n","import React, { useState } from 'react'\nimport { Overlay } from '@fortressiq/fiq-ds'\n\nconst miningFilterMap = {\n all: 'All mining runs',\n only_favorites: 'Only favorites',\n only_recipes: 'Only recipes',\n exclude_recipes: 'Exclude recipes',\n}\n\nconst MiningFilter = ({ miningFilter, setMiningFilter, pagination, setPagination }) => {\n const [selected, setSelected] = useState(0)\n const [showing, setShowing] = useState(false)\n const [miningFilterText, setMiningFilterText] = useState(\n miningFilter ? miningFilterMap[miningFilter] : 'All mining runs'\n )\n\n const heights = {\n max: 35 * 5,\n }\n const widths = {\n max: 200,\n min: 200,\n width: 200,\n }\n const config = {\n disableOutsideClick: false,\n }\n\n const trigger = {\n button: {\n dropdown: true,\n },\n showing: showing,\n setShowing: setShowing,\n text: miningFilterText,\n type: 'default',\n }\n\n const menu = Object.entries(miningFilterMap).map(([key, value], i) => {\n return {\n selected: selected === i,\n text: value,\n onClick: () => {\n if (value !== 'all') {\n setMiningFilter(key, 'push')\n } else {\n setMiningFilter()\n }\n setPagination({ currentPage: 1, pageSize: pagination.pageSize })\n setMiningFilterText(value)\n setSelected(i)\n setShowing(false)\n },\n }\n })\n\n return (\n \n )\n}\n\nexport default MiningFilter\n","import React from 'react'\nimport { useFela, Element } from '@fortressiq/fiq-ds'\n\nimport {\n metaTextCSS,\n metaLabelCSS,\n metaValueCSS,\n metaValueFilterWrapCSS,\n metaValueFilterCombinatorCSS,\n metaTitlesCSS,\n} from './miningRunDetailsStyles'\n\nimport NestedSignatureDetails from './NestedSignatureDetails'\n\nimport { recipeMap } from '../form/RecipesForm'\n\nimport { signatureLevelLabelMap, secondarySignatureLevelLabelMap } from '../form/helpers'\n\nexport const Filter = ({ filterRules, extraLines = undefined }) => {\n const { css } = useFela()\n\n if (!filterRules.rules) return null\n return (\n
\n {filterRules.combinator &&

{filterRules.combinator}

}\n {filterRules.rules\n .filter(rule => !rule.rules)\n .map((rule, i) => (\n
\n {rule.field && (\n
\n

\n \n {rule.field.replace('_', ' ')} {rule.operator}{' '}\n \n {rule.value || \"''\"}\n

\n
\n )}\n
\n ))}\n {filterRules.rules\n .filter(rule => !!rule.rules)\n .map((rule, i) => (\n
{rule.rules && }
\n ))}\n {extraLines &&\n extraLines.map((item, i) => (\n
\n

\n \n {item.title}\n {' = '}\n \n {item.value}\n

\n
\n ))}\n
\n )\n}\n\nconst MetaItem = ({ itemLabel, itemValue, filterRules, mustIncludes }) => {\n const { css } = useFela()\n\n if (mustIncludes) {\n return (\n \n
Must Includes Signatures:
\n \n \n \n
\n )\n }\n\n if (filterRules) {\n return (\n \n
Filter:
\n \n \n \n
\n )\n }\n\n return (\n

\n {itemLabel}: \n {itemValue}\n

\n )\n}\n\nconst MiningRunDetails = ({ miningRun, miningParamsDefaults, applicationsMap }) => {\n const isApplicationSignature = miningRun.miningParams.signature_level === 'application'\n const signaturesString = ({ signatures }) => {\n if (!signatures || signatures.length === 0) {\n return null\n }\n return signatures\n .map(({ primary, secondary_signature_level: secondarySignatureLevel, secondary }) => {\n const primaryString = isApplicationSignature && applicationsMap ? applicationsMap[primary] : primary\n return secondary\n ? `${primaryString}:${secondary}(${secondarySignatureLevelLabelMap[secondarySignatureLevel]})`\n : primaryString\n })\n ?.join(', ')\n }\n\n const {\n butterfly_count_after: butterflyCountAfter,\n butterfly_count_before: butterflyCountBefore,\n butterfly_signatures: butterflySignatures,\n end_signatures: endSignatures,\n must_include_signature: mustIncludeSignature,\n signature_level: signatureLevel,\n start_signatures: startSignatures,\n } = miningRun.miningParams\n\n const signatureLevelLabel = signatureLevelLabelMap[signatureLevel]\n\n const details = [\n { label: 'Mining Level', value: signatureLevelLabel },\n ...(miningRun.recipe ? [{ label: 'Recipe', value: recipeMap[miningRun.recipe.recipe_type] }] : []),\n ...(startSignatures?.signatures?.length\n ? [{ label: `Start ${signatureLevelLabel}s`, value: signaturesString(startSignatures) }]\n : []),\n ...(endSignatures?.signatures?.length\n ? [{ label: `End ${signatureLevelLabel}s`, value: signaturesString(endSignatures) }]\n : []),\n ...(butterflySignatures?.signatures?.length\n ? [\n { label: `Center ${signatureLevelLabel}s`, value: signaturesString(butterflySignatures) },\n { label: 'Events before', value: butterflyCountBefore },\n { label: 'Events after', value: butterflyCountAfter },\n ]\n : []),\n ]\n const itemsToHide = ['butterfly_signatures', 'butterfly_count_before', 'butterfly_count_after']\n\n const miningParamsDetails = Object.keys(miningParamsDefaults).reduce((acc, key) => {\n // display only mining params that are not equal to default value\n if (\n miningRun.miningParams[key] &&\n miningParamsDefaults[key].value.toString() !== miningRun.miningParams[key].toString() &&\n !itemsToHide.includes(key)\n ) {\n return [\n ...acc,\n {\n label: miningParamsDefaults[key].label,\n value:\n key === 'path_filter_must_include' && miningRun.miningParams[key]\n ? miningRun.miningParams[key].join(', ')\n : miningRun.miningParams[key],\n },\n ]\n }\n return acc\n }, [])\n\n return (\n
\n {details.map(({ label, value }, i) => (\n \n ))}\n {mustIncludeSignature?.signatures?.length || mustIncludeSignature?.nested_signatures?.length ? (\n \n ) : null}\n {miningRun.filterRules?.rules && miningRun.filterRules.rules.length !== 0 && (\n \n )}\n {miningParamsDefaults &&\n miningParamsDetails.map(({ label, value }, i) => (\n \n ))}\n
\n )\n}\n\nMiningRunDetails.propTypes = {}\n\nexport default MiningRunDetails\n","import React from 'react'\nimport { useFela } from '@fortressiq/fiq-ds'\n\nimport {\n metaTextCSS,\n metaLabelCSS,\n metaValueCSS,\n metaValueFilterWrapCSS,\n metaValueFilterCombinatorCSS,\n} from './miningRunDetailsStyles'\n\nconst SECONDARY_SIG_LEVEL_MAP = {\n field: 'Field',\n value: 'Control Key',\n none: 'None',\n}\n\nconst NestedSignaturesDetails = ({ mustIncludes }) => {\n const { css } = useFela()\n\n return (\n
\n {mustIncludes.condition &&

{mustIncludes.condition}

}\n {mustIncludes.signatures &&\n mustIncludes.signatures.map((sig, i) => (\n
\n
\n

\n {sig.primary || ''} \n {sig.secondary ? `: ${sig.secondary}` : ''} \n \n {sig.secondary_signature_level ? `(${SECONDARY_SIG_LEVEL_MAP[sig.secondary_signature_level]})` : ''}\n \n

\n
\n
\n ))}\n {mustIncludes.nested_signatures &&\n mustIncludes.nested_signatures.map((sig, i) => (\n
\n \n
\n ))}\n
\n )\n}\n\nexport default NestedSignaturesDetails\n","import { theme } from '@fortressiq/fiq-ds'\n\nconst sharedTextStyles = {\n fontFamily: 'IBM Plex Mono',\n fontSize: '12px',\n margin: 0,\n}\n\nexport const metaTextCSS = () => ({\n ...sharedTextStyles,\n wordBreak: 'break-all',\n})\nexport const metaLabelCSS = () => ({\n textTransform: 'capitalize',\n})\n\nexport const metaValueCSS = () => ({\n color: theme['text-light'],\n})\n\nexport const metaValueFilterWrapCSS = () => ({\n marginLeft: theme['default-spacer-md'],\n})\n\nexport const metaValueFilterCombinatorCSS = () => ({\n ...sharedTextStyles,\n textTransform: 'uppercase',\n})\n\nexport const metaTitlesCSS = () => ({\n fontWeight: '700',\n fontSize: '10px',\n marginTop: theme['default-spacer-sm'],\n})\n","import React, { Fragment } from 'react'\nimport { Link, Redirect } from 'react-router-dom'\n\nimport uiStore from 'lib/UiStore'\nimport { useUserState } from 'context/UserContext'\n\nimport { Alert } from '@fortressiq/fiq-ds'\n\nconst NoAccess = ({ children, location }) => {\n const { name, roles } = useUserState()\n\n const homeLink = (() => {\n if (roles.includes('virtual_interviewer')) return '/review'\n if (roles.includes('limited')) return '/client-dashboard'\n else return '/'\n })()\n\n if (location.pathname === '/') {\n return \n }\n\n return (\n \n Sorry {name}, but you don't have access to the page {location.pathname}. Please{' '}\n contact your administrator if you think this is an\n error.Return\n \n )\n }\n showIcon={true}\n style={{ margin: '0 auto', marginTop: '72px', width: 'fit-content' }}\n type='lock'\n />\n )\n}\n\nexport default NoAccess\n","import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, Element, Table, Label } from '@fortressiq/fiq-ds'\n\nimport CaptureButtons from '../subComponents/CaptureButtons'\nimport AppListInput from './AppListInput'\nimport { ADD_APPLICATION, REMOVE_APPLICATION, TOGGLE_APPLICATION_CAPTURE } from './Constants'\nimport { configureAppsContainerCSS, hrCSS, tableContainerCSS, transparentBG } from './styles'\n\nconst AppList = ({ processCaptureSettings, dispatch }) => {\n const handleAddList = values => {\n dispatch({ type: ADD_APPLICATION, values })\n }\n\n const onRemoveWindowsProcess = value => {\n dispatch({ type: REMOVE_APPLICATION, value })\n }\n\n const toggleCapture = (value, type, name) => {\n dispatch({ type: TOGGLE_APPLICATION_CAPTURE, name, captureType: type, value })\n }\n\n const columns = [\n {\n Header: 'Application Name',\n accessor: 'name',\n width: 320,\n },\n {\n Header: 'Toggle Capture',\n accessor: 'capture',\n disableSortBy: true,\n minWidth: 160,\n width: 160,\n align: 'right',\n Cell: ({\n row: {\n original: { name, screenshotAllowed, keystrokeAllowed, titleAllowed },\n },\n }) => (\n \n ),\n },\n {\n Header: '',\n accessor: 'actions',\n disableSortBy: true,\n minWidth: 35,\n width: 35,\n align: 'right',\n Cell: ({\n row: {\n original: { name },\n },\n }) => (\n onRemoveWindowsProcess(name)}\n style={{ ...transparentBG, padding: 0, '&:hover': { ...transparentBG } }}\n tooltipProps={{\n title: 'Delete',\n }}\n />\n ),\n },\n ]\n\n return (\n \n \n \n \n \n \n \n \n \n \n )\n}\n\nAppList.propTytpes = {\n processCaptureSettings: PropTypes.arrayOf(PropTypes.shape({})),\n dispatch: PropTypes.func.isRequired,\n}\n\nexport default AppList\n","import React, { useState } from 'react'\nimport { func } from 'prop-types'\nimport { Input } from '@fortressiq/fiq-ds'\n\nconst AppListInput = ({ handleAddList }) => {\n const [appListString, setAppListString] = useState('')\n\n const addApps = ({ target: { value } }) => {\n handleAddList(appListString || value)\n setAppListString('')\n }\n\n return (\n setAppListString(value)}\n onEnter={e => addApps(e)}\n id='configObservers-addApplications'\n placeholder='Add Applications (separated by comma)'\n style={{ width: '100%' }}\n value={appListString}\n />\n )\n}\n\nAppListInput.propTypes = {\n handleAddList: func.isRequired,\n}\n\nexport default AppListInput\n","export const ADD_APPLICATION = 'ADD_APPLICATION'\nexport const REMOVE_APPLICATION = 'REMOVE_APPLICATION'\nexport const TOGGLE_APPLICATION_CAPTURE = 'TOGGLE_APPLICATION_CAPTURE'\nexport const SET_APPLICAIONS = 'SET_APPLICATIONS'\n","import React, { useCallback, useState, useEffect, useReducer } from 'react'\nimport { any, arrayOf, func, number, objectOf, oneOfType, shape, string } from 'prop-types'\nimport { Button, ButtonGroup, Checkbox, Element, get, Group, Popconfirm, Spin, theme } from '@fortressiq/fiq-ds'\nimport { stringify } from 'query-string'\n\nimport api from 'lib/Api'\n\nimport ConfigureObserver from 'components/configureObserver/ConfigureObserver'\nimport { LIST_CATEGORIES, LIST_TYPES } from 'components/configureObserver/Constants'\nimport { getConfiguredAllowBlockLists } from 'components/configureObserver/utils'\nimport AppList from './AppList'\n\nimport { emptyContainer } from './styles'\n\nimport { ADD_APPLICATION, REMOVE_APPLICATION, SET_APPLICAIONS, TOGGLE_APPLICATION_CAPTURE } from './Constants'\n\nconst configureFormInit = {\n applicationListAccessType: LIST_TYPES.NONE.val,\n applicationListValue: undefined,\n urlListAccessType: LIST_TYPES.NONE.val,\n urlListValue: undefined,\n screenshotAllowed: true,\n keystrokeAllowed: true,\n clipboardAllowed: true,\n processCaptureSettings: [],\n titleAllowed: true,\n}\n\nfunction getAppHash(processCaptureSettings) {\n const appHash = {}\n processCaptureSettings.forEach(app => {\n appHash[app.name] = {\n screenshotAllowed: app.screenshotAllowed,\n keystrokeAllowed: app.keystrokeAllowed,\n titleAllowed: app.titleAllowed,\n }\n })\n return appHash\n}\n\nfunction eventsReducer(state, action) {\n switch (action.type) {\n case SET_APPLICAIONS: {\n return { processCaptureSettings: [...action.applications] }\n }\n case ADD_APPLICATION: {\n const appHash = getAppHash(state.processCaptureSettings)\n\n action.values\n .toLowerCase()\n .split(',')\n .filter(app => app)\n .forEach(value => {\n appHash[value.trim()] = {\n screenshotAllowed: appHash[value] ? appHash[value].screenshotAllowed : true,\n keystrokeAllowed: appHash[value] ? appHash[value].keystrokeAllowed : true,\n titleAllowed: appHash[value] ? appHash[value].titleAllowed : true,\n }\n })\n\n return { ...state, processCaptureSettings: hashToArray(appHash) }\n }\n case REMOVE_APPLICATION: {\n const appHash = getAppHash(state.processCaptureSettings)\n delete appHash[action.value]\n return { ...state, processCaptureSettings: hashToArray(appHash) }\n }\n case TOGGLE_APPLICATION_CAPTURE: {\n const appHash = getAppHash(state.processCaptureSettings)\n\n appHash[action.name][action.captureType] = action.value\n return { ...state, processCaptureSettings: hashToArray(appHash) }\n }\n default: {\n return state\n }\n }\n}\n\nconst hashToArray = hash => {\n return Object.keys(hash).map(key => ({\n name: key,\n ...hash[key],\n }))\n}\n\nconst ConfigureModal = ({\n filter,\n observerCount,\n observerId,\n onOk,\n onCancel,\n windowsUser,\n neoConfigObserverId,\n reFetch,\n tenantObserverSettings,\n}) => {\n const [loading, setLoading] = useState(true)\n const [tempValues, setTempValues] = useState(configureFormInit)\n const [originalValues, setOriginalValues] = useState(configureFormInit)\n\n const [state, dispatch] = useReducer(eventsReducer, { processCaptureSettings: [] })\n\n const {\n applicationListAccessType,\n applicationListValue,\n urlListAccessType,\n urlListValue,\n screenshotAllowed,\n keystrokeAllowed,\n clipboardAllowed,\n titleAllowed,\n applyToUsers,\n } = tempValues\n const [urlLists, setUrlLists] = useState([])\n const [applicationLists, setApplicationLists] = useState([])\n\n const observerCountText = observerCount === 1 ? 'Observer' : 'Observers'\n\n const fetchConfigData = useCallback(async () => {\n const filters = { observers: [observerId] }\n const { data } = await api.get('/observers/neo_config_policies', { filters: filters })\n const first = data[0]?.data?.attributes\n\n const { url: urlListValueObj, application: applicationListValueObj } = getConfiguredAllowBlockLists(\n first.allowBlockLists\n )\n\n const newUrlListAccessType = urlListValueObj?.accessType || LIST_TYPES.NONE.val\n\n const newAppListAccessType = applicationListValueObj?.accessType || LIST_TYPES.NONE.val\n\n const newFormValues = {\n ...first,\n urlListAccessType: newUrlListAccessType,\n urlListValue: urlListValueObj?.id,\n applicationListAccessType: newAppListAccessType,\n applicationListValue: applicationListValueObj?.id,\n applyToUsers: !!neoConfigObserverId,\n }\n setTempValues(newFormValues)\n setOriginalValues(newFormValues)\n dispatch({ type: SET_APPLICAIONS, applications: newFormValues.processCaptureSettings })\n setLoading(false)\n }, [observerId, neoConfigObserverId])\n\n const fetchUrlAllowAndBlockLists = useCallback(async () => {\n const urlListResponse = await api.get('/allow_block_lists', { category_type: LIST_CATEGORIES.URL })\n setUrlLists(urlListResponse.data.allowBlockList)\n\n const applicationListResponse = await api.get('/allow_block_lists', { category_type: LIST_CATEGORIES.APPLICATION })\n setApplicationLists(applicationListResponse.data.allowBlockList)\n\n if (observerId) fetchConfigData()\n else {\n setTempValues(configureFormInit)\n setLoading(false)\n }\n }, [observerId, fetchConfigData])\n\n useEffect(() => {\n fetchUrlAllowAndBlockLists()\n }, [fetchUrlAllowAndBlockLists])\n\n const onChange = (key, value) => {\n const newFormValues = { ...tempValues }\n newFormValues[key] = value\n setTempValues(newFormValues)\n }\n\n const accessTypeOnChange = (key, type, value) => {\n const listValue = `${type}ListValue`\n const newFormValues = { ...tempValues }\n newFormValues[listValue] = null\n newFormValues[key] = value\n setTempValues(newFormValues)\n }\n\n const reset = () => {\n dispatch({ type: SET_APPLICAIONS, applications: originalValues?.processCaptureSettings || [] })\n setTempValues(originalValues)\n }\n\n const handleConfigure = async () => {\n const allowBlockLists = []\n if (urlListValue) allowBlockLists.push({ id: urlListValue, type: LIST_CATEGORIES.URL })\n if (applicationListValue) allowBlockLists.push({ id: applicationListValue, type: LIST_CATEGORIES.APPLICATION })\n\n const newConfig = {\n clipboardAllowed: clipboardAllowed || false,\n keystrokeAllowed: keystrokeAllowed || false,\n screenshotAllowed: screenshotAllowed || false,\n allowBlockLists,\n windowProcessCaptures: state.processCaptureSettings,\n titleAllowed: titleAllowed || false,\n }\n\n const filtersParams = { ...filter }\n if (!applyToUsers && observerId) filtersParams.observers = [observerId]\n if (windowsUser && applyToUsers) filtersParams.usernames = [windowsUser]\n const filters = stringify({ filters: JSON.stringify({ ...filtersParams }) })\n await api.put(`/observers/neo_config_policies?${filters}`, newConfig, false)\n\n if (windowsUser) {\n const encodedWindowUser = encodeURIComponent(windowsUser).replace(/\\./g, '%252E')\n if (!applyToUsers) {\n await api.put(`/windows_username/${encodedWindowUser}`, {\n windows_username: encodedWindowUser,\n neo_config_observer_id: null,\n })\n } else if (tenantObserverSettings) {\n await api.put(`/windows_username/${encodedWindowUser}`, {\n windows_username: encodedWindowUser,\n neo_config_observer_id: observerId,\n })\n } else {\n await api.post('/windows_username', {\n windows_username: encodedWindowUser,\n neo_config_observer_id: observerId,\n })\n }\n }\n\n onOk()\n reFetch()\n }\n\n const isSubmitDisabled = () => {\n const urlListNotFilled = urlListAccessType !== LIST_TYPES.NONE.val && !urlListValue\n const applicationListNotFilled = applicationListAccessType !== LIST_TYPES.NONE.val && !applicationListValue\n return urlListNotFilled || applicationListNotFilled\n }\n\n if (loading) {\n return (\n \n Loading…\n \n )\n }\n\n return (\n \n \n \n {windowsUser && (\n onChange('applyToUsers', value)}\n >\n Use configuration for observers owned by this user ({windowsUser})\n \n )}\n \n \n \n \n {observerCount > 1 ? (\n \n \n \n ) : (\n \n )}\n \n \n \n )\n}\n\nConfigureModal.propTypes = {\n filter: shape({\n tags: arrayOf(string),\n observers: arrayOf(string),\n }),\n neoConfigObserverId: number,\n observerCount: number.isRequired,\n observerId: oneOfType([number, string, null, undefined]),\n onOk: func.isRequired,\n onCancel: func.isRequired,\n reFetch: func,\n tenantObserverSettings: oneOfType([objectOf(any), undefined]),\n}\n\nConfigureModal.defaultProps = {\n filter: {},\n neoConfigObserverId: undefined,\n observerId: undefined,\n reFetch: () => null,\n}\n\nexport default ConfigureModal\n","/* eslint-disable import/prefer-default-export */\nimport { theme } from '@fortressiq/fiq-ds'\n\nexport const hrCSS = () => ({\n borderColor: theme['ui-line-default'],\n borderStyle: 'solid',\n marginBottom: theme['default-spacer-lg'],\n})\n\nexport const configureAppsContainerCSS = () => ({\n background: theme['field-bg-dark'],\n border: `1px solid ${theme['antd-card-border']}`,\n borderRadius: theme['border-radius-base'],\n padding: theme['default-spacer-md'],\n})\n\nexport const tableContainerCSS = () => ({\n background: theme.white,\n borderRadius: theme['border-radius-base'],\n height: '150px',\n overflow: 'auto',\n marginTop: theme['default-spacer-md'],\n})\n\nexport const transparentBG = {\n background: 'transparent',\n}\n\nexport const emptyContainer = {\n alignItems: 'center',\n display: 'flex',\n height: '680px',\n justifyContent: 'center',\n maxHeight: '80vh',\n}\n\nexport const errorCSS = () => ({\n color: theme['color-red'],\n fontSize: theme['font-size-xs'],\n margin: `${theme['default-spacer-xs']} 0`,\n '&:last-child': { marginBottom: '0' },\n})\n","import React, { Fragment, useEffect, useCallback, useState } from 'react'\nimport { AdvancedCell, Badge, Button, defaultModalConfig, useFela, useModal, Select } from '@fortressiq/fiq-ds'\nimport { Link } from 'react-router-dom'\nimport filesize from 'filesize'\nimport { parse } from 'query-string'\n\nimport { useFetch } from 'lib/hooks'\nimport Tags from 'components/tags/Tags'\n\nimport Can, { roleActionCheck } from 'components/can/Can'\nimport TrinityTable from 'components/TrinityTable'\n\nimport { useUserState } from 'context/UserContext'\n\nimport { useHeaderDispatch } from 'app/header/HeaderContext'\n\nimport DataMetricsCards from './subComponents/DataMetricsCards'\nimport downloadCSV from './common/downloadCSV'\nimport { constructStats, timeOptions } from './common/Util'\n\nimport ActionsMenu from './subComponents/ActionsMenu'\nimport FirstDetected from './subComponents/FirstDetected'\nimport LastDetected from './subComponents/LastDetected'\nimport MiniSparkByte from './subComponents/MiniSparkByte'\nimport MiniSparkEvent from './subComponents/MiniSparkEvent'\nimport ConfigureModal from './ConfigureModal'\n\nimport { overviewContainerCSS } from './styles/index.js'\n\nconst sortKeyMap = {\n firstSeenAt: 'first_seen_at',\n lastSeenAt: 'last_seen_at',\n user: 'windows_username',\n}\n\nconst observersModalConfig = {\n config: {\n ...defaultModalConfig,\n interactWithKeyboard: {\n closeOnEnter: false,\n closeOnEscape: false,\n },\n },\n footer: false,\n style: { maxWidth: '80%', width: '640px' },\n bodyStyle: { maxHeight: '80vh', overflow: 'scroll' },\n}\n\nconst Observers = ({ location: { search } }) => {\n const [tenantObserverSettings, setTenantObserverSettings] = useState({})\n const [statsRange, setStatsRange] = useState(timeOptions[120].value)\n const [observerCount, setObserverCount] = useState(0)\n const [reFetch, setRefetch] = useState(0)\n const { addModal, removeModal } = useModal()\n const { roles } = useUserState()\n const modalID = 'configure-observers-modal'\n const { css } = useFela()\n const configureObserversText = `Configure ${observerCount} ${observerCount === 1 ? 'Observer' : 'Observers'}`\n\n const { data: { integrations = [] } = {}, isLoadingIntegrations } = useFetch('/dynamic_integrations/observer/list')\n\n const constructData = useCallback(\n data => {\n setTenantObserverSettings(data.tenantObserverSettings)\n return data.observers.map(item => {\n const statsByDay = item.statsByDay ? item.statsByDay : {}\n const observerStats = constructStats(statsByDay)\n return {\n ...item,\n dataCollected: { data: observerStats.sizes, total: filesize(item.stats.bytes) },\n eventsCollected: { data: observerStats.events, total: item.stats.events },\n }\n })\n },\n [setTenantObserverSettings]\n )\n\n const headerDispatch = useHeaderDispatch()\n useEffect(() => {\n const timeRangeOptions = Object.values(timeOptions)\n const selectOptions = []\n timeRangeOptions.map(t => selectOptions.push(t))\n let selectedOption\n\n timeRangeOptions.map(t => {\n if (t.value === statsRange) {\n selectedOption = t\n }\n\n return null\n })\n\n headerDispatch({\n type: 'set',\n heading: 'Observer Activity',\n title: 'Observer Activity',\n toolbarActions: (\n setStatsRange(value)}\n options={selectOptions}\n style={{ width: '200px' }}\n />\n ),\n })\n\n return () => {\n headerDispatch({\n type: 'clear',\n })\n removeModal(modalID)\n }\n }, [headerDispatch, statsRange, modalID, removeModal])\n\n const openConfigModal = () => {\n let observersFilter = {}\n\n if (parse(search)?.globalFilter) {\n observersFilter = JSON.parse(parse(search).globalFilter)\n }\n addModal({\n children: (\n \n ),\n ...observersModalConfig,\n header: configureObserversText,\n id: modalID,\n })\n }\n\n const getObserverCount = data => setObserverCount(data.totalCount)\n\n const sharedChartCellProps = {\n disableResizing: true,\n disableSortBy: true,\n cellStyle: { alignItems: 'flex-start', flexDirection: 'column' },\n width: 216,\n }\n const columns = [\n {\n Header: 'Id',\n accessor: 'id',\n width: 70,\n minWidth: 70,\n Cell: ({ value }) => (\n \n {value}\n \n ),\n },\n {\n Header: 'Name',\n accessor: 'name',\n Cell: ({\n value,\n row: {\n original: { id },\n },\n }) => (\n \n {value}\n \n ),\n },\n {\n Header: 'Machine',\n accessor: 'machine',\n Cell: ({ value }) => {value},\n },\n {\n accessor: 'user',\n Header: 'User',\n Cell: ({ value }) => {value},\n },\n {\n Header: 'Tags',\n accessor: 'tags',\n disableSortBy: true,\n Cell: ({\n value: tags,\n row: {\n original: { id },\n },\n }) => ,\n },\n {\n Header: 'Date Connected',\n accessor: 'firstSeenAt',\n Cell: ({\n value,\n row: {\n original: { status },\n },\n }) => FirstDetected({ firstSeenAt: value, status: status }),\n },\n {\n Header: 'Last Detected',\n accessor: 'lastSeenAt',\n Cell: ({ value }) => ,\n },\n {\n Header: 'Total Data Collected',\n accessor: 'dataCollected',\n Cell: ({ row: { id }, value }) => (\n \n ),\n ...sharedChartCellProps,\n },\n {\n Header: 'Total Events',\n accessor: 'eventsCollected',\n Cell: ({\n row: {\n id,\n original: { name },\n },\n value,\n }) => (\n \n ),\n ...sharedChartCellProps,\n },\n {\n Header: 'Recording',\n accessor: 'neoActive',\n width: 120,\n disableSortBy: true,\n Cell: ({ value: neoActive }) =>\n neoActive ? (\n \n \n Enabled\n \n ) : (\n \n \n Disabled\n \n ),\n },\n ...(roleActionCheck('/observer:configure-neo', roles)\n ? [\n {\n Header: 'Actions',\n accessor: 'actions',\n width: 75,\n align: 'center',\n disableSortBy: true,\n cellStyle: { overflow: 'visible' },\n Cell: ({\n row: {\n index: rowIndex,\n original: { id, neoActive, user, name },\n },\n updateCellData,\n }) => (\n setRefetch(reFetch + 1)}\n rowIndex={rowIndex}\n setTenantObserverSettings={setTenantObserverSettings}\n tenantObserverSettings={tenantObserverSettings}\n updateCellData={updateCellData}\n user={user}\n />\n ),\n },\n ]\n : []),\n ]\n\n return (\n \n
\n \n
\n \n \n ,\n ,\n ]}\n reFetch={reFetch}\n getTableData={getObserverCount}\n globalFilterOptions={['observersTags', 'observers', 'user']}\n sortKeyMap={sortKeyMap}\n columns={columns}\n url='/observers'\n constructData={constructData}\n tableId='observers-table'\n />\n
\n )\n}\n\nObservers.propTypes = {}\n\nexport default Observers\n","import React from 'react'\nimport { Element, theme } from '@fortressiq/fiq-ds'\n\nconst Metric = ({ children }) => (\n \n {children}\n \n)\n\nexport default Metric\n","import {\n addDays,\n addHours,\n addMonths,\n differenceInDays,\n differenceInHours,\n differenceInMonths,\n format,\n startOfDay,\n startOfHour,\n startOfMonth,\n} from 'date-fns'\n\nimport { FNS_DATE_FORMAT_SHORT, FNS_TIME_FORMAT_SHORT, DATE_TIME_FORMAT_TWENTYFOUR_HOUR } from 'constants/app-constants'\n\nexport const timeOptions = {\n 1: { value: 1, label: 'Last 24 Hrs' },\n 7: { value: 7, label: 'Last 7 days' },\n 30: { value: 30, label: 'Last month' },\n 120: { value: 120, label: 'Last 4 months' },\n 365: { value: 365, label: 'Last Year' },\n}\n\nexport const observerActions = {\n SET_STATS: 'SET_STATS',\n SET_OBSERVERS: 'SET_OBSERVERS',\n SET_DAY_STATS: 'SET_DAY_STATS',\n OPTION_CHANGED: 'OPTION_CHANGED',\n NEO_STATUS_CHANGE: 'NEO_STATUS_CHANGE',\n}\n\nexport const timeSteps = {\n HOUR: 'hour',\n DAY: 'day',\n MONTH: 'month',\n}\n\nexport const getTimeFormat = step => {\n let timeFormat = FNS_DATE_FORMAT_SHORT\n if (step === timeSteps.HOUR) {\n timeFormat = FNS_TIME_FORMAT_SHORT\n }\n return {\n timeFormat,\n }\n}\n\nconst addTime = (step, time) => {\n if (step === timeSteps.HOUR) {\n return addHours(time, 1)\n } else if (step === timeSteps.DAY) {\n return addDays(time, 1)\n } else if (step === timeSteps.MONTH) {\n return addMonths(time, 1)\n }\n}\n\nexport const constructStats = (stats, time = null, step = timeSteps.DAY, total = 120) => {\n const events = []\n const sizes = []\n const { timeFormat } = getTimeFormat(step)\n // if time is not given, use the earliest entry in stats\n\n if (!time) {\n const now = new Date()\n if (step === timeSteps.HOUR) {\n time = startOfHour(new Date(Object.keys(stats)[0]))\n total = differenceInHours(now, time) + 1\n } else if (step === timeSteps.DAY) {\n time = startOfDay(new Date(Object.keys(stats)[0]))\n total = differenceInDays(now, time) + 1\n } else if (step === timeSteps.MONTH) {\n time = startOfMonth(new Date(Object.keys(stats)[0]))\n total = differenceInMonths(now, time) + 1\n }\n }\n for (let i = 0; i < total; i += 1) {\n const lookUpKey = `${format(time, DATE_TIME_FORMAT_TWENTYFOUR_HOUR)} UTC`\n events.push({\n label: format(time, timeFormat),\n value: stats[lookUpKey] ? stats[lookUpKey].events : 0,\n })\n sizes.push({\n label: format(time, timeFormat),\n value: stats[lookUpKey] ? stats[lookUpKey].bytes : 0,\n })\n time = addTime(step, time)\n }\n return {\n events,\n sizes,\n }\n}\n\nexport const getFillerForDateArray = (difference, start, step = timeSteps.DAY) => {\n const filler = []\n if (difference > 0) {\n let time = null\n const startTime = new Date(start)\n if (step === timeSteps.HOUR) {\n time = startOfHour(startTime)\n } else if (step === timeSteps.DAY) {\n time = startOfDay(startTime)\n } else if (step === timeSteps.MONTH) {\n time = startOfMonth(startTime)\n }\n const { timeFormat } = getTimeFormat(step)\n for (let i = 0; i < difference; i += 1) {\n filler.unshift({\n time: format(time, timeFormat),\n value: 0,\n })\n time = addTime(step, time)\n }\n }\n return filler\n}\n","import Localizer from 'lib/Localizer'\nimport uiStore from 'lib/UiStore'\nimport api from 'lib/Api'\nimport { parse } from 'query-string'\nimport { JsonParam, decodeQueryParams } from 'use-query-params'\n\nconst downloadCSV = async query => {\n const { globalFilter } = decodeQueryParams({ globalFilter: JsonParam }, parse(query))\n function saveFile(data, filename, mimetype) {\n if (!data) return\n const blob = data.constructor !== Blob ? new Blob([data], { type: mimetype || 'application/octet-stream' }) : data\n if (navigator.msSaveBlob) {\n navigator.msSaveBlob(blob, filename)\n return\n }\n const lnk = document.createElement('a')\n const url = window.URL\n if (mimetype) {\n lnk.type = mimetype\n }\n lnk.download = filename || 'untitled'\n lnk.href = url.createObjectURL(blob)\n lnk.dispatchEvent(new MouseEvent('click'))\n setTimeout(url.revokeObjectURL.bind(url, lnk.href))\n }\n const columns = [\n 'id',\n 'name',\n 'machine',\n 'user',\n 'tags',\n 'firstSeenAt',\n 'lastSeenAt',\n 'totalByteSum',\n 'totalEventSum',\n ]\n const params = {\n per_page: 1000,\n page: 1,\n filters: { ...globalFilter },\n }\n const {\n data: { observers },\n } = await api.get('/observers', params)\n const items = observers.map(observer => ({\n ...observer,\n totalByteSum: observer.stats.bytes,\n totalEventSum: observer.stats.events,\n }))\n const replacer = (key, value) => (value === null ? '' : value)\n let csv = items.map(row =>\n columns\n .map(fieldName => {\n switch (fieldName) {\n case 'firstSeenAt':\n return JSON.stringify(Localizer.asDate(row[fieldName]), replacer).replace(/\\\\\"/g, '\"\"')\n case 'lastSeenAt':\n return JSON.stringify(Localizer.asDate(row[fieldName]) || '--', replacer).replace(/\\\\\"/g, '\"\"')\n case 'tags': {\n const firstTag = row.tags?.shift()?.name\n const tagString = row.tags?.reduce((acc, tag) => `${acc},${tag.name}`, firstTag)\n if (tagString) return JSON.stringify(tagString, replacer).replace(/\\\\\"/g, '\"\"')\n return ''\n }\n default:\n return JSON.stringify(row[fieldName], replacer).replace(/\\\\\"/g, '\"\"')\n }\n })\n .join(',')\n )\n csv.unshift(\n '\"Observer ID\",\"Observer Name\",\"Machine ID\",\"User\",\"Tags\",\"Date Connected\",\"Last Detected\",\"Total Data Collected\",\"Total Events\"'\n )\n csv = csv.join('\\r\\n')\n const blobData = new Blob([csv])\n saveFile(blobData, `${uiStore.tenant.name}-observers.csv`)\n}\n\nexport default downloadCSV\n","export const overviewContainerCSS = ({ theme }) => ({\n background: theme['legacy-color-gray'],\n borderBottom: `1px solid ${theme['antd-card-border']}`,\n padding: theme['default-spacer-lg'],\n})\n\nexport const giftCSS = () => ({\n marginRight: '5px',\n position: 'relative',\n top: 0,\n})\n\nexport const sparkTextCSS = () => ({\n minWidth: '50px',\n})\nexport const actionsIconCSS = () => ({\n marginRight: '19px',\n})\n","import React, { useState } from 'react'\nimport { Icon, Overlay, theme, useModal } from '@fortressiq/fiq-ds'\nimport PropTypes from 'prop-types'\nimport { stringify } from 'query-string'\n\nimport { addPXSuffix } from 'helpers'\nimport handleIntegration from 'app/admin/integrations/helpers/handleIntegration'\nimport api from 'lib/Api'\nimport ConfigureModal from '../ConfigureModal'\n\nconst ActionsMenu = ({\n id,\n name,\n rowIndex,\n updateCellData,\n neoActive,\n user,\n tenantObserverSettings,\n setTenantObserverSettings,\n reFetch,\n integrations,\n isLoadingIntegrations,\n observersModalConfig,\n}) => {\n const [actionsShowing, setActionsShowing] = useState({})\n\n const { addModal, removeModal } = useModal()\n const modalID = 'configure-observer-modal'\n\n const setShowing = showing => {\n setActionsShowing({ ...actionsShowing, [id]: showing })\n }\n\n const handleConfigureObserver = () => {\n removeModal(modalID)\n }\n const handleCancelConfigureObserver = () => {\n removeModal(modalID)\n }\n\n const openConfigureModal = () => {\n addModal({\n children: (\n \n ),\n ...observersModalConfig,\n header: `Configure ${name}`,\n id: modalID,\n })\n }\n\n const toggleRecordAllForUser = async () => {\n const currentRecordSetting = tenantObserverSettings[user]?.activate_new_observers || false\n const encodedWindowUser = encodeURIComponent(user).replace(/\\./g, '%252E')\n const { data } = await api.put(`/windows_username/${encodedWindowUser}`, {\n windows_username: encodedWindowUser,\n activate_new_observers: !currentRecordSetting,\n })\n setTenantObserverSettings({ ...tenantObserverSettings, [user]: data })\n }\n\n const setIfBaseConfig = async () => {\n const currentUserNeoConfigSetting = tenantObserverSettings[user]?.neo_config_observer_id || false\n const currentRecordSetting = tenantObserverSettings[user]?.activate_new_observers || false\n const encodedWindowUser = encodeURIComponent(user).replace(/\\./g, '%252E')\n if (currentUserNeoConfigSetting) {\n await api.put(`/windows_username/${encodedWindowUser}`, {\n windows_username: encodedWindowUser,\n neo_config_observer_id: null,\n activate_new_observers: currentRecordSetting,\n })\n } else {\n const filters = { observers: [id] }\n const { data } = await api.get('/observers/neo_config_policies', { filters: filters })\n const {\n clipboardAllowed,\n keystrokeAllowed,\n screenshotAllowed,\n titleAllowed,\n allowBlockLists,\n windowProcessCaptures,\n } = data[0]?.data?.attributes || {}\n\n const params = {\n clipboardAllowed,\n keystrokeAllowed,\n screenshotAllowed,\n titleAllowed,\n allowBlockLists,\n windowProcessCaptures,\n }\n await api.put(\n `/observers/neo_config_policies?${stringify({ filters: JSON.stringify({ usernames: [user] }) })}`,\n params,\n false\n )\n\n await api.put(`/windows_username/${encodedWindowUser}`, {\n windows_username: encodedWindowUser,\n neo_config_observer_id: id,\n activate_new_observers: currentRecordSetting,\n })\n }\n reFetch()\n }\n\n const setNeoStatus = async active => {\n const { data } = await api.put(`/observers/${id}/neo`, { active })\n updateCellData(rowIndex, 'neoActive', data.active)\n }\n\n const widthOfDropdown = 420\n const widthofArrowCol = 28\n const sharedTooltipProps = {\n mouseEnterDelay: 3000,\n placement: 'left-center',\n }\n const menuTexts = [\n 'Start Recording',\n 'Stop Recording',\n tenantObserverSettings && tenantObserverSettings[user]?.neo_config_observer_id\n ? \"Do Not Use Configuration for This User's Observers\"\n : \"Use Configuration for This User's Observers\",\n tenantObserverSettings && tenantObserverSettings[user]?.activate_new_observers\n ? 'Do Not Automatically Record New Observers For This User'\n : 'Automatically Record New Observers For This User',\n 'Configure',\n ]\n\n return (\n .fiqds-overlay-dropdown-container': {\n position: 'relative',\n },\n },\n },\n dropdown: {\n closeOnRowClick: true,\n },\n }}\n dark={true}\n dropdownStyle={{\n left: addPXSuffix(-widthOfDropdown + 26),\n overflow: 'auto',\n position: 'relative',\n top: 0,\n width: addPXSuffix(widthOfDropdown),\n }}\n id={`observer-${id}-actions`}\n menu={[\n {\n disabled: neoActive,\n icon: 'playcircle',\n iconProps: {\n fill: 'transparent',\n color: neoActive ? theme['text-vlight'] : theme.white,\n size: 12,\n textColor: neoActive ? theme['text-vlight'] : theme.white,\n },\n onClick: () => setNeoStatus(true),\n text: menuTexts[0],\n tooltip: {\n ...sharedTooltipProps,\n title: menuTexts[0],\n },\n },\n {\n disabled: !neoActive,\n icon: 'stop',\n iconProps: {\n fill: 'transparent',\n color: !neoActive ? theme['text-vlight'] : theme.white,\n size: 12,\n },\n onClick: () => setNeoStatus(false),\n text: menuTexts[1],\n tooltip: {\n ...sharedTooltipProps,\n title: menuTexts[1],\n },\n },\n {\n icon: 'playcircle',\n iconProps: {\n fill:\n tenantObserverSettings && tenantObserverSettings[user]?.neo_config_observer_id\n ? theme['success-color']\n : theme['fiq-red'],\n color: 'transparent',\n size: 12,\n textColor:\n tenantObserverSettings && tenantObserverSettings[user]?.neo_config_observer_id\n ? theme['success-color']\n : theme['fiq-red'],\n },\n onClick: setIfBaseConfig,\n text: menuTexts[2],\n tooltip: {\n ...sharedTooltipProps,\n title: menuTexts[2],\n },\n },\n {\n onClick: toggleRecordAllForUser,\n icon: 'playcircle',\n iconProps: {\n fill:\n tenantObserverSettings && tenantObserverSettings[user]?.activate_new_observers\n ? theme['success-color']\n : theme['fiq-red'],\n color: 'transparent',\n size: 12,\n textColor:\n tenantObserverSettings && tenantObserverSettings[user]?.activate_new_observers\n ? theme['success-color']\n : theme['fiq-red'],\n },\n text: menuTexts[3],\n tooltip: {\n ...sharedTooltipProps,\n title: menuTexts[3],\n },\n },\n {\n onClick: openConfigureModal,\n text: menuTexts[4],\n tooltip: {\n ...sharedTooltipProps,\n title: menuTexts[4],\n },\n },\n ...(!isLoadingIntegrations &&\n integrations.map(integration => ({\n onClick: () => handleIntegration({ integrationId: integration.id, objectId: id }),\n text: integration.title,\n tooltip: {\n ...sharedTooltipProps,\n title: integration.title,\n },\n }))),\n ]}\n trigger={{\n setShowing: setShowing,\n node: (\n \n ),\n showing: actionsShowing[id],\n type: 'primary',\n }}\n widths={{\n max: 'auto',\n min: widthofArrowCol,\n width: widthofArrowCol,\n }}\n />\n )\n}\n\nActionsMenu.defaultProps = {\n isLoadingIntegrations: undefined,\n tenantObserverSettings: undefined,\n integrations: undefined,\n}\n\nActionsMenu.propTypes = {\n id: PropTypes.number.isRequired,\n rowIndex: PropTypes.number.isRequired,\n updateCellData: PropTypes.func.isRequired,\n neoActive: PropTypes.bool.isRequired,\n user: PropTypes.string.isRequired,\n tenantObserverSettings: PropTypes.shape(),\n reFetch: PropTypes.func.isRequired,\n isLoadingIntegrations: PropTypes.bool,\n integrations: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number,\n title: PropTypes.string,\n })\n ),\n}\n\nexport default ActionsMenu\n","import React from 'react'\nimport { Button, Group, Icon, theme } from '@fortressiq/fiq-ds'\n\nconst CaptureButtons = ({ name, toggleCapture, keystrokeAllowed, screenshotAllowed, titleAllowed }) => {\n const CaptureButton = ({ icon, title, captureType, toggleOn }) => (\n toggleCapture(!toggleOn, captureType, name)}\n >\n {!toggleOn && (\n \n )}\n \n )\n\n const getButtonTitle = (isOn, string) => {\n return isOn ? `${string}: On` : `${string}: Off`\n }\n\n return (\n \n \n \n \n \n )\n}\n\nexport default CaptureButtons\n","import React, { useEffect, useState, useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport filesize from 'filesize'\nimport sum from 'lodash/sum'\nimport round from 'lodash/round'\nimport { Group, useFela } from '@fortressiq/fiq-ds'\nimport { sub, startOfDay } from 'date-fns'\nimport { useMount } from 'react-use'\n\nimport api from 'lib/Api'\n\nimport LoadingContainer from 'components/LoadingContainer'\nimport PieMetricCard from 'components/cards/public/PieMetricCard'\nimport MetricCardBigText from 'components/cards/public/MetricCardBigText'\nimport { constructStats, timeSteps } from '../common/Util'\n\nconst DataMetricsCards = React.memo(({ statsRange }) => {\n const [observerEventTotals, setObserverEventTotals] = useState([])\n const [eventsAndSizes, setEventsAndSizes] = useState({ events: [], sizes: [] })\n const [allEventsAndSizes, setAllEventsAndSizes] = useState({ events: [], sizes: [] })\n const [dayEventsAndSizes, setDayEventsAndSizes] = useState(null)\n const [isLoading, setIsLoading] = useState(true)\n\n useMount(() => {\n const fetchData = async () => {\n setIsLoading(true)\n const { data } = await api.get('/observers/stats', {\n step: timeSteps.DAY,\n range: 365,\n end_date: 'now',\n })\n\n const { events: allEvents, sizes: allSizes } = constructStats(\n data.stats,\n sub(startOfDay(new Date()), { days: 364 }),\n timeSteps.DAY,\n 365\n )\n\n setObserverEventTotals(\n data.observer_event_totals\n .map(observer => ({ label: observer.name, value: observer.event_count }))\n .sort((a, b) => b.value - a.value)\n )\n\n setAllEventsAndSizes({ events: allEvents, sizes: allSizes })\n setEventsAndSizes({ events: allEvents, sizes: allSizes, observerEventTotals })\n setIsLoading(false)\n }\n fetchData()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n useEffect(() => {\n const fetchData = async () => {\n setIsLoading(true)\n const { data } = await api.get('/observers/stats', {\n step: timeSteps.HOUR,\n range: 24,\n end_date: 'now',\n })\n\n const { events: allEvents, sizes: allSizes } = constructStats(\n data.stats,\n sub(new Date(), { hours: 24 }),\n timeSteps.HOUR,\n 24\n )\n\n setDayEventsAndSizes({ events: allEvents, sizes: allSizes })\n setEventsAndSizes({ events: allEvents, sizes: allSizes })\n setIsLoading(false)\n }\n if (statsRange === 1) {\n if (!dayEventsAndSizes) {\n fetchData()\n } else {\n setEventsAndSizes(dayEventsAndSizes)\n }\n } else {\n setEventsAndSizes(allEventsAndSizes)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [statsRange])\n\n const arrLength = statsRange === 1 ? 24 : statsRange\n\n return (\n \n \n \n )\n})\n\nconst Cards = React.memo(({ recentEventCounts, recentSizeCounts, observerEventTotals }) => {\n const { css } = useFela()\n\n const recentEventCountsTotal = () => sum(recentEventCounts.map(i => parseInt(i.value, 10)))\n\n const memoSumDataCounts = useMemo(() => {\n const sumDataCounts = () => {\n return filesize(round(sum(recentSizeCounts.map(i => parseFloat(i.value))), 2), { fullform: true }).split(' ')\n }\n\n return sumDataCounts()\n }, [recentSizeCounts])\n\n return (\n \n .fiqds-col > .fiqds-card': {\n width: '100%',\n },\n }}\n type='flex'\n >\n \n \n \n \n
\n )\n})\n\nDataMetricsCards.proptypes = {\n statsRange: PropTypes.number.isRequired,\n}\n\nexport default DataMetricsCards\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { Button, Icon, theme, DateCell, useFela } from '@fortressiq/fiq-ds'\n\nimport { giftCSS } from '../styles/index.js'\n\nconst FirstDetected = ({ status, firstSeenAt }) => {\n const { css } = useFela()\n if (status !== 'new') {\n return firstSeenAt ? : '--'\n }\n if (status === 'new') {\n return (\n \n )\n }\n}\n\nFirstDetected.propTypes = {\n status: PropTypes.string.isRequired,\n firstSeenAt: PropTypes.string.isRequired,\n}\n\nexport default FirstDetected\n","import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { Badge, DateCell } from '@fortressiq/fiq-ds'\n\nimport { getActive } from 'lib/Time'\n\nconst statusColorMap = {\n active: 'success',\n some: 'warning',\n inactive: 'default',\n}\n\nconst LastDetected = ({ lastSeenAt }) => {\n const status = getActive(lastSeenAt)\n\n return (\n \n \n {lastSeenAt ? : '--'}\n \n )\n}\n\nLastDetected.propTypes = {\n lastSeenAt: PropTypes.string.isRequired,\n}\n\nexport default LastDetected\n","import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport SparkChart from 'components/cards/public/SparkChart'\nimport { useFela } from '@fortressiq/fiq-ds'\n\nimport { sparkTextCSS } from '../styles/index.js'\n\nconst MiniSparkByte = ({ data, id, total }) => {\n const { css } = useFela()\n\n return (\n \n
{total}
\n \n
\n )\n}\n\nMiniSparkByte.propTypes = {\n data: PropTypes.arrayOf(\n PropTypes.shape({\n time: PropTypes.string,\n total: PropTypes.number,\n })\n ).isRequired,\n total: PropTypes.string.isRequired,\n}\nexport default MiniSparkByte\n","import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport { Link } from 'react-router-dom'\nimport SparkChart from 'components/cards/public/SparkChart'\nimport { useFela } from '@fortressiq/fiq-ds'\nimport numAbbr from 'number-abbreviate'\n\nimport { generateURLQueryfromRules } from 'components/query_builder/utils'\n\nimport { sparkTextCSS } from '../styles/index.js'\n\nconst MiniSparkEvent = ({ observerName, data, id, total }) => {\n const { css } = useFela()\n\n const rules = [\n {\n field: 'observer_name',\n value: observerName,\n operator: '=',\n },\n ]\n\n const query = generateURLQueryfromRules({ combinator: 'and', rules: rules })\n\n return (\n \n {`${numAbbr(total, 1)} Events`}\n \n \n )\n}\n\nMiniSparkEvent.propTypes = {\n data: PropTypes.arrayOf(\n PropTypes.shape({\n time: PropTypes.string,\n total: PropTypes.number,\n })\n ).isRequired,\n total: PropTypes.number.isRequired,\n}\n\nexport default MiniSparkEvent\n","import React, { Fragment, useReducer, useEffect } from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { Divider, Heading, Select } from '@fortressiq/fiq-ds'\n\nimport { sub, startOfHour } from 'date-fns'\n\nimport api from 'lib/Api'\nimport IntegrationsDropdown from 'components/IntegrationsDropdown'\n\nimport LoadingContainer from 'components/LoadingContainer'\n\nimport EventsChart from './sections/EventsChart'\nimport MetadataTable from './sections/MetadataTable'\n\nimport { useHeaderDispatch } from '../../header/HeaderContext'\n\nimport css from './observerViewerStyle.scss'\nimport { timeOptions, constructStats, timeSteps, getFillerForDateArray } from '../common/Util'\n\nconst observerActions = {\n SET_STATS: 'SET_STATS',\n SET_DAY_STATS: 'SET_DAY_STATS',\n SET_OBSERVER: 'SET_OBSERVER',\n OPTION_CHANGED: 'OPTION_CHANGED',\n DATA_CHANGED: 'DATA_CHANGED',\n}\n\nconst initialObserverReducerState = {\n events: {},\n sizes: {},\n selectedOption: timeOptions[30],\n loading: true,\n stats: {},\n dayStats: null,\n kinds: [],\n kind: '',\n name: '',\n observer: {},\n}\n\nconst getStep = {\n day: { days: 1 },\n hour: { hours: 1 },\n month: { months: 1 },\n}\n\nconst observerReducer = (state, action) => {\n switch (action.type) {\n case observerActions.SET_DAY_STATS: {\n const { events: dayEvents, sizes: daySizes } = constructStats(\n action.stats,\n sub(startOfHour(new Date()), { hours: 23 }),\n timeSteps.HOUR,\n 24\n )\n\n const events = {\n ...state.events,\n [timeOptions[1].value]: dayEvents,\n }\n\n const sizes = {\n ...state.sizes,\n [timeOptions[1].value]: daySizes,\n }\n return {\n ...state,\n events,\n sizes,\n dayStats: action.stats,\n }\n }\n case observerActions.SET_STATS: {\n const { events: allEvents, sizes: allSizes } = constructStats(action.stats)\n\n let periodEvents = allEvents.slice(-1 * state.selectedOption.value)\n let periodSizes = allSizes.slice(-1 * state.selectedOption.value)\n\n const difference = state.selectedOption.value - periodEvents.length\n if (periodEvents.length < state.selectedOption.value) {\n const [startDate] = Object.keys(action.stats)\n const { DAY: step } = timeSteps\n const start = sub(new Date(startDate), getStep[step])\n const filler = getFillerForDateArray(difference, start, step)\n periodEvents = [...filler, ...periodEvents]\n periodSizes = [...filler, ...periodSizes]\n }\n\n const events = {\n all: allEvents,\n [state.selectedOption.value]: periodEvents,\n }\n\n const sizes = {\n all: allSizes,\n [state.selectedOption.value]: periodSizes,\n }\n\n return {\n ...state,\n events,\n sizes,\n stats: action.stats,\n }\n }\n case observerActions.SET_OBSERVER: {\n const { name } = action.observer\n\n const kind = action.observer.enums.kinds.find(o => action.observer.kind === o.value)\n\n const { kinds: kindOptions } = action.observer.enums\n\n return {\n ...state,\n observer: action.observer,\n name,\n kind,\n kindOptions,\n loading: false,\n }\n }\n case observerActions.OPTION_CHANGED:\n if (action.option.value !== state.selectedOption.value) {\n let periodEvents = state.events[action.option.value]\n let periodSizes = state.sizes[action.option.value]\n if (!periodEvents) {\n periodEvents = state.events.all.slice(-1 * action.option.value)\n periodSizes = state.sizes.all.slice(-1 * action.option.value)\n\n const difference = action.option.value - periodEvents.length\n if (difference > 0) {\n const filler = getFillerForDateArray(difference, Object.keys(state.stats)[0], timeSteps.DAY)\n periodEvents = [...filler, ...periodEvents]\n periodSizes = [...filler, ...periodSizes]\n }\n return {\n ...state,\n selectedOption: action.option,\n events: {\n ...state.events,\n [action.option.value]: periodEvents,\n },\n sizes: {\n ...state.sizes,\n [action.option.value]: periodSizes,\n },\n }\n }\n return {\n ...state,\n selectedOption: action.option,\n }\n }\n return state\n case observerActions.DATA_CHANGED:\n return {\n ...state,\n [action.data.name]: action.data.value,\n }\n default:\n return state\n }\n}\n\nconst ObserverView = withRouter(\n React.memo(\n ({\n match: {\n params: { id },\n },\n }) => {\n const [state, dispatch] = useReducer(observerReducer, initialObserverReducerState)\n\n const headerDispatch = useHeaderDispatch()\n const timeRangeOptions = Object.values(timeOptions)\n\n useEffect(() => {\n async function fetchData() {\n const { data } = await api.get(`/observers/${id}`)\n dispatch({ type: observerActions.SET_OBSERVER, observer: data })\n dispatch({ type: observerActions.SET_STATS, stats: data.stats })\n }\n\n fetchData()\n }, [id])\n\n const onSelectChange = async ({ value }) => {\n if (value === 1) {\n const { data } = await api.get(`/observers/${id}/stats`, {\n step: timeSteps.HOUR,\n range: 24,\n end_date: 'now',\n })\n dispatch({ type: observerActions.OPTION_CHANGED, option: timeOptions[value] })\n dispatch({ type: observerActions.SET_DAY_STATS, stats: data.stats })\n } else {\n dispatch({ type: observerActions.OPTION_CHANGED, option: timeOptions[value] })\n }\n }\n\n useEffect(() => {\n const selectOptions = []\n timeRangeOptions.map(t => selectOptions.push(t))\n let selectedOption\n\n timeRangeOptions.map(t => {\n if (t === state.selectedOption) {\n selectedOption = t\n }\n\n return null\n })\n\n headerDispatch({\n type: 'set',\n title: 'Observers',\n heading: state.name,\n toolbarActions: [\n ,\n ,\n ],\n })\n\n return () => {\n headerDispatch({\n type: 'clear',\n })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [headerDispatch, state.name, state.selectedOption.name, timeRangeOptions, id])\n\n return (\n \n
\n
\n \n
\n
\n \n \n
\n
\n
\n )\n }\n )\n)\n\nconst SectionHeader = React.memo(({ title, buttons }) => (\n \n
\n {title}\n
{buttons}
\n
\n \n
\n))\n\nexport default ObserverView\n","import React, { useMemo } from 'react'\nimport filesize from 'filesize'\nimport sum from 'lodash/sum'\nimport round from 'lodash/round'\n\nimport Metric from '../../common/Metric'\nimport {\n Charts,\n defaultDataSourceChartProps,\n FusionCharts,\n FusionTheme,\n PowerCharts,\n ReactFC,\n} from '../../../../components/viz/index'\n\nReactFC.fcRoot(FusionCharts, PowerCharts, Charts, FusionTheme)\n\nconst EventsChart = React.memo(({ recentEventCounts, recentSizeCounts }) => {\n const eventCountsTotal = () => (recentEventCounts ? sum(recentEventCounts.map(i => parseInt(i.value, 10))) : 0)\n\n const memoSumDataCounts = useMemo(() => {\n const sumDataCounts = () =>\n filesize(round(sum(recentSizeCounts.map(i => parseFloat(i.value))), 2), { fullform: true }).split(' ')\n\n return sumDataCounts()\n }, [recentSizeCounts])\n\n const recentEventsData = recentEventCounts.map(({ value }) => ({ value }))\n const recentEventsCategories = recentEventCounts.map(({ label }) => ({ label }))\n const recentEventsDataSource = {\n chart: {\n ...defaultDataSourceChartProps,\n caption: 'Event Activity',\n subCaption: `${recentEventCounts ? eventCountsTotal() : 0} Events`,\n },\n categories: [{ category: recentEventsCategories }],\n dataset: [{ data: recentEventsData }],\n }\n\n const recentSizeCountsData = recentSizeCounts.map(({ value }) => ({ value }))\n const recentSizeCountsCategories = recentSizeCounts.map(({ label }) => ({ label }))\n const recentSizeCountsDataSource = {\n chart: {\n ...defaultDataSourceChartProps,\n caption: 'Data Activity',\n subCaption: `${recentSizeCounts ? memoSumDataCounts[0] : 0} Total Bytes`,\n },\n categories: [{ category: recentSizeCountsCategories }],\n dataset: [{ data: recentSizeCountsData }],\n }\n\n const sharedChartConfigProps = {\n dataFormat: 'json',\n height: 362,\n width: '100%',\n }\n const recentEventsChartConfig = {\n id: 'observer-recent-event-counts',\n type: 'scrollarea2d',\n ...sharedChartConfigProps,\n }\n const recentSizeCountsChartConfig = {\n id: 'observer-recent-size-counts',\n type: 'scrollcolumn2d',\n ...sharedChartConfigProps,\n }\n\n return (\n
\n \n \n \n \n \n \n
\n )\n})\n\nexport default EventsChart\n","import React from 'react'\n\nimport localizer from 'lib/Localizer'\n\nimport css from './metadataTableStyle.scss'\n\nconst MetadataTable = React.memo(({ machine, user, firstSeenAt, lastSeenAt }) => (\n \n
\n
Machine ID
\n
User
\n
Date Connected
\n
Last Dectected
\n
\n \n
\n))\n\nconst Row = React.memo(({ machine, user, firstSeenAt, lastSeenAt }) => (\n
\n
{machine || '--'}
\n
{user || '--'}
\n
{localizer.asDate(firstSeenAt) || '--'}
\n
{localizer.asDate(lastSeenAt) || '--'}
\n
\n))\n\nexport default MetadataTable\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport ReactGA from 'react-ga'\nimport { Popconfirm, Menu, MenuItem, Typography, useModal, theme } from '@fortressiq/fiq-ds'\nimport { Link } from 'react-router-dom'\nimport { observer } from 'mobx-react'\n\nimport ActionMenu from 'components/TrinityTable/ActionMenu/ActionMenu'\nimport ExportMenuItem from 'components/ExportButton/ExportMenuItem'\nimport callbackStore from 'stores/callback'\n\nimport api from 'lib/Api'\n\nimport uiStore from 'lib/UiStore'\nimport store from '../diagram_composer/store/DiagramComposerStore'\n\nimport OpportunitySubmittedDialogue from './OpportunitySubmittedDialogue'\nimport CoeForm from './CoeForm/CoeForm'\n\nconst opportunitySubmittedModalId = 'opportunity-submitted-modal'\nconst coeModalId = 'coe-form-modal'\n\nconst sharedModalConfig = {\n footer: false,\n config: { interactWithKeyboard: false, destroyOnClose: true },\n}\n\nconst modalConfig = {\n ...sharedModalConfig,\n header: false,\n style: { height: 'auto', width: '300px' },\n}\n\nconst coeModalConfig = {\n ...sharedModalConfig,\n header: 'Submit an Opportunity to CoE Manager',\n headerStyle: {\n padding: `${theme['default-spacer-md']} ${theme['default-spacer-md']} 12px ${theme['default-spacer-md']}`,\n alignItems: 'center',\n },\n maskClosable: false,\n style: {\n border: 'none',\n height: 'auto',\n maxHeight: '90vh',\n width: '700px',\n maxWidth: '95%',\n padding: 0,\n background: theme.white,\n },\n}\n\nconst ActionsContainer = ({\n record: { pddUrl: pddUrlProp, flowchartId, id: specId, name: specName, opportunities },\n handleDeleteSpec,\n}) => {\n const pddUrl = pddUrlProp || store.pddUrls[specId]\n const { coeIntakeUrl, coeUsername } = uiStore.tenant\n const { addModal, removeModal } = useModal()\n\n const handleExport = () => {\n ReactGA.event({\n category: 'PDD',\n action: 'Download',\n label: `Export PDD ${pddUrl} as .docx`,\n })\n return api.get(`/process_specs/${specId}`)\n }\n\n const exportCallback = data => {\n window.open(data.data.processSpec.pddUrl, '_blank')\n }\n\n const handleCreateOpportunityKeyWrapper = event => {\n if (event && event.keyCode !== 13) return\n handleCreateOpportunity()\n }\n\n const handleCreateOpportunity = () => {\n if (opportunities.length) {\n addModal({\n children: (\n removeModal(opportunitySubmittedModalId)}\n createOpportunity={createOpportunity}\n />\n ),\n id: opportunitySubmittedModalId,\n ...modalConfig,\n })\n } else createOpportunity()\n }\n\n const createOpportunity = async () => {\n removeModal(opportunitySubmittedModalId)\n const { data } = await api.post('/opportunities', { process_spec_id: specId })\n\n addModal({\n children: (\n removeModal(coeModalId)} />\n ),\n id: coeModalId,\n ...coeModalConfig,\n })\n }\n\n const menu = (\n \n {pddUrlProp && (\n \n )}\n {pddUrlProp && coeIntakeUrl && coeUsername && (\n \n
\n Submit as Opportunity to CoE Manager\n
\n
\n )}\n \n \n Open in Diagram Composer\n \n \n event.stopPropagation()}>\n handleDeleteSpec(specId)}>\n Delete\n \n \n
\n )\n return \n}\n\nconst ActionsContainerWrap = props => \n\nActionsContainer.propTypes = {\n record: PropTypes.shape({\n pddUrl: PropTypes.string,\n flowchartId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n name: PropTypes.string,\n opportunities: PropTypes.arrayOf(\n PropTypes.shape({\n completedAt: PropTypes.string,\n })\n ),\n }),\n handleDeleteSpec: PropTypes.func,\n}\n\nexport default observer(ActionsContainerWrap)\n","import React, { useEffect, useState } from 'react'\nimport { string, func } from 'prop-types'\nimport { Button, theme, useForm, Spin } from '@fortressiq/fiq-ds'\nimport cloneDeep from 'lodash/cloneDeep'\n\nimport { useUserState } from 'context/UserContext'\nimport FormPage from './FormPage'\nimport FormFooter from './FormFooter'\n\nimport formPagesTemplate, { nestedForms, coeDropdownAttributes, attributesMap } from './formPages'\n\nimport { fetchFormQuestions, postCoeIntakeForm } from './coeApis'\n\nconst CoeForm = ({ specName, autopilotUUID, removeModal }) => {\n const [currentPage, setCurrentPage] = useState(0)\n const [loading, setLoading] = useState(true)\n const [invalidPermissions, setInvalidPermissions] = useState(false)\n const [coeFormQuestions, setCoeFormQuestions] = useState(cloneDeep(formPagesTemplate))\n const [pagesLength, setPagesLength] = useState(formPagesTemplate.length)\n\n const { email } = useUserState()\n\n const { control, formState, register, watch, getValues, setError, clearErrors } = useForm({\n defaultValues: {\n name: specName,\n Submitter_Email__c: email,\n description: '',\n pdd_name: specName,\n How_is_Process_Measured__c: '# of times performed',\n },\n })\n\n // generate form question labels, field types, and attributes\n useEffect(() => {\n generateFormQuestions()\n }, [])\n\n useEffect(() => {\n if (coeFormQuestions) setPagesLength(coeFormQuestions.length)\n }, [coeFormQuestions])\n\n const generateFormPages = (program, dropdowns) => {\n if (!program?.data?.app?.Program) {\n setInvalidPermissions(true)\n setLoading(false)\n return\n }\n const newFormPages = cloneDeep(formPagesTemplate)\n const { descendants, id, name, ...coeProgram } = program.data.app.Program\n\n Object.entries(coeProgram).forEach(([key, value]) => {\n const [attributeType, attributeNumber] = key.split('_')\n const pageIndex = newFormPages.findIndex(page => page.attribute === attributeType)\n if (attributeNumber === 'title') {\n newFormPages[pageIndex].title = value\n return\n }\n const attribute = `${attributesMap[attributeType]}_${attributeNumber}__c`\n\n if (pageIndex) {\n const fieldType = coeDropdownAttributes.find(attr => attr === attribute) ? 'select' : 'input'\n const options = getOptions(fieldType, dropdowns, attribute)\n if (!newFormPages[pageIndex].questions) newFormPages[pageIndex].questions = []\n\n if (value) {\n newFormPages[pageIndex].questions.push({\n attribute: attribute,\n label: value,\n type: fieldType,\n options: options,\n })\n }\n }\n })\n\n // has a different dropdown source than the others?\n const workstreamSelect = newFormPages[0].questions.find(question => question.attribute === 'Workstream_Path__c')\n workstreamSelect.options = descendants.nodes.map(option => ({ label: option.name, value: option.id }))\n\n const formPageQuestions = newFormPages.filter(page => page.questions.length > 0)\n return formPageQuestions\n }\n\n const getOptions = (fieldType, dropdowns, attribute) => {\n let options = null\n if (fieldType === 'select') {\n const optionsValue = dropdowns.data.app.template.attributes.find(attr => attr.apiName === attribute)\n if (optionsValue) {\n options = optionsValue.pickListValues\n .filter(value => value.value)\n .map(option => ({ label: option.name, value: option.name }))\n }\n }\n return options\n }\n\n const generateFormQuestions = () => {\n setLoading(true)\n const formQuestions = fetchFormQuestions()\n formQuestions\n .then(([program, dropdowns]) => {\n const formPageQuestions = generateFormPages(program, dropdowns)\n setCoeFormQuestions(formPageQuestions)\n setLoading(false)\n })\n .catch(error => {\n console.error(error)\n })\n }\n\n const isValidateFormPage = newPage => {\n let filled = true\n const values = getValues()\n let i = newPage > currentPage ? newPage - 1 : currentPage\n const isFilled = (field, question) => {\n if (!field) {\n filled = false\n setError(question.attribute, { type: 'string', message: 'This field is required.' })\n }\n }\n while (i >= 0) {\n coeFormQuestions[i].questions.forEach(question => {\n isFilled(values[question.attribute], question)\n })\n i--\n }\n if (filled) clearErrors()\n return filled\n }\n\n const renderIndicators = () => {\n const indicators = []\n for (let i = 0; i < pagesLength; i += 1) {\n indicators.push({\n filled: i <= currentPage,\n })\n }\n return indicators\n }\n\n const setFormPageKeyDown = (event, newPage) => {\n if (event && event.keyCode !== 13) return\n setFormPage(newPage)\n }\n\n const setFormPage = newPage => {\n if (newPage > currentPage && !isValidateFormPage(newPage)) return\n\n if (newPage < 0) setCurrentPage(0)\n else if (newPage > pagesLength - 1) setCurrentPage(pagesLength - 1)\n else setCurrentPage(newPage)\n }\n\n // some selects change the form questions\n // on trigger a change to the form questions / format handler\n const onChangeFormTrigger = (page, triggerValue) => {\n const newCoeForm = cloneDeep(coeFormQuestions)\n\n if (!nestedForms[page][triggerValue]) return\n\n const newCoeFormPage = newCoeForm[page].questions.filter((question, i) => {\n return !question.nested\n })\n\n newCoeForm[page].questions = [...newCoeFormPage, ...nestedForms[page][triggerValue]]\n setCoeFormQuestions(newCoeForm)\n }\n\n const onSubmitCoe = e => {\n e.preventDefault()\n const formValues = getValues()\n if (!isValidateFormPage(formPagesTemplate.length)) return\n postCoeIntakeForm(formValues, autopilotUUID).then(result => {\n removeModal()\n })\n }\n\n return (\n \n \n {loading && (\n
\n \n
\n )}\n {!loading &&\n invalidPermissions &&\n 'Unable to access the CoE Manager intake form. Please contact your Process Discovery admin.'}\n\n {!loading &&\n !invalidPermissions &&\n coeFormQuestions.map((page, i) => {\n return currentPage === i ? (\n \n ) : null\n })}\n\n {coeFormQuestions && (\n \n )}\n
\n \n {coeFormQuestions &&\n renderIndicators().map((dot, i) => {\n return (\n setFormPageKeyDown(e, i)}\n onClick={() => setFormPage(i)}\n aria-label={`page_indicator_${i}`}\n tabIndex={i}\n />\n )\n })}\n
\n \n )\n}\n\nCoeForm.propTypes = {\n specName: string,\n autopilotUUID: string,\n removeModal: func,\n}\n\nexport default CoeForm\n","import React from 'react'\nimport { func, number } from 'prop-types'\nimport { Button } from '@fortressiq/fiq-ds'\n\nconst FormFooter = ({ currentPage, setFormPage, pagesLength, handleSubmit }) => {\n return (\n \n {currentPage !== 0 && (\n \n )}\n\n {currentPage !== pagesLength - 1 ? (\n \n ) : (\n \n )}\n \n )\n}\n\nFormFooter.propTypes = {\n currentPage: number,\n setFormPage: func,\n pagesLength: number,\n handleSubmit: func,\n}\n\nexport default FormFooter\n","import React from 'react'\nimport { arrayOf, bool, number, func, shape, string } from 'prop-types'\nimport { Input, TextArea, theme } from '@fortressiq/fiq-ds'\n\nimport FieldWrapper from 'components/form/FieldWrapper'\nimport ControlledSelect from 'components/form/ControlledSelect'\n\nconst selectStyles = {\n borderRadius: theme['default-spacer-xs'],\n border: `1px solid ${theme['text-vlight']}`,\n height: '32px',\n padding: theme['default-spacer-xs'],\n width: '100%',\n}\n\nconst inputWrapperStyles = { margin: `0 0 ${theme['default-spacer-md']} 0` }\n\nconst Question = ({\n label,\n attribute,\n type,\n options,\n trigger,\n onChangeFormTrigger,\n pageIndex,\n register,\n control,\n formState,\n specName,\n}) => {\n const onChangeWithTrigger = value => {\n if (trigger) onChangeFormTrigger(pageIndex, `${attribute}_${value}`)\n }\n\n const renderField = () => {\n switch (type) {\n case 'select':\n return (\n \n )\n case 'textarea':\n return