Skip to content

Instantly share code, notes, and snippets.

@klightspeed
Last active July 10, 2018 22:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save klightspeed/772c654f07292b71dfe7aa55c91397e8 to your computer and use it in GitHub Desktop.
Save klightspeed/772c654f07292b71dfe7aa55c91397e8 to your computer and use it in GitHub Desktop.
Elite Dangerous procgen system parsing
using System;
using System.Collections.Generic;
[System.Diagnostics.DebuggerDisplay("{Name}: ({X0},{Y0},{Z0})")]
public class PGRegion
{
public string Name { get; set; }
public float X0 { get; set; }
public float Y0 { get; set; }
public float Z0 { get; set; }
public int SizeX { get; set; }
public int SizeY { get; set; }
public int SizeZ { get; set; }
private static Dictionary<string, PGRegion> Regions = new[]
{
new PGRegion { Name = "Alrai Sector", X0 = 1596044.7500f, Y0 = 1310029.5000f, Z0 = 771304.3125f, SizeX = 4480, SizeY = 4480, SizeZ = 4480 },
new PGRegion { Name = "Antliae Sector", X0 = 1602907.8750f, Y0 = 1311388.5000f, Z0 = 770054.0625f, SizeX = 4480, SizeY = 4480, SizeZ = 4480 },
new PGRegion { Name = "Aquila Dark Region", X0 = 1573304.6250f, Y0 = 1307761.5000f, Z0 = 790385.6875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Aries Dark Region", X0 = 1593325.7500f, Y0 = 1302414.8750f, Z0 = 759933.3125f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Arietis Sector", X0 = 1594650.8750f, Y0 = 1306501.5000f, Z0 = 764468.1875f, SizeX = 5120, SizeY = 5120, SizeZ = 5120 },
new PGRegion { Name = "B133 Sector", X0 = 1581146.1250f, Y0 = 1304753.0000f, Z0 = 796106.8750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "B352 Sector", X0 = 1535634.2500f, Y0 = 1308638.3750f, Z0 = 771871.6875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "B92 Sector", X0 = 1591747.5000f, Y0 = 1308102.1250f, Z0 = 788450.0000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Barnard's Loop Sector", X0 = 1619568.1250f, Y0 = 1296628.3750f, Z0 = 724066.0625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Bei Dou Sector", X0 = 1597163.2500f, Y0 = 1312559.6250f, Z0 = 769419.5000f, SizeX = 2560, SizeY = 2560, SizeZ = 2560 },
new PGRegion { Name = "Blanco 1 Sector", X0 = 1590774.7500f, Y0 = 1276457.6250f, Z0 = 769018.2500f, SizeX = 14784, SizeY = 14784, SizeZ = 14784 },
new PGRegion { Name = "Bleia1", X0 = 1581760.0000f, Y0 = 1300096.0000f, Z0 = 1954976.0000f, SizeX = 32768, SizeY = 32768, SizeZ = 32768 },
new PGRegion { Name = "Bleia2", X0 = 1581760.0000f, Y0 = 1300096.0000f, Z0 = 1938976.0000f, SizeX = 32768, SizeY = 32768, SizeZ = 32768 },
new PGRegion { Name = "Bleia3", X0 = 1581760.0000f, Y0 = 1300096.0000f, Z0 = 1922976.0000f, SizeX = 32768, SizeY = 32768, SizeZ = 32768 },
new PGRegion { Name = "Bleia4", X0 = 1597536.0000f, Y0 = 1300096.0000f, Z0 = 1938976.0000f, SizeX = 32768, SizeY = 32768, SizeZ = 32768 },
new PGRegion { Name = "Bleia5", X0 = 1568736.0000f, Y0 = 1300096.0000f, Z0 = 1938976.0000f, SizeX = 32768, SizeY = 32768, SizeZ = 32768 },
new PGRegion { Name = "Blinking Sector", X0 = 1534299.3750f, Y0 = 1322499.1250f, Z0 = 775116.7500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Blue Flash Sector", X0 = 1513135.0000f, Y0 = 1324329.7500f, Z0 = 813325.7500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Blue Planetary Sector", X0 = 1741192.5000f, Y0 = 1321430.1250f, Z0 = 834793.9375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Blue Snowball Sector", X0 = 1435550.2500f, Y0 = 1255102.8750f, Z0 = 720232.5000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Bovomit", X0 = 940896.0000f, Y0 = 1298016.0000f, Z0 = 533216.0000f, SizeX = 32768, SizeY = 32768, SizeZ = 32768 },
new PGRegion { Name = "Bow-Tie Sector", X0 = 1500769.5000f, Y0 = 1327576.0000f, Z0 = 712993.8750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Box Sector", X0 = 1540022.0000f, Y0 = 1396602.0000f, Z0 = 1097517.2500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Bubble Sector", X0 = 1385963.5000f, Y0 = 1309113.1250f, Z0 = 682315.1250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Bug Sector", X0 = 1616143.6250f, Y0 = 1310408.6250f, Z0 = 875118.4375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Butterfly Sector", X0 = 1652229.3750f, Y0 = 1314347.8750f, Z0 = 690353.8125f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "California Sector", X0 = 1585677.8750f, Y0 = 1301503.0000f, Z0 = 738761.4375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Capricorni Sector", X0 = 1595731.8750f, Y0 = 1305766.7500f, Z0 = 772875.1875f, SizeX = 3840, SizeY = 3840, SizeZ = 3840 },
new PGRegion { Name = "Cat's Eye Sector", X0 = 1506411.5000f, Y0 = 1360354.1250f, Z0 = 757916.2500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Cat's Paw Sector", X0 = 1623547.5000f, Y0 = 1310163.0000f, Z0 = 942031.3750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Cave Sector", X0 = 1524317.8750f, Y0 = 1311803.8750f, Z0 = 741668.3750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Cephei Sector", X0 = 1594464.6250f, Y0 = 1310881.6250f, Z0 = 768408.6250f, SizeX = 3200, SizeY = 3200, SizeZ = 3200 },
new PGRegion { Name = "Cepheus Dark Region", X0 = 1552368.5000f, Y0 = 1316099.5000f, Z0 = 764314.7500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Cepheus Dark Region B Sector", X0 = 1566066.3750f, Y0 = 1316061.5000f, Z0 = 761175.3750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Ceti Sector", X0 = 1596828.7500f, Y0 = 1305537.6250f, Z0 = 768080.0000f, SizeX = 4480, SizeY = 4480, SizeZ = 4480 },
new PGRegion { Name = "Chamaeleon Sector", X0 = 1611785.6250f, Y0 = 1303433.5000f, Z0 = 777823.9375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Chi Persei Sector", X0 = 1414231.6250f, Y0 = 1283316.8750f, Z0 = 585468.5625f, SizeX = 25664, SizeY = 25664, SizeZ = 25664 },
new PGRegion { Name = "Coalsack Dark Region", X0 = 1610728.5000f, Y0 = 1308029.6250f, Z0 = 776478.7500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Coalsack Sector", X0 = 1609723.5000f, Y0 = 1308292.1250f, Z0 = 776897.6250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Cocoon Sector", X0 = 1494691.8750f, Y0 = 1298505.3750f, Z0 = 760340.1250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Col 107 Sector", X0 = 1663949.6250f, Y0 = 1290174.1250f, Z0 = 591508.1875f, SizeX = 36992, SizeY = 36992, SizeZ = 36992 },
new PGRegion { Name = "Col 121 Sector", X0 = 1624729.7500f, Y0 = 1287936.0000f, Z0 = 729148.3750f, SizeX = 29376, SizeY = 29376, SizeZ = 29376 },
new PGRegion { Name = "Col 132 Sector", X0 = 1629279.8750f, Y0 = 1290348.8750f, Z0 = 735618.6875f, SizeX = 27264, SizeY = 27264, SizeZ = 27264 },
new PGRegion { Name = "Col 135 Sector", X0 = 1624874.5000f, Y0 = 1300374.5000f, Z0 = 754863.8125f, SizeX = 9600, SizeY = 9600, SizeZ = 9600 },
new PGRegion { Name = "Col 140 Sector", X0 = 1632316.6250f, Y0 = 1300530.3750f, Z0 = 748626.5000f, SizeX = 10368, SizeY = 10368, SizeZ = 10368 },
new PGRegion { Name = "Col 173 Sector", X0 = 1626434.6250f, Y0 = 1289342.8750f, Z0 = 748869.7500f, SizeX = 32000, SizeY = 32000, SizeZ = 32000 },
new PGRegion { Name = "Col 228 Sector", X0 = 1809236.6250f, Y0 = 1298134.1250f, Z0 = 831063.6250f, SizeX = 18752, SizeY = 18752, SizeZ = 18752 },
new PGRegion { Name = "Col 240 Sector", X0 = 1741311.2500f, Y0 = 1300126.1250f, Z0 = 817799.6250f, SizeX = 23936, SizeY = 23936, SizeZ = 23936 },
new PGRegion { Name = "Col 285 Sector", X0 = 1587377.0000f, Y0 = 1302888.7500f, Z0 = 760308.6250f, SizeX = 20864, SizeY = 20864, SizeZ = 20864 },
new PGRegion { Name = "Col 359 Sector", X0 = 1568831.7500f, Y0 = 1299018.1250f, Z0 = 775207.3125f, SizeX = 36224, SizeY = 36224, SizeZ = 36224 },
new PGRegion { Name = "Col 394 Sector", X0 = 1576772.1250f, Y0 = 1295028.6250f, Z0 = 835408.6250f, SizeX = 9216, SizeY = 9216, SizeZ = 9216 },
new PGRegion { Name = "Col 463 Sector", X0 = 1535720.5000f, Y0 = 1317340.8750f, Z0 = 721074.8125f, SizeX = 12800, SizeY = 12800, SizeZ = 12800 },
new PGRegion { Name = "Col 69 Sector", X0 = 1601661.7500f, Y0 = 1292339.3750f, Z0 = 718243.1875f, SizeX = 19200, SizeY = 19200, SizeZ = 19200 },
new PGRegion { Name = "Col 70 Sector", X0 = 1599349.8750f, Y0 = 1283149.0000f, Z0 = 720003.8750f, SizeX = 32896, SizeY = 32896, SizeZ = 32896 },
new PGRegion { Name = "Col 89 Sector", X0 = 1599855.5000f, Y0 = 1301299.7500f, Z0 = 618371.0625f, SizeX = 37952, SizeY = 37952, SizeZ = 37952 },
new PGRegion { Name = "Col 97 Sector", X0 = 1619644.2500f, Y0 = 1301459.5000f, Z0 = 704130.4375f, SizeX = 16000, SizeY = 16000, SizeZ = 16000 },
new PGRegion { Name = "Cone Sector", X0 = 1623694.1250f, Y0 = 1311022.5000f, Z0 = 703356.3750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Core Sys Sector", X0 = 1597920.0000f, Y0 = 1309920.0000f, Z0 = 769760.0000f, SizeX = 3200, SizeY = 3200, SizeZ = 3200 },
new PGRegion { Name = "Corona Austr. Dark Region", X0 = 1596047.1250f, Y0 = 1302628.7500f, Z0 = 783794.1250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Crab Sector", X0 = 1614192.6250f, Y0 = 1285683.3750f, Z0 = 546024.5625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Crescent Sector", X0 = 1441552.2500f, Y0 = 1315020.1250f, Z0 = 808185.6875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Crucis Sector", X0 = 1600029.1250f, Y0 = 1309866.5000f, Z0 = 770874.8750f, SizeX = 3840, SizeY = 3840, SizeZ = 3840 },
new PGRegion { Name = "Dryman", X0 = 2194336.0000f, Y0 = 1295776.0000f, Z0 = 1432096.0000f, SizeX = 32768, SizeY = 32768, SizeZ = 32768 },
new PGRegion { Name = "Dumbbell Sector", X0 = 1565657.2500f, Y0 = 1306048.5000f, Z0 = 785296.8750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Eagle Sector", X0 = 1530835.1250f, Y0 = 1311447.5000f, Z0 = 982351.3750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Eight Burst Sector", X0 = 1661908.2500f, Y0 = 1322750.2500f, Z0 = 770565.0000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Elephant's Trunk Sector", X0 = 1511233.3750f, Y0 = 1313895.6250f, Z0 = 754226.5625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Eskimo Sector", X0 = 1603828.2500f, Y0 = 1315975.5000f, Z0 = 744913.9375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Eta Carina Sector", X0 = 1870956.6250f, Y0 = 1303796.2500f, Z0 = 854752.5625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Fe 1 Sector", X0 = 1704382.5000f, Y0 = 1303564.5000f, Z0 = 803929.7500f, SizeX = 17600, SizeY = 17600, SizeZ = 17600 },
new PGRegion { Name = "Fetus Sector", X0 = 1504109.8750f, Y0 = 1317214.5000f, Z0 = 762681.6875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Fine Ring Sector", X0 = 1612743.2500f, Y0 = 1309436.7500f, Z0 = 795601.3750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Flame Sector", X0 = 1610024.3750f, Y0 = 1299338.6250f, Z0 = 740673.1875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Flaming Star Sector", X0 = 1588849.0000f, Y0 = 1306136.8750f, Z0 = 714319.6875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Froadik", X0 = 979616.0000f, Y0 = 1288736.0000f, Z0 = 1212576.0000f, SizeX = 32768, SizeY = 32768, SizeZ = 32768 },
new PGRegion { Name = "G2 Dust Cloud Sector", X0 = 1597188.0000f, Y0 = 1307600.1250f, Z0 = 1660959.2500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Ghost of Jupiter Sector", X0 = 1633814.1250f, Y0 = 1332126.6250f, Z0 = 762288.5625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Heart Sector", X0 = 1426044.0000f, Y0 = 1312089.7500f, Z0 = 599068.6250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Helix Sector", X0 = 1589188.5000f, Y0 = 1289654.8750f, Z0 = 777904.0625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Herculis Sector", X0 = 1595584.0000f, Y0 = 1312180.7500f, Z0 = 770991.6875f, SizeX = 3200, SizeY = 3200, SizeZ = 3200 },
new PGRegion { Name = "Hind Sector", X0 = 1595265.5000f, Y0 = 1301715.5000f, Z0 = 750326.8750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Horsehead Dark Region", X0 = 1612590.7500f, Y0 = 1292171.3750f, Z0 = 726746.5625f, SizeX = 12800, SizeY = 12800, SizeZ = 12800 },
new PGRegion { Name = "Horsehead Sector", X0 = 1609493.8750f, Y0 = 1299584.2500f, Z0 = 742192.8125f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Hubble's Variable Sector", X0 = 1635050.3750f, Y0 = 1310498.0000f, Z0 = 680346.5000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Hyades Sector", X0 = 1594912.0000f, Y0 = 1305098.3750f, Z0 = 762307.8125f, SizeX = 9216, SizeY = 9216, SizeZ = 9216 },
new PGRegion { Name = "Hydrae Sector", X0 = 1600082.2500f, Y0 = 1312290.2500f, Z0 = 771663.0625f, SizeX = 3840, SizeY = 3840, SizeZ = 3840 },
new PGRegion { Name = "Hyponia", X0 = 846496.0000f, Y0 = 1294816.0000f, Z0 = 1525536.0000f, SizeX = 32768, SizeY = 32768, SizeZ = 32768 },
new PGRegion { Name = "IC 1287 Sector", X0 = 1584852.6250f, Y0 = 1308040.7500f, Z0 = 798033.4375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 1297 Sector", X0 = 1603204.7500f, Y0 = 1216436.1250f, Z0 = 1000130.0625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 1396 Sector", X0 = 1497803.1250f, Y0 = 1301136.8750f, Z0 = 741323.3125f, SizeX = 32000, SizeY = 32000, SizeZ = 32000 },
new PGRegion { Name = "IC 1590 Sector", X0 = 1326137.3750f, Y0 = 1259988.7500f, Z0 = 586928.3125f, SizeX = 35712, SizeY = 35712, SizeZ = 35712 },
new PGRegion { Name = "IC 1805 Sector", X0 = 1448195.8750f, Y0 = 1303155.2500f, Z0 = 621493.0000f, SizeX = 22912, SizeY = 22912, SizeZ = 22912 },
new PGRegion { Name = "IC 1848 Sector", X0 = 1446617.5000f, Y0 = 1303858.2500f, Z0 = 607114.7500f, SizeX = 21888, SizeY = 21888, SizeZ = 21888 },
new PGRegion { Name = "IC 2149 Sector", X0 = 1542282.1250f, Y0 = 1350307.1250f, Z0 = 548157.3750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 2165 Sector", X0 = 1885103.2500f, Y0 = 1212118.6250f, Z0 = 439445.0000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 2391 Sector", X0 = 1614427.5000f, Y0 = 1306128.7500f, Z0 = 768286.4375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 2395 Sector", X0 = 1669180.8750f, Y0 = 1302994.2500f, Z0 = 763356.6250f, SizeX = 7296, SizeY = 7296, SizeZ = 7296 },
new PGRegion { Name = "IC 2448 Sector", X0 = 1866970.3750f, Y0 = 1232951.8750f, Z0 = 844746.3125f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 2488 Sector", X0 = 1710270.8750f, Y0 = 1296228.5000f, Z0 = 781173.3750f, SizeX = 12416, SizeY = 12416, SizeZ = 12416 },
new PGRegion { Name = "IC 2501 Sector", X0 = 2196449.7500f, Y0 = 1247298.0000f, Z0 = 884813.3750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 2553 Sector", X0 = 2007690.8750f, Y0 = 1267966.3750f, Z0 = 882243.2500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 2581 Sector", X0 = 1842890.2500f, Y0 = 1307776.0000f, Z0 = 831984.4375f, SizeX = 7488, SizeY = 7488, SizeZ = 7488 },
new PGRegion { Name = "IC 2602 Sector", X0 = 1610478.8750f, Y0 = 1305111.3750f, Z0 = 772068.4375f, SizeX = 9920, SizeY = 9920, SizeZ = 9920 },
new PGRegion { Name = "IC 2621 Sector", X0 = 2055871.7500f, Y0 = 1266815.7500f, Z0 = 950109.4375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 289 Sector", X0 = 1560530.1250f, Y0 = 1310977.3750f, Z0 = 727277.5000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 2944 Sector", X0 = 1750062.2500f, Y0 = 1287330.2500f, Z0 = 829648.5000f, SizeX = 39232, SizeY = 39232, SizeZ = 39232 },
new PGRegion { Name = "IC 348 Sector", X0 = 1585802.8750f, Y0 = 1298429.3750f, Z0 = 734342.3125f, SizeX = 1664, SizeY = 1664, SizeZ = 1664 },
new PGRegion { Name = "IC 410 Sector", X0 = 1555502.2500f, Y0 = 1295663.3750f, Z0 = 416926.3125f, SizeX = 9600, SizeY = 9600, SizeZ = 9600 },
new PGRegion { Name = "IC 4191 Sector", X0 = 1974291.0000f, Y0 = 1269761.2500f, Z0 = 1028904.6875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 4604 Sector", X0 = 1598327.1250f, Y0 = 1314157.3750f, Z0 = 786340.6250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 4634 Sector", X0 = 1594682.3750f, Y0 = 1359038.0000f, Z0 = 1002734.1250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 4651 Sector", X0 = 1628087.5000f, Y0 = 1296045.1250f, Z0 = 855070.6250f, SizeX = 5440, SizeY = 5440, SizeZ = 5440 },
new PGRegion { Name = "IC 4663 Sector", X0 = 1645078.7500f, Y0 = 1278653.1250f, Z0 = 968176.1875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 4665 Sector", X0 = 1574095.3750f, Y0 = 1314820.6250f, Z0 = 794115.0625f, SizeX = 15040, SizeY = 15040, SizeZ = 15040 },
new PGRegion { Name = "IC 4673 Sector", X0 = 1569419.0000f, Y0 = 1290363.7500f, Z0 = 1195738.5000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 4699 Sector", X0 = 1728716.1250f, Y0 = 1150730.3750f, Z0 = 1391034.6250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 4756 Sector", X0 = 1563752.2500f, Y0 = 1310214.3750f, Z0 = 805999.9375f, SizeX = 11776, SizeY = 11776, SizeZ = 11776 },
new PGRegion { Name = "IC 4776 Sector", X0 = 1568943.7500f, Y0 = 1130337.6250f, Z0 = 1514750.1250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 4846 Sector", X0 = 1233904.7500f, Y0 = 1174606.8750f, Z0 = 1461396.5000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 4996 Sector", X0 = 1421947.2500f, Y0 = 1312965.8750f, Z0 = 814266.4375f, SizeX = 5312, SizeY = 5312, SizeZ = 5312 },
new PGRegion { Name = "IC 4997 Sector", X0 = 1382514.1250f, Y0 = 1259472.8750f, Z0 = 900209.1875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 5117 Sector", X0 = 1500700.2500f, Y0 = 1299786.1250f, Z0 = 768326.8750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 5146 Sector", X0 = 1508894.5000f, Y0 = 1300657.5000f, Z0 = 762230.5000f, SizeX = 4672, SizeY = 4672, SizeZ = 4672 },
new PGRegion { Name = "IC 5148 Sector", X0 = 1593560.7500f, Y0 = 1232260.2500f, Z0 = 826668.9375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "IC 5217 Sector", X0 = 1301965.2500f, Y0 = 1280012.2500f, Z0 = 713073.0000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "ICZ", X0 = 1598592.0000f, Y0 = 1304800.0000f, Z0 = 770080.0000f, SizeX = 5600, SizeY = 4960, SizeZ = 5760 },
new PGRegion { Name = "Iris Sector", X0 = 1551188.6250f, Y0 = 1320094.7500f, Z0 = 756823.7500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Jastreb Sector", X0 = 1597519.3750f, Y0 = 1310042.2500f, Z0 = 768456.0000f, SizeX = 3200, SizeY = 3200, SizeZ = 3200 },
new PGRegion { Name = "Jellyfish Sector", X0 = 1621592.8750f, Y0 = 1316414.8750f, Z0 = 610376.1250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Jewel Box Sector", X0 = 1765780.2500f, Y0 = 1314493.1250f, Z0 = 878078.4375f, SizeX = 12032, SizeY = 12032, SizeZ = 12032 },
new PGRegion { Name = "LBN 623 Sector", X0 = 1580335.7500f, Y0 = 1307716.8750f, Z0 = 757540.1250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Lagoon Sector", X0 = 1581271.2500f, Y0 = 1305304.2500f, Z0 = 911339.7500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Lemon Slice Sector", X0 = 1497588.5000f, Y0 = 1389882.5000f, Z0 = 702314.3125f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Little Dumbbell Sector", X0 = 1546377.1250f, Y0 = 1296073.7500f, Z0 = 724898.1875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Little Gem Sector", X0 = 1516513.6250f, Y0 = 1249307.5000f, Z0 = 932514.6875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Little Ghost Sector", X0 = 1589788.6250f, Y0 = 1324437.8750f, Z0 = 923992.5625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Lupus Dark Region", X0 = 1601390.8750f, Y0 = 1312377.3750f, Z0 = 781369.9375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Lupus Dark Region B Sector", X0 = 1601868.5000f, Y0 = 1310931.6250f, Z0 = 781893.0000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Lyncis Sector", X0 = 1595087.3750f, Y0 = 1311363.2500f, Z0 = 764606.7500f, SizeX = 4480, SizeY = 4480, SizeZ = 4480 },
new PGRegion { Name = "M103 Sector", X0 = 1415700.1250f, Y0 = 1300963.1250f, Z0 = 627009.2500f, SizeX = 6720, SizeY = 6720, SizeZ = 6720 },
new PGRegion { Name = "M16 Sector", X0 = 1542996.6250f, Y0 = 1310866.7500f, Z0 = 942573.0000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "M17 Sector", X0 = 1554290.2500f, Y0 = 1299737.6250f, Z0 = 892454.5625f, SizeX = 19776, SizeY = 19776, SizeZ = 19776 },
new PGRegion { Name = "M18 Sector", X0 = 1564336.2500f, Y0 = 1307173.6250f, Z0 = 900580.1250f, SizeX = 3968, SizeY = 3968, SizeZ = 3968 },
new PGRegion { Name = "M20 Sector", X0 = 1582202.5000f, Y0 = 1304278.8750f, Z0 = 848901.0000f, SizeX = 13888, SizeY = 13888, SizeZ = 13888 },
new PGRegion { Name = "M21 Sector", X0 = 1577518.2500f, Y0 = 1305490.0000f, Z0 = 890831.0000f, SizeX = 10304, SizeY = 10304, SizeZ = 10304 },
new PGRegion { Name = "M23 Sector", X0 = 1582640.5000f, Y0 = 1309110.8750f, Z0 = 830192.0000f, SizeX = 11456, SizeY = 11456, SizeZ = 11456 },
new PGRegion { Name = "M25 Sector", X0 = 1578703.2500f, Y0 = 1300784.3750f, Z0 = 828329.8750f, SizeX = 11328, SizeY = 11328, SizeZ = 11328 },
new PGRegion { Name = "M26 Sector", X0 = 1528507.8750f, Y0 = 1299645.0000f, Z0 = 920457.3750f, SizeX = 6848, SizeY = 6848, SizeZ = 6848 },
new PGRegion { Name = "M29 Sector", X0 = 1479473.0000f, Y0 = 1309285.2500f, Z0 = 794996.1250f, SizeX = 6976, SizeY = 6976, SizeZ = 6976 },
new PGRegion { Name = "M34 Sector", X0 = 1564235.5000f, Y0 = 1292021.1250f, Z0 = 725451.3125f, SizeX = 10944, SizeY = 10944, SizeZ = 10944 },
new PGRegion { Name = "M35 Sector", X0 = 1603088.2500f, Y0 = 1308579.6250f, Z0 = 680658.4375f, SizeX = 12416, SizeY = 12416, SizeZ = 12416 },
new PGRegion { Name = "M36 Sector", X0 = 1582301.6250f, Y0 = 1309889.5000f, Z0 = 630382.3750f, SizeX = 8064, SizeY = 8064, SizeZ = 8064 },
new PGRegion { Name = "M37 Sector", X0 = 1587848.6250f, Y0 = 1313436.6250f, Z0 = 621479.3125f, SizeX = 11776, SizeY = 11776, SizeZ = 11776 },
new PGRegion { Name = "M38 Sector", X0 = 1578104.3750f, Y0 = 1306384.5000f, Z0 = 654516.3750f, SizeX = 12992, SizeY = 12992, SizeZ = 12992 },
new PGRegion { Name = "M39 Sector", X0 = 1562683.6250f, Y0 = 1307182.7500f, Z0 = 766905.6250f, SizeX = 5952, SizeY = 5952, SizeZ = 5952 },
new PGRegion { Name = "M41 Sector", X0 = 1643713.0000f, Y0 = 1287513.2500f, Z0 = 715463.4375f, SizeX = 22400, SizeY = 22400, SizeZ = 22400 },
new PGRegion { Name = "M46 Sector", X0 = 1703694.2500f, Y0 = 1313417.8750f, Z0 = 674776.1250f, SizeX = 16704, SizeY = 16704, SizeZ = 16704 },
new PGRegion { Name = "M47 Sector", X0 = 1635507.6250f, Y0 = 1310544.8750f, Z0 = 735441.9375f, SizeX = 7488, SizeY = 7488, SizeZ = 7488 },
new PGRegion { Name = "M48 Sector", X0 = 1649935.7500f, Y0 = 1325809.5000f, Z0 = 712404.7500f, SizeX = 14080, SizeY = 14080, SizeZ = 14080 },
new PGRegion { Name = "M50 Sector", X0 = 1660038.6250f, Y0 = 1305521.3750f, Z0 = 695013.8125f, SizeX = 7936, SizeY = 7936, SizeZ = 7936 },
new PGRegion { Name = "M52 Sector", X0 = 1456444.1250f, Y0 = 1306058.3750f, Z0 = 707451.0625f, SizeX = 12992, SizeY = 12992, SizeZ = 12992 },
new PGRegion { Name = "M6 Sector", X0 = 1599561.2500f, Y0 = 1307922.3750f, Z0 = 819170.6250f, SizeX = 5952, SizeY = 5952, SizeZ = 5952 },
new PGRegion { Name = "M67 Sector", X0 = 1639520.6250f, Y0 = 1354380.6250f, Z0 = 698921.1875f, SizeX = 13824, SizeY = 13824, SizeZ = 13824 },
new PGRegion { Name = "M7 Sector", X0 = 1594427.2500f, Y0 = 1301731.5000f, Z0 = 795215.3125f, SizeX = 14656, SizeY = 14656, SizeZ = 14656 },
new PGRegion { Name = "M93 Sector", X0 = 1690115.0000f, Y0 = 1308729.5000f, Z0 = 714275.8750f, SizeX = 6336, SizeY = 6336, SizeZ = 6336 },
new PGRegion { Name = "Mel 111 Sector", X0 = 1596729.8750f, Y0 = 1317897.6250f, Z0 = 767105.0625f, SizeX = 6976, SizeY = 6976, SizeZ = 6976 },
new PGRegion { Name = "Mel 22 Sector", X0 = 1590683.6250f, Y0 = 1299763.6250f, Z0 = 751867.9375f, SizeX = 11008, SizeY = 11008, SizeZ = 11008 },
new PGRegion { Name = "Mel 227 Sector", X0 = 1605318.2500f, Y0 = 1303343.1250f, Z0 = 777105.2500f, SizeX = 3648, SizeY = 3648, SizeZ = 3648 },
new PGRegion { Name = "Mel 71 Sector", X0 = 1839208.5000f, Y0 = 1329675.0000f, Z0 = 547886.7500f, SizeX = 15360, SizeY = 15360, SizeZ = 15360 },
new PGRegion { Name = "Messier 78 Sector", X0 = 1617601.0000f, Y0 = 1295673.6250f, Z0 = 723342.2500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Monkey Head Sector", X0 = 1632586.1250f, Y0 = 1309749.7500f, Z0 = 566601.6250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Musca Dark Region", X0 = 1609629.6250f, Y0 = 1306137.7500f, Z0 = 776157.1875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 1027 Sector", X0 = 1538615.8750f, Y0 = 1308926.8750f, Z0 = 708864.1250f, SizeX = 9408, SizeY = 9408, SizeZ = 9408 },
new PGRegion { Name = "NGC 1245 Sector", X0 = 1428405.1250f, Y0 = 1257210.1250f, Z0 = 515917.1875f, SizeX = 15744, SizeY = 15744, SizeZ = 15744 },
new PGRegion { Name = "NGC 129 Sector", X0 = 1443339.5000f, Y0 = 1294234.1250f, Z0 = 675985.5625f, SizeX = 19776, SizeY = 19776, SizeZ = 19776 },
new PGRegion { Name = "NGC 1333 Sector", X0 = 1584121.2500f, Y0 = 1296050.2500f, Z0 = 737505.7500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 1342 Sector", X0 = 1568187.1250f, Y0 = 1290039.7500f, Z0 = 707645.6250f, SizeX = 6080, SizeY = 6080, SizeZ = 6080 },
new PGRegion { Name = "NGC 1360 Sector", X0 = 1610311.7500f, Y0 = 1278715.2500f, Z0 = 751719.8125f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 1444 Sector", X0 = 1531946.8750f, Y0 = 1307209.3750f, Z0 = 663692.0000f, SizeX = 2944, SizeY = 2944, SizeZ = 2944 },
new PGRegion { Name = "NGC 1491 Sector", X0 = 1439254.7500f, Y0 = 1302735.2500f, Z0 = 489414.0313f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 1501 Sector", X0 = 1530029.1250f, Y0 = 1321560.7500f, Z0 = 674879.5625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 1502 Sector", X0 = 1547190.7500f, Y0 = 1320994.6250f, Z0 = 700850.8125f, SizeX = 4032, SizeY = 4032, SizeZ = 4032 },
new PGRegion { Name = "NGC 1514 Sector", X0 = 1589848.5000f, Y0 = 1301322.0000f, Z0 = 742323.2500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 1528 Sector", X0 = 1557860.8750f, Y0 = 1308167.8750f, Z0 = 696035.3125f, SizeX = 7552, SizeY = 7552, SizeZ = 7552 },
new PGRegion { Name = "NGC 1535 Sector", X0 = 1641852.7500f, Y0 = 1220856.0000f, Z0 = 676835.5000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 1545 Sector", X0 = 1562374.6250f, Y0 = 1307875.1250f, Z0 = 701074.3750f, SizeX = 7808, SizeY = 7808, SizeZ = 7808 },
new PGRegion { Name = "NGC 1647 Sector", X0 = 1593336.3750f, Y0 = 1288681.7500f, Z0 = 710885.0625f, SizeX = 13120, SizeY = 13120, SizeZ = 13120 },
new PGRegion { Name = "NGC 1662 Sector", X0 = 1602564.1250f, Y0 = 1292448.1250f, Z0 = 726544.9375f, SizeX = 5312, SizeY = 5312, SizeZ = 5312 },
new PGRegion { Name = "NGC 1664 Sector", X0 = 1554762.2500f, Y0 = 1305174.5000f, Z0 = 647098.7500f, SizeX = 10944, SizeY = 10944, SizeZ = 10944 },
new PGRegion { Name = "NGC 1746 Sector", X0 = 1590363.0000f, Y0 = 1291308.2500f, Z0 = 698878.4375f, SizeX = 16064, SizeY = 16064, SizeZ = 16064 },
new PGRegion { Name = "NGC 1778 Sector", X0 = 1566892.2500f, Y0 = 1303034.6250f, Z0 = 617903.0625f, SizeX = 6272, SizeY = 6272, SizeZ = 6272 },
new PGRegion { Name = "NGC 1817 Sector", X0 = 1611823.8750f, Y0 = 1255892.2500f, Z0 = 563097.4375f, SizeX = 17984, SizeY = 17984, SizeZ = 17984 },
new PGRegion { Name = "NGC 1857 Sector", X0 = 1556148.3750f, Y0 = 1312533.1250f, Z0 = 573574.3125f, SizeX = 6976, SizeY = 6976, SizeZ = 6976 },
new PGRegion { Name = "NGC 188 Sector", X0 = 1422925.7500f, Y0 = 1382730.3750f, Z0 = 653786.8750f, SizeX = 21184, SizeY = 21184, SizeZ = 21184 },
new PGRegion { Name = "NGC 1893 Sector", X0 = 1550393.8750f, Y0 = 1290386.2500f, Z0 = 420267.6250f, SizeX = 21952, SizeY = 21952, SizeZ = 21952 },
new PGRegion { Name = "NGC 1931 Sector", X0 = 1572517.1250f, Y0 = 1309492.8750f, Z0 = 545431.3750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 1981 Sector", X0 = 1614654.6250f, Y0 = 1294584.3750f, Z0 = 733270.8125f, SizeX = 6784, SizeY = 6784, SizeZ = 6784 },
new PGRegion { Name = "NGC 1999 Sector", X0 = 1613899.7500f, Y0 = 1296335.6250f, Z0 = 738509.9375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 2022 Sector", X0 = 1690228.2500f, Y0 = 1245389.0000f, Z0 = 455147.5625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 2129 Sector", X0 = 1615385.2500f, Y0 = 1309491.8750f, Z0 = 612023.8750f, SizeX = 4608, SizeY = 4608, SizeZ = 4608 },
new PGRegion { Name = "NGC 2169 Sector", X0 = 1627398.8750f, Y0 = 1304366.8750f, Z0 = 664178.6875f, SizeX = 3200, SizeY = 3200, SizeZ = 3200 },
new PGRegion { Name = "NGC 2175 Sector", X0 = 1627113.5000f, Y0 = 1310210.2500f, Z0 = 601633.5625f, SizeX = 4992, SizeY = 4992, SizeZ = 4992 },
new PGRegion { Name = "NGC 2232 Sector", X0 = 1615558.5000f, Y0 = 1301640.3750f, Z0 = 735811.1250f, SizeX = 9856, SizeY = 9856, SizeZ = 9856 },
new PGRegion { Name = "NGC 2244 Sector", X0 = 1653310.6250f, Y0 = 1293076.0000f, Z0 = 623256.5625f, SizeX = 26368, SizeY = 26368, SizeZ = 26368 },
new PGRegion { Name = "NGC 225 Sector", X0 = 1538256.3750f, Y0 = 1307005.3750f, Z0 = 731877.8125f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 2251 Sector", X0 = 1650960.2500f, Y0 = 1307729.8750f, Z0 = 640357.0000f, SizeX = 8064, SizeY = 8064, SizeZ = 8064 },
new PGRegion { Name = "NGC 2264 Sector", X0 = 1610437.2500f, Y0 = 1297877.8750f, Z0 = 690872.9375f, SizeX = 32640, SizeY = 32640, SizeZ = 32640 },
new PGRegion { Name = "NGC 2281 Sector", X0 = 1590412.5000f, Y0 = 1324388.8750f, Z0 = 711650.4375f, SizeX = 8512, SizeY = 8512, SizeZ = 8512 },
new PGRegion { Name = "NGC 2286 Sector", X0 = 1761803.3750f, Y0 = 1287064.1250f, Z0 = 512438.8125f, SizeX = 24640, SizeY = 24640, SizeZ = 24640 },
new PGRegion { Name = "NGC 2301 Sector", X0 = 1644770.8750f, Y0 = 1308283.8750f, Z0 = 691087.0000f, SizeX = 7424, SizeY = 7424, SizeZ = 7424 },
new PGRegion { Name = "NGC 2324 Sector", X0 = 1663851.5000f, Y0 = 1316023.7500f, Z0 = 667514.8125f, SizeX = 4992, SizeY = 4992, SizeZ = 4992 },
new PGRegion { Name = "NGC 2335 Sector", X0 = 1697127.1250f, Y0 = 1303845.8750f, Z0 = 660006.0000f, SizeX = 8640, SizeY = 8640, SizeZ = 8640 },
new PGRegion { Name = "NGC 2343 Sector", X0 = 1674755.3750f, Y0 = 1307774.7500f, Z0 = 690959.0625f, SizeX = 3264, SizeY = 3264, SizeZ = 3264 },
new PGRegion { Name = "NGC 2345 Sector", X0 = 1761534.6250f, Y0 = 1293869.8750f, Z0 = 601585.5000f, SizeX = 16448, SizeY = 16448, SizeZ = 16448 },
new PGRegion { Name = "NGC 2353 Sector", X0 = 1675530.5000f, Y0 = 1306191.3750f, Z0 = 682196.6250f, SizeX = 12288, SizeY = 12288, SizeZ = 12288 },
new PGRegion { Name = "NGC 2354 Sector", X0 = 1943465.0000f, Y0 = 1245127.2500f, Z0 = 533920.3750f, SizeX = 32000, SizeY = 32000, SizeZ = 32000 },
new PGRegion { Name = "NGC 2360 Sector", X0 = 1742334.1250f, Y0 = 1299255.7500f, Z0 = 636915.8750f, SizeX = 14912, SizeY = 14912, SizeZ = 14912 },
new PGRegion { Name = "NGC 2362 Sector", X0 = 1719866.5000f, Y0 = 1295010.6250f, Z0 = 693024.3125f, SizeX = 4224, SizeY = 4224, SizeZ = 4224 },
new PGRegion { Name = "NGC 2367 Sector", X0 = 1769356.1250f, Y0 = 1295186.2500f, Z0 = 650919.6250f, SizeX = 4928, SizeY = 4928, SizeZ = 4928 },
new PGRegion { Name = "NGC 2371/2 Sector", X0 = 1617487.1250f, Y0 = 1356245.5000f, Z0 = 637470.5000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 2374 Sector", X0 = 1707405.0000f, Y0 = 1307475.1250f, Z0 = 662888.8750f, SizeX = 13440, SizeY = 13440, SizeZ = 13440 },
new PGRegion { Name = "NGC 2384 Sector", X0 = 1777877.1250f, Y0 = 1299041.8750f, Z0 = 642858.0625f, SizeX = 6464, SizeY = 6464, SizeZ = 6464 },
new PGRegion { Name = "NGC 2395 Sector", X0 = 1619057.2500f, Y0 = 1322400.2500f, Z0 = 722165.7500f, SizeX = 4096, SizeY = 4096, SizeZ = 4096 },
new PGRegion { Name = "NGC 2414 Sector", X0 = 1875947.8750f, Y0 = 1318858.1250f, Z0 = 541253.1250f, SizeX = 10496, SizeY = 10496, SizeZ = 10496 },
new PGRegion { Name = "NGC 2423 Sector", X0 = 1658312.1250f, Y0 = 1313727.2500f, Z0 = 717758.1250f, SizeX = 5632, SizeY = 5632, SizeZ = 5632 },
new PGRegion { Name = "NGC 2438 Sector", X0 = 1676585.7500f, Y0 = 1315641.3750f, Z0 = 704997.0625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 2439 Sector", X0 = 1956471.3750f, Y0 = 1270100.5000f, Z0 = 600238.1875f, SizeX = 21120, SizeY = 21120, SizeZ = 21120 },
new PGRegion { Name = "NGC 2440 Sector", X0 = 1745236.5000f, Y0 = 1315958.1250f, Z0 = 663111.0000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 2451A Sector", X0 = 1620395.0000f, Y0 = 1305173.2500f, Z0 = 760312.1875f, SizeX = 6720, SizeY = 6720, SizeZ = 6720 },
new PGRegion { Name = "NGC 2452 Sector", X0 = 1896710.1250f, Y0 = 1302456.0000f, Z0 = 617735.8750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 2467 Sector", X0 = 1719476.7500f, Y0 = 1306331.3750f, Z0 = 701193.1875f, SizeX = 12352, SizeY = 12352, SizeZ = 12352 },
new PGRegion { Name = "NGC 2477 Sector", X0 = 1715778.1250f, Y0 = 1293017.1250f, Z0 = 729895.1875f, SizeX = 11200, SizeY = 11200, SizeZ = 11200 },
new PGRegion { Name = "NGC 2482 Sector", X0 = 1717840.5000f, Y0 = 1311515.5000f, Z0 = 699841.1250f, SizeX = 9792, SizeY = 9792, SizeZ = 9792 },
new PGRegion { Name = "NGC 2483 Sector", X0 = 1751617.5000f, Y0 = 1307882.5000f, Z0 = 693106.1250f, SizeX = 9088, SizeY = 9088, SizeZ = 9088 },
new PGRegion { Name = "NGC 2489 Sector", X0 = 1970495.6250f, Y0 = 1297336.0000f, Z0 = 599552.1875f, SizeX = 16832, SizeY = 16832, SizeZ = 16832 },
new PGRegion { Name = "NGC 2506 Sector", X0 = 1862055.3750f, Y0 = 1361671.1250f, Z0 = 532688.3750f, SizeX = 25280, SizeY = 25280, SizeZ = 25280 },
new PGRegion { Name = "NGC 2516 Sector", X0 = 1636612.8750f, Y0 = 1296116.2500f, Z0 = 770400.0000f, SizeX = 7488, SizeY = 7488, SizeZ = 7488 },
new PGRegion { Name = "NGC 2527 Sector", X0 = 1654974.5000f, Y0 = 1311743.5000f, Z0 = 744107.5000f, SizeX = 3712, SizeY = 3712, SizeZ = 3712 },
new PGRegion { Name = "NGC 2533 Sector", X0 = 1920222.5000f, Y0 = 1314386.0000f, Z0 = 633274.2500f, SizeX = 10240, SizeY = 10240, SizeZ = 10240 },
new PGRegion { Name = "NGC 2539 Sector", X0 = 1708393.2500f, Y0 = 1335191.1250f, Z0 = 684890.3750f, SizeX = 7488, SizeY = 7488, SizeZ = 7488 },
new PGRegion { Name = "NGC 2546 Sector", X0 = 1672596.8750f, Y0 = 1288617.6250f, Z0 = 726814.8125f, SizeX = 39104, SizeY = 39104, SizeZ = 39104 },
new PGRegion { Name = "NGC 2547 Sector", X0 = 1642695.8750f, Y0 = 1301063.7500f, Z0 = 763496.0000f, SizeX = 6912, SizeY = 6912, SizeZ = 6912 },
new PGRegion { Name = "NGC 2567 Sector", X0 = 1758960.6250f, Y0 = 1316072.8750f, Z0 = 706393.8125f, SizeX = 9216, SizeY = 9216, SizeZ = 9216 },
new PGRegion { Name = "NGC 2571 Sector", X0 = 1726935.7500f, Y0 = 1299455.2500f, Z0 = 718194.2500f, SizeX = 6528, SizeY = 6528, SizeZ = 6528 },
new PGRegion { Name = "NGC 2579 Sector", X0 = 1700688.5000f, Y0 = 1309236.6250f, Z0 = 740056.3125f, SizeX = 5696, SizeY = 5696, SizeZ = 5696 },
new PGRegion { Name = "NGC 2627 Sector", X0 = 1793282.7500f, Y0 = 1330096.8750f, Z0 = 698673.2500f, SizeX = 12352, SizeY = 12352, SizeZ = 12352 },
new PGRegion { Name = "NGC 2632 Sector", X0 = 1602607.5000f, Y0 = 1318008.1250f, Z0 = 752500.7500f, SizeX = 8000, SizeY = 8000, SizeZ = 8000 },
new PGRegion { Name = "NGC 2645 Sector", X0 = 1771125.5000f, Y0 = 1301176.7500f, Z0 = 754066.8750f, SizeX = 3072, SizeY = 3072, SizeZ = 3072 },
new PGRegion { Name = "NGC 2669 Sector", X0 = 1701604.8750f, Y0 = 1293177.7500f, Z0 = 766317.0625f, SizeX = 12736, SizeY = 12736, SizeZ = 12736 },
new PGRegion { Name = "NGC 2670 Sector", X0 = 1720086.0000f, Y0 = 1300832.0000f, Z0 = 763056.8125f, SizeX = 5824, SizeY = 5824, SizeZ = 5824 },
new PGRegion { Name = "NGC 2792 Sector", X0 = 1857345.6250f, Y0 = 1327080.8750f, Z0 = 748991.5000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 281 Sector", X0 = 1383159.1250f, Y0 = 1280228.0000f, Z0 = 629202.1875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 2818 Sector", X0 = 1862644.3750f, Y0 = 1348993.6250f, Z0 = 730730.5625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 2867 Sector", X0 = 1986982.7500f, Y0 = 1267531.8750f, Z0 = 824455.3750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 2899 Sector", X0 = 1802226.1250f, Y0 = 1294535.0000f, Z0 = 794172.0000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 2910 Sector", X0 = 1867129.7500f, Y0 = 1302655.6250f, Z0 = 793311.3125f, SizeX = 6336, SizeY = 6336, SizeZ = 6336 },
new PGRegion { Name = "NGC 2925 Sector", X0 = 1677332.6250f, Y0 = 1307463.2500f, Z0 = 777419.3125f, SizeX = 4736, SizeY = 4736, SizeZ = 4736 },
new PGRegion { Name = "NGC 3114 Sector", X0 = 1681823.6250f, Y0 = 1295237.3750f, Z0 = 783191.8750f, SizeX = 19968, SizeY = 19968, SizeZ = 19968 },
new PGRegion { Name = "NGC 3195 Sector", X0 = 1745329.7500f, Y0 = 1247664.7500f, Z0 = 842778.5625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 3199 Sector", X0 = 2062790.2500f, Y0 = 1299942.8750f, Z0 = 881011.0000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 3211 Sector", X0 = 1877854.0000f, Y0 = 1283173.2500f, Z0 = 850486.3125f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 3228 Sector", X0 = 1654145.5000f, Y0 = 1315230.5000f, Z0 = 781107.0625f, SizeX = 1664, SizeY = 1664, SizeZ = 1664 },
new PGRegion { Name = "NGC 3247 Sector", X0 = 1753531.6250f, Y0 = 1308305.8750f, Z0 = 809725.8750f, SizeX = 4736, SizeY = 4736, SizeZ = 4736 },
new PGRegion { Name = "NGC 3293 Sector", X0 = 1828851.3750f, Y0 = 1307687.8750f, Z0 = 833643.1250f, SizeX = 8512, SizeY = 8512, SizeZ = 8512 },
new PGRegion { Name = "NGC 3324 Sector", X0 = 1823384.8750f, Y0 = 1302227.5000f, Z0 = 830405.1250f, SizeX = 16896, SizeY = 16896, SizeZ = 16896 },
new PGRegion { Name = "NGC 3330 Sector", X0 = 1688529.8750f, Y0 = 1316336.6250f, Z0 = 792855.1250f, SizeX = 2752, SizeY = 2752, SizeZ = 2752 },
new PGRegion { Name = "NGC 3519 Sector", X0 = 1737445.8750f, Y0 = 1306014.8750f, Z0 = 821285.4375f, SizeX = 5248, SizeY = 5248, SizeZ = 5248 },
new PGRegion { Name = "NGC 3532 Sector", X0 = 1640011.5000f, Y0 = 1305427.8750f, Z0 = 780997.9375f, SizeX = 14848, SizeY = 14848, SizeZ = 14848 },
new PGRegion { Name = "NGC 3572 Sector", X0 = 1791350.5000f, Y0 = 1309207.1250f, Z0 = 841955.4375f, SizeX = 6080, SizeY = 6080, SizeZ = 6080 },
new PGRegion { Name = "NGC 3590 Sector", X0 = 1758523.8750f, Y0 = 1309415.0000f, Z0 = 832112.8750f, SizeX = 3008, SizeY = 3008, SizeZ = 3008 },
new PGRegion { Name = "NGC 3603 Sector", X0 = 2189754.2500f, Y0 = 1301135.0000f, Z0 = 1002150.7500f, SizeX = 9600, SizeY = 9600, SizeZ = 9600 },
new PGRegion { Name = "NGC 3680 Sector", X0 = 1685788.3750f, Y0 = 1336561.5000f, Z0 = 795015.7500f, SizeX = 6848, SizeY = 6848, SizeZ = 6848 },
new PGRegion { Name = "NGC 3699 Sector", X0 = 1729131.2500f, Y0 = 1311587.0000f, Z0 = 823716.1875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 3766 Sector", X0 = 1763072.8750f, Y0 = 1308864.0000f, Z0 = 843052.8125f, SizeX = 5312, SizeY = 5312, SizeZ = 5312 },
new PGRegion { Name = "NGC 4103 Sector", X0 = 1747378.2500f, Y0 = 1312109.2500f, Z0 = 847238.1875f, SizeX = 5952, SizeY = 5952, SizeZ = 5952 },
new PGRegion { Name = "NGC 4349 Sector", X0 = 1790033.1250f, Y0 = 1308068.2500f, Z0 = 877637.5000f, SizeX = 13248, SizeY = 13248, SizeZ = 13248 },
new PGRegion { Name = "NGC 4361 Sector", X0 = 1695741.7500f, Y0 = 1412038.7500f, Z0 = 812633.5000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 4463 Sector", X0 = 1677180.8750f, Y0 = 1291316.6250f, Z0 = 810815.7500f, SizeX = 32768, SizeY = 32768, SizeZ = 32768 },
new PGRegion { Name = "NGC 457 Sector", X0 = 1381874.6250f, Y0 = 1277765.3750f, Z0 = 605926.1250f, SizeX = 29504, SizeY = 29504, SizeZ = 29504 },
new PGRegion { Name = "NGC 4609 Sector", X0 = 1691532.5000f, Y0 = 1294913.1250f, Z0 = 822446.8750f, SizeX = 32768, SizeY = 32768, SizeZ = 32768 },
new PGRegion { Name = "NGC 5138 Sector", X0 = 1759498.8750f, Y0 = 1319955.0000f, Z0 = 893133.3125f, SizeX = 8448, SizeY = 8448, SizeZ = 8448 },
new PGRegion { Name = "NGC 5281 Sector", X0 = 1672650.8750f, Y0 = 1293724.7500f, Z0 = 827982.5625f, SizeX = 32768, SizeY = 32768, SizeZ = 32768 },
new PGRegion { Name = "NGC 5307 Sector", X0 = 1784461.3750f, Y0 = 1356000.2500f, Z0 = 939956.6250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 5315 Sector", X0 = 1804306.5000f, Y0 = 1287697.8750f, Z0 = 937186.0000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 5316 Sector", X0 = 1688308.1250f, Y0 = 1303741.1250f, Z0 = 845152.2500f, SizeX = 16000, SizeY = 16000, SizeZ = 16000 },
new PGRegion { Name = "NGC 5367 Sector", X0 = 1639476.0000f, Y0 = 1332511.7500f, Z0 = 813636.9375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 5460 Sector", X0 = 1640212.1250f, Y0 = 1319523.1250f, Z0 = 813414.8750f, SizeX = 14848, SizeY = 14848, SizeZ = 14848 },
new PGRegion { Name = "NGC 5606 Sector", X0 = 1731575.5000f, Y0 = 1313145.3750f, Z0 = 902485.2500f, SizeX = 3328, SizeY = 3328, SizeZ = 3328 },
new PGRegion { Name = "NGC 5617 Sector", X0 = 1708575.7500f, Y0 = 1306568.7500f, Z0 = 879231.0000f, SizeX = 9344, SizeY = 9344, SizeZ = 9344 },
new PGRegion { Name = "NGC 5662 Sector", X0 = 1640798.0000f, Y0 = 1309679.2500f, Z0 = 815887.8750f, SizeX = 12160, SizeY = 12160, SizeZ = 12160 },
new PGRegion { Name = "NGC 5822 Sector", X0 = 1648655.5000f, Y0 = 1307479.7500f, Z0 = 836251.2500f, SizeX = 20096, SizeY = 20096, SizeZ = 20096 },
new PGRegion { Name = "NGC 5823 Sector", X0 = 1673093.3750f, Y0 = 1312597.7500f, Z0 = 863927.6250f, SizeX = 8704, SizeY = 8704, SizeZ = 8704 },
new PGRegion { Name = "NGC 5873 Sector", X0 = 2037658.2500f, Y0 = 1585790.5000f, Z0 = 1574280.7500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 5882 Sector", X0 = 1744052.5000f, Y0 = 1357703.2500f, Z0 = 1002755.3125f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 5979 Sector", X0 = 1770496.3750f, Y0 = 1281717.2500f, Z0 = 995973.2500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6025 Sector", X0 = 1641935.3750f, Y0 = 1300026.1250f, Z0 = 832123.1875f, SizeX = 6464, SizeY = 6464, SizeZ = 6464 },
new PGRegion { Name = "NGC 6058 Sector", X0 = 1421185.6250f, Y0 = 1525741.0000f, Z0 = 850945.6875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6067 Sector", X0 = 1667783.6250f, Y0 = 1299796.7500f, Z0 = 892992.1875f, SizeX = 12096, SizeY = 12096, SizeZ = 12096 },
new PGRegion { Name = "NGC 6087 Sector", X0 = 1645113.2500f, Y0 = 1298948.6250f, Z0 = 845999.8125f, SizeX = 7616, SizeY = 7616, SizeZ = 7616 },
new PGRegion { Name = "NGC 6124 Sector", X0 = 1610758.3750f, Y0 = 1310866.0000f, Z0 = 815311.0000f, SizeX = 12480, SizeY = 12480, SizeZ = 12480 },
new PGRegion { Name = "NGC 6134 Sector", X0 = 1638275.3750f, Y0 = 1309491.1250f, Z0 = 856018.5000f, SizeX = 3392, SizeY = 3392, SizeZ = 3392 },
new PGRegion { Name = "NGC 6152 Sector", X0 = 1640588.5000f, Y0 = 1297865.5000f, Z0 = 859095.6250f, SizeX = 15680, SizeY = 15680, SizeZ = 15680 },
new PGRegion { Name = "NGC 6153 Sector", X0 = 1649766.6250f, Y0 = 1324581.8750f, Z0 = 931680.1875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6167 Sector", X0 = 1645411.6250f, Y0 = 1306531.1250f, Z0 = 873915.8750f, SizeX = 4736, SizeY = 4736, SizeZ = 4736 },
new PGRegion { Name = "NGC 6169 Sector", X0 = 1636541.1250f, Y0 = 1313171.0000f, Z0 = 875432.1875f, SizeX = 6720, SizeY = 6720, SizeZ = 6720 },
new PGRegion { Name = "NGC 6178 Sector", X0 = 1636935.2500f, Y0 = 1312170.2500f, Z0 = 868252.3125f, SizeX = 3136, SizeY = 3136, SizeZ = 3136 },
new PGRegion { Name = "NGC 6188 Sector", X0 = 1650872.1250f, Y0 = 1305617.0000f, Z0 = 897934.4375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6193 Sector", X0 = 1642292.0000f, Y0 = 1303223.5000f, Z0 = 877190.1875f, SizeX = 9856, SizeY = 9856, SizeZ = 9856 },
new PGRegion { Name = "NGC 6200 Sector", X0 = 1672332.8750f, Y0 = 1299916.1250f, Z0 = 962623.5625f, SizeX = 14976, SizeY = 14976, SizeZ = 14976 },
new PGRegion { Name = "NGC 6208 Sector", X0 = 1628166.0000f, Y0 = 1296472.6250f, Z0 = 857575.9375f, SizeX = 10304, SizeY = 10304, SizeZ = 10304 },
new PGRegion { Name = "NGC 6210 Sector", X0 = 1504754.2500f, Y0 = 1412269.0000f, Z0 = 866009.2500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6231 Sector", X0 = 1631040.3750f, Y0 = 1308954.1250f, Z0 = 890315.8125f, SizeX = 10560, SizeY = 10560, SizeZ = 10560 },
new PGRegion { Name = "NGC 6242 Sector", X0 = 1625955.0000f, Y0 = 1313360.6250f, Z0 = 882474.6250f, SizeX = 6208, SizeY = 6208, SizeZ = 6208 },
new PGRegion { Name = "NGC 6250 Sector", X0 = 1626526.2500f, Y0 = 1306029.5000f, Z0 = 853882.5000f, SizeX = 5312, SizeY = 5312, SizeZ = 5312 },
new PGRegion { Name = "NGC 6259 Sector", X0 = 1628958.1250f, Y0 = 1304929.5000f, Z0 = 869806.5625f, SizeX = 7552, SizeY = 7552, SizeZ = 7552 },
new PGRegion { Name = "NGC 6281 Sector", X0 = 1608878.8750f, Y0 = 1312078.1250f, Z0 = 818938.8750f, SizeX = 2368, SizeY = 2368, SizeZ = 2368 },
new PGRegion { Name = "NGC 6322 Sector", X0 = 1624336.2500f, Y0 = 1304359.7500f, Z0 = 870272.6250f, SizeX = 3072, SizeY = 3072, SizeZ = 3072 },
new PGRegion { Name = "NGC 6326 Sector", X0 = 1725639.1250f, Y0 = 1256898.7500f, Z0 = 1091480.8750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6337 Sector", X0 = 1625158.2500f, Y0 = 1305309.8750f, Z0 = 922255.8750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6357 Sector", X0 = 1627195.0000f, Y0 = 1312871.6250f, Z0 = 1027085.9375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6383 Sector", X0 = 1601059.0000f, Y0 = 1305715.2500f, Z0 = 867820.0000f, SizeX = 11968, SizeY = 11968, SizeZ = 11968 },
new PGRegion { Name = "NGC 6416 Sector", X0 = 1600403.3750f, Y0 = 1306189.7500f, Z0 = 845495.7500f, SizeX = 6336, SizeY = 6336, SizeZ = 6336 },
new PGRegion { Name = "NGC 6425 Sector", X0 = 1600150.5000f, Y0 = 1306697.1250f, Z0 = 853286.3750f, SizeX = 4928, SizeY = 4928, SizeZ = 4928 },
new PGRegion { Name = "NGC 6445 Sector", X0 = 1576077.2500f, Y0 = 1318114.2500f, Z0 = 910393.2500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6520 Sector", X0 = 1588328.3750f, Y0 = 1300605.2500f, Z0 = 932553.2500f, SizeX = 5760, SizeY = 5760, SizeZ = 5760 },
new PGRegion { Name = "NGC 6530 Sector", X0 = 1579102.5000f, Y0 = 1302462.8750f, Z0 = 903748.4375f, SizeX = 11328, SizeY = 11328, SizeZ = 11328 },
new PGRegion { Name = "NGC 654 Sector", X0 = 1431029.0000f, Y0 = 1306928.1250f, Z0 = 633849.6250f, SizeX = 6208, SizeY = 6208, SizeZ = 6208 },
new PGRegion { Name = "NGC 6546 Sector", X0 = 1583081.5000f, Y0 = 1305127.6250f, Z0 = 864457.3125f, SizeX = 8000, SizeY = 8000, SizeZ = 8000 },
new PGRegion { Name = "NGC 6563 Sector", X0 = 1598895.7500f, Y0 = 1295715.2500f, Z0 = 866522.1875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6565 Sector", X0 = 1584831.1250f, Y0 = 1293178.5000f, Z0 = 956000.8125f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6567 Sector", X0 = 1569067.3750f, Y0 = 1306678.0000f, Z0 = 899757.7500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6572 Sector", X0 = 1457632.2500f, Y0 = 1359788.6250f, Z0 = 969199.3750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 659 Sector", X0 = 1440351.8750f, Y0 = 1303282.0000f, Z0 = 640092.0625f, SizeX = 5888, SizeY = 5888, SizeZ = 5888 },
new PGRegion { Name = "NGC 6604 Sector", X0 = 1541388.3750f, Y0 = 1314177.7500f, Z0 = 936704.3750f, SizeX = 5184, SizeY = 5184, SizeZ = 5184 },
new PGRegion { Name = "NGC 6629 Sector", X0 = 1563003.2500f, Y0 = 1290114.5000f, Z0 = 969410.0625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 663 Sector", X0 = 1433931.5000f, Y0 = 1299998.2500f, Z0 = 633397.8125f, SizeX = 16640, SizeY = 16640, SizeZ = 16640 },
new PGRegion { Name = "NGC 6633 Sector", X0 = 1574262.3750f, Y0 = 1314829.8750f, Z0 = 800533.3125f, SizeX = 4608, SizeY = 4608, SizeZ = 4608 },
new PGRegion { Name = "NGC 6644 Sector", X0 = 1550879.7500f, Y0 = 1268472.5000f, Z0 = 1075881.1250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6664 Sector", X0 = 1544750.7500f, Y0 = 1305146.8750f, Z0 = 877130.8750f, SizeX = 10624, SizeY = 10624, SizeZ = 10624 },
new PGRegion { Name = "NGC 6705 Sector", X0 = 1502381.2500f, Y0 = 1294529.2500f, Z0 = 937755.0625f, SizeX = 14848, SizeY = 14848, SizeZ = 14848 },
new PGRegion { Name = "NGC 6709 Sector", X0 = 1519750.0000f, Y0 = 1316147.3750f, Z0 = 849711.3750f, SizeX = 9152, SizeY = 9152, SizeZ = 9152 },
new PGRegion { Name = "NGC 6716 Sector", X0 = 1574786.5000f, Y0 = 1294605.0000f, Z0 = 846336.8750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6751 Sector", X0 = 1496935.6250f, Y0 = 1287268.1250f, Z0 = 945987.4375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6755 Sector", X0 = 1501078.6250f, Y0 = 1301076.6250f, Z0 = 881051.1250f, SizeX = 12096, SizeY = 12096, SizeZ = 12096 },
new PGRegion { Name = "NGC 6781 Sector", X0 = 1487691.0000f, Y0 = 1299778.7500f, Z0 = 889654.9375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6790 Sector", X0 = 1531843.2500f, Y0 = 1296732.0000f, Z0 = 850984.0625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6803 Sector", X0 = 1464569.1250f, Y0 = 1295278.8750f, Z0 = 893624.6875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6804 Sector", X0 = 1481983.7500f, Y0 = 1295488.1250f, Z0 = 879347.1250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6811 Sector", X0 = 1472415.6250f, Y0 = 1332466.2500f, Z0 = 788772.6250f, SizeX = 10368, SizeY = 10368, SizeZ = 10368 },
new PGRegion { Name = "NGC 6819 Sector", X0 = 1361682.7500f, Y0 = 1344356.2500f, Z0 = 834947.0625f, SizeX = 7168, SizeY = 7168, SizeZ = 7168 },
new PGRegion { Name = "NGC 6820 Sector", X0 = 1417842.7500f, Y0 = 1307957.0000f, Z0 = 874976.4375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6823 Sector", X0 = 1426119.3750f, Y0 = 1307719.3750f, Z0 = 868409.0000f, SizeX = 6912, SizeY = 6912, SizeZ = 6912 },
new PGRegion { Name = "NGC 6830 Sector", X0 = 1445196.5000f, Y0 = 1300158.5000f, Z0 = 850675.0000f, SizeX = 11968, SizeY = 11968, SizeZ = 11968 },
new PGRegion { Name = "NGC 6834 Sector", X0 = 1399823.6250f, Y0 = 1312868.8750f, Z0 = 856927.9375f, SizeX = 6336, SizeY = 6336, SizeZ = 6336 },
new PGRegion { Name = "NGC 6842 Sector", X0 = 1421065.5000f, Y0 = 1310330.6250f, Z0 = 846555.1250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6852 Sector", X0 = 1491469.5000f, Y0 = 1268259.2500f, Z0 = 882184.1250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6866 Sector", X0 = 1447373.5000f, Y0 = 1325025.6250f, Z0 = 794591.0000f, SizeX = 8832, SizeY = 8832, SizeZ = 8832 },
new PGRegion { Name = "NGC 6871 Sector", X0 = 1428641.1250f, Y0 = 1303199.3750f, Z0 = 806081.5625f, SizeX = 28672, SizeY = 28672, SizeZ = 28672 },
new PGRegion { Name = "NGC 6879 Sector", X0 = 1051547.3750f, Y0 = 1206830.0000f, Z0 = 1119242.0000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6884 Sector", X0 = 1517686.8750f, Y0 = 1318208.1250f, Z0 = 779071.2500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6885 Sector", X0 = 1541059.7500f, Y0 = 1305234.5000f, Z0 = 795346.6250f, SizeX = 3648, SizeY = 3648, SizeZ = 3648 },
new PGRegion { Name = "NGC 6886 Sector", X0 = 1348904.8750f, Y0 = 1269732.0000f, Z0 = 910430.0000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6891 Sector", X0 = 1380611.8750f, Y0 = 1251303.7500f, Z0 = 923733.6250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 6910 Sector", X0 = 1479716.3750f, Y0 = 1312207.2500f, Z0 = 791152.5625f, SizeX = 6912, SizeY = 6912, SizeZ = 6912 },
new PGRegion { Name = "NGC 6939 Sector", X0 = 1475858.6250f, Y0 = 1334217.5000f, Z0 = 755338.5000f, SizeX = 7232, SizeY = 7232, SizeZ = 7232 },
new PGRegion { Name = "NGC 6940 Sector", X0 = 1518830.7500f, Y0 = 1295597.2500f, Z0 = 792889.0625f, SizeX = 11712, SizeY = 11712, SizeZ = 11712 },
new PGRegion { Name = "NGC 7026 Sector", X0 = 1404353.8750f, Y0 = 1309660.3750f, Z0 = 771510.7500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 7027 Sector", X0 = 1488152.8750f, Y0 = 1301677.8750f, Z0 = 777813.6875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 7039 Sector", X0 = 1496360.1250f, Y0 = 1304513.1250f, Z0 = 770756.5000f, SizeX = 8128, SizeY = 8128, SizeZ = 8128 },
new PGRegion { Name = "NGC 7048 Sector", X0 = 1417238.1250f, Y0 = 1303003.7500f, Z0 = 771911.2500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 7063 Sector", X0 = 1527217.8750f, Y0 = 1297253.1250f, Z0 = 777993.0625f, SizeX = 3776, SizeY = 3776, SizeZ = 3776 },
new PGRegion { Name = "NGC 7082 Sector", X0 = 1438415.0000f, Y0 = 1292704.6250f, Z0 = 757270.5625f, SizeX = 21888, SizeY = 21888, SizeZ = 21888 },
new PGRegion { Name = "NGC 7160 Sector", X0 = 1519004.1250f, Y0 = 1319471.2500f, Z0 = 750372.3125f, SizeX = 2432, SizeY = 2432, SizeZ = 2432 },
new PGRegion { Name = "NGC 7209 Sector", X0 = 1472745.0000f, Y0 = 1289628.2500f, Z0 = 753369.1875f, SizeX = 12800, SizeY = 12800, SizeZ = 12800 },
new PGRegion { Name = "NGC 7235 Sector", X0 = 1307750.5000f, Y0 = 1311346.8750f, Z0 = 702285.2500f, SizeX = 8576, SizeY = 8576, SizeZ = 8576 },
new PGRegion { Name = "NGC 7243 Sector", X0 = 1509319.5000f, Y0 = 1296140.2500f, Z0 = 751216.4375f, SizeX = 14272, SizeY = 14272, SizeZ = 14272 },
new PGRegion { Name = "NGC 7354 Sector", X0 = 1468456.8750f, Y0 = 1313713.7500f, Z0 = 727107.6250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 7380 Sector", X0 = 1364299.3750f, Y0 = 1294371.8750f, Z0 = 689647.0625f, SizeX = 27008, SizeY = 27008, SizeZ = 27008 },
new PGRegion { Name = "NGC 744 Sector", X0 = 1503280.1250f, Y0 = 1294223.5000f, Z0 = 683161.1875f, SizeX = 7360, SizeY = 7360, SizeZ = 7360 },
new PGRegion { Name = "NGC 7510 Sector", X0 = 1394101.1250f, Y0 = 1308352.0000f, Z0 = 690555.1875f, SizeX = 6336, SizeY = 6336, SizeZ = 6336 },
new PGRegion { Name = "NGC 752 Sector", X0 = 1559334.2500f, Y0 = 1282228.3750f, Z0 = 728796.8750f, SizeX = 20864, SizeY = 20864, SizeZ = 20864 },
new PGRegion { Name = "NGC 7538 Sector", X0 = 1328385.8750f, Y0 = 1312341.1250f, Z0 = 662617.9375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 7686 Sector", X0 = 1498936.1250f, Y0 = 1286287.5000f, Z0 = 732992.5000f, SizeX = 8512, SizeY = 8512, SizeZ = 8512 },
new PGRegion { Name = "NGC 7789 Sector", X0 = 1362650.3750f, Y0 = 1270812.6250f, Z0 = 649090.0625f, SizeX = 35520, SizeY = 35520, SizeZ = 35520 },
new PGRegion { Name = "NGC 7790 Sector", X0 = 1314125.6250f, Y0 = 1295406.6250f, Z0 = 623077.3750f, SizeX = 21504, SizeY = 21504, SizeZ = 21504 },
new PGRegion { Name = "NGC 7822 Sector", X0 = 1518112.8750f, Y0 = 1317996.7500f, Z0 = 725520.0625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "NGC 957 Sector", X0 = 1462704.5000f, Y0 = 1296516.1250f, Z0 = 628473.1250f, SizeX = 12160, SizeY = 12160, SizeZ = 12160 },
new PGRegion { Name = "North America Sector", X0 = 1535716.6250f, Y0 = 1307258.8750f, Z0 = 772929.5625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Omega Sector", X0 = 1550475.6250f, Y0 = 1305862.6250f, Z0 = 938066.6250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Ophiuchus Dark Region", X0 = 1597706.8750f, Y0 = 1313185.1250f, Z0 = 784012.3750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Ophiuchus Dark Region B Sector", X0 = 1594948.7500f, Y0 = 1313737.5000f, Z0 = 783833.5625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Ophiuchus Dark Region C Sector", X0 = 1596031.7500f, Y0 = 1310347.8750f, Z0 = 784673.4375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Orion Dark Region", X0 = 1615416.7500f, Y0 = 1298340.2500f, Z0 = 725268.0625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Orion Sector", X0 = 1616048.7500f, Y0 = 1294034.3750f, Z0 = 732714.4375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Owl Sector", X0 = 1576339.8750f, Y0 = 1367429.2500f, Z0 = 735555.5000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Parrot's Head Sector", X0 = 1596931.7500f, Y0 = 1305419.7500f, Z0 = 800022.4375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Pegasi Sector", X0 = 1590871.3750f, Y0 = 1305274.5000f, Z0 = 767545.9375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Pelican Sector", X0 = 1535789.8750f, Y0 = 1308426.1250f, Z0 = 773881.7500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Pencil Sector", X0 = 1622361.6250f, Y0 = 1308411.0000f, Z0 = 766749.6250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Perseus Dark Region", X0 = 1584803.2500f, Y0 = 1298176.5000f, Z0 = 734712.8125f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Phantom Streak Sector", X0 = 1480739.0000f, Y0 = 1298521.8750f, Z0 = 940812.8750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Pipe (bowl) Sector", X0 = 1595958.0000f, Y0 = 1309491.7500f, Z0 = 784112.9375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Pipe (stem) Sector", X0 = 1596708.8750f, Y0 = 1309964.6250f, Z0 = 784070.5000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Piscium Sector", X0 = 1596165.1250f, Y0 = 1307848.0000f, Z0 = 768508.5000f, SizeX = 3840, SizeY = 3840, SizeZ = 3840 },
new PGRegion { Name = "Pismis 4 Sector", X0 = 1657461.6250f, Y0 = 1305669.7500f, Z0 = 760255.3750f, SizeX = 6528, SizeY = 6528, SizeZ = 6528 },
new PGRegion { Name = "Pleiades Sector", X0 = 1593703.8750f, Y0 = 1303538.7500f, Z0 = 757172.8750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Praei1", X0 = 1551136.0000f, Y0 = 1290176.0000f, Z0 = 2482976.0000f, SizeX = 32768, SizeY = 32768, SizeZ = 32768 },
new PGRegion { Name = "Praei2", X0 = 1551136.0000f, Y0 = 1290176.0000f, Z0 = 2495776.0000f, SizeX = 32768, SizeY = 32768, SizeZ = 32768 },
new PGRegion { Name = "Praei3", X0 = 1551136.0000f, Y0 = 1290176.0000f, Z0 = 2470176.0000f, SizeX = 32768, SizeY = 32768, SizeZ = 32768 },
new PGRegion { Name = "Praei4", X0 = 1551136.0000f, Y0 = 1277376.0000f, Z0 = 2482976.0000f, SizeX = 32768, SizeY = 32768, SizeZ = 32768 },
new PGRegion { Name = "Praei5", X0 = 1551136.0000f, Y0 = 1309696.0000f, Z0 = 2482976.0000f, SizeX = 32768, SizeY = 32768, SizeZ = 32768 },
new PGRegion { Name = "Praei6", X0 = 1567136.0000f, Y0 = 1291936.0000f, Z0 = 2466976.0000f, SizeX = 32768, SizeY = 32768, SizeZ = 32768 },
new PGRegion { Name = "Puppis Dark Region", X0 = 1642408.5000f, Y0 = 1299161.1250f, Z0 = 758363.6250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Puppis Dark Region B Sector", X0 = 1639593.5000f, Y0 = 1308320.0000f, Z0 = 756564.9375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Puppis Sector", X0 = 1599734.1250f, Y0 = 1310087.6250f, Z0 = 768857.2500f, SizeX = 3200, SizeY = 3200, SizeZ = 3200 },
new PGRegion { Name = "R CrA Sector", X0 = 1596320.0000f, Y0 = 1304211.5000f, Z0 = 780956.6250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Red Spider Sector", X0 = 1579486.0000f, Y0 = 1309492.8750f, Z0 = 862665.2500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Regor Sector", X0 = 1631495.6250f, Y0 = 1303626.5000f, Z0 = 763885.4375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Retina Sector", X0 = 1656095.2500f, Y0 = 1334297.6250f, Z0 = 838644.5625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Rho Ophiuchi Sector", X0 = 1597992.6250f, Y0 = 1313184.5000f, Z0 = 783310.5625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Ring Sector", X0 = 1533048.2500f, Y0 = 1325993.8750f, Z0 = 800120.8750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Rosette Sector", X0 = 1671423.5000f, Y0 = 1302696.8750f, Z0 = 616199.5000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Running Man Sector", X0 = 1615077.0000f, Y0 = 1294707.7500f, Z0 = 733613.8125f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Sadr Region Sector", X0 = 1538890.1250f, Y0 = 1310038.7500f, Z0 = 779867.1875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Saturn Sector", X0 = 1512370.1250f, Y0 = 1213830.7500f, Z0 = 876387.4375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Scorpii Sector", X0 = 1598806.1250f, Y0 = 1309616.6250f, Z0 = 773498.5625f, SizeX = 3840, SizeY = 3840, SizeZ = 3840 },
new PGRegion { Name = "Scorpius Dark Region", X0 = 1599847.2500f, Y0 = 1308320.0000f, Z0 = 783438.1250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Scutum Dark Region", X0 = 1587530.8750f, Y0 = 1308683.0000f, Z0 = 787008.3125f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Seagull Sector", X0 = 1681324.3750f, Y0 = 1303227.8750f, Z0 = 681356.3125f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Sharru Sector", X0 = 1599132.1250f, Y0 = 1311846.3750f, Z0 = 768670.6250f, SizeX = 3200, SizeY = 3200, SizeZ = 3200 },
new PGRegion { Name = "Shudun Sector", X0 = 1598447.3750f, Y0 = 1311653.1250f, Z0 = 770815.3750f, SizeX = 1920, SizeY = 1920, SizeZ = 1920 },
new PGRegion { Name = "Shui Wei Sector", X0 = 1599120.3750f, Y0 = 1305137.6250f, Z0 = 769595.5000f, SizeX = 5120, SizeY = 5120, SizeZ = 5120 },
new PGRegion { Name = "Sidgoir", X0 = 824480.0000f, Y0 = 1308640.0000f, Z0 = 729120.0000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Skull Sector", X0 = 1584492.2500f, Y0 = 1258934.6250f, Z0 = 761630.6875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Skull and Crossbones Neb. Sector", X0 = 2024750.7500f, Y0 = 1311671.0000f, Z0 = 551744.0625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Snake Sector", X0 = 1595721.3750f, Y0 = 1310659.8750f, Z0 = 787207.5000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Soul Sector", X0 = 1433274.2500f, Y0 = 1312089.7500f, Z0 = 592086.5625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Spiral Planetary Sector", X0 = 1641610.5000f, Y0 = 1304941.8750f, Z0 = 802537.3750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Spirograph Sector", X0 = 1614812.7500f, Y0 = 1293834.7500f, Z0 = 741944.8750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Statue of Liberty Sector", X0 = 1775191.3750f, Y0 = 1305974.3750f, Z0 = 837899.0000f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Steph 1 Sector", X0 = 1561130.0000f, Y0 = 1320012.6250f, Z0 = 784356.6875f, SizeX = 4736, SizeY = 4736, SizeZ = 4736 },
new PGRegion { Name = "Stock 1 Sector", X0 = 1562859.2500f, Y0 = 1305079.6250f, Z0 = 780059.5625f, SizeX = 15552, SizeY = 15552, SizeZ = 15552 },
new PGRegion { Name = "Stock 14 Sector", X0 = 1798922.1250f, Y0 = 1305519.3750f, Z0 = 863463.4375f, SizeX = 6528, SizeY = 6528, SizeZ = 6528 },
new PGRegion { Name = "Stock 2 Sector", X0 = 1572354.7500f, Y0 = 1306309.6250f, Z0 = 745445.0625f, SizeX = 8320, SizeY = 8320, SizeZ = 8320 },
new PGRegion { Name = "Struve's Lost Sector", X0 = 1595329.3750f, Y0 = 1302612.2500f, Z0 = 753245.5625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Tascheter Sector", X0 = 1597966.7500f, Y0 = 1309203.2500f, Z0 = 767752.3125f, SizeX = 3200, SizeY = 3200, SizeZ = 3200 },
new PGRegion { Name = "Taurus Dark Region", X0 = 1594323.8750f, Y0 = 1305008.7500f, Z0 = 753956.8750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Thor's Helmet Sector", X0 = 1682854.0000f, Y0 = 1307706.3750f, Z0 = 689143.6250f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Tr 10 Sector", X0 = 1641505.3750f, Y0 = 1310158.3750f, Z0 = 764001.5625f, SizeX = 3648, SizeY = 3648, SizeZ = 3648 },
new PGRegion { Name = "Tr 14 Sector", X0 = 1867418.1250f, Y0 = 1304374.2500f, Z0 = 852457.8125f, SizeX = 8320, SizeY = 8320, SizeZ = 8320 },
new PGRegion { Name = "Tr 16 Sector", X0 = 1857350.5000f, Y0 = 1299983.0000f, Z0 = 847599.0000f, SizeX = 16256, SizeY = 16256, SizeZ = 16256 },
new PGRegion { Name = "Tr 2 Sector", X0 = 1550123.1250f, Y0 = 1303321.8750f, Z0 = 717954.8125f, SizeX = 7168, SizeY = 7168, SizeZ = 7168 },
new PGRegion { Name = "Tr 24 Sector", X0 = 1614836.2500f, Y0 = 1298627.7500f, Z0 = 869833.0000f, SizeX = 32000, SizeY = 32000, SizeZ = 32000 },
new PGRegion { Name = "Trapezium Sector", X0 = 1612719.0000f, Y0 = 1291878.1250f, Z0 = 731217.6250f, SizeX = 11648, SizeY = 11648, SizeZ = 11648 },
new PGRegion { Name = "Trianguli Sector", X0 = 1599867.2500f, Y0 = 1308385.6250f, Z0 = 767157.7500f, SizeX = 3200, SizeY = 3200, SizeZ = 3200 },
new PGRegion { Name = "Trifid Sector", X0 = 1576041.2500f, Y0 = 1307448.7500f, Z0 = 933317.4375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Trifid of the North Sector", X0 = 1575739.2500f, Y0 = 1295448.1250f, Z0 = 688579.9375f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Tucanae Sector", X0 = 1599699.5000f, Y0 = 1301337.0000f, Z0 = 773263.0625f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Veil East Sector", X0 = 1535060.3750f, Y0 = 1298528.8750f, Z0 = 783888.8125f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Veil West Sector", X0 = 1551659.8750f, Y0 = 1302098.6250f, Z0 = 781558.6875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Vela Dark Region", X0 = 1628038.0000f, Y0 = 1304420.1250f, Z0 = 766497.7500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Vulpecula Dark Region", X0 = 1578918.1250f, Y0 = 1309770.8750f, Z0 = 779460.8750f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "White Eyed Pea Sector", X0 = 1472093.0000f, Y0 = 1559233.5000f, Z0 = 1030964.2500f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Witch Head Sector", X0 = 1608141.2500f, Y0 = 1295469.5000f, Z0 = 745256.6875f, SizeX = 6400, SizeY = 6400, SizeZ = 6400 },
new PGRegion { Name = "Yin Sector", X0 = 1598125.7500f, Y0 = 1310566.7500f, Z0 = 768256.6250f, SizeX = 3200, SizeY = 3200, SizeZ = 3200 },
new PGRegion { Name = "h Persei Sector", X0 = 1434000.8750f, Y0 = 1286159.1250f, Z0 = 607978.4375f, SizeX = 22720, SizeY = 22720, SizeZ = 22720 },
}.ToDictionary(r => r.Name, StringComparer.InvariantCultureIgnoreCase);
public static PGRegion GetRegion(string name)
{
if (!Regions.ContainsKey(name))
{
var regpos = PGSectors.GetSectorPos(name);
var region = new PGRegion
{
Name = name,
X0 = regpos.X * 40960,
Y0 = regpos.Y * 40960,
Z0 = regpos.Z * 40960,
SizeX = 40960,
SizeY = 40960,
SizeZ = 40960
};
Regions[name] = region;
}
return Regions[name];
}
}
using System;
using System.Collections.Generic;
using System.Linq;
public class PGSectors
{
[System.Diagnostics.DebuggerDisplay("({X},{Y},{Z})")]
public struct ByteXYZ : IComparable<ByteXYZ>
{
public sbyte X;
public sbyte Y;
public sbyte Z;
public int Ord
{
get
{
return X + (Y * 128) + (Z * 16384);
}
}
public ByteXYZ(sbyte x, sbyte y, sbyte z)
{
X = x;
Y = y;
Z = z;
}
public override string ToString()
{
return $"({X},{Y},{Z})";
}
public int CompareTo(ByteXYZ other)
{
return Ord.CompareTo(other.Ord);
}
public override bool Equals(object obj)
{
return obj != null && obj is ByteXYZ && Ord.Equals(((ByteXYZ)obj).Ord);
}
public override int GetHashCode()
{
return Ord.GetHashCode();
}
public static bool operator ==(ByteXYZ left, ByteXYZ right)
{
return left.Equals(right);
}
public static bool operator !=(ByteXYZ left, ByteXYZ right)
{
return !left.Equals(right);
}
public static readonly ByteXYZ Invalid = new ByteXYZ(-128, -128, -128);
}
private struct FragmentInfo
{
public string Value;
public bool IsPrefix;
public bool IsC1VowelPrefix;
public bool IsC2VowelPrefix;
public int PrefixIndex;
public bool IsInfix;
public bool IsVowelInfix;
public int InfixIndex;
public bool IsSuffix;
public bool IsVowelSuffix;
public int SuffixIndex;
}
// Tables of prefixes, infixes and suffixes from https://bitbucket.org/Esvandiary/edts/src/master/pgdata.py
// Prefixes
private static readonly string[] Prefixes = new string[]
{
"Th", "Eo", "Oo", "Eu", "Tr", "Sly", "Dry", "Ou",
"Tz", "Phl", "Ae", "Sch", "Hyp", "Syst", "Ai", "Kyl",
"Phr", "Eae", "Ph", "Fl", "Ao", "Scr", "Shr", "Fly",
"Pl", "Fr", "Au", "Pry", "Pr", "Hyph", "Py", "Chr",
"Phyl", "Tyr", "Bl", "Cry", "Gl", "Br", "Gr", "By",
"Aae", "Myc", "Gyr", "Ly", "Myl", "Lych", "Myn", "Ch",
"Myr", "Cl", "Rh", "Wh", "Pyr", "Cr", "Syn", "Str",
"Syr", "Cy", "Wr", "Hy", "My", "Sty", "Sc", "Sph",
"Spl", "A", "Sh", "B", "C", "D", "Sk", "Io",
"Dr", "E", "Sl", "F", "Sm", "G", "H", "I",
"Sp", "J", "Sq", "K", "L", "Pyth", "M", "St",
"N", "O", "Ny", "Lyr", "P", "Sw", "Thr", "Lys",
"Q", "R", "S", "T", "Ea", "U", "V", "W",
"Schr", "X", "Ee", "Y", "Z", "Ei", "Oe",
};
// Vowelish infixes
private static readonly string[] Infixes1 = new string[]
{
"o", "ai", "a", "oi", "ea", "ie", "u", "e",
"ee", "oo", "ue", "i", "oa", "au", "ae", "oe"
};
// Consonantish infixes
private static readonly string[] Infixes2 = new string[]
{
"ll", "ss", "b", "c", "d", "f", "dg", "g",
"ng", "h", "j", "k", "l", "m", "n", "mb",
"p", "q", "gn", "th", "r", "s", "t", "ch",
"tch", "v", "w", "wh", "ck", "x", "y", "z",
"ph", "sh", "ct", "wr"
};
// Vowelish suffixes
private static readonly string[] Suffixes1 = new string[]
{
"oe", "io", "oea", "oi", "aa", "ua", "eia", "ae",
"ooe", "oo", "a", "ue", "ai", "e", "iae", "oae",
"ou", "uae", "i", "ao", "au", "o", "eae", "u",
"aea", "ia", "ie", "eou", "aei", "ea", "uia", "oa",
"aae", "eau", "ee"
};
// Consonantish suffixes
private static readonly string[] Suffixes2 = new string[]
{
"b", "scs", "wsy", "c", "d", "vsky", "f", "sms",
"dst", "g", "rb", "h", "nts", "ch", "rd", "rld",
"k", "lls", "ck", "rgh", "l", "rg", "m", "n",
// Formerly sequence 4/5...
"hm", "p", "hn", "rk", "q", "rl", "r", "rm",
"s", "cs", "wyg", "rn", "ct", "t", "hs", "rbs",
"rp", "tts", "v", "wn", "ms", "w", "rr", "mt",
"x", "rs", "cy", "y", "rt", "z", "ws", "lch", // "y" is speculation
"my", "ry", "nks", "nd", "sc", "ng", "sh", "nk",
"sk", "nn", "ds", "sm", "sp", "ns", "nt", "dy",
"ss", "st", "rrs", "xt", "nz", "sy", "xy", "rsch",
"rphs", "sts", "sys", "sty", "th", "tl", "tls", "rds",
"nch", "rns", "ts", "wls", "rnt", "tt", "rdy", "rst",
"pps", "tz", "tch", "sks", "ppy", "ff", "sps", "kh",
"sky", "ph", "lts", "wnst", "rth", "ths", "fs", "pp",
"ft", "ks", "pr", "ps", "pt", "fy", "rts", "ky",
"rshch", "mly", "py", "bb", "nds", "wry", "zz", "nns",
"ld", "lf", "gh", "lks", "sly", "lk", "ll", "rph",
"ln", "bs", "rsts", "gs", "ls", "vvy", "lt", "rks",
"qs", "rps", "gy", "wns", "lz", "nth", "phs"
};
// Vowelish C2 prefixes
private static readonly HashSet<string> C2PrefixSuffix2 = new HashSet<string>(new string[]
{
"Eo", "Oo", "Eu", "Ou", "Ae", "Ai", "Eae", "Ao", "Au", "Aae"
}, StringComparer.InvariantCultureIgnoreCase);
// Vowelish C1 prefixes
private static readonly HashSet<string> C1PrefixInfix2 = new HashSet<string>(new string[]
{
"Eo", "Oo", "Eu", "Ou", "Ae", "Ai", "Eae", "Ao",
"Au", "Aae", "A", "Io", "E", "I", "O", "Ea",
"U", "Ee", "Ei", "Oe"
}, StringComparer.InvariantCultureIgnoreCase);
// Prefixes using short run lengths
private static readonly Dictionary<string, int> PrefixRunLengths = new Dictionary<string, int>(StringComparer.InvariantCultureIgnoreCase)
{
{ "Eu", 31 }, { "Sly", 4 }, { "Tz", 1 }, { "Phl", 13 },
{ "Ae", 12 }, { "Hyp", 25 }, { "Kyl", 30 }, { "Phr", 10 },
{ "Eae", 4 }, { "Ao", 5 }, { "Scr", 24 }, { "Shr", 11 },
{ "Fly", 20 }, { "Pry", 3 }, { "Hyph", 14 }, { "Py", 12 },
{ "Phyl", 8 }, { "Tyr", 25 }, { "Cry", 5 }, { "Aae", 5 },
{ "Myc", 2 }, { "Gyr", 10 }, { "Myl", 12 }, { "Lych", 3 },
{ "Myn", 10 }, { "Myr", 4 }, { "Rh", 15 }, { "Wr", 31 },
{ "Sty", 4 }, { "Spl", 16 }, { "Sk", 27 }, { "Sq", 7 },
{ "Pyth", 1 }, { "Lyr", 10 }, { "Sw", 24 }, { "Thr", 32 },
{ "Lys", 10 }, { "Schr", 3 }, { "Z", 34 },
};
// Infixes using short run lengths
private static readonly Dictionary<string, int> InfixRunLengths = new Dictionary<string, int>(StringComparer.InvariantCultureIgnoreCase)
{
// Sequence 1
{ "oi", 88 }, { "ue", 147 }, { "oa", 57 },
{ "au", 119 }, { "ae", 12 }, { "oe", 39 },
// Sequence 2
{ "dg", 31 }, { "tch", 20 }, { "wr", 31 },
};
private static readonly FragmentInfo[] Fragments = FillFragments(Prefixes, Infixes1, Infixes2, Suffixes1, Suffixes2);
private static readonly Dictionary<string, int> PrefixOffsets = new Dictionary<string, int>(StringComparer.InvariantCultureIgnoreCase);
private static readonly int PrefixTotalRunLength = FillOffsets(Prefixes, PrefixRunLengths, PrefixOffsets, 35);
private static readonly Dictionary<string, int> InfixOffsets = new Dictionary<string, int>(StringComparer.InvariantCultureIgnoreCase);
private static readonly int Infix1TotalRunLength = FillOffsets(Infixes1, InfixRunLengths, InfixOffsets, Suffixes2.Length);
private static readonly int Infix2TotalRunLength = FillOffsets(Infixes2, InfixRunLengths, InfixOffsets, Suffixes1.Length);
private static readonly Dictionary<ByteXYZ, string> CachedSectorsByCoords = new Dictionary<ByteXYZ, string>();
private static readonly Dictionary<string, ByteXYZ> CachedSectorsByName = new Dictionary<string, ByteXYZ>(StringComparer.InvariantCultureIgnoreCase);
private static int FillOffsets(string[] prefixes, Dictionary<string, int> runlengths, Dictionary<string, int> offsets, int defaultlen)
{
int cnt = 0;
foreach (string p in prefixes)
{
int plen;
if (runlengths.ContainsKey(p))
{
plen = runlengths[p];
}
else
{
plen = defaultlen;
runlengths[p] = plen;
}
offsets[p] = cnt;
cnt += plen;
}
return cnt;
}
private static FragmentInfo[] FillFragments(string[] prefixes, string[] infixes1, string[] infixes2, string[] suffixes1, string[] suffixes2)
{
Dictionary<string, FragmentInfo> frags = new Dictionary<string, FragmentInfo>(StringComparer.InvariantCultureIgnoreCase);
for (int i = 0; i < prefixes.Length; i++)
{
string prefix = prefixes[i];
string p = prefix.ToLowerInvariant();
FragmentInfo frag = frags.ContainsKey(p) ? frags[p] : new FragmentInfo { Value = p };
frag.IsPrefix = true;
frag.IsC1VowelPrefix = C1PrefixInfix2.Contains(prefix);
frag.IsC2VowelPrefix = C2PrefixSuffix2.Contains(prefix);
frag.PrefixIndex = i;
frags[p] = frag;
}
for (int i = 0; i < infixes1.Length; i++)
{
string p = infixes1[i].ToLowerInvariant();
FragmentInfo frag = frags.ContainsKey(p) ? frags[p] : new FragmentInfo { Value = p };
frag.IsInfix = true;
frag.IsVowelInfix = true;
frag.InfixIndex = i;
frags[p] = frag;
}
for (int i = 0; i < infixes2.Length; i++)
{
string p = infixes2[i].ToLowerInvariant();
FragmentInfo frag = frags.ContainsKey(p) ? frags[p] : new FragmentInfo { Value = p };
frag.IsInfix = true;
frag.IsVowelInfix = false;
frag.InfixIndex = i;
frags[p] = frag;
}
for (int i = 0; i < suffixes1.Length; i++)
{
string p = suffixes1[i].ToLowerInvariant();
FragmentInfo frag = frags.ContainsKey(p) ? frags[p] : new FragmentInfo { Value = p };
frag.IsSuffix = true;
frag.IsVowelSuffix = true;
frag.SuffixIndex = i;
frags[p] = frag;
}
for (int i = 0; i < suffixes2.Length; i++)
{
string p = suffixes2[i].ToLowerInvariant();
FragmentInfo frag = frags.ContainsKey(p) ? frags[p] : new FragmentInfo { Value = p };
frag.IsSuffix = true;
frag.IsVowelSuffix = false;
frag.SuffixIndex = i;
frags[p] = frag;
}
return frags.Values.OrderByDescending(f => f.Value.Length).ThenBy(f => f.Value).ToArray();
}
// Region coords to sector name - based on https://bitbucket.org/Esvandiary/edts/src/master/pgnames.py
public static string GetSectorName(ByteXYZ pos)
{
if (CachedSectorsByCoords.ContainsKey(pos))
{
return CachedSectorsByCoords[pos];
}
else
{
int offset = (pos.Z << 14) + (pos.Y << 7) + pos.X;
string sectorname;
if (IsC1Sector(offset))
{
sectorname = GetC1Name(offset);
}
else
{
sectorname = GetC2Name(offset);
}
CachedSectorsByCoords[pos] = sectorname;
return sectorname;
}
}
public static string GetC1SectorName(ByteXYZ pos)
{
return GetC1Name((pos.Z << 14) + (pos.Y << 7) + pos.X);
}
public static string GetC2SectorName(ByteXYZ pos)
{
return GetC2Name((pos.Z << 14) + (pos.Y << 7) + pos.X);
}
private static bool IsC1Sector(int offset)
{
unchecked
{
uint key = (uint)offset;
// 32-bit hashing algorithm found at http://papa.bretmulvey.com/post/124027987928/hash-functions
// Seemingly originally by Bob Jenkins <bob_jenkins-at-burtleburtle.net> in the 1990s
key += key << 12;
key ^= key >> 22;
key += key << 4;
key ^= key >> 9;
key += key << 10;
key ^= key >> 2;
key += key << 7;
key ^= key >> 12;
return (key & 1) == 0;
}
}
private static string GetC1Name(int offset)
{
List<string> frags = new List<string>();
int prefix_cnt = Math.DivRem(offset, PrefixTotalRunLength, out int cur_offset);
string prefix = Prefixes.Last(p => PrefixOffsets[p] <= cur_offset);
frags.Add(prefix);
cur_offset -= PrefixOffsets[prefix];
bool infix1s2 = C1PrefixInfix2.Contains(prefix);
int infix1_total_len = infix1s2 ? Infix2TotalRunLength : Infix1TotalRunLength;
string[] infix1s = infix1s2 ? Infixes2 : Infixes1;
int infix1_cnt = Math.DivRem(prefix_cnt * PrefixRunLengths[prefix] + cur_offset, infix1_total_len, out cur_offset);
string infix1 = infix1s.Last(p => InfixOffsets[p] <= cur_offset);
frags.Add(infix1);
cur_offset -= InfixOffsets[infix1];
int infix1_run_len = InfixRunLengths[infix1];
string[] suffixes = infix1s2 ? Suffixes1 : Suffixes2;
int next_idx = infix1_run_len * infix1_cnt + cur_offset;
if (next_idx >= suffixes.Length)
{
bool infix2s2 = !infix1s2;
int infix2_total_len = infix2s2 ? Infix2TotalRunLength : Infix1TotalRunLength;
int infix2_cnt = Math.DivRem(next_idx, infix2_total_len, out cur_offset);
string[] infix2s = infix2s2 ? Infixes2 : Infixes1;
string infix2 = infix2s.Last(p => InfixOffsets[p] <= cur_offset);
frags.Add(infix2);
cur_offset -= InfixOffsets[infix2];
int infix2_run_len = InfixRunLengths[infix2];
suffixes = infix2s2 ? Suffixes1 : Suffixes2;
next_idx = infix2_run_len * infix2_cnt + cur_offset;
}
if (next_idx >= suffixes.Length)
{
return null;
}
frags.Add(suffixes[next_idx]);
return String.Join("", frags);
}
private static string GetC2Name(int offset)
{
Tuple<ushort, ushort> cur_idx = Deinterleave2((uint)offset);
string p1 = Prefixes.Last(p => PrefixOffsets[p] <= cur_idx.Item1);
string p2 = Prefixes.Last(p => PrefixOffsets[p] <= cur_idx.Item2);
string[] s1s = C2PrefixSuffix2.Contains(p1) ? Suffixes2 : Suffixes1;
string[] s2s = C2PrefixSuffix2.Contains(p2) ? Suffixes2 : Suffixes1;
string s1 = s1s[cur_idx.Item1 - PrefixOffsets[p1]];
string s2 = s2s[cur_idx.Item2 - PrefixOffsets[p2]];
return $"{p1}{s1} {p2}{s2}";
}
private static List<FragmentInfo> GetSectorFragments(string name)
{
name = name.ToLowerInvariant();
List<FragmentInfo> fragments = new List<FragmentInfo>();
string current = name;
while (current != "")
{
bool spacestart = current.StartsWith(" ");
current = current.Trim();
FragmentInfo frag = Fragments.FirstOrDefault(f => current.StartsWith(f.Value));
if (frag.Value == null)
{
return null;
}
if (spacestart)
{
frag.IsSuffix = false;
frag.IsInfix = false;
}
else if (fragments.Count != 0 && frag.IsInfix && frag.IsVowelInfix != fragments.Last().IsVowelInfix)
{
frag.IsPrefix = false;
}
fragments.Add(frag);
current = current.Substring(frag.Value.Length);
}
return fragments;
}
public static ByteXYZ GetSectorPos(string name)
{
if (CachedSectorsByName.ContainsKey(name))
{
return CachedSectorsByName[name];
}
else
{
List<FragmentInfo> fragments = GetSectorFragments(name);
ByteXYZ coords;
if (fragments == null)
{
return ByteXYZ.Invalid;
}
else if (fragments.Count == 4 && fragments[0].IsPrefix && fragments[1].IsSuffix && fragments[2].IsPrefix && fragments[3].IsSuffix)
{
coords = GetC2SectorPos(fragments);
}
else if (fragments.Count == 3 && fragments[0].IsPrefix && fragments[1].IsInfix && fragments[2].IsSuffix)
{
coords = GetC1SectorPos3(fragments);
}
else if (fragments.Count == 4 && fragments[0].IsPrefix && fragments[1].IsInfix && fragments[2].IsInfix && fragments[3].IsSuffix)
{
coords = GetC1SectorPos4(fragments);
}
else
{
return ByteXYZ.Invalid;
}
CachedSectorsByName[name] = coords;
return coords;
}
}
private static ByteXYZ GetC2SectorPos(List<FragmentInfo> fragments)
{
if (fragments[0].IsC2VowelPrefix == fragments[1].IsVowelSuffix || fragments[2].IsC2VowelPrefix == fragments[3].IsVowelSuffix)
{
return ByteXYZ.Invalid;
}
int idx0 = PrefixOffsets[fragments[0].Value] + fragments[1].SuffixIndex;
int idx1 = PrefixOffsets[fragments[2].Value] + fragments[3].SuffixIndex;
uint offset = Interleave2((ushort)idx0, (ushort)idx1);
return new ByteXYZ { X = (sbyte)(offset & 0x7F), Y = (sbyte)((offset >> 7) & 0x7F), Z = (sbyte)((offset >> 14) & 0x7F) };
}
private static int C1ProcessInfixFragment(FragmentInfo frag, int offset)
{
offset = Math.DivRem(offset, InfixRunLengths[frag.Value], out int offset_mod);
offset *= frag.IsVowelInfix ? Infix1TotalRunLength : Infix2TotalRunLength;
offset += offset_mod;
offset += InfixOffsets[frag.Value];
return offset;
}
private static int C1ProcessPrefixFragment(FragmentInfo frag, int offset)
{
offset = Math.DivRem(offset, PrefixRunLengths[frag.Value], out int offset_mod);
offset *= PrefixTotalRunLength;
offset += offset_mod;
offset += PrefixOffsets[frag.Value];
return offset;
}
private static ByteXYZ GetC1SectorPos4(List<FragmentInfo> fragments)
{
if (fragments[0].IsC1VowelPrefix == fragments[1].IsVowelInfix || fragments[1].IsVowelInfix == fragments[2].IsVowelInfix || fragments[2].IsVowelInfix == fragments[3].IsVowelSuffix)
{
return ByteXYZ.Invalid;
}
int offset = fragments[3].SuffixIndex;
offset += (offset / InfixRunLengths[fragments[2].Value]) * (fragments[2].IsVowelInfix ? Infix1TotalRunLength : Infix2TotalRunLength);
offset = C1ProcessInfixFragment(fragments[2], offset);
offset = C1ProcessInfixFragment(fragments[1], offset);
offset = C1ProcessPrefixFragment(fragments[0], offset);
return new ByteXYZ { X = (sbyte)(offset & 0x7F), Y = (sbyte)((offset >> 7) & 0x7F), Z = (sbyte)((offset >> 14) & 0x7F) };
}
private static ByteXYZ GetC1SectorPos3(List<FragmentInfo> fragments)
{
if (fragments[0].IsC1VowelPrefix == fragments[1].IsVowelInfix || fragments[1].IsVowelInfix == fragments[2].IsVowelSuffix)
{
return ByteXYZ.Invalid;
}
int offset = fragments[2].SuffixIndex;
offset = C1ProcessInfixFragment(fragments[1], offset);
offset = C1ProcessPrefixFragment(fragments[0], offset);
return new ByteXYZ { X = (sbyte)(offset & 0x7F), Y = (sbyte)((offset >> 7) & 0x7F), Z = (sbyte)((offset >> 14) & 0x7F) };
}
private static uint Interleave2(ushort v1, ushort v2)
{
unchecked
{
ulong x = (ulong)v1 | ((ulong)v2 << 32);
x = (x | (x << 8)) & 0x00FF00FF00FF00FFUL;
x = (x | (x << 4)) & 0x0F0F0F0F0F0F0F0FUL;
x = (x | (x << 2)) & 0x3333333333333333UL;
x = (x | (x << 1)) & 0x5555555555555555UL;
return (uint)((x | (x >> 31)) & 0xFFFFFFFF);
}
}
private static Tuple<ushort, ushort> Deinterleave2(uint val)
{
unchecked
{
ulong x = ((ulong)val & 0x55555555UL) | (((ulong)val & 0xAAAAAAAAUL) << 31);
x = (x | (x >> 1)) & 0x3333333333333333UL;
x = (x | (x >> 2)) & 0x0F0F0F0F0F0F0F0FUL;
x = (x | (x >> 4)) & 0x00FF00FF00FF00FFUL;
x = (x | (x >> 8)) & 0x0000FFFF0000FFFFUL;
return new Tuple<ushort, ushort>((ushort)(x & 0xFFFF), (ushort)((x >> 32) & 0xFFFF));
}
}
private static uint Interleave3(ByteXYZ val)
{
unchecked
{
ulong x = (((ulong)val.X & 0x7F)) | (((ulong)val.Y & 0x7F) << 7) | (((ulong)val.Z & 0x7F) << 14);
x = (x | (x << 32)) & 0x001F00000000FFFFUL;
x = (x | (x << 16)) & 0x001F0000FF0000FFUL;
x = (x | (x << 8)) & 0x100F00F00F00F00FUL;
x = (x | (x << 4)) & 0x10C30C30C30C30C3UL;
x = (x | (x << 2)) & 0x1249249249249249UL;
return (uint)((x | (x >> 20) | (x >> 40)) & 0x1FFFFF);
}
}
private static ByteXYZ Deinterleave3(uint val)
{
unchecked
{
ulong x = ((ulong)val & 0x49249) | (((ulong)val & 0x92492) << 20) | (((ulong)val & 0x124924) << 40);
x = (x | (x >> 2)) & 0x10C30C30C30C30C3UL;
x = (x | (x >> 4)) & 0x100F00F00F00F00FUL;
x = (x | (x >> 8)) & 0x001F0000FF0000FFUL;
x = (x | (x >> 16)) & 0x001F00000000FFFFUL;
x = (x | (x >> 32)) & 0x00000000001FFFFFUL;
return new ByteXYZ { X = (sbyte)(x & 0x7F), Y = (sbyte)((x >> 7) & 0x7F), Z = (sbyte)((x >> 14) & 0x7F) };
}
}
}
using System;
public struct PGSystem
{
public string RegionName { get; set; }
public short Sequence { get; set; }
public byte Mid1a { get; set; }
public byte Mid1b { get; set; }
public byte Mid2 { get; set; }
public byte SizeClass { get; set; }
public byte Mid3 { get; set; }
public PGRegion Region { get { return PGRegion.GetRegion(RegionName); } }
public static bool TryParse(string s, out PGSystem sys)
{
sys = new PGSystem();
if (s == null) return false;
int i = s.Length - 1;
string _s = s.ToLowerInvariant();
if (i < 9) return false; // a bc-d e0
if (_s[i] < '0' || _s[i] > '9') return false; // cepheus dark region a sector xy-z a1-[0]
while (i > 8 && _s[i] >= '0' && _s[i] <= '9') i--;
if (!Int16.TryParse(_s.Substring(i + 1), out short seq)) return false;
sys.Sequence = seq;
if (_s[i] == '-') // cepheus dark region a sector xy-z a1[-]0
{
i--;
int vend = i;
while (i > 8 && _s[i] >= '0' && _s[i] <= '9') i--; // cepheus dark region a sector xy-z a[1]-0
if (i == vend) return false;
if (!Byte.TryParse(_s.Substring(i + 1, vend - i), out byte mid3)) return false;
sys.Mid3 = mid3;
}
if (_s[i] < 'a' || _s[i] > 'h') return false; // cepheus dark region a sector xy-z [a]1-0
sys.SizeClass = (byte)(_s[i] - 'a');
i--;
if (_s[i] != ' ') return false; // cepheus dark region a sector xy-z[ ]a1-0
i--;
if (_s[i] < 'a' || _s[i] > 'z') return false; // cepheus dark region a sector xy-[z] a1-0
sys.Mid2 = (byte)(_s[i] - 'a');
i--;
if (_s[i] != '-') return false; // cepheus dark region a sector xy[-]z a1-0
i--;
if (_s[i] < 'a' || _s[i] > 'z') return false; // cepheus dark region a sector x[y]-z a1-0
sys.Mid1b = (byte)(_s[i] - 'a');
i--;
if (_s[i] < 'a' || _s[i] > 'z') return false; // cepheus dark region a sector [x]y-z a1-0
sys.Mid1a = (byte)(_s[i] - 'a');
i--;
if (_s[i] != ' ') return false; // cepheus dark region a sector[ ]xy-z a1-0
i--;
var regname = s.Substring(0, i + 1); // [cepheus dark region a sector] xy-z a1-0
sys.RegionName = String.Intern(regname);
return true;
}
public long ToSystemAddress()
{
PGRegion reg = Region;
int mid = ((Mid3 * 26 + Mid2) * 26 + Mid1b) * 26 + Mid1a;
ulong x = (uint)(mid & 0x7F) + (uint)Math.Floor((float)reg.X0 / (320 << SizeClass));
ulong y = (uint)((mid >> 7) & 0x7F) + (uint)Math.Floor((float)reg.Y0 / (320 << SizeClass));
ulong z = (uint)((mid >> 14) & 0x7F) + (uint)Math.Floor((float)reg.Z0 / (320 << SizeClass));
ulong seq = (ulong)Sequence;
return (long)(SizeClass | (z << 3) | (y << (17 - SizeClass)) | (x << (30 - SizeClass * 2)) | (seq << (44 - SizeClass * 3)));
}
public long ToModSystemAddress()
{
PGRegion reg = Region;
int mid = ((Mid3 * 26 + Mid2) * 26 + Mid1b) * 26 + Mid1a;
ulong x = (uint)(mid & 0x7F) + (uint)Math.Floor((float)reg.X0 / (320 << SizeClass));
ulong x1 = x & 0x7F;
ulong x2 = (x >> 7) & 0x7F;
ulong y = (uint)((mid >> 7) & 0x7F) + (uint)Math.Floor((float)reg.Y0 / (320 << SizeClass));
ulong y1 = y & 0x7F;
ulong y2 = (y >> 7) & 0x3F;
ulong z = (uint)((mid >> 14) & 0x7F) + (uint)Math.Floor((float)reg.Z0 / (320 << SizeClass));
ulong z1 = z & 0x7F;
ulong z2 = (z >> 7) & 0x7F;
ulong seq = (ulong)Sequence;
ulong szclass = SizeClass;
return (long)(seq | (x1 << 16) | (y1 << 23) | (z1 << 30) | (szclass << 37) | (x2 << 40) | (y2 << 47) | (z2 << 53));
}
public static PGSystem FromSystemAddress(long systemaddress)
{
byte sizeclass = (byte)(systemaddress & 7);
short z0 = (short)((systemaddress >> 3) & (0x3FFF >> sizeclass));
byte z1 = (byte)((systemaddress >> 3) & (0x7F >> sizeclass));
sbyte z2 = (sbyte)((systemaddress >> (10 - sizeclass)) & 0x7F);
short y0 = (short)((systemaddress >> (17 - sizeclass)) & (0x1FFF >> sizeclass));
byte y1 = (byte)((systemaddress >> (17 - sizeclass)) & (0x7F >> sizeclass));
sbyte y2 = (sbyte)((systemaddress >> (24 - sizeclass * 2)) & 0x3F);
short x0 = (short)((systemaddress >> (30 - sizeclass * 2)) & (0x3FFF >> sizeclass));
byte x1 = (byte)((systemaddress >> (30 - sizeclass * 2)) & (0x7F >> sizeclass));
sbyte x2 = (sbyte)((systemaddress >> (37 - sizeclass * 3)) & 0x7F);
short seq = (short)((systemaddress >> (44 - sizeclass * 3)) & 0x7FFF);
var regionname = PGSectors.GetSectorName(new PGSectors.ByteXYZ(x2, y2, z2));
int mid = x1 | (y1 << 7) | (z1 << 14);
byte mid1a = (byte)(mid % 26);
byte mid1b = (byte)((mid / 26) % 26);
byte mid2 = (byte)((mid / (26 * 26)) % 26);
byte mid3 = (byte)((mid / (26 * 26 * 26)));
return new PGSystem
{
RegionName = regionname,
Mid1a = mid1a,
Mid1b = mid1b,
Mid2 = mid2,
Mid3 = mid3,
SizeClass = sizeclass,
Sequence = seq
};
}
public static PGSystem FromModSystemAddress(long systemaddress)
{
short seq = (short)(systemaddress & 0x7FFF);
int mid = (int)((systemaddress >> 16) & 0x1FFFFF);
byte sizeclass = (byte)((systemaddress >> 37) & 7);
sbyte x2 = (sbyte)((systemaddress >> 40) & 0x7F);
sbyte y2 = (sbyte)((systemaddress >> 47) & 0x3F);
sbyte z2 = (sbyte)((systemaddress >> 53) & 0x7F);
var regionname = PGSectors.GetSectorName(new PGSectors.ByteXYZ(x2, y2, z2));
byte mid1a = (byte)(mid % 26);
byte mid1b = (byte)((mid / 26) % 26);
byte mid2 = (byte)((mid / (26 * 26)) % 26);
byte mid3 = (byte)((mid / (26 * 26 * 26)));
return new PGSystem
{
RegionName = regionname,
Mid1a = mid1a,
Mid1b = mid1b,
Mid2 = mid2,
Mid3 = mid3,
SizeClass = sizeclass,
Sequence = seq
};
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment