home *** CD-ROM | disk | FTP | other *** search
/ moodle.waes.ac.uk / moodle.waes.ac.uk.zip / moodle.waes.ac.uk / TMG / SP1-TMG-KB981324-AMD64-ENU.msp / PCW_CAB_SHFx2 / Pane.js < prev    next >
Text File  |  2010-06-15  |  19KB  |  450 lines

  1. var SYSMON_GRAPH_HEIGHT = 150;
  2.  
  3.  
  4. //--------------------------------------------------------
  5. // Defining a pane object type
  6. //--------------------------------------------------------
  7. function Pane(sTitle, nColumn, nPosition, bOpened, sTabGUID, nHeightMust, nHeightNicetohave, iStatus)
  8. {
  9.     // Properties
  10.     this.sTitle = sTitle;
  11.     this.nColumn = nColumn;
  12.     this.nPosition = nPosition;
  13.     this.bOpened = parseInt(bOpened); // -1 or 0
  14.     this.sTabGUID = sTabGUID;
  15.     this.nHeightMust = nHeightMust;
  16.     this.nHeightNicetohave = nHeightNicetohave;
  17.     this.iStatus = iStatus;
  18.  
  19.     this.ObjectsArr = new Array();
  20.     this.nInnerRows = 1;
  21.     this.nInnerCols = 1;
  22.  
  23.     // Methods
  24.     this.GetControlName = PaneControlName
  25.     this.GetMustHeight = PaneMustHeight;
  26.     this.AddObject = PaneAddObject;
  27.     this.GetObjectString = PaneGetObjectString;
  28.     this.GetObjectsString = PaneGetObjectsString;
  29.     this.UpdateObjectsString = PaneUpdateObjectsString;
  30.     this.SetHeight = PaneSetHeight;
  31.     this.GetHeight = PaneGetHeight;
  32.     this.IsSystemMonitorPane = PaneIsSystemMonitorPane;
  33. }
  34. //--------------------------------------------------------
  35. // Implementation of the methods
  36. //--------------------------------------------------------
  37.  
  38.  
  39. function PaneIsSystemMonitorPane()
  40. {
  41.     return (this.ObjectsArr[0].sActiveX != "{7B800019-6212-41DC-B208-520B501FBFB2}");
  42. }
  43.  
  44.  
  45. //
  46. // only has affect after the pane has been completely initialized, which is rendered to the html document, and 
  47. // containing all PaneObject's it should has.
  48. //
  49. function PaneSetHeight(height)
  50. {
  51.     var BasicPane = document.getElementById(this.GetControlName());
  52.  
  53.     if (this.IsSystemMonitorPane())
  54.     {
  55.         BasicPane.getContainedObjectById('divContaining').style.height = "" + height + "px";
  56.     }
  57.     else // this is ISAList pane
  58.     {
  59.         for (var j = 0; j < this.ObjectsArr.length; ++j)
  60.         {
  61.             var PaneObj = BasicPane.getContainedObjectById(this.ObjectsArr[j].sGUID);
  62.             if (PaneObj == null)
  63.             {
  64.                 alert("ResizeColumn: Missing obj in Col: "+this.nColumn+" Row: "+this.nPosition);
  65.                 debugger;
  66.                 continue;
  67.             }
  68.             PaneObj.height = height / this.nInnerRows;
  69.         }
  70.         BasicPane.refresh();
  71.     }
  72. }
  73.  
  74.  
  75. //
  76. // only has affect after the pane has been completely initialized, which is rendered to the html document, and 
  77. // containing all PaneObject's it should has.
  78. //
  79.  
  80. function PaneGetHeight()
  81. {
  82.     var BasicPane = document.getElementById(this.GetControlName());
  83.     return BasicPane.Height;
  84. }
  85.  
  86. function PaneControlName()
  87. {
  88.     return "Pane" + this.nColumn + "" + this.nPosition;
  89. }
  90.  
  91. function PaneMustHeight()
  92. {
  93.     return document.getElementById(this.GetControlName()).TitleHeight +
  94.             ((this.bOpened == -1) ? this.nHeightMust + document.getElementById(this.GetControlName()).BottomHeight : 0);
  95. }
  96.  
  97. function PaneAddObject(PaneObj)
  98. {
  99.     this.ObjectsArr.push(PaneObj);
  100.     if (PaneObj.nRow >= this.nInnerRows)
  101.         this.nInnerRows = PaneObj.nRow + 1;
  102.     if (PaneObj.nCol >= this.nInnerCols)
  103.         this.nInnerCols = PaneObj.nCol + 1;
  104. }
  105.  
  106. function PaneGetObjectString(index)
  107. {
  108.     if (index < 0 || index >= this.ObjectsArr.length)
  109.         return "";
  110.     // IsaList gets tab index, the rest don't
  111.     return "<object TestKey='ISA_LIST_CONTROL"+this.ObjectsArr[index].sGUID+"' "+
  112.             ((this.IsSystemMonitorPane()) ? "tabindex='-1' " : "") +
  113.             "classid='clsid:"+this.ObjectsArr[index].sActiveX+"' "+
  114.             "id='"+this.ObjectsArr[index].sGUID+"' width='100%' height='100%'>"+
  115.             this.ObjectsArr[index].sParams+
  116.             "</object>";
  117. }
  118.  
  119. function PaneGetObjectsString()
  120. {
  121.     if (this.ObjectsArr.length == 0)
  122.         return "";
  123.     if (this.ObjectsArr.length == 1)
  124.         return this.GetObjectString(0);
  125.  
  126.     return ""; // will create a container to be filled later
  127. }
  128.  
  129. function PaneUpdateObjectsString()
  130. {
  131.     if (!this.IsSystemMonitorPane())
  132.         return;
  133.  
  134.     // The only pane that gets here is the performance monitor,
  135.     // so this is custom made for it: 
  136.     // first add a table with the perfmons, then another table with the legend.
  137.     // the idea is to have to scrol down in order to get to the legend    
  138.     
  139.     var sObjectString = "<table border='0' width='100%' height='" + SYSMON_GRAPH_HEIGHT + "' style='background-color: #f0f0ff;'><tr>";
  140.     var iIndex;
  141.     for (var j = 0; j < this.nInnerCols; ++j)
  142.     {    // row is 0
  143.         for (var index = 0, iIndex = -1; index < this.ObjectsArr.length; ++index)
  144.         {
  145.             if (this.ObjectsArr[index].nRow == 0 && this.ObjectsArr[index].nCol == j)
  146.             {
  147.                 iIndex = index;
  148.                 break;
  149.             }
  150.         }
  151.         if (j == this.nInnerCols - 1)
  152.             sObjectString = sObjectString + "<td>";
  153.         else               
  154.             sObjectString = sObjectString + "<td width='"+(100/this.nInnerCols)+"%'>";
  155.         if (iIndex > -1)
  156.             sObjectString = sObjectString + this.GetObjectString(iIndex);
  157.         sObjectString = sObjectString + "</td>";
  158.     }
  159.     sObjectString = sObjectString + "</tr></table><table width='100%' height='1px'><tr><td>";
  160.     
  161.     for (var index = 0, iIndex = -1; index < this.ObjectsArr.length; ++index)
  162.     {    // index is 1,0
  163.         if (this.ObjectsArr[index].nRow == 1 && this.ObjectsArr[index].nCol == 0)
  164.         {
  165.             iIndex = index;
  166.             break;
  167.         }
  168.     }
  169.     if (iIndex > -1)
  170.         sObjectString = sObjectString + this.GetObjectString(iIndex);
  171.     sObjectString = sObjectString + "</td></tr></table>";
  172.     
  173.     document.getElementById(this.GetControlName()).ContainedHtml = sObjectString;
  174. }
  175. //--------------------------------------------------------
  176. // Defining a pane-object object type
  177. //--------------------------------------------------------
  178. function PaneObject(sGUID, sActiveX, sParams, nCol, nRow)
  179. {
  180.     // Properties
  181.     this.sGUID = sGUID;
  182.     this.sActiveX = sActiveX;
  183.     this.sParams = sParams;
  184.     this.nCol = nCol;
  185.     this.nRow = nRow;
  186. }
  187. //--------------------------------------------------------
  188. // Panes array sorting functions
  189. //--------------------------------------------------------
  190. function PaneSortByPositionAsc(Pane1, Pane2)
  191. {
  192.     if (Pane1.nPosition > Pane2.nPosition)
  193.         return 1;
  194.     return -1;
  195. }
  196.  
  197. function PaneSortByPositionDesc(Pane1, Pane2)
  198. {
  199.     return PaneSortByPositionAsc(Pane2, Pane1);
  200. }
  201.  
  202. //--------------------------------------------------------
  203. // Panes array - retrieval functions
  204. //--------------------------------------------------------
  205. function GetIndexByGUID(Panes, sGUID)
  206. {
  207.     for (var i = 0; i < Panes.length; ++i)
  208.     {
  209.         for (var j = 0; j < Panes[i].ObjectsArr.length; ++j)
  210.         {
  211.             if (Panes[i].ObjectsArr[j].sGUID == sGUID)
  212.             {
  213.                 return i;
  214.             }
  215.         }
  216.     }
  217.     return -1;
  218. }
  219.  
  220. function GetIndexByColAndRow(Panes, nCol, nRow)
  221. {
  222.     for (var i = 0; i < g_Panes.length; i++)
  223.     {
  224.         if (g_Panes[i].nColumn == nCol && g_Panes[i].nPosition == nRow)
  225.         {
  226.             return i;
  227.         }
  228.     }
  229.     return -1;
  230. }
  231. //--------------------------------------------------------
  232.  
  233.  
  234.  
  235. // SIG // Begin signature block
  236. // SIG // MIIbYwYJKoZIhvcNAQcCoIIbVDCCG1ACAQExCzAJBgUr
  237. // SIG // DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB
  238. // SIG // gjcCAR4wJAIBAQQQEODJBs441BGiowAQS9NQkAIBAAIB
  239. // SIG // AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFCiPuezBkm/C
  240. // SIG // DjAIm4j7kSEbGzC/oIIV6jCCBIUwggNtoAMCAQICCmEF
  241. // SIG // 9x4AAAAAADIwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UE
  242. // SIG // BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
  243. // SIG // BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD
  244. // SIG // b3Jwb3JhdGlvbjEjMCEGA1UEAxMaTWljcm9zb2Z0IENv
  245. // SIG // ZGUgU2lnbmluZyBQQ0EwHhcNMDkwNzEzMjMwMDE4WhcN
  246. // SIG // MTAxMDEzMjMxMDE4WjCBgzELMAkGA1UEBhMCVVMxEzAR
  247. // SIG // BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
  248. // SIG // bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
  249. // SIG // bjENMAsGA1UECxMETU9QUjEeMBwGA1UEAxMVTWljcm9z
  250. // SIG // b2Z0IENvcnBvcmF0aW9uMIIBIjANBgkqhkiG9w0BAQEF
  251. // SIG // AAOCAQ8AMIIBCgKCAQEAtYypnJSEYRrMLiLEoJNkCd6F
  252. // SIG // obCQXfzJbGi18e/8jmv0+KBu11HeYKMnY9T237ZM0kUL
  253. // SIG // pz3Yb/7tpxhj0x/GgdS/BzeXQCt/519aNdmTT6vzKpLw
  254. // SIG // po2B7AUk3Nu4YWNTYQI1ONa49e57VKbJWDXp9BXv2gds
  255. // SIG // BS1NpLa6mzu4MTB+RbypoSU5DEOkRzuXnCBEcjfPUKBN
  256. // SIG // TfTDZdxE0Qg7ON0+xRdsRsetcyTAj4nB6uq6zWipEtZY
  257. // SIG // DFMWDP45A9aB8j5cV/N622bhBxjZGQMU9uZFmSpRTJDX
  258. // SIG // Wu+vtzsMKU1tIK4Ht5Iu6GnKnzBC58MyigsiSjLonAzG
  259. // SIG // UQMmAW2ScwIDAQABo4IBAjCB/zATBgNVHSUEDDAKBggr
  260. // SIG // BgEFBQcDAzAdBgNVHQ4EFgQUh4G33+76d/pZBWM3BArX
  261. // SIG // 6dqg4OAwDgYDVR0PAQH/BAQDAgeAMB8GA1UdIwQYMBaA
  262. // SIG // FFdFdBxdsPbIQwXgjFQtjzKn/kiWMEkGA1UdHwRCMEAw
  263. // SIG // PqA8oDqGOGh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9w
  264. // SIG // a2kvY3JsL3Byb2R1Y3RzL0NvZGVTaWdQQ0EuY3JsME0G
  265. // SIG // CCsGAQUFBwEBBEEwPzA9BggrBgEFBQcwAoYxaHR0cDov
  266. // SIG // L3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9Db2Rl
  267. // SIG // U2lnUENBLmNydDANBgkqhkiG9w0BAQUFAAOCAQEANiGE
  268. // SIG // 9Y+DIU2HqD+L58WkD0wwbll0mwuXdBapsfNwpK/CDDMk
  269. // SIG // 86BK+sHkIca22epcW5Fh9yJt/zH8F07XzUDjndLltNL6
  270. // SIG // jWwH2neayivuDVlHzwTCEGf66ulDO7fm0ZzZjiNgbhKb
  271. // SIG // w9l+XFcy3ZQN333FSJJNSHa3osBTlT78OqOTfPKFBMfG
  272. // SIG // hTiXNvgSkyIAmU55r5brWiCDrNBcWjCwAOJrOY8kido9
  273. // SIG // DKRGeWI2U2rXyc2SCPuH5VT1fFnFxHd9sMEsmMeXbEOn
  274. // SIG // +CD4g1RknmD44kqlZ9RJv1SIfVJE81HAJtHFfPCJ1hEJ
  275. // SIG // KMJFRYAdkCK9jqIFPjyzT73XOeCIkzCCBM0wggO1oAMC
  276. // SIG // AQICCmEWtSkAAAAAABAwDQYJKoZIhvcNAQEFBQAwdzEL
  277. // SIG // MAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x
  278. // SIG // EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv
  279. // SIG // c29mdCBDb3Jwb3JhdGlvbjEhMB8GA1UEAxMYTWljcm9z
  280. // SIG // b2Z0IFRpbWUtU3RhbXAgUENBMB4XDTEwMDEwNDIxMTIw
  281. // SIG // M1oXDTEzMDEwNDIxMjIwM1owgbYxCzAJBgNVBAYTAlVT
  282. // SIG // MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
  283. // SIG // ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y
  284. // SIG // YXRpb24xEDAOBgNVBAsTB25DaXBoZXIxJzAlBgNVBAsT
  285. // SIG // Hm5DaXBoZXIgRFNFIEVTTjpBQ0QzLUFFNjYtRTBCNTEl
  286. // SIG // MCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vy
  287. // SIG // dmljZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
  288. // SIG // ggEBAOMoqtk8Q0L4BhO64sf5wS9ZyzyV51SQbMNYlWKz
  289. // SIG // D2y9g9stWIgIkgvbzXbHVsbg7irTiDtcyqlwowAjIixT
  290. // SIG // OOhQx/EUCY0dy3yL9aYza6/IRl9Le17556bHL0KFZzaN
  291. // SIG // YEryE2bcsDltzhDK3XIFWHKd8gA7ADntJlM+Hs3uUJLN
  292. // SIG // hfQ6/YGhBV8L6UQO79VZQCYoy4JOTivIFCK7cB3kPdH9
  293. // SIG // YHZUTDns73c4i4z+dK/nFvRwMbjLrdTdi7b6AK3tdBSw
  294. // SIG // Rb78ZYjhrfxJ21/R1M50edSNhm+z9ZcHIS2aYcn8uhtM
  295. // SIG // 0uiruVDk0yv0wdlN1kCsFKeIhXNeaD5jt0HUZr0CAwEA
  296. // SIG // AaOCARkwggEVMB0GA1UdDgQWBBTh8K4PDQX8MvMcfRl/
  297. // SIG // z8TFv5FVTTAfBgNVHSMEGDAWgBQjNPjZUkZwCu1A+3b7
  298. // SIG // syuwwzWzDzBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8v
  299. // SIG // Y3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0
  300. // SIG // cy9NaWNyb3NvZnRUaW1lU3RhbXBQQ0EuY3JsMFgGCCsG
  301. // SIG // AQUFBwEBBEwwSjBIBggrBgEFBQcwAoY8aHR0cDovL3d3
  302. // SIG // dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNyb3Nv
  303. // SIG // ZnRUaW1lU3RhbXBQQ0EuY3J0MBMGA1UdJQQMMAoGCCsG
  304. // SIG // AQUFBwMIMA4GA1UdDwEB/wQEAwIGwDANBgkqhkiG9w0B
  305. // SIG // AQUFAAOCAQEAjVtJKFSHyYqpk/6b+I1UcSCdwDiTJym5
  306. // SIG // y5ZTios1tZQ3Fli9nj4XJ19ZL+Rdfh3iWdwH+2IY5WO/
  307. // SIG // 9AvPTdpbMPbImv8mWb8ZwxCy8OMewQyZ2lWSxswS38BY
  308. // SIG // TN2a1B0j+YYSROcmAuiAQWgWVDYdp2WzxDOh46SY2b5i
  309. // SIG // kE+SN7apiBdUSB+dwiLYciq5wzCTPjfsKam5zgvVwskW
  310. // SIG // pudeVQ3MgYRh6SwD25umG1MCOIsKWJEXyHFwFs4uxmP8
  311. // SIG // eZ+DBIK0gecvV2mtuKUfIzZ29hWUhgoe6t0RO2ZE0hVa
  312. // SIG // z6YrKB9OxQpzV0uVA2Ci6+kyfr09j6a9SSopwVcxwBDf
  313. // SIG // UTCCBgcwggPvoAMCAQICCmEWaDQAAAAAABwwDQYJKoZI
  314. // SIG // hvcNAQEFBQAwXzETMBEGCgmSJomT8ixkARkWA2NvbTEZ
  315. // SIG // MBcGCgmSJomT8ixkARkWCW1pY3Jvc29mdDEtMCsGA1UE
  316. // SIG // AxMkTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0
  317. // SIG // aG9yaXR5MB4XDTA3MDQwMzEyNTMwOVoXDTIxMDQwMzEz
  318. // SIG // MDMwOVowdzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh
  319. // SIG // c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV
  320. // SIG // BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEhMB8GA1UE
  321. // SIG // AxMYTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBMIIBIjAN
  322. // SIG // BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn6Fssd/b
  323. // SIG // SJIqfGsuGeG94uPFmVEjUK3O3RhOJA/u0afRTK10MCAR
  324. // SIG // 6wfVVJUVSZQbQpKumFwwJtoAa+h7veyJBw/3DgSY8InM
  325. // SIG // H8szJIed8vRnHCz8e+eIHernTqOhwSNTyo36Rc8J0F6v
  326. // SIG // 0LBCBKL5pmyTZ9co3EZTsIbQ5ShGLieshk9VUgzkAyz7
  327. // SIG // apCQMG6H81kwnfp+1pez6CGXfvjSE/MIt1NtUrRFkJ9I
  328. // SIG // AEpHZhEnKWaol+TTBoFKovmEpxFHFAmCn4TtVXj+AZod
  329. // SIG // UAiFABAwRu233iNGu8QtVJ+vHnhBMXfMm987g5OhYQK1
  330. // SIG // HQ2x/PebsgHOIktU//kFw8IgCwIDAQABo4IBqzCCAacw
  331. // SIG // DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUIzT42VJG
  332. // SIG // cArtQPt2+7MrsMM1sw8wCwYDVR0PBAQDAgGGMBAGCSsG
  333. // SIG // AQQBgjcVAQQDAgEAMIGYBgNVHSMEgZAwgY2AFA6sgmBA
  334. // SIG // VieX5SUT/CrhClOVWeSkoWOkYTBfMRMwEQYKCZImiZPy
  335. // SIG // LGQBGRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9z
  336. // SIG // b2Z0MS0wKwYDVQQDEyRNaWNyb3NvZnQgUm9vdCBDZXJ0
  337. // SIG // aWZpY2F0ZSBBdXRob3JpdHmCEHmtFqFKoKWtTHNY9AcT
  338. // SIG // LmUwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC5t
  339. // SIG // aWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvbWlj
  340. // SIG // cm9zb2Z0cm9vdGNlcnQuY3JsMFQGCCsGAQUFBwEBBEgw
  341. // SIG // RjBEBggrBgEFBQcwAoY4aHR0cDovL3d3dy5taWNyb3Nv
  342. // SIG // ZnQuY29tL3BraS9jZXJ0cy9NaWNyb3NvZnRSb290Q2Vy
  343. // SIG // dC5jcnQwEwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZI
  344. // SIG // hvcNAQEFBQADggIBABCXisNcA0Q23em0rXfbznlRTQGx
  345. // SIG // LnRxW20ME6vOvnuPuC7UEqKMbWK4VwLLTiATUJndekDi
  346. // SIG // V7uvWJoc4R0Bhqy7ePKL0Ow7Ae7ivo8KBciNSOLwUxXd
  347. // SIG // T6uS5OeNatWAweaU8gYvhQPpkSokInD79vzkeJkuDfcH
  348. // SIG // 4nC8GE6djmsKcpW4oTmcZy3FUQ7qYlw/FpiLID/iBxoy
  349. // SIG // +cwxSnYxPStyC8jqcD3/hQoT38IKYY7w17gX606Lf8U1
  350. // SIG // K16jv+u8fQtCe9RTciHuMMq7eGVcWwEXChQO0toUmPU8
  351. // SIG // uWZYsy0v5/mFhsxRVuidcJRsrDlM1PZ5v6oYemIp76Kb
  352. // SIG // KTQGdxpiyT0ebR+C8AvHLLvPQ7Pl+ex9teOkqHQ1uE7F
  353. // SIG // cSMSJnYLPFKMcVpGQxS8s7OwTWfIn0L/gHkhgJ4VMGbo
  354. // SIG // QhJeGsieIiHQQ+kr6bv0SMws1NgygEwmKkgkX1rqVu+m
  355. // SIG // 3pmdyjpvvYEndAYR7nYhv5uCwSdUtrFqPYmhdmG0bqET
  356. // SIG // pr+qR/ASb/2KMmyy/t9RyIwjyWa9nR2HEmQCPS2vWY+4
  357. // SIG // 5CHltbDKY7R4VAXUQS5QrJSwpXirs6CWdRrZkocTdSIv
  358. // SIG // MqgIbqBbjCW/oO+EyiHW6x5PyZruSeD3AWVviQt9yGnI
  359. // SIG // 5m7qp5fOMSn/DsVbXNhNG6HY+i+ePy5VFmvJE6P9MIIG
  360. // SIG // gTCCBGmgAwIBAgIKYRUIJwAAAAAADDANBgkqhkiG9w0B
  361. // SIG // AQUFADBfMRMwEQYKCZImiZPyLGQBGRYDY29tMRkwFwYK
  362. // SIG // CZImiZPyLGQBGRYJbWljcm9zb2Z0MS0wKwYDVQQDEyRN
  363. // SIG // aWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3Jp
  364. // SIG // dHkwHhcNMDYwMTI1MjMyMjMyWhcNMTcwMTI1MjMzMjMy
  365. // SIG // WjB5MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu
  366. // SIG // Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV
  367. // SIG // TWljcm9zb2Z0IENvcnBvcmF0aW9uMSMwIQYDVQQDExpN
  368. // SIG // aWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQTCCASIwDQYJ
  369. // SIG // KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ+N34U3jLEG
  370. // SIG // VmY2TtQK6zYjkR6vq41Y6cTPwZ86CiTExMResO4VFMX6
  371. // SIG // PpkzaxlpcvR8BV/lmSVE1zUZipDcKI6QDO/VkGGt3twY
  372. // SIG // cC2DyW+vhSz43bm5MP1xeByD/cipuYJnDXq4wQnCvBaX
  373. // SIG // Vz8cmNNp1zCQkJCNMB/YJtSee4jZ4gntl0lF6wRSgXV7
  374. // SIG // uLUiuC5Wu9fPqU48CoOiqDrFrbYBDmrPIrQjH2zVJ+e3
  375. // SIG // fsG01TKteSUcQobinYX0V9obWS8tJpIpxbPXhaOeYFqU
  376. // SIG // 5nuce16CNEtt/9TuJ9Ci3NGQDM59DhV8iKw0x8BsmIRK
  377. // SIG // yUR5aCjfIoMNuIosSGHi/hECAwEAAaOCAiMwggIfMBAG
  378. // SIG // CSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRXRXQcXbD2
  379. // SIG // yEMF4IxULY8yp/5IljALBgNVHQ8EBAMCAcYwDwYDVR0T
  380. // SIG // AQH/BAUwAwEB/zCBmAYDVR0jBIGQMIGNgBQOrIJgQFYn
  381. // SIG // l+UlE/wq4QpTlVnkpKFjpGEwXzETMBEGCgmSJomT8ixk
  382. // SIG // ARkWA2NvbTEZMBcGCgmSJomT8ixkARkWCW1pY3Jvc29m
  383. // SIG // dDEtMCsGA1UEAxMkTWljcm9zb2Z0IFJvb3QgQ2VydGlm
  384. // SIG // aWNhdGUgQXV0aG9yaXR5ghB5rRahSqClrUxzWPQHEy5l
  385. // SIG // MFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwubWlj
  386. // SIG // cm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL21pY3Jv
  387. // SIG // c29mdHJvb3RjZXJ0LmNybDBUBggrBgEFBQcBAQRIMEYw
  388. // SIG // RAYIKwYBBQUHMAKGOGh0dHA6Ly93d3cubWljcm9zb2Z0
  389. // SIG // LmNvbS9wa2kvY2VydHMvTWljcm9zb2Z0Um9vdENlcnQu
  390. // SIG // Y3J0MHYGA1UdIARvMG0wawYJKwYBBAGCNxUvMF4wXAYI
  391. // SIG // KwYBBQUHAgIwUB5OAEMAbwBwAHkAcgBpAGcAaAB0ACAA
  392. // SIG // qQAgADIAMAAwADYAIABNAGkAYwByAG8AcwBvAGYAdAAg
  393. // SIG // AEMAbwByAHAAbwByAGEAdABpAG8AbgAuMBMGA1UdJQQM
  394. // SIG // MAoGCCsGAQUFBwMDMA0GCSqGSIb3DQEBBQUAA4ICAQAw
  395. // SIG // vLAgpGKgp+85JmE93KzGmdCGxC71gzJlXiI+m9aG+Oi2
  396. // SIG // n8qL1jt1C6GRPkzdZHSMSfKIjBhnbP4VZka4OkZCl8iR
  397. // SIG // N9Qksees0+pBFIN308lPBV+jFFK/lqQvPlZbEHXOU8PO
  398. // SIG // BVRptGXJJKUP4SW4GrlN5QK5UB5Ps5gMHZUC7iJZrSLL
  399. // SIG // BXQLBEV7BFng2A+z60z4YN3CeJ7Rup9r9/PufkQRQNK9
  400. // SIG // uptLFghupL5V5KY4EqNI9BxVeoog0X3+kduUjy/Ce2um
  401. // SIG // ZIVPo+UsNCldC7/1xzgvxCDEVjH2ac6F+AqR7NDWrro4
  402. // SIG // BQzrbk9MnAMpqqL8GKApDA1cXFYjV9oclg3IJjbBRMvl
  403. // SIG // 4eZvieeP6Zi1c9N44+2jATx05V68bPYhiWcF7JedtbH9
  404. // SIG // r6bpcqXDNOEvn/n0ajniLQSCW/zQnK58nRH55rVTGXS6
  405. // SIG // OUo5631Cs0o7Nz3CSnsnmOfiTpsbSlQ4aiM3vmq3SO7q
  406. // SIG // Qg1JJJGOtwQul2/k50W7j039YNnXWcLYgNZgNHu3oZMg
  407. // SIG // /oG4qqVcCemKDb4oTX7X6A/tZXjRMV+5ZtvfQucLzAIH
  408. // SIG // jd//IAajRWW0szKNLpHiTbSpyfq8awQOsp/qn96kyQqW
  409. // SIG // 9I332Jio8IUCCFmkIKYsCxryUgbtaeVkGBvgo6veynwU
  410. // SIG // YUO4ZfU2o1UTK2csTRswTDGCBOUwggThAgEBMIGHMHkx
  411. // SIG // CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u
  412. // SIG // MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
  413. // SIG // b3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jv
  414. // SIG // c29mdCBDb2RlIFNpZ25pbmcgUENBAgphBfceAAAAAAAy
  415. // SIG // MAkGBSsOAwIaBQCgggERMBkGCSqGSIb3DQEJAzEMBgor
  416. // SIG // BgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEE
  417. // SIG // AYI3AgEVMCMGCSqGSIb3DQEJBDEWBBQTR20Zimb2/W6Q
  418. // SIG // dkifKzRtbhyHETCBsAYKKwYBBAGCNwIBDDGBoTCBnqBw
  419. // SIG // gG4ARgBvAHIAZQBmAHIAbwBuAHQAIABUAGgAcgBlAGEA
  420. // SIG // dAAgAE0AYQBuAGEAZwBlAG0AZQBuAHQAIABHAGEAdABl
  421. // SIG // AHcAYQB5ACAALQAgAEsAQgAxADkAOAAxADQAMAA5ACAA
  422. // SIG // RQBuAGcAbABpAHMAaKEqgChodHRwOi8vc3VwcG9ydC5t
  423. // SIG // aWNyb3NvZnQuY29tP2tiaWQ9OTgxMzI0MA0GCSqGSIb3
  424. // SIG // DQEBAQUABIIBAHjv9jJThQmmwhSQZpptPt9N5vCJUwFG
  425. // SIG // bZb9834JAKVZ44/eMVud2Yt4vIOPipornEQZO73CsJUv
  426. // SIG // KUJXNeWGTAYScX6dy50VZUrtIhnSGyb8t9lNlogG5syY
  427. // SIG // S6k/EXsaxvGz45odUiW8SX1ArlHBxXH8Y9JiPGovy//w
  428. // SIG // cicAJWn5tW+aedrDoJfukQzYjVBvUzF5NJciSzjxKHsd
  429. // SIG // Z4WHYuJ6t249IfZzcfhjwAOfzALEqrCmP2eFBYVsX224
  430. // SIG // MdHlYBWDAX22dowR85yKTXFLxA0itOFBtZYKSL4gmaF8
  431. // SIG // uEKW1Paiy3gcqLMFw65HlIho57g8ft4CJS7aeBzYhMLN
  432. // SIG // mxGhggIdMIICGQYJKoZIhvcNAQkGMYICCjCCAgYCAQEw
  433. // SIG // gYUwdzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
  434. // SIG // bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT
  435. // SIG // FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEhMB8GA1UEAxMY
  436. // SIG // TWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBAgphFrUpAAAA
  437. // SIG // AAAQMAcGBSsOAwIaoF0wGAYJKoZIhvcNAQkDMQsGCSqG
  438. // SIG // SIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTAwNjE1MTgz
  439. // SIG // MjEyWjAjBgkqhkiG9w0BCQQxFgQUzFa16jrZhCHm+RBE
  440. // SIG // REr4ze9quKswDQYJKoZIhvcNAQEFBQAEggEAiWykPtSI
  441. // SIG // P2uKh35YPpNvaMhnA6gsx2siIKn8zRAf3vu3fKBd52C8
  442. // SIG // LaOr8SmtrXyYmCEs50Nm4HV828wooy1BKa9GIqhc/5M9
  443. // SIG // QxJBti3wRJMwkw4r57zinZgzvLKowbE9x3fbu3njhX++
  444. // SIG // nTVagkeFhCKqBluszHJ4rW41lT4CgZ4EykzP7SPoKkTE
  445. // SIG // dW8ZVa7J3Mlv//5ZyyQ9ozOgdYCfwZtTaJ6esaLL2EHL
  446. // SIG // 1xjrAzOm8Ya92xTLXm5gnfPrKGnxyNOPOMFuQf/X9YzL
  447. // SIG // tpzxSDc7kEYNLhy65wsofWYkl2SjKUOnc1spHSg2YjXZ
  448. // SIG // lH0xlWWdszhszEj3iaaHrWVEFg==
  449. // SIG // End signature block
  450.