Browse Source

Merge branch 'development' into PR489

tfb 12 years ago
parent
commit
2a9f245942
100 changed files with 6488 additions and 78 deletions
  1. 6 5
      falcon/setup.py
  2. 6 5
      flask/setup.py
  3. 8 0
      flask/setup_nginxuwsgi.py
  4. 1 1
      lapis/config.lua
  5. 1 1
      lapis/config.moon
  6. 3 3
      php-phpixie/assets/config/db.php
  7. 1 1
      php-phpixie/deploy/nginx.conf
  8. 2 2
      php-phpixie/deploy/php-phpixie
  9. 1 1
      php-phpixie/vendor/autoload.php
  10. 3 3
      php-phpixie/vendor/composer/autoload_real.php
  11. 3 3
      php-silex/benchmark_config
  12. 1 1
      php-silex/deploy/nginx_raw.conf
  13. 2 2
      php-silex/deploy/php-silex
  14. 1 1
      php-silex/vendor/autoload.php
  15. 3 3
      php-silex/vendor/composer/autoload_real.php
  16. 1 1
      php-silex/vendor/silex/silex
  17. 4 4
      php-silex/web/index_raw.php
  18. 10 0
      php-symfony2-stripped/.gitignore
  19. 10 0
      php-symfony2-stripped/.travis.yml
  20. 19 0
      php-symfony2-stripped/LICENSE
  21. 46 0
      php-symfony2-stripped/README.md
  22. 0 0
      php-symfony2-stripped/__init__.py
  23. 1 0
      php-symfony2-stripped/app/.htaccess
  24. 9 0
      php-symfony2-stripped/app/AppCache.php
  25. 23 0
      php-symfony2-stripped/app/AppKernel.php
  26. 12 0
      php-symfony2-stripped/app/Resources/views/base.html.php
  27. 12 0
      php-symfony2-stripped/app/Resources/views/base.html.twig
  28. 669 0
      php-symfony2-stripped/app/SymfonyRequirements.php
  29. 14 0
      php-symfony2-stripped/app/autoload.php
  30. 2961 0
      php-symfony2-stripped/app/bootstrap.php.cache
  31. 55 0
      php-symfony2-stripped/app/check.php
  32. 41 0
      php-symfony2-stripped/app/config/config.yml
  33. 14 0
      php-symfony2-stripped/app/config/parameters.yml
  34. 23 0
      php-symfony2-stripped/app/config/routing.yml
  35. 22 0
      php-symfony2-stripped/app/console
  36. 41 0
      php-symfony2-stripped/app/phpunit.xml.dist
  37. 64 0
      php-symfony2-stripped/benchmark_config
  38. 24 0
      php-symfony2-stripped/composer.json
  39. 133 0
      php-symfony2-stripped/deploy/nginx.conf
  40. 9 0
      php-symfony2-stripped/deploy/php-symfony2
  41. 28 0
      php-symfony2-stripped/setup.py
  42. 1 0
      php-symfony2-stripped/src/.htaccess
  43. 121 0
      php-symfony2-stripped/src/Skamander/BenchmarkBundle/Controller/BenchController.php
  44. 69 0
      php-symfony2-stripped/src/Skamander/BenchmarkBundle/Entity/Fortune.php
  45. 85 0
      php-symfony2-stripped/src/Skamander/BenchmarkBundle/Entity/World.php
  46. 18 0
      php-symfony2-stripped/src/Skamander/BenchmarkBundle/Resources/views/Bench/fortunes.html.php
  47. 20 0
      php-symfony2-stripped/src/Skamander/BenchmarkBundle/Resources/views/Bench/fortunes.html.twig
  48. 7 0
      php-symfony2-stripped/src/Skamander/BenchmarkBundle/Resources/views/Bench/raw/content.php
  49. 14 0
      php-symfony2-stripped/src/Skamander/BenchmarkBundle/Resources/views/Bench/raw/fortunes.php
  50. 2 0
      php-symfony2-stripped/src/Skamander/BenchmarkBundle/Resources/views/Bench/raw/template_footer.php
  51. 7 0
      php-symfony2-stripped/src/Skamander/BenchmarkBundle/Resources/views/Bench/raw/template_header.php
  52. 9 0
      php-symfony2-stripped/src/Skamander/BenchmarkBundle/Resources/views/layout.html.php
  53. 9 0
      php-symfony2-stripped/src/Skamander/BenchmarkBundle/Resources/views/layout.html.twig
  54. 9 0
      php-symfony2-stripped/src/Skamander/BenchmarkBundle/SkamanderBenchmarkBundle.php
  55. 48 0
      php-symfony2-stripped/web/.htaccess
  56. 24 0
      php-symfony2-stripped/web/app.php
  57. 28 0
      php-symfony2-stripped/web/app_dev.php
  58. BIN
      php-symfony2-stripped/web/apple-touch-icon.png
  59. 150 0
      php-symfony2-stripped/web/bundles/framework/css/body.css
  60. 108 0
      php-symfony2-stripped/web/bundles/framework/css/exception.css
  61. 72 0
      php-symfony2-stripped/web/bundles/framework/css/structure.css
  62. BIN
      php-symfony2-stripped/web/bundles/framework/images/blue_picto_less.gif
  63. BIN
      php-symfony2-stripped/web/bundles/framework/images/blue_picto_more.gif
  64. BIN
      php-symfony2-stripped/web/bundles/framework/images/grey_magnifier.png
  65. BIN
      php-symfony2-stripped/web/bundles/framework/images/logo_symfony.png
  66. 124 0
      php-symfony2-stripped/web/config.php
  67. BIN
      php-symfony2-stripped/web/favicon.ico
  68. 4 0
      php-symfony2-stripped/web/robots.txt
  69. 23 5
      php-symfony2/app/SymfonyRequirements.php
  70. 7 8
      php-symfony2/app/bootstrap.php.cache
  71. 1 1
      php-symfony2/app/config/parameters.yml
  72. 1 1
      php-symfony2/deploy/nginx.conf
  73. 22 0
      play-scala/benchmark_config
  74. 24 3
      play-scala/setup.py
  75. 29 21
      servicestack/README.md
  76. 64 0
      servicestack/benchmark_config
  77. BIN
      servicestack/lib/AWSSDK.1.5.28.3/AWSSDK.1.5.28.3.nupkg
  78. BIN
      servicestack/lib/AWSSDK.1.5.28.3/lib/AWSSDK.dll
  79. BIN
      servicestack/lib/AWSSDK.2.0.0.4-beta/AWSSDK.2.0.0.4-beta.nupkg
  80. 7 2
      servicestack/lib/AWSSDK.2.0.0.4-beta/AWSSDK.2.0.0.4-beta.nuspec
  81. BIN
      servicestack/lib/AWSSDK.2.0.0.4-beta/lib/net35/AWSSDK.dll
  82. BIN
      servicestack/lib/AWSSDK.2.0.0.4-beta/lib/net45/AWSSDK.dll
  83. BIN
      servicestack/lib/AWSSDK.2.0.0.4-beta/lib/windows8/AWSSDK.dll
  84. BIN
      servicestack/lib/AWSSDK.2.0.0.4-beta/lib/windowsphone8/AWSSDK.dll
  85. 505 0
      servicestack/lib/Microsoft.Bcl.1.0.19/License.rtf
  86. BIN
      servicestack/lib/Microsoft.Bcl.1.0.19/Microsoft.Bcl.1.0.19.nupkg
  87. 34 0
      servicestack/lib/Microsoft.Bcl.1.0.19/Microsoft.Bcl.1.0.19.nuspec
  88. 24 0
      servicestack/lib/Microsoft.Bcl.1.0.19/ReleaseNotes.txt
  89. 0 0
      servicestack/lib/Microsoft.Bcl.1.0.19/content/net45/_._
  90. 0 0
      servicestack/lib/Microsoft.Bcl.1.0.19/content/portable-net45+win8+wp8/_._
  91. 0 0
      servicestack/lib/Microsoft.Bcl.1.0.19/content/sl4/_._
  92. 0 0
      servicestack/lib/Microsoft.Bcl.1.0.19/content/sl5/_._
  93. 0 0
      servicestack/lib/Microsoft.Bcl.1.0.19/content/win8/_._
  94. 0 0
      servicestack/lib/Microsoft.Bcl.1.0.19/content/wp8/_._
  95. BIN
      servicestack/lib/Microsoft.Bcl.1.0.19/lib/net40/System.Runtime.dll
  96. 56 0
      servicestack/lib/Microsoft.Bcl.1.0.19/lib/net40/System.Runtime.xml
  97. BIN
      servicestack/lib/Microsoft.Bcl.1.0.19/lib/net40/System.Threading.Tasks.dll
  98. 475 0
      servicestack/lib/Microsoft.Bcl.1.0.19/lib/net40/System.Threading.Tasks.xml
  99. 0 0
      servicestack/lib/Microsoft.Bcl.1.0.19/lib/net40/ensureRedirect.xml
  100. 0 0
      servicestack/lib/Microsoft.Bcl.1.0.19/lib/net45/_._

+ 6 - 5
falcon/setup.py

@@ -22,9 +22,10 @@ def start(args):
     return 0
 
 def stop():
-    global proc
-    if proc is None:
-        return 0
-    proc.terminate()
-    proc = None
+    p = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE)
+    out, err = p.communicate()
+    for line in out.splitlines():
+      if 'FrameworkBenchmarks/installs/py2/bin/' in line:
+        pid = int(line.split(None,2)[1])
+        kill(pid, 9)
     return 0

+ 6 - 5
flask/setup.py

@@ -23,9 +23,10 @@ def start(args):
     return 0
 
 def stop():
-    global proc
-    if proc is None:
-        return 0
-    proc.terminate()
-    proc = None
+    p = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE)
+    out, err = p.communicate()
+    for line in out.splitlines():
+      if 'FrameworkBenchmarks/installs/py2/bin/' in line:
+        pid = int(line.split(None,2)[1])
+        kill(pid, 9)
     return 0

+ 8 - 0
flask/setup_nginxuwsgi.py

@@ -24,4 +24,12 @@ def start(args):
 def stop():
     subprocess.call('sudo /usr/local/nginx/sbin/nginx -s stop', shell=True)
     subprocess.call(bin_dir + '/uwsgi --ini ' + config_dir + '/uwsgi_stop.ini', shell=True)
+
+    p = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE)
+    out, err = p.communicate()
+    for line in out.splitlines():
+      if 'FrameworkBenchmarks/installs/py2/bin/' in line:
+        pid = int(line.split(None,2)[1])
+        kill(pid, 9)
+
     return 0

+ 1 - 1
lapis/config.lua

@@ -9,6 +9,6 @@ end)
 return config("production", function()
   port(80)
   num_workers(4)
-  lua_code_cache("off")
+  lua_code_cache("on")
   return postgresql_url("postgres://benchmarkdbuser:[email protected]/hello_world")
 end)

+ 1 - 1
lapis/config.moon

@@ -6,5 +6,5 @@ config "development", ->
 config "production", ->
   port 80
   num_workers 4
-  lua_code_cache "off"
+  lua_code_cache "on"
   postgresql_url "postgres://benchmarkdbuser:[email protected]/hello_world"

+ 3 - 3
php-phpixie/assets/config/db.php

@@ -4,13 +4,13 @@ return array(
 	'default' => array(
 		'user'=>'benchmarkdbuser',
 		'password' => 'benchmarkdbpass',
-		'driver' => 'mysql',
+		'driver' => 'PDO',
 		
 		//'Connection' is required if you use the PDO driver
-		'connection'=>'mysql:host=localhost;dbname=hello_world',
+		'connection'=>'mysql:host=tfbdata;dbname=hello_world',
 		
 		// 'db' and 'host' are required if you use Mysqli driver
 		'db' => 'hello_world',
-		'host'=>'localhost'
+		'host'=>'tfbdata'
 	)
 );

+ 1 - 1
php-phpixie/deploy/nginx.conf

@@ -61,7 +61,7 @@ http {
         #    proxy_pass   http://127.0.0.1;
         #}
 
-        root /home/fb/FrameworkBenchmarks/php-phpixie/web/;
+        root /home/tfb/FrameworkBenchmarks/php-phpixie/web/;
         index  index.php;
 
         location / {

+ 2 - 2
php-phpixie/deploy/php-phpixie

@@ -1,6 +1,6 @@
 <VirtualHost *:8080>
-  Alias /php-phpixie/ "/home/fb/FrameworkBenchmarks/php-phpixie/web/"
-  <Directory /home/fb/FrameworkBenchmarks/php-phpixie/web/>
+  Alias /php-phpixie/ "/home/tfb/FrameworkBenchmarks/php-phpixie/web/"
+  <Directory /home/tfb/FrameworkBenchmarks/php-phpixie/web/>
           Options Indexes FollowSymLinks MultiViews
           #AllowOverride None
           Order allow,deny

+ 1 - 1
php-phpixie/vendor/autoload.php

@@ -4,4 +4,4 @@
 
 require_once __DIR__ . '/composer' . '/autoload_real.php';
 
-return ComposerAutoloaderInit947ea4decfc38807f5034e43cfc30239::getLoader();
+return ComposerAutoloaderInitf7f56072c6b4cbd174b02f65e83ee57a::getLoader();

+ 3 - 3
php-phpixie/vendor/composer/autoload_real.php

@@ -2,7 +2,7 @@
 
 // autoload_real.php @generated by Composer
 
-class ComposerAutoloaderInit947ea4decfc38807f5034e43cfc30239
+class ComposerAutoloaderInitf7f56072c6b4cbd174b02f65e83ee57a
 {
     private static $loader;
 
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit947ea4decfc38807f5034e43cfc30239
             return self::$loader;
         }
 
-        spl_autoload_register(array('ComposerAutoloaderInit947ea4decfc38807f5034e43cfc30239', 'loadClassLoader'), true, true);
+        spl_autoload_register(array('ComposerAutoloaderInitf7f56072c6b4cbd174b02f65e83ee57a', 'loadClassLoader'), true, true);
         self::$loader = $loader = new \Composer\Autoload\ClassLoader();
-        spl_autoload_unregister(array('ComposerAutoloaderInit947ea4decfc38807f5034e43cfc30239', 'loadClassLoader'));
+        spl_autoload_unregister(array('ComposerAutoloaderInitf7f56072c6b4cbd174b02f65e83ee57a', 'loadClassLoader'));
 
         $vendorDir = dirname(__DIR__);
         $baseDir = dirname($vendorDir);

+ 3 - 3
php-silex/benchmark_config

@@ -25,8 +25,8 @@
       "json_url": "/json",
       "db_url": "/db",
       "query_url": "/queries?queries=",
-      "fortune_url": "/fortune",
-      "update_url": "/update?queries=",
+      "fortune_url": "/fortunes",
+      "update_url": "/updates?queries=",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "approach": "Realistic",
@@ -44,4 +44,4 @@
       "versus": "php"
     }
   }]
-}
+}

+ 1 - 1
php-silex/deploy/nginx_raw.conf

@@ -61,7 +61,7 @@ http {
         #    proxy_pass   http://127.0.0.1;
         #}
 
-        root /home/ubuntu/FrameworkBenchmarks/php-silex/web/;
+        root /home/mrobertson/FrameworkBenchmarks/php-silex/web/;
         index  index_raw.php;
 
         location / {

+ 2 - 2
php-silex/deploy/php-silex

@@ -1,6 +1,6 @@
 <VirtualHost *:8080>
-  Alias /php-silex/ "/home/ubuntu/FrameworkBenchmarks/php-silex/web/"
-  <Directory /home/ubuntu/FrameworkBenchmarks/php-silex/web/>
+  Alias /php-silex/ "/home/mrobertson/FrameworkBenchmarks/php-silex/web/"
+  <Directory /home/mrobertson/FrameworkBenchmarks/php-silex/web/>
           Options Indexes FollowSymLinks MultiViews
           #AllowOverride None
           Order allow,deny

+ 1 - 1
php-silex/vendor/autoload.php

@@ -4,4 +4,4 @@
 
 require_once __DIR__ . '/composer' . '/autoload_real.php';
 
-return ComposerAutoloaderInit40ccb447439961a904c4289232cf33d7::getLoader();
+return ComposerAutoloaderInitb4cec0b4c1141a885915e746a70b627f::getLoader();

+ 3 - 3
php-silex/vendor/composer/autoload_real.php

@@ -2,7 +2,7 @@
 
 // autoload_real.php @generated by Composer
 
-class ComposerAutoloaderInit40ccb447439961a904c4289232cf33d7
+class ComposerAutoloaderInitb4cec0b4c1141a885915e746a70b627f
 {
     private static $loader;
 
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit40ccb447439961a904c4289232cf33d7
             return self::$loader;
         }
 
-        spl_autoload_register(array('ComposerAutoloaderInit40ccb447439961a904c4289232cf33d7', 'loadClassLoader'), true, true);
+        spl_autoload_register(array('ComposerAutoloaderInitb4cec0b4c1141a885915e746a70b627f', 'loadClassLoader'), true, true);
         self::$loader = $loader = new \Composer\Autoload\ClassLoader();
-        spl_autoload_unregister(array('ComposerAutoloaderInit40ccb447439961a904c4289232cf33d7', 'loadClassLoader'));
+        spl_autoload_unregister(array('ComposerAutoloaderInitb4cec0b4c1141a885915e746a70b627f', 'loadClassLoader'));
 
         $vendorDir = dirname(__DIR__);
         $baseDir = dirname($vendorDir);

+ 1 - 1
php-silex/vendor/silex/silex

@@ -1 +1 @@
-Subproject commit 6e4b5ff9e8e325882ec4b1a7e717cdbfd41d5e38
+Subproject commit 4787bf21e416b9abd5cbf41daf136dae20d56f5c

+ 4 - 4
php-silex/web/index_raw.php

@@ -19,7 +19,7 @@ $app->get('/json', function() {
 
 // Test 2: Single database query
 $app->get('/db', function() {
-    $db = new mysqli('192.168.100.102', 'benchmarkdbuser', 'benchmarkdbpass', 'hello_world');
+    $db = new mysqli('172.16.98.120', 'benchmarkdbuser', 'benchmarkdbpass', 'hello_world');
     $row = mysqli_query($db, 'SELECT id, randomNumber FROM World WHERE id = '.rand(1, 10000));
 
     return new Response(json_encode(mysqli_fetch_assoc($row)), 200, array('Content-Type' => 'application/json'));
@@ -28,7 +28,7 @@ $app->get('/db', function() {
 // Test 3: Multiple database queries
 $app->get('/queries', function(Request $request) {
     $queries = max(1, min($request->query->get('queries'), 500));
-    $db = new mysqli('192.168.100.102', 'benchmarkdbuser', 'benchmarkdbpass', 'hello_world');
+    $db = new mysqli('172.16.98.120', 'benchmarkdbuser', 'benchmarkdbpass', 'hello_world');
 
     for ($i=0; $i<$queries; $i++) {
         $rows[] = mysqli_fetch_assoc(mysqli_query($db, 'SELECT id, randomNumber FROM World WHERE id = '.rand(1, 10000)));
@@ -39,7 +39,7 @@ $app->get('/queries', function(Request $request) {
 
 // Test 4: Fortunes
 $app->get('/fortunes', function() {
-    $db = new mysqli('192.168.100.102', 'benchmarkdbuser', 'benchmarkdbpass', 'hello_world');
+    $db = new mysqli('172.16.98.120', 'benchmarkdbuser', 'benchmarkdbpass', 'hello_world');
     $result = mysqli_query($db, 'SELECT * FROM Fortune');
     while ($row = mysqli_fetch_row($result)) {
         $fortunes[$row[0]] = htmlspecialchars($row[1], ENT_IGNORE);
@@ -58,7 +58,7 @@ $app->get('/fortunes', function() {
 // Test 5: Database updates
 $app->get('/updates', function(Request $request) {
     $queries = max(1, min($request->query->get('queries'), 500));
-    $db = new mysqli('192.168.100.102', 'benchmarkdbuser', 'benchmarkdbpass', 'hello_world');
+    $db = new mysqli('172.16.98.120', 'benchmarkdbuser', 'benchmarkdbpass', 'hello_world');
     for ($i=0; $i<$queries; $i++) {
         $rows[] = mysqli_fetch_assoc(mysqli_query($db, 'SELECT id, randomNumber FROM World WHERE id = '.rand(1, 10000)));
     }

+ 10 - 0
php-symfony2-stripped/.gitignore

@@ -0,0 +1,10 @@
+/app/cache
+/app/logs
+/bin
+/vendors
+/vendor
+/build
+/dist
+.DS_Store
+/tags
+.idea

+ 10 - 0
php-symfony2-stripped/.travis.yml

@@ -0,0 +1,10 @@
+language: php
+
+php:
+  - 5.3.3
+  - 5.3
+  - 5.4
+
+before_script: composer install
+
+script: phpunit -c app

+ 19 - 0
php-symfony2-stripped/LICENSE

@@ -0,0 +1,19 @@
+Copyright (c) 2004-2013 Fabien Potencier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.

+ 46 - 0
php-symfony2-stripped/README.md

@@ -0,0 +1,46 @@
+# Symfony 2 Benchmarking Test
+
+This is the Symfony 2 PHP portion of a [benchmarking test suite](../) comparing a variety of web development platforms.
+
+### JSON Encoding Test
+Uses the PHP standard [JSON encoder](http://www.php.net/manual/en/function.json-encode.php).
+
+* [JSON test controller](src/Skamander/BenchmarkBundle/Controller/BenchController.php)
+
+
+### Data-Store/Database Mapping Test
+Uses the Symfony 2/Doctrine 2 Entity functionality.
+
+* [DB test controller](src/Skamander/BenchmarkBundle/Controller/BenchController.php)
+* [DB test model](src/Skamander/BenchmarkBundle/Entity/World.php)
+
+### Template Test
+Uses Symfony's template engine 'Twig'
+
+* [Template test controller](src/Skamander/BenchmarkBundle/Controller/BenchController.php)
+
+
+## Infrastructure Software Versions
+The tests were run with:
+
+* [Symfony Version 2.2.1](http://symfony.com/)
+* [PHP Version 5.4.13](http://www.php.net/) with FPM and APC
+* [nginx 1.4.0](http://nginx.org/)
+* [MySQL 5.5.29](https://dev.mysql.com/)
+
+## Test URLs
+### JSON Encoding Test
+
+http://localhost/json
+
+### Data-Store/Database Mapping Test
+
+http://localhost/db
+
+### Variable Query Test
+    
+http://localhost/db?queries=2
+
+### Templating Test
+
+http://localhost/fortunes

+ 0 - 0
php-symfony2-stripped/__init__.py


+ 1 - 0
php-symfony2-stripped/app/.htaccess

@@ -0,0 +1 @@
+deny from all

+ 9 - 0
php-symfony2-stripped/app/AppCache.php

@@ -0,0 +1,9 @@
+<?php
+
+require_once __DIR__.'/AppKernel.php';
+
+use Symfony\Bundle\FrameworkBundle\HttpCache\HttpCache;
+
+class AppCache extends HttpCache
+{
+}

+ 23 - 0
php-symfony2-stripped/app/AppKernel.php

@@ -0,0 +1,23 @@
+<?php
+
+use Symfony\Component\HttpKernel\Kernel;
+use Symfony\Component\Config\Loader\LoaderInterface;
+
+class AppKernel extends Kernel
+{
+    public function registerBundles()
+    {
+        $bundles = array(
+            new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
+            new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
+            new Skamander\BenchmarkBundle\SkamanderBenchmarkBundle(),
+        );
+
+        return $bundles;
+    }
+
+    public function registerContainerConfiguration(LoaderInterface $loader)
+    {
+        $loader->load(__DIR__.'/config/config.yml');
+    }
+}

+ 12 - 0
php-symfony2-stripped/app/Resources/views/base.html.php

@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="UTF-8" />
+        <title><?php $view['slots']->output('title') ?></title>
+        <?php $view['slots']->output('stylesheets') ?>
+    </head>
+    <body>
+        <?php $view['slots']->output('body') ?>
+        <?php $view['slots']->output('javascripts') ?>
+    </body>
+</html>

+ 12 - 0
php-symfony2-stripped/app/Resources/views/base.html.twig

@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="UTF-8" />
+        <title>{% block title %}Welcome!{% endblock %}</title>
+        {% block stylesheets %}{% endblock %}
+    </head>
+    <body>
+        {% block body %}{% endblock %}
+        {% block javascripts %}{% endblock %}
+    </body>
+</html>

+ 669 - 0
php-symfony2-stripped/app/SymfonyRequirements.php

@@ -0,0 +1,669 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Users of PHP 5.2 should be able to run the requirements checks.
+ * This is why the file and all classes must be compatible with PHP 5.2+
+ * (e.g. not using namespaces and closures).
+ *
+ * ************** CAUTION **************
+ *
+ * DO NOT EDIT THIS FILE as it will be overriden by Composer as part of
+ * the installation/update process. The original file resides in the
+ * SensioDistributionBundle.
+ *
+ * ************** CAUTION **************
+ */
+
+/**
+ * Represents a single PHP requirement, e.g. an installed extension.
+ * It can be a mandatory requirement or an optional recommendation.
+ * There is a special subclass, named PhpIniRequirement, to check a php.ini configuration.
+ *
+ * @author Tobias Schultze <http://tobion.de>
+ */
+class Requirement
+{
+    private $fulfilled;
+    private $testMessage;
+    private $helpText;
+    private $helpHtml;
+    private $optional;
+
+    /**
+     * Constructor that initializes the requirement.
+     *
+     * @param Boolean     $fulfilled   Whether the requirement is fulfilled
+     * @param string      $testMessage The message for testing the requirement
+     * @param string      $helpHtml    The help text formatted in HTML for resolving the problem
+     * @param string|null $helpText    The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
+     * @param Boolean     $optional    Whether this is only an optional recommendation not a mandatory requirement
+     */
+    public function __construct($fulfilled, $testMessage, $helpHtml, $helpText = null, $optional = false)
+    {
+        $this->fulfilled = (Boolean) $fulfilled;
+        $this->testMessage = (string) $testMessage;
+        $this->helpHtml = (string) $helpHtml;
+        $this->helpText = null === $helpText ? strip_tags($this->helpHtml) : (string) $helpText;
+        $this->optional = (Boolean) $optional;
+    }
+
+    /**
+     * Returns whether the requirement is fulfilled.
+     *
+     * @return Boolean true if fulfilled, otherwise false
+     */
+    public function isFulfilled()
+    {
+        return $this->fulfilled;
+    }
+
+    /**
+     * Returns the message for testing the requirement.
+     *
+     * @return string The test message
+     */
+    public function getTestMessage()
+    {
+        return $this->testMessage;
+    }
+
+    /**
+     * Returns the help text for resolving the problem
+     *
+     * @return string The help text
+     */
+    public function getHelpText()
+    {
+        return $this->helpText;
+    }
+
+    /**
+     * Returns the help text formatted in HTML.
+     *
+     * @return string The HTML help
+     */
+    public function getHelpHtml()
+    {
+        return $this->helpHtml;
+    }
+
+    /**
+     * Returns whether this is only an optional recommendation and not a mandatory requirement.
+     *
+     * @return Boolean true if optional, false if mandatory
+     */
+    public function isOptional()
+    {
+        return $this->optional;
+    }
+}
+
+/**
+ * Represents a PHP requirement in form of a php.ini configuration.
+ *
+ * @author Tobias Schultze <http://tobion.de>
+ */
+class PhpIniRequirement extends Requirement
+{
+    /**
+     * Constructor that initializes the requirement.
+     *
+     * @param string           $cfgName    The configuration name used for ini_get()
+     * @param Boolean|callback $evaluation Either a Boolean indicating whether the configuration should evaluate to true or false,
+                                                    or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
+     * @param Boolean $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
+                                                    This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
+                                                    Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
+     * @param string|null $testMessage The message for testing the requirement (when null and $evaluation is a Boolean a default message is derived)
+     * @param string|null $helpHtml    The help text formatted in HTML for resolving the problem (when null and $evaluation is a Boolean a default help is derived)
+     * @param string|null $helpText    The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
+     * @param Boolean     $optional    Whether this is only an optional recommendation not a mandatory requirement
+     */
+    public function __construct($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null, $optional = false)
+    {
+        $cfgValue = ini_get($cfgName);
+
+        if (is_callable($evaluation)) {
+            if (null === $testMessage || null === $helpHtml) {
+                throw new InvalidArgumentException('You must provide the parameters testMessage and helpHtml for a callback evaluation.');
+            }
+
+            $fulfilled = call_user_func($evaluation, $cfgValue);
+        } else {
+            if (null === $testMessage) {
+                $testMessage = sprintf('%s %s be %s in php.ini',
+                    $cfgName,
+                    $optional ? 'should' : 'must',
+                    $evaluation ? 'enabled' : 'disabled'
+                );
+            }
+
+            if (null === $helpHtml) {
+                $helpHtml = sprintf('Set <strong>%s</strong> to <strong>%s</strong> in php.ini<a href="#phpini">*</a>.',
+                    $cfgName,
+                    $evaluation ? 'on' : 'off'
+                );
+            }
+
+            $fulfilled = $evaluation == $cfgValue;
+        }
+
+        parent::__construct($fulfilled || ($approveCfgAbsence && false === $cfgValue), $testMessage, $helpHtml, $helpText, $optional);
+    }
+}
+
+/**
+ * A RequirementCollection represents a set of Requirement instances.
+ *
+ * @author Tobias Schultze <http://tobion.de>
+ */
+class RequirementCollection implements IteratorAggregate
+{
+    private $requirements = array();
+
+    /**
+     * Gets the current RequirementCollection as an Iterator.
+     *
+     * @return Traversable A Traversable interface
+     */
+    public function getIterator()
+    {
+        return new ArrayIterator($this->requirements);
+    }
+
+    /**
+     * Adds a Requirement.
+     *
+     * @param Requirement $requirement A Requirement instance
+     */
+    public function add(Requirement $requirement)
+    {
+        $this->requirements[] = $requirement;
+    }
+
+    /**
+     * Adds a mandatory requirement.
+     *
+     * @param Boolean     $fulfilled   Whether the requirement is fulfilled
+     * @param string      $testMessage The message for testing the requirement
+     * @param string      $helpHtml    The help text formatted in HTML for resolving the problem
+     * @param string|null $helpText    The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
+     */
+    public function addRequirement($fulfilled, $testMessage, $helpHtml, $helpText = null)
+    {
+        $this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, false));
+    }
+
+    /**
+     * Adds an optional recommendation.
+     *
+     * @param Boolean     $fulfilled   Whether the recommendation is fulfilled
+     * @param string      $testMessage The message for testing the recommendation
+     * @param string      $helpHtml    The help text formatted in HTML for resolving the problem
+     * @param string|null $helpText    The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
+     */
+    public function addRecommendation($fulfilled, $testMessage, $helpHtml, $helpText = null)
+    {
+        $this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, true));
+    }
+
+    /**
+     * Adds a mandatory requirement in form of a php.ini configuration.
+     *
+     * @param string           $cfgName    The configuration name used for ini_get()
+     * @param Boolean|callback $evaluation Either a Boolean indicating whether the configuration should evaluate to true or false,
+                                                    or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
+     * @param Boolean $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
+                                                    This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
+                                                    Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
+     * @param string      $testMessage The message for testing the requirement (when null and $evaluation is a Boolean a default message is derived)
+     * @param string      $helpHtml    The help text formatted in HTML for resolving the problem (when null and $evaluation is a Boolean a default help is derived)
+     * @param string|null $helpText    The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
+     */
+    public function addPhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null)
+    {
+        $this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, false));
+    }
+
+    /**
+     * Adds an optional recommendation in form of a php.ini configuration.
+     *
+     * @param string           $cfgName    The configuration name used for ini_get()
+     * @param Boolean|callback $evaluation Either a Boolean indicating whether the configuration should evaluate to true or false,
+                                                    or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
+     * @param Boolean $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
+                                                    This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
+                                                    Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
+     * @param string      $testMessage The message for testing the requirement (when null and $evaluation is a Boolean a default message is derived)
+     * @param string      $helpHtml    The help text formatted in HTML for resolving the problem (when null and $evaluation is a Boolean a default help is derived)
+     * @param string|null $helpText    The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
+     */
+    public function addPhpIniRecommendation($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null)
+    {
+        $this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, true));
+    }
+
+    /**
+     * Adds a requirement collection to the current set of requirements.
+     *
+     * @param RequirementCollection $collection A RequirementCollection instance
+     */
+    public function addCollection(RequirementCollection $collection)
+    {
+        $this->requirements = array_merge($this->requirements, $collection->all());
+    }
+
+    /**
+     * Returns both requirements and recommendations.
+     *
+     * @return array Array of Requirement instances
+     */
+    public function all()
+    {
+        return $this->requirements;
+    }
+
+    /**
+     * Returns all mandatory requirements.
+     *
+     * @return array Array of Requirement instances
+     */
+    public function getRequirements()
+    {
+        $array = array();
+        foreach ($this->requirements as $req) {
+            if (!$req->isOptional()) {
+                $array[] = $req;
+            }
+        }
+
+        return $array;
+    }
+
+    /**
+     * Returns the mandatory requirements that were not met.
+     *
+     * @return array Array of Requirement instances
+     */
+    public function getFailedRequirements()
+    {
+        $array = array();
+        foreach ($this->requirements as $req) {
+            if (!$req->isFulfilled() && !$req->isOptional()) {
+                $array[] = $req;
+            }
+        }
+
+        return $array;
+    }
+
+    /**
+     * Returns all optional recommmendations.
+     *
+     * @return array Array of Requirement instances
+     */
+    public function getRecommendations()
+    {
+        $array = array();
+        foreach ($this->requirements as $req) {
+            if ($req->isOptional()) {
+                $array[] = $req;
+            }
+        }
+
+        return $array;
+    }
+
+    /**
+     * Returns the recommendations that were not met.
+     *
+     * @return array Array of Requirement instances
+     */
+    public function getFailedRecommendations()
+    {
+        $array = array();
+        foreach ($this->requirements as $req) {
+            if (!$req->isFulfilled() && $req->isOptional()) {
+                $array[] = $req;
+            }
+        }
+
+        return $array;
+    }
+
+    /**
+     * Returns whether a php.ini configuration is not correct.
+     *
+     * @return Boolean php.ini configuration problem?
+     */
+    public function hasPhpIniConfigIssue()
+    {
+        foreach ($this->requirements as $req) {
+            if (!$req->isFulfilled() && $req instanceof PhpIniRequirement) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Returns the PHP configuration file (php.ini) path.
+     *
+     * @return string|false php.ini file path
+     */
+    public function getPhpIniConfigPath()
+    {
+        return get_cfg_var('cfg_file_path');
+    }
+}
+
+/**
+ * This class specifies all requirements and optional recommendations that
+ * are necessary to run the Symfony Standard Edition.
+ *
+ * @author Tobias Schultze <http://tobion.de>
+ * @author Fabien Potencier <[email protected]>
+ */
+class SymfonyRequirements extends RequirementCollection
+{
+    const REQUIRED_PHP_VERSION = '5.3.3';
+
+    /**
+     * Constructor that initializes the requirements.
+     */
+    public function __construct()
+    {
+        /* mandatory requirements follow */
+
+        $installedPhpVersion = phpversion();
+
+        $this->addRequirement(
+            version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>='),
+            sprintf('PHP version must be at least %s (%s installed)', self::REQUIRED_PHP_VERSION, $installedPhpVersion),
+            sprintf('You are running PHP version "<strong>%s</strong>", but Symfony needs at least PHP "<strong>%s</strong>" to run.
+                Before using Symfony, upgrade your PHP installation, preferably to the latest version.',
+                $installedPhpVersion, self::REQUIRED_PHP_VERSION),
+            sprintf('Install PHP %s or newer (installed version is %s)', self::REQUIRED_PHP_VERSION, $installedPhpVersion)
+        );
+
+        $this->addRequirement(
+            version_compare($installedPhpVersion, '5.3.16', '!='),
+            'PHP version must not be 5.3.16 as Symfony won\'t work properly with it',
+            'Install PHP 5.3.17 or newer (or downgrade to an earlier PHP version)'
+        );
+
+        $this->addRequirement(
+            is_dir(__DIR__.'/../vendor/composer'),
+            'Vendor libraries must be installed',
+            'Vendor libraries are missing. Install composer following instructions from <a href="http://getcomposer.org/">http://getcomposer.org/</a>. ' .
+                'Then run "<strong>php composer.phar install</strong>" to install them.'
+        );
+
+        $baseDir = basename(__DIR__);
+
+        $this->addRequirement(
+            is_writable(__DIR__.'/cache'),
+            "$baseDir/cache/ directory must be writable",
+            "Change the permissions of the \"<strong>$baseDir/cache/</strong>\" directory so that the web server can write into it."
+        );
+
+        $this->addRequirement(
+            is_writable(__DIR__.'/logs'),
+            "$baseDir/logs/ directory must be writable",
+            "Change the permissions of the \"<strong>$baseDir/logs/</strong>\" directory so that the web server can write into it."
+        );
+
+        $this->addPhpIniRequirement(
+            'date.timezone', true, false,
+            'date.timezone setting must be set',
+            'Set the "<strong>date.timezone</strong>" setting in php.ini<a href="#phpini">*</a> (like Europe/Paris).'
+        );
+
+        if (version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>=')) {
+            $timezones = array();
+            foreach (DateTimeZone::listAbbreviations() as $abbreviations) {
+                foreach ($abbreviations as $abbreviation) {
+                    $timezones[$abbreviation['timezone_id']] = true;
+                }
+            }
+
+            $this->addRequirement(
+                isset($timezones[date_default_timezone_get()]),
+                sprintf('Configured default timezone "%s" must be supported by your installation of PHP', date_default_timezone_get()),
+                'Your default timezone is not supported by PHP. Check for typos in your <strong>php.ini</strong> file and have a look at the list of deprecated timezones at <a href="http://php.net/manual/en/timezones.others.php">http://php.net/manual/en/timezones.others.php</a>.'
+            );
+        }
+
+        $this->addRequirement(
+            function_exists('json_encode'),
+            'json_encode() must be available',
+            'Install and enable the <strong>JSON</strong> extension.'
+        );
+
+        $this->addRequirement(
+            function_exists('session_start'),
+            'session_start() must be available',
+            'Install and enable the <strong>session</strong> extension.'
+        );
+
+        $this->addRequirement(
+            function_exists('ctype_alpha'),
+            'ctype_alpha() must be available',
+            'Install and enable the <strong>ctype</strong> extension.'
+        );
+
+        $this->addRequirement(
+            function_exists('token_get_all'),
+            'token_get_all() must be available',
+            'Install and enable the <strong>Tokenizer</strong> extension.'
+        );
+
+        $this->addRequirement(
+            function_exists('simplexml_import_dom'),
+            'simplexml_import_dom() must be available',
+            'Install and enable the <strong>SimpleXML</strong> extension.'
+        );
+
+        if (function_exists('apc_store') && ini_get('apc.enabled')) {
+            if (version_compare($installedPhpVersion, '5.4.0', '>=')) {
+                $this->addRequirement(
+                    version_compare(phpversion('apc'), '3.1.13', '>='),
+                    'APC version must be at least 3.1.13 when using PHP 5.4',
+                    'Upgrade your <strong>APC</strong> extension (3.1.13+).'
+                );
+            } else {
+                $this->addRequirement(
+                    version_compare(phpversion('apc'), '3.0.17', '>='),
+                    'APC version must be at least 3.0.17',
+                    'Upgrade your <strong>APC</strong> extension (3.0.17+).'
+                );
+            }
+        }
+
+        $this->addPhpIniRequirement('detect_unicode', false);
+
+        if (extension_loaded('suhosin')) {
+            $this->addPhpIniRequirement(
+                'suhosin.executor.include.whitelist',
+                create_function('$cfgValue', 'return false !== stripos($cfgValue, "phar");'),
+                false,
+                'suhosin.executor.include.whitelist must be configured correctly in php.ini',
+                'Add "<strong>phar</strong>" to <strong>suhosin.executor.include.whitelist</strong> in php.ini<a href="#phpini">*</a>.'
+            );
+        }
+
+        if (extension_loaded('xdebug')) {
+            $this->addPhpIniRequirement(
+                'xdebug.show_exception_trace', false, true
+            );
+
+            $this->addPhpIniRequirement(
+                'xdebug.scream', false, true
+            );
+
+            $this->addPhpIniRecommendation(
+                'xdebug.max_nesting_level',
+                create_function('$cfgValue', 'return $cfgValue > 100;'),
+                true,
+                'xdebug.max_nesting_level should be above 100 in php.ini',
+                'Set "<strong>xdebug.max_nesting_level</strong>" to e.g. "<strong>250</strong>" in php.ini<a href="#phpini">*</a> to stop Xdebug\'s infinite recursion protection erroneously throwing a fatal error in your project.'
+            );
+        }
+
+        $pcreVersion = defined('PCRE_VERSION') ? (float) PCRE_VERSION : null;
+
+        $this->addRequirement(
+            null !== $pcreVersion,
+            'PCRE extension must be available',
+            'Install the <strong>PCRE</strong> extension (version 8.0+).'
+        );
+
+        /* optional recommendations follow */
+
+        $this->addRecommendation(
+            file_get_contents(__FILE__) === file_get_contents(__DIR__.'/../vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/skeleton/app/SymfonyRequirements.php'),
+            'Requirements file should be up-to-date',
+            'Your requirements file is outdated. Run composer install and re-check your configuration.'
+        );
+
+        $this->addRecommendation(
+            version_compare($installedPhpVersion, '5.3.4', '>='),
+            'You should use at least PHP 5.3.4 due to PHP bug #52083 in earlier versions',
+            'Your project might malfunction randomly due to PHP bug #52083 ("Notice: Trying to get property of non-object"). Install PHP 5.3.4 or newer.'
+        );
+
+        $this->addRecommendation(
+            version_compare($installedPhpVersion, '5.3.8', '>='),
+            'When using annotations you should have at least PHP 5.3.8 due to PHP bug #55156',
+            'Install PHP 5.3.8 or newer if your project uses annotations.'
+        );
+
+        $this->addRecommendation(
+            version_compare($installedPhpVersion, '5.4.0', '!='),
+            'You should not use PHP 5.4.0 due to the PHP bug #61453',
+            'Your project might not work properly due to the PHP bug #61453 ("Cannot dump definitions which have method calls"). Install PHP 5.4.1 or newer.'
+        );
+
+        if (null !== $pcreVersion) {
+            $this->addRecommendation(
+                $pcreVersion >= 8.0,
+                sprintf('PCRE extension should be at least version 8.0 (%s installed)', $pcreVersion),
+                '<strong>PCRE 8.0+</strong> is preconfigured in PHP since 5.3.2 but you are using an outdated version of it. Symfony probably works anyway but it is recommended to upgrade your PCRE extension.'
+            );
+        }
+
+        $this->addRecommendation(
+            class_exists('DomDocument'),
+            'PHP-XML module should be installed',
+            'Install and enable the <strong>PHP-XML</strong> module.'
+        );
+
+        $this->addRecommendation(
+            function_exists('mb_strlen'),
+            'mb_strlen() should be available',
+            'Install and enable the <strong>mbstring</strong> extension.'
+        );
+
+        $this->addRecommendation(
+            function_exists('iconv'),
+            'iconv() should be available',
+            'Install and enable the <strong>iconv</strong> extension.'
+        );
+
+        $this->addRecommendation(
+            function_exists('utf8_decode'),
+            'utf8_decode() should be available',
+            'Install and enable the <strong>XML</strong> extension.'
+        );
+
+        if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
+            $this->addRecommendation(
+                function_exists('posix_isatty'),
+                'posix_isatty() should be available',
+                'Install and enable the <strong>php_posix</strong> extension (used to colorize the CLI output).'
+            );
+        }
+
+        $this->addRecommendation(
+            class_exists('Locale'),
+            'intl extension should be available',
+            'Install and enable the <strong>intl</strong> extension (used for validators).'
+        );
+
+        if (class_exists('Collator')) {
+            $this->addRecommendation(
+                null !== new Collator('fr_FR'),
+                'intl extension should be correctly configured',
+                'The intl extension does not behave properly. This problem is typical on PHP 5.3.X x64 WIN builds.'
+            );
+        }
+
+        if (class_exists('Locale')) {
+            if (defined('INTL_ICU_VERSION')) {
+                $version = INTL_ICU_VERSION;
+            } else {
+                $reflector = new ReflectionExtension('intl');
+
+                ob_start();
+                $reflector->info();
+                $output = strip_tags(ob_get_clean());
+
+                preg_match('/^ICU version +(?:=> )?(.*)$/m', $output, $matches);
+                $version = $matches[1];
+            }
+
+            $this->addRecommendation(
+                version_compare($version, '4.0', '>='),
+                'intl ICU version should be at least 4+',
+                'Upgrade your <strong>intl</strong> extension with a newer ICU version (4+).'
+            );
+        }
+
+        $accelerator =
+            (function_exists('apc_store') && ini_get('apc.enabled'))
+            ||
+            function_exists('eaccelerator_put') && ini_get('eaccelerator.enable')
+            ||
+            function_exists('xcache_set')
+        ;
+
+        $this->addRecommendation(
+            $accelerator,
+            'a PHP accelerator should be installed',
+            'Install and enable a <strong>PHP accelerator</strong> like APC (highly recommended).'
+        );
+
+        $this->addPhpIniRecommendation('short_open_tag', false);
+
+        $this->addPhpIniRecommendation('magic_quotes_gpc', false, true);
+
+        $this->addPhpIniRecommendation('register_globals', false, true);
+
+        $this->addPhpIniRecommendation('session.auto_start', false);
+
+        $this->addRecommendation(
+            class_exists('PDO'),
+            'PDO should be installed',
+            'Install <strong>PDO</strong> (mandatory for Doctrine).'
+        );
+
+        if (class_exists('PDO')) {
+            $drivers = PDO::getAvailableDrivers();
+            $this->addRecommendation(
+                count($drivers),
+                sprintf('PDO should have some drivers installed (currently available: %s)', count($drivers) ? implode(', ', $drivers) : 'none'),
+                'Install <strong>PDO drivers</strong> (mandatory for Doctrine).'
+            );
+        }
+    }
+}

+ 14 - 0
php-symfony2-stripped/app/autoload.php

@@ -0,0 +1,14 @@
+<?php
+
+use Doctrine\Common\Annotations\AnnotationRegistry;
+
+$loader = require __DIR__.'/../vendor/autoload.php';
+
+// intl
+if (!function_exists('intl_get_error_code')) {
+    require_once __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs/functions.php';
+}
+
+AnnotationRegistry::registerLoader(array($loader, 'loadClass'));
+
+return $loader;

+ 2961 - 0
php-symfony2-stripped/app/bootstrap.php.cache

@@ -0,0 +1,2961 @@
+<?php
+
+namespace { $loader = require_once __DIR__.'/autoload.php'; }
+
+ 
+namespace Symfony\Component\HttpFoundation
+{
+class ParameterBag implements \IteratorAggregate, \Countable
+{
+protected $parameters;
+public function __construct(array $parameters = array())
+{
+$this->parameters = $parameters;
+}
+public function all()
+{
+return $this->parameters;
+}
+public function keys()
+{
+return array_keys($this->parameters);
+}
+public function replace(array $parameters = array())
+{
+$this->parameters = $parameters;
+}
+public function add(array $parameters = array())
+{
+$this->parameters = array_replace($this->parameters, $parameters);
+}
+public function get($path, $default = null, $deep = false)
+{
+if (!$deep || false === $pos = strpos($path,'[')) {
+return array_key_exists($path, $this->parameters) ? $this->parameters[$path] : $default;
+}
+$root = substr($path, 0, $pos);
+if (!array_key_exists($root, $this->parameters)) {
+return $default;
+}
+$value = $this->parameters[$root];
+$currentKey = null;
+for ($i = $pos, $c = strlen($path); $i < $c; $i++) {
+$char = $path[$i];
+if ('['=== $char) {
+if (null !== $currentKey) {
+throw new \InvalidArgumentException(sprintf('Malformed path. Unexpected "[" at position %d.', $i));
+}
+$currentKey ='';
+} elseif (']'=== $char) {
+if (null === $currentKey) {
+throw new \InvalidArgumentException(sprintf('Malformed path. Unexpected "]" at position %d.', $i));
+}
+if (!is_array($value) || !array_key_exists($currentKey, $value)) {
+return $default;
+}
+$value = $value[$currentKey];
+$currentKey = null;
+} else {
+if (null === $currentKey) {
+throw new \InvalidArgumentException(sprintf('Malformed path. Unexpected "%s" at position %d.', $char, $i));
+}
+$currentKey .= $char;
+}
+}
+if (null !== $currentKey) {
+throw new \InvalidArgumentException(sprintf('Malformed path. Path must end with "]".'));
+}
+return $value;
+}
+public function set($key, $value)
+{
+$this->parameters[$key] = $value;
+}
+public function has($key)
+{
+return array_key_exists($key, $this->parameters);
+}
+public function remove($key)
+{
+unset($this->parameters[$key]);
+}
+public function getAlpha($key, $default ='', $deep = false)
+{
+return preg_replace('/[^[:alpha:]]/','', $this->get($key, $default, $deep));
+}
+public function getAlnum($key, $default ='', $deep = false)
+{
+return preg_replace('/[^[:alnum:]]/','', $this->get($key, $default, $deep));
+}
+public function getDigits($key, $default ='', $deep = false)
+{
+return str_replace(array('-','+'),'', $this->filter($key, $default, $deep, FILTER_SANITIZE_NUMBER_INT));
+}
+public function getInt($key, $default = 0, $deep = false)
+{
+return (int) $this->get($key, $default, $deep);
+}
+public function filter($key, $default = null, $deep = false, $filter=FILTER_DEFAULT, $options=array())
+{
+$value = $this->get($key, $default, $deep);
+if (!is_array($options) && $options) {
+$options = array('flags'=> $options);
+}
+if (is_array($value) && !isset($options['flags'])) {
+$options['flags'] = FILTER_REQUIRE_ARRAY;
+}
+return filter_var($value, $filter, $options);
+}
+public function getIterator()
+{
+return new \ArrayIterator($this->parameters);
+}
+public function count()
+{
+return count($this->parameters);
+}
+}
+}
+namespace Symfony\Component\HttpFoundation
+{
+class HeaderBag implements \IteratorAggregate, \Countable
+{
+protected $headers;
+protected $cacheControl;
+public function __construct(array $headers = array())
+{
+$this->cacheControl = array();
+$this->headers = array();
+foreach ($headers as $key => $values) {
+$this->set($key, $values);
+}
+}
+public function __toString()
+{
+if (!$this->headers) {
+return'';
+}
+$max = max(array_map('strlen', array_keys($this->headers))) + 1;
+$content ='';
+ksort($this->headers);
+foreach ($this->headers as $name => $values) {
+$name = implode('-', array_map('ucfirst', explode('-', $name)));
+foreach ($values as $value) {
+$content .= sprintf("%-{$max}s %s\r\n", $name.':', $value);
+}
+}
+return $content;
+}
+public function all()
+{
+return $this->headers;
+}
+public function keys()
+{
+return array_keys($this->headers);
+}
+public function replace(array $headers = array())
+{
+$this->headers = array();
+$this->add($headers);
+}
+public function add(array $headers)
+{
+foreach ($headers as $key => $values) {
+$this->set($key, $values);
+}
+}
+public function get($key, $default = null, $first = true)
+{
+$key = strtr(strtolower($key),'_','-');
+if (!array_key_exists($key, $this->headers)) {
+if (null === $default) {
+return $first ? null : array();
+}
+return $first ? $default : array($default);
+}
+if ($first) {
+return count($this->headers[$key]) ? $this->headers[$key][0] : $default;
+}
+return $this->headers[$key];
+}
+public function set($key, $values, $replace = true)
+{
+$key = strtr(strtolower($key),'_','-');
+$values = array_values((array) $values);
+if (true === $replace || !isset($this->headers[$key])) {
+$this->headers[$key] = $values;
+} else {
+$this->headers[$key] = array_merge($this->headers[$key], $values);
+}
+if ('cache-control'=== $key) {
+$this->cacheControl = $this->parseCacheControl($values[0]);
+}
+}
+public function has($key)
+{
+return array_key_exists(strtr(strtolower($key),'_','-'), $this->headers);
+}
+public function contains($key, $value)
+{
+return in_array($value, $this->get($key, null, false));
+}
+public function remove($key)
+{
+$key = strtr(strtolower($key),'_','-');
+unset($this->headers[$key]);
+if ('cache-control'=== $key) {
+$this->cacheControl = array();
+}
+}
+public function getDate($key, \DateTime $default = null)
+{
+if (null === $value = $this->get($key)) {
+return $default;
+}
+if (false === $date = \DateTime::createFromFormat(DATE_RFC2822, $value)) {
+throw new \RuntimeException(sprintf('The %s HTTP header is not parseable (%s).', $key, $value));
+}
+return $date;
+}
+public function addCacheControlDirective($key, $value = true)
+{
+$this->cacheControl[$key] = $value;
+$this->set('Cache-Control', $this->getCacheControlHeader());
+}
+public function hasCacheControlDirective($key)
+{
+return array_key_exists($key, $this->cacheControl);
+}
+public function getCacheControlDirective($key)
+{
+return array_key_exists($key, $this->cacheControl) ? $this->cacheControl[$key] : null;
+}
+public function removeCacheControlDirective($key)
+{
+unset($this->cacheControl[$key]);
+$this->set('Cache-Control', $this->getCacheControlHeader());
+}
+public function getIterator()
+{
+return new \ArrayIterator($this->headers);
+}
+public function count()
+{
+return count($this->headers);
+}
+protected function getCacheControlHeader()
+{
+$parts = array();
+ksort($this->cacheControl);
+foreach ($this->cacheControl as $key => $value) {
+if (true === $value) {
+$parts[] = $key;
+} else {
+if (preg_match('#[^a-zA-Z0-9._-]#', $value)) {
+$value ='"'.$value.'"';
+}
+$parts[] = "$key=$value";
+}
+}
+return implode(', ', $parts);
+}
+protected function parseCacheControl($header)
+{
+$cacheControl = array();
+preg_match_all('#([a-zA-Z][a-zA-Z_-]*)\s*(?:=(?:"([^"]*)"|([^ \t",;]*)))?#', $header, $matches, PREG_SET_ORDER);
+foreach ($matches as $match) {
+$cacheControl[strtolower($match[1])] = isset($match[3]) ? $match[3] : (isset($match[2]) ? $match[2] : true);
+}
+return $cacheControl;
+}
+}
+}
+namespace Symfony\Component\HttpFoundation
+{
+use Symfony\Component\HttpFoundation\File\UploadedFile;
+class FileBag extends ParameterBag
+{
+private static $fileKeys = array('error','name','size','tmp_name','type');
+public function __construct(array $parameters = array())
+{
+$this->replace($parameters);
+}
+public function replace(array $files = array())
+{
+$this->parameters = array();
+$this->add($files);
+}
+public function set($key, $value)
+{
+if (!is_array($value) && !$value instanceof UploadedFile) {
+throw new \InvalidArgumentException('An uploaded file must be an array or an instance of UploadedFile.');
+}
+parent::set($key, $this->convertFileInformation($value));
+}
+public function add(array $files = array())
+{
+foreach ($files as $key => $file) {
+$this->set($key, $file);
+}
+}
+protected function convertFileInformation($file)
+{
+if ($file instanceof UploadedFile) {
+return $file;
+}
+$file = $this->fixPhpFilesArray($file);
+if (is_array($file)) {
+$keys = array_keys($file);
+sort($keys);
+if ($keys == self::$fileKeys) {
+if (UPLOAD_ERR_NO_FILE == $file['error']) {
+$file = null;
+} else {
+$file = new UploadedFile($file['tmp_name'], $file['name'], $file['type'], $file['size'], $file['error']);
+}
+} else {
+$file = array_map(array($this,'convertFileInformation'), $file);
+}
+}
+return $file;
+}
+protected function fixPhpFilesArray($data)
+{
+if (!is_array($data)) {
+return $data;
+}
+$keys = array_keys($data);
+sort($keys);
+if (self::$fileKeys != $keys || !isset($data['name']) || !is_array($data['name'])) {
+return $data;
+}
+$files = $data;
+foreach (self::$fileKeys as $k) {
+unset($files[$k]);
+}
+foreach (array_keys($data['name']) as $key) {
+$files[$key] = $this->fixPhpFilesArray(array('error'=> $data['error'][$key],'name'=> $data['name'][$key],'type'=> $data['type'][$key],'tmp_name'=> $data['tmp_name'][$key],'size'=> $data['size'][$key]
+));
+}
+return $files;
+}
+}
+}
+namespace Symfony\Component\HttpFoundation
+{
+class ServerBag extends ParameterBag
+{
+public function getHeaders()
+{
+$headers = array();
+$contentHeaders = array('CONTENT_LENGTH'=> true,'CONTENT_MD5'=> true,'CONTENT_TYPE'=> true);
+foreach ($this->parameters as $key => $value) {
+if (0 === strpos($key,'HTTP_')) {
+$headers[substr($key, 5)] = $value;
+}
+elseif (isset($contentHeaders[$key])) {
+$headers[$key] = $value;
+}
+}
+if (isset($this->parameters['PHP_AUTH_USER'])) {
+$headers['PHP_AUTH_USER'] = $this->parameters['PHP_AUTH_USER'];
+$headers['PHP_AUTH_PW'] = isset($this->parameters['PHP_AUTH_PW']) ? $this->parameters['PHP_AUTH_PW'] :'';
+} else {
+$authorizationHeader = null;
+if (isset($this->parameters['HTTP_AUTHORIZATION'])) {
+$authorizationHeader = $this->parameters['HTTP_AUTHORIZATION'];
+} elseif (isset($this->parameters['REDIRECT_HTTP_AUTHORIZATION'])) {
+$authorizationHeader = $this->parameters['REDIRECT_HTTP_AUTHORIZATION'];
+}
+if (null !== $authorizationHeader) {
+if (0 === stripos($authorizationHeader,'basic')) {
+$exploded = explode(':', base64_decode(substr($authorizationHeader, 6)));
+if (count($exploded) == 2) {
+list($headers['PHP_AUTH_USER'], $headers['PHP_AUTH_PW']) = $exploded;
+}
+} elseif (empty($this->parameters['PHP_AUTH_DIGEST']) && (0 === stripos($authorizationHeader,'digest'))) {
+$headers['PHP_AUTH_DIGEST'] = $authorizationHeader;
+$this->parameters['PHP_AUTH_DIGEST'] = $authorizationHeader;
+}
+}
+}
+if (isset($headers['PHP_AUTH_USER'])) {
+$headers['AUTHORIZATION'] ='Basic '.base64_encode($headers['PHP_AUTH_USER'].':'.$headers['PHP_AUTH_PW']);
+} elseif (isset($headers['PHP_AUTH_DIGEST'])) {
+$headers['AUTHORIZATION'] = $headers['PHP_AUTH_DIGEST'];
+}
+return $headers;
+}
+}
+}
+namespace Symfony\Component\HttpFoundation
+{
+use Symfony\Component\HttpFoundation\Session\SessionInterface;
+class Request
+{
+const HEADER_CLIENT_IP ='client_ip';
+const HEADER_CLIENT_HOST ='client_host';
+const HEADER_CLIENT_PROTO ='client_proto';
+const HEADER_CLIENT_PORT ='client_port';
+protected static $trustedProxies = array();
+protected static $trustedHostPatterns = array();
+protected static $trustedHosts = array();
+protected static $trustedHeaders = array(
+self::HEADER_CLIENT_IP =>'X_FORWARDED_FOR',
+self::HEADER_CLIENT_HOST =>'X_FORWARDED_HOST',
+self::HEADER_CLIENT_PROTO =>'X_FORWARDED_PROTO',
+self::HEADER_CLIENT_PORT =>'X_FORWARDED_PORT',
+);
+protected static $httpMethodParameterOverride = false;
+public $attributes;
+public $request;
+public $query;
+public $server;
+public $files;
+public $cookies;
+public $headers;
+protected $content;
+protected $languages;
+protected $charsets;
+protected $acceptableContentTypes;
+protected $pathInfo;
+protected $requestUri;
+protected $baseUrl;
+protected $basePath;
+protected $method;
+protected $format;
+protected $session;
+protected $locale;
+protected $defaultLocale ='en';
+protected static $formats;
+public function __construct(array $query = array(), array $request = array(), array $attributes = array(), array $cookies = array(), array $files = array(), array $server = array(), $content = null)
+{
+$this->initialize($query, $request, $attributes, $cookies, $files, $server, $content);
+}
+public function initialize(array $query = array(), array $request = array(), array $attributes = array(), array $cookies = array(), array $files = array(), array $server = array(), $content = null)
+{
+$this->request = new ParameterBag($request);
+$this->query = new ParameterBag($query);
+$this->attributes = new ParameterBag($attributes);
+$this->cookies = new ParameterBag($cookies);
+$this->files = new FileBag($files);
+$this->server = new ServerBag($server);
+$this->headers = new HeaderBag($this->server->getHeaders());
+$this->content = $content;
+$this->languages = null;
+$this->charsets = null;
+$this->acceptableContentTypes = null;
+$this->pathInfo = null;
+$this->requestUri = null;
+$this->baseUrl = null;
+$this->basePath = null;
+$this->method = null;
+$this->format = null;
+}
+public static function createFromGlobals()
+{
+$request = new static($_GET, $_POST, array(), $_COOKIE, $_FILES, $_SERVER);
+if (0 === strpos($request->headers->get('CONTENT_TYPE'),'application/x-www-form-urlencoded')
+&& in_array(strtoupper($request->server->get('REQUEST_METHOD','GET')), array('PUT','DELETE','PATCH'))
+) {
+parse_str($request->getContent(), $data);
+$request->request = new ParameterBag($data);
+}
+return $request;
+}
+public static function create($uri, $method ='GET', $parameters = array(), $cookies = array(), $files = array(), $server = array(), $content = null)
+{
+$server = array_replace(array('SERVER_NAME'=>'localhost','SERVER_PORT'=> 80,'HTTP_HOST'=>'localhost','HTTP_USER_AGENT'=>'Symfony/2.X','HTTP_ACCEPT'=>'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','HTTP_ACCEPT_LANGUAGE'=>'en-us,en;q=0.5','HTTP_ACCEPT_CHARSET'=>'ISO-8859-1,utf-8;q=0.7,*;q=0.7','REMOTE_ADDR'=>'127.0.0.1','SCRIPT_NAME'=>'','SCRIPT_FILENAME'=>'','SERVER_PROTOCOL'=>'HTTP/1.1','REQUEST_TIME'=> time(),
+), $server);
+$server['PATH_INFO'] ='';
+$server['REQUEST_METHOD'] = strtoupper($method);
+$components = parse_url($uri);
+if (isset($components['host'])) {
+$server['SERVER_NAME'] = $components['host'];
+$server['HTTP_HOST'] = $components['host'];
+}
+if (isset($components['scheme'])) {
+if ('https'=== $components['scheme']) {
+$server['HTTPS'] ='on';
+$server['SERVER_PORT'] = 443;
+} else {
+unset($server['HTTPS']);
+$server['SERVER_PORT'] = 80;
+}
+}
+if (isset($components['port'])) {
+$server['SERVER_PORT'] = $components['port'];
+$server['HTTP_HOST'] = $server['HTTP_HOST'].':'.$components['port'];
+}
+if (isset($components['user'])) {
+$server['PHP_AUTH_USER'] = $components['user'];
+}
+if (isset($components['pass'])) {
+$server['PHP_AUTH_PW'] = $components['pass'];
+}
+if (!isset($components['path'])) {
+$components['path'] ='/';
+}
+switch (strtoupper($method)) {
+case'POST':
+case'PUT':
+case'DELETE':
+if (!isset($server['CONTENT_TYPE'])) {
+$server['CONTENT_TYPE'] ='application/x-www-form-urlencoded';
+}
+case'PATCH':
+$request = $parameters;
+$query = array();
+break;
+default:
+$request = array();
+$query = $parameters;
+break;
+}
+$queryString ='';
+if (isset($components['query'])) {
+parse_str(html_entity_decode($components['query']), $qs);
+if ($query) {
+$query = array_replace($qs, $query);
+$queryString = http_build_query($query,'','&');
+} else {
+$query = $qs;
+$queryString = $components['query'];
+}
+} elseif ($query) {
+$queryString = http_build_query($query,'','&');
+}
+$server['REQUEST_URI'] = $components['path'].(''!== $queryString ?'?'.$queryString :'');
+$server['QUERY_STRING'] = $queryString;
+return new static($query, $request, array(), $cookies, $files, $server, $content);
+}
+public function duplicate(array $query = null, array $request = null, array $attributes = null, array $cookies = null, array $files = null, array $server = null)
+{
+$dup = clone $this;
+if ($query !== null) {
+$dup->query = new ParameterBag($query);
+}
+if ($request !== null) {
+$dup->request = new ParameterBag($request);
+}
+if ($attributes !== null) {
+$dup->attributes = new ParameterBag($attributes);
+}
+if ($cookies !== null) {
+$dup->cookies = new ParameterBag($cookies);
+}
+if ($files !== null) {
+$dup->files = new FileBag($files);
+}
+if ($server !== null) {
+$dup->server = new ServerBag($server);
+$dup->headers = new HeaderBag($dup->server->getHeaders());
+}
+$dup->languages = null;
+$dup->charsets = null;
+$dup->acceptableContentTypes = null;
+$dup->pathInfo = null;
+$dup->requestUri = null;
+$dup->baseUrl = null;
+$dup->basePath = null;
+$dup->method = null;
+$dup->format = null;
+if (!$dup->get('_format') && $this->get('_format')) {
+$dup->attributes->set('_format', $this->get('_format'));
+}
+if (!$dup->getRequestFormat(null)) {
+$dup->setRequestFormat($format = $this->getRequestFormat(null));
+}
+return $dup;
+}
+public function __clone()
+{
+$this->query = clone $this->query;
+$this->request = clone $this->request;
+$this->attributes = clone $this->attributes;
+$this->cookies = clone $this->cookies;
+$this->files = clone $this->files;
+$this->server = clone $this->server;
+$this->headers = clone $this->headers;
+}
+public function __toString()
+{
+return
+sprintf('%s %s %s', $this->getMethod(), $this->getRequestUri(), $this->server->get('SERVER_PROTOCOL'))."\r\n".
+$this->headers."\r\n".
+$this->getContent();
+}
+public function overrideGlobals()
+{
+$_GET = $this->query->all();
+$_POST = $this->request->all();
+$_SERVER = $this->server->all();
+$_COOKIE = $this->cookies->all();
+foreach ($this->headers->all() as $key => $value) {
+$key = strtoupper(str_replace('-','_', $key));
+if (in_array($key, array('CONTENT_TYPE','CONTENT_LENGTH'))) {
+$_SERVER[$key] = implode(', ', $value);
+} else {
+$_SERVER['HTTP_'.$key] = implode(', ', $value);
+}
+}
+$request = array('g'=> $_GET,'p'=> $_POST,'c'=> $_COOKIE);
+$requestOrder = ini_get('request_order') ?: ini_get('variable_order');
+$requestOrder = preg_replace('#[^cgp]#','', strtolower($requestOrder)) ?:'gp';
+$_REQUEST = array();
+foreach (str_split($requestOrder) as $order) {
+$_REQUEST = array_merge($_REQUEST, $request[$order]);
+}
+}
+public static function setTrustedProxies(array $proxies)
+{
+self::$trustedProxies = $proxies;
+}
+public static function getTrustedProxies()
+{
+return self::$trustedProxies;
+}
+public static function setTrustedHosts(array $hostPatterns)
+{
+self::$trustedHostPatterns = array_map(function ($hostPattern) {
+return sprintf('{%s}i', str_replace('}','\\}', $hostPattern));
+}, $hostPatterns);
+self::$trustedHosts = array();
+}
+public static function getTrustedHosts()
+{
+return self::$trustedHostPatterns;
+}
+public static function setTrustedHeaderName($key, $value)
+{
+if (!array_key_exists($key, self::$trustedHeaders)) {
+throw new \InvalidArgumentException(sprintf('Unable to set the trusted header name for key "%s".', $key));
+}
+self::$trustedHeaders[$key] = $value;
+}
+public static function getTrustedHeaderName($key)
+{
+if (!array_key_exists($key, self::$trustedHeaders)) {
+throw new \InvalidArgumentException(sprintf('Unable to get the trusted header name for key "%s".', $key));
+}
+return self::$trustedHeaders[$key];
+}
+public static function normalizeQueryString($qs)
+{
+if (''== $qs) {
+return'';
+}
+$parts = array();
+$order = array();
+foreach (explode('&', $qs) as $param) {
+if (''=== $param ||'='=== $param[0]) {
+continue;
+}
+$keyValuePair = explode('=', $param, 2);
+$parts[] = isset($keyValuePair[1]) ?
+rawurlencode(urldecode($keyValuePair[0])).'='.rawurlencode(urldecode($keyValuePair[1])) :
+rawurlencode(urldecode($keyValuePair[0]));
+$order[] = urldecode($keyValuePair[0]);
+}
+array_multisort($order, SORT_ASC, $parts);
+return implode('&', $parts);
+}
+public static function enableHttpMethodParameterOverride()
+{
+self::$httpMethodParameterOverride = true;
+}
+public static function getHttpMethodParameterOverride()
+{
+return self::$httpMethodParameterOverride;
+}
+public function get($key, $default = null, $deep = false)
+{
+return $this->query->get($key, $this->attributes->get($key, $this->request->get($key, $default, $deep), $deep), $deep);
+}
+public function getSession()
+{
+return $this->session;
+}
+public function hasPreviousSession()
+{
+return $this->hasSession() && $this->cookies->has($this->session->getName());
+}
+public function hasSession()
+{
+return null !== $this->session;
+}
+public function setSession(SessionInterface $session)
+{
+$this->session = $session;
+}
+public function getClientIps()
+{
+$ip = $this->server->get('REMOTE_ADDR');
+if (!self::$trustedProxies) {
+return array($ip);
+}
+if (!self::$trustedHeaders[self::HEADER_CLIENT_IP] || !$this->headers->has(self::$trustedHeaders[self::HEADER_CLIENT_IP])) {
+return array($ip);
+}
+$clientIps = array_map('trim', explode(',', $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_IP])));
+$clientIps[] = $ip;
+$trustedProxies = !self::$trustedProxies ? array($ip) : self::$trustedProxies;
+$ip = $clientIps[0];
+foreach ($clientIps as $key => $clientIp) {
+if (IpUtils::checkIp($clientIp, $trustedProxies)) {
+unset($clientIps[$key]);
+continue;
+}
+}
+return $clientIps ? array_reverse($clientIps) : array($ip);
+}
+public function getClientIp()
+{
+$ipAddresses = $this->getClientIps();
+return $ipAddresses[0];
+}
+public function getScriptName()
+{
+return $this->server->get('SCRIPT_NAME', $this->server->get('ORIG_SCRIPT_NAME',''));
+}
+public function getPathInfo()
+{
+if (null === $this->pathInfo) {
+$this->pathInfo = $this->preparePathInfo();
+}
+return $this->pathInfo;
+}
+public function getBasePath()
+{
+if (null === $this->basePath) {
+$this->basePath = $this->prepareBasePath();
+}
+return $this->basePath;
+}
+public function getBaseUrl()
+{
+if (null === $this->baseUrl) {
+$this->baseUrl = $this->prepareBaseUrl();
+}
+return $this->baseUrl;
+}
+public function getScheme()
+{
+return $this->isSecure() ?'https':'http';
+}
+public function getPort()
+{
+if (self::$trustedProxies) {
+if (self::$trustedHeaders[self::HEADER_CLIENT_PORT] && $port = $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_PORT])) {
+return $port;
+}
+if (self::$trustedHeaders[self::HEADER_CLIENT_PROTO] &&'https'=== $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_PROTO],'http')) {
+return 443;
+}
+}
+if ($host = $this->headers->get('HOST')) {
+if (false !== $pos = strrpos($host,':')) {
+return intval(substr($host, $pos + 1));
+}
+return'https'=== $this->getScheme() ? 443 : 80;
+}
+return $this->server->get('SERVER_PORT');
+}
+public function getUser()
+{
+return $this->server->get('PHP_AUTH_USER');
+}
+public function getPassword()
+{
+return $this->server->get('PHP_AUTH_PW');
+}
+public function getUserInfo()
+{
+$userinfo = $this->getUser();
+$pass = $this->getPassword();
+if (''!= $pass) {
+$userinfo .= ":$pass";
+}
+return $userinfo;
+}
+public function getHttpHost()
+{
+$scheme = $this->getScheme();
+$port = $this->getPort();
+if (('http'== $scheme && $port == 80) || ('https'== $scheme && $port == 443)) {
+return $this->getHost();
+}
+return $this->getHost().':'.$port;
+}
+public function getRequestUri()
+{
+if (null === $this->requestUri) {
+$this->requestUri = $this->prepareRequestUri();
+}
+return $this->requestUri;
+}
+public function getSchemeAndHttpHost()
+{
+return $this->getScheme().'://'.$this->getHttpHost();
+}
+public function getUri()
+{
+if (null !== $qs = $this->getQueryString()) {
+$qs ='?'.$qs;
+}
+return $this->getSchemeAndHttpHost().$this->getBaseUrl().$this->getPathInfo().$qs;
+}
+public function getUriForPath($path)
+{
+return $this->getSchemeAndHttpHost().$this->getBaseUrl().$path;
+}
+public function getQueryString()
+{
+$qs = static::normalizeQueryString($this->server->get('QUERY_STRING'));
+return''=== $qs ? null : $qs;
+}
+public function isSecure()
+{
+if (self::$trustedProxies && self::$trustedHeaders[self::HEADER_CLIENT_PROTO] && $proto = $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_PROTO])) {
+return in_array(strtolower($proto), array('https','on','1'));
+}
+return'on'== strtolower($this->server->get('HTTPS')) || 1 == $this->server->get('HTTPS');
+}
+public function getHost()
+{
+if (self::$trustedProxies && self::$trustedHeaders[self::HEADER_CLIENT_HOST] && $host = $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_HOST])) {
+$elements = explode(',', $host);
+$host = $elements[count($elements) - 1];
+} elseif (!$host = $this->headers->get('HOST')) {
+if (!$host = $this->server->get('SERVER_NAME')) {
+$host = $this->server->get('SERVER_ADDR','');
+}
+}
+$host = strtolower(preg_replace('/:\d+$/','', trim($host)));
+if ($host && !preg_match('/^\[?(?:[a-zA-Z0-9-:\]_]+\.?)+$/', $host)) {
+throw new \UnexpectedValueException('Invalid Host "'.$host.'"');
+}
+if (count(self::$trustedHostPatterns) > 0) {
+if (in_array($host, self::$trustedHosts)) {
+return $host;
+}
+foreach (self::$trustedHostPatterns as $pattern) {
+if (preg_match($pattern, $host)) {
+self::$trustedHosts[] = $host;
+return $host;
+}
+}
+throw new \UnexpectedValueException('Untrusted Host "'.$host.'"');
+}
+return $host;
+}
+public function setMethod($method)
+{
+$this->method = null;
+$this->server->set('REQUEST_METHOD', $method);
+}
+public function getMethod()
+{
+if (null === $this->method) {
+$this->method = strtoupper($this->server->get('REQUEST_METHOD','GET'));
+if ('POST'=== $this->method) {
+if ($method = $this->headers->get('X-HTTP-METHOD-OVERRIDE')) {
+$this->method = strtoupper($method);
+} elseif (self::$httpMethodParameterOverride) {
+$this->method = strtoupper($this->request->get('_method', $this->query->get('_method','POST')));
+}
+}
+}
+return $this->method;
+}
+public function getRealMethod()
+{
+return strtoupper($this->server->get('REQUEST_METHOD','GET'));
+}
+public function getMimeType($format)
+{
+if (null === static::$formats) {
+static::initializeFormats();
+}
+return isset(static::$formats[$format]) ? static::$formats[$format][0] : null;
+}
+public function getFormat($mimeType)
+{
+if (false !== $pos = strpos($mimeType,';')) {
+$mimeType = substr($mimeType, 0, $pos);
+}
+if (null === static::$formats) {
+static::initializeFormats();
+}
+foreach (static::$formats as $format => $mimeTypes) {
+if (in_array($mimeType, (array) $mimeTypes)) {
+return $format;
+}
+}
+return null;
+}
+public function setFormat($format, $mimeTypes)
+{
+if (null === static::$formats) {
+static::initializeFormats();
+}
+static::$formats[$format] = is_array($mimeTypes) ? $mimeTypes : array($mimeTypes);
+}
+public function getRequestFormat($default ='html')
+{
+if (null === $this->format) {
+$this->format = $this->get('_format', $default);
+}
+return $this->format;
+}
+public function setRequestFormat($format)
+{
+$this->format = $format;
+}
+public function getContentType()
+{
+return $this->getFormat($this->headers->get('CONTENT_TYPE'));
+}
+public function setDefaultLocale($locale)
+{
+$this->defaultLocale = $locale;
+if (null === $this->locale) {
+$this->setPhpDefaultLocale($locale);
+}
+}
+public function setLocale($locale)
+{
+$this->setPhpDefaultLocale($this->locale = $locale);
+}
+public function getLocale()
+{
+return null === $this->locale ? $this->defaultLocale : $this->locale;
+}
+public function isMethod($method)
+{
+return $this->getMethod() === strtoupper($method);
+}
+public function isMethodSafe()
+{
+return in_array($this->getMethod(), array('GET','HEAD'));
+}
+public function getContent($asResource = false)
+{
+if (false === $this->content || (true === $asResource && null !== $this->content)) {
+throw new \LogicException('getContent() can only be called once when using the resource return type.');
+}
+if (true === $asResource) {
+$this->content = false;
+return fopen('php://input','rb');
+}
+if (null === $this->content) {
+$this->content = file_get_contents('php://input');
+}
+return $this->content;
+}
+public function getETags()
+{
+return preg_split('/\s*,\s*/', $this->headers->get('if_none_match'), null, PREG_SPLIT_NO_EMPTY);
+}
+public function isNoCache()
+{
+return $this->headers->hasCacheControlDirective('no-cache') ||'no-cache'== $this->headers->get('Pragma');
+}
+public function getPreferredLanguage(array $locales = null)
+{
+$preferredLanguages = $this->getLanguages();
+if (empty($locales)) {
+return isset($preferredLanguages[0]) ? $preferredLanguages[0] : null;
+}
+if (!$preferredLanguages) {
+return $locales[0];
+}
+$extendedPreferredLanguages = array();
+foreach ($preferredLanguages as $language) {
+$extendedPreferredLanguages[] = $language;
+if (false !== $position = strpos($language,'_')) {
+$superLanguage = substr($language, 0, $position);
+if (!in_array($superLanguage, $preferredLanguages)) {
+$extendedPreferredLanguages[] = $superLanguage;
+}
+}
+}
+$preferredLanguages = array_values(array_intersect($extendedPreferredLanguages, $locales));
+return isset($preferredLanguages[0]) ? $preferredLanguages[0] : $locales[0];
+}
+public function getLanguages()
+{
+if (null !== $this->languages) {
+return $this->languages;
+}
+$languages = AcceptHeader::fromString($this->headers->get('Accept-Language'))->all();
+$this->languages = array();
+foreach (array_keys($languages) as $lang) {
+if (strstr($lang,'-')) {
+$codes = explode('-', $lang);
+if ($codes[0] =='i') {
+if (count($codes) > 1) {
+$lang = $codes[1];
+}
+} else {
+for ($i = 0, $max = count($codes); $i < $max; $i++) {
+if ($i == 0) {
+$lang = strtolower($codes[0]);
+} else {
+$lang .='_'.strtoupper($codes[$i]);
+}
+}
+}
+}
+$this->languages[] = $lang;
+}
+return $this->languages;
+}
+public function getCharsets()
+{
+if (null !== $this->charsets) {
+return $this->charsets;
+}
+return $this->charsets = array_keys(AcceptHeader::fromString($this->headers->get('Accept-Charset'))->all());
+}
+public function getAcceptableContentTypes()
+{
+if (null !== $this->acceptableContentTypes) {
+return $this->acceptableContentTypes;
+}
+return $this->acceptableContentTypes = array_keys(AcceptHeader::fromString($this->headers->get('Accept'))->all());
+}
+public function isXmlHttpRequest()
+{
+return'XMLHttpRequest'== $this->headers->get('X-Requested-With');
+}
+protected function prepareRequestUri()
+{
+$requestUri ='';
+if ($this->headers->has('X_ORIGINAL_URL')) {
+$requestUri = $this->headers->get('X_ORIGINAL_URL');
+$this->headers->remove('X_ORIGINAL_URL');
+$this->server->remove('HTTP_X_ORIGINAL_URL');
+$this->server->remove('UNENCODED_URL');
+$this->server->remove('IIS_WasUrlRewritten');
+} elseif ($this->headers->has('X_REWRITE_URL')) {
+$requestUri = $this->headers->get('X_REWRITE_URL');
+$this->headers->remove('X_REWRITE_URL');
+} elseif ($this->server->get('IIS_WasUrlRewritten') =='1'&& $this->server->get('UNENCODED_URL') !='') {
+$requestUri = $this->server->get('UNENCODED_URL');
+$this->server->remove('UNENCODED_URL');
+$this->server->remove('IIS_WasUrlRewritten');
+} elseif ($this->server->has('REQUEST_URI')) {
+$requestUri = $this->server->get('REQUEST_URI');
+$schemeAndHttpHost = $this->getSchemeAndHttpHost();
+if (strpos($requestUri, $schemeAndHttpHost) === 0) {
+$requestUri = substr($requestUri, strlen($schemeAndHttpHost));
+}
+} elseif ($this->server->has('ORIG_PATH_INFO')) {
+$requestUri = $this->server->get('ORIG_PATH_INFO');
+if (''!= $this->server->get('QUERY_STRING')) {
+$requestUri .='?'.$this->server->get('QUERY_STRING');
+}
+$this->server->remove('ORIG_PATH_INFO');
+}
+$this->server->set('REQUEST_URI', $requestUri);
+return $requestUri;
+}
+protected function prepareBaseUrl()
+{
+$filename = basename($this->server->get('SCRIPT_FILENAME'));
+if (basename($this->server->get('SCRIPT_NAME')) === $filename) {
+$baseUrl = $this->server->get('SCRIPT_NAME');
+} elseif (basename($this->server->get('PHP_SELF')) === $filename) {
+$baseUrl = $this->server->get('PHP_SELF');
+} elseif (basename($this->server->get('ORIG_SCRIPT_NAME')) === $filename) {
+$baseUrl = $this->server->get('ORIG_SCRIPT_NAME'); } else {
+$path = $this->server->get('PHP_SELF','');
+$file = $this->server->get('SCRIPT_FILENAME','');
+$segs = explode('/', trim($file,'/'));
+$segs = array_reverse($segs);
+$index = 0;
+$last = count($segs);
+$baseUrl ='';
+do {
+$seg = $segs[$index];
+$baseUrl ='/'.$seg.$baseUrl;
+++$index;
+} while ($last > $index && (false !== $pos = strpos($path, $baseUrl)) && 0 != $pos);
+}
+$requestUri = $this->getRequestUri();
+if ($baseUrl && false !== $prefix = $this->getUrlencodedPrefix($requestUri, $baseUrl)) {
+return $prefix;
+}
+if ($baseUrl && false !== $prefix = $this->getUrlencodedPrefix($requestUri, dirname($baseUrl))) {
+return rtrim($prefix,'/');
+}
+$truncatedRequestUri = $requestUri;
+if (false !== $pos = strpos($requestUri,'?')) {
+$truncatedRequestUri = substr($requestUri, 0, $pos);
+}
+$basename = basename($baseUrl);
+if (empty($basename) || !strpos(rawurldecode($truncatedRequestUri), $basename)) {
+return'';
+}
+if (strlen($requestUri) >= strlen($baseUrl) && (false !== $pos = strpos($requestUri, $baseUrl)) && $pos !== 0) {
+$baseUrl = substr($requestUri, 0, $pos + strlen($baseUrl));
+}
+return rtrim($baseUrl,'/');
+}
+protected function prepareBasePath()
+{
+$filename = basename($this->server->get('SCRIPT_FILENAME'));
+$baseUrl = $this->getBaseUrl();
+if (empty($baseUrl)) {
+return'';
+}
+if (basename($baseUrl) === $filename) {
+$basePath = dirname($baseUrl);
+} else {
+$basePath = $baseUrl;
+}
+if ('\\'=== DIRECTORY_SEPARATOR) {
+$basePath = str_replace('\\','/', $basePath);
+}
+return rtrim($basePath,'/');
+}
+protected function preparePathInfo()
+{
+$baseUrl = $this->getBaseUrl();
+if (null === ($requestUri = $this->getRequestUri())) {
+return'/';
+}
+$pathInfo ='/';
+if ($pos = strpos($requestUri,'?')) {
+$requestUri = substr($requestUri, 0, $pos);
+}
+if (null !== $baseUrl && false === $pathInfo = substr($requestUri, strlen($baseUrl))) {
+return'/';
+} elseif (null === $baseUrl) {
+return $requestUri;
+}
+return (string) $pathInfo;
+}
+protected static function initializeFormats()
+{
+static::$formats = array('html'=> array('text/html','application/xhtml+xml'),'txt'=> array('text/plain'),'js'=> array('application/javascript','application/x-javascript','text/javascript'),'css'=> array('text/css'),'json'=> array('application/json','application/x-json'),'xml'=> array('text/xml','application/xml','application/x-xml'),'rdf'=> array('application/rdf+xml'),'atom'=> array('application/atom+xml'),'rss'=> array('application/rss+xml'),
+);
+}
+private function setPhpDefaultLocale($locale)
+{
+try {
+if (class_exists('Locale', false)) {
+\Locale::setDefault($locale);
+}
+} catch (\Exception $e) {
+}
+}
+private function getUrlencodedPrefix($string, $prefix)
+{
+if (0 !== strpos(rawurldecode($string), $prefix)) {
+return false;
+}
+$len = strlen($prefix);
+if (preg_match("#^(%[[:xdigit:]]{2}|.){{$len}}#", $string, $match)) {
+return $match[0];
+}
+return false;
+}
+}
+}
+namespace Symfony\Component\HttpFoundation
+{
+class Response
+{
+public $headers;
+protected $content;
+protected $version;
+protected $statusCode;
+protected $statusText;
+protected $charset;
+public static $statusTexts = array(
+100 =>'Continue',
+101 =>'Switching Protocols',
+102 =>'Processing', 200 =>'OK',
+201 =>'Created',
+202 =>'Accepted',
+203 =>'Non-Authoritative Information',
+204 =>'No Content',
+205 =>'Reset Content',
+206 =>'Partial Content',
+207 =>'Multi-Status', 208 =>'Already Reported', 226 =>'IM Used', 300 =>'Multiple Choices',
+301 =>'Moved Permanently',
+302 =>'Found',
+303 =>'See Other',
+304 =>'Not Modified',
+305 =>'Use Proxy',
+306 =>'Reserved',
+307 =>'Temporary Redirect',
+308 =>'Permanent Redirect', 400 =>'Bad Request',
+401 =>'Unauthorized',
+402 =>'Payment Required',
+403 =>'Forbidden',
+404 =>'Not Found',
+405 =>'Method Not Allowed',
+406 =>'Not Acceptable',
+407 =>'Proxy Authentication Required',
+408 =>'Request Timeout',
+409 =>'Conflict',
+410 =>'Gone',
+411 =>'Length Required',
+412 =>'Precondition Failed',
+413 =>'Request Entity Too Large',
+414 =>'Request-URI Too Long',
+415 =>'Unsupported Media Type',
+416 =>'Requested Range Not Satisfiable',
+417 =>'Expectation Failed',
+418 =>'I\'m a teapot', 422 =>'Unprocessable Entity', 423 =>'Locked', 424 =>'Failed Dependency', 425 =>'Reserved for WebDAV advanced collections expired proposal', 426 =>'Upgrade Required', 428 =>'Precondition Required', 429 =>'Too Many Requests', 431 =>'Request Header Fields Too Large', 500 =>'Internal Server Error',
+501 =>'Not Implemented',
+502 =>'Bad Gateway',
+503 =>'Service Unavailable',
+504 =>'Gateway Timeout',
+505 =>'HTTP Version Not Supported',
+506 =>'Variant Also Negotiates (Experimental)', 507 =>'Insufficient Storage', 508 =>'Loop Detected', 510 =>'Not Extended', 511 =>'Network Authentication Required', );
+public function __construct($content ='', $status = 200, $headers = array())
+{
+$this->headers = new ResponseHeaderBag($headers);
+$this->setContent($content);
+$this->setStatusCode($status);
+$this->setProtocolVersion('1.0');
+if (!$this->headers->has('Date')) {
+$this->setDate(new \DateTime(null, new \DateTimeZone('UTC')));
+}
+}
+public static function create($content ='', $status = 200, $headers = array())
+{
+return new static($content, $status, $headers);
+}
+public function __toString()
+{
+return
+sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText)."\r\n".
+$this->headers."\r\n".
+$this->getContent();
+}
+public function __clone()
+{
+$this->headers = clone $this->headers;
+}
+public function prepare(Request $request)
+{
+$headers = $this->headers;
+if ($this->isInformational() || in_array($this->statusCode, array(204, 304))) {
+$this->setContent(null);
+}
+if (!$headers->has('Content-Type')) {
+$format = $request->getRequestFormat();
+if (null !== $format && $mimeType = $request->getMimeType($format)) {
+$headers->set('Content-Type', $mimeType);
+}
+}
+$charset = $this->charset ?:'UTF-8';
+if (!$headers->has('Content-Type')) {
+$headers->set('Content-Type','text/html; charset='.$charset);
+} elseif (0 === strpos($headers->get('Content-Type'),'text/') && false === strpos($headers->get('Content-Type'),'charset')) {
+$headers->set('Content-Type', $headers->get('Content-Type').'; charset='.$charset);
+}
+if ($headers->has('Transfer-Encoding')) {
+$headers->remove('Content-Length');
+}
+if ($request->isMethod('HEAD')) {
+$length = $headers->get('Content-Length');
+$this->setContent(null);
+if ($length) {
+$headers->set('Content-Length', $length);
+}
+}
+if ('HTTP/1.0'!= $request->server->get('SERVER_PROTOCOL')) {
+$this->setProtocolVersion('1.1');
+}
+if ('1.0'== $this->getProtocolVersion() &&'no-cache'== $this->headers->get('Cache-Control')) {
+$this->headers->set('pragma','no-cache');
+$this->headers->set('expires', -1);
+}
+$this->ensureIEOverSSLCompatibility($request);
+return $this;
+}
+public function sendHeaders()
+{
+if (headers_sent()) {
+return $this;
+}
+header(sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText));
+foreach ($this->headers->allPreserveCase() as $name => $values) {
+foreach ($values as $value) {
+header($name.': '.$value, false);
+}
+}
+foreach ($this->headers->getCookies() as $cookie) {
+setcookie($cookie->getName(), $cookie->getValue(), $cookie->getExpiresTime(), $cookie->getPath(), $cookie->getDomain(), $cookie->isSecure(), $cookie->isHttpOnly());
+}
+return $this;
+}
+public function sendContent()
+{
+echo $this->content;
+return $this;
+}
+public function send()
+{
+$this->sendHeaders();
+$this->sendContent();
+if (function_exists('fastcgi_finish_request')) {
+fastcgi_finish_request();
+} elseif ('cli'!== PHP_SAPI) {
+$previous = null;
+$obStatus = ob_get_status(1);
+while (($level = ob_get_level()) > 0 && $level !== $previous) {
+$previous = $level;
+if ($obStatus[$level - 1]) {
+if (version_compare(PHP_VERSION,'5.4','>=')) {
+if (isset($obStatus[$level - 1]['flags']) && ($obStatus[$level - 1]['flags'] & PHP_OUTPUT_HANDLER_REMOVABLE)) {
+ob_end_flush();
+}
+} else {
+if (isset($obStatus[$level - 1]['del']) && $obStatus[$level - 1]['del']) {
+ob_end_flush();
+}
+}
+}
+}
+flush();
+}
+return $this;
+}
+public function setContent($content)
+{
+if (null !== $content && !is_string($content) && !is_numeric($content) && !is_callable(array($content,'__toString'))) {
+throw new \UnexpectedValueException(sprintf('The Response content must be a string or object implementing __toString(), "%s" given.', gettype($content)));
+}
+$this->content = (string) $content;
+return $this;
+}
+public function getContent()
+{
+return $this->content;
+}
+public function setProtocolVersion($version)
+{
+$this->version = $version;
+return $this;
+}
+public function getProtocolVersion()
+{
+return $this->version;
+}
+public function setStatusCode($code, $text = null)
+{
+$this->statusCode = $code = (int) $code;
+if ($this->isInvalid()) {
+throw new \InvalidArgumentException(sprintf('The HTTP status code "%s" is not valid.', $code));
+}
+if (null === $text) {
+$this->statusText = isset(self::$statusTexts[$code]) ? self::$statusTexts[$code] :'';
+return $this;
+}
+if (false === $text) {
+$this->statusText ='';
+return $this;
+}
+$this->statusText = $text;
+return $this;
+}
+public function getStatusCode()
+{
+return $this->statusCode;
+}
+public function setCharset($charset)
+{
+$this->charset = $charset;
+return $this;
+}
+public function getCharset()
+{
+return $this->charset;
+}
+public function isCacheable()
+{
+if (!in_array($this->statusCode, array(200, 203, 300, 301, 302, 404, 410))) {
+return false;
+}
+if ($this->headers->hasCacheControlDirective('no-store') || $this->headers->getCacheControlDirective('private')) {
+return false;
+}
+return $this->isValidateable() || $this->isFresh();
+}
+public function isFresh()
+{
+return $this->getTtl() > 0;
+}
+public function isValidateable()
+{
+return $this->headers->has('Last-Modified') || $this->headers->has('ETag');
+}
+public function setPrivate()
+{
+$this->headers->removeCacheControlDirective('public');
+$this->headers->addCacheControlDirective('private');
+return $this;
+}
+public function setPublic()
+{
+$this->headers->addCacheControlDirective('public');
+$this->headers->removeCacheControlDirective('private');
+return $this;
+}
+public function mustRevalidate()
+{
+return $this->headers->hasCacheControlDirective('must-revalidate') || $this->headers->has('proxy-revalidate');
+}
+public function getDate()
+{
+return $this->headers->getDate('Date', new \DateTime());
+}
+public function setDate(\DateTime $date)
+{
+$date->setTimezone(new \DateTimeZone('UTC'));
+$this->headers->set('Date', $date->format('D, d M Y H:i:s').' GMT');
+return $this;
+}
+public function getAge()
+{
+if (null !== $age = $this->headers->get('Age')) {
+return (int) $age;
+}
+return max(time() - $this->getDate()->format('U'), 0);
+}
+public function expire()
+{
+if ($this->isFresh()) {
+$this->headers->set('Age', $this->getMaxAge());
+}
+return $this;
+}
+public function getExpires()
+{
+try {
+return $this->headers->getDate('Expires');
+} catch (\RuntimeException $e) {
+return \DateTime::createFromFormat(DATE_RFC2822,'Sat, 01 Jan 00 00:00:00 +0000');
+}
+}
+public function setExpires(\DateTime $date = null)
+{
+if (null === $date) {
+$this->headers->remove('Expires');
+} else {
+$date = clone $date;
+$date->setTimezone(new \DateTimeZone('UTC'));
+$this->headers->set('Expires', $date->format('D, d M Y H:i:s').' GMT');
+}
+return $this;
+}
+public function getMaxAge()
+{
+if ($this->headers->hasCacheControlDirective('s-maxage')) {
+return (int) $this->headers->getCacheControlDirective('s-maxage');
+}
+if ($this->headers->hasCacheControlDirective('max-age')) {
+return (int) $this->headers->getCacheControlDirective('max-age');
+}
+if (null !== $this->getExpires()) {
+return $this->getExpires()->format('U') - $this->getDate()->format('U');
+}
+return null;
+}
+public function setMaxAge($value)
+{
+$this->headers->addCacheControlDirective('max-age', $value);
+return $this;
+}
+public function setSharedMaxAge($value)
+{
+$this->setPublic();
+$this->headers->addCacheControlDirective('s-maxage', $value);
+return $this;
+}
+public function getTtl()
+{
+if (null !== $maxAge = $this->getMaxAge()) {
+return $maxAge - $this->getAge();
+}
+return null;
+}
+public function setTtl($seconds)
+{
+$this->setSharedMaxAge($this->getAge() + $seconds);
+return $this;
+}
+public function setClientTtl($seconds)
+{
+$this->setMaxAge($this->getAge() + $seconds);
+return $this;
+}
+public function getLastModified()
+{
+return $this->headers->getDate('Last-Modified');
+}
+public function setLastModified(\DateTime $date = null)
+{
+if (null === $date) {
+$this->headers->remove('Last-Modified');
+} else {
+$date = clone $date;
+$date->setTimezone(new \DateTimeZone('UTC'));
+$this->headers->set('Last-Modified', $date->format('D, d M Y H:i:s').' GMT');
+}
+return $this;
+}
+public function getEtag()
+{
+return $this->headers->get('ETag');
+}
+public function setEtag($etag = null, $weak = false)
+{
+if (null === $etag) {
+$this->headers->remove('Etag');
+} else {
+if (0 !== strpos($etag,'"')) {
+$etag ='"'.$etag.'"';
+}
+$this->headers->set('ETag', (true === $weak ?'W/':'').$etag);
+}
+return $this;
+}
+public function setCache(array $options)
+{
+if ($diff = array_diff(array_keys($options), array('etag','last_modified','max_age','s_maxage','private','public'))) {
+throw new \InvalidArgumentException(sprintf('Response does not support the following options: "%s".', implode('", "', array_values($diff))));
+}
+if (isset($options['etag'])) {
+$this->setEtag($options['etag']);
+}
+if (isset($options['last_modified'])) {
+$this->setLastModified($options['last_modified']);
+}
+if (isset($options['max_age'])) {
+$this->setMaxAge($options['max_age']);
+}
+if (isset($options['s_maxage'])) {
+$this->setSharedMaxAge($options['s_maxage']);
+}
+if (isset($options['public'])) {
+if ($options['public']) {
+$this->setPublic();
+} else {
+$this->setPrivate();
+}
+}
+if (isset($options['private'])) {
+if ($options['private']) {
+$this->setPrivate();
+} else {
+$this->setPublic();
+}
+}
+return $this;
+}
+public function setNotModified()
+{
+$this->setStatusCode(304);
+$this->setContent(null);
+foreach (array('Allow','Content-Encoding','Content-Language','Content-Length','Content-MD5','Content-Type','Last-Modified') as $header) {
+$this->headers->remove($header);
+}
+return $this;
+}
+public function hasVary()
+{
+return null !== $this->headers->get('Vary');
+}
+public function getVary()
+{
+if (!$vary = $this->headers->get('Vary')) {
+return array();
+}
+return is_array($vary) ? $vary : preg_split('/[\s,]+/', $vary);
+}
+public function setVary($headers, $replace = true)
+{
+$this->headers->set('Vary', $headers, $replace);
+return $this;
+}
+public function isNotModified(Request $request)
+{
+if (!$request->isMethodSafe()) {
+return false;
+}
+$lastModified = $request->headers->get('If-Modified-Since');
+$notModified = false;
+if ($etags = $request->getEtags()) {
+$notModified = (in_array($this->getEtag(), $etags) || in_array('*', $etags)) && (!$lastModified || $this->headers->get('Last-Modified') == $lastModified);
+} elseif ($lastModified) {
+$notModified = $lastModified == $this->headers->get('Last-Modified');
+}
+if ($notModified) {
+$this->setNotModified();
+}
+return $notModified;
+}
+public function isInvalid()
+{
+return $this->statusCode < 100 || $this->statusCode >= 600;
+}
+public function isInformational()
+{
+return $this->statusCode >= 100 && $this->statusCode < 200;
+}
+public function isSuccessful()
+{
+return $this->statusCode >= 200 && $this->statusCode < 300;
+}
+public function isRedirection()
+{
+return $this->statusCode >= 300 && $this->statusCode < 400;
+}
+public function isClientError()
+{
+return $this->statusCode >= 400 && $this->statusCode < 500;
+}
+public function isServerError()
+{
+return $this->statusCode >= 500 && $this->statusCode < 600;
+}
+public function isOk()
+{
+return 200 === $this->statusCode;
+}
+public function isForbidden()
+{
+return 403 === $this->statusCode;
+}
+public function isNotFound()
+{
+return 404 === $this->statusCode;
+}
+public function isRedirect($location = null)
+{
+return in_array($this->statusCode, array(201, 301, 302, 303, 307, 308)) && (null === $location ?: $location == $this->headers->get('Location'));
+}
+public function isEmpty()
+{
+return in_array($this->statusCode, array(201, 204, 304));
+}
+protected function ensureIEOverSSLCompatibility(Request $request)
+{
+if (false !== stripos($this->headers->get('Content-Disposition'),'attachment') && preg_match('/MSIE (.*?);/i', $request->server->get('HTTP_USER_AGENT'), $match) == 1 && true === $request->isSecure()) {
+if (intval(preg_replace("/(MSIE )(.*?);/","$2", $match[0])) < 9) {
+$this->headers->remove('Cache-Control');
+}
+}
+}
+}
+}
+namespace Symfony\Component\HttpFoundation
+{
+class ResponseHeaderBag extends HeaderBag
+{
+const COOKIES_FLAT ='flat';
+const COOKIES_ARRAY ='array';
+const DISPOSITION_ATTACHMENT ='attachment';
+const DISPOSITION_INLINE ='inline';
+protected $computedCacheControl = array();
+protected $cookies = array();
+protected $headerNames = array();
+public function __construct(array $headers = array())
+{
+parent::__construct($headers);
+if (!isset($this->headers['cache-control'])) {
+$this->set('Cache-Control','');
+}
+}
+public function __toString()
+{
+$cookies ='';
+foreach ($this->getCookies() as $cookie) {
+$cookies .='Set-Cookie: '.$cookie."\r\n";
+}
+ksort($this->headerNames);
+return parent::__toString().$cookies;
+}
+public function allPreserveCase()
+{
+return array_combine($this->headerNames, $this->headers);
+}
+public function replace(array $headers = array())
+{
+$this->headerNames = array();
+parent::replace($headers);
+if (!isset($this->headers['cache-control'])) {
+$this->set('Cache-Control','');
+}
+}
+public function set($key, $values, $replace = true)
+{
+parent::set($key, $values, $replace);
+$uniqueKey = strtr(strtolower($key),'_','-');
+$this->headerNames[$uniqueKey] = $key;
+if (in_array($uniqueKey, array('cache-control','etag','last-modified','expires'))) {
+$computed = $this->computeCacheControlValue();
+$this->headers['cache-control'] = array($computed);
+$this->headerNames['cache-control'] ='Cache-Control';
+$this->computedCacheControl = $this->parseCacheControl($computed);
+}
+}
+public function remove($key)
+{
+parent::remove($key);
+$uniqueKey = strtr(strtolower($key),'_','-');
+unset($this->headerNames[$uniqueKey]);
+if ('cache-control'=== $uniqueKey) {
+$this->computedCacheControl = array();
+}
+}
+public function hasCacheControlDirective($key)
+{
+return array_key_exists($key, $this->computedCacheControl);
+}
+public function getCacheControlDirective($key)
+{
+return array_key_exists($key, $this->computedCacheControl) ? $this->computedCacheControl[$key] : null;
+}
+public function setCookie(Cookie $cookie)
+{
+$this->cookies[$cookie->getDomain()][$cookie->getPath()][$cookie->getName()] = $cookie;
+}
+public function removeCookie($name, $path ='/', $domain = null)
+{
+if (null === $path) {
+$path ='/';
+}
+unset($this->cookies[$domain][$path][$name]);
+if (empty($this->cookies[$domain][$path])) {
+unset($this->cookies[$domain][$path]);
+if (empty($this->cookies[$domain])) {
+unset($this->cookies[$domain]);
+}
+}
+}
+public function getCookies($format = self::COOKIES_FLAT)
+{
+if (!in_array($format, array(self::COOKIES_FLAT, self::COOKIES_ARRAY))) {
+throw new \InvalidArgumentException(sprintf('Format "%s" invalid (%s).', $format, implode(', ', array(self::COOKIES_FLAT, self::COOKIES_ARRAY))));
+}
+if (self::COOKIES_ARRAY === $format) {
+return $this->cookies;
+}
+$flattenedCookies = array();
+foreach ($this->cookies as $path) {
+foreach ($path as $cookies) {
+foreach ($cookies as $cookie) {
+$flattenedCookies[] = $cookie;
+}
+}
+}
+return $flattenedCookies;
+}
+public function clearCookie($name, $path ='/', $domain = null)
+{
+$this->setCookie(new Cookie($name, null, 1, $path, $domain));
+}
+public function makeDisposition($disposition, $filename, $filenameFallback ='')
+{
+if (!in_array($disposition, array(self::DISPOSITION_ATTACHMENT, self::DISPOSITION_INLINE))) {
+throw new \InvalidArgumentException(sprintf('The disposition must be either "%s" or "%s".', self::DISPOSITION_ATTACHMENT, self::DISPOSITION_INLINE));
+}
+if (''== $filenameFallback) {
+$filenameFallback = $filename;
+}
+if (!preg_match('/^[\x20-\x7e]*$/', $filenameFallback)) {
+throw new \InvalidArgumentException('The filename fallback must only contain ASCII characters.');
+}
+if (false !== strpos($filenameFallback,'%')) {
+throw new \InvalidArgumentException('The filename fallback cannot contain the "%" character.');
+}
+if (false !== strpos($filename,'/') || false !== strpos($filename,'\\') || false !== strpos($filenameFallback,'/') || false !== strpos($filenameFallback,'\\')) {
+throw new \InvalidArgumentException('The filename and the fallback cannot contain the "/" and "\\" characters.');
+}
+$output = sprintf('%s; filename="%s"', $disposition, str_replace('"','\\"', $filenameFallback));
+if ($filename !== $filenameFallback) {
+$output .= sprintf("; filename*=utf-8''%s", rawurlencode($filename));
+}
+return $output;
+}
+protected function computeCacheControlValue()
+{
+if (!$this->cacheControl && !$this->has('ETag') && !$this->has('Last-Modified') && !$this->has('Expires')) {
+return'no-cache';
+}
+if (!$this->cacheControl) {
+return'private, must-revalidate';
+}
+$header = $this->getCacheControlHeader();
+if (isset($this->cacheControl['public']) || isset($this->cacheControl['private'])) {
+return $header;
+}
+if (!isset($this->cacheControl['s-maxage'])) {
+return $header.', private';
+}
+return $header;
+}
+}
+}
+namespace Symfony\Component\DependencyInjection
+{
+interface ContainerAwareInterface
+{
+public function setContainer(ContainerInterface $container = null);
+}
+}
+namespace Symfony\Component\DependencyInjection
+{
+use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
+use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException;
+use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
+interface ContainerInterface
+{
+const EXCEPTION_ON_INVALID_REFERENCE = 1;
+const NULL_ON_INVALID_REFERENCE = 2;
+const IGNORE_ON_INVALID_REFERENCE = 3;
+const SCOPE_CONTAINER ='container';
+const SCOPE_PROTOTYPE ='prototype';
+public function set($id, $service, $scope = self::SCOPE_CONTAINER);
+public function get($id, $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE);
+public function has($id);
+public function getParameter($name);
+public function hasParameter($name);
+public function setParameter($name, $value);
+public function enterScope($name);
+public function leaveScope($name);
+public function addScope(ScopeInterface $scope);
+public function hasScope($name);
+public function isScopeActive($name);
+}
+}
+namespace Symfony\Component\DependencyInjection
+{
+interface IntrospectableContainerInterface extends ContainerInterface
+{
+public function initialized($id);
+}
+}
+namespace Symfony\Component\DependencyInjection
+{
+use Symfony\Component\DependencyInjection\Exception\InactiveScopeException;
+use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
+use Symfony\Component\DependencyInjection\Exception\RuntimeException;
+use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
+use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException;
+use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
+use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
+use Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag;
+class Container implements IntrospectableContainerInterface
+{
+protected $parameterBag;
+protected $services;
+protected $methodMap;
+protected $aliases;
+protected $scopes;
+protected $scopeChildren;
+protected $scopedServices;
+protected $scopeStacks;
+protected $loading = array();
+public function __construct(ParameterBagInterface $parameterBag = null)
+{
+$this->parameterBag = null === $parameterBag ? new ParameterBag() : $parameterBag;
+$this->services = array();
+$this->aliases = array();
+$this->scopes = array();
+$this->scopeChildren = array();
+$this->scopedServices = array();
+$this->scopeStacks = array();
+$this->set('service_container', $this);
+}
+public function compile()
+{
+$this->parameterBag->resolve();
+$this->parameterBag = new FrozenParameterBag($this->parameterBag->all());
+}
+public function isFrozen()
+{
+return $this->parameterBag instanceof FrozenParameterBag;
+}
+public function getParameterBag()
+{
+return $this->parameterBag;
+}
+public function getParameter($name)
+{
+return $this->parameterBag->get($name);
+}
+public function hasParameter($name)
+{
+return $this->parameterBag->has($name);
+}
+public function setParameter($name, $value)
+{
+$this->parameterBag->set($name, $value);
+}
+public function set($id, $service, $scope = self::SCOPE_CONTAINER)
+{
+if (self::SCOPE_PROTOTYPE === $scope) {
+throw new InvalidArgumentException(sprintf('You cannot set service "%s" of scope "prototype".', $id));
+}
+$id = strtolower($id);
+if (self::SCOPE_CONTAINER !== $scope) {
+if (!isset($this->scopedServices[$scope])) {
+throw new RuntimeException(sprintf('You cannot set service "%s" of inactive scope.', $id));
+}
+$this->scopedServices[$scope][$id] = $service;
+}
+$this->services[$id] = $service;
+if (method_exists($this, $method ='synchronize'.strtr($id, array('_'=>'','.'=>'_')).'Service')) {
+$this->$method();
+}
+if (self::SCOPE_CONTAINER !== $scope && null === $service) {
+unset($this->scopedServices[$scope][$id]);
+}
+if (null === $service) {
+unset($this->services[$id]);
+}
+}
+public function has($id)
+{
+$id = strtolower($id);
+return isset($this->services[$id])
+|| array_key_exists($id, $this->services)
+|| isset($this->aliases[$id])
+|| method_exists($this,'get'.strtr($id, array('_'=>'','.'=>'_')).'Service')
+;
+}
+public function get($id, $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE)
+{
+foreach (array(false, true) as $strtolower) {
+if ($strtolower) {
+$id = strtolower($id);
+}
+if (isset($this->aliases[$id])) {
+$id = $this->aliases[$id];
+}
+if (isset($this->services[$id]) || array_key_exists($id, $this->services)) {
+return $this->services[$id];
+}
+}
+if (isset($this->loading[$id])) {
+throw new ServiceCircularReferenceException($id, array_keys($this->loading));
+}
+if (isset($this->methodMap[$id])) {
+$method = $this->methodMap[$id];
+} elseif (method_exists($this, $method ='get'.strtr($id, array('_'=>'','.'=>'_')).'Service')) {
+} else {
+if (self::EXCEPTION_ON_INVALID_REFERENCE === $invalidBehavior) {
+if (!$id) {
+throw new ServiceNotFoundException($id);
+}
+$alternatives = array();
+foreach (array_keys($this->services) as $key) {
+$lev = levenshtein($id, $key);
+if ($lev <= strlen($id) / 3 || false !== strpos($key, $id)) {
+$alternatives[] = $key;
+}
+}
+throw new ServiceNotFoundException($id, null, null, $alternatives);
+}
+return null;
+}
+$this->loading[$id] = true;
+try {
+$service = $this->$method();
+} catch (\Exception $e) {
+unset($this->loading[$id]);
+if (array_key_exists($id, $this->services)) {
+unset($this->services[$id]);
+}
+if ($e instanceof InactiveScopeException && self::EXCEPTION_ON_INVALID_REFERENCE !== $invalidBehavior) {
+return null;
+}
+throw $e;
+}
+unset($this->loading[$id]);
+return $service;
+}
+public function initialized($id)
+{
+$id = strtolower($id);
+return isset($this->services[$id]) || array_key_exists($id, $this->services);
+}
+public function getServiceIds()
+{
+$ids = array();
+$r = new \ReflectionClass($this);
+foreach ($r->getMethods() as $method) {
+if (preg_match('/^get(.+)Service$/', $method->name, $match)) {
+$ids[] = self::underscore($match[1]);
+}
+}
+return array_unique(array_merge($ids, array_keys($this->services)));
+}
+public function enterScope($name)
+{
+if (!isset($this->scopes[$name])) {
+throw new InvalidArgumentException(sprintf('The scope "%s" does not exist.', $name));
+}
+if (self::SCOPE_CONTAINER !== $this->scopes[$name] && !isset($this->scopedServices[$this->scopes[$name]])) {
+throw new RuntimeException(sprintf('The parent scope "%s" must be active when entering this scope.', $this->scopes[$name]));
+}
+if (isset($this->scopedServices[$name])) {
+$services = array($this->services, $name => $this->scopedServices[$name]);
+unset($this->scopedServices[$name]);
+foreach ($this->scopeChildren[$name] as $child) {
+if (isset($this->scopedServices[$child])) {
+$services[$child] = $this->scopedServices[$child];
+unset($this->scopedServices[$child]);
+}
+}
+$this->services = call_user_func_array('array_diff_key', $services);
+array_shift($services);
+if (!isset($this->scopeStacks[$name])) {
+$this->scopeStacks[$name] = new \SplStack();
+}
+$this->scopeStacks[$name]->push($services);
+}
+$this->scopedServices[$name] = array();
+}
+public function leaveScope($name)
+{
+if (!isset($this->scopedServices[$name])) {
+throw new InvalidArgumentException(sprintf('The scope "%s" is not active.', $name));
+}
+$services = array($this->services, $this->scopedServices[$name]);
+unset($this->scopedServices[$name]);
+foreach ($this->scopeChildren[$name] as $child) {
+if (!isset($this->scopedServices[$child])) {
+continue;
+}
+$services[] = $this->scopedServices[$child];
+unset($this->scopedServices[$child]);
+}
+$this->services = call_user_func_array('array_diff_key', $services);
+if (isset($this->scopeStacks[$name]) && count($this->scopeStacks[$name]) > 0) {
+$services = $this->scopeStacks[$name]->pop();
+$this->scopedServices += $services;
+foreach ($services as $array) {
+foreach ($array as $id => $service) {
+$this->set($id, $service, $name);
+}
+}
+}
+}
+public function addScope(ScopeInterface $scope)
+{
+$name = $scope->getName();
+$parentScope = $scope->getParentName();
+if (self::SCOPE_CONTAINER === $name || self::SCOPE_PROTOTYPE === $name) {
+throw new InvalidArgumentException(sprintf('The scope "%s" is reserved.', $name));
+}
+if (isset($this->scopes[$name])) {
+throw new InvalidArgumentException(sprintf('A scope with name "%s" already exists.', $name));
+}
+if (self::SCOPE_CONTAINER !== $parentScope && !isset($this->scopes[$parentScope])) {
+throw new InvalidArgumentException(sprintf('The parent scope "%s" does not exist, or is invalid.', $parentScope));
+}
+$this->scopes[$name] = $parentScope;
+$this->scopeChildren[$name] = array();
+while ($parentScope !== self::SCOPE_CONTAINER) {
+$this->scopeChildren[$parentScope][] = $name;
+$parentScope = $this->scopes[$parentScope];
+}
+}
+public function hasScope($name)
+{
+return isset($this->scopes[$name]);
+}
+public function isScopeActive($name)
+{
+return isset($this->scopedServices[$name]);
+}
+public static function camelize($id)
+{
+return strtr(ucwords(strtr($id, array('_'=>' ','.'=>'_ '))), array(' '=>''));
+}
+public static function underscore($id)
+{
+return strtolower(preg_replace(array('/([A-Z]+)([A-Z][a-z])/','/([a-z\d])([A-Z])/'), array('\\1_\\2','\\1_\\2'), strtr($id,'_','.')));
+}
+}
+}
+namespace Symfony\Component\HttpKernel
+{
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
+interface HttpKernelInterface
+{
+const MASTER_REQUEST = 1;
+const SUB_REQUEST = 2;
+public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true);
+}
+}
+namespace Symfony\Component\HttpKernel
+{
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\HttpKernel\HttpKernelInterface;
+use Symfony\Component\HttpKernel\Bundle\BundleInterface;
+use Symfony\Component\Config\Loader\LoaderInterface;
+interface KernelInterface extends HttpKernelInterface, \Serializable
+{
+public function registerBundles();
+public function registerContainerConfiguration(LoaderInterface $loader);
+public function boot();
+public function shutdown();
+public function getBundles();
+public function isClassInActiveBundle($class);
+public function getBundle($name, $first = true);
+public function locateResource($name, $dir = null, $first = true);
+public function getName();
+public function getEnvironment();
+public function isDebug();
+public function getRootDir();
+public function getContainer();
+public function getStartTime();
+public function getCacheDir();
+public function getLogDir();
+public function getCharset();
+}
+}
+namespace Symfony\Component\HttpKernel
+{
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
+interface TerminableInterface
+{
+public function terminate(Request $request, Response $response);
+}
+}
+namespace Symfony\Component\HttpKernel
+{
+use Symfony\Bridge\ProxyManager\LazyProxy\Instantiator\RuntimeInstantiator;
+use Symfony\Bridge\ProxyManager\LazyProxy\PhpDumper\ProxyDumper;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Dumper\PhpDumper;
+use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
+use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
+use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
+use Symfony\Component\DependencyInjection\Loader\IniFileLoader;
+use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
+use Symfony\Component\DependencyInjection\Loader\ClosureLoader;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\HttpKernel\HttpKernelInterface;
+use Symfony\Component\HttpKernel\Bundle\BundleInterface;
+use Symfony\Component\HttpKernel\Config\FileLocator;
+use Symfony\Component\HttpKernel\DependencyInjection\MergeExtensionConfigurationPass;
+use Symfony\Component\HttpKernel\DependencyInjection\AddClassesToCachePass;
+use Symfony\Component\Config\Loader\LoaderResolver;
+use Symfony\Component\Config\Loader\DelegatingLoader;
+use Symfony\Component\Config\ConfigCache;
+use Symfony\Component\ClassLoader\ClassCollectionLoader;
+abstract class Kernel implements KernelInterface, TerminableInterface
+{
+protected $bundles;
+protected $bundleMap;
+protected $container;
+protected $rootDir;
+protected $environment;
+protected $debug;
+protected $booted;
+protected $name;
+protected $startTime;
+protected $loadClassCache;
+const VERSION ='2.3.5';
+const VERSION_ID ='20305';
+const MAJOR_VERSION ='2';
+const MINOR_VERSION ='3';
+const RELEASE_VERSION ='5';
+const EXTRA_VERSION ='';
+public function __construct($environment, $debug)
+{
+$this->environment = $environment;
+$this->debug = (Boolean) $debug;
+$this->booted = false;
+$this->rootDir = $this->getRootDir();
+$this->name = $this->getName();
+$this->bundles = array();
+if ($this->debug) {
+$this->startTime = microtime(true);
+}
+$this->init();
+}
+public function init()
+{
+}
+public function __clone()
+{
+if ($this->debug) {
+$this->startTime = microtime(true);
+}
+$this->booted = false;
+$this->container = null;
+}
+public function boot()
+{
+if (true === $this->booted) {
+return;
+}
+if ($this->loadClassCache) {
+$this->doLoadClassCache($this->loadClassCache[0], $this->loadClassCache[1]);
+}
+$this->initializeBundles();
+$this->initializeContainer();
+foreach ($this->getBundles() as $bundle) {
+$bundle->setContainer($this->container);
+$bundle->boot();
+}
+$this->booted = true;
+}
+public function terminate(Request $request, Response $response)
+{
+if (false === $this->booted) {
+return;
+}
+if ($this->getHttpKernel() instanceof TerminableInterface) {
+$this->getHttpKernel()->terminate($request, $response);
+}
+}
+public function shutdown()
+{
+if (false === $this->booted) {
+return;
+}
+$this->booted = false;
+foreach ($this->getBundles() as $bundle) {
+$bundle->shutdown();
+$bundle->setContainer(null);
+}
+$this->container = null;
+}
+public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
+{
+if (false === $this->booted) {
+$this->boot();
+}
+return $this->getHttpKernel()->handle($request, $type, $catch);
+}
+protected function getHttpKernel()
+{
+return $this->container->get('http_kernel');
+}
+public function getBundles()
+{
+return $this->bundles;
+}
+public function isClassInActiveBundle($class)
+{
+foreach ($this->getBundles() as $bundle) {
+if (0 === strpos($class, $bundle->getNamespace())) {
+return true;
+}
+}
+return false;
+}
+public function getBundle($name, $first = true)
+{
+if (!isset($this->bundleMap[$name])) {
+throw new \InvalidArgumentException(sprintf('Bundle "%s" does not exist or it is not enabled. Maybe you forgot to add it in the registerBundles() method of your %s.php file?', $name, get_class($this)));
+}
+if (true === $first) {
+return $this->bundleMap[$name][0];
+}
+return $this->bundleMap[$name];
+}
+public function locateResource($name, $dir = null, $first = true)
+{
+if ('@'!== $name[0]) {
+throw new \InvalidArgumentException(sprintf('A resource name must start with @ ("%s" given).', $name));
+}
+if (false !== strpos($name,'..')) {
+throw new \RuntimeException(sprintf('File name "%s" contains invalid characters (..).', $name));
+}
+$bundleName = substr($name, 1);
+$path ='';
+if (false !== strpos($bundleName,'/')) {
+list($bundleName, $path) = explode('/', $bundleName, 2);
+}
+$isResource = 0 === strpos($path,'Resources') && null !== $dir;
+$overridePath = substr($path, 9);
+$resourceBundle = null;
+$bundles = $this->getBundle($bundleName, false);
+$files = array();
+foreach ($bundles as $bundle) {
+if ($isResource && file_exists($file = $dir.'/'.$bundle->getName().$overridePath)) {
+if (null !== $resourceBundle) {
+throw new \RuntimeException(sprintf('"%s" resource is hidden by a resource from the "%s" derived bundle. Create a "%s" file to override the bundle resource.',
+$file,
+$resourceBundle,
+$dir.'/'.$bundles[0]->getName().$overridePath
+));
+}
+if ($first) {
+return $file;
+}
+$files[] = $file;
+}
+if (file_exists($file = $bundle->getPath().'/'.$path)) {
+if ($first && !$isResource) {
+return $file;
+}
+$files[] = $file;
+$resourceBundle = $bundle->getName();
+}
+}
+if (count($files) > 0) {
+return $first && $isResource ? $files[0] : $files;
+}
+throw new \InvalidArgumentException(sprintf('Unable to find file "%s".', $name));
+}
+public function getName()
+{
+if (null === $this->name) {
+$this->name = preg_replace('/[^a-zA-Z0-9_]+/','', basename($this->rootDir));
+}
+return $this->name;
+}
+public function getEnvironment()
+{
+return $this->environment;
+}
+public function isDebug()
+{
+return $this->debug;
+}
+public function getRootDir()
+{
+if (null === $this->rootDir) {
+$r = new \ReflectionObject($this);
+$this->rootDir = str_replace('\\','/', dirname($r->getFileName()));
+}
+return $this->rootDir;
+}
+public function getContainer()
+{
+return $this->container;
+}
+public function loadClassCache($name ='classes', $extension ='.php')
+{
+$this->loadClassCache = array($name, $extension);
+}
+public function setClassCache(array $classes)
+{
+file_put_contents($this->getCacheDir().'/classes.map', sprintf('<?php return %s;', var_export($classes, true)));
+}
+public function getStartTime()
+{
+return $this->debug ? $this->startTime : -INF;
+}
+public function getCacheDir()
+{
+return $this->rootDir.'/cache/'.$this->environment;
+}
+public function getLogDir()
+{
+return $this->rootDir.'/logs';
+}
+public function getCharset()
+{
+return'UTF-8';
+}
+protected function doLoadClassCache($name, $extension)
+{
+if (!$this->booted && is_file($this->getCacheDir().'/classes.map')) {
+ClassCollectionLoader::load(include($this->getCacheDir().'/classes.map'), $this->getCacheDir(), $name, $this->debug, false, $extension);
+}
+}
+protected function initializeBundles()
+{
+$this->bundles = array();
+$topMostBundles = array();
+$directChildren = array();
+foreach ($this->registerBundles() as $bundle) {
+$name = $bundle->getName();
+if (isset($this->bundles[$name])) {
+throw new \LogicException(sprintf('Trying to register two bundles with the same name "%s"', $name));
+}
+$this->bundles[$name] = $bundle;
+if ($parentName = $bundle->getParent()) {
+if (isset($directChildren[$parentName])) {
+throw new \LogicException(sprintf('Bundle "%s" is directly extended by two bundles "%s" and "%s".', $parentName, $name, $directChildren[$parentName]));
+}
+if ($parentName == $name) {
+throw new \LogicException(sprintf('Bundle "%s" can not extend itself.', $name));
+}
+$directChildren[$parentName] = $name;
+} else {
+$topMostBundles[$name] = $bundle;
+}
+}
+if (count($diff = array_values(array_diff(array_keys($directChildren), array_keys($this->bundles))))) {
+throw new \LogicException(sprintf('Bundle "%s" extends bundle "%s", which is not registered.', $directChildren[$diff[0]], $diff[0]));
+}
+$this->bundleMap = array();
+foreach ($topMostBundles as $name => $bundle) {
+$bundleMap = array($bundle);
+$hierarchy = array($name);
+while (isset($directChildren[$name])) {
+$name = $directChildren[$name];
+array_unshift($bundleMap, $this->bundles[$name]);
+$hierarchy[] = $name;
+}
+foreach ($hierarchy as $bundle) {
+$this->bundleMap[$bundle] = $bundleMap;
+array_pop($bundleMap);
+}
+}
+}
+protected function getContainerClass()
+{
+return $this->name.ucfirst($this->environment).($this->debug ?'Debug':'').'ProjectContainer';
+}
+protected function getContainerBaseClass()
+{
+return'Container';
+}
+protected function initializeContainer()
+{
+$class = $this->getContainerClass();
+$cache = new ConfigCache($this->getCacheDir().'/'.$class.'.php', $this->debug);
+$fresh = true;
+if (!$cache->isFresh()) {
+$container = $this->buildContainer();
+$container->compile();
+$this->dumpContainer($cache, $container, $class, $this->getContainerBaseClass());
+$fresh = false;
+}
+require_once $cache;
+$this->container = new $class();
+$this->container->set('kernel', $this);
+if (!$fresh && $this->container->has('cache_warmer')) {
+$this->container->get('cache_warmer')->warmUp($this->container->getParameter('kernel.cache_dir'));
+}
+}
+protected function getKernelParameters()
+{
+$bundles = array();
+foreach ($this->bundles as $name => $bundle) {
+$bundles[$name] = get_class($bundle);
+}
+return array_merge(
+array('kernel.root_dir'=> $this->rootDir,'kernel.environment'=> $this->environment,'kernel.debug'=> $this->debug,'kernel.name'=> $this->name,'kernel.cache_dir'=> $this->getCacheDir(),'kernel.logs_dir'=> $this->getLogDir(),'kernel.bundles'=> $bundles,'kernel.charset'=> $this->getCharset(),'kernel.container_class'=> $this->getContainerClass(),
+),
+$this->getEnvParameters()
+);
+}
+protected function getEnvParameters()
+{
+$parameters = array();
+foreach ($_SERVER as $key => $value) {
+if (0 === strpos($key,'SYMFONY__')) {
+$parameters[strtolower(str_replace('__','.', substr($key, 9)))] = $value;
+}
+}
+return $parameters;
+}
+protected function buildContainer()
+{
+foreach (array('cache'=> $this->getCacheDir(),'logs'=> $this->getLogDir()) as $name => $dir) {
+if (!is_dir($dir)) {
+if (false === @mkdir($dir, 0777, true)) {
+throw new \RuntimeException(sprintf("Unable to create the %s directory (%s)\n", $name, $dir));
+}
+} elseif (!is_writable($dir)) {
+throw new \RuntimeException(sprintf("Unable to write in the %s directory (%s)\n", $name, $dir));
+}
+}
+$container = $this->getContainerBuilder();
+$container->addObjectResource($this);
+$this->prepareContainer($container);
+if (null !== $cont = $this->registerContainerConfiguration($this->getContainerLoader($container))) {
+$container->merge($cont);
+}
+$container->addCompilerPass(new AddClassesToCachePass($this));
+return $container;
+}
+protected function prepareContainer(ContainerBuilder $container)
+{
+$extensions = array();
+foreach ($this->bundles as $bundle) {
+if ($extension = $bundle->getContainerExtension()) {
+$container->registerExtension($extension);
+$extensions[] = $extension->getAlias();
+}
+if ($this->debug) {
+$container->addObjectResource($bundle);
+}
+}
+foreach ($this->bundles as $bundle) {
+$bundle->build($container);
+}
+$container->getCompilerPassConfig()->setMergePass(new MergeExtensionConfigurationPass($extensions));
+}
+protected function getContainerBuilder()
+{
+$container = new ContainerBuilder(new ParameterBag($this->getKernelParameters()));
+if (class_exists('ProxyManager\Configuration')) {
+$container->setProxyInstantiator(new RuntimeInstantiator());
+}
+return $container;
+}
+protected function dumpContainer(ConfigCache $cache, ContainerBuilder $container, $class, $baseClass)
+{
+$dumper = new PhpDumper($container);
+if (class_exists('ProxyManager\Configuration')) {
+$dumper->setProxyDumper(new ProxyDumper());
+}
+$content = $dumper->dump(array('class'=> $class,'base_class'=> $baseClass));
+if (!$this->debug) {
+$content = self::stripComments($content);
+}
+$cache->write($content, $container->getResources());
+}
+protected function getContainerLoader(ContainerInterface $container)
+{
+$locator = new FileLocator($this);
+$resolver = new LoaderResolver(array(
+new XmlFileLoader($container, $locator),
+new YamlFileLoader($container, $locator),
+new IniFileLoader($container, $locator),
+new PhpFileLoader($container, $locator),
+new ClosureLoader($container),
+));
+return new DelegatingLoader($resolver);
+}
+public static function stripComments($source)
+{
+if (!function_exists('token_get_all')) {
+return $source;
+}
+$rawChunk ='';
+$output ='';
+$tokens = token_get_all($source);
+for (reset($tokens); false !== $token = current($tokens); next($tokens)) {
+if (is_string($token)) {
+$rawChunk .= $token;
+} elseif (T_START_HEREDOC === $token[0]) {
+$output .= preg_replace(array('/\s+$/Sm','/\n+/S'),"\n", $rawChunk).$token[1];
+do {
+$token = next($tokens);
+$output .= $token[1];
+} while ($token[0] !== T_END_HEREDOC);
+$rawChunk ='';
+} elseif (!in_array($token[0], array(T_COMMENT, T_DOC_COMMENT))) {
+$rawChunk .= $token[1];
+}
+}
+$output .= preg_replace(array('/\s+$/Sm','/\n+/S'),"\n", $rawChunk);
+return $output;
+}
+public function serialize()
+{
+return serialize(array($this->environment, $this->debug));
+}
+public function unserialize($data)
+{
+list($environment, $debug) = unserialize($data);
+$this->__construct($environment, $debug);
+}
+}
+}
+namespace Symfony\Component\ClassLoader
+{
+class ApcClassLoader
+{
+private $prefix;
+protected $decorated;
+public function __construct($prefix, $decorated)
+{
+if (!extension_loaded('apc')) {
+throw new \RuntimeException('Unable to use ApcClassLoader as APC is not enabled.');
+}
+if (!method_exists($decorated,'findFile')) {
+throw new \InvalidArgumentException('The class finder must implement a "findFile" method.');
+}
+$this->prefix = $prefix;
+$this->decorated = $decorated;
+}
+public function register($prepend = false)
+{
+spl_autoload_register(array($this,'loadClass'), true, $prepend);
+}
+public function unregister()
+{
+spl_autoload_unregister(array($this,'loadClass'));
+}
+public function loadClass($class)
+{
+if ($file = $this->findFile($class)) {
+require $file;
+return true;
+}
+}
+public function findFile($class)
+{
+if (false === $file = apc_fetch($this->prefix.$class)) {
+apc_store($this->prefix.$class, $file = $this->decorated->findFile($class));
+}
+return $file;
+}
+public function __call($method, $args)
+{
+return call_user_func_array(array($this->decorated, $method), $args);
+}
+}
+}
+namespace Symfony\Component\HttpKernel\Bundle
+{
+use Symfony\Component\DependencyInjection\ContainerAwareInterface;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
+interface BundleInterface extends ContainerAwareInterface
+{
+public function boot();
+public function shutdown();
+public function build(ContainerBuilder $container);
+public function getContainerExtension();
+public function getParent();
+public function getName();
+public function getNamespace();
+public function getPath();
+}
+}
+namespace Symfony\Component\DependencyInjection
+{
+abstract class ContainerAware implements ContainerAwareInterface
+{
+protected $container;
+public function setContainer(ContainerInterface $container = null)
+{
+$this->container = $container;
+}
+}
+}
+namespace Symfony\Component\HttpKernel\Bundle
+{
+use Symfony\Component\DependencyInjection\ContainerAware;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Container;
+use Symfony\Component\Console\Application;
+use Symfony\Component\Finder\Finder;
+use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
+abstract class Bundle extends ContainerAware implements BundleInterface
+{
+protected $name;
+protected $reflected;
+protected $extension;
+public function boot()
+{
+}
+public function shutdown()
+{
+}
+public function build(ContainerBuilder $container)
+{
+}
+public function getContainerExtension()
+{
+if (null === $this->extension) {
+$basename = preg_replace('/Bundle$/','', $this->getName());
+$class = $this->getNamespace().'\\DependencyInjection\\'.$basename.'Extension';
+if (class_exists($class)) {
+$extension = new $class();
+$expectedAlias = Container::underscore($basename);
+if ($expectedAlias != $extension->getAlias()) {
+throw new \LogicException(sprintf('The extension alias for the default extension of a '.'bundle must be the underscored version of the '.'bundle name ("%s" instead of "%s")',
+$expectedAlias, $extension->getAlias()
+));
+}
+$this->extension = $extension;
+} else {
+$this->extension = false;
+}
+}
+if ($this->extension) {
+return $this->extension;
+}
+}
+public function getNamespace()
+{
+if (null === $this->reflected) {
+$this->reflected = new \ReflectionObject($this);
+}
+return $this->reflected->getNamespaceName();
+}
+public function getPath()
+{
+if (null === $this->reflected) {
+$this->reflected = new \ReflectionObject($this);
+}
+return dirname($this->reflected->getFileName());
+}
+public function getParent()
+{
+return null;
+}
+final public function getName()
+{
+if (null !== $this->name) {
+return $this->name;
+}
+$name = get_class($this);
+$pos = strrpos($name,'\\');
+return $this->name = false === $pos ? $name : substr($name, $pos + 1);
+}
+public function registerCommands(Application $application)
+{
+if (!is_dir($dir = $this->getPath().'/Command')) {
+return;
+}
+$finder = new Finder();
+$finder->files()->name('*Command.php')->in($dir);
+$prefix = $this->getNamespace().'\\Command';
+foreach ($finder as $file) {
+$ns = $prefix;
+if ($relativePath = $file->getRelativePath()) {
+$ns .='\\'.strtr($relativePath,'/','\\');
+}
+$r = new \ReflectionClass($ns.'\\'.$file->getBasename('.php'));
+if ($r->isSubclassOf('Symfony\\Component\\Console\\Command\\Command') && !$r->isAbstract() && !$r->getConstructor()->getNumberOfRequiredParameters()) {
+$application->add($r->newInstance());
+}
+}
+}
+}
+}
+namespace Symfony\Component\Config
+{
+use Symfony\Component\Config\Resource\ResourceInterface;
+use Symfony\Component\Filesystem\Filesystem;
+class ConfigCache
+{
+private $debug;
+private $file;
+public function __construct($file, $debug)
+{
+$this->file = $file;
+$this->debug = (Boolean) $debug;
+}
+public function __toString()
+{
+return $this->file;
+}
+public function isFresh()
+{
+if (!is_file($this->file)) {
+return false;
+}
+if (!$this->debug) {
+return true;
+}
+$metadata = $this->getMetaFile();
+if (!is_file($metadata)) {
+return false;
+}
+$time = filemtime($this->file);
+$meta = unserialize(file_get_contents($metadata));
+foreach ($meta as $resource) {
+if (!$resource->isFresh($time)) {
+return false;
+}
+}
+return true;
+}
+public function write($content, array $metadata = null)
+{
+$mode = 0666 & ~umask();
+$filesystem = new Filesystem();
+$filesystem->dumpFile($this->file, $content, $mode);
+if (null !== $metadata && true === $this->debug) {
+$filesystem->dumpFile($this->getMetaFile(), serialize($metadata), $mode);
+}
+}
+private function getMetaFile()
+{
+return $this->file.'.meta';
+}
+}
+}
+namespace Symfony\Component\HttpKernel
+{
+use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
+use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
+use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
+use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
+use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
+use Symfony\Component\HttpKernel\Event\GetResponseEvent;
+use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent;
+use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
+use Symfony\Component\HttpKernel\Event\PostResponseEvent;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\EventDispatcher\EventDispatcherInterface;
+class HttpKernel implements HttpKernelInterface, TerminableInterface
+{
+protected $dispatcher;
+protected $resolver;
+public function __construct(EventDispatcherInterface $dispatcher, ControllerResolverInterface $resolver)
+{
+$this->dispatcher = $dispatcher;
+$this->resolver = $resolver;
+}
+public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
+{
+try {
+return $this->handleRaw($request, $type);
+} catch (\Exception $e) {
+if (false === $catch) {
+throw $e;
+}
+return $this->handleException($e, $request, $type);
+}
+}
+public function terminate(Request $request, Response $response)
+{
+$this->dispatcher->dispatch(KernelEvents::TERMINATE, new PostResponseEvent($this, $request, $response));
+}
+private function handleRaw(Request $request, $type = self::MASTER_REQUEST)
+{
+$event = new GetResponseEvent($this, $request, $type);
+$this->dispatcher->dispatch(KernelEvents::REQUEST, $event);
+if ($event->hasResponse()) {
+return $this->filterResponse($event->getResponse(), $request, $type);
+}
+if (false === $controller = $this->resolver->getController($request)) {
+throw new NotFoundHttpException(sprintf('Unable to find the controller for path "%s". Maybe you forgot to add the matching route in your routing configuration?', $request->getPathInfo()));
+}
+$event = new FilterControllerEvent($this, $controller, $request, $type);
+$this->dispatcher->dispatch(KernelEvents::CONTROLLER, $event);
+$controller = $event->getController();
+$arguments = $this->resolver->getArguments($request, $controller);
+$response = call_user_func_array($controller, $arguments);
+if (!$response instanceof Response) {
+$event = new GetResponseForControllerResultEvent($this, $request, $type, $response);
+$this->dispatcher->dispatch(KernelEvents::VIEW, $event);
+if ($event->hasResponse()) {
+$response = $event->getResponse();
+}
+if (!$response instanceof Response) {
+$msg = sprintf('The controller must return a response (%s given).', $this->varToString($response));
+if (null === $response) {
+$msg .=' Did you forget to add a return statement somewhere in your controller?';
+}
+throw new \LogicException($msg);
+}
+}
+return $this->filterResponse($response, $request, $type);
+}
+private function filterResponse(Response $response, Request $request, $type)
+{
+$event = new FilterResponseEvent($this, $request, $type, $response);
+$this->dispatcher->dispatch(KernelEvents::RESPONSE, $event);
+return $event->getResponse();
+}
+private function handleException(\Exception $e, $request, $type)
+{
+$event = new GetResponseForExceptionEvent($this, $request, $type, $e);
+$this->dispatcher->dispatch(KernelEvents::EXCEPTION, $event);
+$e = $event->getException();
+if (!$event->hasResponse()) {
+throw $e;
+}
+$response = $event->getResponse();
+if ($response->headers->has('X-Status-Code')) {
+$response->setStatusCode($response->headers->get('X-Status-Code'));
+$response->headers->remove('X-Status-Code');
+} elseif (!$response->isClientError() && !$response->isServerError() && !$response->isRedirect()) {
+if ($e instanceof HttpExceptionInterface) {
+$response->setStatusCode($e->getStatusCode());
+$response->headers->add($e->getHeaders());
+} else {
+$response->setStatusCode(500);
+}
+}
+try {
+return $this->filterResponse($response, $request, $type);
+} catch (\Exception $e) {
+return $response;
+}
+}
+private function varToString($var)
+{
+if (is_object($var)) {
+return sprintf('Object(%s)', get_class($var));
+}
+if (is_array($var)) {
+$a = array();
+foreach ($var as $k => $v) {
+$a[] = sprintf('%s => %s', $k, $this->varToString($v));
+}
+return sprintf("Array(%s)", implode(', ', $a));
+}
+if (is_resource($var)) {
+return sprintf('Resource(%s)', get_resource_type($var));
+}
+if (null === $var) {
+return'null';
+}
+if (false === $var) {
+return'false';
+}
+if (true === $var) {
+return'true';
+}
+return (string) $var;
+}
+}
+}
+namespace Symfony\Component\HttpKernel\DependencyInjection
+{
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpKernel\HttpKernelInterface;
+use Symfony\Component\HttpKernel\HttpKernel;
+use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
+use Symfony\Component\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\DependencyInjection\Scope;
+class ContainerAwareHttpKernel extends HttpKernel
+{
+protected $container;
+public function __construct(EventDispatcherInterface $dispatcher, ContainerInterface $container, ControllerResolverInterface $controllerResolver)
+{
+parent::__construct($dispatcher, $controllerResolver);
+$this->container = $container;
+if (!$container->hasScope('request')) {
+$container->addScope(new Scope('request'));
+}
+}
+public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
+{
+$request->headers->set('X-Php-Ob-Level', ob_get_level());
+$this->container->enterScope('request');
+$this->container->set('request', $request,'request');
+try {
+$response = parent::handle($request, $type, $catch);
+} catch (\Exception $e) {
+$this->container->set('request', null,'request');
+$this->container->leaveScope('request');
+throw $e;
+}
+$this->container->set('request', null,'request');
+$this->container->leaveScope('request');
+return $response;
+}
+}
+}
+
+namespace { return $loader; }
+            

+ 55 - 0
php-symfony2-stripped/app/check.php

@@ -0,0 +1,55 @@
+<?php
+
+require_once dirname(__FILE__).'/SymfonyRequirements.php';
+
+$symfonyRequirements = new SymfonyRequirements();
+
+$iniPath = $symfonyRequirements->getPhpIniConfigPath();
+
+echo "********************************\n";
+echo "*                              *\n";
+echo "*  Symfony requirements check  *\n";
+echo "*                              *\n";
+echo "********************************\n\n";
+
+echo $iniPath ? sprintf("* Configuration file used by PHP: %s\n\n", $iniPath) : "* WARNING: No configuration file (php.ini) used by PHP!\n\n";
+
+echo "** ATTENTION **\n";
+echo "*  The PHP CLI can use a different php.ini file\n";
+echo "*  than the one used with your web server.\n";
+if ('\\' == DIRECTORY_SEPARATOR) {
+    echo "*  (especially on the Windows platform)\n";
+}
+echo "*  To be on the safe side, please also launch the requirements check\n";
+echo "*  from your web server using the web/config.php script.\n";
+
+echo_title('Mandatory requirements');
+
+foreach ($symfonyRequirements->getRequirements() as $req) {
+    echo_requirement($req);
+}
+
+echo_title('Optional recommendations');
+
+foreach ($symfonyRequirements->getRecommendations() as $req) {
+    echo_requirement($req);
+}
+
+/**
+ * Prints a Requirement instance
+ */
+function echo_requirement(Requirement $requirement)
+{
+    $result = $requirement->isFulfilled() ? 'OK' : ($requirement->isOptional() ? 'WARNING' : 'ERROR');
+    echo ' ' . str_pad($result, 9);
+    echo $requirement->getTestMessage() . "\n";
+
+    if (!$requirement->isFulfilled()) {
+        echo sprintf("          %s\n\n", $requirement->getHelpText());
+    }
+}
+
+function echo_title($title)
+{
+    echo "\n** $title **\n\n";
+}

+ 41 - 0
php-symfony2-stripped/app/config/config.yml

@@ -0,0 +1,41 @@
+imports:
+    - { resource: parameters.yml }
+
+framework:
+    profiler: false
+    #esi:             ~
+    #translator:      { fallback: %locale% }
+    secret:          %secret%
+    router:
+        resource: "%kernel.root_dir%/config/routing.yml"
+        strict_requirements: null
+    form:            ~
+    csrf_protection: ~
+    validation:      { enable_annotations: true }
+    templating:
+        engines: ['php']
+        #assets_version: SomeVersionScheme
+    default_locale:  "%locale%"
+    trusted_proxies: ~
+    session:         ~
+    fragments:       ~
+
+# Doctrine Configuration
+doctrine:
+    dbal:
+        driver:   %database_driver%
+        host:     %database_host%
+        port:     %database_port%
+        dbname:   %database_name%
+        user:     %database_user%
+        password: %database_password%
+        charset:  UTF8
+        # if using pdo_sqlite as your database driver, add the path in parameters.yml
+        # e.g. database_path: %kernel.root_dir%/data/data.db3
+        # path:     %database_path%
+
+    orm:
+        auto_generate_proxy_classes: %kernel.debug%
+        auto_mapping: true
+        metadata_cache_driver: apc
+        query_cache_driver: apc

+ 14 - 0
php-symfony2-stripped/app/config/parameters.yml

@@ -0,0 +1,14 @@
+parameters:
+    database_driver: pdo_mysql
+    database_host: 192.168.100.102
+    database_port: null
+    database_name: hello_world
+    database_user: benchmarkdbuser
+    database_password: benchmarkdbpass
+    mailer_transport: smtp
+    mailer_host: 127.0.0.1
+    mailer_user: null
+    mailer_password: null
+    locale: en
+    secret: 2d50e353f5d24683c46e298ec0aead14
+    database_path: null

+ 23 - 0
php-symfony2-stripped/app/config/routing.yml

@@ -0,0 +1,23 @@
+_json:
+    pattern:  /json
+    defaults: { _controller: SkamanderBenchmarkBundle:Bench:json }
+
+_db:
+    pattern:  /db
+    defaults: { _controller: SkamanderBenchmarkBundle:Bench:db }
+
+_dbRaw:
+    pattern:  /db-raw
+    defaults: { _controller: SkamanderBenchmarkBundle:Bench:dbRaw }
+
+_fortunes:
+    pattern:  /fortunes
+    defaults: { _controller: SkamanderBenchmarkBundle:Bench:fortunes }
+
+_fortunesPhp:
+    pattern:  /fortunes-php
+    defaults: { _controller: SkamanderBenchmarkBundle:Bench:fortunesPhp }
+
+_fortunesRaw:
+    pattern:  /fortunes-raw
+    defaults: { _controller: SkamanderBenchmarkBundle:Bench:fortunesRaw }

+ 22 - 0
php-symfony2-stripped/app/console

@@ -0,0 +1,22 @@
+#!/usr/bin/env php
+<?php
+
+// if you don't want to setup permissions the proper way, just uncomment the following PHP line
+// read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information
+//umask(0000);
+
+set_time_limit(0);
+
+require_once __DIR__.'/bootstrap.php.cache';
+require_once __DIR__.'/AppKernel.php';
+
+use Symfony\Bundle\FrameworkBundle\Console\Application;
+use Symfony\Component\Console\Input\ArgvInput;
+
+$input = new ArgvInput();
+$env = $input->getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev');
+$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod';
+
+$kernel = new AppKernel($env, $debug);
+$application = new Application($kernel);
+$application->run($input);

+ 41 - 0
php-symfony2-stripped/app/phpunit.xml.dist

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- http://www.phpunit.de/manual/current/en/appendixes.configuration.html -->
+<phpunit
+    backupGlobals               = "false"
+    backupStaticAttributes      = "false"
+    colors                      = "true"
+    convertErrorsToExceptions   = "true"
+    convertNoticesToExceptions  = "true"
+    convertWarningsToExceptions = "true"
+    processIsolation            = "false"
+    stopOnFailure               = "false"
+    syntaxCheck                 = "false"
+    bootstrap                   = "bootstrap.php.cache" >
+
+    <testsuites>
+        <testsuite name="Project Test Suite">
+            <directory>../src/*/*Bundle/Tests</directory>
+            <directory>../src/*/Bundle/*Bundle/Tests</directory>
+        </testsuite>
+    </testsuites>
+
+    <!--
+    <php>
+        <server name="KERNEL_DIR" value="/path/to/your/app/" />
+    </php>
+    -->
+
+    <filter>
+        <whitelist>
+            <directory>../src</directory>
+            <exclude>
+                <directory>../src/*/*Bundle/Resources</directory>
+                <directory>../src/*/*Bundle/Tests</directory>
+                <directory>../src/*/Bundle/*Bundle/Resources</directory>
+                <directory>../src/*/Bundle/*Bundle/Tests</directory>
+            </exclude>
+        </whitelist>
+    </filter>
+
+</phpunit>

+ 64 - 0
php-symfony2-stripped/benchmark_config

@@ -0,0 +1,64 @@
+{
+  "framework": "symfony2-stripped",
+  "tests": [{
+    "default": {
+      "setup_file": "setup",
+      "json_url": "/json",
+      "db_url": "/db",
+      "query_url": "/db?queries=",
+      "fortune_url": "/fortunes",
+      "port": 8080,
+      "approach": "Stripped",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "symfony2",
+      "language": "PHP",
+      "orm": "Full",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "symfony2",
+      "notes": "",
+      "versus": "php"
+    },
+    "php-templates": {
+      "setup_file": "setup",
+      "fortune_url": "/fortunes-php",
+      "port": 8080,
+      "approach": "Stripped",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "symfony2",
+      "language": "PHP",
+      "orm": "Full",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "symfony2",
+      "notes": "",
+      "versus": "php"
+    },
+    "raw": {
+      "setup_file": "setup",
+      "db_url": "/db-raw",
+      "query_url": "/db-raw?queries=",
+      "fortune_url": "/fortunes-raw",
+      "port": 8080,
+      "approach": "Stripped",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "symfony2",
+      "language": "PHP",
+      "orm": "Raw",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "symfony2",
+      "notes": "",
+      "versus": "php"
+    }
+  }]
+}

+ 24 - 0
php-symfony2-stripped/composer.json

@@ -0,0 +1,24 @@
+{
+    "name": "symfony/framework-standard-edition",
+    "description": "The \"Symfony Standard Edition\" distribution",
+    "autoload": {
+        "psr-0": { "": "src/" }
+    },
+    "require": {
+        "php": ">=5.3.3",
+        "symfony/symfony": "2.3.*",
+        "doctrine/orm": ">=2.2.3,<2.4-dev",
+        "doctrine/doctrine-bundle": "1.2.*"
+    },
+   "config": {
+        "bin-dir": "bin"
+    },
+    "minimum-stability": "stable",
+    "extra": {
+        "symfony-app-dir": "app",
+        "symfony-web-dir": "web",
+        "branch-alias": {
+            "dev-master": "2.3-dev"
+        }
+    }
+}

+ 133 - 0
php-symfony2-stripped/deploy/nginx.conf

@@ -0,0 +1,133 @@
+#user  nobody;
+worker_processes  8;
+
+#error_log  logs/error.log;
+#error_log  logs/error.log  notice;
+#error_log  logs/error.log  info;
+error_log /dev/null crit;
+
+#pid        logs/nginx.pid;
+
+
+events {
+    worker_connections  1024;
+}
+
+
+http {
+    include       /usr/local/nginx/conf/mime.types;
+    default_type  application/octet-stream;
+
+    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
+    #                  '$status $body_bytes_sent "$http_referer" '
+    #                  '"$http_user_agent" "$http_x_forwarded_for"';
+
+    #access_log  logs/access.log  main;
+    access_log off;
+
+    sendfile        on;
+    #tcp_nopush     on;
+
+    #keepalive_timeout  0;
+    keepalive_timeout  65;
+
+    #gzip  on;
+
+    upstream fastcgi_backend {
+        server 127.0.0.1:9001;
+        keepalive 32;
+    }
+
+    server {
+        listen       8080;
+        server_name  localhost;
+
+        #charset koi8-r;
+
+        #access_log  logs/host.access.log  main;
+
+        #location / {
+        #    root   html;
+        #    index  index.html index.htm;
+        #}
+
+        #error_page  404              /404.html;
+
+        # redirect server error pages to the static page /50x.html
+        #
+        #error_page   500 502 503 504  /50x.html;
+        #location = /50x.html {
+        #    root   html;
+        #}
+
+        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
+        #
+        #location ~ \.php$ {
+        #    proxy_pass   http://127.0.0.1;
+        #}
+
+        root /home/ubuntu/FrameworkBenchmarks/php-symfony2/web/;
+        index  app.php;
+
+        location / {
+            try_files $uri $uri/ /app.php?$uri&$args;
+        }
+
+        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
+        #
+        location ~ \.php$ {
+            try_files $uri =404;
+            fastcgi_pass   fastcgi_backend;
+            fastcgi_keep_conn on;
+            fastcgi_index  index.php;
+#            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
+            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
+            include        /usr/local/nginx/conf/fastcgi_params;
+        }
+
+        # deny access to .htaccess files, if Apache's document root
+        # concurs with nginx's one
+        #
+        #location ~ /\.ht {
+        #    deny  all;
+        #}
+    }
+
+
+    # another virtual host using mix of IP-, name-, and port-based configuration
+    #
+    #server {
+    #    listen       8000;
+    #    listen       somename:8080;
+    #    server_name  somename  alias  another.alias;
+
+    #    location / {
+    #        root   html;
+    #        index  index.html index.htm;
+    #    }
+    #}
+
+
+    # HTTPS server
+    #
+    #server {
+    #    listen       443;
+    #    server_name  localhost;
+
+    #    ssl                  on;
+    #    ssl_certificate      cert.pem;
+    #    ssl_certificate_key  cert.key;
+
+    #    ssl_session_timeout  5m;
+
+    #    ssl_protocols  SSLv2 SSLv3 TLSv1;
+    #    ssl_ciphers  HIGH:!aNULL:!MD5;
+    #    ssl_prefer_server_ciphers   on;
+
+    #    location / {
+    #        root   html;
+    #        index  index.html index.htm;
+    #    }
+    #}
+
+}

+ 9 - 0
php-symfony2-stripped/deploy/php-symfony2

@@ -0,0 +1,9 @@
+<VirtualHost *:8080>
+  Alias /php-symfony2/ "/home/ubuntu/FrameworkBenchmarks/php-symfony2/web/"
+  <Directory /home/ubuntu/FrameworkBenchmarks/php-symfony2/web/>
+          Options Indexes FollowSymLinks MultiViews
+          #AllowOverride None
+          Order allow,deny
+          allow from all
+  </Directory>
+</VirtualHost>

+ 28 - 0
php-symfony2-stripped/setup.py

@@ -0,0 +1,28 @@
+import subprocess
+import sys
+import setup_util
+from os.path import expanduser
+
+home = expanduser("~")
+
+def start(args):
+  setup_util.replace_text("php-symfony2/app/config/parameters.yml", "database_host: .*", "database_host: " + args.database_host)
+  setup_util.replace_text("php-symfony2/deploy/nginx.conf", "root .*\/FrameworkBenchmarks", "root " + home + "/FrameworkBenchmarks")
+
+  try:
+    subprocess.check_call("composer.phar install --optimize-autoloader", shell=True, cwd="php-symfony2")
+    subprocess.check_call("php app/console cache:clear --env=prod --no-debug", shell=True, cwd="php-symfony2")
+    subprocess.check_call("sudo chown -R www-data:www-data php-symfony2", shell=True)
+    subprocess.check_call("sudo php-fpm --fpm-config config/php-fpm.conf -g " + home + "/FrameworkBenchmarks/php-symfony2/deploy/php-fpm.pid", shell=True)
+    subprocess.check_call("sudo /usr/local/nginx/sbin/nginx -c " + home + "/FrameworkBenchmarks/php-symfony2/deploy/nginx.conf", shell=True)
+    return 0
+  except subprocess.CalledProcessError:
+    return 1
+def stop():
+  try:
+    subprocess.call("sudo /usr/local/nginx/sbin/nginx -s stop", shell=True)
+    subprocess.call("sudo kill -QUIT $( cat php-symfony2/deploy/php-fpm.pid )", shell=True)
+    subprocess.check_call("sudo chown -R $USER:$USER php-symfony2", shell=True)
+    return 0
+  except subprocess.CalledProcessError:
+    return 1

+ 1 - 0
php-symfony2-stripped/src/.htaccess

@@ -0,0 +1 @@
+deny from all

+ 121 - 0
php-symfony2-stripped/src/Skamander/BenchmarkBundle/Controller/BenchController.php

@@ -0,0 +1,121 @@
+<?php
+
+namespace Skamander\BenchmarkBundle\Controller;
+
+use Symfony\Bundle\FrameworkBundle\Controller\Controller;
+use Symfony\Component\HttpFoundation\JsonResponse;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
+use Skamander\BenchmarkBundle\Entity\Fortune;
+
+class BenchController extends Controller
+{
+
+    public function jsonAction()
+    {
+        return new JsonResponse(array('message' => 'Hello World!'));
+    }
+
+    public function dbAction(Request $request)
+    {
+        $queries = $request->query->getInt('queries', 1);
+
+        // possibility for enhancement is the use of SplFixedArray -> http://php.net/manual/de/class.splfixedarray.php
+        $worlds = array();
+        $repo = $this->getDoctrine()
+            ->getRepository('SkamanderBenchmarkBundle:World');
+
+        for($i = 0; $i < $queries; ++$i) {
+            $worlds[] =  $repo->find(mt_rand(1, 10000));
+        }
+
+        return new JsonResponse($worlds);
+    }
+
+    public function dbRawAction(Request $request)
+    {
+        $queries = $request->query->getInt('queries', 1);
+
+        // possibility for enhancement is the use of SplFixedArray -> http://php.net/manual/de/class.splfixedarray.php
+        $worlds = array();
+        $conn = $this->get('database_connection');
+
+        for($i = 0; $i < $queries; ++$i) {
+            $worlds[] =  $conn->fetchAssoc('SELECT * FROM World WHERE id = ?', array(mt_rand(1, 10000)));
+        }
+
+        return new JsonResponse($worlds);
+    }
+
+    public function fortunesAction()
+    {
+        $repo = $this->getDoctrine()
+            ->getRepository('SkamanderBenchmarkBundle:Fortune');
+        $fortunes = $repo->findAll();
+
+        $runtimeFortune = new Fortune();
+        $runtimeFortune->setId(0)
+            ->setMessage('Additional fortune added at request time.');
+
+        $fortunes[] = $runtimeFortune;
+
+        usort($fortunes, function($left, $right) {
+            return strcmp($left->message, $right->message);
+        });
+
+        return $this->render("SkamanderBenchmarkBundle:Bench:fortunes.html.twig", [
+            'fortunes' => $fortunes
+        ]);
+    }
+
+    public function fortunesPhpAction()
+    {
+        $repo = $this->getDoctrine()
+            ->getRepository('SkamanderBenchmarkBundle:Fortune');
+        $fortunes = $repo->findAll();
+
+        $runtimeFortune = new Fortune();
+        $runtimeFortune->setId(0)
+            ->setMessage('Additional fortune added at request time.');
+
+        $fortunes[] = $runtimeFortune;
+
+        usort($fortunes, function($left, $right) {
+            return strcmp($left->message, $right->message);
+        });
+
+        return $this->render("SkamanderBenchmarkBundle:Bench:fortunes.html.php", [
+            'fortunes' => $fortunes
+        ]);
+    }
+
+    public function fortunesRawAction()
+    {
+        $repo = $this->getDoctrine()
+            ->getRepository('SkamanderBenchmarkBundle:Fortune');
+        $fortunes = $repo->findAll();
+
+        $runtimeFortune = new Fortune();
+        $runtimeFortune->setId(0)
+            ->setMessage('Additional fortune added at request time.');
+
+        $fortunes[] = $runtimeFortune;
+
+        usort($fortunes, function($left, $right) {
+            return strcmp($left->message, $right->message);
+        });
+
+        // This is not the symfony way to work with templates! It's implemented to show users
+        // who don't want to use template engines (like twig), or template sugar (like the slots etc.
+        // from symfony 2), because in their opinion already built-in php constructs like foreach +
+        // if else + include etc. are enough, that the performance impact should be neglectable, and
+        // that the advantages outweigh the disadvantages (performance).
+        $title = 'Fortunes';
+
+        ob_start();
+        include __DIR__ . '/../Resources/views/Bench/raw/content.php';
+        $response = ob_get_clean();
+
+        return new Response($response);
+    }
+}

+ 69 - 0
php-symfony2-stripped/src/Skamander/BenchmarkBundle/Entity/Fortune.php

@@ -0,0 +1,69 @@
+<?php
+
+namespace Skamander\BenchmarkBundle\Entity;
+
+use Doctrine\ORM\Mapping as ORM;
+
+/**
+ * @ORM\Entity
+ * @ORM\Table(name="Fortune")
+ */
+class Fortune
+{
+    /**
+     * @ORM\Id
+     * @ORM\Column(type="integer")
+     */
+    public $id;
+
+    /**
+     * @ORM\Column(type="string")
+     */
+    public $message;
+
+    /**
+     * Set id
+     *
+     * @param integer $id
+     * @return Fortune
+     */
+    public function setId($id)
+    {
+        $this->id = $id;
+
+        return $this;
+    }
+
+    /**
+     * Get id
+     *
+     * @return integer
+     */
+    public function getId()
+    {
+        return $this->id;
+    }
+
+    /**
+     * Set message
+     *
+     * @param string $message
+     * @return Fortune
+     */
+    public function setMessage($message)
+    {
+        $this->message = $message;
+
+        return $this;
+    }
+
+    /**
+     * Get message
+     *
+     * @return string
+     */
+    public function getMessage()
+    {
+        return $this->message;
+    }
+}

+ 85 - 0
php-symfony2-stripped/src/Skamander/BenchmarkBundle/Entity/World.php

@@ -0,0 +1,85 @@
+<?php
+
+namespace Skamander\BenchmarkBundle\Entity;
+
+use Doctrine\ORM\Mapping as ORM;
+
+/**
+ * @ORM\Entity
+ * @ORM\Table(name="World")
+ */
+class World /* implements JsonSerializable */
+{
+   /**
+    * @ORM\Id
+    * @ORM\Column(type="integer")
+    */
+    public $id;
+
+   /**
+    * @ORM\Column(type="integer")
+    */
+    public $randomNumber;
+
+
+    /**
+     * Although this is a benchmark, implemented this so
+     * we don't have to make our members public. :)
+     *
+     * @return array
+     */
+    /*
+    public function jsonSerialize() {
+        return [
+            'id' => $this->id,
+            'randomNumber' => $this->randomNumber
+        ];
+    }
+    */
+
+    /**
+     * Set id
+     *
+     * @param integer $id
+     * @return World
+     */
+    public function setId($id)
+    {
+        $this->id = $id;
+    
+        return $this;
+    }
+
+    /**
+     * Get id
+     *
+     * @return integer 
+     */
+    public function getId()
+    {
+        return $this->id;
+    }
+
+    /**
+     * Set randomNumber
+     *
+     * @param integer $randomNumber
+     * @return World
+     */
+    public function setRandomNumber($randomNumber)
+    {
+        $this->randomNumber = $randomNumber;
+    
+        return $this;
+    }
+
+    /**
+     * Get randomNumber
+     *
+     * @return integer 
+     */
+    public function getRandomNumber()
+    {
+        return $this->randomNumber;
+    }
+}

+ 18 - 0
php-symfony2-stripped/src/Skamander/BenchmarkBundle/Resources/views/Bench/fortunes.html.php

@@ -0,0 +1,18 @@
+<?php $view->extend('SkamanderBenchmarkBundle::layout.html.php') ?>
+
+<?php $view['slots']->set('title', 'Fortunes') ?>
+
+<?php $view['slots']->start('content') ?>
+<table>
+    <tr>
+        <th>id</th>
+        <th>message</th>
+    </tr>
+    <?php foreach($fortunes as $fortune): ?>
+        <tr>
+            <td><?php echo $view->escape($fortune->id); ?></td>
+            <td><?php echo $view->escape($fortune->message); ?></td>
+        </tr>
+    <?php endforeach; ?>
+</table>
+<?php $view['slots']->stop() ?>

+ 20 - 0
php-symfony2-stripped/src/Skamander/BenchmarkBundle/Resources/views/Bench/fortunes.html.twig

@@ -0,0 +1,20 @@
+{% extends "SkamanderBenchmarkBundle::layout.html.twig" %}
+
+{% block title "Fortunes" %}
+
+{% block content %}
+    <table>
+        <tr>
+            <th>id</th>
+            <th>message</th>
+        </tr>
+
+        {% for fortune in fortunes %}
+            <tr>
+                <td>{{ fortune.id }}</td>
+                <td>{{ fortune.message }}</td>
+            </tr>
+        {% endfor %}
+
+    </table>
+{% endblock %}

+ 7 - 0
php-symfony2-stripped/src/Skamander/BenchmarkBundle/Resources/views/Bench/raw/content.php

@@ -0,0 +1,7 @@
+<?php include 'template_header.php'; ?>
+
+<div class="block">
+    <?php include 'fortunes.php'; ?>
+</div>
+
+<?php include 'template_footer.php'; ?>

+ 14 - 0
php-symfony2-stripped/src/Skamander/BenchmarkBundle/Resources/views/Bench/raw/fortunes.php

@@ -0,0 +1,14 @@
+<table>
+    <tr>
+        <th>id</th>
+        <th>message</th>
+    </tr>
+
+    <?php foreach($fortunes as $fortune): ?>
+        <tr>
+            <td><?php echo $fortune->id; ?></td>
+            <td><?php echo htmlspecialchars($fortune->message, ENT_QUOTES, "UTF-8", false); ?></td>
+        </tr>
+    <?php endforeach; ?>
+
+</table>

+ 2 - 0
php-symfony2-stripped/src/Skamander/BenchmarkBundle/Resources/views/Bench/raw/template_footer.php

@@ -0,0 +1,2 @@
+</body>
+</html>

+ 7 - 0
php-symfony2-stripped/src/Skamander/BenchmarkBundle/Resources/views/Bench/raw/template_header.php

@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8" />
+    <title><?php echo $title ?></title>
+</head>
+<body>

+ 9 - 0
php-symfony2-stripped/src/Skamander/BenchmarkBundle/Resources/views/layout.html.php

@@ -0,0 +1,9 @@
+<?php $view->extend('::base.html.php') ?>
+
+<?php $view['slots']->set('title', 'Benchmark Bundle') ?>
+
+<?php $view['slots']->start('body') ?>
+    <div class="block">
+        <?php $view['slots']->output('content') ?>
+    </div>
+<?php $view['slots']->stop() ?>

+ 9 - 0
php-symfony2-stripped/src/Skamander/BenchmarkBundle/Resources/views/layout.html.twig

@@ -0,0 +1,9 @@
+{% extends '::base.html.twig' %}
+
+{% block title 'Benchmark Bundle' %}
+
+{% block body %}
+    <div class="block">
+        {% block content %}{% endblock %}
+    </div>
+{% endblock %}

+ 9 - 0
php-symfony2-stripped/src/Skamander/BenchmarkBundle/SkamanderBenchmarkBundle.php

@@ -0,0 +1,9 @@
+<?php
+
+namespace Skamander\BenchmarkBundle;
+
+use Symfony\Component\HttpKernel\Bundle\Bundle;
+
+class SkamanderBenchmarkBundle extends Bundle
+{
+}

+ 48 - 0
php-symfony2-stripped/web/.htaccess

@@ -0,0 +1,48 @@
+# Use the front controller as index file. It serves as fallback solution when
+# every other rewrite/redirect fails (e.g. in an aliased environment without
+# mod_rewrite). Additionally, this reduces the matching process for the
+# startpage (path "/") because otherwise Apache will apply the rewritting rules
+# to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl).
+DirectoryIndex app.php
+
+<IfModule mod_rewrite.c>
+    RewriteEngine On
+
+    # Redirect to URI without front controller to prevent duplicate content
+    # (with and without `/app.php`). Only do this redirect on the initial
+    # rewrite by Apache and not on subsequent cycles. Otherwise we would get an
+    # endless redirect loop (request -> rewrite to front controller ->
+    # redirect -> request -> ...).
+    # So in case you get a "too many redirects" error or you always get redirected
+    # to the startpage because your Apache does not expose the REDIRECT_STATUS
+    # environment variable, you have 2 choices:
+    # - disable this feature by commenting the following 2 lines or
+    # - use Apache >= 2.3.9 and replace all L flags by END flags and remove the
+    #   following RewriteCond (best solution)
+    RewriteCond %{ENV:REDIRECT_STATUS} ^$
+    RewriteRule ^app\.php(/(.*)|$) %{CONTEXT_PREFIX}/$2 [R=301,L]
+
+    # If the requested filename exists, simply serve it.
+    # We only want to let Apache serve files and not directories.
+    RewriteCond %{REQUEST_FILENAME} -f
+    RewriteRule .? - [L]
+
+    # The following rewrites all other queries to the front controller. The
+    # condition ensures that if you are using Apache aliases to do mass virtual
+    # hosting, the base path will be prepended to allow proper resolution of the
+    # app.php file; it will work in non-aliased environments as well, providing
+    # a safe, one-size fits all solution.
+    RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
+    RewriteRule ^(.*) - [E=BASE:%1]
+    RewriteRule .? %{ENV:BASE}app.php [L]
+</IfModule>
+
+<IfModule !mod_rewrite.c>
+    <IfModule mod_alias.c>
+        # When mod_rewrite is not available, we instruct a temporary redirect of
+        # the startpage to the front controller explicitly so that the website
+        # and the generated links can still be used.
+        RedirectMatch 302 ^/$ /app.php/
+        # RedirectTemp cannot be used instead
+    </IfModule>
+</IfModule>

+ 24 - 0
php-symfony2-stripped/web/app.php

@@ -0,0 +1,24 @@
+<?php
+
+use Symfony\Component\ClassLoader\ApcClassLoader;
+use Symfony\Component\HttpFoundation\Request;
+
+$loader = require_once __DIR__.'/../app/bootstrap.php.cache';
+
+// Use APC for autoloading to improve performance.
+// Change 'sf2' to a unique prefix in order to prevent cache key conflicts
+// with other applications also using APC.
+
+$loader = new ApcClassLoader('symfony2Benchmark', $loader);
+$loader->register(true);
+
+
+require_once __DIR__.'/../app/AppKernel.php';
+
+$kernel = new AppKernel('prod', true);
+$kernel->loadClassCache();
+Request::enableHttpMethodParameterOverride();
+$request = Request::createFromGlobals();
+$response = $kernel->handle($request);
+$response->send();
+$kernel->terminate($request, $response);

+ 28 - 0
php-symfony2-stripped/web/app_dev.php

@@ -0,0 +1,28 @@
+<?php
+
+use Symfony\Component\HttpFoundation\Request;
+
+// If you don't want to setup permissions the proper way, just uncomment the following PHP line
+// read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information
+//umask(0000);
+
+// This check prevents access to debug front controllers that are deployed by accident to production servers.
+// Feel free to remove this, extend it, or make something more sophisticated.
+if (isset($_SERVER['HTTP_CLIENT_IP'])
+    || isset($_SERVER['HTTP_X_FORWARDED_FOR'])
+    || !in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1'))
+) {
+    header('HTTP/1.0 403 Forbidden');
+    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
+}
+
+$loader = require_once __DIR__.'/../app/bootstrap.php.cache';
+require_once __DIR__.'/../app/AppKernel.php';
+
+$kernel = new AppKernel('dev', true);
+$kernel->loadClassCache();
+Request::enableHttpMethodParameterOverride();
+$request = Request::createFromGlobals();
+$response = $kernel->handle($request);
+$response->send();
+$kernel->terminate($request, $response);

BIN
php-symfony2-stripped/web/apple-touch-icon.png


+ 150 - 0
php-symfony2-stripped/web/bundles/framework/css/body.css

@@ -0,0 +1,150 @@
+/*
+Copyright (c) 2010, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.com/yui/license.html
+version: 3.1.2
+build: 56
+*/
+.sf-reset html{color:#000;background:#FFF;}.sf-reset body,.sf-reset div,.sf-reset dl,.sf-reset dt,.sf-reset dd,.sf-reset ul,.sf-reset ol,.sf-reset li,.sf-reset h1,.sf-reset h2,.sf-reset h3,.sf-reset h4,.sf-reset h5,.sf-reset h6,.sf-reset pre,.sf-reset code,.sf-reset form,.sf-reset fieldset,.sf-reset legend,.sf-reset input,.sf-reset textarea,.sf-reset p,.sf-reset blockquote,.sf-reset th,.sf-reset td{margin:0;padding:0;}.sf-reset table{border-collapse:collapse;border-spacing:0;}.sf-reset fieldset,.sf-reset img{border:0;}.sf-reset address,.sf-reset caption,.sf-reset cite,.sf-reset code,.sf-reset dfn,.sf-reset em,.sf-reset strong,.sf-reset th,.sf-reset var{font-style:normal;font-weight:normal;}.sf-reset li{list-style:none;}.sf-reset caption,.sf-reset th{text-align:left;}.sf-reset h1,.sf-reset h2,.sf-reset h3,.sf-reset h4,.sf-reset h5,.sf-reset h6{font-size:100%;font-weight:normal;}.sf-reset q:before,.sf-reset q:after{content:'';}.sf-reset abbr,.sf-reset acronym{border:0;font-variant:normal;}.sf-reset sup{vertical-align:text-top;}.sf-reset sub{vertical-align:text-bottom;}.sf-reset input,.sf-reset textarea,.sf-reset select{font-family:inherit;font-size:inherit;font-weight:inherit;}.sf-reset input,.sf-reset textarea,.sf-reset select{*font-size:100%;}.sf-reset legend{color:#000;}
+.sf-reset html,
+.sf-reset body {
+    width: 100%;
+    min-height: 100%;
+    _height: 100%;
+    margin: 0;
+    padding: 0;
+}
+.sf-reset body {
+    font: 1em "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
+    text-align: left;
+    background-color: #efefef;
+}
+.sf-reset abbr {
+    border-bottom: 1px dotted #000;
+    cursor: help;
+}
+.sf-reset p {
+    font-size: 14px;
+    line-height: 20px;
+    padding-bottom: 20px;
+}
+.sf-reset strong {
+    color: #313131;
+    font-weight: bold;
+}
+.sf-reset a {
+    color: #6c6159;
+}
+.sf-reset a img {
+    border: none;
+}
+.sf-reset a:hover {
+    text-decoration: underline;
+}
+.sf-reset em {
+    font-style: italic;
+}
+.sf-reset h2,
+.sf-reset h3 {
+    font-weight: bold;
+}
+.sf-reset h1 {
+    font-family: Georgia, "Times New Roman", Times, serif;
+    font-size: 20px;
+    color: #313131;
+    word-break: break-all;
+}
+.sf-reset li {
+    padding-bottom: 10px;
+}
+.sf-reset .block {
+    -moz-border-radius: 16px;
+    -webkit-border-radius: 16px;
+    border-radius: 16px;
+    margin-bottom: 20px;
+    background-color: #FFFFFF;
+    border: 1px solid #dfdfdf;
+    padding: 40px 50px;
+}
+.sf-reset h2 {
+    font-size: 16px;
+    font-family: Arial, Helvetica, sans-serif;
+}
+.sf-reset li a {
+    background: none;
+    color: #868686;
+    text-decoration: none;
+}
+.sf-reset li a:hover {
+    background: none;
+    color: #313131;
+    text-decoration: underline;
+}
+.sf-reset ol {
+    padding: 10px 0;
+}
+.sf-reset ol li {
+    list-style: decimal;
+    margin-left: 20px;
+    padding: 2px;
+    padding-bottom: 20px;
+}
+.sf-reset ol ol li {
+    list-style-position: inside;
+    margin-left: 0;
+    white-space: nowrap;
+    font-size: 12px;
+    padding-bottom: 0;
+}
+.sf-reset li .selected {
+    background-color: #ffd;
+}
+.sf-button {
+    display: -moz-inline-box;
+    display: inline-block;
+    text-align: center;
+    vertical-align: middle;
+    border: 0;
+    background: transparent none;
+    text-transform: uppercase;
+    cursor: pointer;
+    font: bold 11px Arial, Helvetica, sans-serif;
+}
+.sf-button span {
+    text-decoration: none;
+    display: block;
+    height: 28px;
+    float: left;
+}
+.sf-button .border-l {
+    text-decoration: none;
+    display: block;
+    height: 28px;
+    float: left;
+    padding: 0 0 0 7px;
+    background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAcCAYAAACtQ6WLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQtJREFUeNpiPHnyJAMakARiByDWYEGT8ADiYGVlZStubm5xlv///4MEQYoKZGRkQkRERLRYWVl5wYJQyXBZWdkwCQkJUxAHKgaWlAHSLqKiosb//v1DsYMFKGCvoqJiDmQzwXTAJYECulxcXNLoumCSoszMzDzoumDGghQwYZUECWIzkrAkSIIGOmlkLI10AiX//P379x8jIyMTNmPf/v79+ysLCwsvuiQoNi5//fr1Kch4dAyS3P/gwYMTQBP+wxwHw0xA4gkQ73v9+vUZdJ2w1Lf82bNn4iCHCQoKasHsZw4ODgbRIL8c+/Lly5M3b978Y2dn5wC6npkFLXnsAOKLjx49AmUHLYAAAwBoQubG016R5wAAAABJRU5ErkJggg==) no-repeat top left;
+}
+.sf-button .border-r {
+    padding: 0 7px 0 0;
+    background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAcCAYAAACtQ6WLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAR1JREFUeNpiPHnyZCMDA8MNID5gZmb2nAEJMH7//v3N169fX969e/cYkL8WqGAHXPLv37//QYzfv39/fvPmzbUnT56sAXInmJub/2H5/x8sx8DCwsIrISFhDmQyPX78+CmQXs70798/BmQsKipqBNTgdvz4cWkmkE5kDATMioqKZkCFdiwg1eiAi4tLGqhQF24nMmBmZuYEigth1QkEbEBxTlySYPvJkwSJ00AnjYylgU6gxB8g/oFVEphkvgLF32KNMmCCewYUv4qhEyj47+HDhyeBzIMYOoEp8CxQw56wsLAncJ1//vz5/P79+2svX74EJc2V4BT58+fPd8CE/QKYHMGJOiIiAp6oWW7evDkNSF8DZYfIyEiU7AAQYACJ2vxVdJW4eQAAAABJRU5ErkJggg==) right top no-repeat;
+}
+.sf-button .btn-bg {
+    padding: 0px 14px;
+    color: #636363;
+    line-height: 28px;
+    background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAcCAYAAACgXdXMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAClJREFUeNpiPnny5EKGf//+/Wf6//8/A4QAcrGzKCZwGc9sa2urBBBgAIbDUoYVp9lmAAAAAElFTkSuQmCC) repeat-x top left;
+}
+.sf-button:hover .border-l,
+.sf-button-selected .border-l {
+    background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAcCAYAAACtQ6WLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAR9JREFUeNpi/P//PwMyOHfunDqQSgNiexZkibNnzxYBqZa3HOs5v7PcYQBLnjlzhg1IbfzIdsTjA/t+ht9Mr8GKwZL//v3r+sB+0OMN+zqIEf8gFMvJkyd1gXTOa9YNDP//otrPAtSV/Jp9HfPff78Z0AEL0LUeXxivMfxD0wXTqfjj/2ugkf+wSrL9/YtpJEyS4S8WI5Ek/+GR/POPFjr//cenE6/kP9q4Fo/kr39/mdj+M/zFkGQCSj5i+ccPjLJ/GBgkuYOHQR1sNDpmAkb2LBmWwL///zKCIxwZM0VHR18G6p4uxeLLAA4tJMwEshiou1iMxXaHLGswA+t/YbhORuQUv2DBAnCifvxzI+enP3dQJUFg/vz5sOzgBBBgAPxX9j0YnH4JAAAAAElFTkSuQmCC) no-repeat top left;
+}
+.sf-button:hover .border-r,
+.sf-button-selected .border-r {
+    background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAcCAYAAACtQ6WLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAT5JREFUeNpiPHv27BkGBoaDQDzLyMjoJgMSYHrM3WX8hn1d0f///88DFRYhSzIuv2X5H8Rg/SfKIPDTkYH/l80OINffxMTkF9O/f/8ZQPgnwyuGl+wrGd6x7vf49+9fO9jYf3+Bkkj4NesmBqAV+SdPntQC6vzHgIz//gOawbqOGchOxtAJwp8Zr4F0e7D8/fuPAR38/P8eZIo0yz8skv8YvoIk+YE6/zNgAyD7sRqLkPzzjxY6/+HS+R+fTkZ8djLh08lCUCcuSWawJGbwMTGwg7zyBatX2Bj5QZKPsBrLzaICktzN8g/NWEYGZgYZjoC/wMiei5FMpFh8QPSU6Ojoy3Cd7EwiDBJsDgxiLNY7gLrKQGIsHAxSDHxAO2TZ/b8D+TVxcXF9MCtYtLiKLgDpfUDVsxITE1GyA0CAAQA2E/N8VuHyAAAAAABJRU5ErkJggg==) right top no-repeat;
+}
+.sf-button:hover .btn-bg,
+.sf-button-selected .btn-bg {
+    color: #FFFFFF;
+    text-shadow:0 1px 1px #6b9311;
+    background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAcCAIAAAAvP0KbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEFJREFUeNpiPnv2LNMdvlymf///M/37B8R/QfQ/MP33L4j+B6Qh7L9//sHpf2h8MA1V+w/KRjYLaDaLCU8vQIABAFO3TxZriO4yAAAAAElFTkSuQmCC) repeat-x top left;
+}

+ 108 - 0
php-symfony2-stripped/web/bundles/framework/css/exception.css

@@ -0,0 +1,108 @@
+.sf-reset .traces {
+    padding-bottom: 14px;
+}
+.sf-reset .traces li {
+    font-size: 12px;
+    color: #868686;
+    padding: 5px 4px;
+    list-style-type: decimal;
+    margin-left: 20px;
+    white-space: break-word;
+}
+.sf-reset #logs .traces li.error {
+    font-style: normal;
+    color: #AA3333;
+    background: #f9ecec;
+}
+.sf-reset #logs .traces li.warning {
+    font-style: normal;
+    background: #ffcc00;
+}
+/* fix for Opera not liking empty <li> */
+.sf-reset .traces li:after {
+    content: "\00A0";
+}
+.sf-reset .trace {
+    border: 1px solid #D3D3D3;
+    padding: 10px;
+    overflow: auto;
+    margin: 10px 0 20px;
+}
+.sf-reset .block-exception {
+    -moz-border-radius: 16px;
+    -webkit-border-radius: 16px;
+    border-radius: 16px;
+    margin-bottom: 20px;
+    background-color: #f6f6f6;
+    border: 1px solid #dfdfdf;
+    padding: 30px 28px;
+    word-wrap: break-word;
+    overflow: hidden;
+}
+.sf-reset .block-exception div {
+    color: #313131;
+    font-size: 10px;
+}
+.sf-reset .block-exception-detected .illustration-exception,
+.sf-reset .block-exception-detected .text-exception {
+    float: left;
+}
+.sf-reset .block-exception-detected .illustration-exception {
+    width: 152px;
+}
+.sf-reset .block-exception-detected .text-exception {
+    width: 670px;
+    padding: 30px 44px 24px 46px;
+    position: relative;
+}
+.sf-reset .text-exception .open-quote,
+.sf-reset .text-exception .close-quote {
+    position: absolute;
+}
+.sf-reset .open-quote {
+    top: 0;
+    left: 0;
+}
+.sf-reset .close-quote {
+    bottom: 0;
+    right: 50px;
+}
+.sf-reset .block-exception p {
+    font-family: Arial, Helvetica, sans-serif;
+}
+.sf-reset .block-exception p a,
+.sf-reset .block-exception p a:hover {
+    color: #565656;
+}
+.sf-reset .logs h2 {
+    float: left;
+    width: 654px;
+}
+.sf-reset .error-count {
+    float: right;
+    width: 170px;
+    text-align: right;
+}
+.sf-reset .error-count span {
+    display: inline-block;
+    background-color: #aacd4e;
+    -moz-border-radius: 6px;
+    -webkit-border-radius: 6px;
+    border-radius: 6px;
+    padding: 4px;
+    color: white;
+    margin-right: 2px;
+    font-size: 11px;
+    font-weight: bold;
+}
+.sf-reset .toggle {
+    vertical-align: middle;
+}
+.sf-reset .linked ul,
+.sf-reset .linked li {
+    display: inline;
+}
+.sf-reset #output-content {
+    color: #000;
+    font-size: 12px;
+}

+ 72 - 0
php-symfony2-stripped/web/bundles/framework/css/structure.css

@@ -0,0 +1,72 @@
+html {
+    background: #eee;
+}
+body {
+    font: 11px Verdana, Arial, sans-serif;
+    color: #333;
+}
+.sf-reset, .sf-reset .block, .sf-reset #message {
+    margin: auto;
+}
+img {
+    border: 0;
+}
+.clear {
+    clear: both;
+    height: 0;
+    font-size: 0;
+    line-height: 0;
+}
+.clear-fix:after {
+    content: "\0020";
+    display: block;
+    height: 0;
+    clear: both;
+    visibility: hidden;
+}
+.clear-fix {
+    display: inline-block;
+}
+* html .clear-fix {
+    height: 1%;
+}
+.clear-fix {
+    display: block;
+}
+.header {
+    padding: 30px 30px 20px 30px;
+}
+.header-logo {
+    float: left;
+}
+.search {
+    float: right;
+    padding-top: 20px;
+}
+.search label {
+    line-height: 28px;
+    vertical-align: middle;
+}
+.search input {
+    width: 195px;
+    font-size: 12px;
+    border: 1px solid #dadada;
+    background: #fff url(data:image/gif;base64,R0lGODlhAQAFAKIAAPX19e/v7/39/fr6+urq6gAAAAAAAAAAACH5BAAAAAAALAAAAAABAAUAAAMESAEjCQA7) repeat-x left top;
+    padding: 5px 6px;
+    color: #565656;
+}
+.search input[type="search"] {
+    -webkit-appearance: textfield;
+}
+#content {
+    width: 970px;
+    margin: 0 auto;
+}
+pre {
+    white-space: normal;
+    font-family: Arial, Helvetica, sans-serif;
+}
+pre.xdebug-var-dump{
+    white-space: pre;
+    font-family: monospace;
+}

BIN
php-symfony2-stripped/web/bundles/framework/images/blue_picto_less.gif


BIN
php-symfony2-stripped/web/bundles/framework/images/blue_picto_more.gif


BIN
php-symfony2-stripped/web/bundles/framework/images/grey_magnifier.png


BIN
php-symfony2-stripped/web/bundles/framework/images/logo_symfony.png


+ 124 - 0
php-symfony2-stripped/web/config.php

@@ -0,0 +1,124 @@
+<?php
+
+if (!isset($_SERVER['HTTP_HOST'])) {
+    exit('This script cannot be run from the CLI. Run it from a browser.');
+}
+
+if (!in_array(@$_SERVER['REMOTE_ADDR'], array(
+    '127.0.0.1',
+    '::1',
+))) {
+    header('HTTP/1.0 403 Forbidden');
+    exit('This script is only accessible from localhost.');
+}
+
+require_once dirname(__FILE__).'/../app/SymfonyRequirements.php';
+
+$symfonyRequirements = new SymfonyRequirements();
+
+$majorProblems = $symfonyRequirements->getFailedRequirements();
+$minorProblems = $symfonyRequirements->getFailedRecommendations();
+
+?>
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <meta name="robots" content="noindex,nofollow" />
+        <title>Symfony Configuration</title>
+        <link rel="stylesheet" href="bundles/framework/css/structure.css" media="all" />
+        <link rel="stylesheet" href="bundles/framework/css/body.css" media="all" />
+        <link rel="stylesheet" href="bundles/sensiodistribution/webconfigurator/css/install.css" media="all" />
+    </head>
+    <body>
+        <div id="content">
+            <div class="header clear-fix">
+                <div class="header-logo">
+                    <img src="bundles/framework/images/logo_symfony.png" alt="Symfony" />
+                </div>
+
+                <div class="search">
+                  <form method="get" action="http://symfony.com/search">
+                    <div class="form-row">
+
+                      <label for="search-id">
+                          <img src="bundles/framework/images/grey_magnifier.png" alt="Search on Symfony website" />
+                      </label>
+
+                      <input name="q" id="search-id" type="search" placeholder="Search on Symfony website" />
+
+                      <button type="submit" class="sf-button">
+                          <span class="border-l">
+                            <span class="border-r">
+                                <span class="btn-bg">OK</span>
+                            </span>
+                        </span>
+                      </button>
+                    </div>
+                   </form>
+                </div>
+            </div>
+
+            <div class="sf-reset">
+                <div class="block">
+                    <div class="symfony-block-content">
+                        <h1 class="title">Welcome!</h1>
+                        <p>Welcome to your new Symfony project.</p>
+                        <p>
+                            This script will guide you through the basic configuration of your project.
+                            You can also do the same by editing the ‘<strong>app/config/parameters.yml</strong>’ file directly.
+                        </p>
+
+                        <?php if (count($majorProblems)): ?>
+                            <h2 class="ko">Major problems</h2>
+                            <p>Major problems have been detected and <strong>must</strong> be fixed before continuing:</p>
+                            <ol>
+                                <?php foreach ($majorProblems as $problem): ?>
+                                    <li><?php echo $problem->getHelpHtml() ?></li>
+                                <?php endforeach; ?>
+                            </ol>
+                        <?php endif; ?>
+
+                        <?php if (count($minorProblems)): ?>
+                            <h2>Recommendations</h2>
+                            <p>
+                                <?php if (count($majorProblems)): ?>Additionally, to<?php else: ?>To<?php endif; ?> enhance your Symfony experience,
+                                it’s recommended that you fix the following:
+                            </p>
+                            <ol>
+                                <?php foreach ($minorProblems as $problem): ?>
+                                    <li><?php echo $problem->getHelpHtml() ?></li>
+                                <?php endforeach; ?>
+                            </ol>
+                        <?php endif; ?>
+
+                        <?php if ($symfonyRequirements->hasPhpIniConfigIssue()): ?>
+                            <p id="phpini">*
+                                <?php if ($symfonyRequirements->getPhpIniConfigPath()): ?>
+                                    Changes to the <strong>php.ini</strong> file must be done in "<strong><?php echo $symfonyRequirements->getPhpIniConfigPath() ?></strong>".
+                                <?php else: ?>
+                                    To change settings, create a "<strong>php.ini</strong>".
+                                <?php endif; ?>
+                            </p>
+                        <?php endif; ?>
+
+                        <?php if (!count($majorProblems) && !count($minorProblems)): ?>
+                            <p class="ok">Your configuration looks good to run Symfony.</p>
+                        <?php endif; ?>
+
+                        <ul class="symfony-install-continue">
+                            <?php if (!count($majorProblems)): ?>
+                                <li><a href="app_dev.php/_configurator/">Configure your Symfony Application online</a></li>
+                                <li><a href="app_dev.php/">Bypass configuration and go to the Welcome page</a></li>
+                            <?php endif; ?>
+                            <?php if (count($majorProblems) || count($minorProblems)): ?>
+                                <li><a href="config.php">Re-check configuration</a></li>
+                            <?php endif; ?>
+                        </ul>
+                    </div>
+                </div>
+            </div>
+            <div class="version">Symfony Standard Edition</div>
+        </div>
+    </body>
+</html>

BIN
php-symfony2-stripped/web/favicon.ico


+ 4 - 0
php-symfony2-stripped/web/robots.txt

@@ -0,0 +1,4 @@
+# www.robotstxt.org/
+# www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449
+
+User-agent: *

+ 23 - 5
php-symfony2/app/SymfonyRequirements.php

@@ -16,7 +16,7 @@
  *
  * ************** CAUTION **************
  *
- * DO NOT EDIT THIS FILE as it will be overriden by Composer as part of
+ * DO NOT EDIT THIS FILE as it will be overridden by Composer as part of
  * the installation/update process. The original file resides in the
  * SensioDistributionBundle.
  *
@@ -307,7 +307,7 @@ class RequirementCollection implements IteratorAggregate
     }
 
     /**
-     * Returns all optional recommmendations.
+     * Returns all optional recommendations.
      *
      * @return array Array of Requirement instances
      */
@@ -554,6 +554,20 @@ class SymfonyRequirements extends RequirementCollection
             'Your project might not work properly due to the PHP bug #61453 ("Cannot dump definitions which have method calls"). Install PHP 5.4.1 or newer.'
         );
 
+        $this->addRecommendation(
+            version_compare($installedPhpVersion, '5.4.11', '>='),
+            'When using the logout handler from the Symfony Security Component, you should have at least PHP 5.4.11 due to PHP bug #63379 (as a workaround, you can also set invalidate_session to false in the security logout handler configuration)',
+            'Install PHP 5.4.11 or newer if your project uses the logout handler from the Symfony Security Component.'
+        );
+
+        $this->addRecommendation(
+            (version_compare($installedPhpVersion, '5.3.18', '>=') && version_compare($installedPhpVersion, '5.4.0', '<'))
+            ||
+            version_compare($installedPhpVersion, '5.4.8', '>='),
+            'You should use PHP 5.3.18+ or PHP 5.4.8+ to always get nice error messages for fatal errors in the development environment due to PHP bug #61767/#60909',
+            'Install PHP 5.3.18+ or PHP 5.4.8+ if you want nice error messages for all fatal errors in the development environment.'
+        );
+
         if (null !== $pcreVersion) {
             $this->addRecommendation(
                 $pcreVersion >= 8.0,
@@ -630,11 +644,15 @@ class SymfonyRequirements extends RequirementCollection
         }
 
         $accelerator =
-            (function_exists('apc_store') && ini_get('apc.enabled'))
+            (extension_loaded('eaccelerator') && ini_get('eaccelerator.enable'))
+            ||
+            (extension_loaded('apc') && ini_get('apc.enabled'))
+            ||
+            (extension_loaded('Zend OPcache') && ini_get('opcache.enable'))
             ||
-            function_exists('eaccelerator_put') && ini_get('eaccelerator.enable')
+            (extension_loaded('xcache') && ini_get('xcache.cacher'))
             ||
-            function_exists('xcache_set')
+            (extension_loaded('wincache') && ini_get('wincache.ocenabled'))
         ;
 
         $this->addRecommendation(

+ 7 - 8
php-symfony2/app/bootstrap.php.cache

@@ -234,7 +234,7 @@ return isset($this->scopedServices[$name]);
 }
 public static function camelize($id)
 {
-return preg_replace_callback('/(^|_|\.)+(.)/', function ($match) { return ('.'=== $match[1] ?'_':'').strtoupper($match[2]); }, $id);
+return strtr(ucwords(strtr($id, array('_'=>' ','.'=>'_ '))), array(' '=>''));
 }
 public static function underscore($id)
 {
@@ -325,13 +325,12 @@ protected $debug;
 protected $booted;
 protected $name;
 protected $startTime;
-protected $classes;
 protected $errorReportingLevel;
-const VERSION ='2.2.1';
-const VERSION_ID ='20101';
+const VERSION ='2.2.8';
+const VERSION_ID ='20208';
 const MAJOR_VERSION ='2';
 const MINOR_VERSION ='2';
-const RELEASE_VERSION ='1';
+const RELEASE_VERSION ='8';
 const EXTRA_VERSION ='';
 public function __construct($environment, $debug)
 {
@@ -340,7 +339,6 @@ $this->debug = (Boolean) $debug;
 $this->booted = false;
 $this->rootDir = $this->getRootDir();
 $this->name = $this->getName();
-$this->classes = array();
 $this->bundles = array();
 if ($this->debug) {
 $this->startTime = microtime(true);
@@ -352,7 +350,9 @@ public function init()
 ini_set('display_errors', 0);
 if ($this->debug) {
 error_reporting(-1);
+if (class_exists('Symfony\Component\ClassLoader\DebugClassLoader')) {
 DebugClassLoader::enable();
+}
 ErrorHandler::register($this->errorReportingLevel);
 if ('cli'!== php_sapi_name()) {
 ExceptionHandler::register();
@@ -876,7 +876,7 @@ if ($relativePath = $file->getRelativePath()) {
 $ns .='\\'.strtr($relativePath,'/','\\');
 }
 $r = new \ReflectionClass($ns.'\\'.$file->getBasename('.php'));
-if ($r->isSubclassOf('Symfony\\Component\\Console\\Command\\Command') && !$r->isAbstract()) {
+if ($r->isSubclassOf('Symfony\\Component\\Console\\Command\\Command') && !$r->isAbstract() && !$r->getConstructor()->getNumberOfRequiredParameters()) {
 $application->add($r->newInstance());
 }
 }
@@ -1078,7 +1078,6 @@ return (string) $var;
 namespace Symfony\Component\HttpKernel\DependencyInjection
 {
 use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpKernel\HttpKernelInterface;
 use Symfony\Component\HttpKernel\HttpKernel;
 use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;

+ 1 - 1
php-symfony2/app/config/parameters.yml

@@ -1,6 +1,6 @@
 parameters:
     database_driver: pdo_mysql
-    database_host: 192.168.100.102
+    database_host: tfbdata
     database_port: null
     database_name: hello_world
     database_user: benchmarkdbuser

+ 1 - 1
php-symfony2/deploy/nginx.conf

@@ -66,7 +66,7 @@ http {
         #    proxy_pass   http://127.0.0.1;
         #}
 
-        root /home/ubuntu/FrameworkBenchmarks/php-symfony2/web/;
+        root /home/tfb/FrameworkBenchmarks/php-symfony2/web/;
         index  app.php;
 
         location / {

+ 22 - 0
play-scala/benchmark_config

@@ -22,6 +22,28 @@
       "display_name": "play-scala",
       "notes": "",
       "versus": "netty"
+    },
+    "windows-default": {
+      "setup_file": "setup",
+      "json_url": "/json",
+      "db_url": "/db",
+      "query_url": "/db?queries=",
+      "fortune_url": "/fortunes",
+      "update_url": "/update?queries=",
+      "port": 9000,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "play-scala",
+      "language": "Scala",
+      "orm": "Full",
+      "platform": "Netty",
+      "webserver": "None",
+      "os": "Windows",
+      "database_os": "Linux",
+      "display_name": "play-scala",
+      "notes": "",
+      "versus": "netty"
     }
   }]
 }

+ 24 - 3
play-scala/setup.py

@@ -1,12 +1,33 @@
 import setup_util
 import subprocess
+import os
 
 def start(args):
+  kill_running_process() # Kill the running process and delete the 
+                         # RUNNING_PID file (if any). With any luck no 
+                         # new process has picked up the same PID.
+
+  play_cmd = "play"
+  if args.os.lower() == "windows":
+    play_cmd = "play.bat"
+  
   setup_util.replace_text("play-scala/conf/application.conf", "jdbc:mysql:\/\/.*:3306", "jdbc:mysql://" + args.database_host + ":3306")
-  subprocess.Popen(["play","start"], stdin=subprocess.PIPE, cwd="play-scala")
+  subprocess.Popen([play_cmd,"start"], stdin=subprocess.PIPE, cwd="play-scala")
   return 0
 
 def stop():
-  p = subprocess.Popen(["play","stop"], cwd="play-scala")
-  p.communicate()
+  kill_running_process()  
   return 0
+
+def kill_running_process():
+  try:
+    with open("./play-scala/RUNNING_PID") as f:
+      pid = int(f.read())
+      os.kill(pid, 9)
+  except:
+  	pass
+
+  try:
+    os.remove("play-scala/RUNNING_PID")
+  except OSError:
+    pass  

+ 29 - 21
servicestack/README.md

@@ -10,30 +10,37 @@
 
 * `http://localhost:8080/plaintext`
 
----
-
-### ServiceStack - OrmLite (ORM)
+### Database Responses
 
-**[Microsoft SQL Server](http://www.nuget.org/packages/ServiceStack.OrmLite.SqlServer)**
+**Microsoft SQL Server** using ORMLite
 
 * `http://localhost:8080/sqlserver/db`
-* `http://localhost:8080/sqlserver/queries?queries=10`
+* `http://localhost:8080/sqlserver/queries/10`
 * `http://localhost:8080/sqlserver/fortunes`
-* `http://localhost:8080/sqlserver/updates?queries=25`
+* `http://localhost:8080/sqlserver/updates/25`
 
-**[MySQL](http://www.nuget.org/packages/ServiceStack.OrmLite.MySql)**
+**MySQL** using ORMLite
 
 * `http://localhost:8080/mysql/db`
-* `http://localhost:8080/mysql/queries?queries=10`
+* `http://localhost:8080/mysql/queries/10`
 * `http://localhost:8080/mysql/fortunes`
-* `http://localhost:8080/mysql/updates?queries=25`
+* `http://localhost:8080/mysql/updates/25`
 
-**[PostgreSQL](http://www.nuget.org/packages/ServiceStack.OrmLite.PostgreSql)**
+**PostgreSQL** using ORMLite
 
 * `http://localhost:8080/postgresql/db`
-* `http://localhost:8080/postgresql/queries?queries=10`
+* `http://localhost:8080/postgresql/queries/10`
 * `http://localhost:8080/postgresql/fortunes`
-* `http://localhost:8080/postgresql/updates?queries=25`
+* `http://localhost:8080/postgresql/updates/25`
+
+**MongoDB**
+
+* `http://localhost:8080/mongodb/db`
+* `http://localhost:8080/mongodb/queries/10`
+* `http://localhost:8080/mongodb/fortunes`
+* `http://localhost:8080/mongodb/updates/25`
+
+---
 
 ## Mono Installation
 
@@ -70,7 +77,7 @@
 **Web Servers**
 
 * Self Hosting using HTTPListener (Windows/Linux)
-* IIS 8 (Windows)
+* IIS 8 (Windows) - includes [Swagger](http://www.nuget.org/packages/ServiceStack.Api.Swagger/)
 * nginx 1.4.0 & XSP FastCGI (Linux)
 
 **Web Stack**
@@ -78,19 +85,20 @@
 * ASP.NET 4.5
 * [ServiceStack](https://github.com/servicestack/servicestack/wiki)
 
-**Databases**
+**Database Providers**
 
-* Microsoft SQL Server 2005+
-* [MySQL 5.x](http://www.nuget.org/packages/mysql.data) 
-* [PostgreSQL 7.x](http://www.nuget.org/packages/Npgsql)
+* Microsoft SQL Server - [interface](http://www.nuget.org/packages/ServiceStack.OrmLite.SqlServer/)
+* MySQL - [driver](http://www.nuget.org/packages/MySql.Data/) + [interface](http://www.nuget.org/packages/ServiceStack.OrmLite.MySql/)
+* PostgreSQL - [driver](http://www.nuget.org/packages/Npgsql/) + [interface](http://www.nuget.org/packages/ServiceStack.OrmLite.PostgreSQL/)
+* MongoDB - [driver](http://www.nuget.org/packages/mongocsharpdriver/)
 
 **Caching Providers**
 
 * In-Memory
-* Redis NoSQL Db - [redis]()  [ServiceStack package](http://www.nuget.org/packages/ServiceStack.Redis)
-* MemCache - [memcache](http://www.nuget.org/packages/EnyimMemcached)  [ServiceStack package](http://www.nuget.org/packages/ServiceStack.Caching.Memcached)
-* Amazon Web Services In-Memory DynamoDb DataCache - [aws](http://www.nuget.org/packages/AWSSDK)  [ServiceStack package](http://www.nuget.org/packages/ServiceStack.Caching.AwsDynamoDb)
-* Microsoft Azure In-Memory DataCache - [azure](http://www.nuget.org/packages/WindowsAzure.Caching)  [ServiceStack package](http://www.nuget.org/packages/ServiceStack.Caching.Azure)
+* Redis NoSQL Db - [client w/interface](http://www.nuget.org/packages/ServiceStack.Redis)
+* MemCache - [client](http://www.nuget.org/packages/EnyimMemcached) + [interface](http://www.nuget.org/packages/ServiceStack.Caching.Memcached)
+* Amazon Web Services In-Memory DynamoDb DataCache - [client](http://www.nuget.org/packages/AWSSDK) + [interface](http://www.nuget.org/packages/ServiceStack.Caching.AwsDynamoDb)
+* Microsoft Azure In-Memory DataCache - [client](http://www.nuget.org/packages/WindowsAzure.Caching) + [interface](http://www.nuget.org/packages/ServiceStack.Caching.Azure)
 
 **Developer Tools**
 

+ 64 - 0
servicestack/benchmark_config

@@ -83,6 +83,28 @@
       "notes": "",
       "versus": ""
     },
+    "iis-mongodb": {
+      "setup_file": "setup_iis",
+      "os": "nt",
+      "db_url": "/mongodb/db",
+      "query_url": "/mongodb/queries/",
+      "fortune_url": "/mongodb/fortunes",
+      "update_url": "/mongodb/updates/",
+      "port": 8080,
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MongoDB",
+      "framework": "servicestack",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "NET",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "Linux",
+      "display_name": "servicestack",
+      "notes": "",
+      "versus": ""
+    },
     "nginx-default": {
       "setup_file": "setup_nginx",
       "json_url": "/json",
@@ -165,6 +187,27 @@
       "notes": "",
       "versus": ""
     },
+    "nginx-mongodb": {
+      "setup_file": "setup_nginx",
+      "db_url": "/mongodb/db",
+      "query_url": "/mongodb/queries/",
+      "fortune_url": "/mongodb/fortunes",
+      "update_url": "/mongodb/updates/",
+      "port": 8080,
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MongoDB",
+      "framework": "servicestack",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "Mono",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "servicestack",
+      "notes": "",
+      "versus": ""
+    },
     "xsp-default": {
       "setup_file": "setup_xsp",
       "json_url": "/json",
@@ -246,6 +289,27 @@
       "display_name": "servicestack",
       "notes": "",
       "versus": ""
+    },
+    "xsp-mongodb": {
+      "setup_file": "setup_xsp",
+      "db_url": "/mongodb/db",
+      "query_url": "/mongodb/queries/",
+      "fortune_url": "/mongodb/fortunes",
+      "update_url": "/mongodb/updates/",
+      "port": 8080,
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MongoDB",
+      "framework": "servicestack",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "Mono",
+      "webserver": "XSP",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "servicestack",
+      "notes": "",
+      "versus": ""
     }
   }]
 }

BIN
servicestack/lib/AWSSDK.1.5.28.3/AWSSDK.1.5.28.3.nupkg


BIN
servicestack/lib/AWSSDK.1.5.28.3/lib/AWSSDK.dll


BIN
servicestack/lib/AWSSDK.2.0.0.4-beta/AWSSDK.2.0.0.4-beta.nupkg


+ 7 - 2
servicestack/lib/AWSSDK.1.5.28.3/AWSSDK.1.5.28.3.nuspec → servicestack/lib/AWSSDK.2.0.0.4-beta/AWSSDK.2.0.0.4-beta.nuspec

@@ -1,8 +1,8 @@
 <?xml version="1.0"?>
-<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
+<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
   <metadata>
     <id>AWSSDK</id>
-    <version>1.5.28.3</version>
+    <version>2.0.0.4-beta</version>
     <title>AWS SDK for .NET</title>
     <authors>Amazon Web Services</authors>
     <owners>Amazon Web Services</owners>
@@ -13,5 +13,10 @@
     <description>Build applications that tap into the cost-effective, scalable, and reliable AWS cloud. Get started in minutes using AWS infrastructure services, including Amazon Simple Storage Service (Amazon S3), Amazon Elastic Compute Cloud (Amazon EC2), and Amazon SimpleDB.</description>
     <language>en-US</language>
     <tags>AWS Amazon cloud</tags>
+    <dependencies>
+      <group targetFramework="WindowsPhone8.0">
+        <dependency id="Microsoft.Net.Http" version="2.1.10" />
+      </group>
+    </dependencies>
   </metadata>
 </package>

BIN
servicestack/lib/AWSSDK.2.0.0.4-beta/lib/net35/AWSSDK.dll


BIN
servicestack/lib/AWSSDK.2.0.0.4-beta/lib/net45/AWSSDK.dll


BIN
servicestack/lib/AWSSDK.2.0.0.4-beta/lib/windows8/AWSSDK.dll


BIN
servicestack/lib/AWSSDK.2.0.0.4-beta/lib/windowsphone8/AWSSDK.dll


+ 505 - 0
servicestack/lib/Microsoft.Bcl.1.0.19/License.rtf

@@ -0,0 +1,505 @@
+{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff40\deff0\stshfdbch0\stshfloch31506\stshfhich31506\stshfbi31506\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs1025{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
+{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}
+{\f11\fbidi \fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt ?l?r ??\'81\'66c};}{\f13\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ????\'a8\'ac??};}
+{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\f39\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Trebuchet MS{\*\falt Arial};}
+{\f40\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Tahoma{\*\falt ?? ??};}{\f41\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@SimSun;}{\f42\fbidi \fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}@MS Mincho;}
+{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\fbiminor\f31507\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}{\f44\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
+{\f45\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\f47\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f48\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f49\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\f50\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f51\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f52\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f64\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}
+{\f65\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}{\f67\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f68\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f69\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}
+{\f70\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f71\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f72\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}
+{\f156\fbidi \fmodern\fcharset0\fprq1 MS Mincho Western{\*\falt ?l?r ??\'81\'66c};}{\f154\fbidi \fmodern\fcharset238\fprq1 MS Mincho CE{\*\falt ?l?r ??\'81\'66c};}{\f155\fbidi \fmodern\fcharset204\fprq1 MS Mincho Cyr{\*\falt ?l?r ??\'81\'66c};}
+{\f157\fbidi \fmodern\fcharset161\fprq1 MS Mincho Greek{\*\falt ?l?r ??\'81\'66c};}{\f158\fbidi \fmodern\fcharset162\fprq1 MS Mincho Tur{\*\falt ?l?r ??\'81\'66c};}{\f161\fbidi \fmodern\fcharset186\fprq1 MS Mincho Baltic{\*\falt ?l?r ??\'81\'66c};}
+{\f176\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt ????\'a8\'ac??};}{\f384\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f385\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}{\f387\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}
+{\f388\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f391\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f392\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}{\f434\fbidi \fswiss\fcharset238\fprq2 Trebuchet MS CE{\*\falt Arial};}
+{\f435\fbidi \fswiss\fcharset204\fprq2 Trebuchet MS Cyr{\*\falt Arial};}{\f437\fbidi \fswiss\fcharset161\fprq2 Trebuchet MS Greek{\*\falt Arial};}{\f438\fbidi \fswiss\fcharset162\fprq2 Trebuchet MS Tur{\*\falt Arial};}
+{\f441\fbidi \fswiss\fcharset186\fprq2 Trebuchet MS Baltic{\*\falt Arial};}{\f444\fbidi \fswiss\fcharset238\fprq2 Tahoma CE{\*\falt ?? ??};}{\f445\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr{\*\falt ?? ??};}
+{\f447\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek{\*\falt ?? ??};}{\f448\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur{\*\falt ?? ??};}{\f449\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew){\*\falt ?? ??};}
+{\f450\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic){\*\falt ?? ??};}{\f451\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic{\*\falt ?? ??};}{\f452\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese){\*\falt ?? ??};}
+{\f453\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai){\*\falt ?? ??};}{\f456\fbidi \fnil\fcharset0\fprq2 @SimSun Western;}{\f466\fbidi \fmodern\fcharset0\fprq1 @MS Mincho Western;}{\f464\fbidi \fmodern\fcharset238\fprq1 @MS Mincho CE;}
+{\f465\fbidi \fmodern\fcharset204\fprq1 @MS Mincho Cyr;}{\f467\fbidi \fmodern\fcharset161\fprq1 @MS Mincho Greek;}{\f468\fbidi \fmodern\fcharset162\fprq1 @MS Mincho Tur;}{\f471\fbidi \fmodern\fcharset186\fprq1 @MS Mincho Baltic;}
+{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
+{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
+{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
+{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
+{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}
+{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}
+{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
+{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
+{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
+{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
+{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
+{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
+{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\fbiminor\f31579\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}
+{\fbiminor\f31581\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\fbiminor\f31582\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\fbiminor\f31583\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}
+{\fbiminor\f31584\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\fbiminor\f31585\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\fbiminor\f31586\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
+\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
+\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\ctextone\ctint255\cshade255\red0\green0\blue0;}{\*\defchp \f31506\fs22 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1
+\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af40\afs19\alang1025 \ltrch\fcs0 
+\fs19\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 \snext0 \sautoupd \sqformat \spriority0 \styrsid15686224 Normal;}{\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls5\outlinelevel0\adjustright\rin0\lin357\itap0 \rtlch\fcs1 \ab\af40\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 
+\sbasedon0 \snext1 \slink15 \sqformat \styrsid15686224 heading 1;}{\s2\ql \fi-363\li720\ri0\sb120\sa120\widctlpar\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls5\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0 \rtlch\fcs1 
+\ab\af40\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext2 \slink16 \sqformat \styrsid15686224 heading 2;}{\s3\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar
+\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls5\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \af40\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 
+\sbasedon0 \snext3 \slink17 \sqformat \styrsid15686224 heading 3;}{\s4\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls5\ilvl3\outlinelevel3\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 
+\af40\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext4 \slink18 \sqformat \styrsid15686224 heading 4;}{\s5\ql \fi-357\li1792\ri0\sb120\sa120\widctlpar
+\tx1792\jclisttab\tx2155\wrapdefault\aspalpha\aspnum\faauto\ls5\ilvl4\outlinelevel4\adjustright\rin0\lin1792\itap0 \rtlch\fcs1 \af40\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 
+\sbasedon0 \snext5 \slink19 \sqformat \styrsid15686224 heading 5;}{\s6\ql \fi-357\li2149\ri0\sb120\sa120\widctlpar\jclisttab\tx2152\wrapdefault\aspalpha\aspnum\faauto\ls5\ilvl5\outlinelevel5\adjustright\rin0\lin2149\itap0 \rtlch\fcs1 
+\af40\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext6 \slink20 \sqformat \styrsid15686224 heading 6;}{\s7\ql \fi-357\li2506\ri0\sb120\sa120\widctlpar
+\jclisttab\tx2509\wrapdefault\aspalpha\aspnum\faauto\ls5\ilvl6\outlinelevel6\adjustright\rin0\lin2506\itap0 \rtlch\fcs1 \af40\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 
+\sbasedon0 \snext7 \slink21 \sqformat \styrsid15686224 heading 7;}{\s8\ql \fi-357\li2863\ri0\sb120\sa120\widctlpar\jclisttab\tx2866\wrapdefault\aspalpha\aspnum\faauto\ls5\ilvl7\outlinelevel7\adjustright\rin0\lin2863\itap0 \rtlch\fcs1 
+\af40\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext8 \slink22 \sqformat \styrsid15686224 heading 8;}{\s9\ql \fi-358\li3221\ri0\sb120\sa120\widctlpar
+\jclisttab\tx3223\wrapdefault\aspalpha\aspnum\faauto\ls5\ilvl8\outlinelevel8\adjustright\rin0\lin3221\itap0 \rtlch\fcs1 \af40\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 
+\sbasedon0 \snext9 \slink23 \sqformat \styrsid15686224 heading 9;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1
+\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31506\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}{\*\cs15 \additive 
+\rtlch\fcs1 \ab\af40\afs19 \ltrch\fcs0 \b\fs19\loch\f40\hich\af40\dbch\af11 \sbasedon10 \slink1 \slocked \styrsid15686224 Heading 1 Char;}{\*\cs16 \additive \rtlch\fcs1 \ab\af40\afs19 \ltrch\fcs0 \b\fs19\loch\f40\hich\af40\dbch\af11 
+\sbasedon10 \slink2 \slocked \styrsid15686224 Heading 2 Char;}{\*\cs17 \additive \rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \fs19\loch\f40\hich\af40\dbch\af11 \sbasedon10 \slink3 \slocked \styrsid15686224 Heading 3 Char;}{\*\cs18 \additive \rtlch\fcs1 
+\af40\afs19 \ltrch\fcs0 \fs19\loch\f40\hich\af40\dbch\af11 \sbasedon10 \slink4 \slocked \styrsid15686224 Heading 4 Char;}{\*\cs19 \additive \rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \fs19\loch\f40\hich\af40\dbch\af11 
+\sbasedon10 \slink5 \slocked \styrsid15686224 Heading 5 Char;}{\*\cs20 \additive \rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \fs19\loch\f40\hich\af40\dbch\af11 \sbasedon10 \slink6 \slocked \styrsid15686224 Heading 6 Char;}{\*\cs21 \additive \rtlch\fcs1 
+\af40\afs19 \ltrch\fcs0 \fs19\loch\f40\hich\af40\dbch\af11 \sbasedon10 \slink7 \slocked \styrsid15686224 Heading 7 Char;}{\*\cs22 \additive \rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \fs19\loch\f40\hich\af40\dbch\af11 
+\sbasedon10 \slink8 \slocked \styrsid15686224 Heading 8 Char;}{\*\cs23 \additive \rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \fs19\loch\f40\hich\af40\dbch\af11 \sbasedon10 \slink9 \slocked \styrsid15686224 Heading 9 Char;}{
+\s24\ql \li357\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin357\itap0 \rtlch\fcs1 \af40\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 
+\sbasedon0 \snext24 \styrsid15686224 Body 1;}{\s25\ql \fi-363\li720\ri0\sb120\sa120\widctlpar\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af40\afs19\alang1025 \ltrch\fcs0 
+\fs19\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext25 \styrsid15686224 Bullet 2;}{\s26\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar
+\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \af40\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 
+\sbasedon0 \snext26 \styrsid15686224 Bullet 4;}{\s27\ql \fi-357\li1792\ri0\sb120\sa120\widctlpar\jclisttab\tx1795\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin1792\itap0 \rtlch\fcs1 \af40\afs19\alang1025 \ltrch\fcs0 
+\fs19\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext27 \styrsid15686224 Bullet 5;}{\s28\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\ab\af40\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \styrsid15686224 Heading EULA;}{\s29\ql \li0\ri0\sb120\sa120\widctlpar\brdrb\brdrs\brdrw10\brsp20 
+\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af40\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \styrsid15686224 
+Heading Software Title;}{\s30\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af40\afs19\alang1025 \ltrch\fcs0 
+\b\fs19\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext30 \styrsid15686224 Preamble;}{\s31\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar
+\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls4\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \ab\af40\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 
+\sbasedon3 \snext31 \slink38 \styrsid15686224 Heading 3 Bold;}{\s32\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \af40\afs19\alang1025 \ltrch\fcs0 
+\fs19\ul\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon26 \snext32 \styrsid15686224 Bullet 4 Underline;}{\*\cs33 \additive \rtlch\fcs1 \af40 \ltrch\fcs0 \f40\lang1033\langfe1033\langnp1033\langfenp1033 
+\sbasedon10 \styrsid15686224 Body 2 Char;}{\*\cs34 \additive \rtlch\fcs1 \af40 \ltrch\fcs0 \f40\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 \styrsid15686224 Body 3 Char;}{\s35\ql \li0\ri0\sb120\sa120\widctlpar\brdrt\brdrs\brdrw10\brsp20 
+\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af40\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon30 \snext35 \styrsid15686224 
+Preamble Border Above;}{\*\cs36 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf2 \sbasedon10 \styrsid15686224 Hyperlink,Char Char7;}{\s37\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\ab\af40\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 \snext0 \slink39 \styrsid15686224 Body 0 Bold;}{\*\cs38 \additive \rtlch\fcs1 \ab\af40\afs19 \ltrch\fcs0 
+\b\fs19\loch\f40\hich\af40\dbch\af11 \sbasedon10 \slink31 \slocked \styrsid15686224 Heading 3 Bold Char;}{\*\cs39 \additive \rtlch\fcs1 \ab\af40\afs19 \ltrch\fcs0 \b\fs19\loch\f40\hich\af40\dbch\af11 \sbasedon10 \slink37 \slocked \styrsid15686224 
+Body 0 Bold Char;}{\*\cs40 \additive \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \f40\fs20 \sbasedon10 \slink41 \slocked \styrsid15686224 Bullet 3 Char1;}{\s41\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar
+\jclisttab\tx1080\wrapdefault\aspalpha\aspnum\faauto\ls7\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \af40\afs20\alang1025 \ltrch\fcs0 \f40\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext41 \slink40 \styrsid15686224 Bullet 3;}{
+\s42\ql \fi-357\li357\ri0\sb120\sa120\widctlpar\jclisttab\tx1080\wrapdefault\aspalpha\aspnum\faauto\ls9\adjustright\rin0\lin357\itap0 \rtlch\fcs1 \af40\afs20\alang1025 \ltrch\fcs0 \f40\fs20\ul\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 
+\sbasedon41 \snext42 \sautoupd \styrsid15686224 Bullet 3 Underline;}{\s43\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af40\afs16\alang1025 \ltrch\fcs0 
+\fs16\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext43 \slink44 \ssemihidden \sunhideused \styrsid3699522 Balloon Text;}{\*\cs44 \additive \rtlch\fcs1 \af40\afs16 \ltrch\fcs0 
+\fs16\loch\f40\hich\af40\dbch\af11 \sbasedon10 \slink43 \slocked \ssemihidden \styrsid3699522 Balloon Text Char;}{\*\cs45 \additive \rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \fs16 \sbasedon10 \ssemihidden \sunhideused \styrsid3699522 annotation reference;}{
+\s46\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af40\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 
+\sbasedon0 \snext46 \slink47 \ssemihidden \sunhideused \styrsid3699522 annotation text;}{\*\cs47 \additive \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\f40\hich\af40\dbch\af11 \sbasedon10 \slink46 \slocked \ssemihidden \styrsid3699522 
+Comment Text Char;}{\s48\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af40\afs20\alang1025 \ltrch\fcs0 
+\b\fs20\lang1033\langfe1033\loch\f40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon46 \snext46 \slink49 \ssemihidden \sunhideused \styrsid3699522 annotation subject;}{\*\cs49 \additive \rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 
+\b\fs20\loch\f40\hich\af40\dbch\af11 \sbasedon47 \slink48 \slocked \ssemihidden \styrsid3699522 Comment Subject Char;}}{\*\listtable{\list\listtemplateid1928476992{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
+\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af39\afs20 \ltrch\fcs0 \b\i0\f39\fs20\fbias0 \fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
+\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af39\afs20 \ltrch\fcs0 \b\i0\f39\fs20\fbias0 \fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
+\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \s31\fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
+\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af39\afs20 \ltrch\fcs0 \b0\i0\strike0\f39\fs20\ulnone\fbias0 \fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1\levelnfcn1\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af39\afs20 \ltrch\fcs0 \b0\i0\strike0\f39\fs20\ulnone\fbias0 \fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af39\afs20 \ltrch\fcs0 \b0\i0\f39\fs20\fbias0 \fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af39\afs20 \ltrch\fcs0 \b0\i0\f39\fs20\fbias0 \fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255\levelnfcn255\leveljc0
+\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af39\afs20 \ltrch\fcs0 \b0\i0\f39\fs20\fbias0 \fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255\levelnfcn255\leveljc0
+\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af39\afs20 \ltrch\fcs0 \b0\i0\f39\fs20\fbias0 \fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname ;}\listid398796681}
+{\list\listtemplateid789093748\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid-317712510\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s25\fi-363\li720
+\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel
+\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23
+\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
+{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691
+\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid477573462}{\list\listtemplateid1904874988{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers
+\'01;}\rtlch\fcs1 \ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\cf0\fbias0 \s1\fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers
+\'01;}\rtlch\fcs1 \ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \s2\fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers
+\'01;}\rtlch\fcs1 \ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \s3\fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers
+\'01;}\rtlch\fcs1 \ab0\ai0\af39\afs20 \ltrch\fcs0 \b0\i0\strike0\f39\fs20\ulnone\fbias0 \s4\fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1\levelnfcn1\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af39\afs20 \ltrch\fcs0 \b0\i0\strike0\f39\fs20\ulnone\fbias0 \s5\fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
+\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af39\afs20 \ltrch\fcs0 \b0\i0\f39\fs20\fbias0 \s6\fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af39\afs20 \ltrch\fcs0 \b0\i0\f39\fs20\fbias0 \s7\fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levelspace0\levelindent0{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af39\afs20 \ltrch\fcs0 \b0\i0\f39\fs20\fbias0 \s8\fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levelspace0\levelindent0{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af39\afs20 \ltrch\fcs0 \b0\i0\f39\fs20\fbias0 \s9\fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname ;}\listid752163927}{\list\listtemplateid285099256
+\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid-308626962\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s42\fi-357\li1077\jclisttab\tx1080\lin1077 }{\listlevel
+\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0
+\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
+\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689
+\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}
+\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480
+\jclisttab\tx6480\lin6480 }{\listname ;}\listid1121073746}{\list\listtemplateid303218272\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid612407812
+\'01\u-3913 ?;}{\levelnumbers;}\f3\cf17\fbias0 \s26\fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 
+\fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel
+\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 
+\fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23
+\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1559511898}{\list\listtemplateid-743794326\listhybrid
+{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid1229593488\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s41\fi-357\li1077\jclisttab\tx1080\lin1077 }{\listlevel\levelnfc23
+\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
+{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
+\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760
+\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }
+{\listname ;}\listid1567649130}{\list\listtemplateid-961874242\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid-1175557160\'01\u-3913 ?;}{\levelnumbers;}
+\f3\fbias0 \s27\fi-357\li1792\jclisttab\tx1795\lin1792 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440
+\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }
+{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23
+\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
+{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1848404271}}{\*\listoverridetable{\listoverride\listid477573462\listoverridecount0\ls1}{\listoverride\listid1559511898\listoverridecount0\ls2}
+{\listoverride\listid1848404271\listoverridecount0\ls3}{\listoverride\listid398796681\listoverridecount0\ls4}{\listoverride\listid752163927\listoverridecount0\ls5}{\listoverride\listid398796681\listoverridecount9{\lfolevel\listoverridestartat
+\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel
+\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}\ls6}{\listoverride\listid1567649130\listoverridecount0\ls7}{\listoverride\listid1559511898\listoverridecount0\ls8}
+{\listoverride\listid1121073746\listoverridecount0\ls9}{\listoverride\listid752163927\listoverridecount0\ls10}}{\*\pgptbl {\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp5\itap0\li0\ri0\sb0\sa300}{\pgp\ipgp2\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0
+\sa0}{\pgp\ipgp7\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp1\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp6\itap0\li0\ri0\sb0\sa0}}{\*\rsidtbl \rsid874403\rsid1473980\rsid2177578\rsid2693076\rsid3699522\rsid4000782\rsid4423363\rsid6097754\rsid7214391\rsid8995160\rsid10246973
+\rsid12062545\rsid13846008\rsid14566738\rsid14751308\rsid15014299\rsid15467703\rsid15686224\rsid15928942\rsid15934954}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info
+{\author kathan}{\operator Alok Shriram}{\creatim\yr2013\mo3\dy20\hr15\min24}{\revtim\yr2013\mo4\dy3\hr11\min6}{\version5}{\edmins3}{\nofpages4}{\nofwords1342}{\nofchars7656}{\*\company Microsoft Corporation}{\nofcharsws8981}{\vern57427}}
+{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect 
+\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen
+\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1440\dgvorigin1440\dghshow1\dgvshow1
+\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
+\asianbrkrule\rsidroot15686224\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0
+{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang 
+{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang 
+{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
+\pard\plain \ltrpar\s28\ql \li0\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15686224 \rtlch\fcs1 \ab\af40\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 MICROSOFT SOFTWARE LICENSE TERMS
+\par }\pard\plain \ltrpar\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14566738 \rtlch\fcs1 \af40\afs19\alang1025 \ltrch\fcs0 
+\fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\dbch\af13\insrsid15686224\charrsid7214391 \hich\af40\dbch\af13\loch\f40 MICROSOFT }{\rtlch\fcs1 \ab\af40\afs20 
+\ltrch\fcs0 \b\fs20\dbch\af13\insrsid13846008 \hich\af40\dbch\af13\loch\f40 BCL }{\rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\dbch\af13\insrsid10246973 \hich\af40\dbch\af13\loch\f40 Portability Pack for .Net \hich\af40\dbch\af13\loch\f40 P
+\hich\af40\dbch\af13\loch\f40 latforms }{\rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\dbch\af13\insrsid7214391\charrsid7214391 \hich\af40\dbch\af13\loch\f40 PACKAGE}{\rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 
+\b\fs20\dbch\af13\insrsid15686224\charrsid7214391 \hich\af40\dbch\af13\loch\f40  }{\rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\dbch\af13\insrsid14751308\charrsid7214391 
+\par }\pard\plain \ltrpar\s29\ql \li0\ri0\sb120\sa120\nowidctlpar\brdrb\brdrs\brdrw10\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15686224 \rtlch\fcs1 \ab\af40\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 
+\par }\pard\plain \ltrpar\s30\ql \li0\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15686224 \rtlch\fcs1 \ab\af40\afs19\alang1025 \ltrch\fcs0 
+\b\fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab0\af40\afs20 \ltrch\fcs0 \b0\fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 
+These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms 
+\hich\af40\dbch\af13\loch\f40 a\hich\af40\dbch\af13\loch\f40 lso apply to any Microsoft
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s25\ql \fi-360\li360\ri0\sb120\sa120\nowidctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin360\itap0\pararsid15686224 \rtlch\fcs1 \af40\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 
+\af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 updates,
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af40\dbch\af13\loch\f40 supplements,
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af40\dbch\af13\loch\f40 Internet-based services, and
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af40\dbch\af13\loch\f40 support services
+\par }\pard\plain \ltrpar\s30\ql \li0\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15686224 \rtlch\fcs1 \ab\af40\afs19\alang1025 \ltrch\fcs0 
+\b\fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab0\af40\afs20 \ltrch\fcs0 \b0\fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 
+for this software, unless other terms accompany those items. If so, those terms apply.
+\par }{\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEP\hich\af40\dbch\af13\loch\f40 T THEM, DO NOT USE THE SOFTWARE.
+\par }\pard\plain \ltrpar\s35\ql \li0\ri0\sb120\sa120\nowidctlpar\brdrt\brdrs\brdrw10\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15686224 \rtlch\fcs1 \ab\af40\afs19\alang1025 \ltrch\fcs0 
+\b\fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\insrsid15686224 \hich\af40\dbch\af11\loch\f40 IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE PERPETUAL RIGHTS BELOW.}{
+\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\loch\af40\hich\af40\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 1.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls5\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid14566738 \rtlch\fcs1 \ab\af40\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {
+\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 INSTALLATION AND USE RIGHTS. }{\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid14566738 \hich\af40\dbch\af13\loch\f40   You}{\rtlch\fcs1 
+\ab0\af40\afs20 \ltrch\fcs0 \b0\fs20\dbch\af13\insrsid14566738\charrsid15934954 \hich\af40\dbch\af13\loch\f40  may install and use any number of copies of the software on your devices to design, develop and test your pr\hich\af40\dbch\af13\loch\f40 ograms
+}{\rtlch\fcs1 \ab0\af40\afs20 \ltrch\fcs0 \b0\fs20\dbch\af13\insrsid14566738 .}{\rtlch\fcs1 \ab0\af40\afs20 \ltrch\fcs0 \b0\fs20\dbch\af13\insrsid15686224 
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\loch\af40\hich\af40\dbch\af13\insrsid15686224\charrsid14566738 \hich\af40\dbch\af13\loch\f40 2.\tab}}{\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 
+\fs20\dbch\af13\insrsid15686224\charrsid14566738 \hich\af40\dbch\af13\loch\f40 DISTRIBUTABLE CODE. }{\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid14566738 \hich\af40\dbch\af13\loch\f40  }{\rtlch\fcs1 \ab0\af40\afs20 \ltrch\fcs0 
+\b0\fs20\dbch\af13\insrsid15686224\charrsid14566738 \hich\af40\dbch\af13\loch\f40 \hich\f40 The software is comprised of Distributable Code. \'93\loch\f40 \hich\f40 Distributable Code\'94\loch\f40 
+ is code that you are permitted to distribute in programs you develop if you comply with the terms below.
+\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid15686224 \hich\af39\dbch\af13\loch\f39 a.\tab}}\pard\plain \ltrpar\s2\ql \fi-363\li720\ri0\sb120\sa120\nowidctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls6\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid15686224 \rtlch\fcs1 \ab\af40\afs19\alang1025 \ltrch\fcs0 
+\b\fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af40 \ltrch\fcs0 \dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 Right to Use and Distribute. 
+\par {\listtext\pard\plain\ltrpar \s42 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s42\ql \fi-357\li1077\ri0\sb120\sa120\nowidctlpar
+\jclisttab\tx1080\wrapdefault\aspalpha\aspnum\faauto\ls9\adjustright\rin0\lin1077\itap0\pararsid15686224 \rtlch\fcs1 \af40\afs20\alang1025 \ltrch\fcs0 \f40\fs20\ul\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af40 \ltrch\fcs0 
+\ulnone\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 Yo\hich\af40\dbch\af13\loch\f40 u may copy and distribute the object code form of the software.
+\par {\listtext\pard\plain\ltrpar \s42 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af40 \ltrch\fcs0 \dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 
+Third Party Distribution}{\rtlch\fcs1 \af40 \ltrch\fcs0 \ulnone\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 . You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs.
+\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid15686224 \hich\af39\dbch\af13\loch\f39 b.\tab}}\pard\plain \ltrpar\s2\ql \fi-363\li720\ri0\sb120\sa120\nowidctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls6\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid15686224 \rtlch\fcs1 \ab\af40\afs19\alang1025 \ltrch\fcs0 
+\b\fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af40 \ltrch\fcs0 \dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 Distribution Requirements. For any Distribu\hich\af40\dbch\af13\loch\f40 
+table Code you distribute, you must
+\par {\listtext\pard\plain\ltrpar \s41 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s41\ql \fi-357\li1077\ri0\sb120\sa120\nowidctlpar
+\jclisttab\tx1080\wrapdefault\aspalpha\aspnum\faauto\ls7\adjustright\rin0\lin1077\itap0\pararsid15686224 \rtlch\fcs1 \af40\afs20\alang1025 \ltrch\fcs0 \f40\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af40 \ltrch\fcs0 
+\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 add significant primary functionality to it in your programs;
+\par {\listtext\pard\plain\ltrpar \s41 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af40\dbch\af13\loch\f40 
+for any Distributable Code having a filename extension of .lib, distribute only the results of running such Distributable Code through a linker with your \hich\af40\dbch\af13\loch\f40 program;
+\par {\listtext\pard\plain\ltrpar \s41 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af40\dbch\af13\loch\f40 
+distribute Distributable Code included in a setup program only as part of that setup program without modification; 
+\par {\listtext\pard\plain\ltrpar \s41 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af40\dbch\af13\loch\f40 
+require distributors and external end users to agree to terms that protect it at least as much as this agreement;
+\par {\listtext\pard\plain\ltrpar \s41 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af40\dbch\af13\loch\f40 display your valid copyright notice on your programs; and
+\par {\listtext\pard\plain\ltrpar \s41 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af40\dbch\af13\loch\f40 
+indemnify, defend, and hold harmless Microsoft from any claims, including attorneys\hich\f40 \rquote \loch\f40  fees, related to the distribution or use of your programs.
+\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid15686224 \hich\af39\dbch\af13\loch\f39 c.\tab}}\pard\plain \ltrpar\s2\ql \fi-363\li720\ri0\sb120\sa120\nowidctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls6\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid15686224 \rtlch\fcs1 \ab\af40\afs19\alang1025 \ltrch\fcs0 
+\b\fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af40 \ltrch\fcs0 \dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 Distribution Restrictions. You may not
+\par {\listtext\pard\plain\ltrpar \s41 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s41\ql \fi-357\li1077\ri0\sb120\sa120\nowidctlpar
+\jclisttab\tx1080\wrapdefault\aspalpha\aspnum\faauto\ls7\adjustright\rin0\lin1077\itap0\pararsid15686224 \rtlch\fcs1 \af40\afs20\alang1025 \ltrch\fcs0 \f40\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af40 \ltrch\fcs0 
+\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 alter an\hich\af40\dbch\af13\loch\f40 y copyright, trademark or patent notice in the Distributable Code;
+\par {\listtext\pard\plain\ltrpar \s41 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af40\dbch\af13\loch\f40 use Microsoft\hich\f40 \rquote \loch\f40 
+s trademarks in your programs\hich\f40 \rquote \loch\f40  names or in a way that suggests your programs come from or are endorsed by Microsoft;
+\par {\listtext\pard\plain\ltrpar \s41 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af40\dbch\af13\loch\f40 distribute Distributable Code to run on a platform oth
+\hich\af40\dbch\af13\loch\f40 er than the Windows platform;
+\par {\listtext\pard\plain\ltrpar \s41 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af40\dbch\af13\loch\f40 
+include Distributable Code in malicious, deceptive or unlawful programs; or
+\par {\listtext\pard\plain\ltrpar \s41 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af40\dbch\af13\loch\f40 
+modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License \hich\af40\dbch\af13\loch\f40 is one that requires, as a condition of use, modification or distribution, that
+
+\par {\listtext\pard\plain\ltrpar \s26 \rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \fs19\cf17\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s26\ql \fi-358\li1435\ri0\sb120\sa120\nowidctlpar
+\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls8\adjustright\rin0\lin1435\itap0\pararsid15686224 \rtlch\fcs1 \af40\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 
+\af40 \ltrch\fcs0 \dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 the code be disclosed or distributed in source code form; or
+\par {\listtext\pard\plain\ltrpar \s27 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s27\ql \fi-357\li1792\ri0\sb120\sa120\nowidctlpar
+\jclisttab\tx1795\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin1792\itap0\pararsid15686224 \rtlch\fcs1 \af40\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 
+\af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 others have the right to modify it.
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\loch\af40\hich\af40\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 3.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls5\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid15686224 \rtlch\fcs1 \ab\af40\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {
+\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 SCOPE OF LICENSE.}{\rtlch\fcs1 \ab0\af40\afs20 \ltrch\fcs0 \b0\fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 
+ The software is licensed, not sold. This agreement onl\hich\af40\dbch\af13\loch\f40 
+y gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply wit
+\hich\af40\dbch\af13\loch\f40 h\hich\af40\dbch\af13\loch\f40  any technical limitations in the software that only allow you to use it in certain ways. You may not
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s25\ql \fi-363\li720\ri0\sb120\sa120\nowidctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin720\itap0\pararsid15686224 \rtlch\fcs1 \af40\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 
+\af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 work around any technical limitations in the software;
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af40\dbch\af13\loch\f40 
+reverse engineer, decompile or disassemble the software, except and only to the extent that app\hich\af40\dbch\af13\loch\f40 licable law expressly permits, despite this limitation;
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af40\dbch\af13\loch\f40 
+make more copies of the software than specified in this agreement or allowed by applicable law, despite this limitation;
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af40\dbch\af13\loch\f40 publish the software for others to copy;
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af40\dbch\af13\loch\f40 rent, lease or lend the software\hich\af40\dbch\af13\loch\f40 ;
+
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af40\dbch\af13\loch\f40 transfer the software or this agreement to any third party; or
+
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af40\dbch\af13\loch\f40 use the software for commercial software hosting services.
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\loch\af40\hich\af40\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 4.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls5\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid15686224 \rtlch\fcs1 \ab\af40\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {
+\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 BACKUP COPY.}{\rtlch\fcs1 \ab0\af40\afs20 \ltrch\fcs0 \b0\fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 
+ You may make one backup copy of the software. You may use it only to reinstall the software.
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\loch\af40\hich\af40\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 5.\tab}}{\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 
+\hich\af40\dbch\af13\loch\f40 DOCUMENTATION.}{\rtlch\fcs1 \ab0\af40\afs20 \ltrch\fcs0 \b0\fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40  A\hich\af40\dbch\af13\loch\f40 
+ny person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes.
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\loch\af40\hich\af40\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 6.\tab}}{\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 
+\hich\af40\dbch\af13\loch\f40 EXPORT RESTRICTIONS.}{\rtlch\fcs1 \ab0\af40\afs20 \ltrch\fcs0 \b0\fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40  The software is subject to United States export laws and regulations. You must comply wit
+\hich\af40\dbch\af13\loch\f40 h all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see }{\rtlch\fcs1 \ab0\af0\afs20 
+\ltrch\fcs0 \cs36\b0\fs20\ul\cf2\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 www.microsoft.com/exporting}{\rtlch\fcs1 \ab0\af40\afs20 \ltrch\fcs0 \b0\fs20\dbch\af13\insrsid15686224 .}{\rtlch\fcs1 \ab0\af0\afs20 \ltrch\fcs0 
+\cs36\b0\fs20\ul\cf2\dbch\af13\insrsid15686224 
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\loch\af40\hich\af40\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 7.\tab}}{\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 
+\hich\af40\dbch\af13\loch\f40 SUPPORT SERVICES. }{\rtlch\fcs1 \ab0\af40\afs20 \ltrch\fcs0 \b0\fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 Because this \hich\af40\dbch\af13\loch\f40 \hich\f40 software is \'93\loch\f40 \hich\f40 as is,\'94
+\loch\f40  we may not provide support services for it.
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\loch\af40\hich\af40\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 8.\tab}}{\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 
+\hich\af40\dbch\af13\loch\f40 ENTIRE AGREEMENT.}{\rtlch\fcs1 \ab0\af40\afs20 \ltrch\fcs0 \b0\fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 
+ This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support s\hich\af40\dbch\af13\loch\f40 ervices.
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\loch\af40\hich\af40\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 9.\tab}}\pard \ltrpar\s1\ql \fi-360\li360\ri0\sb120\sa120\nowidctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls5\outlinelevel0\adjustright\rin0\lin360\itap0\pararsid15686224 {\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 APPLICABLE LAW.
+\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\loch\af40\hich\af40\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 a.\tab}}\pard\plain \ltrpar\s2\ql \fi-363\li720\ri0\sb120\sa120\nowidctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls5\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid15686224 \rtlch\fcs1 \ab\af40\afs19\alang1025 \ltrch\fcs0 
+\b\fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 United States.}{\rtlch\fcs1 \ab0\af40\afs20 \ltrch\fcs0 
+\b0\fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 
+ If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws\hich\af40\dbch\af13\loch\f40 
+ of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort.
+\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\loch\af40\hich\af40\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 b.\tab}}{\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 
+\hich\af40\dbch\af13\loch\f40 Outside the United States.}{\rtlch\fcs1 \ab0\af40\afs20 \ltrch\fcs0 \b0\fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40  If you acquired the software in any other country, the laws of that country app
+\hich\af40\dbch\af13\loch\f40 ly.
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\loch\af40\hich\af40\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 10.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls5\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid15686224 \rtlch\fcs1 \ab\af40\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {
+\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 LEGAL EFFECT.}{\rtlch\fcs1 \ab0\af40\afs20 \ltrch\fcs0 \b0\fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 
+ This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your right
+\hich\af40\dbch\af13\loch\f40 s under the laws of your country if the laws of your country do not permit it to do so.
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\loch\af40\hich\af40\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 11.\tab}}\pard \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls5\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid15686224 {\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 \hich\f40 
+DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED \'93\loch\f40 \hich\f40 AS-IS.\'94\loch\f40  YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HA\hich\af40\dbch\af13\loch\f40 
+VE ADDITIONAL CONSUMER RIGHTS OR STATUTORY GUARANTEES UNDER YOUR LOCAL LAWS WHICH THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE A
+\hich\af40\dbch\af13\loch\f40 N\hich\af40\dbch\af13\loch\f40 D NON-INFRINGEMENT.
+\par }\pard\plain \ltrpar\s24\ql \li357\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin357\itap0\pararsid15686224 \rtlch\fcs1 \af40\afs19\alang1025 \ltrch\fcs0 
+\fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \b\fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 FOR AUSTRALIA \hich\f40 \endash \loch\f40 
+ YOU HAVE STATUTORY GUARANTEES UNDER THE AUSTRALIAN CONSUMER LAW AND NOTHING IN THESE TERMS IS INTENDED TO AFFECT THOSE RIGHTS.
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\loch\af40\hich\af40\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 12.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls5\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid15686224 \rtlch\fcs1 \ab\af40\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {
+\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES}{\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\insrsid15686224 \hich\af40\dbch\af11\loch\f40 
+. YOU CAN RECOVER FROM MICROSOFT AND I\hich\af40\dbch\af11\loch\f40 TS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES.
+\par }\pard\plain \ltrpar\s24\ql \li357\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin357\itap0\pararsid15686224 \rtlch\fcs1 \af40\afs19\alang1025 \ltrch\fcs0 
+\fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 This limitation applies to
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s25\ql \fi-363\li720\ri0\sb120\sa120\nowidctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin720\itap0\pararsid15686224 \rtlch\fcs1 \af40\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 
+\af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 anything related to the software, services, content (inclu\hich\af40\dbch\af13\loch\f40 ding code) on third party Internet sites, or third party programs; and
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid15686224 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af40\dbch\af13\loch\f40 
+claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law.
+\par }\pard\plain \ltrpar\ql \li360\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid15686224 \rtlch\fcs1 \af40\afs19\alang1025 \ltrch\fcs0 
+\fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15686224 \hich\af40\dbch\af13\loch\f40 It also applies even \hich\af40\dbch\af13\loch\f40 
+if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages.
+\par }\pard \ltrpar\ql \li0\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15014299 {\rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\dbch\af13\insrsid15014299\charrsid15014299 \hich\af40\dbch\af13\loch\f40 
+Please note: A\hich\af40\dbch\af13\loch\f40 s this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French.
+\par }{\rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\lang1036\langfe1033\dbch\af13\langnp1036\insrsid15014299 
+\par 
+\par }{\rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\lang1036\langfe1033\dbch\af13\langnp1036\insrsid15014299\charrsid15014299 \hich\af40\dbch\af13\loch\f40 \hich\f40 Remarque : Ce logiciel \'e9\loch\f40 \hich\f40 tant distribu\'e9\loch\f40 \hich\f40  au Qu
+\'e9\loch\f40 \hich\f40 bec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en fran\'e7\loch\f40 ais.
+\par \hich\af40\dbch\af13\loch\f40 EX\hich\af40\dbch\af13\loch\f40 \hich\f40 ON\'c9\loch\f40 RATION DE GARANTIE.}{\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\lang1036\langfe1033\dbch\af13\langnp1036\insrsid15014299\charrsid15014299 \hich\af40\dbch\af13\loch\f40 
+\hich\f40  Le logiciel vis\'e9\loch\f40 \hich\f40  par une licence est offert \'ab\loch\f40 \hich\f40  tel quel \'bb\loch\f40 \hich\f40 . Toute utilisation de ce logiciel est \'e0\loch\f40 \hich\f40  votre seule risque et p\'e9\loch\f40 ril. Microsoft n
+\hich\f40 \rquote \loch\f40 \hich\f40 accorde aucune autre garantie expresse. Vous pouvez b\'e9\loch\f40 \hich\f40 n\'e9\loch\f40 ficier de droits additionnels en vertu \hich\af40\dbch\af13\loch\f40 \hich\f40 
+du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualit\'e9\loch\f40  marchande, d\hich\f40 \rquote \loch\f40 \hich\f40 ad\'e9\loch\f40 
+\hich\f40 quation \'e0\loch\f40  un usage particulier et d\hich\f40 \rquote \loch\f40 \hich\f40 absence de contrefa\'e7\loch\f40 on sont exclues.
+\par }{\rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\fs20\lang1036\langfe1033\dbch\af13\langnp1036\insrsid15014299\charrsid15014299 \hich\af40\dbch\af13\loch\f40 \hich\f40 LIMITATION DES DOMMAGES-INT\'c9\loch\f40 \hich\f40 R\'ca\loch\f40 \hich\f40 
+TS ET EXCLUSION DE RESPONSABILIT\'c9\loch\f40  POUR LES DOMMAGES.}{\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\lang1036\langfe1033\dbch\af13\langnp1036\insrsid15014299\charrsid15014299 \hich\af40\dbch\af13\loch\f40 \hich\f40 
+ Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement \'e0\loch\f40 \hich\f40  hauteur de 5,00 $ US. Vous ne pouvez pr\'e9\loch\f40 \hich\f40 tendre \'e0\loch\f40  aucune in
+\hich\af40\dbch\af13\loch\f40 \hich\f40 demnisation pour les autres dommages, y compris les dommages sp\'e9\loch\f40 \hich\f40 ciaux, indirects ou accessoires et pertes de b\'e9\loch\f40 \hich\f40 n\'e9\loch\f40 fices.
+\par }{\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid15014299\charrsid15014299 \hich\af40\dbch\af13\loch\f40 Cette limitation concerne :
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\lang1036\langfe1033\loch\af3\hich\af3\dbch\af13\langnp1036\insrsid15014299\charrsid15014299 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard \ltrpar
+\ql \fi-360\li360\ri0\sb120\sa120\nowidctlpar\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin360\itap0\pararsid15014299 {\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 
+\fs20\lang1036\langfe1033\dbch\af13\langnp1036\insrsid15014299\charrsid15014299 \hich\af40\dbch\af13\loch\f40 \hich\f40 tout ce qui est reli\'e9\loch\f40  au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites I
+\hich\af40\dbch\af13\loch\f40 nternet tiers ou dans des programmes tiers ; et
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\lang1036\langfe1033\loch\af3\hich\af3\dbch\af13\langnp1036\insrsid15014299\charrsid15014299 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af40\dbch\af13\loch\f40 \hich\f40 les r\'e9
+\loch\f40 \hich\f40 clamations au titre de violation de contrat ou de garantie, ou au titre de responsabilit\'e9\loch\f40 \hich\f40  stricte, de n\'e9\loch\f40 gligence ou d\hich\f40 \rquote \loch\f40 \hich\f40 une autre faute dans la limite autoris\'e9
+\loch\f40 e par la loi en vigueur.
+\par }\pard \ltrpar\ql \li0\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15014299 {\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\lang1036\langfe1033\dbch\af13\langnp1036\insrsid15014299\charrsid15014299 
+\hich\af40\dbch\af13\loch\f40 Elle s\hich\f40 \rquote \loch\f40 \hich\f40 applique \'e9\loch\f40 g\hich\af40\dbch\af13\loch\f40 \hich\f40 alement, m\'ea\loch\f40 \hich\f40 me si Microsoft connaissait ou devrait conna\'ee\loch\f40 tre l\hich\f40 \rquote 
+\'e9\loch\f40 \hich\f40 ventualit\'e9\loch\f40  d\hich\f40 \rquote \loch\f40 un tel dommage. Si votre pays n\hich\f40 \rquote \loch\f40 autorise pas l\hich\f40 \rquote \loch\f40 \hich\f40 exclusion ou la limitation de responsabilit\'e9\loch\f40 
+ pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut q\hich\af40\dbch\af13\loch\f40 u\hich\af40\dbch\af13\loch\f40 e la limitation ou l\hich\f40 \rquote \loch\f40 exclusion ci-dessus ne s\hich\f40 \rquote \loch\f40 
+\hich\f40 appliquera pas \'e0\loch\f40 \hich\f40  votre \'e9\loch\f40 gard.
+\par }\pard\plain \ltrpar\s37\ql \li0\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15014299 \rtlch\fcs1 \ab\af40\afs19\alang1025 \ltrch\fcs0 
+\b\fs19\lang1033\langfe1033\loch\af40\hich\af40\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af40\afs20 \ltrch\fcs0 \fs20\lang1036\langfe1033\dbch\af13\langnp1036\insrsid15014299\charrsid15014299 \hich\af40\dbch\af13\loch\f40 EFFET JURIDIQUE.}{
+\rtlch\fcs1 \ab0\af40\afs20 \ltrch\fcs0 \b0\fs20\lang1036\langfe1033\dbch\af13\langnp1036\insrsid15014299\charrsid15014299 \hich\af40\dbch\af13\loch\f40 \hich\f40  Le pr\'e9\loch\f40 \hich\f40 sent contrat d\'e9\loch\f40 
+crit certains droits juridiques. Vous pourriez avoir d\hich\f40 \rquote \loch\f40 \hich\f40 autres droits pr\'e9\loch\f40 \hich\f40 vus par les lois de votre pays. Le pr\'e9\loch\f40 sent contrat ne modif\hich\af40\dbch\af13\loch\f40 \hich\f40 
+ie pas les droits que vous conf\'e8\loch\f40 rent les lois de votre pays si celles-ci ne le permettent pas}{\rtlch\fcs1 \ab0\af40\afs20 \ltrch\fcs0 \b0\fs20\lang1036\langfe1033\dbch\af13\langnp1036\insrsid15014299 .}{\rtlch\fcs1 \af40 \ltrch\fcs0 
+\insrsid4000782 
+\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
+9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
+5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
+b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
+0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
+a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
+c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
+0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
+a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
+6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
+4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
+4757e8d3f729e245eb2b260a0238fd010000ffff0300504b03041400060008000000210030dd4329a8060000a41b0000160000007468656d652f7468656d652f
+7468656d65312e786d6cec594f6fdb3614bf0fd87720746f6327761a07758ad8b19b2d4d1bc46e871e698996d850a240d2497d1bdae38001c3ba618715d86d87
+615b8116d8a5fb34d93a6c1dd0afb0475292c5585e9236d88aad3e2412f9e3fbff1e1fa9abd7eec70c1d1221294fda5efd72cd4324f1794093b0eddd1ef62fad
+79482a9c0498f184b4bd2991deb58df7dfbb8ad755446282607d22d771db8b944ad79796a40fc3585ee62949606ecc458c15bc8a702910f808e8c66c69b9565b
+5d8a314d3c94e018c8de1a8fa94fd05093f43672e23d06af89927ac06762a049136785c10607758d9053d965021d62d6f6804fc08f86e4bef210c352c144dbab
+999fb7b4717509af678b985ab0b6b4ae6f7ed9ba6c4170b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83a6569632cd467faddec9
+699640f6719e76b7d6ac355c7c89feca9cccad4ea7d36c65b258a206641f1b73f8b5da6a6373d9c11b90c537e7f08dce66b7bbeae00dc8e257e7f0fd2badd586
+8b37a088d1e4600ead1ddaef67d40bc898b3ed4af81ac0d76a197c86826828a24bb318f3442d8ab518dfe3a20f000d6458d104a9694ac6d88728eee2782428d6
+0cf03ac1a5193be4cbb921cd0b495fd054b5bd0f530c1931a3f7eaf9f7af9e3f45c70f9e1d3ff8e9f8e1c3e3073f5a42ceaa6d9c84e5552fbffdeccfc71fa33f
+9e7ef3f2d117d57859c6fffac327bffcfc793510d26726ce8b2f9ffcf6ecc98baf3efdfdbb4715f04d814765f890c644a29be408edf3181433567125272371be
+15c308d3f28acd249438c19a4b05fd9e8a1cf4cd296699771c393ac4b5e01d01e5a30a787d72cf1178108989a2159c77a2d801ee72ce3a5c545a6147f32a9979
+3849c26ae66252c6ed637c58c5bb8b13c7bfbd490a75330f4b47f16e441c31f7184e140e494214d273fc80900aedee52ead87597fa824b3e56e82e451d4c2b4d
+32a423279a668bb6690c7e9956e90cfe766cb37b077538abd27a8b1cba48c80acc2a841f12e698f13a9e281c57911ce298950d7e03aba84ac8c154f8655c4f2a
+f074481847bd804859b5e696007d4b4edfc150b12addbecba6b18b148a1e54d1bc81392f23b7f84137c2715a851dd0242a633f900710a218ed715505dfe56e86
+e877f0034e16bafb0e258ebb4faf06b769e888340b103d331115bebc4eb813bf83291b63624a0d1475a756c734f9bbc2cd28546ecbe1e20a3794ca175f3fae90
+fb6d2dd99bb07b55e5ccf68942bd0877b23c77b908e8db5f9db7f024d9239010f35bd4bbe2fcae387bfff9e2bc289f2fbe24cfaa301468dd8bd846dbb4ddf1c2
+ae7b4c191ba8292337a469bc25ec3d411f06f53a73e224c5292c8de0516732307070a1c0660d125c7d44553488700a4d7bddd3444299910e254ab984c3a219ae
+a4adf1d0f82b7bd46cea4388ad1c12ab5d1ed8e1153d9c9f350a3246aad01c6873462b9ac05999ad5cc988826eafc3acae853a33b7ba11cd1445875ba1b236b1
+399483c90bd560b0b0263435085a21b0f22a9cf9356b38ec6046026d77eba3dc2dc60b17e92219e180643ed27acffba86e9c94c7ca9c225a0f1b0cfae0788ad5
+4adc5a9aec1b703b8b93caec1a0bd8e5de7b132fe5113cf312503b998e2c2927274bd051db6b35979b1ef271daf6c6704e86c73805af4bdd476216c26593af84
+0dfb5393d964f9cc9bad5c313709ea70f561ed3ea7b053075221d51696910d0d339585004b34272bff7213cc7a510a5454a3b349b1b206c1f0af490176745d4b
+c663e2abb2b34b23da76f6352ba57ca2881844c1111ab189d8c7e07e1daaa04f40255c77988aa05fe06e4e5bdb4cb9c5394bbaf28d98c1d971ccd20867e556a7
+689ec9166e0a522183792b8907ba55ca6e943bbf2a26e52f48957218ffcf54d1fb09dc3eac04da033e5c0d0b8c74a6b43d2e54c4a10aa511f5fb021a07533b20
+5ae07e17a621a8e082dafc17e450ffb739676998b48643a4daa7211214f623150942f6a02c99e83b85583ddbbb2c4996113211551257a656ec1139246ca86be0
+aadedb3d1441a89b6a929501833b197fee7b9641a3503739e57c732a59b1f7da1cf8a73b1f9bcca0945b874d4393dbbf10b1680f66bbaa5d6f96e77b6f59113d
+316bb31a795600b3d256d0cad2fe354538e7566b2bd69cc6cbcd5c38f0e2bcc63058344429dc2121fd07f63f2a7c66bf76e80d75c8f7a1b622f878a18941d840
+545fb28d07d205d20e8ea071b283369834296bdaac75d256cb37eb0bee740bbe278cad253b8bbfcf69eca23973d939b97891c6ce2cecd8da8e2d343578f6648a
+c2d0383fc818c798cf64e52f597c740f1cbd05df0c264c49134cf09d4a60e8a107260f20f92d47b374e32f000000ffff0300504b030414000600080000002100
+0dd1909fb60000001b010000270000007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f7
+8277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89
+d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd500
+1996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0f
+bfff0000001c0200001300000000000000000000000000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6
+a7e7c0000000360100000b00000000000000000000000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a
+0000001c00000000000000000000000000190200007468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d00140006000800000021
+0030dd4329a8060000a41b00001600000000000000000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d001400060008
+00000021000dd1909fb60000001b0100002700000000000000000000000000b20900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000ad0a00000000}
+{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
+617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
+6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
+656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
+{\*\latentstyles\lsdstimax371\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdlocked0 heading 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdlocked0 heading 4;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdlocked0 heading 7;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority59 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdlocked0 Placeholder Text;\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;
+\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdpriority65 \lsdlocked0 Medium List 1;
+\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List;\lsdpriority71 \lsdlocked0 Colorful Shading;
+\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdpriority62 \lsdlocked0 Light Grid Accent 1;
+\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision;\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;
+\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;
+\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;
+\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;
+\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;
+\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdpriority60 \lsdlocked0 Light Shading Accent 3;
+\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;
+\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdpriority70 \lsdlocked0 Dark List Accent 3;
+\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdpriority61 \lsdlocked0 Light List Accent 4;
+\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;
+\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;
+\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdpriority62 \lsdlocked0 Light Grid Accent 5;
+\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
+\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;
+\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6;
+\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;
+\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;
+\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
+\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4;
+\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4;
+\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1;
+\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1;
+\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2;
+\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2;
+\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3;
+\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4;
+\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4;
+\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5;
+\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5;
+\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6;
+\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6;
+\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark;
+\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1;
+\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1;
+\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2;
+\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3;
+\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3;
+\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4;
+\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4;
+\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5;
+\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5;
+\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6;
+\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;}}{\*\datastore 010500000200000018000000
+4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000
+d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e50000000000000000000000008082
+82f39530ce01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000105000000000000}}

BIN
servicestack/lib/Microsoft.Bcl.1.0.19/Microsoft.Bcl.1.0.19.nupkg


+ 34 - 0
servicestack/lib/Microsoft.Bcl.1.0.19/Microsoft.Bcl.1.0.19.nuspec

@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
+  <metadata>
+    <id>Microsoft.Bcl</id>
+    <version>1.0.19</version>
+    <title>BCL Portability Pack for .NET Framework 4, Silverlight 4 and 5, and Windows Phone 7.5</title>
+    <authors>Microsoft</authors>
+    <owners>Microsoft</owners>
+    <licenseUrl>http://go.microsoft.com/fwlink/?LinkID=296435</licenseUrl>
+    <projectUrl>http://go.microsoft.com/fwlink/?LinkID=280057</projectUrl>
+    <iconUrl>http://go.microsoft.com/fwlink/?LinkID=288859</iconUrl>
+    <requireLicenseAcceptance>true</requireLicenseAcceptance>
+    <description>This packages enables projects targeting .NET Framework 4, Silverlight 4 and 5, and Windows Phone 7.5 (including any portable library combinations) to use new types from later versions of .NET including:
+
+CallerMemberNameAttribute
+CallerLineNumberAttribute
+CallerFilePathAttribute
+Tuple&lt;T1, T2, ...&gt;
+IProgress&lt;T&gt;
+IStructuralComparable
+IStructuralEquatable
+Task
+
+These types are "unified" to their later version equivalent. For example, when running on .NET Framework 4.5, IProgress&lt;T&gt; from this package will be seen by the runtime as the same type as the one already in the platform.
+
+This package is not required for projects targeting .NET Framework 4.5 or .NET for Windows Store apps. For known issues, please see: http://blogs.msdn.com/b/bclteam/p/asynctargetingpackkb.aspx.</description>
+    <summary>Adds support for types from later versions to .NET Framework 4, Silverlight 4 and 5, and Windows Phone 7.5.</summary>
+    <copyright>Copyright © Microsoft Corporation</copyright>
+    <tags>BCL Microsoft System Task IProgress</tags>
+    <dependencies>
+      <dependency id="Microsoft.Bcl.Build" version="1.0.4" />
+    </dependencies>
+  </metadata>
+</package>

+ 24 - 0
servicestack/lib/Microsoft.Bcl.1.0.19/ReleaseNotes.txt

@@ -0,0 +1,24 @@
+Changes in 1.0.16-rc
+- Fixed: Adding empty content to .NET 4.5, Windows Phone 8, Windows 8 and portable combinations, so that app.config transforms
+  are not applied to projects targeting them.
+
+Changes in 1.0.15-rc
+
+- Fixed: System.Runtime is missing a type forward for Tuple<T1, T2>
+
+Changes in 1.0.14-rc
+
+- Fixed: System.Runtime now has a fixed version for Phone 7.x due to the lack of a way to redirect them to a later version.
+
+Changes in 1.0.13-rc
+
+- Fixed: First-chance exceptions when running on Phone 7.x
+
+Changes in 1.0.12-rc
+
+- Fixed: Microsoft.Bcl.targets are not imported when using NuGet 2.0 to install Microsoft.Bcl
+- Changed: Pulled build targets into a separate package (Microsoft.Bcl.Build) so other BCL packages can depend on it.
+
+Changes in 1.0.11-beta
+
+- Initial release

+ 0 - 0
servicestack/lib/Microsoft.Bcl.1.0.19/content/net45/_._


+ 0 - 0
servicestack/lib/Microsoft.Bcl.1.0.19/content/portable-net45+win8+wp8/_._


+ 0 - 0
servicestack/lib/Microsoft.Bcl.1.0.19/content/sl4/_._


+ 0 - 0
servicestack/lib/Microsoft.Bcl.1.0.19/content/sl5/_._


+ 0 - 0
servicestack/lib/Microsoft.Bcl.1.0.19/content/win8/_._


+ 0 - 0
servicestack/lib/Microsoft.Bcl.1.0.19/content/wp8/_._


BIN
servicestack/lib/Microsoft.Bcl.1.0.19/lib/net40/System.Runtime.dll


+ 56 - 0
servicestack/lib/Microsoft.Bcl.1.0.19/lib/net40/System.Runtime.xml

@@ -0,0 +1,56 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>System.Runtime</name>
+    </assembly>
+    <members>
+        <member name="T:System.IProgress`1">
+            <summary>Defines a provider for progress updates.</summary>
+            <typeparam name="T">The type of progress update value.</typeparam>
+        </member>
+        <member name="M:System.IProgress`1.Report(`0)">
+            <summary>Reports a progress update.</summary>
+            <param name="value">The value of the updated progress.</param>
+        </member>
+        <member name="T:System.Runtime.CompilerServices.AsyncStateMachineAttribute">
+            <summary>Identities the async state machine type for this method.</summary>
+        </member>
+        <member name="T:System.Runtime.CompilerServices.StateMachineAttribute">
+            <summary>Identities the state machine type for this method.</summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.StateMachineAttribute.#ctor(System.Type)">
+            <summary>Initializes the attribute.</summary>
+            <param name="stateMachineType">The type that implements the state machine.</param>
+        </member>
+        <member name="P:System.Runtime.CompilerServices.StateMachineAttribute.StateMachineType">
+            <summary>Gets the type that implements the state machine.</summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncStateMachineAttribute.#ctor(System.Type)">
+            <summary>Initializes the attribute.</summary>
+            <param name="stateMachineType">The type that implements the state machine.</param>
+        </member>
+        <member name="T:System.Runtime.CompilerServices.CallerMemberNameAttribute">
+            <summary>
+            Allows you to obtain the method or property name of the caller to the method.
+            </summary>
+        </member>
+        <member name="T:System.Runtime.CompilerServices.CallerLineNumberAttribute">
+            <summary>
+            Allows you to obtain the line number in the source file at which the method is called.
+            </summary>
+        </member>
+        <member name="T:System.Runtime.CompilerServices.CallerFilePathAttribute">
+            <summary>
+            Allows you to obtain the full path of the source file that contains the caller.
+            This is the file path at the time of compile.
+            </summary>
+        </member>
+        <member name="T:System.Runtime.CompilerServices.IteratorStateMachineAttribute">
+            <summary>Identities the iterator state machine type for this method.</summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.IteratorStateMachineAttribute.#ctor(System.Type)">
+            <summary>Initializes the attribute.</summary>
+            <param name="stateMachineType">The type that implements the state machine.</param>
+        </member>
+    </members>
+</doc>

BIN
servicestack/lib/Microsoft.Bcl.1.0.19/lib/net40/System.Threading.Tasks.dll


+ 475 - 0
servicestack/lib/Microsoft.Bcl.1.0.19/lib/net40/System.Threading.Tasks.xml

@@ -0,0 +1,475 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>System.Threading.Tasks</name>
+    </assembly>
+    <members>
+        <member name="T:System.Runtime.CompilerServices.AsyncMethodBuilderCore">
+            <summary>Holds state related to the builder's IAsyncStateMachine.</summary>
+            <remarks>This is a mutable struct.  Be very delicate with it.</remarks>
+        </member>
+        <member name="F:System.Runtime.CompilerServices.AsyncMethodBuilderCore.m_stateMachine">
+            <summary>A reference to the heap-allocated state machine object associated with this builder.</summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start``1(``0@)">
+            <summary>Initiates the builder's execution with the associated state machine.</summary>
+            <typeparam name="TStateMachine">Specifies the type of the state machine.</typeparam>
+            <param name="stateMachine">The state machine instance, passed by reference.</param>
+            <exception cref="T:System.ArgumentNullException">The <paramref name="stateMachine"/> argument is null (Nothing in Visual Basic).</exception>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncMethodBuilderCore.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)">
+            <summary>Associates the builder with the state machine it represents.</summary>
+            <param name="stateMachine">The heap-allocated state machine object.</param>
+            <exception cref="T:System.ArgumentNullException">The <paramref name="stateMachine"/> argument was null (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.InvalidOperationException">The builder is incorrectly initialized.</exception>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncMethodBuilderCore.GetCompletionAction``2(``0@,``1@)">
+            <summary>
+            Gets the Action to use with an awaiter's OnCompleted or UnsafeOnCompleted method.
+            On first invocation, the supplied state machine will be boxed.
+            </summary>
+            <typeparam name="TMethodBuilder">Specifies the type of the method builder used.</typeparam>
+            <typeparam name="TStateMachine">Specifies the type of the state machine used.</typeparam>
+            <param name="builder">The builder.</param>
+            <param name="stateMachine">The state machine.</param>
+            <returns>An Action to provide to the awaiter.</returns>
+        </member>
+        <member name="T:System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner">
+            <summary>Provides the ability to invoke a state machine's MoveNext method under a supplied ExecutionContext.</summary>
+        </member>
+        <member name="F:System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.m_context">
+            <summary>The context with which to run MoveNext.</summary>
+        </member>
+        <member name="F:System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.m_stateMachine">
+            <summary>The state machine whose MoveNext method should be invoked.</summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.#ctor(System.ExecutionContextLightup)">
+            <summary>Initializes the runner.</summary>
+            <param name="context">The context with which to run MoveNext.</param>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.Run">
+            <summary>Invokes MoveNext under the provided context.</summary>
+        </member>
+        <member name="F:System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.s_invokeMoveNext">
+            <summary>Cached delegate used with ExecutionContext.Run.</summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.InvokeMoveNext(System.Object)">
+            <summary>Invokes the MoveNext method on the supplied IAsyncStateMachine.</summary>
+            <param name="stateMachine">The IAsyncStateMachine machine instance.</param>
+        </member>
+        <member name="T:System.Runtime.CompilerServices.AsyncMethodTaskCache`1">
+            <summary>Provides a base class used to cache tasks of a specific return type.</summary>
+            <typeparam name="TResult">Specifies the type of results the cached tasks return.</typeparam>
+        </member>
+        <member name="F:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.Singleton">
+            <summary>
+            A singleton cache for this result type.
+            This may be null if there are no cached tasks for this TResult.
+            </summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.CreateCompleted(`0)">
+            <summary>Creates a non-disposable task.</summary>
+            <param name="result">The result for the task.</param>
+            <returns>The cacheable task.</returns>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.CreateCache">
+            <summary>Creates a cache.</summary>
+            <returns>A task cache for this result type.</returns>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.FromResult(`0)">
+            <summary>Gets a cached task if one exists.</summary>
+            <param name="result">The result for which we want a cached task.</param>
+            <returns>A cached task if one exists; otherwise, null.</returns>
+        </member>
+        <member name="T:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.AsyncMethodBooleanTaskCache">
+            <summary>Provides a cache for Boolean tasks.</summary>
+        </member>
+        <member name="F:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.AsyncMethodBooleanTaskCache.m_true">
+            <summary>A true task.</summary>
+        </member>
+        <member name="F:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.AsyncMethodBooleanTaskCache.m_false">
+            <summary>A false task.</summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.AsyncMethodBooleanTaskCache.FromResult(System.Boolean)">
+            <summary>Gets a cached task for the Boolean result.</summary>
+            <param name="result">true or false</param>
+            <returns>A cached task for the Boolean result.</returns>
+        </member>
+        <member name="T:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.AsyncMethodInt32TaskCache">
+            <summary>Provides a cache for zero Int32 tasks.</summary>
+        </member>
+        <member name="F:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.AsyncMethodInt32TaskCache.INCLUSIVE_INT32_MIN">
+            <summary>The minimum value, inclusive, for which we want a cached task.</summary>
+        </member>
+        <member name="F:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.AsyncMethodInt32TaskCache.EXCLUSIVE_INT32_MAX">
+            <summary>The maximum value, exclusive, for which we want a cached task.</summary>
+        </member>
+        <member name="F:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.AsyncMethodInt32TaskCache.Int32Tasks">
+            <summary>The cache of Task{Int32}.</summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.AsyncMethodInt32TaskCache.CreateInt32Tasks">
+            <summary>Creates an array of cached tasks for the values in the range [INCLUSIVE_MIN,EXCLUSIVE_MAX).</summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.AsyncMethodInt32TaskCache.FromResult(System.Int32)">
+            <summary>Gets a cached task for the zero Int32 result.</summary>
+            <param name="result">The integer value</param>
+            <returns>A cached task for the Int32 result or null if not cached.</returns>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncServices.ThrowAsync(System.Exception,System.Threading.SynchronizationContext)">
+            <summary>Throws the exception on the ThreadPool.</summary>
+            <param name="exception">The exception to propagate.</param>
+            <param name="targetContext">The target context on which to propagate the exception.  Null to use the ThreadPool.</param>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncServices.PrepareExceptionForRethrow(System.Exception)">
+            <summary>Copies the exception's stack trace so its stack trace isn't overwritten.</summary>
+            <param name="exc">The exception to prepare.</param>
+        </member>
+        <member name="T:System.Runtime.CompilerServices.AsyncTaskMethodBuilder">
+            <summary>
+            Provides a builder for asynchronous methods that return <see cref="T:System.Threading.Tasks.Task"/>.
+            This type is intended for compiler use only.
+            </summary>
+            <remarks>
+            AsyncTaskMethodBuilder is a value type, and thus it is copied by value.
+            Prior to being copied, one of its Task, SetResult, or SetException members must be accessed,
+            or else the copies may end up building distinct Task instances.
+            </remarks>
+        </member>
+        <member name="T:System.Runtime.CompilerServices.IAsyncMethodBuilder">
+            <summary>Represents an asynchronous method builder.</summary>
+        </member>
+        <member name="F:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.s_cachedCompleted">
+            <summary>A cached VoidTaskResult task used for builders that complete synchronously.</summary>
+        </member>
+        <member name="F:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.m_builder">
+            <summary>The generic builder object to which this non-generic instance delegates.</summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Create">
+            <summary>Initializes a new <see cref="T:System.Runtime.CompilerServices.AsyncTaskMethodBuilder"/>.</summary>
+            <returns>The initialized <see cref="T:System.Runtime.CompilerServices.AsyncTaskMethodBuilder"/>.</returns>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start``1(``0@)">
+            <summary>Initiates the builder's execution with the associated state machine.</summary>
+            <typeparam name="TStateMachine">Specifies the type of the state machine.</typeparam>
+            <param name="stateMachine">The state machine instance, passed by reference.</param>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)">
+            <summary>Associates the builder with the state machine it represents.</summary>
+            <param name="stateMachine">The heap-allocated state machine object.</param>
+            <exception cref="T:System.ArgumentNullException">The <paramref name="stateMachine"/> argument was null (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.InvalidOperationException">The builder is incorrectly initialized.</exception>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.System#Runtime#CompilerServices#IAsyncMethodBuilder#PreBoxInitialization">
+            <summary>Perform any initialization necessary prior to lifting the builder to the heap.</summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitOnCompleted``2(``0@,``1@)">
+            <summary>
+            Schedules the specified state machine to be pushed forward when the specified awaiter completes.
+            </summary>
+            <typeparam name="TAwaiter">Specifies the type of the awaiter.</typeparam>
+            <typeparam name="TStateMachine">Specifies the type of the state machine.</typeparam>
+            <param name="awaiter">The awaiter.</param>
+            <param name="stateMachine">The state machine.</param>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompleted``2(``0@,``1@)">
+            <summary>
+            Schedules the specified state machine to be pushed forward when the specified awaiter completes.
+            </summary>
+            <typeparam name="TAwaiter">Specifies the type of the awaiter.</typeparam>
+            <typeparam name="TStateMachine">Specifies the type of the state machine.</typeparam>
+            <param name="awaiter">The awaiter.</param>
+            <param name="stateMachine">The state machine.</param>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetResult">
+            <summary>
+            Completes the <see cref="T:System.Threading.Tasks.Task"/> in the 
+            <see cref="T:System.Threading.Tasks.TaskStatus">RanToCompletion</see> state.
+            </summary>
+            <exception cref="T:System.InvalidOperationException">The builder is not initialized.</exception>
+            <exception cref="T:System.InvalidOperationException">The task has already completed.</exception>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetException(System.Exception)">
+            <summary>
+            Completes the <see cref="T:System.Threading.Tasks.Task"/> in the 
+            <see cref="T:System.Threading.Tasks.TaskStatus">Faulted</see> state with the specified exception.
+            </summary>
+            <param name="exception">The <see cref="T:System.Exception"/> to use to fault the task.</param>
+            <exception cref="T:System.ArgumentNullException">The <paramref name="exception"/> argument is null (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.InvalidOperationException">The builder is not initialized.</exception>
+            <exception cref="T:System.InvalidOperationException">The task has already completed.</exception>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetNotificationForWaitCompletion(System.Boolean)">
+            <summary>
+            Called by the debugger to request notification when the first wait operation
+            (await, Wait, Result, etc.) on this builder's task completes.
+            </summary>
+            <param name="enabled">
+            true to enable notification; false to disable a previously set notification.
+            </param>
+        </member>
+        <member name="P:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Task">
+            <summary>Gets the <see cref="T:System.Threading.Tasks.Task"/> for this builder.</summary>
+            <returns>The <see cref="T:System.Threading.Tasks.Task"/> representing the builder's asynchronous operation.</returns>
+            <exception cref="T:System.InvalidOperationException">The builder is not initialized.</exception>
+        </member>
+        <member name="P:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.ObjectIdForDebugger">
+            <summary>
+            Gets an object that may be used to uniquely identify this builder to the debugger.
+            </summary>
+            <remarks>
+            This property lazily instantiates the ID in a non-thread-safe manner.  
+            It must only be used by the debugger, and only in a single-threaded manner
+            when no other threads are in the middle of accessing this property or this.Task.
+            </remarks>
+        </member>
+        <member name="T:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1">
+            <summary>
+            Provides a builder for asynchronous methods that return <see cref="T:System.Threading.Tasks.Task`1"/>.
+            This type is intended for compiler use only.
+            </summary>
+            <remarks>
+            AsyncTaskMethodBuilder{TResult} is a value type, and thus it is copied by value.
+            Prior to being copied, one of its Task, SetResult, or SetException members must be accessed,
+            or else the copies may end up building distinct Task instances.
+            </remarks>
+        </member>
+        <member name="F:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.s_defaultResultTask">
+            <summary>A cached task for default(TResult).</summary>
+        </member>
+        <member name="F:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.m_coreState">
+            <summary>State related to the IAsyncStateMachine.</summary>
+        </member>
+        <member name="F:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.m_task">
+            <summary>The lazily-initialized task.</summary>
+            <remarks>Must be named m_task for debugger step-over to work correctly.</remarks>
+        </member>
+        <member name="F:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.m_taskCompletionSource">
+            <summary>The lazily-initialized task completion source.</summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.#cctor">
+            <summary>Temporary support for disabling crashing if tasks go unobserved.</summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Create">
+            <summary>Initializes a new <see cref="T:System.Runtime.CompilerServices.AsyncTaskMethodBuilder"/>.</summary>
+            <returns>The initialized <see cref="T:System.Runtime.CompilerServices.AsyncTaskMethodBuilder"/>.</returns>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start``1(``0@)">
+            <summary>Initiates the builder's execution with the associated state machine.</summary>
+            <typeparam name="TStateMachine">Specifies the type of the state machine.</typeparam>
+            <param name="stateMachine">The state machine instance, passed by reference.</param>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)">
+            <summary>Associates the builder with the state machine it represents.</summary>
+            <param name="stateMachine">The heap-allocated state machine object.</param>
+            <exception cref="T:System.ArgumentNullException">The <paramref name="stateMachine"/> argument was null (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.InvalidOperationException">The builder is incorrectly initialized.</exception>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.System#Runtime#CompilerServices#IAsyncMethodBuilder#PreBoxInitialization">
+            <summary>Perform any initialization necessary prior to lifting the builder to the heap.</summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AwaitOnCompleted``2(``0@,``1@)">
+            <summary>
+            Schedules the specified state machine to be pushed forward when the specified awaiter completes.
+            </summary>
+            <typeparam name="TAwaiter">Specifies the type of the awaiter.</typeparam>
+            <typeparam name="TStateMachine">Specifies the type of the state machine.</typeparam>
+            <param name="awaiter">The awaiter.</param>
+            <param name="stateMachine">The state machine.</param>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AwaitUnsafeOnCompleted``2(``0@,``1@)">
+            <summary>
+            Schedules the specified state machine to be pushed forward when the specified awaiter completes.
+            </summary>
+            <typeparam name="TAwaiter">Specifies the type of the awaiter.</typeparam>
+            <typeparam name="TStateMachine">Specifies the type of the state machine.</typeparam>
+            <param name="awaiter">The awaiter.</param>
+            <param name="stateMachine">The state machine.</param>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetResult(`0)">
+            <summary>
+            Completes the <see cref="T:System.Threading.Tasks.Task`1"/> in the 
+            <see cref="T:System.Threading.Tasks.TaskStatus">RanToCompletion</see> state with the specified result.
+            </summary>
+            <param name="result">The result to use to complete the task.</param>
+            <exception cref="T:System.InvalidOperationException">The task has already completed.</exception>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetResult(System.Threading.Tasks.TaskCompletionSource{`0})">
+            <summary>
+            Completes the builder by using either the supplied completed task, or by completing
+            the builder's previously accessed task using default(TResult).
+            </summary>
+            <param name="completedTask">A task already completed with the value default(TResult).</param>
+            <exception cref="T:System.InvalidOperationException">The task has already completed.</exception>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetException(System.Exception)">
+            <summary>
+            Completes the <see cref="T:System.Threading.Tasks.Task`1"/> in the 
+            <see cref="T:System.Threading.Tasks.TaskStatus">Faulted</see> state with the specified exception.
+            </summary>
+            <param name="exception">The <see cref="T:System.Exception"/> to use to fault the task.</param>
+            <exception cref="T:System.ArgumentNullException">The <paramref name="exception"/> argument is null (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.InvalidOperationException">The task has already completed.</exception>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetNotificationForWaitCompletion(System.Boolean)">
+            <summary>
+            Called by the debugger to request notification when the first wait operation
+            (await, Wait, Result, etc.) on this builder's task completes.
+            </summary>
+            <param name="enabled">
+            true to enable notification; false to disable a previously set notification.
+            </param>
+            <remarks>
+            This should only be invoked from within an asynchronous method,
+            and only by the debugger.
+            </remarks>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.GetTaskForResult(`0)">
+            <summary>
+            Gets a task for the specified result.  This will either
+            be a cached or new task, never null.
+            </summary>
+            <param name="result">The result for which we need a task.</param>
+            <returns>The completed task containing the result.</returns>
+        </member>
+        <member name="P:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.CompletionSource">
+            <summary>Gets the lazily-initialized TaskCompletionSource.</summary>
+        </member>
+        <member name="P:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Task">
+            <summary>Gets the <see cref="T:System.Threading.Tasks.Task`1"/> for this builder.</summary>
+            <returns>The <see cref="T:System.Threading.Tasks.Task`1"/> representing the builder's asynchronous operation.</returns>
+        </member>
+        <member name="P:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.ObjectIdForDebugger">
+            <summary>
+            Gets an object that may be used to uniquely identify this builder to the debugger.
+            </summary>
+            <remarks>
+            This property lazily instantiates the ID in a non-thread-safe manner.  
+            It must only be used by the debugger, and only in a single-threaded manner
+            when no other threads are in the middle of accessing this property or this.Task.
+            </remarks>
+        </member>
+        <member name="T:System.Runtime.CompilerServices.AsyncVoidMethodBuilder">
+            <summary>
+            Provides a builder for asynchronous methods that return void.
+            This type is intended for compiler use only.
+            </summary>
+        </member>
+        <member name="F:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.m_synchronizationContext">
+            <summary>The synchronization context associated with this operation.</summary>
+        </member>
+        <member name="F:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.m_coreState">
+            <summary>State related to the IAsyncStateMachine.</summary>
+        </member>
+        <member name="F:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.m_objectIdForDebugger">
+            <summary>An object used by the debugger to uniquely identify this builder.  Lazily initialized.</summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.#cctor">
+            <summary>Temporary support for disabling crashing if tasks go unobserved.</summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.PreventUnobservedTaskExceptions">
+            <summary>Registers with UnobservedTaskException to suppress exception crashing.</summary>
+        </member>
+        <member name="F:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.s_preventUnobservedTaskExceptionsInvoked">
+            <summary>Non-zero if PreventUnobservedTaskExceptions has already been invoked.</summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Create">
+            <summary>Initializes a new <see cref="T:System.Runtime.CompilerServices.AsyncVoidMethodBuilder"/>.</summary>
+            <returns>The initialized <see cref="T:System.Runtime.CompilerServices.AsyncVoidMethodBuilder"/>.</returns>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.#ctor(System.Threading.SynchronizationContext)">
+            <summary>Initializes the <see cref="T:System.Runtime.CompilerServices.AsyncVoidMethodBuilder"/>.</summary>
+            <param name="synchronizationContext">The synchronizationContext associated with this operation. This may be null.</param>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Start``1(``0@)">
+            <summary>Initiates the builder's execution with the associated state machine.</summary>
+            <typeparam name="TStateMachine">Specifies the type of the state machine.</typeparam>
+            <param name="stateMachine">The state machine instance, passed by reference.</param>
+            <exception cref="T:System.ArgumentNullException">The <paramref name="stateMachine"/> argument was null (Nothing in Visual Basic).</exception>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)">
+            <summary>Associates the builder with the state machine it represents.</summary>
+            <param name="stateMachine">The heap-allocated state machine object.</param>
+            <exception cref="T:System.ArgumentNullException">The <paramref name="stateMachine"/> argument was null (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.InvalidOperationException">The builder is incorrectly initialized.</exception>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.System#Runtime#CompilerServices#IAsyncMethodBuilder#PreBoxInitialization">
+            <summary>Perform any initialization necessary prior to lifting the builder to the heap.</summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitOnCompleted``2(``0@,``1@)">
+            <summary>
+            Schedules the specified state machine to be pushed forward when the specified awaiter completes.
+            </summary>
+            <typeparam name="TAwaiter">Specifies the type of the awaiter.</typeparam>
+            <typeparam name="TStateMachine">Specifies the type of the state machine.</typeparam>
+            <param name="awaiter">The awaiter.</param>
+            <param name="stateMachine">The state machine.</param>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompleted``2(``0@,``1@)">
+            <summary>
+            Schedules the specified state machine to be pushed forward when the specified awaiter completes.
+            </summary>
+            <typeparam name="TAwaiter">Specifies the type of the awaiter.</typeparam>
+            <typeparam name="TStateMachine">Specifies the type of the state machine.</typeparam>
+            <param name="awaiter">The awaiter.</param>
+            <param name="stateMachine">The state machine.</param>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.SetResult">
+            <summary>Completes the method builder successfully.</summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.SetException(System.Exception)">
+            <summary>Faults the method builder with an exception.</summary>
+            <param name="exception">The exception that is the cause of this fault.</param>
+            <exception cref="T:System.ArgumentNullException">The <paramref name="exception"/> argument is null (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.InvalidOperationException">The builder is not initialized.</exception>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.NotifySynchronizationContextOfCompletion">
+            <summary>Notifies the current synchronization context that the operation completed.</summary>
+        </member>
+        <member name="P:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.ObjectIdForDebugger">
+            <summary>
+            Gets an object that may be used to uniquely identify this builder to the debugger.
+            </summary>
+            <remarks>
+            This property lazily instantiates the ID in a non-thread-safe manner.  
+            It must only be used by the debugger and only in a single-threaded manner.
+            </remarks>
+        </member>
+        <member name="T:System.Runtime.CompilerServices.IAsyncStateMachine">
+            <summary>
+            Represents state machines generated for asynchronous methods.
+            This type is intended for compiler use only.
+            </summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.IAsyncStateMachine.MoveNext">
+            <summary>Moves the state machine to its next state.</summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.IAsyncStateMachine.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)">
+            <summary>Configures the state machine with a heap-allocated replica.</summary>
+            <param name="stateMachine">The heap-allocated replica.</param>
+        </member>
+        <member name="T:System.Runtime.CompilerServices.ICriticalNotifyCompletion">
+            <summary>
+            Represents an awaiter used to schedule continuations when an await operation completes.
+            </summary>
+        </member>
+        <member name="T:System.Runtime.CompilerServices.INotifyCompletion">
+            <summary>
+            Represents an operation that will schedule continuations when the operation completes.
+            </summary>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.INotifyCompletion.OnCompleted(System.Action)">
+            <summary>Schedules the continuation action to be invoked when the instance completes.</summary>
+            <param name="continuation">The action to invoke when the operation completes.</param>
+            <exception cref="T:System.ArgumentNullException">The <paramref name="continuation"/> argument is null (Nothing in Visual Basic).</exception>
+        </member>
+        <member name="M:System.Runtime.CompilerServices.ICriticalNotifyCompletion.UnsafeOnCompleted(System.Action)">
+            <summary>Schedules the continuation action to be invoked when the instance completes.</summary>
+            <param name="continuation">The action to invoke when the operation completes.</param>
+            <exception cref="T:System.ArgumentNullException">The <paramref name="continuation"/> argument is null (Nothing in Visual Basic).</exception>
+            <remarks>Unlike OnCompleted, UnsafeOnCompleted need not propagate ExecutionContext information.</remarks>
+        </member>
+        <member name="T:System.Runtime.CompilerServices.VoidTaskResult">
+            <summary>Used with Task(of void)</summary>
+        </member>
+    </members>
+</doc>

+ 0 - 0
servicestack/lib/Microsoft.Bcl.1.0.19/lib/net40/ensureRedirect.xml


+ 0 - 0
servicestack/lib/Microsoft.Bcl.1.0.19/lib/net45/_._


Some files were not shown because too many files changed in this diff