WordPress.org

Plugin Directory

Advanced iFrame

Include content the way YOU like in an iframe that can hide and modify elements and foreward parameters. You can also embed content directly.

6.3.3

  • Fix: Measuring of width does now check if it is > 1 as some full responsive sites do return such a value that is not valid.

6.3.2

  • Fix: Show one element on the local domain was fixed.

6.3.1

  • New: index.htm files where added to all directories to prevent directory listings if you server does allow this.
  • Fix: Standalone version was working fine in the standalone folder. The internal path handling was improved to make is easier to include it anywhere. (Pro)
  • Fix: !important was removed for hide elements because this was is not supported in jQuery.
  • Fix: All iframe attributes are trimmed now. This avoids errors because of spaces e.g. at the beginning of the src.
  • Fix: Better error message if the security key was not found because of wrong quotes.
  • Fix: > could not be used in the shortcode for jQuery patterns. You can now use ## which internaly converted to >
  • Fix: Save button was jumping when you try to click it on some browser. The css is fixed now.
  • Fix: Menu anchor fixed
  • Fix: Save caused a php warning when normal save buttons where used.

6.3

  • New: Standalone version. See standalone/readme.html for details (Pro)
  • New: Config files for the external workaround. See example 7 (Pro)
  • New: Create, view, edit and remove of config files added (Pro)
  • New: hide elements does now set !important when settings display:none as some themes have display:block !important somewhere.
  • New: Internal version check as WordPress only checks the free version. (Pro)
  • New: Help for Advanced iFrame Pro Widget added. (Pro)
  • New: Reset to default settings was added. (Pro)
  • New: Settings are shown in the main menu now also. Can be turned off in the config.
  • New: Element_to_measure is now also supported when resized later or the width is used. (Pro)
  • New: "Hide until loaded" does now use css instead of jQuery to hide the iframe.
  • New: strtolower was added when css styles are applyed on the same domain. This fixes problems if e.g. important is written Important which is invalid!
  • New: Improved documentation
  • New: Hide elements is now used with !important because depending on your css the elements are not hidden otherwise. Make sure to save the config as this is also implemented for the external workaround.
  • New: Automatic resize 500 ms later in the external workaround if the measured height is > 10.000 as this is either an error or a huge page where the delay does not matter. (Pro)
  • Fix: Resize is only done if the detected height is > 10. Everything below is expected that the height is not measured correctly. (Pro)
  • Fix: Many typos fixed
  • Fix: show_one_element_only has # already set on the same domain. The # was removed as in the external workaround the # was not set.
  • Fix: hide_page_until_loaded_external is now not connected to hide_page_until_loaded anymore. Now hide_page_until_loaded has be set to false if hide_page_until_loaded_external is used. But the old way has caused that misconfguration was showing a blank page.

6.2

  • New: {adminemail} is available as replace parameters in the src attribute (Pro).
  • Fix: modifyOnLoad... was not always rendered because show_part_of_iframe_next_viewports_hide was not checked properly
  • Fix: The browser detection is now only used when the browser detection or zoom is used. browser detection needs quite some memory. So this reduces the memory usage of the plugin if these features are not used (Pro).

6.1

  • New {userid}, {username}, {useremail} are available as replace parameters in the src attribute (Pro).
  • Fix: {} in the src field could not be saved in the administration because of WordPress esc_url. Now this works there too. It was always working in the shortcode attribute src.
  • Fix: In the external workaround the resizeLater function had a hardcoded id (advanced_iframe). When using a different one the callback with the size failed.
  • Fix: Browser detection needs at least php 5.3. Now a warning is shown when you don't have at least php 5.3 (Pro).
  • Fix: Plugin needed at least php 5.3 because the browser detection was used always to detect IE8. Now this check is only done if php 5.3 is available (Pro).
  • Fix: ?version= it attached to js and css of the administration like in the site.

6.0

  • New: Auto zoom. This feature does automatically calculates the needed zoom factor to fit the iframe page into the parent page. Works on the same and with the external workaround. Shortcode auto_zoom. See example 29-31 (Pro).
  • New: Lazy load with hidden elements. So this is a very good alternative for hidden tabs. See example 28 (Pro).
  • New: You can define the element that should trigger manual lazy load. See example 25 (Pro).
  • New: Static save button in a transparent footer (Pro).
  • New: Support for an alternative shortcode. So you can use e.g. "iframe" also if you want to switch/upgrade from iframe to advanced iframe pro. Please note: If you enable this, the security key is NOT checked anymore (Pro).
  • New: Support for the BBCode [iframe]url[/iframe] (Pro).
  • New: Automatic resize 500 ms later in the external workaround if the measured height is < 10 (Pro)
  • New: You can define the element you want to measure + a offset for fix content. This is sometimes needed for some themes where e.g. chrome returns 0 as height (Pro).
  • New: You can set additional styles to the wrapper div like overflow:auto with additional_styles_wrapper_div in the external workaround (Pro).
  • New: Show only one element does now also clones attached event listeners (Pro).
  • New: Browser detection now supports tablets, android, androidtablet and browsecap version 5033, 23 Sep 2014 was added (Pro).
  • Fix: transparent border of the wrapper div removed as it is not needed anymore.
  • Fix: Improved documentation for hide_part_of_iframe how to make a read only iframe (Pro).
  • Fix: $include_scripts_in_footer and $add_css_class_parent or store_height_in_cookie could cause a config error. You need to set include_scripts_in_footer to false if you want to use add_css_class_parent or store_height_in_cookie. Now this is added to the documentation and also the script does not fail anymore if you do set this wrong.
  • Fix: Added stripcslashes() when reading parameters when magic_quotes_gpc is on.
  • Fix: Removed the detection at resize if the iframe width has changed because at auto zoom the detection was wrong (Pro).

5.10

  • New: Resize on element resize is now supported. This enables you to resize the iframe if e.g. the content of the iframe changes because of div which expands. This feature is more powerfull and easier to configure than the "Resize on click/Ajax" setting and is also supported for the external workaround (Pro)
  • New: Trigger loading manually (enable_lazy_load_manual) added. Now lazy loaded iframes can be shown manually. See the lazy load demo for an example. (Pro)
  • New: Write css as script directly to the header. See the description (Write css directly) of the external workaround for details. (Pro)
  • New: Add a css style to each parent element of the iframe (add_css_class_parent) to be able to find and modify the parent even when no styles exist or classes are not used exclusively. (Pro)
  • New: Support of shortcodes in the src attribute. Please note. Needed encodings have to be done in the shortcode! (Pro)
  • New: Dynamic src parameters. You can define placeholders for the site, host and port. This is useful if you e.g. have a multidomain install where the host is dynamic (Pro)
  • New: Add the id to the url of the iframe (pass_id_by_url). This feature adds the id of the iframe to the iframe url. The id is than extracted on the iframe and used as value for the callback to find the right iframe on the parent side.add_css_class_parent (Pro)
  • New: additional_js_iframe - The ai_external.js can also write additional Javscript. This is loaded at the end of ai_external.js. The advantage using this is that the Javascript is only loaded if the page is inside the iframe and is not loaded when accessed directly. (Pro)
  • New: additional_js_file_iframe - The ai_external.js can also load an additional Javascript file. This is loaded at the end of ai_external.js. The advantage using this is that the file is only loaded if the page is inside the iframe and is not loaded when accessed directly. Please note that the file is loaded asynchronously. (Pro)
  • New: URL forward parameters (url_forward_parameter) does now also support ALL as setting. This does simply add all incoming parameters to the iframe url.
  • New: Scripts can now be loaded to the footer (include_scripts_in_footer). This is now default.
  • New: Height is only sent by the external workaround when the height does change and not everytime a configured event is triggered.
  • New: Browscap version 5030 lite 17th June 2014 is now included. (Pro)
  • Fix: All css/Javascript are now loaded to header/footer for all WordPress versions the wordpress way
  • Fix: Improved documentation.

5.9

  • New: Lazy load of iframes with treshold and fadein. Iframes can be loaded after the parent is done or the iframe is shown in the viewport! (Pro)
  • New: Better input validation. Avoids configuration errors.
  • New: WordPress 3.9.1 is supported
  • New: An alternative to the eval function is now used in Javascript to improve security and speed.
  • New: Browscap version 5029 lite 8th May 2014 is now included. (Pro)
  • Fix: Code improvements found with the plugin checker plugin
  • Fix: Hidden tabs was not working because of the responsive iframe feature. Now both do work independant again. (Pro)
  • Fix: Improved shortcode generator (Pro)
  • Fix: Width is now measured without the extra space (which was 0 by default anyway ;))
  • Fix: Whitelist for params was extended by :,? and &
  • Fix: Wrong default for Set Iframe height by ratio (iframe_height_ratio) was fixed (Pro)
  • Fix: loader icon and responsive iframe do now work together! (Pro)

5.8

  • New: Shortcode generator! In the administration you can now generate a default independent shortcode from the current settings.(Pro)
  • New: Set Iframe height by ratio (iframe_height_ratio). This can be used to make resonsive iframes where the content has a certain ratio like swf's, videos... (Pro)
  • New: WordPress 3.9 is supported
  • New: map_parameter_to_url does now also support that an url can be passed to the iframe directly. So show=http%3A%2F%2Fwww.tinywebgallery.com would open http://wwww.tinywebgallery.com inside the iframe. (Pro)
  • New: Browscap version 5027 lite 24th Apr 2014 is now included. (Pro)
  • Fix: Documentation improvements.

5.7

  • New: html attribute allowfullscreen is now supported.
  • New: Zoom and auto height with the external workaround with several iframes on the same page is now supported.
  • New: Tested with WordPress 3.8.2
  • Fix: Advanced iframe pro can now be used together with php-browser-detection. Before using both where leading to a function redeclaration.
  • Fix: Functions of the old and new workaround had the same name with different parameters. Now this functions have different names and also work properly with several iframes on the same page.

5.6

  • New: Support that the height of responsive iframes is automatically set to the new content height. This means that if you resize the parent page and the iframe width changes, the height of the iframe is adopted automatically like when loaded the first time! Please note that both pages (parent and iframe page) needs to be responsive. Please also read the blog entry about responsive iframes. (Pro)
  • New: Read-only iframes: hide_part_of_iframe does now support also %. This means together with color "transparent" you can create read-only iframes! See the pro demo. (Pro)
  • New: No output (except conguration errors) is done in the script function anymore. Everything is returned as return value.
  • New: Added updated browsecap.ini: 5024 (2nd March 2014) from browscap.org
  • Fix: Improved documentation in the administration.
  • Fix: Loader is now displayed better for small iframes. See example 2.
  • Fix: additional_css and additional_js are now again supported as shortcode attribute if WordPress >= 3.3. Before WP 3.3 you can only set this feature in the administration.

5.5

  • New: Support to resize to content height for iframes on hidden tabs (Pro). Works with e.g. Tabby Responsive Tabs and Post UI Tabs. This can also be used for simple hidden divs which opens e.g. on a mouse click or accordeon menus. Please read the documentation in the settings for details.
  • New: Loading of css and Javascript in the admin section is it only loaded when needed.
  • New: Loading of the additional css and Javascript in the page are also only loaded when you use WordPress >= 3.3. Before the files are always included to all pages because wordpress api does not allow this differently.
  • New: Added updated browsecap.ini: 5023 (2nd Feb 2014)
  • Fix: Loader css was always written even if not configured. Now only when this feature is enabled.
  • Fix: renamed internally is_browser to ai_is_browser to avoid problems when e.g. a theme does define is_ie()...
  • Fix: Area selector does now look good again.

5.4

  • New: The default security key is now based on the AUTH_KEY of WordPress and the current time. Please change the default key to your own to increase security.
  • New: Zoom of iframe content: This feature is supported for the following browsers: IE8-11, Firefox, Chrome, Safari, Opera. Older versions of IE are not supported. Please test all the browsers you want to support with your page because not all pages do look good in a zoomed mode! This feature is also part of the demo. So you can test your browsers there! (Pro)
  • New: iframe loading icon. You can now show a loding icon while the iframe is loaded. If you use the "hide until loaded feature" your users does see that something is happening. You can use your own image (loader.gif) with a size of 66x66 px by replacing the one in the img folder (Pro).
  • New: Accordeon menu (Pro).
  • New: Map parameter/value pairs to urls. You can specify parameter/value/url tripples which are used the following way. If the parent has ?parameter=value than the url of the setting is used as src for the iframe (Pro).
  • New: Reading of browser detection file is cached (Pro).
  • New: Improved padding and better handling in expert mode (Pro)
  • New: Input text fields have now dynamic sizes. So if you enlage the screen they should always fit. Textfields with numbers only are now much shorter as the numbers there never get longer.
  • Fix: Administration was not shown properly on MAC.
  • Fix: Expert mode description fixed (Pro)
  • Fix: Error message when saving a special setting was fixed

5.3

  • New: Browser detection added. You can now specify browser specific iframes. This is important especially for the "Show only part of the iframe" where browser differences of a few pixels can matter. Also mobile, iphone, ipad can be detected. A modified version of php-browser-detection is used which uses browscap.org as data! Important: Read the documentation at "Browser detection" in the plugin how to use this! (Pro)
  • New: Change link targets on the parent that they open inside the iframe. Shortcode: change_parent_links_target (Pro)
  • New: Change link targets inside the iframe if the iframe page is on the same domain or if you can use the external workaround. Shortcodes: change_iframe_links, change_iframe_links_target (Pro)
  • New: Redirect direct access of the iframe page to the parent page. Does also add existing parameter to the parent url (Pro)
  • New: url forward parameter mapping. WordPress has many reserved word in the url so they cannot be used. Now parameters can be mapped to a different one in the confiuration. so e.g. name is e.g. a reserved word an cannot be used. using ainame|name in the configuration will forward 'ainame=hallo' as 'name=hallo' to the iframe (Pro).
  • New: "Show only a part of an iframe" has now a new setting $show_part_of_iframe_style where a style can be set for e.g. a border (Pro).
  • New: Integrated jQuery help (Pro)
  • New: Improved error messages
  • Fix: Area selector does now select 'Yes' at the "Show only part of the iframe" when data is chosen (Pro).
  • Fix: Area selector does now enable all disabled radio elements when data is chosen (Pro).
  • Fix: Additional spaces are removed when used in jQuery attributes
  • Fix: Typos in the descriptions where fixed.
  • Fix: ereg was replaced by preg_match to avoid deprecated warnings with php < 5.3

5.2

  • New: New feature "Hide a part of the iframe". Extra layers can be placed over the iframe. This enables you to e.g. hide a logo or even place your own logo on an iframe. See the pro demo for examples (Pro)
  • New: Try catch is now used at features which could fail when features for the same domain are used on external domains. Now the exceptions are catched and logged to the console.
  • New: A dynamic auto id is now only generated if several iframes are detected on one page.
  • New: Tested with WordPress 3.8
  • New: Improved documentation
  • Fix: At grayed out radios only the first radio box was grayed out - now all are disabled

5.1

  • New: vertical and/or horizontal scrollbars in the pro feature "Show only part of the iframe" solution are possible. This makes it possible to include e.g. a whole inner content with scrollbars but without showing e.g. the header of the external page. See the pro version for a working example.
  • New: Resize can now be delayed. This helps if the onload event is fired but the page is not completely build. This feature is also possible in the external workaround of the pro version.
  • New: Administration options are grayed out if not available because of another setting.
  • New: Expert mode. If you enable this the description is only shown if you click on the setting. You see more settings at once but only one description at once. Use this if you are common with the settings.
  • New: id is now set automatically if a src is set in the shortcode but no id is set. This avoids problems if people forgets to set the id ;).
  • Fix: The external workaround does now hide the html element until all modifications are done. Before only the body was hidden which was showing the background in some browsers. If you still see a background for a very short time please look into ai_external.template.js - line 53

5.0.1

  • New: Support of the external height workaround when the iframe is already in an iframe. Now the correct iframe is used and not the top one anymore.
  • Removed not used file.

5.0

  • New: 'Show only a part of the iframe' has now a graphical area selector where yu can simply select the area you want to show with the mouse! (Pro)
  • New: Improved external workaround: It can now be configured to work with different settings for different iframes
  • New: Improved documentation of the external workaround
  • New: Improved external workaround: "Modify the content of the iframe if the iframe page is on the same domain" is now supported in the workaround and can be configured for different domains (Pro).
  • New: Improved external workaround: The iframe can be hidden until al external modifications are done!
  • New: Improved external workaround: The same page can now be included into different wordpress installations. Only one configration is allowed here. For multiple configurations you need the onclude the different scripts depending on the parent with php.
  • New: Tested with WordPress 3.7.1
  • New: Fully compatible with php >= 5.3
  • New: "Scroll to top" does now not need a workaround anymore and the setting was moved to a different section where it makes more sense.
  • New: Whitelist for url foreward parameters. If the value does only contain parameters on the whitelist than the value is not encoded anymore. Whitelist: @a-zA-Z0-9---|)( minus and space.
  • New: Support of the external workaround for IE7 and IE8
  • New: Quickstart guide added to the administration page of advanced iframe pro.
  • New: When the external workaround is set to true settings which only work on the same domain are disabled.
  • New: Improved handling of the show_part_of_iframe_... feature. Not needed dependencies at configuration where removed. This enables more flexibility here! (Pro)
  • Fix: show_part_of_iframe_x and show_part_of_iframe_y where switched. now show_part_of_iframe_x = left and show_part_of_iframe_y = top (Pro)
  • Fix: \n where removed from the code because some other plugins converted them to br which where adding unwanted empty lines.
  • Fix: Hide elements until loaded is now again the last step of the onload values.
  • Fix: em tags where replaced by p tags in the administration. Copying em tags where copying the em tags to the editor as well which could cause invalid shortcodes
  • Fix: "Restart the viewports from the beginning after the last step": old shortcode was in the description show_part_of_iframe_do_update -> show_part_of_iframe_next_viewports_loop (Pro)

4.2

  • New: Improved external workaround. The body in the wrapper is not copied as simple string anymore (This removes e.g jQuery stuff that is attached in the DOM) but a div object is created where the child notes of the body are attached to. Thanks to Jason.
  • New: Improved external workaround. The wrapper div is now only rendered if needed.

4.1.1

  • Fix: Hidden administration fields caused a notice when saving.

4.1

  • New: New attribute use_shortcode_attributes_only. Enables not to use any of the defaults and only the settings specified as attributes.
  • New: Fields could only be made empty by entering a space. Now simply removing the text does work again.
  • Fix: minor fixes
  • Fix: Code and documentation improvements

4.0.1

  • Fix: Fixed a copy and paste error where wrong shortcodes where used in the documentation

4.0

  • New: Pro version on codecanyon.net.
  • New: Show only a part of an iframe - works on different domains! (Pro)
  • New: Change the visible part of the iframe after each onload event (Pro)
  • New: Open a new url after the last step (Pro)
  • New: Open the iframe in a new tab or as parent after the last step (Pro)
  • New: Widget. You can now include the shortcode also as widget (Pro)
  • New: New attribute 'style'. You can now set any style directly at the iframe. The recommended way is to use a css file and the attribute class.

3.6

  • New: Tested with WordPress 3.6
  • New: Updated example file.

3.5

  • New: The external workaround was rewritten. It does now work by only including a script to the iframe page.
  • New: The resize of the external workaround does now also make the iframe smaller.
  • New: The Javascript on the external page does only modifies the page if it is included in an iframe.
  • New: advanced-iframe is now also possible instead of advanced_iframe as shortcode
  • New: If you set scrolling to 'Not rendered' the attribute scrolling is not rendered to the iframe. This makes it possible to set this with css and make the scrollbar responsive as well.

3.4.3

  • New: Added a section in the FAQ how to use the advanced iframe multiple times on one installation

3.4.2

  • New: the style for the site is now inline because it was only one style. Now no extra css is loaded anymore.

3.4.1

  • Fix: Url of the support page was not starting with http and therefore not working
  • Fix: Url where checked with the sanizize functions of WordPress. This was too strict. Now esc_url() is used and stuff like %E5 does work as well in the url.

3.4

  • New: Basic support for multiple advanced iframes on one page. All generated public Javascript functions have now the id included in the name. Cookies and additional_height are not supported yet because they are used as global variables in the external js file.
  • New: additional_height has to be a number. px or % are now automatically removed to avoid Javascript errors.
  • Fix: forewarded parameters are now urlencoded. e.g. keyword=gr%E5%E5sen is now passed properly.

3.3

  • Fix: the height was not detected properly with firefox and some doctypes. Now a more advanced way to determine the height is used which works now fine for Firefox as well.

3.2

  • New: Paid support. Because some settings are quite advenced I now also offer paid support.
  • New: Iframe checker: Checks the headers if a page can be included into an iframe.
  • New: Javascript onload solution hiding the iframe until the content is loaded.
  • Fix: some shortcodes in the administration where not correct because of copy and paste.

3.1

  • New: Javascript onload solution for resizing the iframe dynamically to the width of the content.
  • New: Resize on AJAX events. Works for jQuery and direct XMLHttpRequest on the same domain.
  • New: Resize on click. You can specify the elements and a timeout when the resize should happen.
  • New: Scroll position is now saved and restored after the resize.
  • Fix: iFrames are now also made smaller at content resize in all browsers

3.0

  • A page or part of a page can now be embedded directly to the page with jQuery if the page is on the same domain. See the new section 'Include content directly'.
  • Tested with WordPress 3.5.1

2.1

  • Show only a specifiy part of the page in the iframe if the pages are on the same domain.

2.0.2

  • Tested with WordPress 3.5

2.0.1

  • Fix: The included footer was causing an Javascript error on non advanced iframe pages. Now I check if the function does exist.

2.0

  • New: onload attribute added
  • New: Javascript onload solution for scolling the parent page to the top.
  • New: Javascript onload solution for resizing the iframe dynamically to the height of the content.
  • New: Javascript solution for the scrolling and resizing that works cross domain as well.
  • New: Hide elements/modify css modify speed was dramatically improved. The function is now not called only in the ready event of JQuery but also directly before the footer. This causes that you don't see the changes most of the time anymore!
  • New: An additional css file can be added to the parent page.
  • New: An additional Javascript file can be added to the parent page.
  • New: Hide areas inside iframe if the pages are on the same domain.
  • New: Modify css styles inside iframe if the pages are on the same domain to e.g. change the width of the content area.

1.5

Support for src values that are hotlinked by the editor. Fixed the typo in the doumentation. in securitykey sometimes the r was missing

1.4

Documentation updated New: id and name attribute added

1.3.2

Improved the help Fix: css was not loaded because old css name was used

1.3.1

Fix: Improved error message if a   is in the shortcode instead of a normal space.

1.3

Fix: content_id,content_styles,hide_elements was always used from the config even when a shortcode was given. Now the shortcode is used as well.

1.2

Fix: The src was not working in the shortcode. I missed to rename this parameter when making this plugin more generic.

1.1

Fix: The iframe was always printed first. Now it is printed exacly where the shortcode is inserted.

1.0

First version.

Requires: 2.8.6 or higher
Compatible up to: 4.1.1
Last Updated: 2015-3-12
Active Installs: 20,000+

Ratings

4.4 out of 5 stars

Support

5 of 7 support threads in the last two months have been resolved.

Got something to say? Need help?

Compatibility

+
=
Not enough data

2 people say it works.
0 people say it's broken.

100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,2,2 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,2,2 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,2,2 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,3,3 100,1,1 100,2,2 100,2,2 100,2,2 100,1,1 100,2,2 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,2,2 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 50,2,1 100,3,3 100,2,2 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1
100,1,1 50,2,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,2,2