<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Juozas devBlog &#187; deep zoom</title>
	<atom:link href="http://dev.juokaz.com/tag/deep-zoom/feed" rel="self" type="application/rss+xml" />
	<link>http://dev.juokaz.com</link>
	<description>Random ideas, scripts and facts</description>
	<lastBuildDate>Mon, 22 Mar 2010 10:48:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Creating Deep Zoom applications with C#</title>
		<link>http://dev.juokaz.com/winphp-2009/creating-deep-zoom-applications-with-c</link>
		<comments>http://dev.juokaz.com/winphp-2009/creating-deep-zoom-applications-with-c#comments</comments>
		<pubDate>Sun, 26 Apr 2009 22:43:32 +0000</pubDate>
		<dc:creator>Juozas</dc:creator>
				<category><![CDATA[WinPhp 2009]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[competition]]></category>
		<category><![CDATA[deep zoom]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[manoknyga]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[msdn]]></category>
		<category><![CDATA[silverlight]]></category>
		<category><![CDATA[visual studio]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[windows server]]></category>

		<guid isPermaLink="false">http://dev.juokaz.com/?p=578</guid>
		<description><![CDATA[Today I was again working with my entry for WinPhp competition. Now with a key feature &#8211; Microsoft Deep Zoom.
To start with, there are many ways how Deep Zoom application can be created. As I have written before here, easiest way is to use Deep Zoom Composer. However, I want to use it as a [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://dev.juokaz.com/wp-content/uploads/2009/04/060807-0453-nextgenerat11.jpg" alt="Seadragon" title="Seadragon" width="219" height="98" class="alignnone size-full wp-image-593" />Today I was again working with my entry for <a href="http://wiki.phpconference.nl/2009_WinPHP_Challenge">WinPhp competition</a>. Now with a key feature &#8211; Microsoft <a href="http://livelabs.com/seadragon/">Deep Zoom</a>.</p>
<p>To start with, there are many ways how Deep Zoom application can be created. As I have written before <a href="http://dev.juokaz.com/html/deep-zoom-with-microsoft-seadragon">here</a>, easiest way is to use <a href="http://www.microsoft.com/downloads/details.aspx?familyid=457b17b7-52bf-4bda-87a3-fa8a4673f8bf&amp;displaylang=en">Deep Zoom Composer</a>. However, I want to use it as a part of my application, so any outside application is not a choice.</p>
<p>Microsoft has released independent Deep Zoom library, but documentation is <strong>very</strong> limited, so I mostly used various <a href="http://en.wikipedia.org/wiki/MSDN">MSDN</a> blogs. For example, only in this <a href="http://blogs.msdn.com/expression/archive/2008/11/26/hello-deepzoomtools-dll-deep-zoom-image-tile-generation-made-easy.aspx">article</a> I have found list of available classes (with some useful comments). My first try was to use <a href="http://blogs.sqlxml.org/bryantlikes/archive/2008/11/27/deep-zoom-image-generation-with-deepzoomtools-dll.aspx">this</a> Bryan Like&#8217;s example (at the end of post you can find a link to a working application).</p>
<p><a href="http://dev.juokaz.com/wp-content/uploads/2009/04/2313509133_d9602713d3.jpg"><img src="http://dev.juokaz.com/wp-content/uploads/2009/04/2313509133_d9602713d3-150x150.jpg" alt="Seadragon" title="Seadragon" style="float: right; margin-left: 5px;" width="100" height="100" class="alignnone size-thumbnail wp-image-595" /></a>Given code works just fine, but it can be improved. It allows doing a lot of post-processing modifications inside Silverligt client application, but in most cases such approach is very slow. Problem is, for every zoom level it loads not &#8220;grouped&#8221; image like <a href="http://dev.juokaz.com/wp-content/uploads/2009/04/0_1.jpg">this</a> but required size copies of all visible images.</p>
<p>If, for example, there are 1000 images in a window, it will load all of them even if a single image size is just some pixels. What correct application should do is to load &#8220;grouped&#8221; images &#8211; downloaded amount of data is the same, but required HTTP calls is minimal. I only recommend using that code if you need to have dynamic layout or something like that. As I said before, in most cases, different approach should be chosen.</p>
<p>For my tests I downloaded big collection (>5000) of books covers from my project <a href="http://www.manoknyga.lt">ManoKnyga.lt</a> and when tried to show them in one screen. Working <a href="http://winphp.juokaz.com/demo01/">demo</a> (requires Silverlight <a href="http://silverlight.net/GetStarted/">installed</a>), JavaScript example:<br />
<script type="text/javascript" src="http://seadragon.com/ajax/embed.js"></script><script type="text/javascript">Seadragon.embed("500px", "300px", "http://winphp.juokaz.com/demo01/ClientBin/GeneratedImages/output.xml", 29517, 20175, 256, 1, "jpg", [[0,0,29517,20175,0,9],[1956,0,652,665,0,10],[3260,0,652,321,0,10],[7824,0,652,628,0,10],[11084,0,652,495,0,10],[12388,0,1304,1047,0,10],[16952,0,652,487,0,10],[26080,0,652,843,0,10],[14344,0,652,1314,0,10],[21516,0,652,1628,0,10],[26732,0,652,1628,0,10],[24776,0,652,2490,0,10],[3260,869,652,2574,0,10],[4564,0,652,3463,0,10],[10432,0,652,3430,0,10],[11736,0,652,3054,0,10],[14996,0,652,3390,0,10],[16952,869,652,2305,0,10],[27384,0,652,3362,0,10],[1304,0,652,4324,0,10],[1956,869,652,3440,0,10],[2608,0,652,4263,0,10],[5216,0,652,4320,0,10],[7172,0,652,3956,0,10],[8476,0,652,4309,0,10],[9128,0,652,4174,0,10],[9780,0,652,4128,0,10],[10432,3476,652,672,0,10],[11084,869,652,3183,0,10],[12388,1047,652,3285,0,10],[19560,0,652,4023,0,10],[22820,0,652,3965,0,10],[24776,2607,652,1436,0,10],[25428,0,652,4316,0,10],[26080,869,652,3415,0,10],[11084,4346,652,552,0,10],[12388,4346,652,533,0,10],[16952,3476,652,1702,0,10],[17604,0,652,5047,0,10],[19560,4346,652,575,0,10],[20864,0,652,5201,0,10],[23472,0,652,4777,0,10],[24776,4346,652,652,0,10],[27384,3476,652,1712,0,10],[28036,0,652,4896,0,10],[28688,0,652,5206,0,10],[3912,0,652,5781,0,10],[8476,4346,652,1548,0,10],[15648,0,652,5890,0,10],[19560,5215,652,667,0,10],[22820,4346,652,1521,0,10],[24124,0,652,6074,0,10],[5216,4346,652,2556,0,10],[11084,5215,652,1435,0,10],[14344,1738,652,5058,0,10],[19560,6084,652,827,0,10],[24124,6084,652,417,0,10],[24776,5215,652,1595,0,10],[652,0,652,7762,0,10],[2608,4346,652,3274,0,10],[3912,6084,652,1701,0,10],[5216,6953,652,652,0,10],[5868,0,652,7609,0,10],[6520,0,652,7754,0,10],[11736,3476,652,4340,0,10],[16952,5215,652,2580,0,10],[20212,0,652,7520,0,10],[23472,5215,652,2303,0,10],[26080,4346,652,3230,0,10],[1304,4346,652,4220,0,10],[3260,3476,652,5020,0,10],[5216,7822,652,863,0,10],[5868,7822,1304,920,0,10],[7172,4346,652,4316,0,10],[12388,5215,652,3412,0,10],[14344,6953,652,1483,0,10],[14996,3476,652,5082,0,10],[15648,6084,652,2474,0,10],[11736,7822,652,1731,0,10],[13040,1047,652,8430,0,10],[13692,0,652,9293,0,10],[18256,0,652,9558,0,10],[22168,0,652,9309,0,10],[23472,7822,652,1617,0,10],[1304,8691,652,1732,0,10],[18256,9560,652,810,0,10],[21516,1738,652,8578,0,10],[26080,7822,652,2313,0,10],[28036,5215,652,5177,0,10],[0,0,652,11250,0,10],[652,7822,652,3417,0,10],[1304,10429,652,840,0,10],[26080,10429,652,867,0,10],[3912,7822,652,4125,0,10],[9128,4346,652,7777,0,10],[9780,4346,652,7808,0,10],[17604,5215,652,6843,0,10],[22168,9560,652,2605,0,10],[24124,6953,652,5189,0,10],[12388,8691,652,4282,0,10],[16952,7822,652,5155,0,10],[17604,12168,652,770,0,10],[25428,4346,652,8565,0,10],[28688,5215,652,7605,0,10],[13040,9560,652,4296,0,10],[19560,6953,652,6736,0,10],[20212,7822,652,6062,0,10],[21516,10429,652,3309,0,10],[24776,6953,652,6716,0,10],[28688,13037,652,851,0,10],[3260,8691,652,5997,0,10],[8476,6084,652,8626,0,10],[10432,4346,652,10419,0,10],[20212,13906,652,845,0,10],[20864,5215,652,9136,0,10],[27384,5215,652,9320,0,10],[28688,13906,652,843,0,10],[2608,7822,652,7797,0,10],[3912,12168,652,3447,0,10],[9128,12168,652,3259,0,10],[16300,0,652,15624,0,10],[2608,15644,652,744,0,10],[3260,14775,652,1648,0,10],[3912,15644,652,660,0,10],[4564,3476,652,12824,0,10],[6520,8742,652,7742,0,10],[7172,8691,652,7678,0,10],[12388,13037,652,3386,0,10],[18256,10429,652,5867,0,10],[20212,14775,652,1437,0,10],[21516,13906,652,2600,0,10],[26732,1738,652,14700,0,10],[11084,6953,652,10347,0,10],[13040,13906,652,3274,0,10],[13692,9560,652,7758,0,10],[14344,8691,652,8658,0,10],[19560,13906,652,3259,0,10],[20864,14775,652,2520,0,10],[18908,0,652,18230,0,10],[22168,12168,652,6020,0,10],[22820,6084,652,12138,0,10],[24124,12168,652,6081,0,10],[26080,11298,652,6744,0,10],[0,11298,652,7736,0,10],[1304,11298,652,7605,0,10],[6520,16513,652,2563,0,10],[7172,16513,652,2659,0,10],[7824,869,652,18411,0,10],[8476,14775,652,4703,0,10],[9128,15644,652,3562,0,10],[9780,12168,652,7147,0,10],[10432,14775,652,4407,0,10],[11084,17382,652,1782,0,10],[11736,9560,652,9636,0,10],[12388,16513,652,2816,0,10],[13040,17382,652,1760,0,10],[13692,17382,652,1821,0,10],[14344,17382,652,1653,0,10],[14996,8691,652,10579,0,10],[15648,8691,652,10684,0,10],[16300,15644,652,3683,0,10],[16952,13037,652,6227,0,10],[17604,13037,652,6192,0,10],[18256,16513,652,2573,0,10],[18908,18251,652,1104,0,10],[19560,17382,652,1845,0,10],[20212,16513,652,2733,0,10],[20864,17382,652,1928,0,10],[21516,16513,652,2580,0,10],[22168,18251,652,1089,0,10],[22820,18251,652,1011,0,10],[23472,9560,652,9640,0,10],[24124,18251,652,970,0,10],[24776,13906,652,5244,0,10],[25428,13037,652,6246,0,10],[26080,18251,652,1101,0,10],[26732,16513,652,2737,0,10],[27384,14775,652,4316,0,10],[28036,10429,652,8963,0,10],[28688,14775,652,4511,0,10],[0,19120,652,991,0,10],[652,11298,652,8474,0,10],[1304,19120,652,825,0,10],[1956,4346,652,15829,0,10],[2608,16513,652,3601,0,10],[3260,16513,652,3539,0,10],[3912,16513,652,3654,0,10],[4564,16513,652,3486,0,10],[5216,8691,652,11262,0,10],[5868,8742,652,11402,0,10],[6520,19120,652,1053,0,10],[1956,0,652,665,0,11],[3260,0,652,321,0,11],[7824,0,652,628,0,11],[11084,0,652,495,0,11],[12388,0,1304,1047,0,11],[16952,0,652,487,0,11],[26080,0,652,843,0,11],[14344,0,652,1314,0,11],[21516,0,652,1628,0,11],[26732,0,652,1628,0,11],[24776,0,652,2490,0,11],[3260,869,652,2574,0,11],[4564,0,652,3463,0,11],[10432,0,652,3430,0,11],[11736,0,652,3054,0,11],[14996,0,652,3390,0,11],[16952,869,652,2305,0,11],[27384,0,652,3362,0,11],[1304,0,652,4324,0,11],[1956,869,652,3440,0,11],[2608,0,652,4263,0,11],[5216,0,652,4320,0,11],[7172,0,652,3956,0,11],[8476,0,652,4309,0,11],[9128,0,652,4174,0,11],[9780,0,652,4128,0,11],[10432,3476,652,672,0,11],[11084,869,652,3183,0,11],[12388,1047,652,3285,0,11],[19560,0,652,4023,0,11],[22820,0,652,3965,0,11],[24776,2607,652,1436,0,11],[25428,0,652,4316,0,11],[26080,869,652,3415,0,11],[11084,4346,652,552,0,11],[12388,4346,652,533,0,11],[16952,3476,652,1702,0,11],[17604,0,652,5047,0,11],[19560,4346,652,575,0,11],[20864,0,652,5201,0,11],[23472,0,652,4777,0,11],[24776,4346,652,652,0,11],[27384,3476,652,1712,0,11],[28036,0,652,4896,0,11],[28688,0,652,5206,0,11],[3912,0,652,5781,0,11],[8476,4346,652,1548,0,11],[15648,0,652,5890,0,11],[19560,5215,652,667,0,11],[22820,4346,652,1521,0,11],[24124,0,652,6074,0,11],[5216,4346,652,2556,0,11],[11084,5215,652,1435,0,11],[14344,1738,652,5058,0,11],[19560,6084,652,827,0,11],[24124,6084,652,417,0,11],[24776,5215,652,1595,0,11],[652,0,652,7762,0,11],[2608,4346,652,3274,0,11],[3912,6084,652,1701,0,11],[5216,6953,652,652,0,11],[5868,0,652,7609,0,11],[6520,0,652,7754,0,11],[11736,3476,652,4340,0,11],[16952,5215,652,2580,0,11],[20212,0,652,7520,0,11],[23472,5215,652,2303,0,11],[26080,4346,652,3230,0,11],[1304,4346,652,4220,0,11],[3260,3476,652,5020,0,11],[5216,7822,652,863,0,11],[5868,7822,1304,920,0,11],[7172,4346,652,4316,0,11],[12388,5215,652,3412,0,11],[14344,6953,652,1483,0,11],[14996,3476,652,5082,0,11],[15648,6084,652,2474,0,11],[11736,7822,652,1731,0,11],[13040,1047,652,8430,0,11],[13692,0,652,9293,0,11],[18256,0,652,9558,0,11],[22168,0,652,9309,0,11],[23472,7822,652,1617,0,11],[1304,8691,652,1732,0,11],[18256,9560,652,810,0,11],[21516,1738,652,8578,0,11],[26080,7822,652,2313,0,11],[28036,5215,652,5177,0,11],[0,0,652,11250,0,11],[652,7822,652,3417,0,11],[1304,10429,652,840,0,11],[26080,10429,652,867,0,11],[3912,7822,652,4125,0,11],[9128,4346,652,7777,0,11],[9780,4346,652,7808,0,11],[17604,5215,652,6843,0,11],[22168,9560,652,2605,0,11],[24124,6953,652,5189,0,11],[12388,8691,652,4282,0,11],[16952,7822,652,5155,0,11],[17604,12168,652,770,0,11],[25428,4346,652,8565,0,11],[28688,5215,652,7605,0,11],[13040,9560,652,4296,0,11],[19560,6953,652,6736,0,11],[20212,7822,652,6062,0,11],[21516,10429,652,3309,0,11],[24776,6953,652,6716,0,11],[28688,13037,652,851,0,11],[3260,8691,652,5997,0,11],[8476,6084,652,8626,0,11],[10432,4346,652,10419,0,11],[20212,13906,652,845,0,11],[20864,5215,652,9136,0,11],[27384,5215,652,9320,0,11],[28688,13906,652,843,0,11],[2608,7822,652,7797,0,11],[3912,12168,652,3447,0,11],[9128,12168,652,3259,0,11],[16300,0,652,15624,0,11],[2608,15644,652,744,0,11],[3260,14775,652,1648,0,11],[3912,15644,652,660,0,11],[4564,3476,652,12824,0,11],[6520,8742,652,7742,0,11],[7172,8691,652,7678,0,11],[12388,13037,652,3386,0,11],[18256,10429,652,5867,0,11],[20212,14775,652,1437,0,11],[21516,13906,652,2600,0,11],[26732,1738,652,14700,0,11],[11084,6953,652,10347,0,11],[13040,13906,652,3274,0,11],[13692,9560,652,7758,0,11],[14344,8691,652,8658,0,11],[19560,13906,652,3259,0,11],[20864,14775,652,2520,0,11],[18908,0,652,18230,0,11],[22168,12168,652,6020,0,11],[22820,6084,652,12138,0,11],[24124,12168,652,6081,0,11],[26080,11298,652,6744,0,11],[0,11298,652,7736,0,11],[1304,11298,652,7605,0,11],[6520,16513,652,2563,0,11],[7172,16513,652,2659,0,11],[7824,869,652,18411,0,11],[8476,14775,652,4703,0,11],[9128,15644,652,3562,0,11],[9780,12168,652,7147,0,11],[10432,14775,652,4407,0,11],[11084,17382,652,1782,0,11],[11736,9560,652,9636,0,11],[12388,16513,652,2816,0,11],[13040,17382,652,1760,0,11],[13692,17382,652,1821,0,11],[14344,17382,652,1653,0,11],[14996,8691,652,10579,0,11],[15648,8691,652,10684,0,11],[16300,15644,652,3683,0,11],[16952,13037,652,6227,0,11],[17604,13037,652,6192,0,11],[18256,16513,652,2573,0,11],[18908,18251,652,1104,0,11],[19560,17382,652,1845,0,11],[20212,16513,652,2733,0,11],[20864,17382,652,1928,0,11],[21516,16513,652,2580,0,11],[22168,18251,652,1089,0,11],[22820,18251,652,1011,0,11],[23472,9560,652,9640,0,11],[24124,18251,652,970,0,11],[24776,13906,652,5244,0,11],[25428,13037,652,6246,0,11],[26080,18251,652,1101,0,11],[26732,16513,652,2737,0,11],[27384,14775,652,4316,0,11],[28036,10429,652,8963,0,11],[28688,14775,652,4511,0,11],[0,19120,652,991,0,11],[652,11298,652,8474,0,11],[1304,19120,652,825,0,11],[1956,4346,652,15829,0,11],[2608,16513,652,3601,0,11],[3260,16513,652,3539,0,11],[3912,16513,652,3654,0,11],[4564,16513,652,3486,0,11],[5216,8691,652,11262,0,11],[5868,8742,652,11402,0,11],[6520,19120,652,1053,0,11],[1956,0,652,665,0,12],[3260,0,652,321,0,12],[7824,0,652,628,0,12],[11084,0,652,495,0,12],[12388,0,1304,1047,0,12],[16952,0,652,487,0,12],[26080,0,652,843,0,12],[14344,0,652,1314,0,12],[21516,0,652,1628,0,12],[26732,0,652,1628,0,12],[24776,0,652,2490,0,12],[3260,869,652,2574,0,12],[4564,0,652,3463,0,12],[10432,0,652,3430,0,12],[11736,0,652,3054,0,12],[14996,0,652,3390,0,12],[16952,869,652,2305,0,12],[27384,0,652,3362,0,12],[1304,0,652,4324,0,12],[1956,869,652,3440,0,12],[2608,0,652,4263,0,12],[5216,0,652,4320,0,12],[7172,0,652,3956,0,12],[8476,0,652,4309,0,12],[9128,0,652,4174,0,12],[9780,0,652,4128,0,12],[10432,3476,652,672,0,12],[11084,869,652,3183,0,12],[12388,1047,652,3285,0,12],[19560,0,652,4023,0,12],[22820,0,652,3965,0,12],[24776,2607,652,1436,0,12],[25428,0,652,4316,0,12],[26080,869,652,3415,0,12],[11084,4346,652,552,0,12],[12388,4346,652,533,0,12],[16952,3476,652,1702,0,12],[17604,0,652,5047,0,12],[19560,4346,652,575,0,12],[20864,0,652,5201,0,12],[23472,0,652,4777,0,12],[24776,4346,652,652,0,12],[27384,3476,652,1712,0,12],[28036,0,652,4896,0,12],[28688,0,652,5206,0,12],[3912,0,652,5781,0,12],[8476,4346,652,1548,0,12],[15648,0,652,5890,0,12],[19560,5215,652,667,0,12],[22820,4346,652,1521,0,12],[24124,0,652,6074,0,12],[5216,4346,652,2556,0,12],[11084,5215,652,1435,0,12],[14344,1738,652,5058,0,12],[19560,6084,652,827,0,12],[24124,6084,652,417,0,12],[24776,5215,652,1595,0,12],[652,0,652,7762,0,12],[2608,4346,652,3274,0,12],[3912,6084,652,1701,0,12],[5216,6953,652,652,0,12],[5868,0,652,7609,0,12],[6520,0,652,7754,0,12],[11736,3476,652,4340,0,12],[16952,5215,652,2580,0,12],[20212,0,652,7520,0,12],[23472,5215,652,2303,0,12],[26080,4346,652,3230,0,12],[1304,4346,652,4220,0,12],[3260,3476,652,5020,0,12],[5216,7822,652,863,0,12],[5868,7822,1304,920,0,12],[7172,4346,652,4316,0,12],[12388,5215,652,3412,0,12],[14344,6953,652,1483,0,12],[14996,3476,652,5082,0,12],[15648,6084,652,2474,0,12],[11736,7822,652,1731,0,12],[13040,1047,652,8430,0,12],[13692,0,652,9293,0,12],[18256,0,652,9558,0,12],[22168,0,652,9309,0,12],[23472,7822,652,1617,0,12],[1304,8691,652,1732,0,12],[18256,9560,652,810,0,12],[21516,1738,652,8578,0,12],[26080,7822,652,2313,0,12],[28036,5215,652,5177,0,12],[0,0,652,11250,0,12],[652,7822,652,3417,0,12],[1304,10429,652,840,0,12],[26080,10429,652,867,0,12],[3912,7822,652,4125,0,12],[9128,4346,652,7777,0,12],[9780,4346,652,7808,0,12],[17604,5215,652,6843,0,12],[22168,9560,652,2605,0,12],[24124,6953,652,5189,0,12],[12388,8691,652,4282,0,12],[16952,7822,652,5155,0,12],[17604,12168,652,770,0,12],[25428,4346,652,8565,0,12],[28688,5215,652,7605,0,12],[13040,9560,652,4296,0,12],[19560,6953,652,6736,0,12],[20212,7822,652,6062,0,12],[21516,10429,652,3309,0,12],[24776,6953,652,6716,0,12],[28688,13037,652,851,0,12],[3260,8691,652,5997,0,12],[8476,6084,652,8626,0,12],[10432,4346,652,10419,0,12],[20212,13906,652,845,0,12],[20864,5215,652,9136,0,12],[27384,5215,652,9320,0,12],[28688,13906,652,843,0,12],[2608,7822,652,7797,0,12],[3912,12168,652,3447,0,12],[9128,12168,652,3259,0,12],[16300,0,652,15624,0,12],[2608,15644,652,744,0,12],[3260,14775,652,1648,0,12],[3912,15644,652,660,0,12],[4564,3476,652,12824,0,12],[6520,8742,652,7742,0,12],[7172,8691,652,7678,0,12],[12388,13037,652,3386,0,12],[18256,10429,652,5867,0,12],[20212,14775,652,1437,0,12],[21516,13906,652,2600,0,12],[26732,1738,652,14700,0,12],[11084,6953,652,10347,0,12],[13040,13906,652,3274,0,12],[13692,9560,652,7758,0,12],[14344,8691,652,8658,0,12],[19560,13906,652,3259,0,12],[20864,14775,652,2520,0,12],[18908,0,652,18230,0,12],[22168,12168,652,6020,0,12],[22820,6084,652,12138,0,12],[24124,12168,652,6081,0,12],[26080,11298,652,6744,0,12],[0,11298,652,7736,0,12],[1304,11298,652,7605,0,12],[6520,16513,652,2563,0,12],[7172,16513,652,2659,0,12],[7824,869,652,18411,0,12],[8476,14775,652,4703,0,12],[9128,15644,652,3562,0,12],[9780,12168,652,7147,0,12],[10432,14775,652,4407,0,12],[11084,17382,652,1782,0,12],[11736,9560,652,9636,0,12],[12388,16513,652,2816,0,12],[13040,17382,652,1760,0,12],[13692,17382,652,1821,0,12],[14344,17382,652,1653,0,12],[14996,8691,652,10579,0,12],[15648,8691,652,10684,0,12],[16300,15644,652,3683,0,12],[16952,13037,652,6227,0,12],[17604,13037,652,6192,0,12],[18256,16513,652,2573,0,12],[18908,18251,652,1104,0,12],[19560,17382,652,1845,0,12],[20212,16513,652,2733,0,12],[20864,17382,652,1928,0,12],[21516,16513,652,2580,0,12],[22168,18251,652,1089,0,12],[22820,18251,652,1011,0,12],[23472,9560,652,9640,0,12],[24124,18251,652,970,0,12],[24776,13906,652,5244,0,12],[25428,13037,652,6246,0,12],[26080,18251,652,1101,0,12],[26732,16513,652,2737,0,12],[27384,14775,652,4316,0,12],[28036,10429,652,8963,0,12],[28688,14775,652,4511,0,12],[0,19120,652,991,0,12],[652,11298,652,8474,0,12],[1304,19120,652,825,0,12],[1956,4346,652,15829,0,12],[2608,16513,652,3601,0,12],[3260,16513,652,3539,0,12],[3912,16513,652,3654,0,12],[4564,16513,652,3486,0,12],[5216,8691,652,11262,0,12],[5868,8742,652,11402,0,12],[6520,19120,652,1053,0,12],[1956,0,652,665,0,13],[3260,0,652,321,0,13],[7824,0,652,628,0,13],[11084,0,652,495,0,13],[12388,0,1304,1047,0,13],[16952,0,652,487,0,13],[26080,0,652,843,0,13],[14344,0,652,1314,0,13],[21516,0,652,1628,0,13],[26732,0,652,1628,0,13],[15648,0,652,2716,0,13],[24776,0,652,2490,0,13],[3260,869,652,2574,0,13],[4564,0,652,3463,0,13],[10432,0,652,3430,0,13],[11736,0,652,3054,0,13],[14996,0,652,3390,0,13],[16952,869,652,2305,0,13],[23472,0,652,3659,0,13],[27384,0,652,3362,0,13],[1304,0,652,4324,0,13],[1956,869,652,3440,0,13],[2608,0,652,4263,0,13],[5216,0,652,4320,0,13],[7172,0,652,3956,0,13],[8476,0,652,4309,0,13],[9128,0,652,4174,0,13],[9780,0,652,4128,0,13],[10432,3476,652,672,0,13],[11084,869,652,3183,0,13],[12388,1047,652,3285,0,13],[19560,0,652,4023,0,13],[22820,0,652,3965,0,13],[24776,2607,652,1436,0,13],[25428,0,652,4316,0,13],[26080,869,652,3415,0,13],[2608,4346,652,968,0,13],[11084,4346,652,552,0,13],[12388,4346,652,533,0,13],[16952,3476,652,1702,0,13],[17604,0,652,5047,0,13],[19560,4346,652,575,0,13],[20864,0,652,5201,0,13],[23472,4346,652,431,0,13],[24776,4346,652,652,0,13],[27384,3476,652,1712,0,13],[28036,0,652,4896,0,13],[28688,0,652,5206,0,13],[3912,0,652,5781,0,13],[8476,4346,652,1548,0,13],[9780,4346,652,1927,0,13],[15648,3476,652,2414,0,13],[19560,5215,652,667,0,13],[22820,4346,652,1521,0,13],[24124,0,652,6074,0,13],[5216,4346,652,2556,0,13],[11084,5215,652,1435,0,13],[14344,1738,652,5058,0,13],[17604,5215,652,1740,0,13],[18908,0,652,7008,0,13],[19560,6084,652,827,0,13],[24124,6084,652,417,0,13],[24776,5215,652,1595,0,13],[652,0,652,7762,0,13],[2608,6084,652,1536,0,13],[3912,6084,652,1701,0,13],[5216,6953,652,652,0,13],[5868,0,652,7609,0,13],[6520,0,652,7754,0,13],[11736,3476,652,4340,0,13],[16952,5215,652,2580,0,13],[20212,0,652,7520,0,13],[23472,5215,652,2303,0,13],[26080,4346,652,3230,0,13],[1304,4346,652,4220,0,13],[3260,3476,652,5020,0,13],[3912,7822,652,973,0,13],[5216,7822,652,863,0,13],[5868,7822,1304,920,0,13],[7172,4346,652,4316,0,13],[12388,5215,652,3412,0,13],[14344,6953,652,1483,0,13],[14996,3476,652,5082,0,13],[15648,6084,652,2474,0,13],[11736,7822,652,1731,0,13],[13040,1047,652,8430,0,13],[13692,0,652,9293,0,13],[15648,8691,652,1055,0,13],[18256,0,652,9558,0,13],[18908,7822,652,1931,0,13],[22168,0,652,9309,0,13],[23472,7822,652,1617,0,13],[1304,8691,652,1732,0,13],[18256,9560,652,810,0,13],[21516,1738,652,8578,0,13],[26080,7822,652,2313,0,13],[28036,5215,652,5177,0,13],[0,0,652,11250,0,13],[652,7822,652,3417,0,13],[1304,10429,652,840,0,13],[26080,10429,652,867,0,13],[652,11298,652,948,0,13],[3912,9560,652,2387,0,13],[9128,4346,652,7777,0,13],[9780,6953,652,5201,0,13],[17604,7822,652,4236,0,13],[22168,9560,652,2605,0,13],[24124,6953,652,5189,0,13],[12388,8691,652,4282,0,13],[16952,7822,652,5155,0,13],[17604,12168,652,770,0,13],[25428,4346,652,8565,0,13],[28688,5215,652,7605,0,13],[13040,9560,652,4296,0,13],[19560,6953,652,6736,0,13],[20212,7822,652,6062,0,13],[21516,10429,652,3309,0,13],[24776,6953,652,6716,0,13],[28688,13037,652,851,0,13],[3260,8691,652,5997,0,13],[8476,6084,652,8626,0,13],[10432,4346,652,10419,0,13],[20212,13906,652,845,0,13],[20864,5215,652,9136,0,13],[27384,5215,652,9320,0,13],[28688,13906,652,843,0,13],[2608,7822,652,7797,0,13],[3912,12168,652,3447,0,13],[9128,12168,652,3259,0,13],[16300,0,652,15624,0,13],[2608,15644,652,744,0,13],[3260,14775,652,1648,0,13],[3912,15644,652,660,0,13],[4564,3476,652,12824,0,13],[6520,8742,652,7742,0,13],[7172,8691,652,7678,0,13],[12388,13037,652,3386,0,13],[18256,10429,652,5867,0,13],[20212,14775,652,1437,0,13],[21516,13906,652,2600,0,13],[26732,1738,652,14700,0,13],[6520,16513,652,913,0,13],[11084,6953,652,10347,0,13],[13040,13906,652,3274,0,13],[13692,9560,652,7758,0,13],[14344,8691,652,8658,0,13],[19560,13906,652,3259,0,13],[20864,14775,652,2520,0,13],[14996,8691,652,9771,0,13],[18908,10429,652,7801,0,13],[22168,12168,652,6020,0,13],[22820,6084,652,12138,0,13],[24124,12168,652,6081,0,13],[26080,11298,652,6744,0,13],[0,11298,652,7736,0,13],[1304,11298,652,7605,0,13],[6520,18251,652,825,0,13],[7172,16513,652,2659,0,13],[7824,869,652,18411,0,13],[8476,14775,652,4703,0,13],[9128,15644,652,3562,0,13],[9780,12168,652,7147,0,13],[10432,14775,652,4407,0,13],[11084,17382,652,1782,0,13],[11736,10429,652,8767,0,13],[12388,16513,652,2816,0,13],[13040,17382,652,1760,0,13],[13692,17382,652,1821,0,13],[14344,17382,652,1653,0,13],[15648,10429,652,8946,0,13],[16300,15644,652,3683,0,13],[16952,13037,652,6227,0,13],[17604,13037,652,6192,0,13],[18256,16513,652,2573,0,13],[18908,18251,652,1104,0,13],[19560,17382,652,1845,0,13],[20212,16513,652,2733,0,13],[20864,17382,652,1928,0,13],[21516,16513,652,2580,0,13],[22168,18251,652,1089,0,13],[22820,18251,652,1011,0,13],[23472,9560,652,9640,0,13],[24124,18251,652,970,0,13],[24776,13906,652,5244,0,13],[25428,13037,652,6246,0,13],[26080,18251,652,1101,0,13],[26732,16513,652,2737,0,13],[27384,14775,652,4316,0,13],[28036,10429,652,8963,0,13],[28688,14775,652,4511,0,13],[0,19120,652,991,0,13],[652,13037,652,6735,0,13],[1304,19120,652,825,0,13],[1956,4346,652,15829,0,13],[2608,16513,652,3601,0,13],[3260,16513,652,3539,0,13],[3912,16513,652,3654,0,13],[4564,16513,652,3486,0,13],[5216,8691,652,11262,0,13],[5868,8742,652,11402,0,13],[6520,19120,652,1053,0,13],[1956,0,652,665,0,14],[3260,0,652,321,0,14],[5216,0,652,976,0,14],[7824,0,652,628,0,14],[8476,0,652,1043,0,14],[9128,0,652,928,0,14],[9780,0,652,1013,0,14],[10432,0,652,1082,0,14],[11084,0,652,495,0,14],[12388,0,1304,1047,0,14],[14996,0,652,963,0,14],[16952,0,652,487,0,14],[26080,0,652,843,0,14],[0,0,652,1924,0,14],[13692,0,652,1847,0,14],[14344,0,652,1314,0,14],[15648,0,652,2003,0,14],[17604,0,652,1755,0,14],[20212,0,652,1843,0,14],[20864,869,652,1032,0,14],[21516,0,652,1628,0,14],[26732,0,652,1628,0,14],[28688,869,652,935,0,14],[11736,0,652,2702,0,14],[12388,1738,652,1042,0,14],[14344,1738,652,998,0,14],[16952,869,652,1980,0,14],[21516,1738,652,1008,0,14],[23472,0,652,2720,0,14],[24124,0,652,2793,0,14],[24776,0,652,2490,0,14],[26080,869,652,1924,0,14],[26732,1738,652,963,0,14],[27384,869,652,1824,0,14],[28036,0,652,2751,0,14],[3260,1738,652,1705,0,14],[4564,869,652,2594,0,14],[10432,1738,652,1692,0,14],[14996,2607,652,783,0,14],[19560,0,652,3543,0,14],[20212,2607,652,1126,0,14],[22168,0,652,3601,0,14],[24776,2607,652,961,0,14],[652,0,652,4428,0,14],[1304,869,652,3455,0,14],[1956,869,652,3440,0,14],[2608,869,652,3394,0,14],[3260,3476,652,1055,0,14],[4564,3476,652,1055,0,14],[5216,1738,652,2582,0,14],[7172,2607,652,1349,0,14],[8476,1738,652,2571,0,14],[9128,1738,652,2436,0,14],[9780,1738,652,2390,0,14],[10432,3476,652,672,0,14],[11084,869,652,3183,0,14],[12388,3476,652,856,0,14],[16300,0,652,4483,0,14],[22820,0,652,3965,0,14],[25428,0,652,4316,0,14],[26080,3476,652,808,0,14],[1304,4346,652,1075,0,14],[3912,0,652,5362,0,14],[6520,1738,652,3628,0,14],[9780,4346,652,1073,0,14],[11084,4346,652,552,0,14],[11736,3476,652,1924,0,14],[12388,4346,652,533,0,14],[13040,3476,652,1874,0,14],[15648,3476,652,1909,0,14],[16952,3476,652,1702,0,14],[17604,2607,652,2440,0,14],[19560,4346,652,575,0,14],[20864,4346,652,855,0,14],[23472,4346,652,431,0,14],[24776,4346,652,652,0,14],[27384,3476,652,1712,0,14],[28036,3476,652,1420,0,14],[28688,4346,652,860,0,14],[7824,1738,652,4499,0,14],[8476,4346,652,1548,0,14],[11084,5215,652,960,0,14],[14344,4346,652,1876,0,14],[14996,3476,652,2723,0,14],[16300,5215,652,995,0,14],[16952,5215,652,1031,0,14],[18256,0,652,6262,0,14],[19560,5215,652,667,0,14],[22168,4346,652,1885,0,14],[22820,4346,652,1521,0,14],[24124,3476,652,2598,0,14],[25428,4346,652,1801,0,14],[3260,5215,652,1812,0,14],[5216,5215,652,1687,0,14],[9128,6084,652,963,0,14],[17604,5215,652,1740,0,14],[18908,0,652,7008,0,14],[19560,6084,652,827,0,14],[20212,4346,652,2797,0,14],[24124,6084,652,417,0,14],[24776,5215,652,1595,0,14],[26732,3476,652,3620,0,14],[652,6084,652,1678,0,14],[1956,4346,652,3658,0,14],[2608,6084,652,1536,0,14],[3912,6084,652,1701,0,14],[5216,6953,652,652,0,14],[5868,2607,652,5002,0,14],[6520,6953,652,801,0,14],[11736,6084,652,1732,0,14],[23472,6953,652,565,0,14],[24776,6953,652,976,0,14],[26080,4346,652,3230,0,14],[1304,6953,652,1613,0,14],[3260,7822,652,674,0,14],[3912,7822,652,973,0,14],[5216,7822,652,863,0,14],[5868,7822,1304,920,0,14],[7172,4346,652,4316,0,14],[7824,6953,652,1820,0,14],[9128,7822,652,974,0,14],[9780,6953,652,1920,0,14],[10432,4346,652,4454,0,14],[12388,5215,652,3412,0,14],[14344,6953,652,1483,0,14],[14996,6953,652,1605,0,14],[15648,6084,652,2474,0,14],[25428,7822,652,976,0,14],[26732,7822,652,1007,0,14],[3260,8691,652,959,0,14],[4564,5215,652,4587,0,14],[5216,8691,652,1141,0,14],[5868,8742,652,862,0,14],[11084,6953,652,2777,0,14],[11736,7822,652,1731,0,14],[13040,6953,652,2524,0,14],[13692,3476,652,5817,0,14],[14996,8691,652,970,0,14],[15648,8691,652,1055,0,14],[16952,7822,652,1744,0,14],[17604,8691,652,993,0,14],[18256,7822,652,1736,0,14],[18908,7822,652,1931,0,14],[19560,6953,652,2764,0,14],[22168,7822,652,1487,0,14],[23472,7822,652,1617,0,14],[1304,8691,652,1732,0,14],[1956,9560,652,998,0,14],[12388,8691,652,1852,0,14],[18256,9560,652,810,0,14],[20212,7822,652,2793,0,14],[21516,4346,652,5970,0,14],[22168,9560,652,1047,0,14],[25428,9560,652,1009,0,14],[26080,8691,652,1444,0,14],[27384,5215,652,5362,0,14],[28036,5215,652,5177,0,14],[0,2607,652,8643,0,14],[652,7822,652,3417,0,14],[1304,10429,652,840,0,14],[6520,9560,652,1817,0,14],[19560,10429,652,995,0,14],[20864,5215,652,6179,0,14],[23472,9560,652,1865,0,14],[24776,8691,652,2808,0,14],[26080,10429,652,867,0,14],[26732,9560,652,1854,0,14],[0,11298,652,1007,0,14],[652,11298,652,948,0,14],[1956,11298,652,1013,0,14],[3912,10429,652,1518,0,14],[4564,11298,652,1067,0,14],[9128,9560,652,2563,0,14],[9780,10429,652,1725,0,14],[14344,8691,652,3547,0,14],[17604,11298,652,760,0,14],[18908,10429,652,1806,0,14],[22168,11298,652,867,0,14],[24124,8691,652,3451,0,14],[3260,11298,652,1834,0,14],[5216,10429,652,2684,0,14],[6520,12168,652,1003,0,14],[7172,9560,652,3533,0,14],[7824,9560,652,3570,0,14],[8476,6084,652,7138,0,14],[10432,11298,652,1832,0,14],[11084,12168,652,931,0,14],[11736,10429,652,2617,0,14],[12388,12168,652,805,0,14],[13040,10429,652,2701,0,14],[13692,9560,652,3655,0,14],[14996,10429,652,2743,0,14],[16300,7822,652,5274,0,14],[16952,11298,652,1679,0,14],[17604,12168,652,770,0,14],[22168,12168,652,951,0,14],[23472,12168,1304,985,0,14],[25428,11298,652,1613,0,14],[28688,5215,652,7605,0,14],[5868,10429,652,3736,0,14],[14344,13037,652,945,0,14],[16952,13037,652,1043,0,14],[17604,13037,652,997,0,14],[18256,10429,652,3635,0,14],[18908,13037,652,889,0,14],[19560,12168,652,1521,0,14],[20212,13037,652,847,0,14],[21516,12168,652,1570,0,14],[22820,7822,652,6170,0,14],[24776,12168,652,1501,0,14],[28688,13037,652,851,0,14],[652,13037,652,1808,0,14],[3260,13906,652,782,0,14],[5216,13906,652,920,0,14],[8476,13906,652,804,0,14],[10432,13906,652,859,0,14],[15648,11298,652,3590,0,14],[20212,13906,652,845,0,14],[20864,12168,652,2183,0,14],[24776,13906,652,1074,0,14],[25428,13037,652,1904,0,14],[26080,13037,652,1797,0,14],[26732,12168,652,2762,0,14],[27384,13037,652,1498,0,14],[28688,13906,652,843,0,14],[1304,11298,652,4501,0,14],[1956,13906,652,1805,0,14],[2608,7822,652,7797,0,14],[3912,13037,652,2578,0,14],[7172,14775,1956,932,0,14],[9128,12168,652,3259,0,14],[14996,14775,652,1130,0,14],[16300,14775,652,849,0,14],[20864,14775,652,1047,0,14],[24124,13153,652,2598,0,14],[2608,15644,652,744,0,14],[3260,14775,652,1648,0,14],[3912,15644,652,660,0,14],[4564,13906,652,2394,0,14],[5216,15644,652,1055,0,14],[6520,15644,652,840,0,14],[7172,15707,652,662,0,14],[8476,15707,652,857,0,14],[10432,14775,652,1916,0,14],[12388,15644,652,779,0,14],[18256,15644,652,652,0,14],[20212,15644,652,568,0,14],[21516,13906,652,2600,0,14],[22820,14775,652,1825,0,14],[25428,15644,652,923,0,14],[26732,15644,652,794,0,14],[3260,16513,652,1028,0,14],[9128,15644,652,1831,0,14],[11084,13906,652,3394,0,14],[11736,13906,652,3547,0,14],[12388,16513,652,932,0,14],[13040,14775,652,2405,0,14],[13692,16513,652,805,0,14],[14344,14775,652,2574,0,14],[14996,16513,652,1013,0,14],[16952,14775,652,2701,0,14],[19560,14775,652,2390,0,14],[20212,16513,652,1032,0,14],[20864,16513,652,782,0,14],[27384,16513,652,913,0,14],[2608,17382,652,956,0,14],[5216,17382,652,910,0,14],[9780,12168,652,6310,0,14],[17604,14775,652,3556,0,14],[18908,15644,652,2586,0,14],[20864,17382,652,950,0,14],[21516,16513,652,1993,0,14],[22168,16513,652,1675,0,14],[22820,17382,652,840,0,14],[23472,13153,652,5464,0,14],[24124,17382,652,867,0,14],[24776,15644,652,2766,0,14],[25428,17382,652,1070,0,14],[26080,15644,652,2398,0,14],[0,14775,652,4259,0,14],[1304,18251,652,652,0,14],[6520,18251,652,825,0,14],[7172,16513,652,2659,0,14],[7824,15707,652,3573,0,14],[9128,18251,652,955,0,14],[11084,18251,652,913,0,14],[12388,18251,652,1078,0,14],[13040,18251,652,891,0,14],[13692,17382,652,1821,0,14],[14344,18251,652,784,0,14],[15648,15644,652,3731,0,14],[16300,15644,652,3683,0,14],[19560,18251,652,976,0,14],[22820,18251,652,1011,0,14],[24124,18251,652,970,0,14],[26080,18251,652,1101,0,14],[26732,16513,652,2737,0,14],[27384,18251,652,840,0,14],[28036,13037,652,6355,0,14],[28688,16513,652,2773,0,14],[0,19120,652,991,0,14],[652,17382,652,2390,0,14],[1304,19120,652,825,0,14],[1956,19120,652,1055,0,14],[2608,19120,652,994,0,14],[3260,19120,652,932,0,14],[3912,18251,652,1916,0,14],[4564,17382,652,2617,0,14],[5216,19120,652,833,0,14],[5868,14775,652,5369,0,14],[7824,0,652,628,0,15],[21516,0,652,949,0,15],[25428,0,652,953,0,15],[26080,0,652,843,0,15],[1304,869,652,920,0,15],[2608,869,652,938,0,15],[14344,869,652,445,0,15],[28688,869,652,935,0,15],[3912,0,652,2723,0,15],[4564,869,652,1804,0,15],[9128,1738,652,1043,0,15],[11736,1738,652,964,0,15],[12388,1738,652,1042,0,15],[5868,2607,652,881,0,15],[10432,1738,652,1692,0,15],[11084,2607,652,1004,0,15],[14996,2607,652,783,0,15],[18256,2607,652,1802,0,15],[18908,2607,652,1835,0,15],[22820,3476,652,489,0,15],[26080,3476,652,808,0,15],[8476,4346,652,1000,0,15],[26732,3476,652,1764,0,15],[27384,4346,652,842,0,15],[28036,4346,652,550,0,15],[28688,4346,652,860,0,15],[1956,4346,652,1906,0,15],[4564,6084,652,1144,0,15],[5216,5215,652,1687,0,15],[5868,5215,652,1800,0,15],[9128,6084,652,963,0,15],[12388,6084,652,943,0,15],[24124,6084,652,417,0,15],[24776,6084,652,726,0,15],[13692,6953,652,1063,0,15],[14344,6953,652,884,0,15],[14996,6953,652,1009,0,15],[15648,6953,652,978,0,15],[21516,6953,652,1764,0,15],[22168,7822,652,957,0,15],[22820,7822,652,902,0,15],[23472,7822,652,878,0,15],[26732,7822,652,1007,0,15],[0,8691,652,933,0,15],[11736,8691,652,862,0,15],[652,8691,652,1869,0,15],[1956,9560,652,998,0,15],[2608,9560,652,1052,0,15],[8476,9560,652,922,0,15],[9128,9560,652,902,0,15],[7824,10429,652,1109,0,15],[13040,10429,652,1068,0,15],[16300,10429,652,906,0,15],[16952,11298,652,1002,0,15],[25428,11298,652,1056,0,15],[24776,12168,652,1043,0,15],[652,13037,652,940,0,15],[28688,13037,652,851,0,15],[3912,13037,652,1827,0,15],[4564,13906,652,959,0,15],[8476,13906,652,804,0,15],[9780,13906,652,932,0,15],[11736,13906,652,914,0,15],[11084,13906,652,1870,0,15],[13040,14775,652,942,0,15],[14344,14775,652,978,0,15],[16300,14775,652,849,0,15],[19560,14775,652,929,0,15],[21516,15644,652,862,0,15],[22820,15644,652,956,0,15],[24776,15644,652,902,0,15],[26732,15644,652,794,0,15],[28036,15644,652,956,0,15],[28688,16513,652,974,0,15],[2608,17382,652,956,0,15],[4564,17382,652,962,0,15],[7824,17382,652,1898,0,15],[11084,18251,652,913,0,15],[13040,18251,652,891,0,15],[14344,18251,652,784,0,15],[16300,17382,652,1945,0,15]]);</script></p>
<p>After doing some in-depth analysis of <em>Composer </em>generated files I almost ended up witting my own Deep Zoom implementation, because I couldn&#8217;t find any flexible solution. However, later I found out that <em>SparseImageCreator </em>class is the only thing I need. It works almost the same as previously discussed <em>CollectionCreator </em>class, but generated output is exactly what I need. Code:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #FF0000;">string</span> source <span style="color: #008000;">=</span> <span style="color: #666666;">@&quot;C:\tests\Books&quot;</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">string</span> dest <span style="color: #008000;">=</span> <span style="color: #666666;">@&quot;C:\tests\GeneratedImages&quot;</span><span style="color: #008000;">;</span>
&nbsp;
List images <span style="color: #008000;">=</span> GetImagesInDirectory<span style="color: #000000;">&#40;</span>source<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
List<span style="color: #008000;">&lt;</span>Image<span style="color: #008000;">&gt;</span> data <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> List<span style="color: #008000;">&lt;</span>Image<span style="color: #008000;">&gt;</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #FF0000;">int</span> start <span style="color: #008000;">=</span> <span style="color: #FF0000;">200</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">int</span> limit <span style="color: #008000;">=</span> start<span style="color: #008000;">;</span>
&nbsp;
<span style="color: #FF0000;">double</span> x <span style="color: #008000;">=</span> <span style="color: #FF0000;">0.0</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">double</span> y <span style="color: #008000;">=</span> <span style="color: #FF0000;">0.0</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #FF0000;">double</span> rows <span style="color: #008000;">=</span> Math.<span style="color: #0000FF;">Sqrt</span><span style="color: #000000;">&#40;</span>start<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF;">foreach</span> <span style="color: #000000;">&#40;</span>var image <span style="color: #0600FF;">in</span> images<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
    <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>limit <span style="color: #008000;">&lt;</span> <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span>
        break<span style="color: #008000;">;</span>
&nbsp;
    limit<span style="color: #008000;">--;</span>
&nbsp;
    Image img <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Image<span style="color: #000000;">&#40;</span>image<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
    img.<span style="color: #0000FF;">ViewportWidth</span> <span style="color: #008000;">=</span> rows<span style="color: #008000;">+</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
    img.<span style="color: #0000FF;">ViewportOrigin</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> <span style="color: #000000;">System</span>.<span style="color: #0000FF;">Windows</span>.<span style="color: #0000FF;">Point</span><span style="color: #000000;">&#40;</span><span style="color: #008000;">-</span>x, <span style="color: #008000;">-</span>y<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
    x <span style="color: #008000;">+=</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>x <span style="color: #008000;">&gt;=</span> rows<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
        y <span style="color: #008000;">+=</span> <span style="color: #FF0000;">1.333</span><span style="color: #008000;">;</span>
        x <span style="color: #008000;">=</span> <span style="color: #FF0000;">0.0</span><span style="color: #008000;">;</span>
    <span style="color: #000000;">&#125;</span>
&nbsp;
    data.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span>img<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
SparseImageCreator cc <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> SparseImageCreator<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
cc.<span style="color: #0000FF;">TileSize</span> <span style="color: #008000;">=</span> <span style="color: #FF0000;">256</span><span style="color: #008000;">;</span>
cc.<span style="color: #0000FF;">TileFormat</span> <span style="color: #008000;">=</span> ImageFormat.<span style="color: #0000FF;">Jpg</span><span style="color: #008000;">;</span>
cc.<span style="color: #0000FF;">ImageQuality</span> <span style="color: #008000;">=</span> <span style="color: #FF0000;">0.95</span><span style="color: #008000;">;</span>
cc.<span style="color: #0000FF;">TileOverlap</span> <span style="color: #008000;">=</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
&nbsp;
cc.<span style="color: #0000FF;">Create</span><span style="color: #000000;">&#40;</span>data, dest <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;<span style="color: #008080; font-weight: bold;">\\</span>output&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>This code loops through all images (with limit) in folder and adds them to a list of <em>Image</em>s. Also it sets the <em><a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.multiscaleimage.viewportorigin(VS.95).aspx">ViewportOrigin</a></em> property, which is used to position <em>Image</em> in space. Last step is to create a collection, what is done by <em>SparseImageCreator </em>class. Depending on images count this takes a while and consumes quite a lot of memory, so for using in a web application I need to create a <a href="http://support.microsoft.com/kb/308569">scheduler</a> too.</p>
<p>Another part of Deep Zoom is creating a Silverlight application. It can be easily done with <a href="http://www.microsoft.com/downloads/details.aspx?familyid=457b17b7-52bf-4bda-87a3-fa8a4673f8bf&#038;displaylang=en">Composer</a> (just create a project with one image, and then customize generated source code for your needs). However, I&#8217;m not going to explain how to do it, because there are lots of <a href="http://expression.microsoft.com/en-us/cc745977.aspx">examples</a> online and I&#8217;m going to write another article about Silverlight only.</p>
<p>Currently I have some problems with library throwing <a href="http://en.wikipedia.org/wiki/Exception_handling">Exceptions</a> with big collections, nevertheless another milestone is reached (first was using <a href="http://dev.juokaz.com/winphp-2009/using-php-with-c-written-libraries">.NET assemblies in PHP</a>). Now I need to work on front-end part.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.juokaz.com/winphp-2009/creating-deep-zoom-applications-with-c/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>First Annual WinPHP Challenge</title>
		<link>http://dev.juokaz.com/winphp-2009/first-annual-winphp-challenge</link>
		<comments>http://dev.juokaz.com/winphp-2009/first-annual-winphp-challenge#comments</comments>
		<pubDate>Mon, 20 Apr 2009 15:21:09 +0000</pubDate>
		<dc:creator>Juozas</dc:creator>
				<category><![CDATA[WinPhp 2009]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[competition]]></category>
		<category><![CDATA[deep zoom]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[silverlight]]></category>
		<category><![CDATA[winphp]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://dev.juokaz.com/?p=452</guid>
		<description><![CDATA[Sometime in the end of March Microsoft and partners announced 2009 WinPHP competition. I always wanted to try to create an app with both PHP and C#, so I decided to register &#8211; my idea is to create a project, which will demonstrate both PHP and .NET connectivity and Deep Zoom functionality.
My project will allow [...]]]></description>
			<content:encoded><![CDATA[<p>Sometime in the end of March Microsoft and partners <a href="http://blogs.msdn.com/bramveen/archive/2009/03/23/european-winphp-challange.aspx">announced</a> 2009 <a href="http://wiki.phpconference.nl/2009_WinPHP_Challenge">WinPHP</a> competition. I always wanted to try to create an app with both PHP and C#, so I decided to register &#8211; my idea is to create a project, which will demonstrate both PHP and .NET <a href="http://www.php.net/manual/en/ref.dotnet.php">connectivity</a> and <a href="http://msdn.microsoft.com/en-us/library/cc645050(VS.95).aspx">Deep Zoom</a> functionality.</p>
<p><img class="alignnone size-full wp-image-457" style="float: right;" title="Silverlight" src="http://dev.juokaz.com/wp-content/uploads/2009/04/microsoft_silverlight_c.jpg" alt="Silverlight" width="97" height="109" />My project will allow people to upload huge collections of photos (probably archived in one zip file) and get nice online gallery. Users will have selection of Ajax or <a href="http://silverlight.net/themes/silverlight/common/home.aspx?AspxAutoDetectCookieSupport=1">Silverlight</a> version and password protection for galleries. If I have time, I will also add ability to select different photos shuffle style, background theme and/or music, and maybe even automatic tour with captions.</p>
<p><img class="alignnone size-full wp-image-460" style="float: left;" title="Zend framework" src="http://dev.juokaz.com/wp-content/uploads/2009/04/logo-zend-framework.jpg" alt="Zend framework" width="120" height="80" />PHP will work as front-end language (with <a href="http://framework.zend.com/">Zend Framework</a>), and C# will be responsible for all Deep Zoom work (which I haven&#8217;t tried/tested yet, but I believe it will work). Not only it&#8217;s quite useful app, but also showcases a lot of cool technologies. <a href="http://www.leaseweb.com/en/">Leaseweb</a>, sponsor of this competition, provided us with dedicated servers so I will hopefully publish <em>alpha</em> version in some weeks.</p>
<p>Why I chose to participate? Firstly, it&#8217;s good experience, because I do a lot of <a href="http://dev.juokaz.com/category/php">PHP</a>, but also more and more <a href="http://en.wikipedia.org/wiki/C_Sharp_(programming_language)">C#</a>, so it&#8217;s great opportunity to learn more. Secondly, in my belief, such competitions are really useful for portfolios and CV&#8217;s &#8211; I&#8217;m currently looking for a <a href="http://www.zend.com/en/store/education/certification/yellow-pages.php#show-ClientCandidateID=ZEND008553">job</a>, so it can help. Lastly, competitions are fun, so, I&#8217;m in.</p>
<p>Part of competition requirements is &#8220;<span lang="EN-US">blog about your experiences with Windows Server 2008 during the contest&#8221; so I&#8217;ll write around 2-3 posts every week about project status, problems with switching from Linux back to Windows and more. Also, I&#8217;m really bad in designing websites, so if anyone would like to help me &#8211; please feel free to contact. </span></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.juokaz.com/winphp-2009/first-annual-winphp-challenge/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Deep zoom with Microsoft SeaDragon</title>
		<link>http://dev.juokaz.com/html/deep-zoom-with-microsoft-seadragon</link>
		<comments>http://dev.juokaz.com/html/deep-zoom-with-microsoft-seadragon#comments</comments>
		<pubDate>Fri, 20 Feb 2009 19:54:43 +0000</pubDate>
		<dc:creator>Juozas</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[deep zoom]]></category>
		<category><![CDATA[embed]]></category>
		<category><![CDATA[fractal]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[raytraced]]></category>
		<category><![CDATA[raytracing]]></category>
		<category><![CDATA[seadragon]]></category>
		<category><![CDATA[silverlight]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://dev.juokaz.com/?p=205</guid>
		<description><![CDATA[Seadragon is technology, which allows you to create applications  capable of displaying unlimited size images in users (small) display. It works similar to Google Maps, where you move (zoom) closer and closer to the ground and see more and more details. When I first saw it (video available here) I couldn&#8217;t believe my yes &#8211; how [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://livelabs.com/seadragon/">Seadragon</a> is technology, which allows you to create applications  capable of displaying unlimited size images in users (small) display. It works similar to <a href="http://maps.google.com">Google Maps</a>, where you move (zoom) closer and closer to the ground and see more and more details. When I first saw it (video available <a href="http://www.youtube.com/watch?v=PKwTurQgiak">here</a>) I couldn&#8217;t believe my yes &#8211; how it is possible to scale so many pixels in one screen? Lets find out.</p>
<p>There are multiple implementations of Seadragon: <a href="http://livelabs.com/seadragon-ajax/">Ajax</a> or Silverlight based, <a href="http://livelabs.com/seadragon-mobile/">mobile</a> version and maybe more. All of them works the same &#8211; loads only that part of image which is now visible. What you need to do as developer is to create collection of images parts which will later be used to create zoom effect.</p>
<p><a href="http://msdn.microsoft.com/en-us/library/cc645050(VS.95).aspx"><img class="alignnone size-full wp-image-217" title="Deep zoom" src="http://dev.juokaz.com/wp-content/uploads/2009/02/cc645050image_pyramiden-usvs95.png" alt="Deep zoom" width="482" height="332" /></a></p>
<p>Creating Deep zoom images is not hard at all &#8211; <a href="http://www.microsoft.com/downloads/details.aspx?familyid=457b17b7-52bf-4bda-87a3-fa8a4673f8bf&amp;displaylang=en">Deep Zoom Composer</a> does all the work for you. I chose simplest way &#8211; imported one image and exported project as <em>Seadragon Ajax</em> application, but Composer allows you to create zoom-able galleries, group images to layers, upload project to <a href="http://photozoom.mslivelabs.com/">PhotoZoom</a> gallery, etc. Ajax version uses Xml index and thousands of small images, so I see possibility to create it dynamically.</p>
<p>My test project was using huge image from my university project named &#8220;RayTraced 3D Fractal&#8221;. I had only one very big image (<strong>10&#8242;000 x 10&#8242;000</strong>) which wasn&#8217;t from final version so it lacks proper antialising and because I compressed it (raw original was 1Gb size), smallest particles aren&#8217;t detailed enough. I will probably regenerate it someday to show full power of Seadragon.<br />
<script src="http://seadragon.com/ajax/embed.js" type="text/javascript"></script><script type="text/javascript"><!--
Seadragon.embed("500px", "300px", "http://dev.juokaz.com/examples/seadragon/GeneratedImages/dzc_output.xml", 10000, 10000, 256, 1, "png");
// --></script></p>
<p>Smoothness of transitions depends on Internet speed, but somehow whole application lags a little bit for me (especially when viewed in <a href="http://dev.juokaz.com/examples/seadragon/index.html">full-screen</a>). I tried creating Silverligh version and it works much more smoother, so it probably has to do something with browser performance. However, embedded viewer is good enough to use in websites &#8211; JavaScript version is not as smooth as Silverlight one, but works in all browsers and doesn&#8217;t require any plug-ins.</p>
<p>In conclusion, Microsoft Seadragon is really nice technology and can be really helpful displaying very big images (maps? GPix photos?..). Maybe it&#8217;s practical only in rare cases, but it still shows how normal user interfaces can be used to manipulate huge amounts of data. I really like seeing Microsoft releasing such products.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.juokaz.com/html/deep-zoom-with-microsoft-seadragon/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
