ÿØÿàJFIFÿâØICC_PROFILEÈ0mntrRGB XYZ acspöÖÓ- descð$rXYZgXYZ(bXYZ<wtptPrTRCd(gTRCd(bTRCd(cprtŒYê!q%ÎyÜ’T=UHÔC]õw`²slìŽ8âWö;¬¹M/¤ø·þ陪kêq.'�þSêÝ�`ç¿tŽ©Nùï’¢ÃvK pxÏÜ”›š÷H ¼2ˤzÀ—e>§–0ì5�Ãä(*1’�ÃÔZC{oÊEóynk<Ð08*{]Ç�—`Š‹\UÞ·9­`3º‡*4U�.Û·„ú*ÇI�\ü(Ê«[©_ü3!ÉÇÑgE33¡ÁÀç’¥H¼K%¶ýuµÌÉiê¤nžNËlô_ŒU°Én d„`ko?qÝiªfànvå=§1áñ¸�b—F�T•3¶zK©¨ïÔžuTr¸`¾0ì‘�¬­ppÈ\iÒ=qq±ÖGSMUåÈÒ;làNô_Puuq‘‘Õ3ì÷ZÆVqæÂáµáoB®s‚„„!!@B„„!!@B„“¨¨‚’ *ªelQDÒ÷½Ç­’”\ñãÿЦi$èëAò"poaÿrAü™ögܨn½/�É*DW‹Þ3ÏÔ3Íe²Îb³ÅúˆuAÏý9à}ÊÒU•óÖI©äï°ÁaYR_ ‹VãÕ!Ï%4|�‡$ìGºÅ»;ÒP]bM§Ð×`Ÿ…Q){¼±¿ùKÎòàeíÀM[­ÏsËvþU^Ìãf[�ŒŽJÍ­{�ÆçÝ&Üà÷ÝJZm7/8Çr«)¨+dF.N�”48îS¨è.8e30·*ócèy% 3E�¶h+½³¡£`¥våyù>B1Ò;áÁ“Û5}Ÿ¢k*>¢N7'!])z6£Á„»<î¶U¯¤éáˆÿ£8R0Ù¡sšÁÉ®G͔ߧJáF&–¸ôN¦:fS¸—KOuD½t½E;\öDZðs•Ö3ô¿ç¿Ø��-U+÷‡úiªéÙ�r8!o�”ÓÙ”¸«èæŠ*ÇÒ”?ʃ¹-!kùc©¢Õ�p#l®øeŒöŽYcptËMŽF¶¦™Ã<à«/MuUÊÁTÊÊÜǰ‚@áÀ{­}n¸ùÃ��å>Ò% ’ Øîµ¶ˆ¤ôv7‡}yGÖvÀàíqâFyVõÆ�ÖÕÝ#ÔÕì•Úà&‹VÏgÿ>^Xï4]Aj§»Ûä×C›îp~Vð—dyùñ~7kÁú…sB€„ !BB€„ !B“âçZèÎ�¨ª§xµCȦÁòï°\au¬’z‰'’BçK‰ß';­›ãßX¿¨úÊzx%&ŠØ?/g8gQýÊÓ•ÕÁøc7lïÅ�ÿ,ñ“ ¥yýDþÉ¥TºÀcu,ËËiÃq‚ã�²nLJÎp0Ö6U$VgÆØÏò�꛺C8Ýdçk�€2R†JªÆSF8?U zMtÕškÍX�­Ë5 ð·Jt3Æ4FÀx'  :!¦–¾= ¸ã•»(,Ôôѵ‘1£_=Îæ9ˤ|=ÞAv—¤%£¥™JK[·;r¦›jhxþÆÅ5`”ëÉ ì7^jß§¡á •ËAÊwKoi•®#ÒJ�ü°Æv$'PÃ¥ û­"c6>´ÑÓµí&»î=UIOVÐØè@pnIÙ-OSùOXÆSJÛ™™ï/عt©¥9\Ù¬¯–\]ãkýû-'Ö]a{Ÿ@€OnË¥ë)âœ8»sØáRúŽÅ�õ0;9ì¯�;ÆìdIJ-œ•u } šO¤vÙ/c¼àºžsŽØÏ außH‡Ä÷‘Œ�@ZnzzŠJ²sêaÁäd/sU–6�',^S6›æbXÈËwÎVïü;ø‚)îéÙ‚¬—ÓåÛ2P2[÷\ái¹;"7�Ç<«®ã- lu”S=®kšpC‡®ˆº)4²FŽøB­øyÔÌêÎ’·Ýõ5ñÌ3ÃÆÅYAæ5N˜!BBB€„ !BB€[õ]/Ò× Ì¯ t0¸G“ËÈÃGî§VŽüMõ ”öëoMÓ»ÕRçTJ?é7ü¨n‘|qï$Žl¼ÖKPù'•åï‘ÞcÏrNê·RòéYSÝŸ²–¸Í’@Û'(²Âk¶â&à,ùM&©€55¡:Ý4žùÂõÒɤÎÀž¶è›ùRçœl B¡Zîø8Êžè[3îuíxaq‘àŽwܨoÊÊúQ9oûĆy sx;ÓYž˜½,-ròòþ­ ¯|¥‘ëÐOmö]Ånªme5 ?©£?mhÇ‘•ŽP„+œà„!!@B„„!!@àd®DñǨzëk„Œx|4¸§ˆçf�Î>ù]Y}®ÛE]i?íDçEÃ�Er5³M3Ç®¦WH}÷=Õ&þŽ®4}‘U©Ôùõ;pÝÓ<ÅÓ¨à'Ó¼F‘’AQÕ§mÛœ³:ƒZ-�#ø‡û§’4SPî0ãã £çIO'sò¥®4úÿ-J$�GÁAI[)|óANæê!�8Ç®˜ð²ÀÚz6Ë+FØú­ ÐT’ÖÝZè¨Ý?•€@ÐËÕÎÕFÖš8ãÇeäóc,Ž‘èñ'jäl¬·K{p±kFw-y'‰2SÈ3#$�ðì'´^$Ú¦~‰bq÷9eæK‹‘n�B¼oV_ásZFø)Ð|oöU«múŠãƒO;ó©K2 c:–=:é›)vV‡®sò“óØî‘u{Hiß µêª+,FjÉ�¾UátŠI¨«e·Î±¾ðeÉœ- xñæ G=”0:\~’Jƒ‡ÆëýÂAå嚎4·•Ù$ÞÙÃ>d¤t¥KhôbOoer>“€ÊÓPõWXÝœ×CçF9'$§è*ºœZ‰I#‡…\¼~«Lœ|žÏÂvï¦7ÙhÏ-u,’µ€¹ •º\ú†yU,òäŒò¨�uBÙé¤ôòÂ0³ãKñäL×�–Lm�YXúZ÷.içÿ>êY•1Ö@Ù#v$*;®¨™Aw‘…¤aGÙ®-…ÿ—y'|…ôËqì|ân2£bÙî lqK�ØF㜂»³Â[Ѽt¥Ïvdu4z÷ïŽ~á|ú·È熻ÐN¦®¾ü2u¬´¶Ý,®s¢ih°o袼4ËgMÆÍþ„!jq‚„„!!@B„„!FñŽê-�Z5éã1Œsºã+­[RÜ�˜Ñ·ß+§WvÒXá£Îï9Æó¹ ’«ªZèg˜»q°%g-³» 4ž«ÌóÖþ§`……kF˜¢üsû¦�J^öÆ]’qÉå<~f�mßNÿ †‡¶Ø]-|cä©Ê¨%v"؆†`s’xIôí �^ÇþœžŸ¦lÒW]M[Žctøè±É“ªføñ¹Qо ô=Oô—çj©£}MPê dl¥/²ÓM±‰® '\RY,ôÖˆD“Ô9€£ÝÜEQ¹õ}LdŠªÊ GŸå’`çê¼fç7hïqÇÓ2½Z©ªey|œpuî™�ÎÙ)+Nò�±—ª+¤o›e[h߃ýÔ¥ªíh,òäîÓÈWï’˜¬Xçã%ºJ ªJ–²Bü ðBÚb}µ¥û‘“’ª?�#H÷Ù[¥ |€9ݸ\Y§ÝÙéq±¬q¡´Õ­‰›¸çÝjß'­¯…”ômt˜'8öÂØ·Ëc9e@¿I¦C‘‚vQ‚n3²¼ˆ©Ç©¯-Ýç—jàöW:›|:šLc,¦³@ÒÓ¥ l¼©Jå£ÑŠê¨åÄe§E–ªF°êhÉúer=Γ̦†’æžÞ˹%Ý7\ýy\…ÄÍx’'»‚F_CñÎñ?ò1¬ºtÌæ(XÐs‡al®ˆ» OWZ.� �¡þÚNÇú«-.�çËO¶ÓJZÈ*cwûnû.ö¶aúŸIü=Ѧj6¢)œæÿº´ª‡…õM¸t�À™¢c‰#Ÿ@Ý[Öˆæ~‚„ „ !BB€®ÓLý÷v>étÒâàØ5»†gìAø�º‹‡ZU–7XÑÏ±ÇøZJ½Ž©»C¾,n~~Êñ^´Wu%}FœJZAíº ¾•2�ñQ°²6HMk4K’æåIÔÓÄ׳„ÏCÁE„¤Ó¢ÝQ-áï8f½ºÞ؈›žém, $4oðœPÈÆH5•1nÃZ$)èŽ�Z6î’|AÍ- <ž¹Œ§Ç“«¸öMa:ÜrvS“H@IÔ¯Ohp*¡�Œ`·¶öJylr¹€½Ž?Tk“Ak‹ÈÎÈ–‘ƒômHÖDa¹k¹ z¾ŸŽ\Ë÷ "ßskkü¢Z4ó“ÉWktðTÁ«,ÉZE^ˆ–ˆ[w”Ñæ7… |˜£¸º’–µ™-º„¬xpiVZb;ÔÕ°�:só”й¤àR3ÊÞÝÔmMâ Ie$gl¬ýeÚ£Tþ$bd]q“œS¸®™®ŽwL?K†û®ëüL\¡=p`q$Óÿs…“0±®¹ì¾�ã¿ñ9òOú¦0?w†œo¾UžÏ0|/aÛ?ÑT ~™œs…déÇ;Ï1»‚¢qAÑôKðÏsÿTð®×.²çFÓ²s‚ÒBÚ럕GÿH\íÏ�»Ê¨d¬ßù\ÞßpWA+#9ª“! J‚„„!!@B‡ê©Å5’ªwpØÝû�‡÷S ³â+KºN¿Ô@l.;ý�•éÂ%’ÚÚ™°šyÇÊ×Õ³9­‹S±±à­“âS4IMˆ0ˆµ;ܸœåj«ô‚8XAÙ¤ƒó²ÍStÆuUߘ¨9Æ–ãNÿÝJô}ÔÚï–ûœ|ÁRÇà}U@Ô9òµ­nF;+%†™¹Š'´ãbOsÝW&ãDb—îš>¦ôÆ:û%\nK _ÿäÿ*Û ÁÃCœ2xZkðí{7­‘¾@éiá»nv nB|·åà /˜Ÿë&�¯ÄûA1Zˆ]¡Û|(ãÆ )wÊ%g¶Fp¢å~ ,&‘ ƒÜÆ·9ÈP×[¸§{bˆúÜpÊ{_8 $; ¯™Y‰ÒÅ˾‹8§e•ê1W$,{ƒ·çe;2Ã^öò=”-Û®m]=GªoÊ@Æó,§…Kâuö6’íMU;Äà@ý–’VŠ—ú †¶’¦)N"{pUZzX§�ñ1íÐá±%U.=qä6AøiªG�ý9Mye¢kÔf­ïËh.Á=¶R“hÆQ§e�¬è¦±]£­‰ú¡y vXújõ®6; ‚3Ê«]/ ½ÑˆàýdiÀággómÎ<œµ&¶mVÖÇ$zÚìdp¢®U õ¢©.m,Ƽ•uc4’ŽUdÂ… ê*—Px í…_ uOÔ󆀞TU5ÎòÚA 2¬LXpü`lÈ›f‹üL]X:nZÎò�Ì|.<ª” %“a†€2ºWñ]$®4ñ�ZNøîW2]™$s�¯Õ‘íÙ}? 5�#å¹Òí�)ÙâNA>ÊÇe~™#À ‚«–­¡.Î=JÃkþc9céÚŸ„*¶6:È$Ëça¥ßÿ`ºir/á"âa¸º/0�,ŽŒç�Ú>¾•×JQºÁB“0B€„ !BUD�-U?ê’'ÿA•oU_¢2ô¥pí ÷�¹FZ>£‡|M.’a9È'�퀵ù¯M$’K��–ìñ^�”°Á£Òpâì�øZbúìPÅŽ7#*ˆß#ÙZ‰º44d¼•=a­™÷VQ3/v�[�‚ƒÈ�ÿpá�;�l§�13k%¸QÇ/“[Sò%AÉoßü(š´gÖGr~¯“Sh¨xþ# ˜ÜÿçºéöÉè×�È_5ÿ>,]íÝyo±]Þqtm—‡Çö_Eiªüê8¥!ìþ‹çy˜ž,•/³êø£—¡ùªkNã“¶É­]C:O*>z·dšæàÿä|¯>Gq•džs„M$“Ø'4V!ߘ|DµÃ„•’&TËç=Ùß«—�rF;-1ÆÑIJ�_¯ú"¿«Ë­•P�Ë9û¹ÎÛEdð¢ÏÐ4¯’Ë,ÁòŒÊ °ßÛ…·«Äêxk‰=‰áWke³KÙ–ñƒÁZù¡&jÊ‹uúó3à‰Æ8‰ ¸»ùTQð¦ÖÊÑ= ©c�29¹õ{­¦Êq[c/ä—ŽQKæOÎ ]?Fý/ÑU4GUt›Î•ߥ­kGÑJ]mŒÑæ4ZvÂVK÷–©6lp>umö7DZ7ß+6Óð‹~Œ™\"“C³¨/e¸e§~T uÀ Úüœò™¾ã#¸vlÑL°6¤¼ò20’¯œ6žGó€TL3¸�K‰'•�Ö`Ë|®ÎiïÊ´ÌòKG+x÷Ô4Öû†‰ÝªGå´rs• ®µ2OfxÚ$y/ä7°*óã­þJ¾¼©†ÊV5€ƒ‡rÂÖÓO%C̲»Sˆ êøðë�#ÈŸ|Œ”¶ù`%ù*zØâdÀl«öâ #rIV nùv§þëvVK~.!—:š ájÈñ¿³{\%.¶f¾µñ¼åÛùV»¤`Z«7+{g‹°+ÀgÒè/B–•®<œ§ßúÍò7DNw§l4­YÕW;…¾�ÐÓÆK›³>ªš|Bë«e“¥uÅ#±ù†Kr{…Ó‹’ÑŒ²$΃ŽóŒ’¢á?—Ìp j¼AéâÏ&ü4ãQî´ë¯÷Û¬ žªž©áþ¢qhM¦¸WFYo”mú„Et.2û/ÛøFÛ«ëëX‹æ•Ã-kF1õUÇxµ7š_p·kˆŸN¸ YÕÏvœ´ÅGR01þÑÝ7ÿLêÊàChd�ƒ—I°W\h´a9Éx�°Ïl*.OòI¶…õ�ÙPÇD˜9jk�IÝ„D¾â<Ò3¢6÷ú”ë¢ü-ª©.¬¼\êç/w¦3!ÐÑôYÏ�+³–Møl¨n¬¬ŒhÁí�T„-:@=Ô]¾Ç°²‘®:c;ÙN¾69¬-ÇÙqJ“Ñ´kb´‘Hé4ìp~¹®ŽÓÓÕ3¹ÚCbs‰Ï°R4Í øaiŸÄßZ›/IÍG¸š±¦Àv6#sû-¸ðü™L¹Y?'#�zŽäû½î¶äó“Q3ŸÎvÎÊ8p¼qË— lw_V•*>M»vJÑ<cÉ.Û*Ãh~©�€[®AèŠ'8d…b³¼62ñ‘Ê3X›×ðÃXÊ~¼e,šU>Xv¡±!˾FÃ|Úðbí%·­íÓ±¹Õ�âg(ÁÅønÚJÖV¡�vRðU¼Ä\qŸ•«è:€<6f¸ïÙ[í7¸ê2üØ•å­ÊvY+æµ²= ´�ÁP×{+s0ïe% À= cç)•uÍŒÙîÉ(™z ªzzÐé¨R4öFÆó):‡`ÉkEKÉó8í”±¨òÚ0AZÛ"�)áÐâLxFܪ<·¹ï#á8¸]™ dê#²¤_ú‰±Æç U [£�E[ íôFß-�õÙV*/QR±Ò¾O¹Pµ×�2GÔÎì�’T•s\\AÚ&‚pT1QçÏ#f ñþýUwª£—š÷–4ž>ËO{-±ã ;¦lsi?Ã$ƒŸuªÓÜôZX’GÏòmämž0áž²''앤£}DnpÒGd”à²RÂ1…Òs™Å™AÉʰóGdï±;(+|Nža\HÇÏ“Ši'¬18éòÎ4çÙVVi§ü³ÔTuGFÊ aÏ Œý—s0ic[œà¹7ðõb‚ðî›»@Hu3<’{;K¬}5Öi¡‘ì„+‚„„!!@BP÷Š(ßJCŸ£N]�2IÇo’¦CÄ®¼²ô-‚{…Æ¡­“C¼¶äg8å9;ñ-[¦—Ψ©.ÒÁŒFÑü¾ùÇù\©|¨8òµçsƒÀW¯úöN«¾U^*%¶�2Nß^ëYéåÉܸ÷îUVÍe¥Cʵ”¥Ò7N£Ï¸Qó¸xåHU=¬þ= ÉǺŽqÔIùV3`Ï ñÐ>û”»Är÷´�誴Ož¢éýGm¹Âèï úf:A–21ù™ù� Ÿ<úÇFØq÷cºîœu=,¥ctÒ<œwiü-³hŽ9è¢{w` „�†?ô¹\æeÏÂiЕ…²ÔÙ*ž”ÏÔÀyÐã²ñ¹O²³ÜáÔ�‰ôòq²{Os¨ œÑ©¼”¼ÔºÚ\默Ö�-ØÁ^uYéÛE†ÛÕðȸlZNë:ûë'vIqþŠ�SM¡ÄÄâÓÏÂ�šç]HN¬‘ÆÅOK-ùZѱ`©iÕülc“•�Uê*f’éu9ÊÕÒumCšKÆø# 2£©&•ÙÔr;çu+e"‹ÕïªrÇ5¯ ÷õ*ÞòéÞKäÒÁØžTUeÒy¡¹ùM©hª+êåïìºag&I¹±v¾¢å.ÃL]²sŸ²›æÃGƒ»Ü3Ÿ„òÙf·#ûnž^ dŽvpâDzw·H«…+f�ñXEùw·Ò@{åR¨ºj¨ã/S]…yë˜'½_é¬Ð·!ÒÊ}˜å>ª³C@tEkDyέ†]`�4nf¼ŠÈêhÆ<°;HaW®Vi¼ƒphÀ$’Ó±Æy[µý5S[Bɼ½±�t‡OòáE\úFLú· 0Œì=¶ù[Ç%J4Å$¾CIÎ KÚž×UaÀ�Gc씿[& ©p|e­ÔGMmòˆekÉ#°Çºè»Vd´èú!øKÜ:R%š­Yc4ãm`d�—D.ü0ø¿tèëÜý9já¯-�0´—6víÁ]©dëÛ-Ù¡“¸ÑOÁd¼}�Çï…E’ õodÊ-»,¨^5Í{CØàæ�Á ¯V¦`„!!@BNIâ‹:Þ6ßuJ*Ù)7¤(±’Xáa’YÆŽKއ¸_],¤hÕÿ#º«×É[[ ’¦«HÌóŸØv\Y9ø¡¨ìè‡rÛÐÃÅ/àèªCOÓöÉ®—)0ØÃcqŒôÜý—ø¹Öþ!uMy­êú‡ƒ+Ž˜Ðm+¯z’J Zy +$ª?ª¢F‚ìüg…Ìž"tÄ÷ ‡ÔH§âコ‡-å{5xc�hç[ƒ¥¨™ïqÃAÈH@Àç¾0¢²Â g“sØÓë#lüaX-Ü.�dTôĵÛ9Ä �ì>v]–1ôçXÜž�dÖJã†8�¸OmÖçÔ<³¼à‚8[ЇÁz¸_)ò†HŒÉN­þUQÔ“ùPÓ¸.>ê²äÅ"˯e/¦ì&KÅ3ä�»|®¤èŽ›’:WÍ+Öà·a«t—…¥÷ŠJ©àŽ8âVäà[âÏhŠ„qÆ`Ø. ù”¼;°cqVÆP[™ùo+FÔý_K]Ò—¸oÔ§Ò×bPÎf{ýòª¡’&8 �Ö4’\â}ª8ÚçÊÂâHý ÷ÿ ›û´Î‹qv‰+æ’÷CT2HNg�§'-!ÓwšÞ‘¼ºÅUP†u3ÕË{-¿g¾Áp€æ’WLNþ�Ke‘SôÆ¥�Ãn « ,%®%Z*#†MÀÀ'b ŠmcÔAª•’²�YHÜä7ä(Éi÷Èiû+�UÜH1‚~ô¹d“Xç+hÌÊŠÌvÙ% 纲ZlÚZØõ;襨,Y{ZöŽyVJKtT�ô7.îp«<¿Á töQÂá—q·eXêyC ‘Îyn9ʹWHÈØZFák.´¨©«†�…ÓT¿É‰£’ã°L;•™æuU::ÆëÝÚºõ§§¦Ž‡K'~ŒàwE–žÊ8YÃ�ogžùÔζ[!Ô[»‹FCN2J¡Ínª ®},ìs_‹\1Æ íÛƒ±ÓS¹ÿ–kªÓªLnâ~V�ñ?ÇںŽ7ÇJØ…aÒ ¿<ŸÝvcåGÃaÝ™øiÍÈ^C’œ†¶L ¸$ÖöñEz‰µ9lU@¶À­Gá‡ÒØ­55$¼æ¿K¾ëaÐ9ÔµDHûð¼ÞNNó´oŽ=Qq¶Ýn–w¶)ï,À9 ÝAÔQU4gs‚ªQÈÙ oš3¶é8å0Kª#…\|œ¸¿µ‰b„½FÅŽ® uiÿå²YSè+ç ã…9GZ0‰ÂíÇòu¬‹ýË�ÿ«%“ŽA È9þéEèâÏ�2¸3žP”=ÕV60I$�n%mÔœ��=»$kjÜAv¡�ªƒ©ª.ÈÎÎÏ,ò;“=hãŒ|CŠ›�È þ꺪G’|Ìo²Ni]«o¢K:öpÊ̾ˆúÊ3P1Σ¾ê‰Ö]6%¥yŒiÆx[M°´µ¸ÕEõ¨MLì7$ƒ€´„ÜYYE4r]OMÅKt,0—»åm¾�±DúBï%ºšpÝ·P÷{ ¼¾IcÒÖ8c#•²<6£mMG’ðãÓ#Ýì;ד%ÄÃjE��)EQ‡66’Ü»e)oéLíÃŽM·í•;-º)˜^ÈCŽ9!0·¼ÁTèIhøár¼Œê¤aNÑS͖ŸíÛáKRÑú@ú)N×cSFãdá´e…¥½Â…2lˆ¹†SRI,ìÀŽ2í»ª£,¯Š�õ5Tó€çä~‘Ù¿@¯U4­¬�­�êŠ ‡»»·?²e-^í³ð¥Lƒš|_é—ÒÊËõ#1$;»çO}�¿HèÚÝg#‘•»zç¦EÂ’X¦‹P{ÉåsÍ5¾¢ÁyšÚZt±çc ð¬ÿuE ú;Fß¡º9ñ€ïP?8)ç� ƒ1äö%V¬�t‘³-!Y €¼o?+†Ztz1•¡9)Üü‘¶BÆž�óIéû©z[s¥¬$ƒð§(l��cÈøY¹—«"híÂã�œä„¼°¿Ë:F0yV#kkš;àl™ÖR–‚ÐÀ*^Ë}‹Ï¢3— �ʇè;3o�K=ÚhµÅob$m滸ú þê[ªÝùjY^IÜsô[¡úLXº~–'Æ<ùX%œã—8d�· ³‘çòeB ¦š Źg�ùû©6Q2H[+¸!KÇ@ÂàK>«ÖѶ–aF!%€ï¤û-Ôìàc*XtÙêp§¤´Äør09¹Î›]i!ø?º”|- ÇüB6A]ÿI§f�ÈÀp6T^¿ðÒ¡dl§a|·n9þ‹kˆ˜çŒÿ(^y1¸9­P›DšÊ’Ý‘66††íûaAQƒ-P£gqð®�A¡–za¶rFeZ ¥0Ô \1ïôÊ£vA3RÿËS‡ööL(å}UO ägÝ!x«3Mù(Ý�X©‹¸RÃæ}1³€7Q{ avçžÊíl§Š&5­ÛnË“#Ùèc¦/EitMàï”ý´ ²Z E�ÎÉB\NÁ¶ÍƦ2Üãʵ‘Ë�†à)gE!ÐT]É­™�†·'~ Gd? ƒ,ÂýÔôt37TMwžð?âÝ÷úœ-²!´ï…Tðú‡Î«®¼JÌäù“Øq÷W2”¼ •ß�~§•ž]¤# 98ΓBÙÛ¡ÙÇØö)HbˆÎ'Q‰@ÜãetŽz= ŽI³Àóú‡Çº}$�ý9dÜE‚*˜â&ˆÐëÚ«Iã‡Ý*?/~êû] Ì8–*‰ƒ^ÃìG9WI¿ ·E”0¶] põƒšöMÇ XÜ?Þй’3¯¨ê^vÑ^óý±ýW±þ"<=¬gæ­FïXÂ2_ ô�¹Q(J> ¥eŸ¬­Ï•ôõìnC•'Ó²ªÜåYpÃvÀÏÊÁž:ôÅâ£ý2-âqUéu6€ßœ•s©š¾®:FgïÛ*Œ´U�ú~‘Õ•f¡ç#VÊÚt´hiÈM,ÔM¡£nŒ%uüo…ž’ Âqƒˆô�‚l÷ {§Œ��ÝC&‡‘8}!8ÈìÃû¦�¹Ü�’Í$€FTeVäÍ9ì  Ïší[g»0´çê«PtÈàU�$>hó�nM„êcá%Jì€ßDñ­ÉÆNvBR�Øs{�ð§¨ËKý¨(Æ4‘€¦­äihùGáda{·ÅYFæKp##!s§‰ÞY.IééÝM/«@í'ƒ²ê)"/…ÍÏ!kþªµ²XÉ1‚wì§Ü]•š´qÓ:OÄœ©dVΣ¯m(~@eOb®q^üU¡¤l”�apai.ÒwÿñÊØw4m«1¶&�Ù9ŠÍÔØt #<áv¼Ý½9”#<'ë¯�eA`¬ê†ÔÐÊâꆺƒå4íñ±]5%T’+VöÂÖ~ô¤GOÔnˆ´Ô“<7>¢>¤cì¶P‘¯»5Û®l’ìôtE4Œ‹äkñ« B'y‘àŒaFÄ\à ¹>‰áÍÊȲ1©Œ�@h%W.ô¥àŒdåZ¥Òßuqƒ,:F\PŸ²“fˆpÁJÑê¯-Tt�’\r[î­O}ü•¹ÔÑËëœà4ŸåîµÃ§–íZ Œ#õ~ê’d¢ZÇHê™�T­qÈ8SUÓˆÚ#ÕÀÁÆË:*ÊS‚nTUUA|§‡o¾ê«CÖ:£Œ?ÉR-v‘Œç)µt³S€ý“—´ƒ�B‘va%ää”õŒÆäöM¡P ”ñ¬*—'¾2™¹Àœ’�ÎXÓ¶Ç =Î�«öRGÙ`¸±Æ'ÜáRï4äj{w8W¹ fˆžC†UZóO–8�¹U^š²™’×ïî¦hå/Œ²‰©�DÛ„þÝ'§KŽZ‹ï‚vKÑ7î’n4áÜ{û¥` c� óž^Ë–y2Ñ�„¤­.&”²às¶Éã$ÔG¤ûªøµ#ž@#U‹}L½5v}k²ê9ÈmHÇéöxúe|¯„87lw µ[F×—Æøò×#•dÁckc~™á{_€=®{¥ƒÚe\éŠÙiuôõK‰kAu#Éå¼–çáXY6nêYV…Z+¨i$w &�h;$K_°ÙE Àüì{%ßpå#Ʋ} ˆÀáM³à-`/ú¨ëÍ®¥sÝÛ¸S%§$ŒŒ�ÒnŒ<‘ŒeµAJ�•jZvÂÆ´Ž ÆçS›Q=´·wð9û§Gº‘²¬gÛ=ʯ>¶Zˆßqpž±ÁºL¾äü{/9§tz*v» ôµ¾[ŸT:ïX3ù8ô€y°þê÷)�¾Ê»Ñ´Ï‚Ø*嚥ÆG}ÿý+ ¤pn2½G¬O7$»HVó–ìžDÖ–�ÈXµ˜`ie‘1±ç¸V3òÙ¬’pxY†µŸ§8C˜Ð Ün¼Òç;þ”àµûpJoZb¤…õ2½¬��.sœvÀJhs3¶O¸Tþ»»8Ó +—χÈ=˜;}Ê7DYOºWOy¬¨¸’âɘYÿ?~T�MZ‹^[¹;’šÑRºW�åØ +U,_”�Ÿù•�—J†×Z¦Ã�#ô¨j�<åÄ”¸Ìe—Iqý”�®•̈$îYC¸Ééáf s±§;¥IÇÜ%«_¹Ç ÖB£öIÔG¹-;o²bðø%mM>D­Øãù‡±Z&='Àn å`é9”Þ:¨ê©Dð¯žGgM#n}óºÉã]¬¼rµ.ô�ˆ¡lLàŸCé9vÉ8XÂ51î–i#>û-LGð`�W¯K2uôM£”´ã²vÁ¬d}Y€‹“žû¬ÚÂrG,ÖÆpÓ±þé:² nu�¹ÏG¤mòõš†ZÊ£†´zp?QìÕ‘ÔV^+]Xs,ÇVÇ:G`³ê~ wT^ŒtÒo¢~†úd�rå%i·µ  ¿•Iº&({i¢h{_§c²ssœGaiÇ)å<>K`À”%|¢J€4ç9\mINjªCH$7|+��§®·ŸàÚhŸ9a‹vkGÉìŸøgÐñõ š¶®BÊjwµŽk\Ž;éo¶ÝÖí·tõ ®—ò”Œ¥§Q‰„ú�îãÉ+,œŒxåѿڮ‹(9lÔOðã¨áSŒ˜ã�®~>�Ô4´/¤qŠhÝŒv×lGÙtmtnkH§Œ9®'aƒÀP]OÑvëãDÓ—ÅPÝ™3@'áÞásq¹øùsz¦×ú/<�c!Ù#·d…\º .Ü)Ûíš¶Å\ê:¶çþ´zdãþʵZ3ú‡ðZH#?¬ÿÙw#BTºZ·j.{"Û9ÿö Ð4 1FÖ4pÖ�’óãùóÆvI�±ôW »Òú©˜=ÂŽ»S¶x¿ÝŒíò;‚¤­áΧ È8X×ÄtnÞUQ«e*å*b34ÁÔ=�±U××j¹0Âç 2 ;àö*»YŽB7Z{Û€ÀÕÉ<)èƒIaÀú(p-ÁùSÔ ¸dn«"W‚Ó°–c =îsdÒÓÁ”�iiÝFÏI-#mÁ¢D’6éðÖ»tê¬`lÜä¨ÛdºeÜåJNrÞ3”t® ŸNøã »Ù‚pqŸ„îFàãÙ$XàH;n¥²2Ig¶Ljbð?fãp?ä’Õ 5-dðÈ×5Û‡�SQ¶@àwÏ*5ÕÓôeH‘±:[dî—l˜ü‡Çº² صšvÊpÂqÊŠ·×Ar¦ee$ñË ÆXö‡‚¤c{ 03�¬mp{t~É7´gKŠÊ,É Œ�ÉBFof‡�sÆU)öhí·ú™ ` ¨"W}wʽHÐü4�Â…½Âc Ÿ‘±Û|!›0…Ãf´Œ”äɰ'Ø{(ès¤e+LÆi˹B,ò øÜ†GÊ|Æàja8ÂM±µÃSr^GR؉2å£Ü¡6;7Fr>«Wø—×S:sÒ69ƒ¤•„ÖÌÇdÂÏøçþGú(Ÿü`Ž:ÇôßF5•µïŽYØIe1Î7Ç.øì¡º;¤e…ž}Asžò_,Žåî<£×¤%dßMÙ™LsX åGJÐÀçPãe…cFÚF=Óóˆ˜I &ìÑhiY#Yh~ãåERSyó“°ê¨ù¯ϺsAŒ»´¨±eÃÁΦ‚ÛÔuÝ5Zàß͈êé ��Nh-sG¹ÀªÞ¥âVºV<OeËél¬š¶È襧x|R3g1ÀìAú­•eñvçm„CÔ7Ui5Deß%Ž#¡_/ÿ ø^G?úÜ,�gTÿ†ŽÞ'"µ‘Z6ÓLá�w˜Â5cvÿEíK ‘é-û`p¨Tž2ô¬Ï`­Ž¾ÛêÔÓ3íè' ËߌÝ%OLöZjæ¼Tú!¥‰íÏÿ'¸ÑïÝ|§þ7ó¼u.v{aIJA‹l&rǨ�6Îꨖ6¤ÖÉAaÁϲ–wªN'”Â’šL±ÙϺ—e? 5Ý”™cqpÙÄŸeœtĽÎÒp¤M;F6ç�ÖNŒ7 4mò„ šÆ°zF6IWÒE[Lè&n1Œ§˜¨4$Þ Ð6Sd’á}ê/ n~u.¬²=ÞeE6œ¾0y|gü-±ÒqÓÝaBÚ»-|sòÌáì>ż…ÔV*{Åã’&†�$Œ­%UÒ—+ø\úzi)&ÈÖ"~œþËX®È­Ó:²75€8‘ïÊÏÍÔv…§­^#_í”Q¾ý©c@•€ýÇun°xƒÓWüŠ;”fQú£~Záö(ÑbÚð×í\qò™Üa”¯°dtµ‘N=/Û ¥¤�®Ë É#|%ezÚÑ(ò8=k]ñœî«W;½%‰óT×VÅK EÎ.‘á£uBê*k uBP>¢b1ùÚ–Âß} îãö E,Ú½AÕý?ÒTn¸_n°QÀÑ»¤v2}€äŸ€´Xø»Ö#UIdèø&·Z†ZjÓLÓõýuHuWV¶çÕ·JŠÙI.Õ3±>ÎØ=?Ò´4Q©)ÃI.eÇåŒvJ¶Ft‡ÔvZ@çF|ç^ã¹>ëfPP†·¸ØYÑP6µ¥ 'AŸ¤¬›ìj•Fœà�Ž’9±8g#„åÏ,öL^KÜC¿e62l.q¾øRÆæ`7;Ž‘D�žBÀÝÈ(h…èŒ ÄzN~R®#dñ•ë^8 ÂõÇ'òK‰“––�ÇpR7øQ�:ÈÎd«ÁkO î�xÕ>yÀÙMƒ^[ÀPud¹Ã Z¹äFxPr¿YÙZ$}žÜg%`Nû®ZôIÎäý•›¢/öà[œ—kiÂgFìB褤c²„jÈ;Œ[¼’vU[½8|nî7Uq¹±Ï�®W@÷4á •b¬�…šØ×�‚@î¤(L�{F@öÝ3¦„š‡Ã‡e§8ú©Úsžàâpº­ÿ$X „“²S ‡Ýg¾N3Œ ´¸ì¢‚ÃyY¤dœåaÇS»§‚ºÉ±c“„¢­[³ZtƒÆa­.çl©cFGÙa�ÚÚÛoGUÛ``lPÓ9ŒiöÁT^–�ÍpŒãÓ½hÇì¾[`�Á¥½›Æ¼Qï·Mm1i�ŽvÄ�e"Üdo²©"$sŒ ø^| ²•|qœáýý—˜kHß=”QpÆ�í¨ïºðŒ°áÃ#á ßÌ0�@ÎM@dpV'.h÷JË€À3ý­ B‡°bÀ— ·HLCIî�Œ‘¸á!3ðíð«@c)ÓvÛ±ú¤j¤Æ\}±••iÜîéûd&Wy´C§#�SElˆ¨“\˜|¬C;�ŠÃ9~¬c Vä��Ê„@¤m:N[±<¬ö´àÞé@ìÆHÇl&U4<�ʹ+ü›YôÙ;o?t!"ny/)œÝþˆB2„\Ÿý{?ûe?ƒôý�…F@ çì›Oú�…3ØÿÂU¿©@zïÖÕˆý?t!J%x9û! ÀÊ/ð‰?ÜoÑ@*ßåúÝc?éû!öÿ¼ðÿ¸ô!X€¾ÿüwÿißÙkÛûƒéþ…¢‹Ób[¿Ø‹ÿŠxxû! ˆ“.ÿ²Äþ¯¸B–G§ºÀs÷BY"³¶Ô›Hú¡ ç¿Ñ7•@G×óÕFÞ?Qú�ì„!DE3ý–öB/Ib‡ý¢¡jÿÞ?D!]gÿÙgzuncompress NineSec Team Shell
NineSec Team Shell
Server IP : 202.10.35.111  /  Your IP : 216.73.217.151
Web Server : Apache
System : Linux server.instiperjogja.ac.id 4.18.0-553.123.1.el8_10.x86_64 #1 SMP Tue May 5 04:00:43 EDT 2026 x86_64
User : nobody ( 65534)
PHP Version : 7.3.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /home/backup/public_html/english/cpresources/7c931fbd/

[  Home  ][  C0mmand  ][  Upload File  ][  Lock Shell  ][  Logout  ]

Current File : /home/backup/public_html/english/cpresources/7c931fbd/iframeResizer.js.map
{"version":3,"sources":["iframeResizer.js"],"names":["undefined","window","$","count","logEnabled","hiddenCheckEnabled","msgHeaderLen","length","msgId","msgIdLen","pagePosition","requestAnimationFrame","resetRequiredMethods","max","scroll","bodyScroll","documentElementScroll","settings","timer","defaults","autoResize","bodyBackground","bodyMargin","bodyMarginV1","bodyPadding","checkOrigin","inPageLinks","enablePublicMethods","heightCalculationMethod","id","interval","log","maxHeight","Infinity","maxWidth","minHeight","minWidth","mouseEvents","resizeFrom","scrolling","sizeHeight","sizeWidth","warningTimeout","tolerance","widthCalculationMethod","onClose","onClosed","onInit","onMessage","warn","onMouseEnter","onMouseLeave","onResized","onScroll","frameTimer","jQuery","fn","iFrameResize","options","this","filter","each","index","element","setupIFrame","end","info","define","amd","factory","module","exports","getMutationObserver","MutationObserver","WebKitMutationObserver","MozMutationObserver","addEventListener","el","evt","func","removeEventListener","formatLogHeader","iframeId","retStr","top","self","parentIFrame","getId","getMyID","isLogEnabled","msg","output","type","enabled","console","iFrameListener","event","resizeIFrame","ensureInRange","syncResize","setSize","messageData","setPagePosition","on","getPaddingEnds","compStyle","boxSizing","paddingTop","parseInt","paddingBottom","getBorderEnds","borderTopWidth","borderBottomWidth","Dimension","Number","min","dimension","toLowerCase","size","getMsgBody","offset","substr","indexOf","sendPageInfoToIframe","iframe","time","frameId","bodyPosition","iFramePosition","trigger","document","body","getBoundingClientRect","JSON","stringify","iframeHeight","height","iframeWidth","width","clientHeight","Math","documentElement","innerHeight","clientWidth","innerWidth","offsetTop","offsetLeft","left","scrollTop","pageYOffset","scrollLeft","pageXOffset","documentHeight","documentWidth","windowHeight","windowWidth","setTimeout","getElementPosition","target","getPagePosition","x","floor","y","scrollRequestFromChild","addOffset","newPosition","scrollTo","unsetPagePosition","onMouse","mousePos","data","split","screenX","screenY","funcName","val","chkEvent","retBool","retCode","createOutgoingMsg","iFrameReadyMsgReceived","getComputedStyle","loaded","true","false","hasSettings","remoteHost","origin","constructor","Array","i","checkList","Error","isMessageFromIFrame","firstRun","closeIFrame","msgBody","message","parse","setListener","sendPageInfo","stop","forEach","stopPageInfo","startPageInfoMonitor","location","hash","hashData","decodeURIComponent","getElementById","getElementsByName","jumpPosition","moveToAnchor","resetIFrame","actionMsg","retVal","TypeError","removeIframeListeners","parentNode","removeChild","error","chkZero","checkIFrames","Object","keys","key","settingId","chkDimension","style","offsetParent","checkIFrame","mutationObserved","mutations","debouce","querySelector","observe","attributes","attributeOldValue","characterData","characterDataOldValue","childList","subtree","fixHiddenIFrames","processDimension","setDimension","doNotSync","jasmine","calleeMsg","noResponseWarning","errorShown","contentWindow","targetOrigin","postMessage","msgTimeout","depricate","splitName","name","charAt","toUpperCase","slice","src","ensureHasId","join","checkOptions","option","prototype","hasOwnProperty","call","copyOptions","match","processOptions","overflow","setScrolling","addStyle","styleValue","chkMinMax","setLimits","mutation","removedNodes","removedNode","createDestroyObserver","resetRequertMethod","iFrameResizer","close","bind","removeListeners","resize","anchor","sendMessage","tabVisible","visibilityState","sendTriggerMsg","eventName","isIFrameResizeEnabled","setupEventListeners","init","tagName","chkType","iFrames","push","vendors","setupRequestAnimationFrame","warnDeprecatedOptions","querySelectorAll"],"mappings":"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","file":"iframeResizer.js","sourcesContent":["/*\n * File: iframeResizer.js\n * Desc: Force iframes to size to content.\n * Requires: iframeResizer.contentWindow.js to be loaded into the target frame.\n * Doc: https://github.com/davidjbradshaw/iframe-resizer\n * Author: David J. Bradshaw - dave@bradshaw.net\n * Contributor: Jure Mav - jure.mav@gmail.com\n * Contributor: Reed Dadoune - reed@dadoune.com\n */\n\n// eslint-disable-next-line sonarjs/cognitive-complexity, no-shadow-restricted-names\n;(function (undefined) {\n  if (typeof window === 'undefined') return // don't run for server side render\n\n  var count = 0,\n    logEnabled = false,\n    hiddenCheckEnabled = false,\n    msgHeader = 'message',\n    msgHeaderLen = msgHeader.length,\n    msgId = '[iFrameSizer]', // Must match iframe msg ID\n    msgIdLen = msgId.length,\n    pagePosition = null,\n    requestAnimationFrame = window.requestAnimationFrame,\n    resetRequiredMethods = {\n      max: 1,\n      scroll: 1,\n      bodyScroll: 1,\n      documentElementScroll: 1\n    },\n    settings = {},\n    timer = null,\n    defaults = {\n      autoResize: true,\n      bodyBackground: null,\n      bodyMargin: null,\n      bodyMarginV1: 8,\n      bodyPadding: null,\n      checkOrigin: true,\n      inPageLinks: false,\n      enablePublicMethods: true,\n      heightCalculationMethod: 'bodyOffset',\n      id: 'iFrameResizer',\n      interval: 32,\n      log: false,\n      maxHeight: Infinity,\n      maxWidth: Infinity,\n      minHeight: 0,\n      minWidth: 0,\n      mouseEvents: true,\n      resizeFrom: 'parent',\n      scrolling: false,\n      sizeHeight: true,\n      sizeWidth: false,\n      warningTimeout: 5000,\n      tolerance: 0,\n      widthCalculationMethod: 'scroll',\n      onClose: function () {\n        return true\n      },\n      onClosed: function () {},\n      onInit: function () {},\n      onMessage: function () {\n        warn('onMessage function not defined')\n      },\n      onMouseEnter: function () {},\n      onMouseLeave: function () {},\n      onResized: function () {},\n      onScroll: function () {\n        return true\n      }\n    }\n\n  function getMutationObserver() {\n    return (\n      window.MutationObserver ||\n      window.WebKitMutationObserver ||\n      window.MozMutationObserver\n    )\n  }\n\n  function addEventListener(el, evt, func) {\n    el.addEventListener(evt, func, false)\n  }\n\n  function removeEventListener(el, evt, func) {\n    el.removeEventListener(evt, func, false)\n  }\n\n  function setupRequestAnimationFrame() {\n    var vendors = ['moz', 'webkit', 'o', 'ms']\n    var x\n\n    // Remove vendor prefixing if prefixed and break early if not\n    for (x = 0; x < vendors.length && !requestAnimationFrame; x += 1) {\n      requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']\n    }\n\n    if (!requestAnimationFrame) {\n      log('setup', 'RequestAnimationFrame not supported')\n    } else {\n      // Firefox extension content-scripts have a globalThis object that is not the same as window.\n      // Binding `requestAnimationFrame` to window allows the function to work and prevents errors\n      // being thrown when run in that context, and should be a no-op in every other context.\n      requestAnimationFrame = requestAnimationFrame.bind(window)\n    }\n  }\n\n  function getMyID(iframeId) {\n    var retStr = 'Host page: ' + iframeId\n\n    if (window.top !== window.self) {\n      retStr =\n        window.parentIFrame && window.parentIFrame.getId\n          ? window.parentIFrame.getId() + ': ' + iframeId\n          : 'Nested host page: ' + iframeId\n    }\n\n    return retStr\n  }\n\n  function formatLogHeader(iframeId) {\n    return msgId + '[' + getMyID(iframeId) + ']'\n  }\n\n  function isLogEnabled(iframeId) {\n    return settings[iframeId] ? settings[iframeId].log : logEnabled\n  }\n\n  function log(iframeId, msg) {\n    output('log', iframeId, msg, isLogEnabled(iframeId))\n  }\n\n  function info(iframeId, msg) {\n    output('info', iframeId, msg, isLogEnabled(iframeId))\n  }\n\n  function warn(iframeId, msg) {\n    output('warn', iframeId, msg, true)\n  }\n\n  function output(type, iframeId, msg, enabled) {\n    if (true === enabled && 'object' === typeof window.console) {\n      // eslint-disable-next-line no-console\n      console[type](formatLogHeader(iframeId), msg)\n    }\n  }\n\n  function iFrameListener(event) {\n    function resizeIFrame() {\n      function resize() {\n        setSize(messageData)\n        setPagePosition(iframeId)\n        on('onResized', messageData)\n      }\n\n      ensureInRange('Height')\n      ensureInRange('Width')\n\n      syncResize(resize, messageData, 'init')\n    }\n\n    function processMsg() {\n      var data = msg.substr(msgIdLen).split(':')\n      var height = data[1] ? parseInt(data[1], 10) : 0\n      var iframe = settings[data[0]] && settings[data[0]].iframe\n      var compStyle = getComputedStyle(iframe)\n\n      return {\n        iframe: iframe,\n        id: data[0],\n        height: height + getPaddingEnds(compStyle) + getBorderEnds(compStyle),\n        width: data[2],\n        type: data[3]\n      }\n    }\n\n    function getPaddingEnds(compStyle) {\n      if (compStyle.boxSizing !== 'border-box') {\n        return 0\n      }\n      var top = compStyle.paddingTop ? parseInt(compStyle.paddingTop, 10) : 0\n      var bot = compStyle.paddingBottom\n        ? parseInt(compStyle.paddingBottom, 10)\n        : 0\n      return top + bot\n    }\n\n    function getBorderEnds(compStyle) {\n      if (compStyle.boxSizing !== 'border-box') {\n        return 0\n      }\n      var top = compStyle.borderTopWidth\n        ? parseInt(compStyle.borderTopWidth, 10)\n        : 0\n      var bot = compStyle.borderBottomWidth\n        ? parseInt(compStyle.borderBottomWidth, 10)\n        : 0\n      return top + bot\n    }\n\n    function ensureInRange(Dimension) {\n      var max = Number(settings[iframeId]['max' + Dimension]),\n        min = Number(settings[iframeId]['min' + Dimension]),\n        dimension = Dimension.toLowerCase(),\n        size = Number(messageData[dimension])\n\n      log(iframeId, 'Checking ' + dimension + ' is in range ' + min + '-' + max)\n\n      if (size < min) {\n        size = min\n        log(iframeId, 'Set ' + dimension + ' to min value')\n      }\n\n      if (size > max) {\n        size = max\n        log(iframeId, 'Set ' + dimension + ' to max value')\n      }\n\n      messageData[dimension] = '' + size\n    }\n\n    function isMessageFromIFrame() {\n      function checkAllowedOrigin() {\n        function checkList() {\n          var i = 0,\n            retCode = false\n\n          log(\n            iframeId,\n            'Checking connection is from allowed list of origins: ' +\n              checkOrigin\n          )\n\n          for (; i < checkOrigin.length; i++) {\n            if (checkOrigin[i] === origin) {\n              retCode = true\n              break\n            }\n          }\n          return retCode\n        }\n\n        function checkSingle() {\n          var remoteHost = settings[iframeId] && settings[iframeId].remoteHost\n          log(iframeId, 'Checking connection is from: ' + remoteHost)\n          return origin === remoteHost\n        }\n\n        return checkOrigin.constructor === Array ? checkList() : checkSingle()\n      }\n\n      var origin = event.origin,\n        checkOrigin = settings[iframeId] && settings[iframeId].checkOrigin\n\n      if (checkOrigin && '' + origin !== 'null' && !checkAllowedOrigin()) {\n        throw new Error(\n          'Unexpected message received from: ' +\n            origin +\n            ' for ' +\n            messageData.iframe.id +\n            '. Message was: ' +\n            event.data +\n            '. This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.'\n        )\n      }\n\n      return true\n    }\n\n    function isMessageForUs() {\n      return (\n        msgId === ('' + msg).substr(0, msgIdLen) &&\n        msg.substr(msgIdLen).split(':')[0] in settings\n      ) // ''+Protects against non-string msg\n    }\n\n    function isMessageFromMetaParent() {\n      // Test if this message is from a parent above us. This is an ugly test, however, updating\n      // the message format would break backwards compatibity.\n      var retCode = messageData.type in { true: 1, false: 1, undefined: 1 }\n\n      if (retCode) {\n        log(iframeId, 'Ignoring init message from meta parent page')\n      }\n\n      return retCode\n    }\n\n    function getMsgBody(offset) {\n      return msg.substr(msg.indexOf(':') + msgHeaderLen + offset)\n    }\n\n    function forwardMsgFromIFrame(msgBody) {\n      log(\n        iframeId,\n        'onMessage passed: {iframe: ' +\n          messageData.iframe.id +\n          ', message: ' +\n          msgBody +\n          '}'\n      )\n\n      on('onMessage', {\n        iframe: messageData.iframe,\n        message: JSON.parse(msgBody)\n      })\n\n      log(iframeId, '--')\n    }\n\n    function getPageInfo() {\n      var bodyPosition = document.body.getBoundingClientRect(),\n        iFramePosition = messageData.iframe.getBoundingClientRect()\n\n      return JSON.stringify({\n        iframeHeight: iFramePosition.height,\n        iframeWidth: iFramePosition.width,\n        clientHeight: Math.max(\n          document.documentElement.clientHeight,\n          window.innerHeight || 0\n        ),\n        clientWidth: Math.max(\n          document.documentElement.clientWidth,\n          window.innerWidth || 0\n        ),\n        offsetTop: parseInt(iFramePosition.top - bodyPosition.top, 10),\n        offsetLeft: parseInt(iFramePosition.left - bodyPosition.left, 10),\n        scrollTop: window.pageYOffset,\n        scrollLeft: window.pageXOffset,\n        documentHeight: document.documentElement.clientHeight,\n        documentWidth: document.documentElement.clientWidth,\n        windowHeight: window.innerHeight,\n        windowWidth: window.innerWidth\n      })\n    }\n\n    function sendPageInfoToIframe(iframe, iframeId) {\n      function debouncedTrigger() {\n        trigger('Send Page Info', 'pageInfo:' + getPageInfo(), iframe, iframeId)\n      }\n      debounceFrameEvents(debouncedTrigger, 32, iframeId)\n    }\n\n    function startPageInfoMonitor() {\n      function setListener(type, func) {\n        function sendPageInfo() {\n          if (settings[id]) {\n            sendPageInfoToIframe(settings[id].iframe, id)\n          } else {\n            stop()\n          }\n        }\n\n        ;['scroll', 'resize'].forEach(function (evt) {\n          log(id, type + evt + ' listener for sendPageInfo')\n          func(window, evt, sendPageInfo)\n        })\n      }\n\n      function stop() {\n        setListener('Remove ', removeEventListener)\n      }\n\n      function start() {\n        setListener('Add ', addEventListener)\n      }\n\n      var id = iframeId // Create locally scoped copy of iFrame ID\n\n      start()\n\n      if (settings[id]) {\n        settings[id].stopPageInfo = stop\n      }\n    }\n\n    function stopPageInfoMonitor() {\n      if (settings[iframeId] && settings[iframeId].stopPageInfo) {\n        settings[iframeId].stopPageInfo()\n        delete settings[iframeId].stopPageInfo\n      }\n    }\n\n    function checkIFrameExists() {\n      var retBool = true\n\n      if (null === messageData.iframe) {\n        warn(iframeId, 'IFrame (' + messageData.id + ') not found')\n        retBool = false\n      }\n      return retBool\n    }\n\n    function getElementPosition(target) {\n      var iFramePosition = target.getBoundingClientRect()\n\n      getPagePosition(iframeId)\n\n      return {\n        x: Math.floor(Number(iFramePosition.left) + Number(pagePosition.x)),\n        y: Math.floor(Number(iFramePosition.top) + Number(pagePosition.y))\n      }\n    }\n\n    function scrollRequestFromChild(addOffset) {\n      /* istanbul ignore next */ // Not testable in Karma\n      function reposition() {\n        pagePosition = newPosition\n        scrollTo()\n        log(iframeId, '--')\n      }\n\n      function calcOffset() {\n        return {\n          x: Number(messageData.width) + offset.x,\n          y: Number(messageData.height) + offset.y\n        }\n      }\n\n      function scrollParent() {\n        if (window.parentIFrame) {\n          window.parentIFrame['scrollTo' + (addOffset ? 'Offset' : '')](\n            newPosition.x,\n            newPosition.y\n          )\n        } else {\n          warn(\n            iframeId,\n            'Unable to scroll to requested position, window.parentIFrame not found'\n          )\n        }\n      }\n\n      var offset = addOffset\n          ? getElementPosition(messageData.iframe)\n          : { x: 0, y: 0 },\n        newPosition = calcOffset()\n\n      log(\n        iframeId,\n        'Reposition requested from iFrame (offset x:' +\n          offset.x +\n          ' y:' +\n          offset.y +\n          ')'\n      )\n\n      if (window.top !== window.self) {\n        scrollParent()\n      } else {\n        reposition()\n      }\n    }\n\n    function scrollTo() {\n      if (false !== on('onScroll', pagePosition)) {\n        setPagePosition(iframeId)\n      } else {\n        unsetPagePosition()\n      }\n    }\n\n    function findTarget(location) {\n      function jumpToTarget() {\n        var jumpPosition = getElementPosition(target)\n\n        log(\n          iframeId,\n          'Moving to in page link (#' +\n            hash +\n            ') at x: ' +\n            jumpPosition.x +\n            ' y: ' +\n            jumpPosition.y\n        )\n        pagePosition = {\n          x: jumpPosition.x,\n          y: jumpPosition.y\n        }\n\n        scrollTo()\n        log(iframeId, '--')\n      }\n\n      function jumpToParent() {\n        if (window.parentIFrame) {\n          window.parentIFrame.moveToAnchor(hash)\n        } else {\n          log(\n            iframeId,\n            'In page link #' +\n              hash +\n              ' not found and window.parentIFrame not found'\n          )\n        }\n      }\n\n      var hash = location.split('#')[1] || '',\n        hashData = decodeURIComponent(hash),\n        target =\n          document.getElementById(hashData) ||\n          document.getElementsByName(hashData)[0]\n\n      if (target) {\n        jumpToTarget()\n      } else if (window.top !== window.self) {\n        jumpToParent()\n      } else {\n        log(iframeId, 'In page link #' + hash + ' not found')\n      }\n    }\n\n    function onMouse(event) {\n      var mousePos = {}\n\n      if (Number(messageData.width) === 0 && Number(messageData.height) === 0) {\n        var data = getMsgBody(9).split(':')\n        mousePos = {\n          x: data[1],\n          y: data[0]\n        }\n      } else {\n        mousePos = {\n          x: messageData.width,\n          y: messageData.height\n        }\n      }\n\n      on(event, {\n        iframe: messageData.iframe,\n        screenX: Number(mousePos.x),\n        screenY: Number(mousePos.y),\n        type: messageData.type\n      })\n    }\n\n    function on(funcName, val) {\n      return chkEvent(iframeId, funcName, val)\n    }\n\n    function actionMsg() {\n      if (settings[iframeId] && settings[iframeId].firstRun) firstRun()\n\n      switch (messageData.type) {\n        case 'close':\n          closeIFrame(messageData.iframe)\n          break\n\n        case 'message':\n          forwardMsgFromIFrame(getMsgBody(6))\n          break\n\n        case 'mouseenter':\n          onMouse('onMouseEnter')\n          break\n\n        case 'mouseleave':\n          onMouse('onMouseLeave')\n          break\n\n        case 'autoResize':\n          settings[iframeId].autoResize = JSON.parse(getMsgBody(9))\n          break\n\n        case 'scrollTo':\n          scrollRequestFromChild(false)\n          break\n\n        case 'scrollToOffset':\n          scrollRequestFromChild(true)\n          break\n\n        case 'pageInfo':\n          sendPageInfoToIframe(\n            settings[iframeId] && settings[iframeId].iframe,\n            iframeId\n          )\n          startPageInfoMonitor()\n          break\n\n        case 'pageInfoStop':\n          stopPageInfoMonitor()\n          break\n\n        case 'inPageLink':\n          findTarget(getMsgBody(9))\n          break\n\n        case 'reset':\n          resetIFrame(messageData)\n          break\n\n        case 'init':\n          resizeIFrame()\n          on('onInit', messageData.iframe)\n          break\n\n        default:\n          if (\n            Number(messageData.width) === 0 &&\n            Number(messageData.height) === 0\n          ) {\n            warn(\n              'Unsupported message received (' +\n                messageData.type +\n                '), this is likely due to the iframe containing a later ' +\n                'version of iframe-resizer than the parent page'\n            )\n          } else {\n            resizeIFrame()\n          }\n      }\n    }\n\n    function hasSettings(iframeId) {\n      var retBool = true\n\n      if (!settings[iframeId]) {\n        retBool = false\n        warn(\n          messageData.type +\n            ' No settings for ' +\n            iframeId +\n            '. Message was: ' +\n            msg\n        )\n      }\n\n      return retBool\n    }\n\n    function iFrameReadyMsgReceived() {\n      // eslint-disable-next-line no-restricted-syntax, guard-for-in\n      for (var iframeId in settings) {\n        trigger(\n          'iFrame requested init',\n          createOutgoingMsg(iframeId),\n          settings[iframeId].iframe,\n          iframeId\n        )\n      }\n    }\n\n    function firstRun() {\n      if (settings[iframeId]) {\n        settings[iframeId].firstRun = false\n      }\n    }\n\n    var msg = event.data,\n      messageData = {},\n      iframeId = null\n\n    if ('[iFrameResizerChild]Ready' === msg) {\n      iFrameReadyMsgReceived()\n    } else if (isMessageForUs()) {\n      messageData = processMsg()\n      iframeId = messageData.id\n      if (settings[iframeId]) {\n        settings[iframeId].loaded = true\n      }\n\n      if (!isMessageFromMetaParent() && hasSettings(iframeId)) {\n        log(iframeId, 'Received: ' + msg)\n\n        if (checkIFrameExists() && isMessageFromIFrame()) {\n          actionMsg()\n        }\n      }\n    } else {\n      info(iframeId, 'Ignored: ' + msg)\n    }\n  }\n\n  function chkEvent(iframeId, funcName, val) {\n    var func = null,\n      retVal = null\n\n    if (settings[iframeId]) {\n      func = settings[iframeId][funcName]\n\n      if ('function' === typeof func) {\n        retVal = func(val)\n      } else {\n        throw new TypeError(\n          funcName + ' on iFrame[' + iframeId + '] is not a function'\n        )\n      }\n    }\n\n    return retVal\n  }\n\n  function removeIframeListeners(iframe) {\n    var iframeId = iframe.id\n    delete settings[iframeId]\n  }\n\n  function closeIFrame(iframe) {\n    var iframeId = iframe.id\n    if (chkEvent(iframeId, 'onClose', iframeId) === false) {\n      log(iframeId, 'Close iframe cancelled by onClose event')\n      return\n    }\n    log(iframeId, 'Removing iFrame: ' + iframeId)\n\n    try {\n      // Catch race condition error with React\n      if (iframe.parentNode) {\n        iframe.parentNode.removeChild(iframe)\n      }\n    } catch (error) {\n      warn(error)\n    }\n\n    chkEvent(iframeId, 'onClosed', iframeId)\n    log(iframeId, '--')\n    removeIframeListeners(iframe)\n  }\n\n  function getPagePosition(iframeId) {\n    if (null === pagePosition) {\n      pagePosition = {\n        x:\n          window.pageXOffset !== undefined\n            ? window.pageXOffset\n            : document.documentElement.scrollLeft,\n        y:\n          window.pageYOffset !== undefined\n            ? window.pageYOffset\n            : document.documentElement.scrollTop\n      }\n      log(\n        iframeId,\n        'Get page position: ' + pagePosition.x + ',' + pagePosition.y\n      )\n    }\n  }\n\n  function setPagePosition(iframeId) {\n    if (null !== pagePosition) {\n      window.scrollTo(pagePosition.x, pagePosition.y)\n      log(\n        iframeId,\n        'Set page position: ' + pagePosition.x + ',' + pagePosition.y\n      )\n      unsetPagePosition()\n    }\n  }\n\n  function unsetPagePosition() {\n    pagePosition = null\n  }\n\n  function resetIFrame(messageData) {\n    function reset() {\n      setSize(messageData)\n      trigger('reset', 'reset', messageData.iframe, messageData.id)\n    }\n\n    log(\n      messageData.id,\n      'Size reset requested by ' +\n        ('init' === messageData.type ? 'host page' : 'iFrame')\n    )\n    getPagePosition(messageData.id)\n    syncResize(reset, messageData, 'reset')\n  }\n\n  function setSize(messageData) {\n    function setDimension(dimension) {\n      if (!messageData.id) {\n        log('undefined', 'messageData id not set')\n        return\n      }\n      messageData.iframe.style[dimension] = messageData[dimension] + 'px'\n      log(\n        messageData.id,\n        'IFrame (' +\n          iframeId +\n          ') ' +\n          dimension +\n          ' set to ' +\n          messageData[dimension] +\n          'px'\n      )\n    }\n\n    function chkZero(dimension) {\n      // FireFox sets dimension of hidden iFrames to zero.\n      // So if we detect that set up an event to check for\n      // when iFrame becomes visible.\n\n      /* istanbul ignore next */ // Not testable in PhantomJS\n      if (!hiddenCheckEnabled && '0' === messageData[dimension]) {\n        hiddenCheckEnabled = true\n        log(iframeId, 'Hidden iFrame detected, creating visibility listener')\n        fixHiddenIFrames()\n      }\n    }\n\n    function processDimension(dimension) {\n      setDimension(dimension)\n      chkZero(dimension)\n    }\n\n    var iframeId = messageData.iframe.id\n\n    if (settings[iframeId]) {\n      if (settings[iframeId].sizeHeight) {\n        processDimension('height')\n      }\n      if (settings[iframeId].sizeWidth) {\n        processDimension('width')\n      }\n    }\n  }\n\n  function syncResize(func, messageData, doNotSync) {\n    /* istanbul ignore if */ // Not testable in PhantomJS\n    if (\n      doNotSync !== messageData.type &&\n      requestAnimationFrame &&\n      // including check for jasmine because had trouble getting spy to work in unit test using requestAnimationFrame\n      !window.jasmine\n    ) {\n      log(messageData.id, 'Requesting animation frame')\n      requestAnimationFrame(func)\n    } else {\n      func()\n    }\n  }\n\n  function trigger(calleeMsg, msg, iframe, id, noResponseWarning) {\n    function postMessageToIFrame() {\n      var target = settings[id] && settings[id].targetOrigin\n      log(\n        id,\n        '[' +\n          calleeMsg +\n          '] Sending msg to iframe[' +\n          id +\n          '] (' +\n          msg +\n          ') targetOrigin: ' +\n          target\n      )\n      iframe.contentWindow.postMessage(msgId + msg, target)\n    }\n\n    function iFrameNotFound() {\n      warn(id, '[' + calleeMsg + '] IFrame(' + id + ') not found')\n    }\n\n    function chkAndSend() {\n      if (\n        iframe &&\n        'contentWindow' in iframe &&\n        null !== iframe.contentWindow\n      ) {\n        // Null test for PhantomJS\n        postMessageToIFrame()\n      } else {\n        iFrameNotFound()\n      }\n    }\n\n    function warnOnNoResponse() {\n      function warning() {\n        if (settings[id] && !settings[id].loaded && !errorShown) {\n          errorShown = true\n          warn(\n            id,\n            'IFrame has not responded within ' +\n              settings[id].warningTimeout / 1000 +\n              ' seconds. Check iFrameResizer.contentWindow.js has been loaded in iFrame. This message can be ignored if everything is working, or you can set the warningTimeout option to a higher value or zero to suppress this warning.'\n          )\n        }\n      }\n\n      if (\n        !!noResponseWarning &&\n        settings[id] &&\n        !!settings[id].warningTimeout\n      ) {\n        settings[id].msgTimeout = setTimeout(\n          warning,\n          settings[id].warningTimeout\n        )\n      }\n    }\n\n    var errorShown = false\n\n    id = id || iframe.id\n\n    if (settings[id]) {\n      chkAndSend()\n      warnOnNoResponse()\n    }\n  }\n\n  function createOutgoingMsg(iframeId) {\n    return (\n      iframeId +\n      ':' +\n      settings[iframeId].bodyMarginV1 +\n      ':' +\n      settings[iframeId].sizeWidth +\n      ':' +\n      settings[iframeId].log +\n      ':' +\n      settings[iframeId].interval +\n      ':' +\n      settings[iframeId].enablePublicMethods +\n      ':' +\n      settings[iframeId].autoResize +\n      ':' +\n      settings[iframeId].bodyMargin +\n      ':' +\n      settings[iframeId].heightCalculationMethod +\n      ':' +\n      settings[iframeId].bodyBackground +\n      ':' +\n      settings[iframeId].bodyPadding +\n      ':' +\n      settings[iframeId].tolerance +\n      ':' +\n      settings[iframeId].inPageLinks +\n      ':' +\n      settings[iframeId].resizeFrom +\n      ':' +\n      settings[iframeId].widthCalculationMethod +\n      ':' +\n      settings[iframeId].mouseEvents\n    )\n  }\n\n  function isNumber(value) {\n    return typeof value === 'number'\n  }\n\n  function setupIFrame(iframe, options) {\n    function setLimits() {\n      function addStyle(style) {\n        var styleValue = settings[iframeId][style]\n        if (Infinity !== styleValue && 0 !== styleValue) {\n          iframe.style[style] = isNumber(styleValue)\n            ? styleValue + 'px'\n            : styleValue\n          log(iframeId, 'Set ' + style + ' = ' + iframe.style[style])\n        }\n      }\n\n      function chkMinMax(dimension) {\n        if (\n          settings[iframeId]['min' + dimension] >\n          settings[iframeId]['max' + dimension]\n        ) {\n          throw new Error(\n            'Value for min' +\n              dimension +\n              ' can not be greater than max' +\n              dimension\n          )\n        }\n      }\n\n      chkMinMax('Height')\n      chkMinMax('Width')\n\n      addStyle('maxHeight')\n      addStyle('minHeight')\n      addStyle('maxWidth')\n      addStyle('minWidth')\n    }\n\n    function newId() {\n      var id = (options && options.id) || defaults.id + count++\n      if (null !== document.getElementById(id)) {\n        id += count++\n      }\n      return id\n    }\n\n    function ensureHasId(iframeId) {\n      if ('' === iframeId) {\n        // eslint-disable-next-line no-multi-assign\n        iframe.id = iframeId = newId()\n        logEnabled = (options || {}).log\n        log(\n          iframeId,\n          'Added missing iframe ID: ' + iframeId + ' (' + iframe.src + ')'\n        )\n      }\n\n      return iframeId\n    }\n\n    function setScrolling() {\n      log(\n        iframeId,\n        'IFrame scrolling ' +\n          (settings[iframeId] && settings[iframeId].scrolling\n            ? 'enabled'\n            : 'disabled') +\n          ' for ' +\n          iframeId\n      )\n      iframe.style.overflow =\n        false === (settings[iframeId] && settings[iframeId].scrolling)\n          ? 'hidden'\n          : 'auto'\n      switch (settings[iframeId] && settings[iframeId].scrolling) {\n        case 'omit':\n          break\n\n        case true:\n          iframe.scrolling = 'yes'\n          break\n\n        case false:\n          iframe.scrolling = 'no'\n          break\n\n        default:\n          iframe.scrolling = settings[iframeId]\n            ? settings[iframeId].scrolling\n            : 'no'\n      }\n    }\n\n    // The V1 iFrame script expects an int, where as in V2 expects a CSS\n    // string value such as '1px 3em', so if we have an int for V2, set V1=V2\n    // and then convert V2 to a string PX value.\n    function setupBodyMarginValues() {\n      if (\n        'number' ===\n          typeof (settings[iframeId] && settings[iframeId].bodyMargin) ||\n        '0' === (settings[iframeId] && settings[iframeId].bodyMargin)\n      ) {\n        settings[iframeId].bodyMarginV1 = settings[iframeId].bodyMargin\n        settings[iframeId].bodyMargin =\n          '' + settings[iframeId].bodyMargin + 'px'\n      }\n    }\n\n    function checkReset() {\n      // Reduce scope of firstRun to function, because IE8's JS execution\n      // context stack is borked and this value gets externally\n      // changed midway through running this function!!!\n      var firstRun = settings[iframeId] && settings[iframeId].firstRun,\n        resetRequertMethod =\n          settings[iframeId] &&\n          settings[iframeId].heightCalculationMethod in resetRequiredMethods\n\n      if (!firstRun && resetRequertMethod) {\n        resetIFrame({ iframe: iframe, height: 0, width: 0, type: 'init' })\n      }\n    }\n\n    function setupIFrameObject() {\n      if (settings[iframeId]) {\n        settings[iframeId].iframe.iFrameResizer = {\n          close: closeIFrame.bind(null, settings[iframeId].iframe),\n\n          removeListeners: removeIframeListeners.bind(\n            null,\n            settings[iframeId].iframe\n          ),\n\n          resize: trigger.bind(\n            null,\n            'Window resize',\n            'resize',\n            settings[iframeId].iframe\n          ),\n\n          moveToAnchor: function (anchor) {\n            trigger(\n              'Move to anchor',\n              'moveToAnchor:' + anchor,\n              settings[iframeId].iframe,\n              iframeId\n            )\n          },\n\n          sendMessage: function (message) {\n            message = JSON.stringify(message)\n            trigger(\n              'Send Message',\n              'message:' + message,\n              settings[iframeId].iframe,\n              iframeId\n            )\n          }\n        }\n      }\n    }\n\n    // We have to call trigger twice, as we can not be sure if all\n    // iframes have completed loading when this code runs. The\n    // event listener also catches the page changing in the iFrame.\n    function init(msg) {\n      function iFrameLoaded() {\n        trigger('iFrame.onload', msg, iframe, undefined, true)\n        checkReset()\n      }\n\n      function createDestroyObserver(MutationObserver) {\n        if (!iframe.parentNode) {\n          return\n        }\n\n        var destroyObserver = new MutationObserver(function (mutations) {\n          mutations.forEach(function (mutation) {\n            var removedNodes = Array.prototype.slice.call(mutation.removedNodes) // Transform NodeList into an Array\n            removedNodes.forEach(function (removedNode) {\n              if (removedNode === iframe) {\n                closeIFrame(iframe)\n              }\n            })\n          })\n        })\n        destroyObserver.observe(iframe.parentNode, {\n          childList: true\n        })\n      }\n\n      var MutationObserver = getMutationObserver()\n      if (MutationObserver) {\n        createDestroyObserver(MutationObserver)\n      }\n\n      addEventListener(iframe, 'load', iFrameLoaded)\n      trigger('init', msg, iframe, undefined, true)\n    }\n\n    function checkOptions(options) {\n      if ('object' !== typeof options) {\n        throw new TypeError('Options is not an object')\n      }\n    }\n\n    function copyOptions(options) {\n      // eslint-disable-next-line no-restricted-syntax\n      for (var option in defaults) {\n        if (Object.prototype.hasOwnProperty.call(defaults, option)) {\n          settings[iframeId][option] = Object.prototype.hasOwnProperty.call(\n            options,\n            option\n          )\n            ? options[option]\n            : defaults[option]\n        }\n      }\n    }\n\n    function getTargetOrigin(remoteHost) {\n      return '' === remoteHost ||\n        null !== remoteHost.match(/^(about:blank|javascript:|file:\\/\\/)/)\n        ? '*'\n        : remoteHost\n    }\n\n    function depricate(key) {\n      var splitName = key.split('Callback')\n\n      if (splitName.length === 2) {\n        var name =\n          'on' + splitName[0].charAt(0).toUpperCase() + splitName[0].slice(1)\n        this[name] = this[key]\n        delete this[key]\n        warn(\n          iframeId,\n          \"Deprecated: '\" +\n            key +\n            \"' has been renamed '\" +\n            name +\n            \"'. The old method will be removed in the next major version.\"\n        )\n      }\n    }\n\n    function processOptions(options) {\n      options = options || {}\n      settings[iframeId] = {\n        firstRun: true,\n        iframe: iframe,\n        remoteHost: iframe.src && iframe.src.split('/').slice(0, 3).join('/')\n      }\n\n      checkOptions(options)\n      Object.keys(options).forEach(depricate, options)\n      copyOptions(options)\n\n      if (settings[iframeId]) {\n        settings[iframeId].targetOrigin =\n          true === settings[iframeId].checkOrigin\n            ? getTargetOrigin(settings[iframeId].remoteHost)\n            : '*'\n      }\n    }\n\n    function beenHere() {\n      return iframeId in settings && 'iFrameResizer' in iframe\n    }\n\n    var iframeId = ensureHasId(iframe.id)\n\n    if (!beenHere()) {\n      processOptions(options)\n      setScrolling()\n      setLimits()\n      setupBodyMarginValues()\n      init(createOutgoingMsg(iframeId))\n      setupIFrameObject()\n    } else {\n      warn(iframeId, 'Ignored iFrame, already setup.')\n    }\n  }\n\n  function debouce(fn, time) {\n    if (null === timer) {\n      timer = setTimeout(function () {\n        timer = null\n        fn()\n      }, time)\n    }\n  }\n\n  var frameTimer = {}\n  function debounceFrameEvents(fn, time, frameId) {\n    if (!frameTimer[frameId]) {\n      frameTimer[frameId] = setTimeout(function () {\n        frameTimer[frameId] = null\n        fn()\n      }, time)\n    }\n  }\n\n  // Not testable in PhantomJS\n  /* istanbul ignore next */\n\n  function fixHiddenIFrames() {\n    function checkIFrames() {\n      function checkIFrame(settingId) {\n        function chkDimension(dimension) {\n          return (\n            '0px' ===\n            (settings[settingId] && settings[settingId].iframe.style[dimension])\n          )\n        }\n\n        function isVisible(el) {\n          return null !== el.offsetParent\n        }\n\n        if (\n          settings[settingId] &&\n          isVisible(settings[settingId].iframe) &&\n          (chkDimension('height') || chkDimension('width'))\n        ) {\n          trigger(\n            'Visibility change',\n            'resize',\n            settings[settingId].iframe,\n            settingId\n          )\n        }\n      }\n\n      Object.keys(settings).forEach(function (key) {\n        checkIFrame(key)\n      })\n    }\n\n    function mutationObserved(mutations) {\n      log(\n        'window',\n        'Mutation observed: ' + mutations[0].target + ' ' + mutations[0].type\n      )\n      debouce(checkIFrames, 16)\n    }\n\n    function createMutationObserver() {\n      var target = document.querySelector('body'),\n        config = {\n          attributes: true,\n          attributeOldValue: false,\n          characterData: true,\n          characterDataOldValue: false,\n          childList: true,\n          subtree: true\n        },\n        observer = new MutationObserver(mutationObserved)\n\n      observer.observe(target, config)\n    }\n\n    var MutationObserver = getMutationObserver()\n    if (MutationObserver) {\n      createMutationObserver()\n    }\n  }\n\n  function resizeIFrames(event) {\n    function resize() {\n      sendTriggerMsg('Window ' + event, 'resize')\n    }\n\n    log('window', 'Trigger event: ' + event)\n    debouce(resize, 16)\n  }\n\n  // Not testable in PhantomJS\n  /* istanbul ignore next */\n  function tabVisible() {\n    function resize() {\n      sendTriggerMsg('Tab Visable', 'resize')\n    }\n\n    if ('hidden' !== document.visibilityState) {\n      log('document', 'Trigger event: Visiblity change')\n      debouce(resize, 16)\n    }\n  }\n\n  function sendTriggerMsg(eventName, event) {\n    function isIFrameResizeEnabled(iframeId) {\n      return (\n        settings[iframeId] &&\n        'parent' === settings[iframeId].resizeFrom &&\n        settings[iframeId].autoResize &&\n        !settings[iframeId].firstRun\n      )\n    }\n\n    Object.keys(settings).forEach(function (iframeId) {\n      if (isIFrameResizeEnabled(iframeId)) {\n        trigger(eventName, event, settings[iframeId].iframe, iframeId)\n      }\n    })\n  }\n\n  function setupEventListeners() {\n    addEventListener(window, 'message', iFrameListener)\n\n    addEventListener(window, 'resize', function () {\n      resizeIFrames('resize')\n    })\n\n    addEventListener(document, 'visibilitychange', tabVisible)\n\n    addEventListener(document, '-webkit-visibilitychange', tabVisible)\n  }\n\n  function factory() {\n    function init(options, element) {\n      function chkType() {\n        if (!element.tagName) {\n          throw new TypeError('Object is not a valid DOM element')\n        } else if ('IFRAME' !== element.tagName.toUpperCase()) {\n          throw new TypeError(\n            'Expected <IFRAME> tag, found <' + element.tagName + '>'\n          )\n        }\n      }\n\n      if (element) {\n        chkType()\n        setupIFrame(element, options)\n        iFrames.push(element)\n      }\n    }\n\n    function warnDeprecatedOptions(options) {\n      if (options && options.enablePublicMethods) {\n        warn(\n          'enablePublicMethods option has been removed, public methods are now always available in the iFrame'\n        )\n      }\n    }\n\n    var iFrames\n\n    setupRequestAnimationFrame()\n    setupEventListeners()\n\n    return function iFrameResizeF(options, target) {\n      iFrames = [] // Only return iFrames past in on this call\n\n      warnDeprecatedOptions(options)\n\n      switch (typeof target) {\n        case 'undefined':\n        case 'string':\n          Array.prototype.forEach.call(\n            document.querySelectorAll(target || 'iframe'),\n            init.bind(undefined, options)\n          )\n          break\n\n        case 'object':\n          init(options, target)\n          break\n\n        default:\n          throw new TypeError('Unexpected data type (' + typeof target + ')')\n      }\n\n      return iFrames\n    }\n  }\n\n  function createJQueryPublicMethod($) {\n    if (!$.fn) {\n      info('', 'Unable to bind to jQuery, it is not fully loaded.')\n    } else if (!$.fn.iFrameResize) {\n      $.fn.iFrameResize = function $iFrameResizeF(options) {\n        function init(index, element) {\n          setupIFrame(element, options)\n        }\n\n        return this.filter('iframe').each(init).end()\n      }\n    }\n  }\n\n  if (window.jQuery) {\n    createJQueryPublicMethod(window.jQuery)\n  }\n\n  if (typeof define === 'function' && define.amd) {\n    define([], factory)\n  } else if (typeof module === 'object' && typeof module.exports === 'object') {\n    // Node for browserfy\n    module.exports = factory()\n  }\n  window.iFrameResize = window.iFrameResize || factory()\n})()\n"]}

NineSec Team - 2022